‌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

图片发自简书App