embedded-linux - uboot中的fatload mmc和bootm是什么意思?
问题描述
我无法理解这些命令,例如
fatload mmc 0 0x3000000 uImage
fatload mmc 0 0x2A00000 devicetree.dtb
bootm 0x3000000 - 0x2A00000
#fatload mmc 0 0x3000000 uImage
. 它在做什么?是否将uImage加载为胖分区并加载到RAM地址0x3000000?
bootm 0x3000000 - 0x2A00000
- ?这是否意味着从 RAM 地址 0x3000000 引导到 0x2A00000?
解决方案
U-Boot 运行放置在(处理器的)RAM 中的代码,尽管它也可以从其他媒体读取数据。引导过程通常分两步进行:
- 将操作系统映像从媒体(以太网、闪存、USB、MMC)读入 RAM
- 跳转到 RAM 中图像的第一条指令
uImage
是(很可能是 Linux)内核。
xxx.dtb
是编译形式的设备树。它包含硬件信息,因此可以将信息与内核分开保存。
现在,要从 FAT 格式的 MMC 卡中读取图像,命令是:
fatload mmc <dev>[:partition] <loadAddress> <bootfilename>
因此,这 2 个fatload
命令正在将 MMC 卡中的 2 个文件加载到处理器的内存/RAM 中。
现在,关于bootm
: 此命令启动内核映像运行。语法是:
bootm <address of kernel> <address of ramdisk> <address of dtb>
如果内核被配置在不需要它/它们的地方,则可以省略ramdisk
和/或的地址。dtb
在您的情况下,您没有使用中间ramdisk
的破折号-
。
推荐阅读
- sql - SQL 查询选择小于或等于现有列的 (max - min) 的行
- excel - VBA 循环和 DateDiff
- c++ - 在qt(c ++)上放置实时(非静态)
- python - Pandas 方法跨具有相同索引的多个列应用函数?
- google-apps-script - 如何在谷歌工作表上创建三个独立的表
- c# - 在 winforms 中显示 OpenTk.GLControl
- r - 错误变量长度不同 ggsurvplot_facet
- css - 如何对齐 Wagtail 电子邮件表单上的字段
- amazon-web-services - 一个 SQS 轮询器可以处理多个 SQS 队列并对其进行优先级排序吗?
- java - Intellij 无法识别 java 8 maven 项目自动模块名称