本文主要是介绍嵌入式学习-linux系统-lesson1-Uboot相关,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
一、编译uboot
1.配置
通过makefile,得知自己的开发板的型号
配置uboot :OK6410: make forlinx_nand_ram256_config
2.编译
Make ARCH=arm CROSS_COMPILE=arm-Linux-
然后编译出uboot.bin
3.下载
通过dnw下载uboot.bin
/home/dnw uboot.bin 50000000
二、uboot相关命令
1.帮助命令
尽管UBOOT提供了丰富的命令集,但不同的开发板所支持的命令却不一样(可配置),help 命令可用于察看当前单板所支持的命令。
# help
autoscr -run script from memory
base -print or set address offset
bdinfo -print Board Info structure
bootm -boot application image from memory
2 查看环境变量
printenv:查看环境变量,或者使用 print 也可以
#printenv
使用后会打印出一系列的环境变量,包含但不仅限于下面的环境变量:
ipaddr=192.168.0.1
ethaddr=12:34:56:78:9A:BC
serverip=192.168.1.5
3.修改环境变量
setenv 添加、修改、删除环境变量
setenv name value ...
- add/modify environment variable 'name' to 'value‘
例如修改IP地址
setenv ipaddr 192.168.1.165
删除操作
setenv name
比如删除某个环境变量 serverip
setenv serverip
4.保存环境变量
saveenv
保存环境变量将当前定义的所有变量及其值存入flash中
5.文件下载命令TFTP
uboot中已经开启tftp服务,因此可以通过tftp服务,通过网络将相应的文件下载到板子上。
5.1 板子设置
板子上需要将板子的ip和tftp服务器的ip(即虚拟机)的网段一致即可
#setenv ipaddr 218.198.195.131 (板子ip)
#setenv serverip 218.198.195.132 (tftp服务器的地址)
5.2tftp服务器的设置
tftp服务器则需要对其tftp服务进行配置
下面是配置的内容:
#vim /etc/xinetd.d/tftp
重新启动tftp
#/etc/init.d/xinetd restart
注意:
6410的内存地址是50000000,但是从50008000开始的原因是留一点空间
50008000是实际的物理地址,如果mmu没有打开,则使用这个地址,如果打开了。则被映射为c0008000,50000000映射成c0000000
5.3通过tftp下载
通过以上步骤,便完成了tftp的配置,下面便可以通过tftp下载镜像文件了
#tftp 0xc0008000 uImage
把tftp服务器上的uImage下载到0xc0008000处
6 执行程序命令
bootm {addr} {arg}
执行固定格式的2进制程序
#bootm 0xc0008000
此时将从0xc0008000这个位置启动内核
7.查看内存内容
md 显示内存区的内容。
md采用十六进制和ASCII码两种形式来显示存储单元的内容。
这条命令还可以采用长度标识符 .l, .w和.b :
md [.b, .w, .l] address
范例:
md.w 100000
00100000: 2705 1956 5050 4342 6f6f 7420 312e 312e
00100010: 3520 284d 6172 2032 3120 3230 3032 202d
8修改内存内容
mm 修改内存,地址自动递增。
mm [.b, .w, .l] address
mm 提供了一种互动修改存储器内容的方法。它会显示地址和当前值然后提示用户输入。如果你输入了一个合法的十六进制数,这个新的值将会被写入该地址。然后提示下一个地址。如果你没有输入任何值,只是按了一下回车,那么该地址的内容保持不变。如果想结束输入,则输入空格,然后回车。
=> mm 100000
00100000: 27051956 ? 0
00100004: 50504342 ? AABBCCDD
9 擦除nand flash
nand erase 起始地址start 长度len
擦除start处开始的,长度为len的区域
#nand erase 0x400000 0x500000
10写/读nand flash
nand write 内存起始地址 flash起始地址 长度len
将内存起始地址处,长度为len的数据,写入flash起始地址处。
范例:
#nand write c0008000 400000 500000
nand read 内存起始地址 flash起始地址 长度len
将flash起始地址处,长度为len的数据,读到内存起始地址处。
范例:
#nand read c0008000 400000 500000
测试:将c0008000的数据写到400000,然后重启开发板,再将40000的数据读到C0008000里去,再运行 bootm c0008000看是否能够正常运行,测试是否正常读写
三、uboot自启动命令
1设置从nand flash自动启动
#setenv bootcmd nand read c0008000 400000 500000 \; bootm c0008000
2设置自动下载内核到内存后启动
#setenv bootcmd tftp c0008000 uImage \; bootm c0008000
菜鸟一枚,如有错误,多多指教。。。
这篇关于嵌入式学习-linux系统-lesson1-Uboot相关的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!