
單片機(jī)、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)的修改都會(huì)添加實(shí)用技術(shù)。

Cotex-M:主要指微處理器;
Cotex-R:主要指實(shí)時(shí)性處理器;
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)存管理機(jī)制
Liunx操作系統(tǒng)
操作系統(tǒng)通常分為實(shí)時(shí)操作系統(tǒng)和非實(shí)時(shí)操作系統(tǒng)。
1.實(shí)時(shí)操作系統(tǒng)大多為單進(jìn)程、多線程(多任務(wù)),因此不涉及到線程間的地址空間分配,不需要使用MMU,例如ucos、 FreeRTOS、 RT-Thread等。
2.Linux系統(tǒng)屬于非實(shí)時(shí)性操作體統(tǒng),多進(jìn)程是其主要特點(diǎn),可以參考文章:Linux是實(shí)時(shí)系統(tǒng)還是分時(shí)操作系統(tǒng)?

圖4 shell 1中的bash地址

圖5 shell 2中的bash地址

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


1.2021年第9期《單片機(jī)與嵌入式系統(tǒng)應(yīng)用》電子刊新鮮出爐!
2.蘋果進(jìn)軍RISC-V
3.我是做驅(qū)動(dòng)還是應(yīng)用更好?
4.嵌入式項(xiàng)目生成器,了解一下!
5.嵌入式還有哪些風(fēng)口值得入?
6.教你在RISC-V中使用DSP指令!

免責(zé)聲明:本文系網(wǎng)絡(luò)轉(zhuǎn)載,版權(quán)歸原作者所有。如涉及作品版權(quán)問題,請(qǐng)與我們聯(lián)系,我們將根據(jù)您提供的版權(quán)證明材料確認(rèn)版權(quán)并支付稿酬或者刪除內(nèi)容