如何从 SD 卡启动 [嵌入式] linux?

Bra*_*tes 6 linux embedded embedded-linux

我正在 DM816x evm 板上搭建一个快速的嵌入式 linux 系统。以前我一直使用 TFTP 和 NFS 将我的内核和根文件系统加载到板上。我现在正在尝试切换到从 SD 卡加载所有内容。

我对我的卡进行了分区,使得 uBoot 和我的内核映像位于一个分区中,而我的 rootFS 位于另一个分区中。开机时,Uboot 正确启动并成功启动内核。但是,内核无法挂载根文件系统。它似乎无法识别任何 SD (mmc) 卡。它给出了这个错误信息。

VFS: Cannot open root device "mmcblk0p2" or unknown-block(2,0)
Please append a correct "root=" boot option; here are the available partitions:
1f00             256 mtdblock0  (driver?)
1f01               8 mtdblock1  (driver?)
1f02            2560 mtdblock2  (driver?)
1f03            1272 mtdblock3  (driver?)
1f04            2432 mtdblock4  (driver?)
1f05             128 mtdblock5  (driver?)
1f06            4352 mtdblock6  (driver?)
1f07          204928 mtdblock7  (driver?)
1f08           50304 mtdblock8  (driver?)
Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(2,0)
Run Code Online (Sandbox Code Playgroud)

我觉得我在这里错过了一些基本的东西。为什么它无法识别我尝试从中加载的根设备?

这是我正在运行的 uBoot 启动脚本:

setenv bootargs console=ttyO2,115200n8 root=/dev/mmcblk0p2 rw mem=124M earlyprink vram=50M ti816xfb.vram=0:16M,1:16M,2:6M ip=off noinitrd;mmc init;fatload mmc 1 0x80009000 uImage;bootm 0x80009000
Run Code Online (Sandbox Code Playgroud)

小智 5

我看到一些来自 DM816x EVM 的示例 bootarg 行的 rootdelay=2 到 rootdelay=10。由于您的 bootargs 中缺少它,因此从 2 的低端开始可能会很好地查看您是否需要一点时间让 mmc 设备联机。