uboot移植基础知识
1.U-Boot的核心功能
1.1 硬件初始化:
- 初始化 SDRAM(同步动态随机存取内存)/DDR(双倍速率同步动态随机存储器):为后续加载内核提供运行内存。
1.2 引导加载:
- 从外部存储设备(如 eMMC, SD卡, NAND/NOR Flash, 网络等)加载 Linux 内核镜像(zImage 或
uImage)。 - 加载设备树文件(.dtb)。
- 将控制权移交给加载的内核。
2.U-Boot的常用命令
获取帮助
help 或 ?: 列出当前支持的所有命令。?
或 help : 查看特定命令 的详细用法。 信息查看
bdinfo: 查看板级硬件信息(如内存地址、大小、时钟频率等)。printenv: 打印所有环境变量及其值。
version: 显示当前 U-Boot 的版本号和编译时间。
环境变量操作命令
setenv [value]:设置环境变量 的值为 [value]。如果省略 [value],则删除该环境变量。例:setenv myvar hello (设置), setenv myvar (删除)。saveenv: 将当前内存中的环境变量保存到持久化存储(如 Flash)中,使修改在重启后生效。
内存操作命令
md[.b, .w, .l][# of objects]: 以字节(.b)/字(.w)/长字(.l)格式显示从地址 开始的 [# of objects] 个内存单元内容。默认是.l。 nm[.b, .w, .l]
: 修改指定地址 的内存值(交互式修改单个单元)。 mm[.b, .w, .l]
: 连续修改从地址 开始的内存值(交互式,地址自动递增)。 mw[.b, .w, .l]
[# of objects]: 用 填充从地址 开始的 [# of objects] 个内存单元。 cp[.b, .w, .l]
: 将 count 个数据单元从源地址 source 拷贝到目标地址 target。 cmp[.b, .w, .l]
: 比较两段内存(从 addr1 和 addr2 开始,长度 count 个单元)是否相等。 网络命令 (使用前必须配置网络环境变量)
设置网络参数:setenv ipaddr <board_ip> // 开发板 IP 地址 (例: 192.168.1.50) setenv ethaddr <board_mac> // 开发板 MAC 地址 (例: 00:04:9f:04:d2:35) setenv gatewayip <gateway_ip> // 网关 IP 地址 (例: 192.168.1.1) setenv netmask <subnet_mask> // 子网掩码 (例: 255.255.255.0) setenv serverip <host_ip> // 服务器(主机/TFTP/NFS 服务器)IP 地址 (例: 192.168.1.250) saveenv // 保存配置
ping <host_ip>: 测试与主机 <host_ip> 的网络连通性。
dhcp: 通过 DHCP 协议自动从路由器获取 IP 地址等网络配置(需连接支持 DHCP 的网络)。
nfs <load_addr> <host_ip>:<path_to_file>: 通过 NFS 协议将主机上的文件加载到开发板内存的 <load_addr> 地址。
tftp <load_addr>
: 通过 TFTP 协议将文件从 TFTP 服务器下载到开发板内存的 <load_addr> 地址。(最常用) MMC/SD 卡操作命令
mmc list: 列出当前所有可用的 MMC/SD 设备 (如 mmc0, mmc1)。mmc dev [dev] [part]: 切换当前 MMC 设备到 [dev] 号设备,并选择分区号 [part]。mmc dev 0 切换到第一个设备。
mmc info: 显示当前选中的 MMC 设备信息。
mmc part: 列出当前 MMC 设备的所有分区。
mmc read
<blk#> : 从当前 MMC 设备 的扇区号 <blk#> 开始,读取 个扇区数据到内存地址 。 mmc write
<blk#> : 将内存地址 起始的数据(共 个扇区)写入当前 MMC 设备 的扇区号 <blk#> 开始的位置 (谨慎使用!)。 mmc rescan: 重新扫描 MMC/SD 设备(如插拔卡后)。
mmc partconf ...: 配置指定 MMC 设备的分区访问 (较高级,通常用默认)。
文件系统操作命令 (用于访问存储设备上的分区)
FAT 格式:fatinfo <interface> [<dev[:part]>]: 显示指定设备分区上的 FAT 文件系统信息。(例: fatinfo mmc 0:1) fatls <interface> [<dev[:part]>] [directory]: 列出 FAT 分区中的文件和目录。 fstype <interface> <dev[:part]>: 识别设备分区的文件系统类型。 fatload <interface> [<dev[:part]>] <addr> <filename> [bytes]: 将 FAT 分区中的文件 <filename> 加载到内存地址 <addr>。可指定加载字节数 [bytes]。
EXT2/3/4 格式:
ext2load / ext4load: 功能类似 fatload,用于加载 ext 文件系统中的文件。(命令格式类似,通常为 ext[2|4]load <interface> <dev[:part]> <addr> <filename>) ext2ls / ext4ls: 功能类似 fatls,用于列出 ext 文件系统中的文件和目录。
本文系作者 @kelixier 原创发布在天策卫的个人技术博客站点。未经许可,禁止转载。
暂无评论数据