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

相关推荐
咕噜咕噜万11 小时前
ATDD实践:验收测试驱动开发的完整方法论与工具链
驱动开发
Guistar~~13 小时前
【Linux驱动开发IMX6ULL】WS73 驱动移植的详细教程基于USB协议--WIFi网卡、蓝牙BLE、星闪SLE
linux·驱动开发
比奇堡派星星15 小时前
Linux 杂项设备驱动框架详解
linux·arm开发·驱动开发
chen_mangoo20 小时前
Rockchip debian预置安装deb包
linux·驱动开发·嵌入式硬件
进击大厂的小白20 小时前
65.设备树下platform_device和platform_driver
驱动开发
食咗未21 小时前
Linux iptables工具的使用
linux·运维·服务器·驱动开发·网络协议·信息与通信
DeeplyMind1 天前
第4章: MMU notifier内核实现机制
linux·驱动开发·mmu·mmu notifier
运筹vivo@2 天前
音频基础到ALSA框架
驱动开发·音频
爱跑马的程序员2 天前
UMS9620 展锐平台增加一个虚拟陀螺仪
驱动开发·安卓·传感器·展锐·虚拟陀螺·传感器驱动
被遗忘的旋律.2 天前
Linux驱动开发笔记(二十三)—— regmap
linux·驱动开发·笔记