折騰了很長時間,總算是弄明白怎麼在linux編譯運行arm裸機程序了。編譯運行arm裸機程序可以考慮用arm工具鏈搭建編譯環境,由minicom和dnw來下載程序,至於調試,還沒有去耐心研究,著急來這裡先備份一下,免得時間久了,忘記怎麼回事。
首先是arm工具鏈,arm工具鏈的編譯我就不寫了,一方面很麻煩,另一方面是這方面的資料網上已經有很多了,我就不在這裡多言浪費大家時間了。我這裡有自己編譯的arm工具鏈,當然,用網上現成的也不是不可以,但是最好是自己熟悉過程,免得必要的時候不會從源碼配置。我將工具鏈上傳到空間,如果需要,盡管拿去,鏈接地址為,使用說明看資源備注: arm交叉編譯工具鏈
這樣,就可以開發普通的arm裸機程序了,現在開發環境是有了,編寫可以編譯通過的代碼很是容易,但是編寫真正運行正常的卻不那麼簡單,因此,燒錄工具還是必要的,我推薦是用minicom和dnw,minicom模擬與windows下的超級終端有相同的功能,這樣就可以像windows下開發環境一樣與vivi對話了,另外,我在網上下來多個dnw和dnw2,但是發現dnw2在某些情況下不是很穩定,當然也有聽說的成分,不管怎麼說,就是個工具,不管哪個,用著順手就行,我用的是dnw,也可能是我點背,下載的幾個dnw燒錄大的鏡像可以,但是燒錄自己開發的程序,只有二三百K的小文件卻老是出錯,還好linux下是開放源碼的,於是我就修改了一番,當然,限於水平因素,可能曲解了原作者的意圖,不過巧合的是燒錄小文件正常了,大的文件也可以,或許你用的時候並沒有這個問題,那麼請您使用原版的dnw,指出小弟缺點,如果不幸弄巧成拙求諸位不要噴我,下面是我修改後的dnw源碼及使用說明,dnw for linux
最初版本的linux下dnw,但是我下載下來在Ubuntu下使用時有錯誤,就意斷的修改了源碼,請作者和諸位大神原諒,如果需要使用盡管拿去使用。使用說明都在包內,包括usb驅動和dnw,以源碼的形式,帶有makefile。
arm交叉編譯工具鏈與dnw for linux下載
FTP地址:ftp://www.linuxidc.com
用戶名:www.linuxidc.com
密碼:www.muu.cc
在 2012年LinuxIDC.com\8月\Linux下ARM裸機開發環境搭建與實例
下載方法見 http://www.linuxidc.net/thread-1187-1-1.html
配置好上面兩個工具後就可以開發arm2440的裸機程序了,當然移植系統可能還會用到其他牛B的工具,等用到再去研究,如果有幸小弟弄明白了,還會來這裡記錄下來的,下面附上兩個linux下的arm裸機程序及makefile,感覺對我這樣的新手來說還是有幫助的。
例子1:匯編文件led_on.S,代碼如下,這裡我想告訴大家的是GNU的匯編跟標准的arm匯編是有出入的,具體的大家可以搜索“linux arm 匯編”來學習了解,網友給我們提供了足夠豐富的資源。
編譯:arm-linux-gcc -g -c -o led_on.o led_on.S
鏈接:arm-linux-ld -Ttext 0x30000000 -g -o led_on.elf led_on.o
轉換:arm-linux-objcopy -O binary -S led_on.elf led_on.bin
makefile可以這樣寫:
例子2:老師曾經跟我說arm必須用匯編引導啟動,但是用C試了一下,發現沒有匯編,一樣能操作arm芯片,下面是讓流水燈循環點亮的程序,