首先是arm工具鏈,arm工具鏈的編譯我就不寫了,一方面很麻煩,另一方面是這方面的資料網上已經有很多了,我就不在這裡多言浪費大家時間了。我這裡有自己編譯的arm工具鏈,當然,用網上現成的也不是不可以,但是最好是自己熟悉過程,免得必要的時候不會從原始碼配置。我將工具鏈上傳到空間,如果需要,儘管拿去,鏈結位址為,使用說明看資源備註:
配置好上面兩個工具後就可以開發arm2440的裸機程式了,當然移植系統可能還會用到其他牛b的工具,等用到再去研究,如果有幸小弟弄明白了,還會來這裡記錄下來的,下面附上兩個linux下的arm裸機程式及makefile,感覺對我這樣的新手來說還是有幫助的。
例子1:彙編檔案led_on.s,**如下,這裡我想告訴大家的是gnu的彙編跟標準的arm彙編是有出入的,具體的大家可以搜尋「linux arm 彙編」來學習了解,網友給我們提供了足夠豐富的資源。
[html]view plain
copy
.text
.global _start
_start:
ldr r0,=0x56000010
ldr r1,=0x00155555
str r1,[r0]
ldr r0,=0x56000014
mov r1,#0x0
str r1,[r0]
main_loop:
b main_loop
編譯指令如下:
編譯:arm-linux-gcc -g -c -o led_on.o led_on.s
轉換:arm-linux-objcopy -o binary -s led_on.elf led_on.bin
makefile可以這樣寫:
[html]view plain
copy
led_on.bin:led_on.s
arm-linux-gcc -g -c -o led_on.o led_on.s
arm-linux-ld -ttext 0x30000000 -g led_on.o -o led_on_elf
arm-linux-objcopy -o binary -s led_on_elf led_on.bin
clean:
rm -f led_on.bin led_on_elf *.o
例子2:如果使用廠家提供的download and run,還可以編寫純c語言**來操作arm晶元,下面是流水等的**:
[html]view plain
copy
#define gpbcon (*(volatile unsigned *)0x56000010)
#define gpbdat (*(volatile unsigned *)0x56000014)
#define gpbup (*(volatile unsigned *)0x56000018)
#define mpll100mhz 0x0007f022
#define clkdiv2 0x02
#define rmpllcon (*(volatile unsigned *)0x4c000004)
#define rclkdivn (*(volatile unsigned *)0x4c000014)
int main()
; rmpllcon
= mpll100mhz
; rclkdivn
= clkdiv2
; gpbcon
= 0x00155555
; gpbup
= gpbup
& 0xff00;
while(1)
} }
命令列下的編譯流程我就不寫了,直接把makefile貼在這裡吧
[html]view plain
copy
led.bin:led.c
arm-linux-gcc -g -c -o led.o led.c
arm-linux-ld -ttext 0x30000000 -g led.o -o led.elf -e main
arm-linux-objcopy -o binary -s led.elf led.bin
.python:clean
clean:
rm *.o led.elf led.bin
這裡我想提醒一下,純c的makefile與彙編的makefile是有點區別的,由於c的主函式是main,但是arm執行環境並不知道是main,因此需要顯式的指定arm入口函式-e main,其他的就沒什麼可說的了,多檔案編譯可以使用推導,我相信到這裡大家都能自己編寫多檔案的makefile了,我就不多說了,如果有朋友對此有疑問大家一塊討論,共同進步還是好的。
arm裸機程式開發環境簡介
1 開發平台 linux 紅帽企業版6.3 2 開發工具 交叉工具鏈 makefile 鏈結器指令碼 eclipse整合開發環境 3 關於交叉工具鏈 為什麼要用到交叉工具?因為我們在開發arm應用程式時,產生的目標 是要執行在arm指令架構的cpu mcu上的,但是我們的開發工具大多數是執行在基於x...
ARM 裸機 02 ARM裸機開發流程
執行在不同平台上的程式,開發過程不盡相同。為了更好地理解 arm 裸機的開發流程,我們先和比較熟悉的 windows linux 應用程式開發對比。不同平台程式開發流程對比示意 編譯嵌入式程式的平台稱為宿主機,譬如執行 ubuntu 系統的 pc。執行嵌入式程式的平台稱為目標機,譬如 arm 開發板...
ARM裸機開發快速體驗
一。linux平台 自己寫makefile 自己寫lds指令碼 自己搭建除錯環境 二。裸機開發流程 1 編寫裸機程式 2 除錯裸機程式 3 編譯 鏈結 格式轉換成二進位制映像 1.安裝交叉工具鏈 把課程裡面的工具包拷貝到linux,解壓arm linux gcc到根目錄 c 交叉工具在usr loc...