哈尔滨理工大学软件工程专业08-7李万鹏原创作品,转载请标明出处
http://blog.csdn.net/woshixingaaa/archive/2011/01/29/6169083.aspx
Uboot笔记
Uboot是德国DENX小组开发用于多种嵌入式CPU(MIPS,X86,ARM,Xscale等)的bootloader程序,Uboot不仅支持嵌入式linux操作系统的引导,还支持VxWorks,QNX等多种嵌入式操作系统。
移植bootloader原因:
1. CPU不同 (芯片级移植)
2. 板级设备不同(板级移植)
Bootloader
Stage1:
初始化硬件设备
为Stage2的代码准备RAM
将Stage2的代码复制到RAM
初始化堆栈(参数传递用)
跳转到Stage2的C程序起始处
Stage2:
初始化硬件
将根文件系统和内核从flash中读到RAM
调用内核
Uboot的目录结构
Board:是和开发板相关的文件
Commom:实现Uboot支持的命令
Cpu:与特定Cpu架构相关的代码
Disk:对磁盘的支持
Doc:文档目录
Drivers:Uboot支持的设备驱动程序都放在该目录
Fs:文件系统的支持
Include:Uboot使用的头文件
Net:与网络协议栈相关的代码
Tools:生成Uboot的工具
常用命令
1.help 查看当前单板所支持的命令
2.printenv 查看环境变量
3.setenv 添加,修改,删除环境变量
eg 添加环境变量 file 值为 123
setenv file 123
修改file 值为 456
setenv file 456
删除 file
setenv file
4.saveenv 保存环境变量 他会将环境变量保存到flash中,否则板子复位后环境变量消失,因为setenv设置的环境变量在SDRAM中,复位,Uboot从flash中读环境变量。
5.tftp 通过网络下载文件
注意:使用tftp,需要先配置好网络
Uboot>setenv ethaddr 12:34:56:78:9A:BC(网卡的地址)
Uboot>setenv ipaddr 192.168.1.1(开发板的ip地址)
Uboot>setenv serverip 192.168.1.254(tftp服务器的地址)
eg Uboot> tftp 32000000 uImage
把server中的uImage通过tftp读入0x32000000处
如果使用串口速度相当慢
6.md(memory display)显示内存区内容
md采用16进制和ASCII码两种形式显示存储单元的内容。这条命令还可以采用长度标识符.l,.w,.b:
md [.b,.w,.l] address
md .w 100000
b 字节型 w 16位 l 32位
7.mm (memory modify)修改内存,地址自动增加
mm[.b.w.l] address
mm提供了一种互动修改内存的方法,他会显示地址和当前的值然后提示用户输入。如果你输入了一个合法的16进制数,这个新的值将被写入该地址。然后提示下一个地址。如果你没有输入任何值,只按了一下回车,那么该地址的内容保持不变。如果想结束输入,则输入空格,然后回车。
8.flinfo 查看Flash扇区信息
Uboot>flinfo
9.protect Flash写保护
打开或关闭扇区写保护
protect off all
关闭所有扇区的写保护
protect on all
打开所有扇区的写保护
protect off start end
关闭从start到end 扇区的写保护
protect on start end
打开从start到end扇区的写保护
start为要擦除的第一个扇区的起始地址,end为要擦除的最后一个扇区的结束地址。
10.erase擦除flash扇区
用法 erase start end
擦除从start到end的扇区,start为要擦除的第一个扇区的起始地址,end为要擦除的最后一个扇区的结束地址。(在使用cp向Nor型Flash写入数据之前必须先使用erase命令擦除flash扇区,因为norflash按字节写入时无法写入1,所以必须通过擦除来写入1)。
11.cp 数据拷贝
cp[.b,.w,.l]saddresss daddress len
cp 提供了一种内存与内存之间,内存与flash之间数据拷贝的方法。
eg: cp.b 31000000 50000 d0000
将内存地址0x31000000处的数据(长度为d0000)拷贝到地址0x50000处(Flash中)
cp.b 32000000 120000 c0000
将内存地址0x32000000处的数据(长度为0xc0000)拷贝到地址0x120000处(Flash中)。
12.go 执行内存中的二进制代码,一个简单的跳转到指定地址
go addr[arg…]
13.bootm执行内存中的二进制代码
bootm [addr[arg…]]
要求二进制代码一定要有文件头。
14.bdinfo 显示开发板的信息
自启动设置
Uboot>setenv bootcmd tftp 31000000 uImage \; bootcmd 31000000 这句可以设置Uboot启动后都干什么
Uboot>saveenv
初识Uboot
最新推荐文章于 2023-04-29 17:40:04 发布