那曲檬骨新材料有限公司

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

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

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

Cortex-M0/M0+/M3/M4處理器是什么鬼?

安芯教育科技 ? 來(lái)源:裸機(jī)思維 ? 2023-04-18 15:07 ? 次閱讀

一、說(shuō)在前面的話

自從Arm在2016年的十月發(fā)布兩款A(yù)rmv8-M架構(gòu)的新處理器Cortex-M23和Cortex-M33以來(lái),已經(jīng)過(guò)去了3年多,而市面上基于這兩款處理器的微控制器產(chǎn)品也剛剛才嶄露頭角。 很多才剛剛通過(guò)開(kāi)發(fā)板熟悉Cortex-M0/M0+/M3/M4處理器的童鞋可能心中又要飄過(guò)彈幕:

誰(shuí)TM告訴我,這個(gè)M23和M33是什么鬼?

從個(gè)位數(shù)一下蹦到兩位數(shù)了喂!

前面十幾位兄弟怎么了?喂!

別說(shuō)跟M3有啥關(guān)系,這以后下第n代是不是就該叫2333333了?

該來(lái)的總會(huì)來(lái),那么如何簡(jiǎn)單粗暴的理解這兩個(gè)全新的處理器呢?以下是傻孩子獨(dú)家特別提供的的無(wú)責(zé)任囫圇吞棗公式:

Cortex-M23 =

Cortex-M0/M0 + 硬件除法器 + 性能提升 +

專(zhuān)門(mén)的棧溢出硬件檢測(cè)+

指令集不可忽略的小動(dòng)作 +

安全擴(kuò)展(TrustZone for Armv8-M) +

MPU開(kāi)發(fā)者模型的友好化改進(jìn)

Cortex-M33 =

Cortex-M3/M4 + 性能提升 +

專(zhuān)門(mén)的棧溢出硬件檢測(cè)+

指令集不可忽略的小動(dòng)作 +

安全擴(kuò)展(TrustZone for Armv8-M)+

MPU開(kāi)發(fā)者模型的友好化改進(jìn)

再簡(jiǎn)單點(diǎn)說(shuō)就是無(wú)敵增強(qiáng)版的“M0/M0+,M3/M4”加“安全擴(kuò)展”。有人說(shuō),Armv8-M的主要功能就是為Cortex-M家族引入TrustZone,這么看來(lái)也是不無(wú)道理的。

1.1增強(qiáng)版的Cortex-M0/M0+

根據(jù)官方的說(shuō)法,Cortex-M23實(shí)現(xiàn)的是Armv8-M架構(gòu)的Baseline子架構(gòu),我們不妨理解為手機(jī)里面的“入門(mén)級(jí)”產(chǎn)品。

Cortex-M23從定位上也非常直接,就是給Cortex-M0/M0+增加個(gè)安全擴(kuò)展。因此,實(shí)際上所有為Cortex-M0/M0+編譯生成的二進(jìn)制代碼基本上都可以“無(wú)修”的在Cortex-M23/M33上執(zhí)行——除非你原本的代碼使用了MPU。此外Cortex-M23居然配備了硬件除法器,這無(wú)疑在原本Cortex-M0和Cortex-M0+主打的8位/16位市場(chǎng)上把“基本配置”又提升了一個(gè)檔次。 指令集上,Cortex-M23師承Armv6-M,除了支持“安全擴(kuò)展”所必須的一系列指令之外,這款入門(mén)級(jí)產(chǎn)品還做了一個(gè)“不可忽略的小動(dòng)作”——也就是說(shuō),除了Cortex-M33以外,Cortex-M23也可以通過(guò)很小的代價(jià)支持“暗代碼(eXecute Only Memory, XOM)”。

什么是暗代碼呢?和“暗物質(zhì)”只能理論上知道它存在卻很難探測(cè)到類(lèi)似——“暗代碼”是一類(lèi)只能由處理器執(zhí)行(取指令)卻根本無(wú)法用任何形式讀取機(jī)器碼(OPCODE)內(nèi)容的程序——也就是人們常說(shuō)的XO(eXecute-Only)代碼。“暗代碼”并不是依靠?jī)?nèi)核來(lái)實(shí)現(xiàn)的,但卻需要編譯器和內(nèi)核共同努力才能支持。這是因?yàn)閄OM本質(zhì)上是芯片廠家在地址空間上劃分出的一段特殊區(qū)域——只能由處理器取指令、用于代碼的運(yùn)行(Instruction Fetch),而不能進(jìn)行普通的數(shù)據(jù)訪問(wèn)(Data Access)。這就要求“暗代碼”里不能直接保存任何常數(shù)——它們必須編碼到指令里面——成為指令的一部分,以指令編碼中的立即數(shù)形式存在。

Armv6-M的指令集大部分都是16位的Thumb指令,16位的指令可以用于編碼的立即數(shù)的二進(jìn)制位長(zhǎng)度可想而知——少得可憐。Armv7-M由于引入了32位的Thumb2指令集,從而極大增強(qiáng)了指令攜帶立即數(shù)的能力。為了將這一能力引入Armv8-M的Baseline指令集,MOVT和MOVW這兩個(gè)可以分別攜帶32位立即數(shù)“高、低16位”的指令就被特別加入到Cortex-M23所使用的指令集中。考慮到Armv8-M所強(qiáng)的調(diào)信息安全,“暗指令”對(duì)固件的保護(hù)有多大的分量,可想而知。

結(jié)論:Cortex-M23——這個(gè)M0+不簡(jiǎn)單。

1.2增強(qiáng)版的Cortex-M3/M4

相對(duì)Cortex-M3/M4來(lái)說(shuō),Cortex-M33在性能上有了提升并不是什么意料之外的事情,不提也罷。值得說(shuō)明的是,從城里來(lái)的Cortex-M7在性能上仍然可以"甩其他Cortex-M土包子幾條街"——6級(jí)流水線和3級(jí)流水線的差別可是"三缸夏利和六缸寶馬之間的差距"所不能比擬的!(認(rèn)真臉)。

1.3ARMv8-M是個(gè)知錯(cuò)就改的好少年

我不知道有多少人真正用過(guò)Armv7-M,也就是Cortex-M3/M4的MPU——簡(jiǎn)單說(shuō)就是個(gè)以Region為單位來(lái)修改Memory屬性的系統(tǒng)級(jí)外設(shè)。原本設(shè)計(jì)的時(shí)候想法很簡(jiǎn)單,一個(gè)Region,給個(gè)大小(Size)給個(gè)基地址(Base Address),再給個(gè)屬性(Memory Attribute),一使能,就工作了,很簡(jiǎn)單,很Happy。然而,出于優(yōu)(pi)化(gu)內(nèi)(jue)核(ding)面(nao)積(dai)的原因,Region地址范圍的設(shè)定被人為加入了一個(gè)限定:

基地址(Base Address)必須對(duì)齊(Aligned with)到它的尺寸(Size),而且尺寸必須是2的整數(shù)次方(還必須大于4次方)。

舉個(gè)例子:一個(gè)Region大小為512K,那么基地址必須是512K的整數(shù)倍……如果你還不能理解這個(gè)問(wèn)題蛋疼的點(diǎn)在哪里,設(shè)想一個(gè)任意大小的Region該怎么設(shè)定,比如,一個(gè)234K大小的Memory該咋辦?——還能咋辦,用多個(gè)Region組合出來(lái)唄。正是這個(gè)蛋疼的限制,導(dǎo)致幾乎沒(méi)有什么RTOS可以很好的使用MPU,也罕有身邊的項(xiàng)目把MPU這么骨感的現(xiàn)實(shí)應(yīng)用的如理想般美好。

那么Armv8-M做了什么呢?他更正了這一蛋疼的設(shè)定,即:Region的設(shè)置由“基地址+尺寸”進(jìn)化為“起始地址+終止地址”,除了這兩個(gè)地址都必須是32字節(jié)的整倍數(shù)的要求外,再也沒(méi)有變態(tài)的關(guān)于“基地址必須是Region大小的整倍數(shù)”這樣的限定。是不是突然覺(jué)得眼前一亮,是不是突然發(fā)現(xiàn)了一個(gè)寶藏?MPU頓時(shí)好玩起來(lái)。

結(jié)論:ARMv8-M的MPU是個(gè)好同志,士別三日當(dā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)投訴
  • 微控制器
    +關(guān)注

    關(guān)注

    48

    文章

    7651

    瀏覽量

    152122
  • 處理器
    +關(guān)注

    關(guān)注

    68

    文章

    19409

    瀏覽量

    231196
  • MPU
    MPU
    +關(guān)注

    關(guān)注

    0

    文章

    375

    瀏覽量

    48957
  • RTOS
    +關(guān)注

    關(guān)注

    22

    文章

    819

    瀏覽量

    119889
  • ARMv8
    +關(guān)注

    關(guān)注

    1

    文章

    35

    瀏覽量

    14195

原文標(biāo)題:簡(jiǎn)單粗暴解讀Cortex-M23/33(上)

文章出處:【微信號(hào):Ithingedu,微信公眾號(hào):安芯教育科技】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    cortex M0/M0+/M3/M4 所支持的最高時(shí)鐘頻率是多少?

    請(qǐng)教一個(gè)問(wèn)題,Cortex M0/M0+/M3/M4所支持的最高時(shí)鐘頻率是多少?哪里可以得到權(quán)威的數(shù)據(jù)?(以65nm為標(biāo)準(zhǔn),或其他工藝節(jié)點(diǎn))
    發(fā)表于 01-27 15:08

    Cortex-M0~M4的優(yōu)勢(shì)是什么啊?

    簡(jiǎn)述Cortex-M0~M4的各個(gè)優(yōu)勢(shì)
    發(fā)表于 02-22 06:57

    Cortex-M0處理器的基礎(chǔ)知識(shí)

    Cortex-M0處理器介紹
    發(fā)表于 02-26 06:03

    Cortex?-M3處理器

    2.1STM32F103xx增強(qiáng)型LQFP48引腳分布2.2 STM32F103xx概述2.2.1ARM?的Cortex?-M3核心并內(nèi)嵌閃存和SRAMARM的Cortex?-M3
    發(fā)表于 08-11 07:03

    cortex m3/m4處理器的復(fù)位設(shè)計(jì)資料分享

    cortex m3/m4處理器在復(fù)位層面總體上可以劃分為core和debug logic兩部分。core部分包括處理器內(nèi)核(core)以及N
    發(fā)表于 02-07 09:05

    制造一種基于Cortex-M0Cortex-M3處理器的SoC

    Cortex-M0Cortex-M3處理器無(wú)需支付授權(quán)費(fèi)。Cortex-A5處理器需要支付非常低的授權(quán)費(fèi),最多可提供
    發(fā)表于 07-27 16:58

    ARM Cortex-M0設(shè)計(jì)啟動(dòng)評(píng)估用戶(hù)指南

    Cortex-M0 DesignStart Eval為開(kāi)發(fā)人員提供了一種簡(jiǎn)單的方法來(lái)模擬基于Cortex-M0處理器的SoC設(shè)計(jì)。 它允許系統(tǒng)設(shè)計(jì)人員在模擬上進(jìn)行設(shè)計(jì)和測(cè)試,然后使用
    發(fā)表于 08-18 07:58

    LPCXpresso54114:Cortex-M4/M0+教程

    本教程面向恩智浦LPCXpresso54114評(píng)估板。 Keil支持并使用其他恩智浦處理器制作電路板。 有關(guān)更多信息,請(qǐng)?jiān)L問(wèn) www.keil.com/nxp。 除了Cortex-M0M0+之外
    發(fā)表于 09-05 07:56

    ARM為主流嵌入式SoC設(shè)計(jì)提供免費(fèi)的Cortex-M0處理器IP

    ARM公司今天宣布,將為采用ARM Cortex-M0處理器進(jìn)行商業(yè)化之前的SoC元件的設(shè)計(jì)、原型建模和制造的設(shè)計(jì)人員提供免費(fèi)的Cortex-M0處理器IP,以及低成本的FPGA原型建
    發(fā)表于 10-15 13:57 ?2645次閱讀

    ARM推出CortexM0處理器

    ARM推出CortexM0處理器,有需要的下來(lái)看看 。
    發(fā)表于 01-22 14:00 ?29次下載

    特大好消息:ARM Cortex-M0/M3免收授權(quán)費(fèi)了

    【導(dǎo)讀】51單片機(jī)內(nèi)核歷史使命即將完結(jié),因?yàn)锳RM已經(jīng)宣布,自2017年6月20日起,Cortex-M0/M3處理器內(nèi)核免收授權(quán)費(fèi)用,版權(quán)費(fèi)也很低,500萬(wàn)出貨量只收20萬(wàn)美元,相當(dāng)于每一個(gè)C
    發(fā)表于 06-23 18:46 ?3782次閱讀

    如何定制基于Cortex-M0/M3免費(fèi)內(nèi)核的自主SoC | 直播報(bào)名(11.25)

    活動(dòng)主題 如何定制基于Cortex-M0/M3免費(fèi)內(nèi)核的自主SoC M0/M3免授權(quán)費(fèi)+第三方設(shè)計(jì)服務(wù)=自主SoC Arm DesignStart宣布
    的頭像 發(fā)表于 11-21 15:14 ?1.4w次閱讀

    Cortex內(nèi)核的比較(M3M4

    **Cortex內(nèi)核的比較(M3M4)** 一、開(kāi)發(fā)板資源描述    
    發(fā)表于 12-01 13:06 ?20次下載
    <b class='flag-5'>Cortex</b>內(nèi)核的比較(<b class='flag-5'>M3</b>和<b class='flag-5'>M4</b>)

    cortex m3/m4處理器的復(fù)位設(shè)計(jì)

    cortex m3/m4處理器在復(fù)位層面總體上可以劃分為core和debug logic兩部分。core部分包括處理器內(nèi)核(core)以及N
    發(fā)表于 12-04 13:21 ?9次下載
    <b class='flag-5'>cortex</b> <b class='flag-5'>m3</b>/<b class='flag-5'>m4</b><b class='flag-5'>處理器</b>的復(fù)位設(shè)計(jì)

    Cortex-M0處理器的中斷請(qǐng)求形式:電平觸發(fā)和脈沖輸入

    Cortex-M0處理器允許兩種形式的中斷請(qǐng)求:電平觸發(fā)和脈沖輸入。
    的頭像 發(fā)表于 05-13 12:05 ?1838次閱讀
    博盈注册| 赌场百家乐官网是如何玩| 百家乐园游戏庄闲| 人民币棋牌游戏| 红桃K百家乐官网的玩法技巧和规则 | 博天堂百家乐官网的玩法技巧和规则 | 百家乐如何投注| 最新六合彩开奖结果| 百家乐官网计划工具| 太阳城网址| 百家乐官网统计工具| 拉斯维加斯娱乐城| 百家乐三珠连跳打法| 百家乐官网单注技巧| 真人百家乐海立方| 余江县| 百家乐一起多少张牌| 百家乐官网庄闲当哪个好| 温州百家乐的玩法技巧和规则| 百家乐官网水晶筹码| 百家乐平注法到6568| 网上百家乐官网赌博网| 棋牌游戏代理| 百家乐筹码素材| 澳门百家乐官网秘诀| 星期八百家乐的玩法技巧和规则 | 百家乐官网游戏机分析仪| 百家乐追号工具| 缅甸百家乐官网网络赌博解谜| 大发888casino组件下载| 百家乐官网电子| 百家乐官网路单打法| 东莞百家乐的玩法技巧和规则| 赌场百家乐官网玩法介绍| 全讯网777| 属鼠做生意办公桌摆貔貅好不好| 巩义市| 百家乐赌场| 百家乐官网骗局视频| 百家乐官网咋个玩的| 大发888娱乐场下载com|