前言
这里使用的是百问网的STM32MP157开发板,在开发板上电后,一直按空格键进入到U-Boot命令模式。如下
U-Boot常用命令
?
当我们不知道有哪些命令。可以通过?命令查看U-Boot支持的命令
print
可以缩写为pri 功能:打印U-Boot的环境变量
setenv
setenv abc 100 200 (abc=100 200) 功能:设置,添加一个变量值 修改一个变量值 setenv abc :表示删除abc这个变量
如下:
重启后,abc变量会被删除,因为此时abc存储在RAM上。
saveenv
功能:保存设置的U-Boot的环境变量写到存储器中。(重启后不会被删除)
nand
功能:取决于第一个参数的设置 命令:
nand [erase] [nandflash的内部地址] [搬移大小] 擦除nandflash上指定区域的内容(写0)
nand [write] [内存地址] [nandflash的内部地址] [搬移大小] 将内存中的指定地址写到nandflash的指定区域
nand [read] [内存地址] [nandflash的内部地址] [搬移大小] 将nandflash中的指定地址读到内存的指定区域
**注意:写之前,一定要先擦除**
示例:
nand中5M空间读到内存210000000 1K 5M=5x1M=0x500000 nand read 21000000 500000 1024
擦除: nand erase 500000 1024 写:nand 21000000 500000 1024
bootm
内核启动命令,只使用于uImage(uBoot) 命令:
bootm [uImage内存地址]
go命令适用于其他的image,但是需要进行一些操作
内核启动条件
主要是对bootargs变量的值设置。 root=启动的根文件系统在那个设备,设备信息RAM,NFS,Flash init进程 init=内核启动后,第一个可执行文件init进程从哪里来 linuxrc console=内核启动时,使用那个设备作为控制台
tftp搭建及命令使用
U-Boot的网络设置
U-Boot的网络与ipaddr这个变量有关 因此为了使得网络层,我们的PC和开发板能够通信,需要我们的两者的IP地址处于同一个网段中。
这里我的虚拟机的IP地址为 因此这里需要更改开发板的ipaddr(setenv,saveenv) 互ping来验证,但是我们通常用开办版ping外面,因为U-Boot为了精简,没有设置当外面ping自己的时候,不会返回数据包
传输层验证 tftp命令
通过设置serverip来指定客户端的连接(UDP传输协议) 端口port是已经被程序写死了的
命令
tftp [内存地址] [设置tftp下载目录中的文件]
文件系统的烧写
ramdisk(多用于最终产品生成)
randisk:指的是内存磁盘。(将文件系统放在内存中) 内核参数设置 root=/dev/ram initrd=0x21000000,8M(0x21000000表示froot的基地址,8M表示文件系统的大小) init=/linuxrc console=ttySAC0,115200
nfs(多用于开发测试)
服务端: Windows安装nfs:sudo apt-cache search nfs- (进行搜索) 安装上面标红的nfs服务器
配置:
vim /etc/exports
共享那个目录 生效配置文件
sudo /etc/init.d/nfs-kernel-server restart
使用指令进行nfs挂载
mount -t 文件系统类型 -o nolock,vers=版本号 服务器地址:服务器挂载目录 本地挂载目录
启动内核参数(bootargets)
root=/dev/nfs nfsroot=ip:共享目录(ip:serverip) ip=Linux的ip init=linuxrc console=ttySAC0,115200
setenv bootargs root=/dev/nfs nfsroot=192.168.10.110:/home/... ip=192.168.10.222 init=/linuxrc console=ttySAC0,115200
自运行
bootdelay
启动倒计时
bootcmd
倒计时到了以后,执行的命令
|