[arm微控制器與嵌入式系統] 從CPU到MCU - 台部落
文章推薦指數: 80 %
CPU是計算機/微控制器的核心,進行算數/邏輯運算MCU? MicroController Unit 微控制器是一個完整的計算機系統,在單個芯片上包含了處理器、存儲器和 ...
請輸入正確的登錄賬號或密碼
註冊
忘記密碼
首頁
嵌入式系統
正文
[arm微控制器與嵌入式系統]從CPU到MCU
原創
Sprinkle_WPD
2020-07-0307:52
CPU是計算機/微控制器的核心,進行算數/邏輯運算
MCU?
MicroControllerUnit微控制器是一個完整的計算機系統,在單個芯片上包含了處理器、存儲器和所有的外設IO模塊。
MCU包含了什麼?
CPU
Input/Outputinterface
Peripherals
RAM用於數據存儲
ROM用於程序存儲,EPROM,EEPROM或FlashMemory
MCU的特點
體積小
低成本
低功耗
高可靠性
大量型號和設計方案
ARM處理器的分類
從ARMv7之後,ARM處理器按照應用特徵分類,分爲以下三類:
A系列——ApplicationProcessor——高性能多媒體
R系列——Real-timeController——實時響應
M系列——Micro-Controller——嵌入式
微控制器的內部結構
CPU
上圖中右邊就是之前概念CPU的實際表達ALU運算邏輯單元。
運算邏輯單元完成邏輯和數學的運算
兩個輸入數據——A和B
一個指令——OP,要對A和B做什麼運算
輸出數據——Result和Flags(標誌位)
怎麼理解標誌位
如果給ALU下面幾種運算
A+B=C
如果這個ALU是一個4bit的運算單元,則當計算加法時,可能會出現C大於15(0x1111),這時會出現溢出標誌位用來表示計算結果是否溢出。
A>B?
CPU在做比較的話,實際上是做了A-B的運算,而我們想要的結果實際上就是負數標誌,同樣也是在標誌位中體現。
問題:ALU計算得到的結果要存在哪裏呢?——寄存器
寄存器組
寄存器是由電路實現的保存數據的單元。
在CPU中,有一個寄存器就是用來專門保存ALU計算後的標誌位,每條指令所能影響的狀態位是不一樣的,這類寄存器被稱爲程序狀態寄存器(PSR寄存器),還有被稱爲CCR寄存器,
這個寄存器中到底要存哪些狀態信息?
不同的芯片,對應的狀態信息也有所區別,但是一般而言都要包括以下幾個標誌:
Z上一個運算得到了0的結果
N上一個運算得到了一個負數
O上一個運算溢出了
C上一個運算出現了進位
在CPU的設計當中,下圖中這樣的寄存器可以有若干個。
寄存器用於臨時保存/獲取操作數
任何CPU都包含了若干個通用/專用寄存器
寄存器的數目和位寬是衡量CPU的重要指標
CPU內部的寄存器個數有限,其實是無法滿足程序的要求,因此出現了下圖的結構
上圖中的DataMemory不再是CPU的組成部分,對Memory的訪問要比對寄存器的訪問慢很多
地址與存儲器的關係
如果要訪問CPU外部的DataMemory,如何實現?
對於存儲器,其結構如下:
上圖中的0x0003這個地址存的數據就是0x44
類比一下,一定意義上來說,程序的存儲也是這個概念。
指令集
堆棧
棧是一段連續的存儲器空間
堆棧按照後入先出的工作方式
只能從/向堆棧的頂部加入或取出數據
按照這個邏輯,我們現在還缺少一個片外的存儲器,用來給堆棧用。
我們需要有一個類似指針的東西,指明從某個位置開始的存儲器作爲堆棧來使用。
堆棧空間和變量空間是使用同一端存儲空間
變量空間從低地址向搞地質劃分(例如C語言編程時聲明的全局變量)
堆棧空間從高地址向低地址增長
這就帶來一個新的問題:
存儲器的空間是有限的,當某個時間點,堆棧達到一個衝突點的時候,出現了堆棧溢出。
堆?
堆是一個進程開啓之後,系統分配給它的空間,一般這個空間是全局的,系統中所有動態分配的對象(比如指針)都是在這個空間上分配的。
堆裏的數據是有數據結構的,其空間佔用是不連續的。
在沒有OS的嵌入式系統中,通常不使用堆。
通常,我們把上圖中紅色框中的寄存器稱爲寄存器組,也可以稱爲編程模型。
中斷
中斷與輪詢
輪詢:
週期連續地檢查外部事件是否發生
消耗大量CPU的處理事件
需要和其他功能代碼結合
由於CPU需要處理其他事件,可能丟失關鍵事件
中斷:
用硬件來判斷是否發生外部事件並通知CPU
專用的中斷服務程序來處理事件
中斷是一個需要CPU立即處理的內部或外部事件
內部事件
定時器時間到
AD變換結束
…
外部事件
按鍵動作
發生外部通信
中斷:
適用於處理響應要求非常高的事件
適用於處理持續時間非常短的事件
適用於低功耗的應用
程序設計複雜
中斷允許/禁止
全局中斷控制
時鐘/復位
存儲器
外設
ARM體系結構
32bitMCURegisterFile(ARMCortexM)
嵌入式系統
ARM
發表評論
登录
所有評論
還沒有人評論,想成為第一個評論的人麼?請在上方評論欄輸入並且點擊發布.
相關文章
請問如何獲得DS-5的試用版許可證license?獲得後如何安裝?
1、安裝DS-5軟件。
2、運行EclpseforDS-5,選擇Help->ARMLicenseManager菜單,出現“ARMLicenseManager”對話框。
3、點擊ObtainLicense,出現的Obtain
hank_fan5
2020-07-0710:12:49
一些C語言慣用法
花了三週時間看完了《C語言程序設計與現代方法》,全書概念講解細緻嚴謹,知其然的同時更知其所以然。
示例程序嚴整規範,着重培養良好的編程習慣。
習題質量平均水準高(每章我選做了部分),而且還提供了講義和在線資源。
無論是對於初學者入門還是
知之不如行之
2020-07-0620:06:42
STM32mini使用UCOSII信號量和郵箱實現任務掛起和恢復
本文結構1.UCOSII原理2.UCOSII實驗代碼
1.UCOSII原理
UCOSII是一個可以基於ROM運行的、可裁減的、搶佔式、實時多任務內核,具有高度可
移植性,特別適合於微處理器和控制器,是和很多商業操作系統性能相當
shizheng_Li
2020-07-0618:40:42
STM32F1迷你板外部中斷
開始學習外部中斷的基本知識
中斷優先級分組管理
CortexM3內部支持256箇中斷,其中包含了16個內核中斷和240個外部中斷,並且具有256
級的可編程中斷設置。
STM32F1系列有84箇中斷,包括16個內核
shizheng_Li
2020-07-0618:40:42
[記錄]AArch64異常
AArch64異常
Synchronous
Asynchronous
-IRQ
-FIQ
-SError
Synchronousexceptionsinclude
-Servicecall:SVCs,SMC
Big2chris
2020-07-0714:01:43
如何makemenuconfig和makexconfig
在ubuntu系統中,要編譯內核,還需要安裝一系列相應的工具纔行。
這篇文章,正是針對這一過程的一次記錄,目標是可以通過makemenuconfig或makexconfig配置內核參數----------------------
zhao
2020-07-0706:14:50
armclang使用instrumentfunction分析函數執行流程
1、添加編譯選項
armcc編譯選項添加--gnu_instrument (比如CFLAGS+= --gnu_instrument)
armclang編譯選項添加-finstrument-functions(比如CFLA
maimang1001
2020-07-0702:36:25
Android手機“核心科技”---Vibrator(馬達)驅動分析
前言
我的博客已經斷更很久了,因爲疫情的原因沒能開學,也無法去公司報道實習,在家十分的頹廢,學習的時間零零散散,更是沒有什麼時間來寫博客的@@(鐵廢物)。
最近疫情好轉,自己也來深圳這邊某知名IC廠商(同樣也讓人喊YES的那個)實習
爱吃肉的大高个
2020-07-0622:28:23
Uboot通過網口下載內核時出現的問題處理
uboot移植成功了,想通過網口下載內核,可是以前從未用過網口下載過東西,遇到了很多問題,就把他們一一記錄了下來:
首先我使用了一個printenv的命令,接着出現了uboot的環境信息:
[[email protected]
enjoymylinux
2020-07-0620:27:26
基於qq2440開發平臺的uboot移植(1)
在嵌入式系統中,bootloader起到了一個配置硬件、創建軟件執行環境和調試(僅在開發階段對於開發人員有用)的作用。
本文以目前功能最強大的bootloader--uboot爲例,記錄了我將uboot一直到QQ2440(
enjoymylinux
2020-07-0620:27:16
ARM指令下的特殊符號
總結一下arm指令裏幾個特殊符號的意義
特殊符號
對應指令含義
=
DCB分配一片連續的字節存儲單元並用指定的數據初始化
&
DCD分配一片連續的字存儲單元並用指定的數據初始化
%
SPAC
魔琴师
2020-07-0616:05:47
GNUARM彙編
前言:
以前用ARM的IDE工具,使用的是ARM標準的彙編語言。
現在要使用GNU的工具,當然要了解一點GNUARM彙編的不同之處。
其實非常的簡單,瀏覽一下文檔然後再看看程序就完全可以搞定了,或者你硬着頭皮看GNUARM的彙編程序,用
魔琴师
2020-07-0616:05:47
S3C2440SDRAM
http://blog.csdn.net/mr_raptor/article/details/6555786
++++++++++++++++++++++++++++++++++++++++++
SDRAM(Synchronous
zhangwenjianqin
2020-07-0603:22:06
U-boot的環境變量:bootcmd和bootargs
u-bootcmd
前面有說過bootcmd是自動啓動時默認執行的一些命令,因此你可以在當前環境中定義各種不同配置,不同環境的參數設置,然後設置bootcmd爲你經常使用的那種參數。
u-bootargs
bootargs
zhangwenjianqin
2020-07-0603:21:56
CC1101配置
CC1101_MDMCFG2
[6:4]MOD_FORMAT[2:0]
ThemodulationformatoftheradiosignalASKisonlysupportedforoutputpow
木森ZN
2020-07-0515:04:21
S
Sprinkle_WPD
24小時熱門文章
最新文章
[arm微控制器與嵌入式系統]從CPU到MCU
[Prescan]Prescan中Sensor學習
[Simulink]基於模型的測試與驗證學習筆記_Step4:TestingBySimulation
[Simulink]MBD開發嵌入式軟件的C語言基礎
[ARM微控制器與嵌入式系統]從晶體管到CPU
最新評論文章
一個神奇的CSDN繁體版盜版網站-臺部落(https://www.twblogs.net/u/5b8f102c2b71771883499d6b)
一個夢
在星輝斑斕裏放歌
2018-07-31
短故事
我的時代
我丟了
光
那是一幅畫
這是怎麼了
延伸文章資訊
- 1【你所不知道的Arduino】Arduino到底是什麼? MCU又是什麼?
基於看過很多學校同學、老師甚至是從業工程師對於Arduino及MCU都有著不少誤解,所以分享此篇 ... 【若需要嵌入式系統技術輔導課程可來信洽談合作方式: ...
- 2嵌入式系統基礎知識:什麼是微控制器MCU - IT閱讀
它們包含記憶體,IO和CPU以及同一晶片。這大大減小了尺寸,使其成為小型嵌入式系統的理想選擇,但這意味著在效能和靈活性方面存在折衷 ...
- 3許多人對於8051 MCU常有的錯誤觀念討論與闢除(2020/10/12 ...
8051 MCU好教材分享& 錯誤觀念闢除] 對於想學MCU(單晶片微控制器)韌體、嵌入式系統硬體(嵌入式處理器架構、外部電源電路、感測器/馬達介面電路、 ...
- 4[arm微控制器與嵌入式系統] 從CPU到MCU - 台部落
CPU是計算機/微控制器的核心,進行算數/邏輯運算MCU? MicroController Unit 微控制器是一個完整的計算機系統,在單個芯片上包含了處理器、存儲器和 ...
- 5嵌入式設備里,SOC與MCU的區別是什麼? - GetIt01
公司方案里由MCU方案和SOC方案,沒學過嵌入式,完全看不出區別?SOC是多了個簡單的操作系統嗎?MCU:微控制器,可以跑程序的數字邏輯晶元,就是內核加外設。解釋...