烧写u-boot、kernel、fs到开发板
一、前期准备配置
DNW配置:
设置波特率(115200)和端口号
设置设置USB下载地址(0xd0020010、0x23e00000)
安装USB驱动:
1)首先将J2开关拨至SD-BOOT处,打开串口工具,设置好参数,然后开发板上电,提示安装USB下载驱动,这里注意不要选择自动安装软件,而是要选择选择从列表或指定位置安装,然后点击下一步;
2)选择搜索位置包括这个位置,然后点击浏览;
3)找到光盘里工具软件文件夹的“USB driver”,然后点击确定,然后下一步;直至USB驱动安装完成。
交叉编译工具的安装:很简单,先解压后添加到PATH
NFS和TFTP服务器的安装和配置:http://www.cnblogs.com/klcf0220/articles/3099040.html
然后启动TFTP、NFS
注意: ubuntu 的 network manager, 如果开发板和开发环境的PC直连的话, 每次开发板哪掉电,开发环境PC会检测为网络未链接,nm 就会将已经设置好的网卡 down 掉。这在开发板reset的时候特别讨厌,你得每次都重新去设置PC的IP地址。因此我将桌面右上角的network manager的 Enable Networking 设置为 不选中,禁止 network manager 去管理网络。然后在终端里通过下面的命令,将网卡设置为 192.168.0.22(当然要跟你开发板的ip地址在同一个网段),输入命令:ifconfig eth0 192.168.0.22 ,这样每次开发板reset就不用再设置开发环境PC的IP了(此方法我试了不行,不过可以试试)。当然,如果你的开发板和开发环境PC都是链接到路由器或者HUB,就没有这个烦恼。
二、用TFTP网络
1、通过setenv 命令设置相关参数
# setenv baudrate 115200
# setenv bootdelay 3
# setenv ethact dm9000
# setenv ipaddr 192.168.1.11
# setenv serverip 192.168.1.22
# setenv gatewayip 192.168.1.1
# saveenv
2、 烧写u-boot
# tftp 0x40000000 u-boot-7-ok.bin
# nand erase 0x0 0x600000
# nand write 0x40000000 0x0 0x600000
nand boot启动方式启动,重启开发板;
3、烧写kernel
# tftp 0x40000000 uImage-7-ok
# nand erase 0x600000 0x500000
# nand write 0x40000000 0x600000 0x500000
# setenv bootcmd nand read 0x30008000 0x600000 0x500000 \;bootm 0x30008000
# saveenv
重新启动开发板。
4、 烧写fs
# tftp 0x40000000 gec-qt4-rootfs-7.img
# nand erase 0xe00000 0xf200000 //擦除可以擦大点
# nand write.yaffs 0x40000000 0xe00000 0xxxxx(根据下载大小确定)
重新启动开发板即可。
三、用超级终端
loadb 0x4000000
然后发送文件
nand erase ... ...
nand write ... ... ...
步骤跟TFTP下载相同。
四、用Fastboot (推荐)
- 前期准备先完成,即先安装好USB驱动,这里选择从列表或指定位置安装,浏览选择到gec_android_driver文件夹,点击确定。“USB:OK”,表示驱动OK,USB线已经正常跟板子连接。然后打开DNW,设置好相关参数,download adress设置为:0xd0020010,选择“connect”;
- 选择Transmit”,先下载gec210_usb.bin,文件下载后,DNW标题栏的USB状态会有“USB:0K”变为“USB:X”,然后再迅速变回“USB:OK”,即表示gec210_usb.bin下载成功,这时210的相关寄存器初始化完毕。然后设置DNW参数,Download adress修改为0x23e00000。
- 接下来我们就可以下载u-boot文件,点击USB Port > Transmit;选择images中Linux_image文件下的u-boot-7-ok.bin文件,此时只是下载到内存中,接下来就用fastboot固化;
- 格式化nand flash,输入nand scrub ,输入y,然后Enter。NADN FLASH格式化完毕。
说明:在固化程序到flash之前,我们需要先将flash格式化,否则在进入文件系统的时候会进行ECC校验,等待时间较长。
- 在串口终端输入“fastboot”,然后按下回车键“Enter”;
- 在windows点击开始,选择“运行”,然后输入“cmd”,按回车;
- 进入到fastboot文件夹,然后输入“fastboot devices”,查询当前设备;然后输入下列执行如下烧写指令,烧写系统的uboot和内核及文件系统;
fastboot flash uboot f:\GEC_IOT_SYS\linux_image\u-boot-7-ok.bin fastboot flash kernel f:\GEC_IOT_SYS\linux_image\uImage-7-ok fastboot flash root f:\GEC_IOT_SYS\linux_image\gec-qt4-rootfs.img
系统更新之后,关掉电源,将启动方式选择为nand(S4),重新上电开发板,设置系统启动的参数:
- 串口终端输入:# setenv bootcmd nand read 0x30008000 0x600000 0x500000 \;bootm 0x30008000
- 串口终端输入:#setenv bootargs root=/dev/mtdblock4 init=/linuxrc console=ttySAC0,115200 rootfstype=yaffs rw
- 串口终端输入saveenv ,保存环境变量。至此,Linux系统镜像固化或者更新完毕。
- 重启开发板,进入Linux系统。
五、搭建交叉编译开发平台
PC端:
vim hello.c
void (*printf)(char *,...)=0xc3e1520c; int main() { printf("############## gec210!###############\n"); return 0; }
vim Makefile
all:hello.bin clean hello.bin:hello.o arm-linux-ld -Ttext=0x40000000 hello.o -o hello.elf arm-linux-objcopy -O binary -S hello.elf hello.bin hello.o:hello.c arm-linux-gcc -c -nostdlib hello.c -o hello.o clean: cp ./*.bin /tftpboot rm -rf ./*.elf ./*.bin ./*.o
vim start.S
.text .global _start _start: b ResetHandler ResetHandler: ldr r0,=fmt mov lr,pc ldr pc,printf printf: .word 0xc3e1520c fmt: .asciz "############ welcome to gec210 ############\n" .end
开发板端:
1、烧写新的u-boot.bin
2、重启开发板后,执行如下配置
# setenv bootcmd tftp 40000000 xx.bin \;go 40000000
# saveenv
3、重启开发板,可以看到实验结果。
参考链接:http://www.arm9home.net/read.php?tid-27737.html
资料下载:http://download.csdn.net/detail/klcf0220/5813123
http://www.kuaipan.cn/file/id_43409466388906195.htm