Improve falcon mode and am335x_evm docs
v2 cover Improve falcon mode and am335x_evm docs
Hey all,
The following 5 patches update docs for falcon mode, and am335x_evm. The first adds a quick general note about how failure is decided in falcon mode and we drop back to U-Boot. The rest update slightly, and then document, falcon mode for am335x_evm by providing examples for eMMC or raw SD cards, FAT SD cards and NAND and provide some general information setting up falcon mode. In the updates side, the DFU info to be able to write the falcon mode areas is added and corrects a small bug in the NAND configuration for falcon mode. I did this in part because while I found doc/README.falcon helpful we still want to provide board-specific examples when possible I believe.
And, as has been pointed out to me on IRC, this isn't a huge boot time win (and may be a loss) until we have dcache configured correctly. This is on my TODO list, but a separate patch.
Changes in v2:
- Add Peter's Reviewed-by to #1
- Split the previous #2 into 4 patches
Signature · 1 line
Tom
PATCH v2 1/5 README.falcon: Note how we determine if we can boot the OS or not
--- doc/README.falcon | 2 ++ 1 file changed, 2 insertions(+)
doc/README.falcon +2 -0
@@ -41,6 +41,8 @@ file (CONFIG_CMD_SPL_NAND_OFS for NAND). 3. Boot the board into Falcon Mode. SPL will load the kernel and copy the parameters which are saved in the persistent area to the required address. +If a valid uImage is not found at the defined location, U-Boot will be +booted instead. It is required to implement a custom mechanism to select if SPL loads U-Boot or another image.
Signature · 1 line
1.7.9.5
PATCH v2 2/5 am335x_evm: Correct DFU ALT settings for falcon mode
In reply to Tom RiniNow that we have falcon mode enabled, the partiton numbers for NAND have changed, and we need to list entries for updating these parts of the system. While adding falcon mode entires for eMMC (raw), we round up the limit on U-Boot for ease of math later.
--- include/configs/am335x_evm.h | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-)
include/configs/am335x_evm.h +8 -3
@@ -238,7 +238,11 @@"rootfs part 0 2;" \"MLO fat 0 1;" \"MLO.raw mmc 100 100;" \ -"u-boot.img.raw mmc 300 3C0;" \ +"u-boot.img.raw mmc 300 400;" \ +"spl-os-args.raw mmc 80 80;" \ +"spl-os-image.raw mmc 900 2000;" \ +"spl-os-args fat 0 1;" \ +"spl-os-image fat 0 1;" \"u-boot.img fat 0 1;" \"uEnv.txt fat 0 1" #define DFU_ALT_INFO_NAND \
@@ -247,8 +251,9 @@"SPL.backup2 part 0 3;" \"SPL.backup3 part 0 4;" \"u-boot part 0 5;" \ -"kernel part 0 7;" \ -"rootfs part 0 8" +"u-boot-spl-os part 0 6;" \ +"kernel part 0 8;" \ +"rootfs part 0 9" /* Physical Memory Map */#define CONFIG_NR_DRAM_BANKS 1/* 1 bank of DRAM */
Signature · 1 line
1.7.9.5
PATCH v2 2/5 am335x_evm: Correct DFU ALT settings for falcon mode
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line
"Tom" == Tom Rini <[email protected]> writes:
Tom> Now that we have falcon mode enabled, the partiton numbers for NAND have Tom> changed, and we need to list entries for updating these parts of the Tom> system. While adding falcon mode entires for eMMC (raw), we round up Tom> the limit on U-Boot for ease of math later.
Tom> Signed-off-by: Tom Rini <[email protected]>
Signature · 1 line
Bye, Peter Korsgaard
PATCH v2 3/5 am335x_evm: Update eMMC falcon mode locations
In reply to Tom RiniThe previous location used for the "args" portion of falcon mode was too small to allow for a device tree to be saved there, so move the location slightly and increase the size. In addition, our previous kernel location was part of the area we set aside for U-Boot itself, so move it up a bit higher.
--- include/configs/am335x_evm.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-)
include/configs/am335x_evm.h +3 -3
@@ -337,9 +337,9 @@#define CONFIG_SYS_SPL_ARGS_ADDR (PHYS_DRAM_1 + 0x100)/* raw mmc */ -#define CONFIG_SYS_MMCSD_RAW_MODE_KERNEL_SECTOR 0x500/* address 0xa0000 */ -#define CONFIG_SYS_MMCSD_RAW_MODE_ARGS_SECTOR 0x8/* address 0x1000 */ -#define CONFIG_SYS_MMCSD_RAW_MODE_ARGS_SECTORS 8/* 4KB */ +#define CONFIG_SYS_MMCSD_RAW_MODE_KERNEL_SECTOR 0x900/* address 0x120000 */ +#define CONFIG_SYS_MMCSD_RAW_MODE_ARGS_SECTOR 0x80/* address 0x10000 */ +#define CONFIG_SYS_MMCSD_RAW_MODE_ARGS_SECTORS 0x80/* 64KiB */ /* nand */ #define CONFIG_CMD_SPL_NAND_OFS 0x240000/* end of u-boot */
Signature · 1 line
1.7.9.5
PATCH v2 3/5 am335x_evm: Update eMMC falcon mode locations
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line
"Tom" == Tom Rini <[email protected]> writes:
Tom> The previous location used for the "args" portion of falcon mode was too Tom> small to allow for a device tree to be saved there, so move the location Tom> slightly and increase the size. In addition, our previous kernel Tom> location was part of the area we set aside for U-Boot itself, so move it Tom> up a bit higher.
Tom> Signed-off-by: Tom Rini <[email protected]>
Signature · 1 line
Bye, Peter Korsgaard
PATCH v2 4/5 am335x_evm: Correct CONFIG_CMD_SPL_WRITE_SIZE
In reply to Tom RiniWe use CONFIG_CMD_SPL_WRITE_SIZE when reading/writing the args portion of falcon mode to NAND. Previously it was half the size of the eraseblock which is too small, increase to eraseblock size.
--- include/configs/am335x_evm.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
include/configs/am335x_evm.h +1 -1
@@ -344,7 +344,7 @@/* nand */ #define CONFIG_CMD_SPL_NAND_OFS 0x240000/* end of u-boot */ #define CONFIG_SYS_NAND_SPL_KERNEL_OFFS 0x280000 -#define CONFIG_CMD_SPL_WRITE_SIZE 0x1000 +#define CONFIG_CMD_SPL_WRITE_SIZE 0x2000/* spl export command */ #define CONFIG_CMD_SPL
Signature · 1 line
1.7.9.5
PATCH v2 5/5 am335x_evm: Add basic README
In reply to Tom RiniAdd a README for the family of boards the am335x_evm covers, and include instructions on preparing and using falcon mode, for various media.
--- board/ti/am335x/README | 113 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 113 insertions(+) create mode 100644 board/ti/am335x/README
board/ti/am335x/README new file +113 -0
@@ -0,0 +1,113 @@ +Summary +======= + +This document covers various features of the 'am335x_evm' build, and some of +the related build targets (am335x_evm_uartN, etc). + +Hardware +======== + +The binary produced by this board supports, based on parsing of the EEPROM +documented in TI's reference designs: +- AM335x GP EVM +- AM335x EVM SK +- Beaglebone White +- Beaglebone Black + +Falcon Mode +=========== + +The default build includes "Falcon Mode" (see doc/README.falcon) via NAND, +eMMC (or raw SD cards) and FAT SD cards. Our default behavior currently is +to read a 'c' on the console while in SPL at any point prior to loading the +OS payload (so as soon as possible) to opt to booting full U-Boot. Also +note that while one can program Falcon Mode "in place" great care needs to +be taken by the user to not 'brick' their setup. As these are all eval +boards with multiple boot methods, recovery should not be an issue in this +worst-case however. + +Falcon Mode: eMMC +================= + +The recommended layout in this case is: + +MMC BLOCKS |--------------------------------| LOCATION IN BYTES +0x0000 - 0x007F : MBR or GPT table : 0x000000 - 0x020000 +0x0080 - 0x00FF : ARGS or FDT file : 0x010000 - 0x020000 +0x0100 - 0x01FF : SPL.backup1 (first copy used) : 0x020000 - 0x040000 +0x0200 - 0x02FF : SPL.backup2 (second copy used) : 0x040000 - 0x060000 +0x0300 - 0x06FF : U-Boot : 0x060000 - 0x0e0000 +0x0700 - 0x08FF : U-Boot Env + Redundant : 0x0e0000 - 0x120000 +0x0900 - 0x28FF : Kernel : 0x120000 - 0x520000 + +Note that when we run 'spl export' it will prepare to boot the kernel. +This includes relocation of the uImage from where we loaded it to the entry +point defined in the header. As these locations overlap by default, it +would leave us with an image that if written to MMC will not boot, so +instead of using the loadaddr variable we use 0x81000000 in the following +example. In this example we are loading from the network, for simplicity, +and assume a valid partition table already exists and 'mmc dev' has already +been run to select the correct device. Also note that if you previously +had a FAT partition (such as on a Beaglebone Black) it is not enough to +write garbage into the area, you must delete it from the partition table +first. + +# Ensure we are able to talk with this mmc device +U-Boot # mmc rescan +U-Boot # tftp 81000000 am335x/MLO +# Write to two of the backup locations ROM uses +U-Boot # mmc write 81000000 100 100 +U-Boot # mmc write 81000000 200 100 +# Write U-Boot to the location set in the config +U-Boot # tftp 81000000 am335x/u-boot.img +U-Boot # mmc write 81000000 300 400 +# Load kernel and device tree into memory, perform export +U-Boot # tftp 81000000 am335x/uImage +U-Boot # run findfdt +U-Boot # tftp ${fdtaddr} am335x/${fdtfile} +U-Boot # run mmcargs +U-Boot # spl export fdt 81000000 - ${fdtaddr} +# Write the updated device tree to MMC +U-Boot # mmc write ${fdtaddr} 80 80 +# Write the uImage to MMC +U-Boot # mmc write 81000000 900 2000 + +Falcon Mode: FAT SD cards +========================= + +In this case the additional file is written to the filesystem. In this +example we assume that the uImage and device tree to be used are already on +the FAT filesystem (only the uImage MUST be for this to function +afterwards) along with a Falcon Mode aware MLO and the FAT partition has +already been created and marked bootable: + +U-Boot # mmc rescan +# Load kernel and device tree into memory, perform export +U-Boot # load mmc 0:1 ${loadaddr} uImage +U-Boot # run findfdt +U-Boot # load mmc 0:1 ${fdtaddr} ${fdtfile} +U-Boot # run mmcargs +U-Boot # spl export fdt ${loadaddr} - ${fdtaddr} + +This will print a number of lines and then end with something like: + Using Device Tree in place at 80f80000, end 80f85928 + Using Device Tree in place at 80f80000, end 80f88928 +So then you: + +U-Boot # fatwrite mmc 0:1 0x80f80000 args 8928 + +Falcon Mode: NAND +================= + +In this case the additional data is written to another partition of the +NAND. In this example we assume that the uImage and device tree to be are +already located on the NAND somewhere (such as fileystem or mtd partition) +along with a Falcon Mode aware MLO written to the correct locations for +booting and mtdparts have been configured correctly for the board: + +U-Boot # nand read ${loadaddr} kernel +U-Boot # load nand rootfs ${fdtaddr} /boot/am335x-evm.dtb +U-Boot # run nandargs +U-Boot # spl export fdt ${loadaddr} - ${fdtaddr} +U-Boot # nand erase.part u-boot-spl-os +U-Boot # nand write ${fdtaddr} u-boot-spl-os
Signature · 1 line
1.7.9.5
PATCH v2 5/5 am335x_evm: Add basic README
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line
"Tom" == Tom Rini <[email protected]> writes:
Tom> Add a README for the family of boards the am335x_evm covers, and include Tom> instructions on preparing and using falcon mode, for various media.
Tom> Signed-off-by: Tom Rini <[email protected]>
Signature · 1 line
Bye, Peter Korsgaard
PATCH v2 5/5 am335x_evm: Add basic README
In reply to Tom RiniQuoted 123 lines · Tom Rini
Add a README for the family of boards the
am335x_evmcovers, and include instructions on preparing and using falcon mode, for various media.Signed-off-by Tom Rini <[email protected]>--- board/ti/am335x/README | 113++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 113 insertions(+) create mode 100644 board/ti/am335x/README
board/ti/am335x/README new file +4
-0@@ -0,0 +1,113 @@ +Summary +======= + +This document covers various features of the 'am335x_evm' build, andsome of +the related build targets (
am335x_evm_uartN, etc).board/ti/am335x/README new file +5
-0+ +Hardware +======== + +The binary produced by this board supports, based on parsing of theEEPROM +documented in TI's reference designs:
+- AM335x GP EVM +- AM335x EVM SK +- Beaglebone White +- Beaglebone Blackboard/ti/am335x/README new file +5
-0+ +Falcon Mode +=========== + +The default build includes "Falcon Mode" (see doc/README.falcon) viaNAND, +eMMC (or raw SD cards) and FAT SD cards. Our default behavior currently is +to read a 'c' on the console while in SPL at any point prior to loading the +OS payload (so as soon as possible) to opt to booting full U-Boot. Also +note that while one can program Falcon Mode "in place" great care needs to +be taken by the user to not 'brick' their setup. As these are all eval +boards with multiple boot methods, recovery should not be an issue in this +worst-case however. +
board/ti/am335x/README new file +7
-0+Falcon Mode: eMMC +================= + +The recommended layout in this case is: + +MMC BLOCKS |--------------------------------| LOCATION IN BYTES +0x0000 - 0x007F : MBR or GPT table : 0x000000 -
0x020000+0x0080 -0x00FF: ARGS or FDT file :0x010000
-0x020000+0x0100 -0x01FF: SPL.backup1 (first copy used) :0x020000-0x040000+0x0200 -0x02FF: SPL.backup2 (second copy used) :0x040000-0x060000+0x0300 -0x06FF:
U-Boot :0x060000-0x0e0000+0x0700 -0x08FF: U-Boot Env + Redundant :0x0e0000-0x120000+0x0900
-0x28FF: Kernel :0x120000-0x520000+
+Note that when we run 'spl export' it will prepare to boot the kernel. +This includes relocation of the uImage from where we loaded it to the entry +point defined in the header. As these locations overlap by default, it +would leave us with an image that if written to MMC will not boot, so +instead of using the loadaddr variable we use0x81000000in the following +example. In this example we are loading from the network, for simplicity, +and assume a valid partition table already exists and 'mmc dev' has already +been run to select the correct device. Also note that if you previously +had a FAT partition (such as on a Beaglebone Black) it is not enough to +write garbage into the area, you must delete it from the partition table +first. +board/ti/am335x/README new file +24
-0+# Ensure we are able to talk with this mmc device +U-Boot # mmc rescan +U-Boot # tftp 81000000 am335x/MLO +# Write to two of the backup locations ROM uses +U-Boot # mmc write 81000000 100 100 +U-Boot # mmc write 81000000 200 100 +# Write U-Boot to the location set in the config +U-Boot # tftp 81000000 am335x/u-boot.img +U-Boot # mmc write 81000000 300 400 +# Load kernel and device tree into memory, perform export +U-Boot # tftp 81000000 am335x/uImage +U-Boot # run findfdt +U-Boot # tftp ${fdtaddr} am335x/${fdtfile} +U-Boot # run mmcargs +U-Boot # spl export fdt 81000000 - ${fdtaddr} +# Write the updated device tree to MMC +U-Boot # mmc write ${fdtaddr} 80 80 +# Write the uImage to MMC +U-Boot # mmc write 81000000 900 2000 + +Falcon Mode: FAT SD cards +========================= + +In this case the additional file is written to the filesystem. Inthis +example we assume that the uImage and device tree to be used are already on +the FAT filesystem (only the uImage MUST be for this to function +afterwards) along with a Falcon Mode aware MLO and the FAT partition has +already been created and marked bootable:
board/ti/am335x/README new file +20
-0+ +U-Boot # mmc rescan +# Load kernel and device tree into memory, perform export +U-Boot # load mmc 0:1 ${loadaddr} uImage +U-Boot # run findfdt +U-Boot # load mmc 0:1 ${fdtaddr} ${fdtfile} +U-Boot # run mmcargs +U-Boot # spl export fdt ${loadaddr} - ${fdtaddr} + +This will print a number of lines and then end with something like: + Using Device Tree in place at 80f80000, end 80f85928 + Using Device Tree in place at 80f80000, end 80f88928 +So then you: + +U-Boot # fatwrite mmc 0:1 0x80f80000 args 8928 + +Falcon Mode: NAND +================= + +In this case the additional data is written to another partition ofthe +NAND. In this example we assume that the uImage and device tree to be are +already located on the NAND somewhere (such as fileystem or mtd partition) +along with a Falcon Mode aware MLO written to the correct locations for +booting and mtdparts have been configured correctly for the board: +
board/ti/am335x/README line 113
Quoted 6 lines
board/ti/am335x/README new file +6
-0+U-Boot # nand read ${loadaddr} kernel +U-Boot # load nand rootfs ${fdtaddr} /boot/am335x-evm.dtb +U-Boot # run nandargs +U-Boot # spl export fdt ${loadaddr} - ${fdtaddr} +U-Boot # nand erase.part u-boot-spl-os +U-Boot # nand write ${fdtaddr} u-boot-spl-os
Signature · 5 lines
Best regards, Lukasz Majewski Samsung R&D Institute Poland (SRPOL) | Linux Platform Group
v2 cover Improve falcon mode and am335x_evm docs
In reply to Tom RiniQuoted 13 lines · Tom Rini
Hey all,
The following 5 patches update docs for falcon mode, and
am335x_evm. The first adds a quick general note about how failure is decided in falcon mode and we drop back to U-Boot. The rest update slightly, and then document, falcon mode foram335x_evmby providing examples for eMMC or raw SD cards, FAT SD cards and NAND and provide some general information setting up falcon mode. In the updates side, the DFU info to be able to write the falcon mode areas is added and corrects a small bug in the NAND configuration for falcon mode. I did this in part because while I found doc/README.falcon helpful we still want to provide board-specific examples when possible I believe.
Quoted 7 lines
And, as has been pointed out to me on IRC, this isn't a huge boot time win (and may be a loss) until we have dcache configured correctly. This is on my TODO list, but a separate patch.
Changes in v2:
- Add Peter's Reviewed-by to #1
- Split the previous #2 into 4 patches
Applied to u-boot-ti/master, thanks!
Signature · 8 lines
Tom -------------- next part -------------- A non-text attachment was scrubbed... Name: not available Type: application/pgp-signature Size: 836 bytes Desc: Digital signature URL: <http://lists.denx.de/pipermail/u-boot/attachments/20130730/4f82ea66/attachment.pgp>