1.宿主机架构及开发平台选择
a. MAC OS
b. x86架构下的Windows并使用软件Cygwin在Windows 上模拟Linux 的命令行 开发环境。
c. x86架构下安装Linux操作系统,并直接在系统自带命令行环境下开发。
2.目标机架构及操作系统
a. ARM架构的开发板(三星的s3c 系列,ATMEL 的AT91系列等) 运行uClinux. uC/OS-II . RTOS.等操作系统。
3.交叉编译环境
arm-linux-gcc 或arm-elf-gcc
注:该工具的安装路径需要添加到/etc/profile中的PATH环境变量里。
4.虚拟目标开发板
a. SkyEye
安装步骤:
$tar jxvf skyeye.1.2.6_rcl.tar.bz2
$cd skyeye.1.2.6_rcl
$./configure
$make
$su
#make install
b. QEMU
5.完整开发过程演示
以将测试程序test.c 编译连接后加载到模拟开发板上运行的基本步骤:
a. 编译
$ arm-elf-gcc -o2 -c test.c
//优化等级2,生成test.o 目标文件
b. 链接
$ arm-elf-ld -e test -Ttest 0x0 test.o -o test
//参数e后接的文件名代表运行时入口程序(默认为main函数);
-Ttest 0x0代表将文件链接至内存0地址处;
-o 后接链接后生成的可执行文件test
当然,也可以使用自定义的链接脚本文件
$ arm-elf-ld -T test.lds test.o -o test
$ vim test.lds
****************************************
ENTRY(test)
SECTIONS
{
. = 0x00000000;
.text : {
*(.text )
}
. = ALIGN(32);
.data : {
*(.data )
}
. = ALIGN(32);
.bbs : {
*(.bbs )
}
}
****************************************
c. 转化
//将test文件转化成目标机器可识别(可加载到开发板上直接运行)的纯二进制文件
$ arm-elf-objcopy -O binary test test.bin
d. 编写模拟开发板软件skyeye 的配置文件。
将skyeye.conf 及test.bin放到同一目录中,然后在命令行直接运行'skyeye '命令即可。
$ vim skyeye.conf
****************************************
cpu: arm920t
mach: s3c2410x
#physical memory 注释行
mem_bank: map=M, type=RW, addr=0x00000000, size=0x00800000, file=./test.bin
#all peripherals I/O mapping areas
mem_bank: map=I, type=RW, addr=0x48000000, size=0x20000000
****************************************
$ vim skyeye