chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

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

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

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

NXP的Cortex-M系列為例做簡(jiǎn)要介紹Linux開(kāi)發(fā)

AGk5_ZLG_zhiyua ? 來(lái)源:互聯(lián)網(wǎng) ? 作者:佚名 ? 2018-05-20 08:00 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

本文導(dǎo)讀

單片機(jī)與應(yīng)用處理器的核心區(qū)別到底是什么呢?是核心主頻的差異?還是Linux系統(tǒng)的支持?又或者是處理器的架構(gòu)?本文將以NXP的Cortex-M系列為例做簡(jiǎn)要介紹。

一、Cortex-M的定位

處理器的體系結(jié)構(gòu)定義了指令集(ISA)和基于這一體系結(jié)構(gòu)下處理器的程序員模型,通俗來(lái)講就是相同的ARM體系結(jié)構(gòu)下的應(yīng)用軟件是兼容的。從ARMv1到ARMv8,每一次體系結(jié)構(gòu)的修改都會(huì)添加實(shí)用技術(shù)。

在ARMv7版本中,內(nèi)核架構(gòu)首次從單一款式變成3種款式。Cortex-M系列屬于ARMv7結(jié)構(gòu)下的一個(gè)款式:款式M??钍組包含的處理器有Cortex-M0、Cortex-M1、Cortex-M3、Cortex-M4以及Cortex-M7,以上處理器常被用于低成本、低功耗、高可靠的嵌入式實(shí)時(shí)系統(tǒng)中。它們既可以用于“裸片”開(kāi)發(fā)又能運(yùn)行實(shí)時(shí)操作系統(tǒng),比如us/os-ll、VxWorks以及AWorks(ZLG致遠(yuǎn)電子開(kāi)發(fā))等。

圖1 ARMv7下的Cortex系列

  • 款式A:高性能的處理器級(jí)平臺(tái),性能比肩計(jì)算機(jī)。

  • 款式R:定位應(yīng)用于高端嵌入式系統(tǒng),高可靠及高時(shí)效性。

  • 款式M:用于深度嵌入、定制的嵌入式系統(tǒng)。

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

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

內(nèi)存管理單元簡(jiǎn)稱(chēng)MMU,它負(fù)責(zé)虛擬地址到物理地址的映射,并提供硬件機(jī)制的內(nèi)存訪(fǎng)問(wèn)權(quán)限檢查。在多用戶(hù)、多進(jìn)程的操作系統(tǒng)中,MMU使得各個(gè)用戶(hù)進(jìn)程都有獨(dú)立的地址空間。

圖2 MMU的地位

任何微控制器都存在一個(gè)程序能夠產(chǎn)生的地址集和,被稱(chēng)為虛擬地址范圍。以32為機(jī)為例,虛擬地址范圍為0~0xFFFFFFFF (4G)。當(dāng)該控制器尋址一個(gè)256M的內(nèi)存時(shí),它的可用地址范圍被限定為0x00000000~0x0FFFFFFF(256M)。在沒(méi)有MMU的控制器中,虛擬地址被直接發(fā)送到內(nèi)存總線(xiàn)上,以讀寫(xiě)該地址下的物理存儲(chǔ)器。在擁有MMU的控制器中,虛擬地址首先被發(fā)送到MMU中,被映射為物理地址后再發(fā)送到內(nèi)存總線(xiàn)上。

圖3 內(nèi)存管理機(jī)制

注:上圖僅簡(jiǎn)單反映內(nèi)存管理的映射機(jī)制,權(quán)限映射、TLB快表、頁(yè)表等概念不做深入討論。

虛擬內(nèi)存管理最主要的作用是讓每個(gè)進(jìn)程有獨(dú)立的地址空間。不同進(jìn)程中的同一個(gè)虛擬地址被MMU映射到不同的物理地址,并且在某一個(gè)進(jìn)程中訪(fǎng)問(wèn)任何地址都不可能訪(fǎng)問(wèn)到另外一個(gè)進(jìn)程的數(shù)據(jù),這樣使得任何一個(gè)進(jìn)程由于執(zhí)行錯(cuò)誤指令或惡意代碼導(dǎo)致的非法內(nèi)存訪(fǎng)問(wèn)都不會(huì)意外改寫(xiě)其它進(jìn)程的數(shù)據(jù),不會(huì)影響其它進(jìn)程的運(yùn)行,從而保證整個(gè)系統(tǒng)的穩(wěn)定性。另一方面,每個(gè)進(jìn)程都認(rèn)為自己獨(dú)占整個(gè)虛擬地址空間,這樣鏈接器和加載器的實(shí)現(xiàn)會(huì)比較容易,不必考慮各進(jìn)程的地址范圍是否沖突。

三、Linux系統(tǒng)

一般將操作系統(tǒng)分為實(shí)時(shí)操作系統(tǒng)和非實(shí)時(shí)操作系統(tǒng)。實(shí)時(shí)操作系統(tǒng)大多為單進(jìn)程、多線(xiàn)程(多任務(wù)),因此不涉及到線(xiàn)程間的地址空間分配,不需要使用MMU,例如VxWorks。Linux系統(tǒng)屬于非實(shí)時(shí)性操作體統(tǒng),多進(jìn)程是其主要特點(diǎn)。

以Ubuntu為例,打開(kāi)一個(gè)shell并且查看bash進(jìn)程的地址范圍如圖4,它的地址范圍為0x0000000000400000~0xffffffffff600000。

圖4 shell 1中的bash地址

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

圖5 shell 2中的bash地址

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

圖6 進(jìn)程樹(shù)

四、總結(jié)

綜合以上內(nèi)容,Linux系統(tǒng)對(duì)內(nèi)存管理單元有極強(qiáng)的依賴(lài),若在沒(méi)有MMU的處理器中運(yùn)行Linux,恐怕整個(gè)系統(tǒng)只能停留在Uboot階段了。由于Cortex-m處理器沒(méi)有內(nèi)存管理單元,因此跑不了Linux系統(tǒng)。任何事情都不是絕對(duì)的,如果你重寫(xiě)了Linux內(nèi)核且搭配足夠大的內(nèi)存芯片,從理論上來(lái)說(shuō)是可以省掉MMU的。但是,這樣的工作量,真的值得嗎?實(shí)際上,MMU就是為了解決操作系統(tǒng)越來(lái)越復(fù)雜的內(nèi)存管理而產(chǎn)生的。

五、拓展部分

很大一部分開(kāi)發(fā)者選用嵌入式Linux系統(tǒng)未能發(fā)揮出它的優(yōu)勢(shì),僅僅是為了獲得開(kāi)發(fā)上的便利,比如以太網(wǎng)、4G上云、LCD驅(qū)動(dòng)、文件系統(tǒng)、圖像識(shí)別、python應(yīng)用等等。那么有沒(méi)有方法既能使用傳統(tǒng)高實(shí)時(shí)性、低成本的單片機(jī)又不用面對(duì)繁瑣的硬件驅(qū)動(dòng)開(kāi)發(fā)呢?ZLG致遠(yuǎn)電子推出的全新AWorks平臺(tái)——IoT物聯(lián)網(wǎng)生態(tài)系統(tǒng)正是為此而生。


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

    關(guān)注

    61

    文章

    1410

    瀏覽量

    199039
  • Linux
    +關(guān)注

    關(guān)注

    88

    文章

    11806

    瀏覽量

    219504
  • MMU
    MMU
    +關(guān)注

    關(guān)注

    0

    文章

    92

    瀏覽量

    19284

原文標(biāo)題:Cortex-M處理器跑得了Linux嗎?

文章出處:【微信號(hào):ZLG_zhiyuan,微信公眾號(hào):ZLG致遠(yuǎn)電子】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

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

    開(kāi)發(fā)支持:設(shè)計(jì)人員可從ARM生態(tài)系統(tǒng)的許多工具中選擇,或者使用單一、全面的工具鏈支持所有Cortex-M器件。 架構(gòu)擴(kuò)展:ARM還提供了一系列的架構(gòu)擴(kuò)展用于滿(mǎn)足下一代處理器的需求,如DSP擴(kuò)展、SIMD指令、浮點(diǎn)
    發(fā)表于 11-26 07:22

    簡(jiǎn)單介紹NXPCortex-M系列ARM

    浮點(diǎn)運(yùn)算。也可以理解是DSP+M0的架構(gòu),M0用來(lái)配置智能I/O口、外圍接口以及事件的處理。M4則是數(shù)字信號(hào)控制器。以上是NXPCortex
    發(fā)表于 03-29 10:45

    基于Cortex-M處理器產(chǎn)品開(kāi)發(fā)為什么受歡迎

    基于Cortex-M處理器產(chǎn)品開(kāi)發(fā)為什么受歡迎雖然Cortex-M系列處理器有非常多的特性,但是很容易使用,差不多所有的
    發(fā)表于 08-27 16:11

    基于Cortex-M處理器產(chǎn)品開(kāi)發(fā)受歡迎的原因在這里

    雖然Cortex-M系列處理器有非常多的特性,但是很容易使用,差不多所有的開(kāi)發(fā)都可以用像C語(yǔ)言這樣的高級(jí)編程語(yǔ)言。 雖然基于Cortex-M系列
    發(fā)表于 07-04 03:25

    CORTEX-M系列芯片介紹

    1.1 CORTEX-M系列芯片介紹CORTEX-M4為準(zhǔn)1.1.1 CORTEX-M4的特點(diǎn)①采用了先進(jìn)的
    發(fā)表于 03-19 20:27

    ARM Cortex-M堆棧機(jī)制介紹

      大家好,我是痞子衡,是正經(jīng)搞技術(shù)的痞子。今天痞子衡給大家介紹的是ARM Cortex-M堆棧機(jī)制?! 〗裉旖o大家分享的這篇依舊是2016年之前痞子衡寫(xiě)的技術(shù)文檔,花了點(diǎn)時(shí)間重新編排了一下
    發(fā)表于 12-16 06:26

    介紹Cortex-A和Cortex-M的TrustZone之間的差異

    相信關(guān)注安全和嵌入式的開(kāi)發(fā)者對(duì)TrustZone都不陌生,最近看到有網(wǎng)友在問(wèn)Cortex-A和Cortex-M的TrustZone之間的差異,我們來(lái)簡(jiǎn)單介紹下。Arm在2003年的Ar
    發(fā)表于 07-13 14:45

    NXPCortex-M系列為基礎(chǔ)的linux系統(tǒng)與內(nèi)存管理單元的關(guān)系詳解

    單片機(jī)與應(yīng)用處理器的核心區(qū)別到底是什么呢?是核心主頻的差異?還是Linux系統(tǒng)的支持?又或者是處理器的架構(gòu)?本文將以NXPCortex-M系列為
    發(fā)表于 07-12 12:52 ?2047次閱讀
    以<b class='flag-5'>NXP</b>的<b class='flag-5'>Cortex-M</b><b class='flag-5'>系列為</b>基礎(chǔ)的<b class='flag-5'>linux</b>系統(tǒng)與內(nèi)存管理單元的關(guān)系詳解

    Cortex-M系列處理器介紹及其特性參數(shù)

    本文首先介紹Cortex-M處理器的家族成員,其次介紹Cortex-M處理器的特性,具體的跟隨小編一起來(lái)了解一下。
    發(fā)表于 04-18 17:17 ?2.1w次閱讀
    <b class='flag-5'>Cortex-M</b><b class='flag-5'>系列</b>處理器<b class='flag-5'>介紹</b>及其特性參數(shù)

    關(guān)于STM32和Cortex-M內(nèi)核系列介紹(1)

    Cortex-M內(nèi)核系列和STM32-講座
    的頭像 發(fā)表于 07-05 01:07 ?8979次閱讀

    關(guān)于STM32與Cortex-M內(nèi)核系列介紹(2)

    Cortex-M內(nèi)核系列和STM32-講座3
    的頭像 發(fā)表于 07-05 00:45 ?5507次閱讀

    關(guān)于Cortex-M 調(diào)試應(yīng)用的介紹

    Cortex-M 調(diào)試應(yīng)用
    的頭像 發(fā)表于 07-10 00:56 ?3135次閱讀

    米爾科技Cortex-M Prototyping System +介紹

    經(jīng)濟(jì)實(shí)惠的主板,作為ARM?Versatile?Express系列開(kāi)發(fā)板的一部分。他們提供兩種FPGA的選擇,用于原型設(shè)計(jì)基于Cortex-M的設(shè)計(jì)和一系列不同的調(diào)試選項(xiàng)。它提供了一
    的頭像 發(fā)表于 11-14 10:45 ?2791次閱讀
    米爾科技<b class='flag-5'>Cortex-M</b> Prototyping System +<b class='flag-5'>介紹</b>

    Cortex-MLinux操作系統(tǒng)能行嗎

    單片機(jī)、Cortex-MLinux它們和嵌入式有什么區(qū)別? 跑 Linux 操作系統(tǒng)需要什么處理器?ARM9、ARM11? Cortex-M比ARM9更新,為什么不能跑
    的頭像 發(fā)表于 07-19 09:35 ?2746次閱讀
    <b class='flag-5'>Cortex-M</b>跑<b class='flag-5'>Linux</b>操作系統(tǒng)能行嗎

    Cortex-M可以跑Linux操作系統(tǒng)嗎?

    Cortex-M可以跑Linux操作系統(tǒng)嗎?
    發(fā)表于 12-01 11:36 ?2次下載
    <b class='flag-5'>Cortex-M</b>可以跑<b class='flag-5'>Linux</b>操作系統(tǒng)嗎?