1 / 32

ARM 7 Create S3C4510

ARM 7 Create S3C4510. Assembly Language. Running mode of ARM. ARM mode: 可執行 32bits 大小的 ARM 指令 THUMB mode: 可執行 16bits 大小的 THUMB 指令 , 在此狀態 PC 會使用位址匯流排的位元 1 去當成兩個 halfword 的選擇位元 hint: 當這兩種狀態在程式中交換使用時並不會改變 processor 的模式或 者是 register 的內含值. Assembly in ARM mode. BX 指令語法 BX{cond} Rn

ursa
Download Presentation

ARM 7 Create S3C4510

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. ARM 7Create S3C4510 Assembly Language

  2. Running mode of ARM • ARM mode: 可執行32bits大小的ARM指令 • THUMB mode:可執行16bits大小的THUMB指令,在此狀態PC會使用位址匯流排的位元1去當成兩個halfword的選擇位元 hint: 當這兩種狀態在程式中交換使用時並不會改變processor的模式或 者是register的內含值

  3. Assembly in ARM mode • BX • 指令語法 BX{cond} Rn {cond} :狀態域 Rn : 操作暫存器,為一般功能暫存器 • 說明 這個指令會將一個一般功能暫存器Rn(R0~R15)的內含值放入PC,以進行跳躍動作。 這個指令也允許執行狀態的交換(ARM<->THUMB)。其判斷方式為參考Rn暫存器的位元0,若為0則接下來的指令會為ARM模式;若為1則為THUMB模式。其中比較特殊的,若是運算元使用R15(PC),則會發生無法預估的情況。

  4. Assembly in ARM mode • BL • 指令語法 B{L}{cond} <expression> {cond} : 狀態域 {L}: 連結位元 <expression>: 為跳躍的目的地 • 說明 該偏移值可為一 24位元常數或是事先載入一般暫存器內的內含值。其中偏移值的位元0和位元1永遠為0。(因為在ARM模式下PC每次皆會固定抓取4個bytes,以符合一個word大小的程式碼,如此PC在每次抓取完一個程式碼後便以記數4次,故PC之位元0和位元皆永遠為0)

  5. Assembly in ARM mode • MRS,MSR • 指令語法 1.MRS - 傳送PSR內含值到register MRS {cond} Rd,<psr> 2.MRS - 傳送register內含值到PSR MRS {cond} <psr>,Rm 3.MSR - 傳送register內含值到PSR旗標位元 MRS {cond} <psrf>,Rm 暫存器中的最高有效4個位元會分別寫入N,Z,C,V旗標。 4.MSR - 傳送立即值到PSR旗標位元 MRS {cond} <psrf>,<#expression> {cond}:狀態域 Rd,Rm:一般功能暫存器(除了R15) <psr>:CPSR,CPSR_all,SPSR,SPSR_all <psrf>:CPSR_flg,SPSR_flg <#expression>:組譯器會產生一個移位的立即8位元域

  6. 說明  這兩個指令主要是做CPSR和SPSR暫存器的存取動作。MRS的指令是將CPSR或目前模式之SPSR的內含值移到一般功能暫存器。而MSR指令則是將一般功能暫存器之內含值移到CPSR或目前模式之SPSR。  其中,MSR指令不僅支援將暫存器之值移入PSR,其亦允許將一個立即值或是暫存器之值移到PSR的狀態碼旗標(Z,N,C,V),且不會影響到控制位元。在這樣的情況下,指定之暫存器的內含值最高4個位元或是32位元立即值之最高4位元會寫到PSR之最高4位元的狀態碼旗標(Z,N,C,V)中。

  7. Assembly in ARM mode • UMLAL • 指令語法 Mnemonic: UMLAL{cond}{S} RdLo,RdHi,Rm,Rs Description: Unsigned Multiply & Accumulate Long Purpose: 32X32+64 = 64 {cond}:狀態碼 {S}:狀態碼設定 RdLo,RdHi,Rm,Rs:一般功能暫存器 • 說明 UMLAL,SMLAL指令的乘加格式是取得2個32位元的數值進行相乘,然後加上一個64位元的數值,以產生一個64位元的結果; RdHi_RdLo:=Rm*Rs + RdHi_RdLo。

  8. Assembly in THUMB mode

  9. Lab • 執行完下列兩行指令後PC值會為多少?在ARM和THUMB兩種不同mode底下執行會有不同嗎? MOV R3,#0X80 BX R3 • ARM指令下,假設PC=0x0,試問執行完“BL 0X54”這指令後,PC和R14有何變化? • ARM指令下,假設R0=0x2,R1=0x3,R2=0x12,則執行SUB R3,R2,R1,LSR R0後R3的變化為何? • 嘗試用目前所會的指令來完成1~100的奇數相加及偶數相加,並把兩個值各自存到R2和R3! • 同例題一,在THUMB狀態底下的那兩行指令轉換成ARM狀態的指令!(請參考ARM SOC原理第四章)

  10. Learning Doming for uClinux Step by Step

  11. 1. 在Target Machine 中選取Pock ARM 2. Processor 部份選取 S3C4510 4. 按”Config PCM”進入下一個選單 3. 把”To Initialize PCM when Connect”打勾 ※未特別說明的選項則按照上圖設定

  12. 5. 按Import載入設定

  13. 6. 載入creator_ram.pcm,檔案預設放在C:\Microtime\uClinux1.2\ARM\ARM7\Config中

  14. 7. 載入後按ok

  15. 8. 按ok完成Hardware設定

  16. 9. 輸入Project Name,這是硬體設定值儲存檔

  17. 10. 按O連接,要切斷則按旁邊的X

  18. 11. 點選可以切換Source和CPU兩種 mode,CPU mode為簡易模式。建議 使用C為主時使用Source mode,使用 組語為主時使用CPU mode,以下先以 CPU mode為例

  19. Part 1Assembly Language

  20. 點選可以回到address 0

  21. 按滑鼠右鍵選Block Utility -> Block Fill可以把選定範圍填入數值

  22. 設定開始數值 選擇數值長度或結束位置 選擇填入數值大小

  23. 在此點兩下或按Enter鍵,可以輸入組語程式。

  24. 按此會一個指令一個指令執行,但遇到副程式呼叫指令時,但遇到副程式呼叫指令時會停在該副程式第一個指令。按此會一個指令一個指令執行,但遇到副程式呼叫指令時,但遇到副程式呼叫指令時會停在該副程式第一個指令。 按此會全速執行程式至結束 按此會一個指令一個指令執行,但遇到副程式呼叫指令時,會執行完該副程式,返回時才停下來。 將游標移到希望停下來的指令 ※本例中,執行完游標會跳到 Address 40的位置

  25. 如果想儲存所寫的程 式,按Debug->Save Module 。而載入程式,按Debug-> Load Module

  26. 儲存時可選擇存成Binary或Intel Hex格式 ,在此舉Binary格式為例。

  27. 選擇儲存address的起始位置 選擇儲存address的長度或結束位置

  28. 載入時,選擇所儲存的檔案格式。

  29. 在ModuleFormat裡選擇所儲存的格式

More Related