Turing machine git
與門=與非門+非門編程
由控制電路爲0爲1來控制電路的通斷,當其爲0時out端處於高阻狀態(電路視爲斷路)狀態不肯定(能夠對應爲turingmachine中紙帶上的空白),當其爲1時電路導通out對應in小程序
將抽象出來的「方塊」組合獲得一個4位加法器api
分析可知只有當「A端」爲「1 0 0 1」時「S端」能夠輸出「1」,結合以前的三態門能夠實現取出特定編號(如:「1 0 0 1」)中數據的功能。架構
由兩個輸入信號產生四個控制信號函數
電路分析:學習
當c爲0時d的輸入會被鎖死(即d的值對輸出不起做用)例子:一、(c = 1;d = 0;)->(Q = 0;Q' = 1;) 二、(c = 0;d = 0;)->(Q = 0;Q' = 1;) 三、(c = 0;b = 1;)->(Q = 0;Q' = 1) (當c爲0時e,f必都爲1;若上次Q = 0,Q' = 1或Q = 1,Q' = 0;因爲反饋的存在Q和Q'的值不改變,也從而達到存儲數據的功能)ui
電路分析:url
經過不斷交替給clk 0 1以實現移位操做(也能夠看作乘除法)(在實際中此電路並不起做用,由於數值傳遞很快,當給clk 1 時電路中全部位都會刷新爲0)
電路分析:
D觸發器級聯起來就能夠實現以上功能而不會出錯。
功能模塊---助記符---彙編---程序
通用CPU的發展之路
第二章到此結束,在經過本章學習後咱們從計算機聚焦到了MCU上,不侷限於課堂的幾十分鐘,習慣於閱讀英文文檔(最好是官方的)。
上圖是一個基本的MCU內部結構,在瞭解了MCU內部結構後,在本章中最重要的是在此基礎上理解編程的內部運行機理。接下來咱們首先學習MCU內部結構。
MCU的概覽
分析其中的CPU
紅色(運算器,存儲器,控制器)必要,灰色非必要
將ALU拎出來
下面分析Quiz,以對四要素尤爲是Status加深理解
運算邏輯單元所產生的結果及狀態位須要保存下來,大部分CPU會有叫作register的東西來完成
那麼操做數又是如何加載到CPU的呢?
既然數據能夠存儲在Memory中,那麼如何存取就涉及到了地址與存儲了:
這一切又是如何運行起來的:
在時序電路(「依次」)的驅動下CPU完成指令的獲取:
當指令組成程序時:
被調函數完成執行後後會返回主調函數,這就要求PC = adress ,那麼如何完成呢?早期CPU會增長一個返回地址寄存器,可是若是出現函數的嵌套調用,就會要求有多個返回地址寄存器,那麼問題就出現了,寄存器不能無限制的加下去,這就出現了一種新機制-------------->堆棧
堆棧多數時候指的只是棧
定義:
做用:
堆棧的運行機制:
堆和棧是有很大區別的,但在嵌入式系統中一般不使用堆。
堆棧溢出(難點)
sp指針寄存器,pc指針寄存器,數據寄存器,標誌位寄存器。。。稱爲register file(寄存器組)or programmer‘s model(編程模型) 。
學習一種cpu時:
兩種常見的mcu模型:
下面經過一個小程序來理解堆棧的運行機理
程序跑在一個如上圖所示的12系列的mcu中
其寄存器組分別爲:一個16位的D寄存器(可分爲兩個8位的數據寄存器A B),兩個尋址寄存器X Y,一個棧指針寄存器,一個程序計數器,一個狀態位寄存器。
初始狀態
完成堆棧初始化
a值入棧
b值入棧
調用子函數,pc發生跳轉,在棧中保存子函數執行完後要執行的代碼的地址,sp發生跳轉
執行子函數
子函數執行返回語句,將棧中的0x30,0x0c的值賦給pc指針寄存器,sp指針寄存器返回到子函數執行前的位置,以前的0x30,0x0c依然在棧中只是不被棧所認可(注意並非清空只是能夠被心之所覆蓋)。
這個程序實現了a b值交換
進入ARM Cotex M的32位微處理器
常見的微處理器架構:powerpc coldfire arm
如下是對xPSR這個32位寄存器地詳細分析:
xPSR的每一位都會有其對應的功能,咱們經過其別名(APSR(應用程序狀態寄存器) IPSR (中斷程序寄存器) EPSR(程序運行狀態寄存器))來訪問其特定位;
APSR:訪問最高四位,來判斷是否有溢出,是否進位。。。
IPSR:訪問低位,保存中斷號
EPSR:訪問中間的T,是否有中斷髮生
優先級屏蔽寄存器(PRIMASK register)在這裏開關總中斷
cpu狀態寄存器(用戶態(輔堆棧)or特權態(主堆棧))
thread mode :(進程模式)簡單理解爲運行main和main調用
handler mode:(句柄模式)發生中斷和響應中斷
以上和16位cpu類似
函數調用有不一樣之處:
總結:
一、走近中斷
二、定義中斷
三、中斷的使用(只是中斷髮生時可以讓CPU響應的條件,具體使用方式在下節給出)
(1)打開/關閉總的控制中斷的開關
(2)設置某一中斷髮生的標誌
(3)中斷的工做流程