ARN cortexM3 程式設計模型理解

2022-07-05 22:33:14 字數 928 閱讀 1084

1.架構簡介

cortex-m3屬於arm v7架構,32bit,功耗低,多用於微控制器處,比如stm32微控制器。對於 運算量不高的asic,也會使用m系類處理器構成簡單soc,比如通訊,雷達。

2.程式設計模型

通用程式設計模型:指令,資料,取指令,對資料進行運算操作,結果儲存,運算標誌有nzcv。指令資料都來自mem,指令由解碼單元解析,控制alu完成運算,資料通常由暫存器參與運算或儲存結果,速率更快。(待補充)

2.1暫存器:

m3有15個普通暫存器r0-r15。其中r0-r12為通用目的暫存器,r13為sp(存放當前棧位址,滿遞減),r14為lr(鏈結暫存器,儲存返回位址或者異常返回狀態),r15為pc(程式計數器,指向下一條指令)。

psr程式狀態暫存器儲存指令執行之後的狀態。

特殊暫存器:中斷,異常優先順序設定。

2.2指令集

m3為32bit thumb指令集,通用彙編指令:ldr,str,push,pop,bx。

2.3儲存器對映

soc就是一張mem_map**,各個外設和mem的分配空間大小,訪問不同的區間,控制不同的ip。

2.4中斷異常

nvic巢狀向量中斷:向量,由中斷**實現,連續的一段記憶體空間。巢狀:低優先順序的中斷可以被更高優先順序的打斷。

異常通常指core內部錯誤,包括mem錯誤,bus錯誤,除零錯誤等等。1-15為系統異常。

中斷通常指外設產生的中斷請求。16-255為外部中斷。

除了rst和nmi,hd_fault,其他異常和中斷的優先順序是可配的。

發生中斷的時候,會自動壓棧:r0-r3,r12,lr,pc,psr。8個暫存器是乙個棧幀。

2.5除錯

keil,arm-ds5。

2.6啟動流程

上電->取棧指標到sp,取rst異常處理入口位址到pc->初始化堆疊->進入main,執行c語言->業務

網路程式設計3 多程序 多執行緒程式設計 IO模型

select系統呼叫第乙個引數需要 1先說明一下,在windows中,並不要求select函式的第乙個引數總應該是fdmax 1 在windows下,給定 1就行 那linux中為什麼又是呢?這就涉及到linux select第乙個引數的函式 待測試的描述集的總個數。但要注意,待測試的描述集總是從0...

socket程式設計模型

wsaasyncselect 最後仍然是這種模型的優缺點,缺點十分明顯,就是無論程式如何都需要乙個視窗來支援,雖然是非同步的通知訊息,但是仍然是在視窗函式裡同步的進行winsock呼叫,這樣就造成了如果有大量的socket在同乙個執行緒的視窗函式裡進行處理,有可能在乙個請求處理過程中又出現了新的so...

WS BPEL程式設計模型

上圖示意了ws bpel的程式設計模型,在 每個web服務 下面簡稱ws 中定義1個或多個夥伴鏈結型別 partnerlinktype,下面簡稱plt plt分為雙向plt和單向plt兩類,雙向plt規定了參與雙方的埠 port 單向plt只規定了本方的埠。業務流程 business process...