This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

AM4378: u-boot is taking around 4 seconds while jumping from uboot (Starting kernel ...) to kernel ([ 0.000000] Booting Linux on physical CPU 0x0) on AM4378-starter kit

Part Number: AM4378

Hi there, 

I am trying to optimize to boot time of the linux image. I observe that while jumping from u-boot to kernel it is taking 4 to 5 seconds.

My desired  target is to reach the boot up (SPL / u-boot / kernel / user-space  under 10 seconds, but the  u-boot it self is taking around 6 to 7 seconds. 

the logs of the tisdk-default-image-am437x-evm where the jumping of u-boot to kerel is taking around 4 to 5 seconds

[2023-06-14 12:52:56.175] WDT:   Not found!
[2023-06-14 12:52:56.175] Trying to boot from MMC1
[2023-06-14 12:52:56.272] SPL: Please implement spl_start_uboot() for your board
[2023-06-14 12:52:56.272] SPL: Direct Linux boot not active!
[2023-06-14 12:52:56.607] 
[2023-06-14 12:52:56.607] 
[2023-06-14 12:52:56.607] U-Boot 2021.01-g44a87e3ab8 (Jun 02 2022 - 22:28:36 +0000)
[2023-06-14 12:52:56.623] 
[2023-06-14 12:52:56.623] CPU  : AM437X-GP rev 1.2
[2023-06-14 12:52:56.623] Model: TI AM437x SK EVM
[2023-06-14 12:52:56.623] DRAM:  1 GiB
[2023-06-14 12:52:56.735] PMIC:  TPS65218
[2023-06-14 12:52:56.735] NAND:  0 MiB
[2023-06-14 12:52:57.140] MMC:   OMAP SD/MMC: 0
[2023-06-14 12:52:57.140] Loading Environment from FAT... *** Warning - bad CRC, using default environment
[2023-06-14 12:52:57.231] 
[2023-06-14 12:52:57.231] Net:   eth2: ethernet@4a100000
[2023-06-14 12:52:57.263] Hit any key to stop autoboot:  2  1  0 
[2023-06-14 12:52:59.344] switch to partitions #0, OK
[2023-06-14 12:52:59.344] mmc0 is current device
[2023-06-14 12:52:59.424] SD/MMC found on device 0
[2023-06-14 12:52:59.424] Failed to load 'boot.scr'
[2023-06-14 12:52:59.424] 717 bytes read in 1 ms (700.2 KiB/s)
[2023-06-14 12:52:59.441] Loaded env from uEnv.txt
[2023-06-14 12:52:59.441] Importing environment from mmc0 ...
[2023-06-14 12:52:59.519] switch to partitions #0, OK
[2023-06-14 12:52:59.519] mmc0 is current device
[2023-06-14 12:52:59.599] SD/MMC found on device 0
[2023-06-14 12:52:59.859] 4989440 bytes read in 250 ms (19 MiB/s)
[2023-06-14 12:52:59.871] 112940 bytes read in 8 ms (13.5 MiB/s)
[2023-06-14 12:52:59.871] ## Flattened Device Tree blob at 88000000
[2023-06-14 12:52:59.871]    Booting using the fdt blob at 0x88000000
[2023-06-14 12:52:59.871]    Loading Device Tree to 8ffe1000, end 8ffff92b ... OK
[2023-06-14 12:52:59.886] 
[2023-06-14 12:52:59.886] Starting kernel ...
[2023-06-14 12:52:59.886] 
[2023-06-14 12:53:04.099] [    0.000000] Booting Linux on physical CPU 0x0
[2023-06-14 12:53:04.099] [    0.000000] Linux version 5.10.100-rt62-g204ec708dc (oe-user@oe-host) (arm-none-linux-gnueabihf-gcc (GNU Toolchain for the A-profile Architecture 9.2-2019.12 (arm-9.10)) 9.2.1 20191025, GNU ld (GNU Toolchain for the A-profile Architecture 9.2-2019.12 (arm-9.10)) 2.33.1.20191209) #1 PREEMPT_RT Thu Jun 2 22:32:00 UTC 2022
[2023-06-14 12:53:04.144] [    0.000000] CPU: ARMv7 Processor [412fc09a] revision 10 (ARMv7), cr=10c53c7d
[2023-06-14 12:53:04.144] [    0.000000] CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache
[2023-06-14 12:53:04.159] [    0.000000] OF: fdt: Machine model: TI AM437x SK https://e2e.ti.com/tinymce//apis/embeddables/configure?typeId=dc8ab71f-3b98-42d9-b0f6-e21e02a0f8e2&id=undefined#EVM
[2023-06-14 12:53:04.159] [    0.000000] Memory policy: Data cache writeback
[2023-06-14 12:53:04.159] [    0.000000] efi: UEFI not found.

the logs for the image we have created and the boot up time in there is also taking round 4 seconds of time while jumping from u-boot to kernel

[2023-06-14 12:10:25.127] U-Boot SPL 2020.01-g999 (Jun 13 2023 - 12:22:51 +0000)
[2023-06-14 12:10:25.127] WDT:   Not found!
[2023-06-14 12:10:25.143] Trying to boot from MMC1
[2023-06-14 12:10:25.241] SPL: Please implement spl_start_uboot() for your board
[2023-06-14 12:10:25.241] SPL: Direct Linux boot not active!
[2023-06-14 12:10:25.799] 
[2023-06-14 12:10:25.799] 
[2023-06-14 12:10:25.799] U-Boot 2020.01-g999 (Jun 13 2023 - 12:22:51 +0000)
[2023-06-14 12:10:25.799] 
[2023-06-14 12:10:25.799] CPU  : AM437X-GP rev 1.2
[2023-06-14 12:10:25.799] Model: TI AM437x SK EVM
[2023-06-14 12:10:25.799] DRAM:  1 GiB
[2023-06-14 12:10:25.912] PMIC:  TPS65218
[2023-06-14 12:10:25.912] NAND:  0 MiB
[2023-06-14 12:10:26.311] MMC:   OMAP SD/MMC: 0
[2023-06-14 12:10:26.326] Loading Environment from FAT... OK
[2023-06-14 12:10:26.424] Net:   eth0: ethernet@4a100000
[2023-06-14 12:10:26.438] Hit any key to stop autoboot:  0 
[2023-06-14 12:10:26.518] switch to partitions #0, OK
[2023-06-14 12:10:26.536] mmc0 is current device
[2023-06-14 12:10:26.598] SD/MMC found on device 0
[2023-06-14 12:10:26.615] 1396 bytes read in 3 ms (454.1 KiB/s)
[2023-06-14 12:10:26.615] Loaded env from uEnv.txt
[2023-06-14 12:10:26.615] Importing environment from mmc0 ...
[2023-06-14 12:10:26.695] switch to partitions #0, OK
[2023-06-14 12:10:26.695] mmc0 is current device
[2023-06-14 12:10:26.777] SD/MMC found on device 0
[2023-06-14 12:10:26.777] ROOTFS_A exist
[2023-06-14 12:10:26.793] Saving Environment to FAT... OK
[2023-06-14 12:10:27.094] 5575168 bytes read in 275 ms (19.3 MiB/s)
[2023-06-14 12:10:27.111] 112940 bytes read in 9 ms (12 MiB/s)
[2023-06-14 12:10:27.111] ## Flattened Device Tree blob at 88000000
[2023-06-14 12:10:27.111]    Booting using the fdt blob at 0x88000000
[2023-06-14 12:10:27.126]    Loading Device Tree to 8ffe1000, end 8ffff92b ... OK
[2023-06-14 12:10:27.126] 
[2023-06-14 12:10:27.126] Starting kernel ...
[2023-06-14 12:10:27.126] 
[2023-06-14 12:10:27.126] 
[2023-06-14 12:10:27.126] at end of Starting kernel ...
[2023-06-14 12:10:27.143] 
[2023-06-14 12:10:27.143] 
[2023-06-14 12:10:27.143] at announce_and_cleanup 1 ...
[2023-06-14 12:10:27.143] 
[2023-06-14 12:10:27.143] point-1
[2023-06-14 12:10:27.143] point-1.1
[2023-06-14 12:10:27.143] point-2 the fake value is 0 
[2023-06-14 12:10:27.143] 
[2023-06-14 12:10:27.143]  before kernel_entry ..at the address of 82000000 the machid is 0 and r2 is 8ffe1000.
[2023-06-14 12:10:27.159] 
[2023-06-14 12:10:32.087] [    0.000000] I am the first statement in start_kernel in main.c
[2023-06-14 12:10:32.103] [    0.000000] at the start of smp_setup_processor_id
[2023-06-14 12:10:32.103] [    0.000000] Booting Linux on physical CPU 0x0
[2023-06-14 12:10:32.118] [    0.000000] Linux version 5.10.162-rt79-g999 (oe-user@oe-host) (arm-poky-linux-gnueabi-gcc (GCC) 9.5.0, GNU ld (GNU Binutils) 2.34.0.20200910) #1 PREEMPT_RT Wed Jun 14 06:22:44 UTC 2023
[2023-06-14 12:10:32.150] [    0.000000] CPU: ARMv7 Processor [412fc09a] revision 10 (ARMv7), cr=10c53c7d

To verify I have done the code changes and added few logs as well to identify where it is taking most of the time the added logs screen shots are below 

  •  in u-boot-ti-staging/arch/arm/lib/bootm.c
    • in static void boot_jump_linux(bootm_headers_t *images, int flag


/* Subcommand: GO */
static void boot_jump_linux(bootm_headers_t *images, int flag)
{
#ifdef CONFIG_ARM64
	void (*kernel_entry)(void *fdt_addr, void *res0, void *res1,
			void *res2);
	int fake = (flag & BOOTM_STATE_OS_FAKE_GO);

	kernel_entry = (void (*)(void *fdt_addr, void *res0, void *res1,
				void *res2))images->ep;

	debug("## Transferring control to Linux (at address %lx)...\n",
		(ulong) kernel_entry);
	bootstage_mark(BOOTSTAGE_ID_RUN_OS);

	announce_and_cleanup(fake);
	printf("\nat announce_and_cleanup ...\n\n");
	if (!fake) {
#ifdef CONFIG_ARMV8_PSCI
		armv8_setup_psci();
#endif
		do_nonsec_virt_switch();

		update_os_arch_secondary_cores(images->os.arch);

#ifdef CONFIG_ARMV8_SWITCH_TO_EL1
		armv8_switch_to_el2((u64)images->ft_addr, 0, 0, 0,
				    (u64)switch_to_el1, ES_TO_AARCH64);
#else
		if ((IH_ARCH_DEFAULT == IH_ARCH_ARM64) &&
		    (images->os.arch == IH_ARCH_ARM))
			armv8_switch_to_el2(0, (u64)gd->bd->bi_arch_number,
					    (u64)images->ft_addr, 0,
					    (u64)images->ep,
					    ES_TO_AARCH32);
		else
			armv8_switch_to_el2((u64)images->ft_addr, 0, 0, 0,
					    images->ep,
					    ES_TO_AARCH64);
#endif
	}
#else
	unsigned long machid = gd->bd->bi_arch_number;
	char *s;
	void (*kernel_entry)(int zero, int arch, uint params);
	unsigned long r2;
	int fake = (flag & BOOTM_STATE_OS_FAKE_GO);

	kernel_entry = (void (*)(int, int, uint))images->ep;
#ifdef CONFIG_CPU_V7M
	ulong addr = (ulong)kernel_entry | 1;
	kernel_entry = (void *)addr;
#endif
	s = env_get("machid");
	if (s) {
		if (strict_strtoul(s, 16, &machid) < 0) {
			debug("strict_strtoul failed!\n");
			return;
		}
		printf("Using machid 0x%lx from environment\n", machid);
	}

	debug("## Transferring control to Linux (at address %08lx)" \
		"...\n", (ulong) kernel_entry);
	bootstage_mark(BOOTSTAGE_ID_RUN_OS);
	announce_and_cleanup(fake);
	printf("\nat announce_and_cleanup 1 ...\n\n");
	printf("point-1\n");
	if (IMAGE_ENABLE_OF_LIBFDT && images->ft_len){
		printf("point-1.1\n");
		r2 = (unsigned long)images->ft_addr;
	}
	else{
		printf("point-1.2\n");
		r2 = gd->bd->bi_boot_params;
		printf("print1.3\n");
	}
	printf("point-2 the fake value is %d \n", fake);
	if (!fake) {
#ifdef CONFIG_ARMV7_NONSEC
		if (armv7_boot_nonsec()) {
			printf("point-3\n");
			armv7_init_nonsec();
			printf("point-4\n");
			secure_ram_addr(_do_nonsec_entry)(kernel_entry,
							  0, machid, r2);
			printf("point-5\n");
		} else
#endif		
			printf("\n before kernel_entry ..at the address of %lx the machid is %lx and r2 is %lx.\n\n", kernel_entry, machid, r2);
			kernel_entry(0, machid, r2);
			printf("point-6\n");
	}
#endif
	printf("\n at end of kernel_entry ...\n\n");
}

  • in linux-ti-staging-rt/init/main.c

asmlinkage __visible void __init __no_sanitize_address start_kernel(void)
{
	printk("I am the first statement in start_kernel in main.c" );
	char *command_line;
	char *after_dashes;

	set_task_stack_end_magic(&init_task);
	smp_setup_processor_id();
	debug_objects_early_init();

	cgroup_init_early();

	local_irq_disable();
	early_boot_irqs_disabled = true;

  • in linux-ti-staging-rt/arch/arm/kernel/setup.c

void __init smp_setup_processor_id(void)
{
	int i;
	pr_info("at the start of smp_setup_processor_id");
	u32 mpidr = is_smp() ? read_cpuid_mpidr() & MPIDR_HWID_BITMASK : 0;
	u32 cpu = MPIDR_AFFINITY_LEVEL(mpidr, 0);

	cpu_logical_map(0) = cpu;
	for (i = 1; i < nr_cpu_ids; ++i)
		cpu_logical_map(i) = i == cpu ? 0 : i;

	/*
	 * clear __my_cpu_offset on boot CPU to avoid hang caused by
	 * using percpu variable early, for example, lockdep will
	 * access percpu variable inside lock_release
	 */
	set_my_cpu_offset(0);

	pr_info("Booting Linux on physical CPU 0x%x\n", mpidr);
}

 

From the logs and mapping that logs the code changes mentioned above we observe that the u-boot is jumping from 

kernel_entry(0, machid, r2);
function to kernel, and the first log of kernel is coming at 
asmlinkage __visible void __init __no_sanitize_address start_kernel(void) function 
{
    printk("I am the first statement in start_kernel in main.c" );
....
 
in between those two point the 4 to 5 seconds of time is getting consumed. 
What is consuming this time ?
What is the way to reduce this time to achieve our end goal ? as our final target is 10 seconds and 6 seconds are used before the kernel is getting loaded.
  • Hi,

    Please allow a day or so to look into this issue.

    ~ Judith

  • Hi,

    There are various things we could do to reduce boot time, some like the following:

    - use TinyFS

    - Set R5 SPL to directly boot Linux

    - Disable networking for kernel

    - Disable kernel boot log

    - Disable some unnecessary CONFIG options in U-boot.

    - Disable some unnecessary kernel config options

    - Disable kernel console messages

    etc...

    Some questions:

    1. What boot mode are you using?
    2. Are you interesting in optimizing time for both U-boot and Linux Kernel?

    You are using TI default images which might enable/configure what you do not need.

    3. What are your requirements?

    ~ Judith

  • Hi Judith, Thank you so much for your reply.

    Please find the answers of the questions you asked below,

    1. What boot mode are you using?

    Ans : We are using U-Boot 2020.01-g999 also the kernel version is 5.10.162-rt79-g999

     

    1. Are you interesting in optimizing time for both U-boot and Linux Kernel?

     

    You are using TI default images which might enable/configure what you do not need.

    Ans : We are targeting to reduce overall bootup time (uboot + kernel + user-space) to get it under in 10 seconds.

     

    In Kernel and user space we can reduce the time by removing unwanted modules.

     

    But if we look at the target time of 10 seconds, and 6 seconds which are consumed by u-boot itself before starting the kernel, it is taking 60% of our desired time.

    At this point kernel and user-space  have the time less than 4 seconds to get it loaded.

     

    The TI default image's output were shared to point out that the kind of behavior we are observing in our custom image, it is there too in TI default image.

    We have our custom image where we have updated things as per our requirements which is based on TI default image.

     

    1. What are your requirements?

    Ans : As explained in the answer of point 2 we are targeting the complete bootup under 10 seconds.

     

    As per your suggestion I will trying different point that you suggested.

    But our main concern is that time of 4 seconds for jumping from uboot to kernel is same for a very small size of zImage kernel to a zImage with all the modules needed.

    If we are able to pin point why it is taking the time it is taking and find the way to reduce it. That will allow us to achieve our main requirement of complete boot up  (uboot + kernel + user-space) under in 10 seconds

  • Hi Bhavesh,

    If U-boot takes to much time to boot, there is a way to reduce boot time by using Falcom mode, it removes the second stage boot process and makes Linux boot faster. Is this something you are looking for?

    Also by boot mode I mean are you using SD card boot, NAND boot, eMMC boot, etc..

    ~ Judith

  • Hi Judith,

    Currently I am trying to boot using SD card, I also tried with eMMC too but it had the same behavior in that too.

    I tried few things while playing with log levels in u-boot and came to know that u-boot seems to complete its execution when it reach the point where it calls kernel_entry(0, machid, r2); and the kernel's execution starts. The logs of that tests are 

    [2023-06-19 16:59:48.454] boot_relocate_fdt() ## device tree at 88000000 ... 8801b92b (len=125228 [0x1E92C])
    [2023-06-19 16:59:48.478]    Loading Device Tree to 8ffe1000, end 8ffff92b ... OK
    [2023-06-19 16:59:48.478] _do_env_set() Initial value for argc=3
    [2023-06-19 16:59:48.478] _do_env_set() Final value for argc=3
    [2023-06-19 16:59:48.494] boot_jump_linux() ## Transferring control to Linux (at address 82000000)...
    [2023-06-19 16:59:48.494] 
    [2023-06-19 16:59:48.494] Starting kernel ...
    [2023-06-19 16:59:48.494] 
    [2023-06-19 16:59:53.446] [    0.000000] Booting Linux on physical CPU 0x0
    [2023-06-19 16:59:53.446] [    0.000000] Linux version 5.10.162-rt79-g999 (oe-user@oe-host) (arm-poky-linux-gnueabi-gcc (GCC) 9.5.0, GNU ld (GNU Binutils) 2.34.0.20200910) #1 PREEMPT_RT Mon Jun 19 08:51:12 UTC 2023
    [2023-06-19 16:59:53.493] [    0.000000] CPU: ARMv7 Processor [412fc09a] revision 10 (ARMv7), cr=10c53c7d
    [2023-06-19 16:59:53.493] [    0.000000] CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache
    [2023-06-19 16:59:53.509] [    0.000000] OF: fdt: Machine model: TI AM437x SK EVM
    [2023-06-19 16:59:53.525] [    0.000000] Memory policy: Data cache writeback
    [2023-06-19 16:59:53.525] [    0.000000] efi: UEFI not found.
    [2023-06-19 16:59:53.525] [    0.000000] cma: Reserved 512 MiB at 0x90000000
    [2023-06-19 16:59:53.541] [    0.000000] Zone ranges:
    [2023-06-19 16:59:53.541] [    0.000000]   Normal   [mem 0x0000000080000000-0x00000000afffffff]
    [2023-06-19 16:59:53.541] [    0.000000]   HighMem  [mem 0x00000000b0000000-0x00000000bfffffff]
    [2023-06-19 16:59:53.541] [    0.000000] Movable zone start for each node

    After looking into the kernel source code it seems that kernel is doing some decompression and coping few data to RAM. 

    So the  4 to 5 seconds of time used in between "Starting kernel ..." and "[    0.000000] Booting Linux on physical CPU 0x0" seems from the kernel.

    I am trying to test it with the Falcon mode too, I have not completed that successfully. 

    A question in falcon mode too, the kernel will take the same amount of time to decompress as it is taking in current scenario? 

    Regards,

    Bhavesh

  • Hi Bhavesh,

    Currently working on a setup for AM437x, sorry for the delay.

    What is known so far.

    - AM437x Linux SDK does not enable falcon mode by default, but it should be possible
    - Best source of doc for falcon mode is: <path-to-processor-sdk>/board-support/uboot-*/doc/README.falcon
    - falcon mode only works with uImage not zImage, (decompressed)
    - Apparently it takes less time to decompress during boot than to load uncompressed uImage from boot device, but the advantage with falcon mode is that we do not deal with U-boot stage, which reduces boot time overall

    You will need to rebuild U-boot with spl_start_uboot() function in <path-to-processor-sdk>/board-support/uboot-*/board/ti/am43xx/board.c
    You will need to rebuild Linux kernel source with: make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabihf-  uImage modules dtbs LOADADDR=80008000

    ~ Judith

  • Hi Bhavesh,

    U-boot stage:
    - (optional) Remove from defconfig options that you do not need, this is minimal impact on boot time
    - Falcon mode, requires uImage, doc can be found here: <path-to-processor-sdk>/board-support/uboot-*/doc/README.falcon, is not enabled by default, use as example am335x

    Linux stage:
    - from .config, remove options you do not need
    - from DTB, use delete node property to remove from DTB the nodes that you do not need, ex:

    &cluster0 {
    	/delete-node/ core1;
    	/delete-node/ core2;
    	/delete-node/ core3;
    };

    - remove startup scripts that you do not need

    ~ Judith

  • Hi Judith, 

    I tried to update the code for u-boot to enable the Falcon mode, as suggested in README.falcon and used the example of am335x 

    also generated the uImage from the yocto as mentioned above. From the source it seems that we have to use 'spl export' command also used that but not able to load the kernel from the SPL. 

    In Sd card there is a /boot partition where MLO, uboot.env, u-boot.img, uEnv.txt files are there. in other partition /Root/root have the uImage file there.

    Once I try to load the board using this the SPL is not able to load the OS, the logs are

    [2023-06-22 19:29:18.414] U-Boot SPL 2020.01-g999 (Jun 19 2023 - 11:04:09 +0000)
    [2023-06-22 19:29:18.414] WDT:   Not found!
    [2023-06-22 19:29:18.430] Trying to boot from MMC1
    [2023-06-22 19:29:18.494] Loading Environment from FAT... OK
    [2023-06-22 19:29:19.086] 
    [2023-06-22 19:29:19.086] 
    [2023-06-22 19:29:19.086] U-Boot 2020.01-g999 (Jun 19 2023 - 11:04:09 +0000)
    [2023-06-22 19:29:19.102] 
    [2023-06-22 19:29:19.102] CPU  : AM437X-GP rev 1.2
    [2023-06-22 19:29:19.102] Model: TI AM437x SK EVM
    [2023-06-22 19:29:19.102] DRAM:  1 GiB
    [2023-06-22 19:29:19.214] PMIC:  TPS65218
    [2023-06-22 19:29:19.214] NAND:  0 MiB
    [2023-06-22 19:29:19.614] MMC:   OMAP SD/MMC: 0
    [2023-06-22 19:29:19.630] Loading Environment from FAT... OK
    [2023-06-22 19:29:19.725] In:    serial@44e09000
    [2023-06-22 19:29:19.725] Out:   serial@44e09000
    [2023-06-22 19:29:19.725] Err:   serial@44e09000
    [2023-06-22 19:29:19.725] Net:   eth0: ethernet@4a100000
    [2023-06-22 19:29:19.758] Hit any key to stop autoboot:  0 
    [2023-06-22 19:29:19.839] switch to partitions #0, OK
    [2023-06-22 19:29:19.839] mmc0 is current device
    [2023-06-22 19:29:19.918] SD/MMC found on device 0
    [2023-06-22 19:29:19.918] 1396 bytes read in 3 ms (454.1 KiB/s)
    [2023-06-22 19:29:19.934] Loaded env from uEnv.txt
    [2023-06-22 19:29:19.934] Importing environment from mmc0 ...
    [2023-06-22 19:29:20.014] switch to partitions #0, OK
    [2023-06-22 19:29:20.014] mmc0 is current device
    [2023-06-22 19:29:20.094] SD/MMC found on device 0
    [2023-06-22 19:29:20.094] ROOTFS_A exist
    [2023-06-22 19:29:20.094] Saving Environment to FAT... OK
    [2023-06-22 19:29:20.141] starting USB...
    [2023-06-22 19:29:20.141] Bus usb@483d0000: Register 2000440 NbrPorts 2
    [2023-06-22 19:29:20.558] Starting the controller
    [2023-06-22 19:29:20.558] USB XHCI 1.00
    [2023-06-22 19:29:20.558] scanning bus usb@483d0000 for devices... 1 USB Device(s) found
    [2023-06-22 19:29:21.694]        scanning usb for storage devices... 0 Storage Device(s) found
    [2023-06-22 19:29:21.694] 
    [2023-06-22 19:29:21.694] Device 0: unknown device
    [2023-06-22 19:29:21.694] Booting from network ...
    [2023-06-22 19:29:21.710] ethernet@4a100000 Waiting for PHY auto negotiation to complete.........................�
    [2023-06-22 19:29:37.506] U-Boot SPL 2020.01-g999 (Jun 19 2023 - 11:04:09 +0000)
    [2023-06-22 19:29:37.506] WDT:   Not found!
    [2023-06-22 19:29:37.522] Trying to boot from MMC1
    [2023-06-22 19:29:37.586] Loading Environment from FAT... OK
    [2023-06-22 19:29:38.178] 
    [2023-06-22 19:29:38.178] 
    [2023-06-22 19:29:38.178] U-Boot 2020.01-g999 (Jun 19 2023 - 11:04:09 +0000)
    [2023-06-22 19:29:38.194] 
    [2023-06-22 19:29:38.194] CPU  : AM437X-GP rev 1.2
    [2023-06-22 19:29:38.194] Model: TI AM437x SK EVM
    [2023-06-22 19:29:38.194] DRAM:  1 GiB
    [2023-06-22 19:29:38.306] PMIC:  TPS65218
    [2023-06-22 19:29:38.306] NAND:  0 MiB
    [2023-06-22 19:29:38.706] MMC:   OMAP SD/MMC: 0
    [2023-06-22 19:29:38.721] Loading Environment from FAT... OK
    [2023-06-22 19:29:38.818] In:    serial@44e09000
    [2023-06-22 19:29:38.818] Out:   serial@44e09000
    [2023-06-22 19:29:38.818] Err:   serial@44e09000
    [2023-06-22 19:29:38.818] Net:   eth0: ethernet@4a100000
    [2023-06-22 19:29:38.856] Hit any key to stop autoboot:  0  0
    [2023-06-22 19:29:38.856] => 
    [2023-06-22 19:29:38.856] => 
    [2023-06-22 19:29:38.856] => 
    [2023-06-22 19:29:39.137] => 
    [2023-06-22 19:29:39.345] => 
    [2023-06-22 19:29:39.553] => 
    [2023-06-22 19:29:39.718] => 
    [2023-06-22 19:29:39.911] => spl export fdt 80008000 - 8ffe1000
    [2023-06-22 19:29:50.337] data abort
    [2023-06-22 19:29:50.337] pc : [<bff59df2>]	   lr : [<bff5f0c7>]
    [2023-06-22 19:29:50.337] reloc pc : [<8080fdf2>]	   lr : [<808150c7>]
    [2023-06-22 19:29:50.337] sp : bdf2d1e8  ip : bff9f71c	 fp : 00000007
    [2023-06-22 19:29:50.353] r10: 00000003  r9 : bdf39eb8	 r8 : bdf2d284
    [2023-06-22 19:29:50.353] r7 : bffbceec  r6 : 80008000	 r5 : 80008000  r4 : bffbceec
    [2023-06-22 19:29:50.353] r3 : 00000000  r2 : edfe0dd0	 r1 : 80008000  r0 : bffa29fe
    [2023-06-22 19:29:50.353] Flags: Nzcv  IRQs off  FIQs off  Mode SVC_32 (T)
    [2023-06-22 19:29:50.369] Code: f000 8088 9b07 4891 (6819) f03e 
    [2023-06-22 19:29:50.369] Resetting CPU ...
    [2023-06-22 19:29:50.369] 
    [2023-06-22 19:29:50.466] resetting ...
    [2023-06-22 19:29:50.874] 
    [2023-06-22 19:29:50.874] U-Boot SPL 2020.01-g999 (Jun 19 2023 - 11:04:09 +0000)
    [2023-06-22 19:29:50.874] WDT:   Not found!
    [2023-06-22 19:29:50.874] Trying to boot from MMC1
    [2023-06-22 19:29:50.949] Loading Environment from FAT... OK
    [2023-06-22 19:29:51.538] 
    [2023-06-22 19:29:51.538] 
    [2023-06-22 19:29:51.538] U-Boot 2020.01-g999 (Jun 19 2023 - 11:04:09 +0000)
    [2023-06-22 19:29:51.538] 
    [2023-06-22 19:29:51.538] CPU  : AM437X-GP rev 1.2
    [2023-06-22 19:29:51.538] Model: TI AM437x SK EVM
    [2023-06-22 19:29:51.554] DRAM:  1 GiB
    [2023-06-22 19:29:51.666] PMIC:  TPS65218
    [2023-06-22 19:29:51.666] NAND:  0 MiB
    [2023-06-22 19:29:52.065] MMC:   OMAP SD/MMC: 0
    [2023-06-22 19:29:52.065] Loading Environment from FAT... OK
    [2023-06-22 19:29:52.166] In:    serial@44e09000
    [2023-06-22 19:29:52.166] Out:   serial@44e09000
    [2023-06-22 19:29:52.166] Err:   serial@44e09000
    [2023-06-22 19:29:52.177] Net:   eth0: ethernet@4a100000
    [2023-06-22 19:29:52.193] Hit any key to stop autoboot:  0 
    [2023-06-22 19:29:52.272] switch to partitions #0, OK
    [2023-06-22 19:29:52.272] mmc0 is current device
    [2023-06-22 19:29:52.354] SD/MMC found on device 0
    [2023-06-22 19:29:52.370] 1396 bytes read in 3 ms (454.1 KiB/s)
    [2023-06-22 19:29:52.370] Loaded env from uEnv.txt
    [2023-06-22 19:29:52.370] Importing environment from mmc0 ...
    [2023-06-22 19:29:52.450] switch to partitions #0, OK
    [2023-06-22 19:29:52.450] mmc0 is current device
    [2023-06-22 19:29:52.530] SD/MMC found on device 0
    [2023-06-22 19:29:52.530] ROOTFS_A exist
    [2023-06-22 19:29:52.530] Saving Environment to FAT... OK
    [2023-06-22 19:29:52.577] starting USB...
    [2023-06-22 19:29:52.577] Bus usb@483d0000: Register 2000440 NbrPorts 2
    [2023-06-22 19:29:53.018] Starting the controller
    [2023-06-22 19:29:53.018] USB XHCI 1.00
    [2023-06-22 19:29:53.018] scanning bus usb@483d0000 for devices... 1 USB Device(s) found
    [2023-06-22 19:29:54.129]        scanning usb for storage devices... 0 Storage Device(s) found
    [2023-06-22 19:29:54.146] 
    [2023-06-22 19:29:54.146] Device 0: unknown device
    [2023-06-22 19:29:54.146] Booting from network ...
    [2023-06-22 19:29:54.146] ethernet@4a100000 Waiting for PHY auto negotiation to complete....................................................................................

    Is there something I am missing here?

    Regards

    Bhavesh

  • Hi Bhavesh,

    Did you do the spl export command to generate kernel parameters and save to storage?

    ~ Judith

  • Hi Judith,

    Here I am bit confuse, how are you mentioning that we can generate the kernel parameters to save to storage?

    Also I am getting confused in below highlighted point from the README

    Can you please share some light no that, any example where this falcon mode is enabled for TI processor?

    Regards

    Bhavesh 

  • Hi Bhavesh,

    Step 1 says to load the kernel into memory, fatload uImage command should work, I believe. Then use spl export command to generate parameters, you can find an example here: https://bootlin.com/pub/conferences/2021/lee/opdenacker-understanding-u-boot-falcon-mode/opdenacker-understanding-u-boot-falcon-mode.pdf

    Since this is an old device, documentation is limited.

    ~ Judith