ARM微控制器與嵌入式系統


個牛人在ARM實現嵌入式系統的過程

第一章  概覽

1.1課程概覽

  1. 認識ARM嵌入式系統(什么是ARM?什么是嵌入式系統?
  2. 備戰智能車
  3. 在科技活動中玩起來
  4. 積累計算機、電路基礎知識

1.2如何學好嵌入式系統

  1. 興趣
  2. 熱愛
  3. 玩起來

第二章  緒論

2.1計算機的基本概念、發展歷史

  1. 改變世界:機械之美——機械時期的計算設備

  2. Turing machine    

  3. ABC
  4. 馮.諾依曼體系結構
  5. 進制轉換ASCIItab
  6. 數字(digital  discrete如:指針走過變盤)與模擬(analog  continue如:數字時鍾||時間上是間隔的,數值上是量化的)
  7. 計算機系統中0、1的表示  例如:用某一電壓段來表示高電平和低電平(TTL 和 CMOS 標准

 2.2從晶體管到CPU

 

 

 

 拋開晶體管的諸多嚴謹的限制,只將其看做高電壓導通或者低電壓導通的開關

 

 

與門=與非門+非門

 

 

由控制電路為0為1來控制電路的通斷,當其為0時out端處於高阻狀態(電路視為斷路)狀態不確定(可以對應為turingmachine中紙帶上的空白),當其為1時電路導通out對應in

 

把晶體管和開關拋開,更多從邏輯上來理解。更多的邏輯關系:

 

 

 邏輯的組合 產生功能模塊

半加器(不能進位)

 

 

全加器

 

將抽象出來的“方塊”組合得到一個4位加法器

 

數據流向的控制電路也可以通過邏輯電路來實現

譯碼電路

分析可知只有當“A端”為“1 0 0 1”時“S端”可以輸出“1”,結合之前的三態門可以實現取出特定編號(如:“1 0 0 1”)中數據的功能。

 

多路選擇

由兩個輸入信號產生四個控制信號

 以上,我們大概可以將其稱為組合邏輯電路(其輸出值總是取決於當前的輸入值,一有輸入馬上會看到輸出)。下面進入時序邏輯電路(有反饋的出現,out值還取決於其上一值等。)

 

電路分析:

當c為0時d的輸入會被鎖死(即d的值對輸出不起作用)例子:1、(c = 1;d = 0;)->(Q = 0;Q' = 1;) 2、(c = 0;d = 0;)->(Q = 0;Q' = 1;) 3、(c = 0;b = 1;)->(Q = 0;Q' = 1)        (當c為0時e,f必都為1;若上次Q = 0,Q' = 1或Q = 1,Q' = 0;由於反饋的存在Q和Q'的值不改變,也從而達到存儲數據的功能)

 

電路分析:

通過不斷交替給clk 0 1以實現移位操作(也可以看做乘除法)(在實際中此電路並不起作用,因為數值傳遞很快,當給clk  1 時電路中所有位都會刷新為0)

 

 

 

 

 

 電路分析:

 

D觸發器級聯起來就可以實現以上功能而不會出錯。

 

 一個概念CPU(大概幾百幾千個晶體管)

 

 

 

 

 功能模塊---助記符---匯編---程序

 

2.3概念CPU、微控制器MCU和嵌入式系統

 通用CPU的發展之路

微控制器MCU不僅僅是一個簡單的CPU

MCU  VS  CPU

 

                                                                                

 

嵌入式系統

 

 

 

 

 

2.4八卦計算機歷史

2.5不同領域 不同系列的嵌入式系統

2.6ARM歷史與MKL25Z128 MCU

 

 

 

 

第二章到此結束,在通過本章學習后我們從計算機聚焦到了MCU上,不局限於課堂的幾十分鍾,習慣於閱讀英文文檔(最好是官方的)。

 

第三章    MCU基礎

3.1CPU的基本結構和運行機制

上圖是一個基本的MCU內部結構,在了解了MCU內部結構后,在本章中最重要的是在此基礎上理解編程的內部運行機理。接下來我們首先學習MCU內部結構。

 

MCU的概覽

 

 

 分析其中的CPU

 

紅色(運算器,存儲器,控制器)必要,灰色非必要

 將ALU拎出來

 

下面分析Quiz,以對四要素尤其是Status加深理解

  1. A + B = C      操作數:A  B    ; 運算 : +   ; 運算結果: C ; 標志位:若C的結果發生溢出,則flag會產生溢出記錄;  
  2. A>B              操作數:A  B    ; 運算 :> (本質上是減法運算,產生一個最高位為1的補碼,即負數)    ; 運算結果 : 1 or 0 ; 標志位 : 記錄產生的結果是0 or 1;
  3. A>>=1(A等於A右移一位)操作數:A  ;運算: >>=;運算結果:一個數 ;標志位:當右移至0時產生一個標志;

運算邏輯單元所產生的結果及狀態位需要保存下來,大部分CPU會有叫做register的東西來完成

 

 

 

 

那么操作數又是如何加載到CPU的呢?

 

既然數據可以存儲在Memory中,那么如何存取就涉及到了地址與存儲了:

這一切又是如何運行起來的:

在時序電路(“依次”)的驅動下CPU完成指令的獲取:

 

當指令組成程序時:

 

被調函數完成執行后后會返回主調函數,這就要求PC = adress ,那么如何完成呢?早期CPU會增加一個返回地址寄存器,但是如果出現函數的嵌套調用,就會要求有多個返回地址寄存器,那么問題就出現了,寄存器不能無限制的加下去,這就出現了一種新機制-------------->堆棧

 3.2.1堆(heap)棧(stack)的概念

上面文章的中文翻譯版

 

 堆棧多數時候指的只是

定義:

作用:

堆棧的運行機制:

堆和棧是有很大區別的,但在嵌入式系統中通常不使用堆。

堆棧溢出(難點)

sp指針寄存器,pc指針寄存器,數據寄存器,標志位寄存器。。。稱為register file(寄存器組)or programmer‘s model(編程模型) 。

學習一種cpu時:

  1. 了解其可編程的寄存器組
  2. 了解其指令集

 

兩種常見的mcu模型:

 

 3.2.2堆棧的概念  頭腦體操

下面通過一個小程序來理解堆棧的運行機理

程序跑在一個如上圖所示的12系列的mcu中

其寄存器組分別為:一個16位的D寄存器(可分為兩個8位的數據寄存器A B),兩個尋址寄存器X Y,一個棧指針寄存器,一個程序計數器,一個狀態位寄存器。

 

 初始狀態

 

完成堆棧初始化

 

a值入棧

 

b值入棧

 

調用子函數,pc發生跳轉,在棧中保存子函數執行完后要執行的代碼的地址,sp發生跳轉

 

執行子函數

 

子函數執行返回語句,將棧中的0x30,0x0c的值賦給pc指針寄存器,sp指針寄存器返回到子函數執行前的位置,之前的0x30,0x0c依然在棧中只是不被棧所承認(注意並不是清空只是可以被心之所覆蓋)。

 

 

 這個程序實現了a b值交換

3.3.1 ARM的體系結構

 進入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:(句柄模式)發生中斷和響應中斷

 

 

 

 


 

 3.3.2ARM體系結構----頭腦體操

 

 

 

 

以上和16位cpu相似

 


 

 

函數調用有不同之處:

  • 函數調用指令結束后的指令的地址被記錄在LR寄存器而不是壓入堆棧(armcpu在發生一級調用時會這樣做)
  • ARM體系結構向下兼容(thumb and arm )的特性:在將地址賦給LR寄存器時將最低位置1,在將地址值值賦給pc指針寄存器時將值再恢復為0;

 

 

 

 

總結:

  • 完成了兩個內存中值的交換
  • 堆棧先入后出的性質    

 

3.4中斷的概念和機制

1、走近中斷

 

 2、定義中斷

 3、中斷的使用(只是中斷發生時可讓CPU響應的條件,具體使用方式在下節給出)

(1)打開/關閉總的控制中斷的開關

 

(2)設置某一中斷發生的標志

(3)中斷的工作流程

 

3.5中斷子程的概念和編程

 

3.6 復位、時鍾、存儲器和總線


 

3.7 小結:MCU的總體結構和程序運行機制

第四章  ARM微控制器的開發

4.1 第一種外設:io

 

 

 

 

 

 

4.2 IO外設的編程實操-點亮LED

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM