
單片機、Cortex-M、Linux它們和嵌入式有什么區(qū)別? 跑 Linux 操作系統(tǒng)需要什么處理器?ARM9、ARM11? Cortex-M比ARM9更新,為什么不能跑Linux?
ARM和Cortex-M
ARM處理器的體系結(jié)構(gòu)定義了指令集(ISA)和基于這一體系結(jié)構(gòu)下處理器的模型。ARM的指令集從ARMv1發(fā)展到今天的ARMv9,每一次體系結(jié)構(gòu)的修改都會添加實用技術(shù)。

Cotex-M:主要指微處理器;
Cotex-R:主要指實時性處理器;
Cotex-A:主要指應(yīng)用型處理器;
更多介紹可以參看文章:STM32、Cortex-M3和ARMv8-M之間的關(guān)聯(lián)。
內(nèi)存管理單元MMU
MMU:Memory Management Unit,內(nèi)存管理單元。

圖2 MMU的地位
圖3 內(nèi)存管理機制
Liunx操作系統(tǒng)
操作系統(tǒng)通常分為實時操作系統(tǒng)和非實時操作系統(tǒng)。
1.實時操作系統(tǒng)大多為單進(jìn)程、多線程(多任務(wù)),因此不涉及到線程間的地址空間分配,不需要使用MMU,例如ucos、 FreeRTOS、 RT-Thread等。
2.Linux系統(tǒng)屬于非實時性操作體統(tǒng),多進(jìn)程是其主要特點,可以參考文章:Linux是實時系統(tǒng)還是分時操作系統(tǒng)?

圖4 shell 1中的bash地址

圖5 shell 2中的bash地址

圖6 進(jìn)程樹
總結(jié)
通過上述描述我們可以知道,Linux操作系統(tǒng)對MMU(內(nèi)存管理單元)有極強的依賴,若在沒有內(nèi)存管理單元的CPU中運行Linux,恐怕整個系統(tǒng)只能停留在Uboot階段了。
由于ARM的Cortex-M處理器沒有內(nèi)存管理單元,,一般來說不建議跑Linux操作系統(tǒng)。
當(dāng)然,任何事情都不是絕對的,如果你重寫了Linux內(nèi)核且搭配足夠大的內(nèi)存芯片,從理論上來說是可以省掉MMU的。
但是,這樣的工作量,真的值得嗎?實際上,MMU就是為了解決操作系統(tǒng)越來越復(fù)雜的內(nèi)存管理而產(chǎn)生的。

關(guān)注『面包板社區(qū)』,后臺回復(fù)"技術(shù)關(guān)鍵詞",領(lǐng)取300 G學(xué)習(xí)資料包(如:電源、電機、嵌入式、信號系統(tǒng)、模電、華為、電子學(xué)、電路、c語言...)
一個清晰的LCD驅(qū)動編寫思路(附代碼分析)
STM32如何高效接收串口數(shù)據(jù)?
MOS管驅(qū)動電路設(shè)計,如何讓MOS管快速開啟和關(guān)閉?
電感四條腿?沒錯,來了解一下!
“人類高質(zhì)量電路板”都是怎么做出來的?
經(jīng)典:視頻講解 I2C
相位補償?shù)降资鞘裁垂恚?/p>
怎么樣的PCB才能承受住100 A的電流?
陀螺儀工作原理【視頻】
復(fù)數(shù)的物理意義是什么?
最全電源電路圖詳解
單片機11種常見的電路設(shè)計模塊
詳解ModBus
▼點擊閱讀原文,下載《linux自學(xué)大全》