rk3588驱动开发第一章Uboot使用

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 //读取数据

相关推荐
Forsete2 小时前
LINUX驱动开发#9——定时器
linux·驱动开发·单片机
JMchen12310 小时前
AI编程与软件工程的学科融合:构建新一代智能驱动开发方法学
驱动开发·python·软件工程·ai编程
南烟斋..14 小时前
Linux设备驱动开发完全指南:从启动流程到Platform驱动模型
linux·驱动开发·uboot
范纹杉想快点毕业1 天前
实战级ZYNQ中断状态机FIFO设计
java·开发语言·驱动开发·设计模式·架构·mfc
yugi9878381 天前
RN8302B电表芯片驱动开发指南(基于SPI通信)
驱动开发·单片机·嵌入式硬件
2301_772204281 天前
Linux 驱动开发:杂项设备驱动与自动设备号管理
linux·运维·驱动开发
嵌入式-老费1 天前
Linux Camera驱动开发(用树莓派学习camera驱动)
驱动开发
松涛和鸣1 天前
70、IMX6ULL LED驱动实战
linux·数据库·驱动开发·postgresql·sqlserver
L_Jason先生1 天前
高效利用 Coding Agent 进行规约驱动开发 (SDD):原理、实践与未来洞察
人工智能·驱动开发·知识图谱
minglie12 天前
wsl环境下驱动开发的例子
驱动开发