1.1 Uboot简介
芯片上电后需要运行bootloader程序
bld 初始化DDR等外设 将linux内核从flash 拷贝到DDR中 然后启动linux
uboot 是一个逻辑代码 可以看做为一个综合的裸机例程
有半导体厂商提供给芯片厂商运维
uboot 使用将板子的UART和电脑连接 设置波特率为1500000 复位后ctrl+c 进入(这是瑞星微特有的)
1.2 常用命令
查看板子信息
bdinfo
输出环境变量信息
printenv
查看 uboot 的版本号
1.2.1修改环境变量
setenv bootdelay 5
saveenv
修改 启动演示
新建环境变量
setenv author 'alientek'
saveenv
删除环境变量 变量给空值就删除了
setenv author
saveenv
1.2.3 内存操作
1、md 命令
md 命令用于显示内存值,格式如下:
md[.b, .w, .l] address [# of objects]
b 8b
w 16b
l 32 b
2、nm 命令
nm 命令用于修改指定地址的内存值,命令格式如下:
nm [.b, .w, .l] address
修改方法
nm.l 8300000
nm.l 8300000
08300000: edfe0dd0 ? 0x12345678
edfe0dd0 为之前的内容 0x12345678为之后的内容
08300000: 12345678 ? q 按q保存
3、mm 命令也是修改指定地址内存值的
=> mm.l 8300000
08300000: 12345678 ? 05050505
08300004: 61640400 ? 05050505
08300008: 38000000 ? 05050505
0830000c: 60090400 ? q
每次修改后地址递增 q保存
4、mw 命令
命令 mw 用于使用一个指定的数据填充一段内存,命令格式如下:
mw [.b, .w, .l] address value [count]
mw.l 8300000 0A0A0A0A 10
5、cp 命令
cp 是数据拷贝命令,用于将 DRAM 中的数据从一段内存拷贝到另一段内存中,或者把
NorFlash 中的数据拷贝到 DRAM 中。命令格式如下:
cp [.b, .w, .l] source target count
cp 命令同样以.b、.w 和.l 来指定操作格式,source 为源地址,target 为目的地址,count 为
拷贝的长度。我们使用.l 格式将 0x08300000 处的地址拷贝到 0x08300100 处,长度为 0x10 个
内存块(0x10 * 4=64 个字节),命令如下所示:
cp.l 8300000 8300100 10
6、cmp 命令
cmp 是比较命令,用于比较两段内存的数据是否相等,命令格式如下:
cmp [.b, .w, .l] addr1 addr2 count
cmp 命令同样以.b、.w 和.l 来指定操作格式,addr1 为第一段内存首地址,addr2 为第二段
内存首地址,count 为要比较的长度。我们使用.l 格式来比较 0x08300000 和 0x08300100 这两
个地址数据是否相等,比较长度为 0x10 个内存块(16 * 4=64 个字节),命令如下所示:
cmp.l 8300000 8300100 10
1.2.4网络操作命令
setenv ipaddr 192.168.6.38
setenv ethaddr b8:ae:1d:01:01:00 //有的 uboot 会默认设置 ethaddr,然后禁止修改,RK3588
是禁止修改的,所以这个我们可以不用设置
setenv gatewayip 192.168.6.1
setenv netmask 255.255.255.0
setenv serverip 192.168.6.227
saveenv
1、ping 命令
开发板的网络能否使用,是否可以和服务器(Ubuntu 主机)进行通信,通过 ping 命令就可
以验证,直接 ping 服务器的 IP 地址即可,比如我的服务器 IP 地址为 192.168.6.227,命令如
下:
ping 192.168.6.227
2、dhcp 命令
dhcp 用于从路由器获取 IP 地址,前提是开发板得连接到路由器上的,如果开发板是和电
脑直连的,那么 dhcp 命令就会失效。直接输入 dhcp 命令即可通过路由器获取到 IP 地址,
3、nfs 命令
nfs(Network File System)网络文件系统,通过 nfs 可以在计算机之间通过网络来分享资
源
1.2.5EMMC 和 SD 卡操作命令
1、mmc info 命令
2、mmc rescan 命令
mmc rescan 命令用于扫描当前开发板上所有的 MMC 设备,包括 EMMC 和 SD 卡,输入
"mmc rescan"即可
3、mmc list 命令
mmc list 命令用于来查看当前开发板一共有几个 MMC 设备,输入"mmc list"
4、mmc dev 命令
mmc dev 命令用于切换当前 MMC 设备,命令格式如下:
mmc dev [dev] [part]
dev\]用来设置要切换的 MMC 设备号,\[part\]是分区号,如果不写分区号的话默认为分区 0。使用如下命令切换到 SD 卡(请插上你的 SD 卡,如果你有的话): mmc dev 1 //切换到 SD 卡,0 为 EMMC,1 为 SD 卡 5、mmc part 命令 有时候 SD 卡或者 EMMC 会有多个分区,可以使用命令"mmc part"来查看其分区,比 如查看 EMMC 的分区情况,输入如下命令: 6、mmc read 命令 mmc read 命令用于读取 mmc 设备的数据,命令格式如下: 6、mmc read addr blk# cnt addr 是数据读取到 DRAM 中的地址,blk 是要读取的块起始地址(十六进制),一个块是 512 字节,这里的块和扇区是一个意思,在 MMC 设备中我们通常说扇区,cnt 是要读取的块 数量(十六进制)。比如从 EMMC 的第 1024(0x400)个块开始,读取 16(0x10)个块的数据到 DRAM 的 0XC0000000 地址处,命令如下: mmc dev 0 //切换到 EMMC mmc read 8300000 400 10 //读取数据