uboot下的HelloWorld程序

好幾天沒有繼續linux的學習了,週末忙着買衣服去了,呵呵。linux

 

這個實驗實際上是繼續前面的uboot實驗,可是此次是指定從一個HelloWorld的鏡像啓動。ide

參考網址:http://balau82.wordpress.com/2010/03/10/u-boot-for-arm-on-qemu/wordpress

 

繼續上次的「Qemu下的Hello World程序」。學習

 

1. 在test.ld文件中,啓動地址從「. = 0x10000」改成「. = 0x100000「ui

 

2. 編譯命令get

 

arm-linux-uclibcgnueabi-gcc -c -mcpu=arm926ej-s test.c -o test.o
arm-linux-uclibcgnueabi-ld -T test.ld -Map=test.map test.o startup.o -o test.elf
arm-linux-uclibcgnueabi-objcopy -O binary test.elf test.binflash

 

3. 產生鏡像命令it

mkimage -A arm -C none -O u-boot -T standalone -d test.bin -a 0x00100000 -e 0x00100000 test.uimg編譯

 

若是沒有mkimage這個包,那須要先安裝這個包。class

 

運行結果以下

 

mkimage -A arm -C none -O u-boot -T standalone -d test.bin -a 0x00100000 -e 0x00100000 test.uimg


Image Name:  
Created:      Tue May 25 17:01:42 2010
Image Type:   ARM U-Boot Standalone Program (uncompressed)
Data Size:    356 Bytes = 0.35 kB = 0.00 MB
Load Address: 0x00100000
Entry Point:  0x00100000

 

4. 產生一個鏡像

 

cat u-boot.bin test.uimg > flash.bin

5. 檢查鏡像的起始地址

printf "bootm 0x%X\n" $(expr $(stat -c%s u-boot.bin) + 65536)

我獲得的結果是,bootm 0x2691C,代表程序的起始地址是0x2691C

6. 使用Qemu啓動鏡像

 

qemu-system-arm -M versatilepb -m 128M -nographic -kernel flash.bin

7. 檢查鏡像的完整性

iminfo 0x2691C

獲得的結果是

VersatilePB # iminfo 0x2691C

## Checking Image at 0002691c ...
   Legacy image found
   Image Name:  
   Image Type:   ARM U-Boot Standalone Program (uncompressed)
   Data Size:    356 Bytes =  0.3 kB
   Load Address: 00100000
   Entry Point:  00100000
   Verifying Checksum ... OK

 

8. 最後,運行鏡像

bootm 0x2691C

相關文章
相關標籤/搜索