51.Linux裸機開發--ARM基礎概念及彙編環境搭建

之前學習了Linux的應用層開發,下面要開始linux的底層開發,當然最開始我們不是學習bootloader,也不是內核移植,而是開始ARM的裸機開發,那麼我們老說ARM,那ARM是什麼?目前比較火的,美國封鎖我們的華爲,ARM公司又和華爲有什麼關係?

一.ARM基礎概念

詳細的內容可以看一下我之前整理的博客:

https://blog.csdn.net/lzs940320/article/details/90021068

下面只對一些關鍵的知識進行一個複習總結。

二.環境搭建及啓動文件編寫及調試

作爲單片機開發的自然對寄存器,中斷等更好理解,但是就像我們平時debug調試時一樣,只知道用哪個功能,點點按鈕,到了Linux中就是使用GDB,其實道理都是一樣的。但是我們平時會注意到,但是又不太重視的.s啓動文件,還有反彙編文件,機器指令等,學了linux後這些確是在調試中的利器,能夠幫助我們更深入的瞭解芯片,更快速的定位到問題。

接下來我們進行開發環境搭建,然後debug下看一下他們之間是如何配合的。‘

雖然我們ARM的開發都是在linux下開發,但是其實都是一樣的,爲了更清晰的理解,我們使用常用的集成開發環境keil添加上工具鏈來對我們的一些啓動文件和裸機程序進行調試。

後期還是繼續使用linux下進行。

詳細安裝步驟可以看下“ARM彙編環境搭建”文檔。

1. 安裝交叉編譯工具鏈

我們用的交叉編譯工具鏈是arm-2011.09-70-arm-none-linux-gnueabi.exe

在該可執行文件上右鍵->屬性 -> 兼容性 選擇兼容window 7

確定後以管理員身份運行即可,可能需要很長時間。

2. 安裝keil(MDK)

直接運行ARM環境\ARM-tools\mdk454_mcu123\MDK454

安裝路徑選擇默認,一路next,會花費很長時間。

3. 創建一個project

3.1 新建一個文件夾(keil_proc/test),用於存放工程。

3.2 新建一個工程,Project -> New..., 然後選擇型號,arm9(小端)

3.3 在工程裏面添加或者new一個文件(start.s),在工程管理區的Source Group右鍵, 選擇add group .. 選擇自己

新建的文件,或者是其他文件添加到工程裏面.

3.4. 可以通過Target -> Manage components去修改工程和groups的名字,或者批量添加文件

4. 關聯arm-none-linux-gnueabi工具鏈

Project -> Manage-> Components ... -> Folders/Extensions

5. 導入鏈接腳本

Project -> Options for Target ... -> Linker

設置Linker Scipt file爲工程目錄下的map.lds(需要先將ARM環境\ARM-tools\裏面的map.lds放到新建的工程裏面即

keil_proc/test裏面)

6. 寫代碼

.text

.global _start

_start:

movr1, #0xff

stop:

b stop

.end

編譯和調試

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章