以下是 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 上。