?1.宿主機(jī)架構(gòu)及開(kāi)發(fā)平臺(tái)選擇
a.? MAC OS
b.? x86架構(gòu)下的Windows并使用軟件Cygwin在Windows 上模擬Linux 的命令行 開(kāi)發(fā)環(huán)境抢韭。
c. x86架構(gòu)下安裝Linux操作系統(tǒng)薪贫,并直接在系統(tǒng)自帶命令行環(huán)境下開(kāi)發(fā)。
?2.目標(biāo)機(jī)架構(gòu)及操作系統(tǒng)
a.? ARM架構(gòu)的開(kāi)發(fā)板(三星的s3c 系列刻恭,ATMEL 的AT91系列等) 運(yùn)行uClinux.? uC/OS-II . RTOS.等操作系統(tǒng)瞧省。
?3.交叉編譯環(huán)境
arm-linux-gcc 或arm-elf-gcc
注:該工具的安裝路徑需要添加到/etc/profile中的PATH環(huán)境變量里。
?4.虛擬目標(biāo)開(kāi)發(fā)板
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.完整開(kāi)發(fā)過(guò)程演示
以?將測(cè)試程序test.c 編譯連接后加載到模擬開(kāi)發(fā)板上運(yùn)行的基本步驟:
a. 編譯
$ arm-elf-gcc -o2 -c test.c
//優(yōu)化等級(jí)2鳍贾,生成test.o 目標(biāo)文件
b. 鏈接
$ arm-elf-ld? -e test -Ttest 0x0 test.o -o test
//參數(shù)e后接的文件名代表運(yùn)行時(shí)入口程序(默認(rèn)為main函數(shù));
-Ttest 0x0代表將文件鏈接至內(nèi)存0地址處;
-o 后接鏈接后生成的可執(zhí)行文件test
當(dāng)然鞍匾,也可以使用自定義的鏈接腳本文件
$ 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. 轉(zhuǎn)化
//將test文件轉(zhuǎn)化成目標(biāo)機(jī)器可識(shí)別(可加載到開(kāi)發(fā)板上直接運(yùn)行)的純二進(jìn)制文件
$ arm-elf-objcopy -O binary test test.bin
d. 編寫(xiě)模擬開(kāi)發(fā)板軟件skyeye 的配置文件。
將skyeye.conf 及test.bin放到同一目錄中贾漏,然后在命令行直接運(yùn)行'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
?