1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- ------------------------------------------------------------------------
- A3M071 board support
- ------------------------------------------------------------------------
- SPL NOR flash support:
- ----------------------
- To boot fast into the OS (Linux), this board port integrates the SPL
- framework. This means, that a special, stripped-down version of
- U-Boot runs in the beginning. In the case of the A3M071 board, this
- SPL U-Boot version is less than 16 KiB big. This SPL U-Boot can either
- boot the OS (Linux) or a "real", full-blown U-Boot. This detection
- on whether to boot Linux or U-Boot is done by using the "boot_os"
- environment variable. If "boot_os" is set to "yes", Linux will be
- loaded and booted from the SPL U-Boot version. Otherwise, the
- full-blown U-Boot version will be loaded and run.
- Enabling Linux booting:
- -----------------------
- From U-Boot:
- => setenv boot_os yes
- => saveenv
- From Linux:
- $ fw_setenv boot_os yes
- Enabling U-Boot booting:
- ------------------------
- From U-Boot:
- => setenv boot_os no
- => saveenv
- From Linux:
- $ fw_setenv boot_os no
- Preparing Linux image(s) for booting from SPL U-Boot:
- -----------------------------------------------------
- To boot the Linux kernel from the SPL, the DT blob (fdt) needs to get
- prepard/patched first. U-Boot usually inserts some dynamic values into
- the DT binary (blob), e.g. autodetected memory size, MAC addresses,
- clocks speeds etc. To generate this patched DT blob, you can use
- the following command:
- 1. Load fdt blob to SDRAM:
- => tftp 1800000 a3m071/a3m071.dtb
- 2. Set bootargs as desired for Linux booting (e.g. flash_mtd):
- => run mtdargs addip2 addtty
- 3. Use "fdt" commands to patch the DT blob:
- => fdt addr 1800000
- => fdt boardsetup
- => fdt chosen
- 4. Display patched DT blob (optional):
- => fdt print
- 5. Save fdt to NOR flash:
- => erase fc180000 fc07ffff
- => cp.b 1800000 fc180000 10000
- All this can be integrated into an environment command:
- => setenv upd_fdt 'tftp 1800000 a3m071/a3m071.dtb;run mtdargs addip addtty; \
- fdt addr 1800000;fdt boardsetup;fdt chosen;erase fc180000 fc07ffff; \
- cp.b 1800000 fc180000 10000'
- => saveenv
- After this, only "run upd_fdt" needs to get called to load, patch
- and save the DT blob into NOR flash.
- Additionally, the Linux kernel image has to be saved uncompressed in
- its uImage file (and not gzip compressed). This can be done with this
- command:
- $ mkimage -A ppc -O linux -T kernel -C none -a 0 -e 0 \
- -n "Linux Kernel Image" -d vmlinux.bin uImage.uncompressed
- ------------------------------------------------------------------------
- Stefan Roese, 2012-08-23
|