在 uboot 中禁用 MMC

在 uboot 中禁用 MMC

以下是 Xilinx zynq 平台上与 u-boot 相关的日志消息:

[Fri Apr 04 19:57:50.990 2014] U-Boot 2013.07 (Apr 04 2014 - 19:38:00)
[Fri Apr 04 19:57:50.990 2014] 
[Fri Apr 04 19:57:50.990 2014] Memory: ECC disabled
[Fri Apr 04 19:57:50.990 2014] DRAM:  1 GiB
[Fri Apr 04 19:57:51.007 2014] MMC:   zynq_sdhci: 0
[Fri Apr 04 19:57:51.007 2014] SF: Detected N25Q128A with page size 64 KiB, total 16 MiB
[Fri Apr 04 19:57:51.038 2014] *** Warning - bad CRC, using default environment
[Fri Apr 04 19:57:51.038 2014] 
[Fri Apr 04 19:57:51.038 2014] In:    serial
[Fri Apr 04 19:57:51.038 2014] Out:   serial
[Fri Apr 04 19:57:51.038 2014] Err:   serial
[Fri Apr 04 19:57:51.038 2014] U-BOOT for Xilinx-ZC702-14.7
[Fri Apr 04 19:57:51.038 2014] 
[Fri Apr 04 19:57:51.038 2014] 
[Fri Apr 04 19:57:51.038 2014] SF: Detected N25Q128A with page size 64 KiB, total 16 MiB
[Fri Apr 04 19:57:51.354 2014] SF: 1963200 bytes @ 0x520000 Read: OK
[Fri Apr 04 19:57:51.354 2014] ## Loading kernel from FIT Image at 01000000 ...
[Fri Apr 04 19:57:51.354 2014]    Using 'conf@1' configuration
[Fri Apr 04 19:57:51.354 2014]    Trying 'kernel@1' kernel subimage
[Fri Apr 04 19:57:51.354 2014]      Description:  PetaLinux Kernel
[Fri Apr 04 19:57:51.354 2014]      Type:         Kernel Image
[Fri Apr 04 19:57:51.354 2014]      Compression:  gzip compressed
[Fri Apr 04 19:57:51.354 2014]      Data Start:   0x010000f0
[Fri Apr 04 19:57:51.354 2014]      Data Size:    1630119 Bytes = 1.6 MiB
[Fri Apr 04 19:57:51.354 2014]      Architecture: ARM
[Fri Apr 04 19:57:51.354 2014]      OS:           Linux
[Fri Apr 04 19:57:51.354 2014]      Load Address: 0x00008000
[Fri Apr 04 19:57:51.354 2014]      Entry Point:  0x00008000
[Fri Apr 04 19:57:51.354 2014]      Hash algo:    crc32
[Fri Apr 04 19:57:51.354 2014]      Hash value:   01dece90
[Fri Apr 04 19:57:51.354 2014]    Verifying Hash Integrity ... crc32+ OK

我的目标是减少启动时间。操作系统和 u-boot 应该从闪存启动。但正如您可以在顶部 MMC 被检测到的那样:

    [Fri Apr 04 19:57:50.990 2014] DRAM:  1 GiB
    [Fri Apr 04 19:57:51.007 2014] MMC:   zynq_sdhci: 0

需要0.17秒。

无论如何,我可以通过从 u-boot 禁用 MMC 来节省这个时间吗?如果是这样,我们如何在 u-boot 中禁用 MMC。一般程序是什么?

答案1

检测到MMC,这是正常的。我不认为你可以通过改变它来节省任何可观的时间。

如果您可以获得 U-Boot 命令提示符(例如,通过在“启动延迟”期间按某个键),您可以通过查看命令的输出来了解有关启动顺序的更多信息

printenv bootcmd
printenv bootargs

您的内核已经从闪存加载。你的文件系统可能在闪存中,或者在MMC上,我不知道这个平台。

您的主板似乎没有保存 U-Boot 环境,因此它使用的是在构建时设置的默认环境。您应该可以更改环境变量(命令设置环境变量),然后将它们放入持久内存中(命令 saveenv)。通常这是更改启动顺序的一般过程。

答案2

[Fri Apr 04 19:57:50.990 2014] DRAM:  1 GiB
[Fri Apr 04 19:57:51.007 2014] MMC:   zynq_sdhci: 0

我也陷入了这个陷阱,认为 mmc 初始化花费了那么多时间。不它不是。如果您在 U-boot 中启用了 mmc,则稍后会进行 MMC 初始化。这是启动顺序,在 board_f.c 和 board_r.c 文件中启用调试消息将消除这种误解。

在我的例子中,这里花费的大部分时间都花在将 u-boot 从闪存复制到 RAM 上。

相关内容