(100上) ARM 內核嵌入式SOC原理開啟IAR Embedded Workbench 請
Download
Report
Transcript (100上) ARM 內核嵌入式SOC原理開啟IAR Embedded Workbench 請
微處理機 Microprocessor (100
上)
ARM 內核嵌入式SOC原理
組合語言基本介紹與軟體工具學習
2011/9/22
開啟 IAR Embedded Workbench
請到 開始>所有程式>IAR System …
根據下圖指示開啟 IAR Embedded Workbench
或從桌面點選捷徑開啟
選擇
“create new project in current workspace”
Tool cahin 部份請選擇 ARM ,然後根據下圖所示點選
asm ,它會展開一個 asm 的分支,表示現在要開啟的是預
設為組合語言的 project
按ok後,會出現另一視窗,請輸入 project的檔名與選擇要
存放的地方(全英數)
project的副檔名為 .ewp
IAR Embedded Workbench的工作環境
在 project 內預設的組合語言檔案名稱為 asm 可於存檔
時修改,其副檔名為 .s79
注意:
先將預設的組合語言
程式架構手動清除掉
實驗範例
MOV R0, #0
MOV R1, #1
MOV R2, #2
MOV R3, #3
MOV R4, #4
MOV R5, #5
MOV R6, #6
MOV R7, #7
MOV R8, #8
MOV R9, #9
MOV R10, #10
B B.
在主程式區,重新輸入左邊的指令.
此段程式功能為 將常數值 0~10
(十進制) 依序各別存放到 R0~R10暫
存器裡.
指令輸入完成後,按 make鍵(圖示)或是F7鍵 ,此時會對你剛輸入的程式作編
譯,編譯完成後若沒有錯誤發生則可在 Messages 視窗下看見相關訊息.
在編譯完成無錯誤後 按Debug鍵(圖示)或是Crtl+D鍵 ,進入 Debug 模式.
Debug 鍵
圖示
Make 鍵圖示
第一次進入 Debug 模式時,通常只會跳出Disassembly(反組譯)的視窗.
但是在執行程式碼時,我們同時也要觀察暫存器與記憶體內容的值,故以後在
作實驗時,我們在這至少要打開三種功能視窗
1.Disassembly 2. Register
3.Memory .
打開方式: 在toolbar上的 View 下拉後,可依需要而選擇.
目前在 Debug 模式下,會使用到的一些功能說明:
Rest :
將程式重置.PC會被Clear為0 並從 address 0 開始執行指令.
Step into (F11): 單步執行.每按一次,程式只執行一道指令.
run to cursor:
若程式有設中斷點,則會跑到中斷點程式就會停止.
GO :
自動執行整個程式的指令,不會單步動作需要按 stop才會停止.
Exit Debug:
離開Debug模式, 回到前面編輯模式.
中斷點:當程式變複雜時,可藉用中
斷點的設定來幫助除錯 (可以設定多
個中斷點)
暫存器視窗
在目前模式下的
暫存器
舉例說明: 假設 Processor目前在
FIQ 的模式下,則在目前模式下的
R8~R14會與 R8_fiq~R14_fiq 暫存器
的值相等,且當內容改變時會同步的
變化.
有關暫存器各種模式下的配置問題,
請參考課本.
在每個模式下的 SPSR 均可以點選
下拉,觀察裡面的各旗標值(flag) .
Memory 視窗
預設為 位元組(Byte)顯示模式
對著 Memory 視窗
按右鍵勾選 4xUnits
即可改變為字組
(Word)顯示模式.
排列方式勾選
Little Endian .
指令格式
MOV
R1, #1 e3a01001
11100011101000000001000000000001
1110 001 1101 0 0000 0001 000000000001
當按下 step into 單步執行的圖示後, 綠色的指標就會往下跑一個指令,表
示這是下次所要執行的指令.
指令被執行時,相對應之暫存器的內容若有改變時 則會以紅色的數值來表示.
基本指令格式
<op>{<cond>}{S} Rd, Rn, #<32-bit immediate>
<op>{<cond>}{S} Rd, Rn, Rm {<shift>}
基本指令
存入暫存器
MOV
MOV
Rd, Rn
Rd, #12
; Rd = Rn
; Rd = 12
r0, r1, r2
r0, r1, r2
r0, r1, r2
; r0 = r1 + r2
; r0 = r1 – r2
; r0 = r1 * r2
加減乘
ADD
SUB
MUL
左右移動,旋轉
MOV
Rd, Rn LSL #3
; Rd = Rn * 23
最後 ,若存檔完要關畢IAR Embedded Workbench 並離開時,記得要儲存目前的
workspace ,其 workspace 的副檔名為 .eww
實習問題
實習一: 用16進位值將(25,17)存入(R1,R2),即R1=25, R2=17
並且將 (1)R1+R2 (2)R1-R2 (3)R1*R2
分別顯示在 R3, R4, R5
實習二: 請將(6+8)X4+(32/16)=?用組合語言表示出來,利用左右移
動,
將運算結果指定存放在R11暫存器中
實習三:將R1=2 並且只使用兩行指令 計算出 R11 = R1*35
(不可直接使用乘法指令)
作完請找助教檢查