I have been looking to design an open source Linux design that could be built at home. The problem so far has been that the processors supporting Linux tend to be manufactured in BGA packages which makes them difficult to build. The iMX23 solves this by offering an ARM9 core in a 128 pin LQFP package so it is actually possible to assemble the boards at home. Several off the shelf boards are available from Busware, Olimex and Chumby however as an embedded developer I want to be able to design the Linux capability into my own projects rather than end up with an ugly lash up of loose wire.
The first step in this project was to build a tool chain and start building my own Linux kernel. Dirk Tostman at Busware generously provided me with a few PCB blanks that allowed me to get started. In parallel I also started designing a simple board of my own to test whether a two layer design would work with the 133MHz DDR DRAM bus. The boards have arrived from Seeedstudio and the initial tests shows the processor will run and passes my memory test. My initial Linux test failed after uncompressing the image which suggests there may still be a memory problem. In response to this initial result I built a number of memory tests which all passed so I may have just screwed up building the kernel and applied the wrong CRC. Hence I have gone back to a U-boot test which is considerably smaller and easier to debug. I am now in the process of porting U-boot to the board.
I am new to embedded Linux development so I have been struggling a bit with the build environment. While there are many pre-build environments my requirements are different because I am trying to bootstrap the processor design on top of my custom hardware. When things don’t work I need to debug the power prep and memory prep initialization code; a procedure that isn’t well documented. Hopefully some of my design notes will help others who want to build their own Linux computer form scratch.
My native computer environment is Windows 7 based so for development I run Ubuntu 11 on a VMWare machine. The nice thing about this environment is that I should be able to create complete snapshots of the project complete with the iMX23 tool chain and all of the Linux source code. These snapshots can then be opened on a different computer running VMWare. Considering it took me two weeks to solve all of the build dependencies I think this will be useful to others.