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

相关推荐
普通网友1 天前
深入探讨Linux驱动开发:字符设备驱动开发与测试_linux 驱动开发设备号(2)
java·linux·驱动开发
martian6651 天前
深入解析C++驱动开发实战:优化高效稳定的驱动应用
开发语言·c++·驱动开发
sukalot1 天前
window显示驱动开发—小型命令列表的优化
驱动开发
电子小子洋酱1 天前
Linux显示设备驱动开发 Drm驱动&&Makefile
linux·驱动开发·笔记
小马过河R1 天前
浅谈AI辅助编码从氛围编程Vibe Coding到基于spec规范驱动开发
人工智能·驱动开发·ai编程
信工 18021 天前
camera驱动系列1-csi总体概述
驱动开发
森焱森1 天前
当八字命理遇上软件开发:一张“流派架构图”+ 实战爬虫指南
驱动开发·爬虫·python·flask·pygame
点灯master2 天前
DAC8562的驱动设计开发
c语言·驱动开发·stm32
小a杰.2 天前
Flutter 测试驱动开发的基本流程
驱动开发·flutter