Running U-Boot |
U-Boot is probably the most popular firmware monitor for Linux. It is developed and maintained by DENX Software Engineering (www.denx.de). If you need detailed information on any aspects of U-Boot operation, DENX publishes extensive U-Boot user documentation at their web site. On the VF6 SOM, U-Boot image is stored in the NAND Flash device. On a power-on / reset, U-Boot is reloaded to the SDRAM and runs from there. As soon as the module is powered on or reset, the VF6 proceeds to boot the U-Boot firmware printing the following output to the serial console: U-Boot 2011.12-vf6-2.2.1 (Dec 27 2016 - 19:12:29) Note: Bad blocks are a normal thing for NAND Flash. The messages regarding bad blocks in the output above are a benign indication that U-Boot has correctly handled bad blocks found in the NAND Flash. If you hit any key on the serial console before the number of seconds defined by the U-Boot bootdelay variable has elapsed, you will enter the U-Boot interactive command monitor. From the command monitor you can run U-Boot commands to examine memory, load an image from Ethernet, boot Linux from a loaded image or perform any other action supported by U-Boot. U-Boot makes use of the so-called environment variables to define various aspects of the target functionality. On the VF6 SOM, the U-Boot environment is stored in the on-module NAND Flash and is persistent across power or reset cycles. Parameters defined by the U-boot environment variables include: target IP address, target MAC address, location in RAM where a Linux bootable image will be loaded, and many others. To manipulate the U-Boot environment the following commands are used:
Vybrid U-Boot > printenv Vybrid U-Boot > setenv image vlad/networking.uImage Running setenv <var> will unset (undefine) a specified U-Boot variable. Vybrid U-Boot > saveenv The autoboot sequence in U-Boot is controlled by the two environment variables called bootdelay and bootcmd. The bootdelay variable defines a delay, in seconds, before running the autoboot command defined by bootcmd. During the bootdelay countdown, you can interrupt the autobooting by pressing any key. This will let you enter the U-Boot command line interface. The bootcmd variable defines a command executed by U-Boot automatically after the bootdelay countdown is over. Typically, this would be run netboot to boot Linux from TFTP during development or run flashboot to boot Linux from the on-module Flash on deployed units. In deployed configurations, where boot time to the service provided by your embedded device is critical, you will probably want to set bootdelay to 0: Vybrid U-Boot > set bootdelay 0 This will make sure that on each power on / reset U-Boot immediately executes the command defined by bootcmd, typically booting Linux from the on-module Flash. With bootdelay set to 0 the U-Boot countdown is disabled, so there is a question how you enter the U-Boot command monitor, should you need to enter it for some reason. To do so, push the Ctrl-C keys down and don't release them until you have hit the reset button on the baseboard. This will interrupt the U-Boot bootcmd sequence and let you enter the U-Boot command monitor: U-Boot 2011.12-vf6-2.2.1 (Dec 27 2016 - 19:12:29)
|