早就飽受沒有開發板之苦而沒有涉入這個領域,偶然間發現了skyeye這個開源項目,瞭解了下可以模擬嵌入式開發環境。他可以模擬多種主流嵌入式處理器 ARM7, ARM9, ARM10 等,與uclinux 就可以擁有一個交叉編譯的環境。
查了下資料,轉載一位老兄的帖子。
一、uClinux編譯環境的配置和編譯
1、下載arm-elf-tools和uClinux
http://www.uclinux.org/pub/uClinux/arm-elf-tools/arm-elf-tools-20030314.sh
http://www.uclinux.org/pub/uClinux/dist/uClinux-dist-20030305.tar.gz
2、安裝
(1)先切換到root:
sudo -s -H
(2)安裝arm-elf-tools:
export _POSIX2_VERSION=199209
sudo cp arm-elf-tools-20030314.sh / 必須要是根目錄,我安裝的這步發生了錯誤,用了下面這條命令。
sudo tail -n +'43' arm-elf-tools-20030314.sh | gunzip | tar xvf -
(3)uClinux配置並編譯:
更新軟件包信息:
apt-get update
安裝一些必備軟件包:
apt-get install ncurses-dev
apt-get install tcl
apt-get install tk
解壓 uClinux
tar zxvf uClinux-dist-20030305.tar.gz
切換到uClinux的解壓目錄,運行下以下命令之一進行配置:
make menuconfig 或 make xconfig
編譯:
make dep
make
make image
在images目錄下生成romfs.img,linux.data,
說明:
apt-get update 爲可選命令,作用是更新軟件包信息,如果執行apt-get install命令出錯,那必須先執行這個命令。
ncurses 爲make menuconfig 時所需的安裝包
tcl 和tk 爲make xconfig所需的安裝包
make menuconfig 和make xconfig爲用菜單方式或圖形界面方式配置uClinux,如何配置可以參考網上的其它資料,因爲是用skyey仿真,所以只要將Vendor/Product選爲GDB/ARMulator,其它的可用默認選項,當然在實際的配置和裁減中還是有許多其它選項要改的。
二、skyeye的安裝
在ubuntu下安裝skyeye相當簡單,只要執行以下命令:
apt-get install skyeye
如果出錯先執行apt-get update
三、用skyeye仿真uClinux
1、先寫一個測試程序,保存爲hello.c:
//---------------------------------hello.c----------------------------------------------------
#include <stdio.h>
int main(void)
{
printf("hello,world/n");
return 0;
}
//-----------------------------------------------------------------------------------------------
編譯生成flat文件格式的可執行文件hello:
arm-elf-gcc -Wl,-elf2flt -o hello hello.c
2、製作romfs.img
在編譯uClinux時已經生成了romfs.img,但是我們要將我們的hello程序加入romfs中,可以按下面步驟來做(以下假設當前目錄爲uClinux所在目錄):
(1)首先,掛載romfs.img
切換到uClinux目錄下的images目錄並建一個romfs目錄:
cd images
mkdir romfs
創建掛載點:
mkdir /mnt/romfs
掛載:
mount -o loop romfs.img /mnt/romfs
生成的 hello ,flat 格式的可執行文件要拷入 /images/romfs/bin/中,才能在uclinux 中看見
(2)製作romfs.img
將/mnt/romfs目錄下的所有文件拷貝到images/romfs目錄下:
cp -r /mnt/romfs/* romfs
製作新的romfs.img
genromfs -f romfs.img -d romfs
3、skyeye仿真
(1)先寫一個config文件skyeye.conf,保存到images目錄下,以下爲全部內容:
cpu: arm7tdmi
mach: at91
mem_bank: map=M, type=RW, addr=0x00000000, size=0x00004000
mem_bank: map=M, type=RW, addr=0x01000000, size=0x00400000
mem_bank: map=M, type=R, addr=0x01400000, size=0x00400000, file=./romfs.img
mem_bank: map=M, type=RW, addr=0x02000000, size=0x00400000
mem_bank: map=M, type=RW, addr=0x02400000, size=0x00008000
mem_bank: map=M, type=RW, addr=0x04000000, size=0x00400000
mem_bank: map=I, type=RW, addr=0xf0000000, size=0x10000000
(2)仿真
轉到images目錄,執行以下命令:
skyeye -e ../linux-2.4.x/linux
熟悉的界面出現了,cd 到bin目錄,執行以下命令
./hello
出現了經典的hello,world