關注+星標公眾號,不錯過精彩內容
編排 | strongerHuang
微信公眾號 | strongerHuang
單片機、Cortex-M、Linux它們和嵌入式有什么區別?
跑 Linux 操作系統需要什么處理器?ARM9、ARM11?
Cortex-M比ARM9更新,為什么不能跑Linux?
ARM和Cortex-M
ARM處理器的體系結構定義了指令集(ISA)和基于這一體系結構下處理器的模型。ARM的指令集從ARMv1發展到今天的ARMv9,每一次體系結構的修改都會添加實用技術。
Cotex-M:主要指微處理器;
Cotex-R:主要指實時性處理器;
Cotex-A:主要指應用型處理器;
更多介紹可以參看文章:STM32、Cortex-M3和ARMv8-M之間的關聯。
內存管理單元MMU
MMU:Memory Management Unit,內存管理單元。
圖2 MMU的地位
圖3 內存管理機制
Liunx操作系統
操作系統通常分為實時操作系統和非實時操作系統。
1.實時操作系統大多為單進程、多線程(多任務),因此不涉及到線程間的地址空間分配,不需要使用MMU,例如ucos、 FreeRTOS、 RT-Thread等。
2.Linux系統屬于非實時性操作體統,多進程是其主要特點,可以參考文章:Linux是實時系統還是分時操作系統?
圖4 shell 1中的bash地址
圖5 shell 2中的bash地址
圖6 進程樹
總結
通過上述描述我們可以知道,Linux操作系統對MMU(內存管理單元)有極強的依賴,若在沒有內存管理單元的CPU中運行Linux,恐怕整個系統只能停留在Uboot階段了。
由于ARM的Cortex-M處理器沒有內存管理單元,,一般來說不建議跑Linux操作系統。
當然,任何事情都不是絕對的,如果你重寫了Linux內核且搭配足夠大的內存芯片,從理論上來說是可以省掉MMU的。
但是,這樣的工作量,真的值得嗎?實際上,MMU就是為了解決操作系統越來越復雜的內存管理而產生的。
聲明:本文部分素材來源網絡,版權歸原作者所有。如涉及作品版權問題,請與我聯系刪除。
點擊“閱讀原文”查看更多分享。