日B视频 亚洲,啪啪啪网站一区二区,91色情精品久久,日日噜狠狠色综合久,超碰人妻少妇97在线,999青青视频,亚洲一区二卡,让本一区二区视频,日韩网站推荐

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Cortex-M跑Linux操作系統(tǒng)能行嗎

奈因PCB電路板設(shè)計 ? 來源:致遠電子、strongerHuang ? 作者:致遠電子、strong ? 2021-07-19 09:35 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

單片機、Cortex-M、Linux它們和嵌入式有什么區(qū)別?

跑 Linux 操作系統(tǒng)需要什么處理器?ARM9、ARM11?

Cortex-M比ARM9更新,為什么不能跑Linux?

相信很多小伙伴都有類似這樣的疑問,下面圍繞Cortex-M、 ARM、 Linux來講講相關(guān)內(nèi)容。

ARM和Cortex-M

ARM處理器的體系結(jié)構(gòu)定義了指令集(ISA)和基于這一體系結(jié)構(gòu)下處理器的模型。ARM的指令集從ARMv1發(fā)展到今天的ARMv9,每一次體系結(jié)構(gòu)的修改都會添加實用技術(shù)。

在ARMv6之前,其內(nèi)核指令集架構(gòu)都是單一款式,但在ARMv7開始,其指令集架構(gòu)變成3種款式,即目前大家熟知的Cotex-M、 Cotex-R、 Cotex-A,或者ARMv7-A、ARMv7-R、 ARMv7-M這三款。

Cotex-M:主要指微處理器;

Cotex-R:主要指實時性處理器;

Cotex-A:主要指應(yīng)用型處理器;

更多介紹可以參看文章:STM32、Cortex-M3和ARMv8-M之間的關(guān)聯(lián)。

值得注意的是,Cortex-M下的處理器沒有內(nèi)存管理單元MMU。

內(nèi)存管理單元MMU

MMU:Memory Management Unit,內(nèi)存管理單元。

內(nèi)存管理單元主要負責(zé)從虛擬地址到物理地址的映射,并在硬件層對內(nèi)存訪問權(quán)限的檢查。

在Linux等多用戶、多進程的操作系統(tǒng)中,MMU使得各個用戶進程都有獨立的地址空間,以防止內(nèi)存越界。

MCU都有一個地址集和,被稱為虛擬地址范圍。以Cortex-M 32為機為例,虛擬地址范圍為0 ~ 0xFFFFFFFF (4G地址空間)。

當(dāng)該控制器尋址一個256M的內(nèi)存時,它的可用地址范圍被限定為0 ~ 0x0FFFFFFF(256M)。

1.在沒有內(nèi)存管理的處理器中,虛擬地址被直接發(fā)送到內(nèi)存總線上,以讀寫該地址下的物理存儲器。

這里拓展閱讀:無MMU搶占式操作系統(tǒng)的搶占工作原理

2.在有內(nèi)存管理的控制器中,虛擬地址首先被發(fā)送到MMU中,被映射為物理地址后再發(fā)送到內(nèi)存總線上。

注:上圖僅簡單反映內(nèi)存管理的映射機制,其他暫不做討論。

MMU虛擬內(nèi)存管理最主要的作用是讓每個進程有獨立的地址空間。

不同進程中的同一個虛擬地址被MMU映射到不同的物理地址,并且在某一個進程中訪問任何地址都不可能訪問到另外一個進程的數(shù)據(jù),這樣使得任何一個進程由于執(zhí)行錯誤指令或惡意代碼導(dǎo)致的非法內(nèi)存訪問都不會意外改寫其它進程的數(shù)據(jù),不會影響其它進程的運行,從而保證整個系統(tǒng)的穩(wěn)定性。

另一方面,每個進程都認為自己獨占整個虛擬地址空間,這樣鏈接器和加載器的實現(xiàn)會比較容易,不必考慮各進程的地址范圍是否沖突。

Liunx操作系統(tǒng)

操作系統(tǒng)通常分為實時操作系統(tǒng)和非實時操作系統(tǒng)。

1.實時操作系統(tǒng)大多為單進程、多線程(多任務(wù)),因此不涉及到線程間的地址空間分配,不需要使用MMU,例如ucos、 FreeRTOSRT-Thread等。

2.Linux系統(tǒng)屬于非實時性操作體統(tǒng),多進程是其主要特點,可以參考文章:Linux是實時系統(tǒng)還是分時操作系統(tǒng)?

以Ubuntu為例,打開一個shell并且查看bash進程的地址范圍如圖4,它的地址范圍為0x0000000000400000~0xffffffffff600000。

01def776-e412-11eb-a97a-12bb97331649.jpg

圖4 shell 1中的bash地址

我們打開另一個shell,查看該shell中bash進程的地址范圍,如圖5。不難發(fā)現(xiàn),兩個不同bash進程的地址范圍完全相同。其實操作系統(tǒng)或者用戶在fork()進程時完全不需要考慮物理內(nèi)存的地址分配,該工作由微控制器的內(nèi)存管理單元MMU來做。

01ea21aa-e412-11eb-a97a-12bb97331649.jpg

既然是多進程依賴了內(nèi)存管理單元,那么在使用嵌入式Linux時只開一個進程可以嗎?肯定是不可行的!開機后即使用戶什么都不做,可見的系統(tǒng)運行必須的進程已經(jīng)運行了幾十至上百個,如圖6。

01f72fd0-e412-11eb-a97a-12bb97331649.png

總結(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)生的。

素材來源 | 致遠電子

編排 | strongerHuang

版權(quán)歸原作者所有,如有侵權(quán),請聯(lián)系刪除。

編輯:jq

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • Cortex-M
    +關(guān)注

    關(guān)注

    2

    文章

    234

    瀏覽量

    31194

原文標(biāo)題:Cortex-M可以跑Linux操作系統(tǒng)嗎?

文章出處:【微信號:pcbgood,微信公眾號:奈因PCB電路板設(shè)計】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    Cortex-M0和Cortex-M0+的區(qū)別

    ),但是只使用了Thumb ISA的一個子集(56條指令),多數(shù)指令是16位,只有少數(shù)一些事32位。 一般來說,盡管指令具有不同大小,Cortex-M處理器可被歸為精簡指令集架構(gòu)。 支持可選的單周期
    發(fā)表于 01-22 06:23

    最小化ARM Cortex-M CPU功耗的方法與技巧分享

    存儲器,進一步降低整體系統(tǒng)功耗)。   2 中斷控制器節(jié)能技術(shù)   Cortex-M架構(gòu)中的中斷控制器(Nested Vectored Interrupt Controller or NVIC)在
    發(fā)表于 01-21 06:19

    Cortex-M0 處理器介紹

    。作為新一代的處理器,Cortex-M0的設(shè)計進行了許多的改革與創(chuàng)新,如系統(tǒng)存儲器地址映像(system address map)、改善效率并增強確定性的嵌套向量中斷系統(tǒng)(NVIC)與不可屏蔽中斷(NMI)、全新的硬件除錯單元等
    發(fā)表于 01-16 08:04

    操作系統(tǒng)體系結(jié)構(gòu)

    操作系統(tǒng)的體系結(jié)構(gòu)是一個開放的問題。正如上文所述,操作系統(tǒng)在核心態(tài)為應(yīng)用程序提供公共的服務(wù),那么操作系統(tǒng)在核心態(tài)應(yīng)該提供什么服務(wù)、怎樣提供服務(wù)?有關(guān)這個問題的回答形成了兩種主要的體系結(jié)構(gòu):大內(nèi)核和微
    發(fā)表于 01-15 08:19

    Linux 已夠強,國產(chǎn)操作系統(tǒng)為何仍要堅持?

    在中國做技術(shù)的人,或多或少都有過這樣的疑問: “Linux 都這么成熟、這么好用了,國產(chǎn)操作系統(tǒng)還有必要搞嗎?” 這不是少數(shù)人的困惑,而是整個行業(yè)幾十年來反復(fù)討論的問題。 但如果你深入工業(yè)、能源
    的頭像 發(fā)表于 12-25 16:11 ?492次閱讀

    Cortex-M產(chǎn)品的特色

    低功耗設(shè)計:Cortex-M系列處理器核心被設(shè)計為低功耗架構(gòu),適用于移動電源和電池供電的嵌入式系統(tǒng)。 高性能處理:Cortex-M處理器具有高性能的特點,能夠處理復(fù)雜的實時任務(wù),并擁有較高
    發(fā)表于 11-26 07:22

    Cortex-M內(nèi)核中的精確延時的方法

    使用 CYCCNT寄存器來測量執(zhí)行某個任務(wù)所花的周期數(shù),這也可以用作時間基準(zhǔn)相關(guān)的目的(操作系統(tǒng)中統(tǒng)計 CPU使用率可以用到它)?!?Cortex-M中的DWT它有一個32位的寄存器叫CYCCNT
    發(fā)表于 11-21 07:51

    Cortex-M級別的轉(zhuǎn)換

    一、 簡述 Cortex-M 里面有特權(quán)級別的概念,不同級別可以設(shè)定不同的權(quán)限,如何轉(zhuǎn)換特權(quán)級別基本是本章的內(nèi)容。 二、操作模式 ARM M操作模式有兩個: 線程(Thread)模
    發(fā)表于 11-19 07:32

    EV10AS180A模數(shù)轉(zhuǎn)換器支持哪些操作系統(tǒng)

    與這些硬件接口進行交互,從而實現(xiàn)對EV10AS180A的控制和數(shù)據(jù)讀取。系統(tǒng)集成與應(yīng)用場景:在將EV10AS180A集成到具體系統(tǒng)中時,用戶可能會根據(jù)系統(tǒng)需求選擇合適的操作系統(tǒng)(如
    發(fā)表于 11-18 09:18

    單片機的操作系統(tǒng)

    Linux網(wǎng)絡(luò)協(xié)議棧和文件系統(tǒng)(如JFFS2),但實時性較弱,需外擴存儲器。 ? ? VxWorks ?:高效實時操作系統(tǒng),廣泛應(yīng)用于通信、軍事等領(lǐng)域,支持自定義硬件模塊。 ? 其他選擇 ? Keil
    發(fā)表于 11-14 06:18

    請問如何在e203中安裝linux操作系統(tǒng)?

    本人用的板子是Xilinx的XC7A100TFGG484-2L,編譯軟件是vivado2017.4。目前比特流已經(jīng)成功生成,我已經(jīng)把其固化進了板子中?,F(xiàn)在的我想在我固化后的板子里面裝一個linux操作系統(tǒng),應(yīng)該如何做?
    發(fā)表于 11-07 07:32

    Jtti Linux操作系統(tǒng)最常見的10大優(yōu)勢

    Linux操作系統(tǒng)的十大優(yōu)勢 Linux操作系統(tǒng)作為一種開源、自由的系統(tǒng),已經(jīng)廣泛應(yīng)用于個人計算機、服務(wù)器、嵌入式設(shè)備等多個領(lǐng)域。它的多樣化
    的頭像 發(fā)表于 11-06 15:32 ?471次閱讀

    請問NuMicro? Cortex-M? 系列芯片是否支持 I2C 監(jiān)視器功能?

    NuMicro? Cortex-M? 系列芯片是否支持 I2C 監(jiān)視器功能?
    發(fā)表于 08-21 06:04

    樹莓派操作系統(tǒng):版本、特性及設(shè)置完整指南!

    樹莓派操作系統(tǒng)是什么?樹莓派操作系統(tǒng)是由樹莓派基金會專為樹莓派開發(fā)的官方操作系統(tǒng)。它基于DebianLinux發(fā)行版,并針對樹莓派的ARM架構(gòu)進行了專門優(yōu)化。樹莓派操作系統(tǒng)有多個版本,
    的頭像 發(fā)表于 07-28 18:26 ?1894次閱讀
    樹莓派<b class='flag-5'>操作系統(tǒng)</b>:版本、特性及設(shè)置完整指南!

    聚徽廠家解碼——工控機操作系統(tǒng)選擇:Windows、Linux、QNX 如何匹配工業(yè)場景

    在工業(yè)自動化進程不斷推進的當(dāng)下,工控機作為核心設(shè)備,其操作系統(tǒng)的恰當(dāng)選擇對工業(yè)生產(chǎn)的穩(wěn)定性、高效性和安全性起著決定性作用。常見的 Windows、Linux 和 QNX 操作系統(tǒng),各自具備獨特
    的頭像 發(fā)表于 05-29 16:28 ?1868次閱讀
    罗田县| 綦江县| 玉龙| 将乐县| 三明市| 河源市| 托克托县| 渝中区| 原平市| 蕲春县| 金坛市| 洪泽县| 彝良县| 郎溪县| 邯郸市| 雅安市| 上虞市| 吉水县| 盐池县| 武川县| 乐安县| 惠东县| 安岳县| 旺苍县| 桐梓县| 太谷县| 万全县| 南昌市| 老河口市| 凤凰县| 榆林市| 曲沃县| 宝丰县| 辉南县| 晋州市| 崇左市| 平武县| 华容县| 丽江市| 临清市| 枣阳市|