1.1arm介紹1
0、為什麼要推出arm彙編0.1 對比x86,8051彙編,從更底層的角度去理解相關的知識的0.2 為後續嵌入式課程作準備(s3c2440,stm32f103,exynos4412)0.3 學習目標:了解arm的體系結構,能看懂arm彙編
1、arm分類參考官方:
1.1版本號分類arm7 arm9arm11cortex系列:
cortex-r
cortex-m mo m3 m4 m7cortex-a a8 a9 a15a72 a53
1.2 指令集分類(指令集原則上是向下相容的)armv4 armv7 armv8
2、arm商業模式及半導體公司
2.1ip核(智財權)
2.2 半導體公司三星、高通、蘋果、nxp(freescale)、ti、st、atmel、ambarella mtk、海思、全志、瑞芯微、展訊(基帶)、炬力、聯詠例如:s3c2440(arm9)exynos4412(cortex-a9)stm32f103(cortex-m3)i.mx.rt1050(cortex-m7)i.mx.283(arm9)at89c51(8051核)ar9331(mips)hi3518(arm9)nt96650(mips)--網路攝像頭a33(cortex-a7)rk3399(cortex-a72 a53)--利用了arm big.little compatible
技術 2.3 生態系統:核公司---半導體公司---半導體生產(台積電等)----產品研發---產品生產作為個體:半導體行業,產品應用行業方案選型-除錯demo板-打樣生產(通用方案與專用方案)
3、嵌入式處理器
cpu、mcu、gpu、plc、dsp、soc、asic、fpga的關係
第二部分:arm體系結構
第三部分:arm指令系統
第四部分:arm彙編程式設計
1.2arm介紹2
2.1哈佛結構與馮式結構
2.11兩者的區別:
哈弗結構:獨立的儲存架構和訊號通道(**與資料是否統一編址)與是否統一編址沒有關係,也與cpu沒有關係,與計算機整體設計有關
cache的引入(cpu內部哈佛結構)8086馮式結構相同儲存(ram)相同的通道(統一編址)區別:執行態與儲存態stm32f103哈弗結構不同的儲存(rom/ram)不同的通道 (統一編址)
8051改進型的哈弗結構不同的儲存(rom/ram)相同的通道 (獨立編址)
arm9改進型的馮式結構相同的儲存(ram)/不同的通道(統一編址)總結:高效能微控制器:馮式結構普通微控制器:哈弗結構
2.1.2 匯流排與i0訪問arm匯流排結構(ahb【高速匯流排】,apb【一般的匯流排】,axi【arm自己研發的匯流排】)與內部外設
(系統)匯流排訪問與io訪問(獨立與統一)io就是指cpu的各種內部與外部外設io介面的編址方式:io介面中能被cpu訪問的暫存器稱為埠/暫存器埠與儲存器統一編址(arm)uart gpio埠與儲存器獨立編址(x86)8259a8255(並口)8253(定時器)通過memr/memw和ior/iow兩組控制訊號來實現對i/o埠和儲存器的不同定址注意:記憶體(memory map)與記憶體條,記憶體條只是記憶體的一部分
2.2、arm的處理器狀態和處理器模式
意:在不同的體系下一些概念有所不同,在這裡我們使用s3c2440
手冊進行參考
2.2.1處理器狀態
armv4
armv7
arm狀態
執行效率高
32bit
32bit
thumb狀態
**密度好
16bit
16/32bit(thumbee狀態)
處理器狀態的切換 bx blx各種指令:arm指令(32位),thumb指令(16位),thumb2指令(32/16位)cortex-m只是指令thumb2指令子集
2.2.2處理器模式
usr,fiq,irq,svc,abt,sys,und usr(使用者模式):the normal arm program execution state fiq(快速中斷):designed to support a data transfer or channel process irq(中斷):used for general-purpose interrupt handling svc(保護模式):protected mode for the operating system
abt(異常):entered after a data or instruction prefetch abort sys(使用者特權模式):a privileged user mode for the operating system und(未定義):entered when an undefined instruction is executed設計的目的:提高響應速度
,注意:保護模式/特權模式,需要mwu和**支援
2.2.3 arm流水線設計:五級流水線(arm9)
每條指令五個工位:取指--解碼--執行--訪存--回寫
t1t2
t3t4
t5t6
指令1取指
解碼執行
防存回寫
指令2取指
解碼執行
防存回寫
指令3取指
解碼執行
防存回寫
指令4取指
解碼執行
防存回寫
指令5取指
解碼執行
防存回寫
嵌入式程式設計
1 interrupt double compute area double radis 1 isr不能返回乙個值。2 isr不能傳遞引數。3 在許多處理器中浮點是不可重入的。4 printf 經常有重入和效能上的問題,所以一般不使用printf 2.volatile 1 volatile的語法和c...
嵌入式程式設計
對於簡單的應用程式,輪詢 許多時候也被稱作超級迴圈 實現起來比較簡單,而且非常適合簡單任務 見圖4.4 不過,當應用程式變得複雜或者對處理能力的要求更高時,輪詢就不合適了。例如,當乙個程序占用時間過長,其他模組在這段時間內就不會收到處理器的任何服務。即便不需要任何處理,處理器也得一直執行輪詢程式,這...
嵌入式學習
1 c 語言 第二版譚浩強。2 資料結構 c語言版。3 實用 c 程式設計 4 學習51 微控制器,加深對中斷的理解。5 學習 arm微控制器。1 細讀 arm微控制器基礎與實戰 周立功編寫。2 細讀相關晶元的原版英文文件。如 arm920te.pdf s3c2410 1.2.pdf。6 學習uco...