ARM菜鳥快速上手
發布時間:2012-11-30 責任編輯:sherryyu
【導讀】世界的多元化,造就我們要知識廣泛化,可能對於ARM有的人一無所知,還有的人一知半解,本文就一些知識,幫忙大家很快的入門.
我使用的是51eda 的44B0X 豪華板,用jtag 小板調試,編譯環境是ADS1.2,調試環境是SDT2.51,程序燒寫用FlashP,用其他燒寫工具也可以。
1、 電源設定:拿到板,首先檢查電源的配置,我使用USB 供電,所以在電源插口附近的跳線要設定成USB 供電,而不是外部供電。
2 、連接接口:關閉主機,連接串口,主機端是COM0 口,開發板這端是靠近LCD口的COM1 口(另一個是COM2 口);連接網口,因為網線可以帶電插拔,所以現在不管;連接並口,將jtag小板接上,將一根20芯的排線插在jtag小板的SDT_JTAG 口上,(接在wiggler口上也行,跟開發工具的選擇有關),另一段插在開發板的jtag 口上。USB yekeyichashang,zhuyizaikaifabanyoudianzhiqianbakaifabandekaiguanbandaoxiamian,shikaifabanchuyuguantingdezhuangtai。zhici,yingjianlianjiejieshu,kaizhujishiyidingyaobaochikaifabanshiguantingzhuangtai。
3 、主機打開以後,運行ADS 編譯開發環境:
File->New,顯示對話框:

建立一個 ARM 可執行映像(ARM Executable Image)。

把左上角的下拉菜單改為 Debug 好了,軟件開發前期用這個選項。
新建一個彙編源代碼文件,並加入工程,比如命名為44binit.s
輸入以下代碼:
AREA Init, CODE, READONLY
ENTRY
LABEL
ldr r0, =0x0
ldr r1, =0x20
LABEL_01
add r0,r0,#1
cmp r0,r1
ldreq r0, =0x0
beq LABEL
bne LABEL_01
注意AREA 不要頂格寫。這端代碼十分簡單,大家一看就明白。
保存文件
下麵這步比較重要,是程序編譯的設定。
點點擊該工程上方的
按鈕,或者選擇Edit->DebugSetting…,如圖

有幾個地方要修改,在這個界麵下,在 Post-linker 欄裏選擇ARM fromELF,這是生成最後目標的可選項目之一,也是比較常用的。
在 Language Settings 裏,要修改編譯器的設定,對本項目,默認設定已經可以,不需要改動,在實際的工作中,安自己的需要更改之。
下麵設定連接器 Linker,這是很重要的一步,由於ARM 開發模式和程序運行的存儲器與DSP 不同,通常在Linker 環節的設定對ARM 開發來講很重要。

在 ARM Linker 的Output 標簽裏,設定如上圖,因為我們的程序是不包含SDRAM 初始化代碼的,所以我的代碼無法初始化SDRAM,這意味這向SDRAM 寫入數據將是不可靠的,所以在SDRAM 初始化代碼運行前,不要將代碼裝入SDRAM 中調試。這就要求我們的代碼要運行在0x0 地址,所以我們將RO Base 欄填入0x0,RW Base 不填,表示RW 段緊跟著RO 段。
選擇 Layout 標簽,如圖:

在Place at beginning of image 域裏,兩個欄分別填入,44binit.o 和Init,表示在初始地址放入44binit.o,這個目標文件就是源文件編譯得來的,因為我們隻有一個文件要編譯,所以即使這裏不如此設定,代碼一樣會定位到0x0 處,隻是以後一個項目包含多個文件時,一定要用這種方法指定0x0 開始時的代碼源於哪個文件的代碼。以後如果用Scatter 文件規定存儲器分布就不用這麼設定了。
選中左邊的 ARM fromELF 項,如圖:

在這裏選擇 Output format,一般選Plain binary,這是比較常用的格式,output 文件後綴是bin。好了,確認設定無誤後可以編譯,在項目的文件夾裏可以找到bin 後綴的文件,這就是我們要燒寫的文件。
4、燒寫flash,我用“Flash 燒寫器2.1”燒寫程序,它的可執行文件名是FlashP.exe。網上比較常見,燒寫速度較快。運行以後如圖:

在左邊的三個框裏選擇 44b0x,SDT JTAG 和並口1。右邊4 個按鈕分別是:擦除芯片,保存存儲內容,空白區檢測和燒寫。在燒寫前將開發板上電,清楚並檢測一下 flash 芯片,然後選擇剛剛編譯的bin 文件燒寫。
5、 調試,現在我們僅能在flash 芯片裏觀察程序運行,因為我們的SDRAM 沒有正確初始化。調試前要運行 JTAG2000 的後台程序,如果第一次調試,JTAG2000 要求安裝GiveIO 軟件,安裝就是了。就像龔俊大哥寫的入門教程裏提到的那樣,JTAG2000 將發往網口的調試命令和數據截住,改發給聯接jtag 小板的並口,所以在SDT 的debugger 裏設定時要設定成網口調試。
調試啦,先運行JTAG2000,顯示一個DOS 運行框,不管它了,最小化就好。運行SDT的Debugger,他會問你是否是遠程調試,如果不問就是因為原來的設定是ARMulator 軟仿真調試。要在Options->Configure Debugger裏改成遠程調試,如圖:

點擊該對話框的 Configure 按鈕,如圖:

按照圖中設定,注意把IP 換成你的IP,嗬嗬,我的是天津大學校園網的IP,你們要填寫你的電腦的IP,要保持此處的內容和你的電腦的設定一致。OK,確定,保存你的配置。
這時 JTAG2000 的窗口裏應該有輸出,先不管,在SDT Debugger 裏,選擇File->Load Image…,到你的工程目錄下選擇那個和BIN 同一文件夾下的AXF 文件,這是用來調試的文件,打開,SDT Debugger 的客戶區就會顯示你的代碼,和程序停止的位置,如圖:

接下來就是考驗你調試的功夫了,當然我的程序太短小,也沒有使用價值(其實也有,就是演示的價值),也沒有要調試的地方,我編寫這個程序僅僅是讓大家看看從買來板子到運行第一個哪怕是最弱智的程序的全過程。
好了,我們已經能跑程序了,雖然這個程序太弱智了。但是它畢竟運行了。好像有點慢,對了,他是在flash 裏運行,當然要慢。以上麵的方法調試程序,而且每發現一個bug 就要重新燒寫flash,會傷到芯片。把程序放在SDRAM 裏運行就好了。
把程序請進 SDRAM 裏,有幾個問題,就是SDRAM 要求初始化,未初始化的SDRAM芯片和沒有焊在板子上一樣。再有就是編譯的時候,RO 的地址要設定在SDRAM 裏。後者隻是重新編譯的問題,主要是前者,我在這裏不講,這主要是軟件編製的問題,開發板附帶的光盤的BIOS 代碼示例中有關於SDRAM 初始化的代碼,自己去看。
- 噪聲中提取真值!瑞盟科技推出MSA2240電流檢測芯片賦能多元高端測量場景
- 10MHz高頻運行!氮矽科技發布集成驅動GaN芯片,助力電源能效再攀新高
- 失真度僅0.002%!力芯微推出超低內阻、超低失真4PST模擬開關
- 一“芯”雙電!聖邦微電子發布雙輸出電源芯片,簡化AFE與音頻設計
- 一機適配萬端:金升陽推出1200W可編程電源,賦能高端裝備製造
- 算力爆發遇上電源革新,大聯大世平集團攜手晶豐明源線上研討會解鎖應用落地
- 築基AI4S:摩爾線程全功能GPU加速中國生命科學自主生態
- 一秒檢測,成本降至萬分之一,光引科技把幾十萬的台式光譜儀“搬”到了手腕上
- AI服務器電源機櫃Power Rack HVDC MW級測試方案
- 突破工藝邊界,奎芯科技LPDDR5X IP矽驗證通過,速率達9600Mbps
- 車規與基於V2X的車輛協同主動避撞技術展望
- 數字隔離助力新能源汽車安全隔離的新挑戰
- 汽車模塊拋負載的解決方案
- 車用連接器的安全創新應用
- Melexis Actuators Business Unit
- Position / Current Sensors - Triaxis Hall







