EBC Exercise 25 Configuring U-boot

From eLinux.org
Revision as of 09:12, 8 November 2012 by Richarsm (talk | contribs) (Assignment: spelling)
Jump to: navigation, search

thumb‎ Embedded Linux Class by Mark A. Yoder

This follows the approach taken in EBC Exercise 13 Configuring the Kernel. We'll use bitbake to get the source files for U-boot and then we'll edit them.


When you did EBC Exercise 22 Cross-Compiling and Finding the Right Kernel u-boot was downloaded and compiled. If you used the default configure, the source code was removed once it was done. Check and see:

host$ cd ~/BeagleBoard/oe/build/tmp-angstrom_v2012_05-eglibc/work/beagleboard-angstrom-linux-gnueabi/
host$ ls

You should see a directory starting with u-boot-. The rest of the name tells what version you have. Change to that directory and see what's there:

host$ cd u-boot-*
host$ ls

If you see a git directory, you are in luck. If you see just a temp directory you need to go back to EBC Exercise 22 Cross-Compiling and Finding the Right Kernel and get it installed.

Once you have the git directory, cd to it and look around.

Compiling U-boot

You can now compile U-boot.

host$ source ~/.oe/crossCompileEnv.sh
host$ make
host$ scp u-boot.bin root@beagle:.

On the beagle, first be sure the FAT partition is mounted

beagle$ cd /media/
beagle$ mkdir mmcblk0p1
beagle$ mount /dev/mmcblk0p1 mmcblk0p1/
beagle$ cd mmcblk0p1/
beagle$ ls -ls
total 354
  2 drwxr-xr-x 4 root root   2048 May 16 15:29 Docs
  2 drwxr-xr-x 5 root root   2048 May 16 15:29 Drivers
  6 -rwxr-xr-x 1 root root   5829 Aug 14 10:10 LICENSE.txt
 84 -rwxr-xr-x 1 root root  85058 Aug 14 08:19 MLO
 14 -rwxr-xr-x 1 root root  13976 Aug 14 10:10 README.htm
  2 -rwxr-xr-x 1 root root     27 Aug 14 10:23 Uenv.txt
  2 -rwxr-xr-x 1 root root    178 Aug 14 10:10 autorun.inf
  2 -rwxr-xr-x 1 root root    171 Aug 14 10:10 info.txt
238 -rwxr-xr-x 1 root root 241948 Aug 14 08:19 u-boot.img
  2 -rwxr-xr-x 1 root root     33 Aug 14 10:23 uEnv.txt.orig

Make a backup of the original u-boot.

beagle$ cp u-boot.bin u-boot.bin.orig
beagle$ cp ~/u-boot.bin .
beagle$ shutdown -r now

You should now be running the new u-boot.


  1. Modify u-boot to include your initials in the prompt. (Hint: Look for the omap3_beagle.h file for the xM or am335x_evm.h for the bone.)
  2. Learn what is done when the boot command is entered in u-boot.
  3. Find where the code for boot is defined in the u-boot source.


u-boot# help boot
boot - boot default, i.e., run 'bootcmd'

u-boot# print bootcmd
bootcmd=if mmc rescan ${mmcdev}; then if userbutton; then setenv bootenv user.txt;fi;echo SD/MMC found on device ${mmcdev};if run loadbootenv; then echo Loaded environment from ${bootenv};run importbootenv;fi;if test -n $uenvcmd; then echo Running uenvcmd ...;run uenvcmd;fi;if run loaduimage; then run mmcboot;fi;fi;run nandboot;

thumb‎ Embedded Linux Class by Mark A. Yoder