使用skyeye編譯u boot

2021-04-29 00:22:18 字數 4610 閱讀 1593

本試驗的執行環境: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...