u-boot的烧写及使用
-
SD启动盘制作
- 将SD卡启动制作工具/sd_fusing拷贝到Linux下
- 将SD卡插入电脑并识别
- 进入sd_fusing执行如下操作
$ make
$ chmod 777 sd_fusing.sh
$ sudo ./sd_fusing.sh /dev/sdb(sdb为sd卡在ubuntu的设备节点)
-
u-boot的烧写
- 运行串口通信程序(putty)
- 关闭开发板电源,将拨码开关SW2调至0110(SD启动模式)后打开电源
- 将刚才做好的SD启动盘插入SD卡插槽
- 重新打开开发板能够看到如下界面
- 设置板子环境变量
# setenv serverip 192.168.1.200 //和ubuntu ip 一直
# setenv ipaddr 192.168.1.100 //板子的ip 不要和windows 和Ubuntu冲突
-
- 将镜像文件/u-boot.bin拷贝到ubuntu的/tftpboot目录下
- 烧写
# tftp 20008000 u-boot.bin
# nand erase 0 100000
# nand write 20008000 0 100000
-
- 关闭开发板电源,将拨码开关SW2调至1000(NAND启动模式)后打开电源可以看到如下界面表示烧写成功
-
通过网络加载内核和文件系统
- 将镜像文件/zImage拷贝到ubuntu的 /tftpboot下
- 将镜像文件/rootfs.tar.bz2拷贝到ubuntu的 /source下并解压
- 修改虚拟机nfs配置文件/etc/exports,添加如下内容并重启nfs服务
source/rootfs *(rw,sync,no_subtree_check,no_root_squash)
-
- 重新驱动nfs服务
$ sudo /etc/init.d/nfs-kernel-server restart
-
- 设置启动参数
# setenv bootcmd tftp 20008000 zImage\; go 20008000
#setenvbootargs root=nfs nfsroot=192.168.1.100:/source/rootfs ip=192.168.1.200 init=/linuxrc console=ttySAC0,115200
# saveenv
-
- 启动开发板看到如下现象表示成功通过网络挂载:
-
u-boot其他命令
- u-boot支持的命令我们可以通过在终端上输入”?”查看
-
交叉编译和交叉调试
- 编辑程序源码myapp.c(自己写一个简单的c程序)
- 交叉编译后复制到/source/rootfs (编译时添加选项-g)
# arm-cortex_a8-linux-gnueabi-gcc myapp.c –o myapp -g
-
- 复制gdbserver到/source/rootfs (gdbserver在工具链安装路径下查找)
- 在开发板上如下运行
# gdbserver 192.168.1.200:1234 myapp &
-
- 在主机上运行交叉调试器
$ arm-cortex_a8-linux-gnueabi-gdb myapp
-
- 在交叉调试器下和开发板gdbserver建立连接
(gdb) target remote 192.168.1.200:1234
设置断点,输入命令c开始调试程序(注意观察串口输出)