SD Card Programming Tool
Modern embedded processors allow you to boot an operating system from an SD card. We are offering tools to write OS images to SD cards under Windows XP and Windows 7.
In the past, all CPU boards were equipped with a NOR flash that contained at least a boot loader or even a BIOS on x86-systems. A boot loader had to initialize the DRAM and some storage devices and had to load and start the operating system. The flash ROM was typically programmed via JTAG or they were already programmed before they were assembled.
Today’s modern embedded processors do no longer need to have a NOR flash. They contain an internal ROM and SRAM that allows to boot from several devices such as NAND flash, SD card or serial USB. After a reset, the CPU-internal boot loader (BL0) reads some blocks of data from a boot device into the internal SRAM and executes this code. This OEM-specific boot loader (BL1) then initializes the DRAM and loads further code from the devices into the DRAM. The boot device can typically be chosen by jumper settings. Some solutions may try to boot from several devices with a specific boot order.
By removing the need for a NOR flash, boards can be designed more compact and the programming of the OS gets much more comfortable. The real problem here is how you get the boot loader onto the boot medium. The boot loader has to be on contiguous blocks on the card. The CPU-internal ROM does not know about file systems, so you can’t simply copy some image files to the card. Instead you have to partition the disk in a different way so that the boot loader and the OS reside in a reserved area.
A possible solution is to boot your embedded CPU from a serial USB connection and to program the SD card or NAND flash within the OEM-specific boot loader BL1. After doing so, you can then boot from SD card or NAND flash the next time. This solution is working but is complicated to implement and far from being handy.
With our SD card programming tool, you can easily program images to SD cards under Windows XP or Windows 7. The tool partitions the card accordingly and formats it automatically. Boot loader and OS image will then be programmed to the card. The configuration of the boot loader may change whenever the image is replaced and so the configuration will be updated automatically. After the update of the OS and boot loader is complete, you may wish to copy some of your application data onto the formatted partition of the SD card. This would allow you to update both the OS and the application at the same time.
If this solution sounds interesting for you, please contact us for further discussions.
Questions and Answers
Can I use this tool only for Windows CE devices?
No, you might program other operating systems to the disk as well. This tool allows you to program SD cards on a standard PC in a standard Windows environment.
Can I use this tool without modifications on different CPUs and for different operating systems?
No. The boot code of different CPUs is almost never the same. You have to consider different card layouts. Furthermore Windows CE boot loaders are saving their configuration to disk and they are different depending on the BSP. So typically you will always have to make some adaptations. But our current solution provides a good basis for different designs.
Our system will boot from NAND flash chips. Is your SD card tool still useful for us?
For first-time installations, it may be of great help to boot from an SD card. After booting an OS from SD card, you can program the NAND flash chips with the intended OS. So an SD card solution may be interesting for production and maintenance reasons.
Am I restricted to SD cards only or can I use the tool to program and format
other devices as well?
In principle, you can use this tool on any mass storage device such as an USB stick. Maybe this tool provides a good basis for other kind of applications.

