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.

[参考译文] PROCESSOR-SDK-AM335X:AM335x:如何在 u-boot 中获取 MMC 端口?

Guru**** 2539500 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1126063/processor-sdk-am335x-am335x-how-to-get-mmc-port-in-u-boot

器件型号:PROCESSOR-SDK-AM335X

您好!

我对如何在 u-boot 过程中获取 MMC 端口有疑问?

从 eMMC 重新引导时、缺少 env 参数"mmcdev"。

但我需要知道如何配置图像源是 SDCard 还是 eMMC。

例如、AM6xx 处理器可以使用以下代码进行识别、但我在 AM335x 中找不到类似的代码

u32 devstat = readl(CTRLMMR_MAIN_DEVSTAT);
u32 mmcport = (devstat & CTRLMMR_MAIN_DEVSTAT_MMC_PORT_MASK) >> 12;

你有想法吗?  

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

    您好!
    我要附加一个显示"mmcdev"@u-boot 提示符的日志文件。
    最棒的
    -香港

    e2e.ti.com/.../am3_5F00_6.3_5F00_sd_5F00_bbb.txt

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

    您好、Hong、

    感谢您的回复。

    但这并不是我所需要的。 您知道如何在 AM335x 平台上的 C 代码中探测 MMC0/MMC1吗?

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

    您好!
    对于像 AM335x 这样的传统 SoC (非 K3 SoC)、检测到"boot_mode"、如下所示:

    1.  Boot Parameters is passed from boot rom to SBL/SPL according to Table 26-41. Booting Parameters Structure of the TRM
    /arch/arm/mach-omap2/lowlevel_init.S
    ENTRY(save_boot_params)
    	ldr     r1, =OMAP_SRAM_SCRATCH_BOOT_PARAMS
    	str     r0, [r1]
    	b       save_boot_params_ret
    ENDPROC(save_boot_params)
    
    2. /arch/arm/mach-omap2/am33xx/board.c
    void early_system_init(void)
    {
    ...
    	save_omap_boot_params();
    ...
    }
    
    3. /arch/arm/mach-omap2/boot-comman.c
    void save_omap_boot_params(void)
    {
    	u32 boot_params = *((u32 *)OMAP_SRAM_SCRATCH_BOOT_PARAMS);
    ...
    	gd->arch.omap_boot_mode = boot_mode;
    ...
    }
    
    u32 spl_mmc_boot_mode(const u32 boot_device)
    {
    	return gd->arch.omap_boot_mode;
    }
    
    4. /common/spl/spl_mmc.c
    int spl_mmc_load(
    {
    ...
    	boot_mode = spl_mmc_boot_mode(bootdev->boot_device);
    ...
    }

    希望流程能澄清您的疑问。
    最棒的
    -香港