(BeagleBoneBlack Boot Process) |
|||
(9 intermediate revisions by one user not shown) | |||
Line 1: | Line 1: | ||
− | By default, the ROM in the Sitara AM3359 will boot from MMC1 first (the onboard eMMC), followed by | + | By default, the ROM in the Sitara AM3359 will boot from the MMC1 interface first (the onboard eMMC), followed by MMC0 (MicroSD), UART0 and USB0. |
− | If the boot switch (S2) is held down, the ROM will boot from SPI0 first, followed by MMC0, USB0 and UART0. This allows the BeagleBone Black to bypass the onboard eMMC and boot from the removable uSD (provided no valid boot device is found on SPI0.) | + | If the boot switch (S2) is held down during power-up, the ROM will boot from the SPI0 Interface first, followed by MMC0, USB0 and UART0. This allows the BeagleBone Black to bypass the onboard eMMC and boot from the removable uSD (provided no valid boot device is found on SPI0.) This can be used to recover from a corrupted onboard eMMC. |
− | The Sitara AM3359 will try to load and execute the first stage bootloader called "MLO" from a Fat 12/16 or 32 bit MBR based filesystem. | + | The Sitara AM3359 will try to load and execute the first stage bootloader called "MLO" from a Fat 12/16 or 32 bit MBR based filesystem. If using eMMC, this file is loaded using RAW mode. This means the ROM looks for a TOC at four specific offsets. |
− | MLO Booting: | + | MLO Booting (uBoot SPL Second Program Loader): |
<PRE> | <PRE> | ||
U-Boot SPL 2013.04-dirty (Jun 19 2013 - 09:57:14) | U-Boot SPL 2013.04-dirty (Jun 19 2013 - 09:57:14) | ||
Line 60: | Line 60: | ||
gpio: pin 54 (gpio 54) value is 1 | gpio: pin 54 (gpio 54) value is 1 | ||
SD/MMC found on device 1 | SD/MMC found on device 1 | ||
+ | </PRE> | ||
+ | |||
+ | uBoot will load using a [[BeagleBoneBlack_Default_uBoot_Environment_Variables|default environment space]]. This default space includes a variable bootenv=uEnv.txt and associated script that allows additional variables to be added or overwritten by adding them to an uEnv.txt file placed on the FAT partition. uBoot will attempt to load this file and append the extra variables: | ||
+ | |||
+ | <PRE> | ||
reading uEnv.txt | reading uEnv.txt | ||
26 bytes read in 2 ms (12.7 KiB/s) | 26 bytes read in 2 ms (12.7 KiB/s) | ||
Loaded environment from uEnv.txt | Loaded environment from uEnv.txt | ||
Importing environment from mmc ... | Importing environment from mmc ... | ||
+ | </PRE> | ||
+ | |||
+ | uBoot will then load the Linux Kernel and compiled Device Tree Binary blob from eMMC: | ||
+ | |||
+ | <PRE> | ||
+ | load mmc 1:2 0x80F80000 /boot/am335x-boneblack.dtb | ||
+ | load mmc 1:2 0x80007fc0 /boot/uImage | ||
+ | </PRE> | ||
+ | |||
+ | <PRE> | ||
gpio: pin 55 (gpio 55) value is 1 | gpio: pin 55 (gpio 55) value is 1 | ||
4270840 bytes read in 747 ms (5.5 MiB/s) | 4270840 bytes read in 747 ms (5.5 MiB/s) | ||
Line 69: | Line 84: | ||
24129 bytes read in 53 ms (444.3 KiB/s) | 24129 bytes read in 53 ms (444.3 KiB/s) | ||
Booting from mmc ... | Booting from mmc ... | ||
+ | </PRE> | ||
+ | |||
+ | And boot with the ext4 root filesystem being loaded from /dev/mmcblk0p2 | ||
+ | |||
+ | <PRE> | ||
+ | setenv bootargs console=ttyO0,115200n8 ${optargs} root=/dev/mmcblk0p2 ro rootfstype=ext4 rootwait | ||
+ | bootm 0x80007fc0 - 0x80F80000 | ||
+ | </PRE> | ||
+ | |||
+ | <PRE> | ||
+ | Booting from mmc ... | ||
+ | ## Booting kernel from Legacy Image at 80007fc0 ... | ||
+ | Image Name: Angstrom/3.8.13/beaglebone | ||
+ | Image Type: ARM Linux Kernel Image (uncompressed) | ||
+ | Data Size: 4270776 Bytes = 4.1 MiB | ||
+ | Load Address: 80008000 | ||
+ | Entry Point: 80008000 | ||
+ | Verifying Checksum ... OK | ||
+ | ## Flattened Device Tree blob at 80f80000 | ||
+ | Booting using the fdt blob at 0x80f80000 | ||
+ | XIP Kernel Image ... OK | ||
+ | OK | ||
+ | Using Device Tree in place at 80f80000, end 80f88e40 | ||
+ | |||
+ | Starting kernel ... | ||
+ | |||
+ | Uncompressing Linux... done, booting the kernel. | ||
</PRE> | </PRE> |
By default, the ROM in the Sitara AM3359 will boot from the MMC1 interface first (the onboard eMMC), followed by MMC0 (MicroSD), UART0 and USB0.
If the boot switch (S2) is held down during power-up, the ROM will boot from the SPI0 Interface first, followed by MMC0, USB0 and UART0. This allows the BeagleBone Black to bypass the onboard eMMC and boot from the removable uSD (provided no valid boot device is found on SPI0.) This can be used to recover from a corrupted onboard eMMC.
The Sitara AM3359 will try to load and execute the first stage bootloader called "MLO" from a Fat 12/16 or 32 bit MBR based filesystem. If using eMMC, this file is loaded using RAW mode. This means the ROM looks for a TOC at four specific offsets.
MLO Booting (uBoot SPL Second Program Loader):
U-Boot SPL 2013.04-dirty (Jun 19 2013 - 09:57:14) musb-hdrc: ConfigData=0xde (UTMI-8, dyn FIFOs, HB-ISO Rx, HB-ISO Tx, SoftConn) musb-hdrc: MHDRC RTL version 2.0 musb-hdrc: setup fifo_mode 4 musb-hdrc: 28/31 max ep, 16384/16384 memory USB Peripheral mode controller at 47401000 using PIO, IRQ 0 musb-hdrc: ConfigData=0xde (UTMI-8, dyn FIFOs, HB-ISO Rx, HB-ISO Tx, SoftConn) musb-hdrc: MHDRC RTL version 2.0 musb-hdrc: setup fifo_mode 4 musb-hdrc: 28/31 max ep, 16384/16384 memory USB Host mode controller at 47401800 using PIO, IRQ 0 OMAP SD/MMC: 0 mmc_send_cmd : timeout: No status update reading u-boot.img reading u-boot.img
MLO is a first stage uBoot Bootloader designed to load a second stage uBoot bootloader with enhanced features. This second stage bootloader is also found on the FAT partition with the filename of "u-boot.img"
U-Boot 2013.04-dirty (Jun 19 2013 - 09:57:14) I2C: ready DRAM: 512 MiB WARNING: Caches not enabled NAND: No NAND device found!!! 0 MiB MMC: OMAP SD/MMC: 0, OMAP SD/MMC: 1 *** Warning - readenv() failed, using default environment musb-hdrc: ConfigData=0xde (UTMI-8, dyn FIFOs, HB-ISO Rx, HB-ISO Tx, SoftConn) musb-hdrc: MHDRC RTL version 2.0 musb-hdrc: setup fifo_mode 4 musb-hdrc: 28/31 max ep, 16384/16384 memory USB Peripheral mode controller at 47401000 using PIO, IRQ 0 musb-hdrc: ConfigData=0xde (UTMI-8, dyn FIFOs, HB-ISO Rx, HB-ISO Tx, SoftConn) musb-hdrc: MHDRC RTL version 2.0 musb-hdrc: setup fifo_mode 4 musb-hdrc: 28/31 max ep, 16384/16384 memory USB Host mode controller at 47401800 using PIO, IRQ 0 Net: <ethaddr> not set. Validating first E-fuse MAC cpsw, usb_ether Hit any key to stop autoboot: 1 0 gpio: pin 53 (gpio 53) value is 1 Card did not respond to voltage select! mmc0(part 0) is current device mmc_send_cmd : timeout: No status update Card did not respond to voltage select! No micro SD card found, setting mmcdev to 1 mmc1(part 0) is current device gpio: pin 54 (gpio 54) value is 1 SD/MMC found on device 1
uBoot will load using a default environment space. This default space includes a variable bootenv=uEnv.txt and associated script that allows additional variables to be added or overwritten by adding them to an uEnv.txt file placed on the FAT partition. uBoot will attempt to load this file and append the extra variables:
reading uEnv.txt 26 bytes read in 2 ms (12.7 KiB/s) Loaded environment from uEnv.txt Importing environment from mmc ...
uBoot will then load the Linux Kernel and compiled Device Tree Binary blob from eMMC:
load mmc 1:2 0x80F80000 /boot/am335x-boneblack.dtb load mmc 1:2 0x80007fc0 /boot/uImage
gpio: pin 55 (gpio 55) value is 1 4270840 bytes read in 747 ms (5.5 MiB/s) gpio: pin 56 (gpio 56) value is 1 24129 bytes read in 53 ms (444.3 KiB/s) Booting from mmc ...
And boot with the ext4 root filesystem being loaded from /dev/mmcblk0p2
setenv bootargs console=ttyO0,115200n8 ${optargs} root=/dev/mmcblk0p2 ro rootfstype=ext4 rootwait bootm 0x80007fc0 - 0x80F80000
Booting from mmc ... ## Booting kernel from Legacy Image at 80007fc0 ... Image Name: Angstrom/3.8.13/beaglebone Image Type: ARM Linux Kernel Image (uncompressed) Data Size: 4270776 Bytes = 4.1 MiB Load Address: 80008000 Entry Point: 80008000 Verifying Checksum ... OK ## Flattened Device Tree blob at 80f80000 Booting using the fdt blob at 0x80f80000 XIP Kernel Image ... OK OK Using Device Tree in place at 80f80000, end 80f88e40 Starting kernel ... Uncompressing Linux... done, booting the kernel.