本試驗的執行環境:vmware workstation + redhat 9.0
本實驗需要的檔案:arm-linux-gcc-3.4.1.tar.bz2
arm-linux-gcc-3.3.2.tar.bz2
arm-elf-20040427.tar.bz2
u-boot-1.2.0.tar.bz2
skyeye-1.2.5_rel.tar.gz
skyeye-testsuite-1.2.5.tar.gz
一、安裝交叉編譯器、配置環境
2. 安裝arm-linux-gcc-3.4.1.tar.bz2和arm-elf-20040427.tar.bz2:
# cd /
# tar jxvf arm-linux-gcc-3.4.1.tar.bz2
# ./arm-elf-20040427.tar.bz2
3.設定環境變數: 從新開啟終端,然後執行
# vi .bashrc 新增
export path=$path:/usr/local/arm/3.4.1/bin
4.檢視是否成功安裝
退出控制台,然後從新開啟終端,輸入
# arm-linux-
按下tab鍵,可以看到所有」arm-linux-「打頭的工具。再使用命令」arm-linux-gcc –v」檢視編譯器資訊:
二.安裝skyeye
# mkdir lab3
將skyeye-1.2.5_rel.tar.gz拷貝到lab3中,解壓縮
# tar zxvf skyeye-1.2.5_rel.tar.gz
進入/skyeye-1.2.5_rel編譯並安裝
# ./configure (與skyeye匹配的編譯器是gcc-3.4或者gcc-4.2,如果本虛擬機器預設的不是此版本,則可以寫成:cross_compile = /usr/local/arm/3.4.1/bin/gcc-3.4 ./configure)
# make
# sudo make install
最新的skyeye-testsuite-1.2.5.tar.bz2測試集並解壓縮
4、使用skyeye模擬板子s3c2410執行某個linux
如:進入/skyeye-testsuite-1.2.5/linux/s3c2410/s3c2410x-2.6.14
# cd skyeye-testsuite-1.2.5/linux/s3c2410/s3c2410x-2.6.14
命令:skyeye –c skyeye.conf –e vmlinux
#skyeye –c skyeye.conf –e vmlinux
5、編寫應用程式hello.c
//hello.c
#include
int main(void)
for(int i=0; i<6; i++)
printf(「this is my program!」);
return 0;
使用命令:arm-linux-gcc –static –o hello hello.c
6、將所選擇的測試linux的根檔案系統映像initrd.img載入到某個目錄下:
在/home/redhat/下,執行命令,
# mkdir root
在/skyeye-testsuite-1.2.5/linux/s3c2410/s3c2410x-2.6.14中
# sudo mount –o loop initrd.img /home/redhat/lab3/root/
7、將hello拷貝到根檔案系統中
# sudo cp hello root/bin
# sudo umount root 解除安裝剛剛載入過的root
8、進入skyeye模擬該板子執行應用程式,如:hello
進入/skyeye-testsuite-1.2.5/linux/s3c2410/s3c2410x-2.6.14
# skyeye –c skyeye.conf –e vmlinux 進入skyeye然後查詢並執行hello
# cd bin
# ls
# ./hello
可看到出現」this is my program!」
# skyeye –c skyeye.conf –e vmlinux
三、編譯u-boot
2、因為我們要模擬ep7312晶元,而u-boot已經支援乙個基於ep7312的板子了,所以我們只要對u-boot裡面有關ep7312的板子的配置做修改就可以了。u-boot裡面有關主機板的配置檔案都在include/configs/ep7312.h中,
現在我們要對ep7312修改:
找到#define config_driver_cs8900 1
改為#define config_driver_cs8900 0
找到#define config_commands(config_cmd_dfl | cfg_cmd_jffs2)
改為#define config_commands(config_cmd_dfl)
找到#define config_bootdelay 3
改為#define config_bootdelay -1
3、還要做以下修改:
(1)cpu/arm720t/config.mk
找到# supply options according to compiler version
platform_cppflags += $(call cc-option,-mapcs-32,$(call cc-option,-mabi=apcs-gnu),)
(2)include/asm-arm/processor.h
union debug_insn{
u32 arm;
u16 thumb;
(3) examples/makefile
$(lib):$(obj).depend $(libobjs)
$(ar) $(arflags) $@ $(libobjs)
$(srec):
$(obj)%.srec: $(obj)%.o
$(objcopy) –o srec $< $@ 2>/dev/null
$(bin):
$(obj)%.bin: $(obj)%.o
$(objcopy) –o binary $< $@ 2>/dev/null
4、然後在 u-boot的根目錄下,配置,編譯:
# make ep7312_config
(與u-boot匹配的編譯器是arm-linux-gcc-3.3.2,指定編譯時要在makefile檔案中加入:
cross_compile = /usr/local/arm/3.3.2/bin/arm-linux-即可,arch = arms)
#sudo make all, 結果如下:
經過編譯,如果不出錯,結果中會出現u-boot, u-boot.bin, u-boot.map, u-boot.srec 檔案。
四、用skyeye**u-boot
1、建立乙個目錄,如:/home/redhat/lab3/uboot
並把u-boot, u-boot.bin, u-boot.map, u-boot.srec拷貝到這個目錄,
並在這個目錄建立乙個skyeye.conf檔案,內容如下:
mpu: arm720t
mach: ep7312
mem_bank: map=m, type=rw, addr=0x00000000, size=0x00400000
mem_bank: map=i, type=rw, addr=0x80000000, size=0x00010000
mem_bank: map=m, type=rw, addr=0xc0000000, size=0x00200000
mem_bank: map=m, type=rw, addr=0xc0200000, size=0x00600000
mem_bank: map=m, type=rw, addr=0xc0800000, size=0x00800000
#1cd: type=ep7312, mod=gtk
dbct: state=on
2、然後輸入命令:skyeye –c skyeye.conf –e u-boot, 就能看到u-boot執行結果了。
至此,整個u-boot編譯就完成了。
五、編譯中遇到的問題:
1. 安裝arm-linux-gcc-時,在設定安裝路徑時要注意路徑的正確性,如果設定不正確,使用tab鍵時就不會出現結果。我們可以直接拷貝到根目錄下即可。
2. 在編譯u-boot時,注意u-boot和arm-linux-gcc的版本一致,否則編譯時會出現錯誤,且如果版本不同,可在u-boot的makefile中設定cross_compile的值。
3. 編譯工作是乙個十分繁瑣的過程,因此要認真對待每一步。
u boot編譯分析
在頂層目錄下執行完 make smdk2410 config 命令後,就把u boot給配置好了,接著就可以在執行 make all 或者 make 命令去編譯u boot了,完成後就可以燒寫到開發板去執行了。在makefile中的all目標是第乙個目標,因為makefile將第乙個目標設為預設目標...
uboot編譯體驗
bootloader的最終目的就是啟動核心。u boot 1.1.6.tar.bz2 是未經修改的原始碼,u boot 1.1.6 jz2440.patch 是補丁檔案。執行以下操作即可編譯出 u boot.bin tar xjf u boot 1.1.6.tar.bz2 cd u boot 1.1...
mini210的uboot編譯使用
或者通過git獲取源 倉庫 git clone git git checkout b mini210 linaro 2011.10 stable origin mini210 linaro 2011.10 stable 2.編譯 2.1 從mini210光碟上獲取交叉編譯工具鏈arm linux g...