一、说明 开发板:使用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
|