[arm微控制器與嵌入式系統] 從CPU到MCU - 台部落

文章推薦指數: 80 %
投票人數:10人

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 短故事 我的時代 我丟了 光 那是一幅畫 這是怎麼了



請為這篇文章評分?