嵌入式软件层次
1.Bootloader
2.Linux内核
3.文件系统
编译U-Boot
1.解压uboot
tar zxvf uboot.tar.gz
2.清除uboot
make distclean
3.配置uboot
make mini2440_config
4.编译uboot
ARCH指定处理器架构,CROSS_COMPLIE指明交叉工具链
make ARCH=arm CROSS_COMPLIE=arm-linux-
5.下载uboot
./dnw u-boot.bin 30000000
uboot命令
1.help:帮助命令
示例:
help 显示所有uboot支持的命令
2.printenv(print):查看环境变量
示例:
printenv(print) 显示所有环境变量
printenv(print) 环境变量名 显示指定的环境变量
3.setenv:添加、修改和删除环境变量
示例:
setenv new_name new_value 添加环境变量
setenv old_name new_value 修改环境变量
setenv old_name 删除环境变量
4.saveenv:保存环境变量
示例:
saveenv 保存所有环境变量到闪存
5.tftp:文件下载
示例:
setenv ethaddr 12:34:56:78:9A:BC 设置网卡地址
setenv ipaddr 192.168.1.230 设置开发板IP地址
setenv serverip 192.168.1.100 设置服务器IP地址
saveenv 保存环境变量
ping 192.168.1.100 测试是否能ping通tftp服务器
tftp 0x31000000 uImage 下载uImage到开发板的0x31000000位置
配置tftp服务器
vim /etc/xinetd.d/tftp 设置server_args=tftp服务器目录,disable=no
/etc/inid.d/xinetd restart 启动tftp服务器
netstat –a | grep tftp 查看tftp服务是否启动
6.bootm:执行程序
执行固定格式的2进制程序,固定格式是指加了相关信息头部的可执行程序。
示例:
bootm 0x31000000
7.md:内存查看
md采用十六进制和ASCII码两种形式来显示存储单元的内容。这条命令可以加长度标示符.b,.w和.l。
示例:
md 0x30000000 以十六进制显示内存数据
md.b 0x30000000 以字节进制显示内存数据
8.mm:内存修改
mm提供了一种互动修改内存数据的方法。它会显示地址和当前值,然后提示用户输入。如果输入了一个合法的十六进制数,那么这个新的值将会被写入该地址,然后提示输入下一个地址。如果没有输入任何值,只是按了一下回车,那么该地址的内容保存不变。如果想要结束输入,那么按空格后,再按回车。
mm 0x30000000 以十六进制修改内存数据
9.nand erase:擦除闪存
nand erase 闪存起始地址 擦除长度
示例:
nand erase 0x400000 0x500000 从闪存的4M位置处擦除5M大小的区域
10.nand write:写入闪存
nand write 内存起始地址 闪存起始地址 写入长度
示例:
nand write 0x31000000 0x400000 0x500000 把内存31000000位置写入5M到闪存4M位置
11.nand read:读取闪存
nand read 内存起始地址 闪存起始地址 读取长度
示例:
nand read 0x31000000 0x400000 0x500000 把闪存4M位置读取5M到内存31000000位置
12.设置自动启动
12.1.设置从闪存自动下载到内存,然后启动
示例:
setenv bootcmd nand read 31000000 400000 500000 ; bootm 31000000
saveenv
12.2.设置从网络自动下载到内存,然后启动
setenv bootcmd tftp 31000000 uImage ; bootm 31000000
saveenv
注意:多条命令用;隔开,并且两边都要有空格
设置uboot启动Linux内核
1.查看环境变量
2.修改环境变量
setenv ethaddr 12:34:56:78:9A:BC
setenv ipaddr 192.168.1.230
setenv serverip 192.168.1.100
saveenv
3.测试网络连接
ping 192.168.1.100
4.网络下载内核
tftp 0x30008000 uImage
5.内核写入闪存
nand write 30008000 400000 500000
6.设置自动启动
setenv bootcmd nand read 30008000 400000 500000 ; bootm 30008000
saveenv