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 在从 uboot 跳转(正在启动内核...)时需要大约4秒 到 AM4378入门套件上的内核([ 0.000000]在物理 CPU 0x0上引导 Linux)

Guru**** 665180 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1237772/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

器件型号:AM4378

你(们)好!  

我正在尝试优化 Linux 映像的引导时间。 我观察到、从 u-boot 跳转到内核时需要4到5秒。

我需要的 目标是 在10秒内达到启动(SPL / u-boot /内核/用户空间)、但 u-boot 本身大约需要6到7秒。  

 tisdk-default-image-AM437X-EVM 的日志、其中 u-boot 跳转到内核大约需要4到5秒

[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 e2e.ti.com/.../configure
[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.

我们所创建的映像的日志和其中的启动时间也需要大约4秒的时间从 u-boot 跳转到内核

[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

为了验证 我是否完成了代码更改并添加了少量日志以确定添加的日志屏幕截图如下所示的大部分时间所用的位置  

  •  在 u-boot-ti-staging/arch/arm/lib/bootm.c 中
    • 在静态 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");
}

  • 在 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;

  • 在 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);
}

 

从记录上述代码更改的日志和映射中、我们可以观察到 u-boot 从  

kernel_entry (0、machid、r2);
传递到内核、内核的第一个日志位于  
asmlink_visible void _init ___ no_cleane_address start_kernel (void)函数  
{
  printk ("我是 main.c 中 start_kernel 中的第一个语句");
……
 
在这两点之间、会消耗4至5秒的时间。  
这段时间有什么用?
如何缩短这段时间来实现 我们的最终目标? 因为我们的最终目标是在加载内核之前需要10秒和6秒。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    请花一天左右的时间来研究这个问题。

    ~朱迪斯

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    我们可以采取各种措施来缩短启动时间、其中一些措施如下:

    -使用 TinyFS

    -设置 R5 SPL 直接引导 Linux

    -禁用内核网络

    -禁用内核启动日志

    -在 U-boot 中禁用一些不必要的配置选项。

    -禁用一些不必要的内核配置选项

    -禁用内核控制台消息

    等等...

    一些问题:

    1.您使用哪种引导模式?
    2.您是否对优化 U-boot 和 Linux 内核的时间感兴趣?

    您使用的 TI 默认映像可能会启用/配置不需要的内容。

    3.您的要求是什么?

    ~朱迪斯

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Judith、非常感谢您的答复。

    请在下方找到您提出的问题的答案、

    1. 您正在使用哪种引导模式?

    回答:我们使用的是 U-Boot 2020.01-g999,内核版本也是5.10.162-rt79-g999。  

     

    1. 您是否对优化 U-boot 和 Linux 内核的时间感兴趣?

     

    您使用的 TI 默认映像可能会启用/配置不需要的内容。

    答:我们的目标是缩短总体启动时间(uboot +内核+用户空间),使其在10秒内完成。

     

    在内核和用户空间中、我们可以通过删除不需要的模块来减少时间。

     

    但是、如果我们看看 u-boot 本身在启动内核之前消耗的10秒和6秒目标时间、就会花费我们所需的时间的60%。

    此时、内核和用户空间 加载它的时间不到4秒。

     

    共享了 TI 默认图像的输出、以指出我们在自定义图像中观察到的行为类型、在 TI 默认图像中也是如此。

    我们有一个自定义映像、并根据我们的要求更新了内容、该映像基于 TI 默认映像。

     

    1. 您的要求是什么?

    回答:正如第2点的答案所述,我们将在10秒内完成启动。

     

    根据您的建议、我将尝试您建议的不同点。

    但我们的主要关注点是4秒从 uboot 跳转到内核的时间对于非常小的 zImage 内核至具有所有所需模块的 zImage 是相同的。

    如果我们能够精确指出为什么花费的时间很长、并找到降低时间的方法。 这将使我们能够 在10秒内完成启动(uboot +内核+用户空间)的主要要求

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Bhavesh:

    如果 U-boot 需要很长的时间来引导,可以通过使用 Falcom 模式来缩短引导时间,它会删除第二阶段的引导过程,并使 Linux 引导速度更快。 这是您要找的器件吗?

    另外是引导模式、我的意思是使用 SD 卡引导、NAND 引导、eMMC 引导等。

    ~朱迪斯

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Judith、您好!

    目前我正在尝试使用 SD 卡引导、也尝试了 eMMC、但它也具有相同的行为。

    我在 u-boot 中玩日志级时尝试了几件事情,并知道 u-boot 在达到调用 kernel_entry(0, machid, r2)时似乎完成了它的执行;内核的执行开始。 该测试的日志  

    [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

    研究内核源代码后、似乎内核正在做一些解压缩并将很少的数据写入 RAM。  

    因此、 在这两个时间之间" 正在启动内核... "和" [  0.000000]在物理 CPU 0x0上引导 Linux " 似乎来自 内核

    我正在尝试使用 Falcon 模式对其进行测试、但尚未成功完成。  

    也有一个问题在 falcon 模式下,内核将需要与当前 情况下相同的时间进行解压?  

    此致、

    巴哈维什

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Bhavesh:

    目前正在进行 AM437x 设置、很抱歉耽误您的时间。

    目前已知的情况。

    - AM437x Linux SDK 在默认情况下不启用 falcon 模式,但它应该是可能的
    - Falcon 模式的最佳文档来源是: /board-support/uboot-*/doc/README.falcon
    - falcon 模式仅适用于 uImage 而非 zImage ,(解压)
    -与从引导设备加载未压缩的 uImage 相比,在引导期间解压缩所需的时间更短,但使用 falcon 模式的优点是我们不处理 U-boot 阶段,这会减少总体引导时间

    您将需要在中使用 spl_start_uboot ()函数重新编译 U-boot /board-support/uboot-*/board/ti/am43xx/board.c
    您需要使用以下命令重新构建 Linux 内核源代码:make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabihf- uImage 模块 dtbs LOADDDR=80008000

    ~朱迪斯

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Bhavesh:

    U-boot 级:
    -(可选)从 defconfig 选项中删除,这对引导时间的影响最小。
    - Falcon 模式,需要 uImage,文档可以在这里找到: /board-support/uboot-*/doc/README.falcon、默认情况下未启用、用作示例 AM335x

    Linux 级:
    -从.config 中删除您不需要的选项
    -从 dtb 中,使用 delete node 属性从 dtb 中删除不需要的节点,例如:

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

    -删除您不需要的启动脚本

    ~朱迪斯

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Judith、您好!  

    我曾尝试更新 u-boot 的代码以启用 Falcon 模式、正如 README.falcon 中建议的那样、并使用了 AM335x 的示例  

    还从 Yocto 生成 uImage、如上所述。 从源代码来看、我们似乎必须使用"plexport"命令、该命令也用于从 SPL 加载内核。  

    SD 卡中有一个/boot 分区 、其中有 mlo、uboot.env、u-boot.img、uEnv.txt 文件。 在其他分区中、/Root/root 具有 uImage 文件。

    一旦我尝试使用此文件加载电路板、SPL 就无法加载操作系统、日志

    [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....................................................................................

    我在这里遗漏了什么?

    此致

    巴哈维什

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Bhavesh:

    您是否执行了 spl 导出命令来生成内核参数并保存到存储器?

    ~朱迪斯

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Judith、您好!

    在这里、我感到有点困惑、您是怎么提到我们可以生成内核参数来保存到存储器的?

    另外、我对自述文件中的以下重点内容感到困惑、

    能否谈谈在为 TI 处理器启用了这种猎鹰模式的情况下、是否注意到这一点?

    此致

    巴哈维什  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Bhavesh:

    第1步说将内核加载到内存中、fatload uImage 命令应该起作用、我相信。 然后使用 spl 导出命令生成参数、您可以在此处找到一个示例: https://bootlin.com/pub/conferences/2021/lee/opdenacker-understanding-u-boot-falcon-mode/opdenacker-understanding-u-boot-falcon-mode.pdf

    由于它是一个旧器件、因此文档有限。

    ~朱迪斯