一、说明
开发板:使用S3C6410(S3C6410是ARM1176JZFS内核,我手上的是OK6410开发板,不推荐购买,资料还是不太好。)。
至于为什么不用A8,A9等,其原因有二,1是因为这些太贵,性价比不高。2是因为我们学习的是概念,能使用ARM9和ARM11再用A8/A9应该不是问题。
电脑:64位Win8.1系统。
软件:
虚拟机安装RHEL6.3,并安装好VMWare Tools。
Putty(最好选择中文版本的)
SecureCRT
二、开发板启动模式
OK6410开发板上一个8位的拨码开关。定义如下:
可以看出,Nandflash启动和SD卡启动仅需要改动pin7、pin6。这两个脚为低电平就是Nandflash启动,高电平就是SD卡启动。
而我手上的ARM9开发板则是用一个按键来更改启动方式的。按键松开时从NandFlash启动。上电时按下则从SD卡启动。
两种方式各有优缺点。前者留给用户更改的余地更大,可以配置其它的启动方式。而后者操作更加简便。
三、DNW
一般开发板都会给出一个DNW软件。这个软件使用起来还是不错的。可惜的是,它并不支持WIN7,更别提WIN8了。显然我们不会为了使用这个工具再安装一个XP系统,所以我们采用一种方式在Linux下使用这个工具。在ARM-Tools中有dnw和dnw_usb.ko两个文件。
1将这两个文件放在/usr/local/myarm/dnw下
2启动uboot,空格
选择1 Format the nand flash
然后2 Burn image from USB
最后选择1 Flash u-boot
3这时,虚拟机中会多出一个灰色的USB设备-Samsung SEC S3C6400X Test B/D
,将其连接至
linux系统。连接成功,图标颜色会更改。
4剩下的就是安装dnw_usb驱动了。
安装成功后,执行dnw(即在dnw目录下输入./dnw)提示Usage(用法),表示安装成功。
范例用法:./dwn ../led.bin 50008000
四、交叉工具链
① 安装
1.在usr目录下新建目录myarm。将事先准备好的4.3.2交叉工具链放在这个目录下。
2.修改环境变量
vim /root/.bashrc
export PATH=$PATH:/usr/myarm/4.3.2/bin/
Source /root/.bashrc生效环境变量。OK
② 使用
一个c文件变成可执行文件有四步:1. 预编译、 2. 编译生成汇编、3. 汇编生成目标文件、 4. 目标文件连接库文件生成可执行文件。一般来讲,汇编文件.s,目标文件.o,可执行文件.elf。
这部分内容很杂,先了解下,用多了就熟悉了。
常用的交叉工具有:
交叉编译器arm-linux-gcc、交叉链接器arm-linux-ld、交叉ELF文件工具arm-linux-readelf、交叉反汇编器arm-linux-objdump、交叉转换器arm-linux-objcopy。
arm-linux-gcc -g -c led.S生成led.o
arm-linux-ld -Tled.lds -o led.elf led.o,elf是需要生成的可执行文件,led.o是需要的文件,可能会有多个。
arm-linux-readelf -a led.elf,查看文件头,得到程序有用信息。使用file也可以查看。
arm-linux-readelf -d led.elf,查看需要的库
arm-linux-objdump -D -S hello > dump
vi dump
arm-linux-gcc -g hello.c -o hello
arm-linux-objdump -D -S hello > dump
vi dump
arm-linxu-objcopy -O binary led.elf led.bin
2015.5.18