Linux下arm裸機開發環境搭建與例項

2021-06-21 10:32:55 字數 2454 閱讀 4856

首先是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...