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

相关推荐
sukalot20 小时前
windows网络适配器驱动开发-为多个 Windows 版本生成 WiFiCx 驱动程序
windows·驱动开发
TE-茶叶蛋2 天前
Spec-Driven Development(规范驱动开发)
驱动开发
云栖梦泽3 天前
Camera驱动开发与应用开发中的零拷贝与DMA
linux·驱动开发·嵌入式硬件
脱胎换骨-军哥3 天前
C++ 嵌入式编程实例:从寄存器操作到底层驱动开发
开发语言·c++·驱动开发
智者知已应修善业3 天前
【使用D触发器74HC175实现0001 0011 0111 1111 1110 1100 1000的循环彩灯电路。】2025-4-28
驱动开发·经验分享·笔记·硬件架构·硬件工程
新元代码4 天前
SDD+TDD 双驱动开发模式实战指南
驱动开发
mk0154 天前
20V输入,12V 3A输出 效率96%DCDC降压芯片
驱动开发·单片机·硬件工程·智能硬件·pcb工艺
mounter6255 天前
跨越鸿沟:从内核驱动开发到超大规模云端生产环境的思考
linux·驱动开发·linux kernel·kernel
Saniffer_SH5 天前
NAND技术(二):从 Channel、Die/LUN、P/E Cycle 到 LDPC,一次讲透 NAND 里那些最容易误解的概念
人工智能·驱动开发·嵌入式硬件·测试工具·fpga开发·计算机外设·压力测试
2401_854151556 天前
嵌入式传感器驱动开发深度解析——从 I2C/SPI 驱动到数据融合算法
驱动开发·算法