You could probably do this easily with a Follow Curve constraint on a bunch of plane objects.
Create a simple square mesh with desired dimensions (example $2$ x $2$)
Create a rectangular Bezier Curve object that has an exact $5$ x $4$ squares in dimensions (for squares of $2$ units you get $10$ x $8$), minus one square length in each direction than your 6 x 5 grid so itthe line axis fits the squaresquares exactly by their center points.
Under Object Data properties Activate Path Animation and set it for $18$ frames (its length in number of squares).
Now add a Follow Curve constraint to you plane, an pick the previously created curve.
Duplicate the plane without moving it, then under Follow Curve increase the Offset value to $1$$-1$. Keep making copies of it until you fill the whole curve, progressively increasing the offset value by one unit.
Repeat the same process for a smaller curve inside the outer one, adjusting frame count for its length (in this case $10$).
You can then use your planes directly with whatever visuals you like, use dupligroups on said planes, or just model the shape after what you desire for each square directly in the plane mesh.
If you have precision troubles at the corners, increase curve resolution to improve accuracy.