Xilinx has a technology called SystemAce that allows you to boot Linux directly from a Compact Flash device. People see this and ask us: “why use a bootloader in my project?” The short answer is that, while it’s quick and easy to boot directly from CF for development and demo purposes, for production there are other things you should consider.
Key issues for production hardware include:
- How will you set permanent information such as per board Ethernet MAC addresses and serial numbers? This needs to be quick and simple for a manufacturing environment. Clumsy scripts and hokey workarounds bring no end of headaches here.
- How will you store persistent information, such as static IP addresses, that may change occasionally but must be recalled after a power cycle or reset?
- How will you upgrade your operating system? Do you need to do this in the field?
- Do you need diagnostics? How will whoever manufactures your device test it? Typically, manufacturing diagnostics are required to support debug of faulty units for any processor based system. Also, some devices need to run a power-on-self-test (POST) before becoming operational for safety or other reasons.
- Will you ever need to change system behavior at boot time? For example, would it be handy to easily switch between an NFS mounted and a RAM based root file system to debug certain problems?
A well developed, flexible bootloader, such as U-boot, provides ways to bring these important features to a product.