(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
(不可直接使用乘法指令)
作完請找助教檢查