Embedded Systems @ De Nayer Instituut

Embedded System Design Methodology
News

U-boot bootloader on Xsilo

During the past weeks, we have been busy porting the U-boot bootloader to the Xsilo.

Started from the sources of U-boot and the schematics of the Xsilo, we started getting U-boot running from RAM, so the critical code (initialization of the registers) was not executed. The only problem we encountered was the network (which also does not work with the default bootloader of the Xsilo). This problem was caused because the network chip is wired to the PXA in such a way that you can not perform 2 byte writes to addresses which are not 4 byte aligned. The workaround for this problem was replacing the 16 bit write function to a 32-bit read-modify-write cycle.

After this workaround the network started working. An easy ping command worked, but loading a kernel image failed. After some debugging of the network driver we found some byte writes hidden inside the code which also failed. In the network driver these byte accesses were surrounded with defines with comments about the same problem. So adding a Xsilo specific define solved the problem and the network works.

The next step was starting U-boot from flash, in this case the critical code has to be executed. So we had to be sure that the memory configuration and GPIO registers from the PXA were setup correctly. The right configuration value for the GPIO registers could be derived from the schematics, the timings for the connected chips (RAM, flash, network chip) could be found in their datasheets.
We modified the critical code to match these values. But through some wrong use of a debug routine (blinking of a led) the device did not boot. After this issue was solved, the device booted properly, but we get no output on the serial port. After a long search, we found that we commented out some important code in our try to solve the previous problem. After correcting this, U-boot booted fine on the Xsilo.

Now we have a bootloader for the Xsilo with network support.

Posted by: Bart Jonkers - 06 Dec 2005, 15u12