[U-Boot] OMAP3630 Falcon Mode Questions

I am trying to utilize Falcon mode on an OMAP3630 (DM3730), but it just hangs, and I was hoping someone might find something obvious that I missed. I am able to boot from NAND through U-boot, so I know my kernel and device tree are OK as are the boot parameters, MLO and U-boot.
I have read through the ./doc/README.falcon, and I read through some of the am33 docs regarding this, and I think I'm doing it right, but I'm obviously missing something.
I have reset my partition structure to: device nand0 <omap2-nand.0>, # parts = 6 #: name size offset mask_flags 0: MLO 0x00080000 0x00000000 0 1: u-boot 0x001c0000 0x00080000 0 2: spl-os 0x00020000 0x00240000 0 3: u-boot-env 0x00020000 0x00260000 0 4: kernel 0x00800000 0x00280000 0 5: fs 0x1f580000 0x00a80000 0
My defines in the header file are set as follows:
#define CONFIG_CMD_SPL_NAND_OFS 0x240000 (matches spl-os offset)
#define CONFIG_SYS_NAND_SPL_KERNEL_OFFS 0x280000 (matches kernel offset)
#define CONFIG_CMD_SPL_WRITE_SIZE 0x2000
#define CONFIG_SYS_TEXT_BASE 0x80100000 #define CONFIG_SPL_BSS_START_ADDR 0x80000000 #define CONFIG_SPL_BSS_MAX_SIZE (512 << 10) /* 512 KB */ #define CONFIG_SYS_SPL_MALLOC_START 0x80208000 #define CONFIG_SYS_SPL_MALLOC_SIZE 0x100000
I build my uImage with LOADADDR=0x80008000
My bootargs are as follows: console=ttyO0,115200n8 ignore_loglevel early_printk no_console_suspend root=ubi0:rootfs rw ubi.mtd=fs noinitrd rootfstype=ubifs rootwait display=15 ignore_loglevel early_printk no_console_suspend mtdparts=omap2-nand.0:512k(MLO),1792k(u-boot),128k(spl-os),128k(u-boot-env),8m(kernel),-(fs)
I can load uImage and fdtimage, then with the bootargs set, I run
spl export fdt $loadaddr - $fdtaddr
## Booting kernel from Legacy Image at 81000000 ... Image Name: Linux-4.9.0-rc2-00040-g9fe68ca-d Image Type: ARM Linux Kernel Image (uncompressed) Data Size: 3869952 Bytes = 3.7 MiB Load Address: 80008000 Entry Point: 80008000 Verifying Checksum ... OK ## Flattened Device Tree blob at 86000000 Booting using the fdt blob at 0x86000000 Loading Kernel Image ... OK Loading Device Tree to 8df1f000, end 8df33114 ... OK subcommand not supported subcommand not supported Loading Device Tree to 8df07000, end 8df1e114 ... OK Argument image is now in RAM: 0x8df07000
I then write this blob to my spl-os partition with the following:
nand write 0x8df07000 spl-os 0x20000
When I eject the SD card and I boot from NAND (attempting) with Falcon it just hangs:
U-Boot SPL 2016.11-rc2-00164-g7904673-dirty (Oct 29 2016 - 10:28:32) Trying to boot from NAND
Does anyone know if I missed a step somewhere, or do I have something configured incorrectly?
I don't think it's an ECC issue, because I can boot to and read/write from the UBI partition from Linux going through U-boot.
adam

On Sat, Oct 29, 2016 at 12:53:27PM -0500, Adam Ford wrote:
I am trying to utilize Falcon mode on an OMAP3630 (DM3730), but it just hangs, and I was hoping someone might find something obvious that I missed. I am able to boot from NAND through U-boot, so I know my kernel and device tree are OK as are the boot parameters, MLO and U-boot.
I have read through the ./doc/README.falcon, and I read through some of the am33 docs regarding this, and I think I'm doing it right, but I'm obviously missing something.
I have reset my partition structure to: device nand0 <omap2-nand.0>, # parts = 6 #: name size offset mask_flags 0: MLO 0x00080000 0x00000000 0 1: u-boot 0x001c0000 0x00080000 0 2: spl-os 0x00020000 0x00240000 0 3: u-boot-env 0x00020000 0x00260000 0 4: kernel 0x00800000 0x00280000 0 5: fs 0x1f580000 0x00a80000 0
My defines in the header file are set as follows:
#define CONFIG_CMD_SPL_NAND_OFS 0x240000 (matches spl-os offset)
#define CONFIG_SYS_NAND_SPL_KERNEL_OFFS 0x280000 (matches kernel offset)
#define CONFIG_CMD_SPL_WRITE_SIZE 0x2000
#define CONFIG_SYS_TEXT_BASE 0x80100000 #define CONFIG_SPL_BSS_START_ADDR 0x80000000 #define CONFIG_SPL_BSS_MAX_SIZE (512 << 10) /* 512 KB */ #define CONFIG_SYS_SPL_MALLOC_START 0x80208000 #define CONFIG_SYS_SPL_MALLOC_SIZE 0x100000
I build my uImage with LOADADDR=0x80008000
My bootargs are as follows: console=ttyO0,115200n8 ignore_loglevel early_printk no_console_suspend root=ubi0:rootfs rw ubi.mtd=fs noinitrd rootfstype=ubifs rootwait display=15 ignore_loglevel early_printk no_console_suspend mtdparts=omap2-nand.0:512k(MLO),1792k(u-boot),128k(spl-os),128k(u-boot-env),8m(kernel),-(fs)
I can load uImage and fdtimage, then with the bootargs set, I run
spl export fdt $loadaddr - $fdtaddr
## Booting kernel from Legacy Image at 81000000 ... Image Name: Linux-4.9.0-rc2-00040-g9fe68ca-d Image Type: ARM Linux Kernel Image (uncompressed) Data Size: 3869952 Bytes = 3.7 MiB Load Address: 80008000 Entry Point: 80008000 Verifying Checksum ... OK ## Flattened Device Tree blob at 86000000 Booting using the fdt blob at 0x86000000 Loading Kernel Image ... OK Loading Device Tree to 8df1f000, end 8df33114 ... OK subcommand not supported subcommand not supported Loading Device Tree to 8df07000, end 8df1e114 ... OK Argument image is now in RAM: 0x8df07000
I then write this blob to my spl-os partition with the following:
nand write 0x8df07000 spl-os 0x20000
When I eject the SD card and I boot from NAND (attempting) with Falcon it just hangs:
U-Boot SPL 2016.11-rc2-00164-g7904673-dirty (Oct 29 2016 - 10:28:32) Trying to boot from NAND
Does anyone know if I missed a step somewhere, or do I have something configured incorrectly?
OK, just to be clear, did you test reading the uImage and spl-os back in U-Boot and booting those? If so and it works, try enabling DEBUG for SPL and seeing if you get more output.

On Mon, Oct 31, 2016 at 6:57 AM, Tom Rini trini@konsulko.com wrote:
On Sat, Oct 29, 2016 at 12:53:27PM -0500, Adam Ford wrote:
I am trying to utilize Falcon mode on an OMAP3630 (DM3730), but it just hangs, and I was hoping someone might find something obvious that I missed. I am able to boot from NAND through U-boot, so I know my kernel and device tree are OK as are the boot parameters, MLO and U-boot.
I have read through the ./doc/README.falcon, and I read through some of the am33 docs regarding this, and I think I'm doing it right, but I'm obviously missing something.
I have reset my partition structure to: device nand0 <omap2-nand.0>, # parts = 6 #: name size offset mask_flags 0: MLO 0x00080000 0x00000000 0 1: u-boot 0x001c0000 0x00080000 0 2: spl-os 0x00020000 0x00240000 0 3: u-boot-env 0x00020000 0x00260000 0 4: kernel 0x00800000 0x00280000 0 5: fs 0x1f580000 0x00a80000 0
My defines in the header file are set as follows:
#define CONFIG_CMD_SPL_NAND_OFS 0x240000 (matches spl-os offset)
#define CONFIG_SYS_NAND_SPL_KERNEL_OFFS 0x280000 (matches kernel offset)
#define CONFIG_CMD_SPL_WRITE_SIZE 0x2000
#define CONFIG_SYS_TEXT_BASE 0x80100000 #define CONFIG_SPL_BSS_START_ADDR 0x80000000 #define CONFIG_SPL_BSS_MAX_SIZE (512 << 10) /* 512 KB */ #define CONFIG_SYS_SPL_MALLOC_START 0x80208000 #define CONFIG_SYS_SPL_MALLOC_SIZE 0x100000
I build my uImage with LOADADDR=0x80008000
My bootargs are as follows: console=ttyO0,115200n8 ignore_loglevel early_printk no_console_suspend root=ubi0:rootfs rw ubi.mtd=fs noinitrd rootfstype=ubifs rootwait display=15 ignore_loglevel early_printk no_console_suspend mtdparts=omap2-nand.0:512k(MLO),1792k(u-boot),128k(spl-os),128k(u-boot-env),8m(kernel),-(fs)
I can load uImage and fdtimage, then with the bootargs set, I run
spl export fdt $loadaddr - $fdtaddr
## Booting kernel from Legacy Image at 81000000 ... Image Name: Linux-4.9.0-rc2-00040-g9fe68ca-d Image Type: ARM Linux Kernel Image (uncompressed) Data Size: 3869952 Bytes = 3.7 MiB Load Address: 80008000 Entry Point: 80008000 Verifying Checksum ... OK ## Flattened Device Tree blob at 86000000 Booting using the fdt blob at 0x86000000 Loading Kernel Image ... OK Loading Device Tree to 8df1f000, end 8df33114 ... OK subcommand not supported subcommand not supported Loading Device Tree to 8df07000, end 8df1e114 ... OK Argument image is now in RAM: 0x8df07000
I then write this blob to my spl-os partition with the following:
nand write 0x8df07000 spl-os 0x20000
When I eject the SD card and I boot from NAND (attempting) with Falcon it just hangs:
U-Boot SPL 2016.11-rc2-00164-g7904673-dirty (Oct 29 2016 - 10:28:32) Trying to boot from NAND
Does anyone know if I missed a step somewhere, or do I have something configured incorrectly?
OK, just to be clear, did you test reading the uImage and spl-os back in U-Boot and booting those? If so and it works, try enabling DEBUG for SPL and seeing if you get more output.
I can load the uImage and the created spl-os back and it boots fine. I enabled DEBUG, but I had to make a tweak to the printf statement to get the name of Linux to display correctly.
Here is my dump:
U-Boot SPL 2016.11-rc3-00009-g050adda-dirty (Oct 31 2016 - 18:29:40) Trying to boot from NAND spl: nand - using hw ecc spl: payload image: Linux-4.9.0-rc2-00040-g9fe68ca-d load addr: 0x80007fc0 si ze: 3869936 Jumping to Linux
In order to get to "Jumping to Linux" I removed some of the default memory overrides:
From 050addab9986c35822bbe8f677fb8e7b2c4cb2f6 Mon Sep 17 00:00:00 2001
From: Adam Ford aford173@gmail.com Date: Mon, 31 Oct 2016 18:19:39 -0500 Subject: [PATCH] OMAP3: omap3_logic_defconfig
Use the SPL info inherited from the common TI files.
diff --git a/include/configs/omap3_logic.h b/include/configs/omap3_logic.h index 2dcc729..0bff817 100644 --- a/include/configs/omap3_logic.h +++ b/include/configs/omap3_logic.h @@ -19,14 +19,10 @@ * 1MB into the SDRAM to allow for SPL's bss at the beginning of SDRAM * 64 bytes before this address should be set aside for u-boot.img's * header. That is 0x800FFFC0--0x80100000 should not be used for any - * other needs. We use this rather than the inherited defines from - * ti_armv7_common.h for backwards compatibility. + * other needs. */ -#define CONFIG_SYS_TEXT_BASE 0x80100000 -#define CONFIG_SPL_BSS_START_ADDR 0x80000000 -#define CONFIG_SPL_BSS_MAX_SIZE (512 << 10) /* 512 KB */ -#define CONFIG_SYS_SPL_MALLOC_START 0x80208000 -#define CONFIG_SYS_SPL_MALLOC_SIZE 0x100000 +/* #define CONFIG_SYS_TEXT_BASE 0x80100000 */ +
#include <configs/ti_omap3_common.h>
participants (2)
-
Adam Ford
-
Tom Rini