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...