嵌入式程式設計學習隨筆

2022-05-29 04:42:09 字數 2978 閱讀 9582

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 m7​cortex-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...