arm微控制器與嵌入式系統 從CPU到MCU

2021-09-11 20:26:48 字數 2501 閱讀 9596

cpu是計算機/微控制器的核心,進行算數/邏輯運算

microcontroller unit 微控制器是乙個完整的計算機系統,在單個晶元上包含了處理器、儲存器和所有的外設io模組。

mcu包含了什麼?

mcu的特點

從arm v7之後,arm處理器按照應用特徵分類,分為以下三類:

r系列 —— real-time controller—— 實時響應《無人機等》

m系列 —— micro-controller—— 嵌入式

上圖中右邊就是之前概念cpu的實際表達alu 運算邏輯單元。

運算邏輯單元完成邏輯和數學的運算

兩個輸入資料 —— a和b

乙個指令 —— op,要對a和b做什麼運算

輸出資料 —— result和flags(標誌位)

怎麼理解標誌位

如果給alu下面幾種運算

a+b = c

如果這個alu是乙個4 bit的運算單元,則當計算加法時,可能會出現c大於15(0x1111),這時會出現溢位標誌位用來表示計算結果是否溢位。

a>b ?

cpu在做比較的話,實際上是做了a-b的運算,而我們想要的結果實際上就是負數標誌,同樣也是在標誌位中體現。

問題:alu計算得到的結果要存在**呢?—— 暫存器

暫存器組

暫存器是由電路實現的儲存資料的單元。

在cpu中,有乙個暫存器就是用來專門儲存alu計算後的標誌位,每條指令所能影響的狀態位是不一樣的,這類暫存器被稱為程式狀態暫存器(psr暫存器),還有被稱為ccr暫存器

這個暫存器中到底要存哪些狀態資訊?

不同的晶元,對應的狀態資訊也有所區別,但是一般而言都要包括以下幾個標誌:

cpu內部的暫存器個數有限,其實是無法滿足程式的要求,因此出現了下圖的結構

上圖中的data memory不再是cpu的組成部分,對memory的訪問要比對暫存器的訪問慢很多

位址與儲存器的關係

如果要訪問cpu外部的data memory,如何實現?

對於儲存器,其結構如下:

上圖中的0x0003這個位址存的資料就是0x44

模擬一下,一定意義上來說,程式的儲存也是這個概念。

指令集堆疊

棧是一段連續的儲存器空間

堆疊按照**先出的工作方式

只能從/向堆疊的頂部加入或取出資料

按照這個邏輯,我們現在還缺少乙個片外的儲存器,用來給堆疊用。我們需要有乙個類似指標的東西,指明從某個位置開始的儲存器作為堆疊來使用。

堆疊空間和變數空間是使用同一端儲存空間

這就帶來乙個新的問題:

儲存器的空間是有限的,當某個時間點,堆疊達到乙個衝突點的時候,出現了堆疊溢位。

堆?堆是乙個程序開啟之後,系統分配給它的空間,一般這個空間是全域性的,系統中所有動態分配的物件(比如指標)都是在這個空間上分配的。

堆裡的資料是有資料結構的,其空間占用是不連續的。在沒有os的嵌入式系統中,通常不使用堆。

通常,我們把上圖中紅色框中的暫存器稱為暫存器組,也可以稱為程式設計模型。

中斷中斷與輪詢

輪詢:

中斷是乙個需要cpu立即處理的內部或外部事件

內部事件

中斷:中斷允許/禁止

時鐘/復位32bit mcu register file (arm cortex m)

微控制器與嵌入式系統的ARM區別

因為8位微控制器與嵌入式系統的arm在功能結構和單價的差異,故應用層次上就有很大的不同。arm適用於系統複雜度較大的高階產品,如pda 手機等應用。而8位微控制器因架構簡單,硬體資源相對較少,適用於一般的工業控制,消費性家電 等等。評估微控制器近期是否會給arm取代,要觀察兩個因素 晶元成本 因ar...

從微控制器到嵌入式

1 什麼是微控制器?微控制器是乙個控制系統,接收管腳中斷輸入,進行一些簡單的邏輯操作,對記憶體或flash進行訪問,再輸出到管腳 2 什麼是嵌入式?嵌入式有linux核心 linux核心功能有 程序管理 記憶體管理 檔案系統管理 裝置驅動 網路管理 3 微控制器和嵌入式有什麼共同點?都是靠中斷驅動,...

什麼是嵌入式系統,什麼是微控制器?

物聯網應用下的無線通訊技術分為近距離通訊技術和遠距離通訊技術,其中常用的短距離通訊技術有藍芽 wifi zigbee 紅外等等,遠距離通訊技術有gprs nb iot lora 等。物聯網應用除了通訊還有物聯網終端節點,這些終端節點還有一定的計算能力和感知能力,還有一部分終端節點具有執行能力,今日我...