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

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

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

TC3xx芯片的MPU功能詳解

832065824 ? 來(lái)源:汽車(chē)電子嵌入式 ? 2023-09-19 11:42 ? 次閱讀

前言

在前面的<>文章文章中我們介紹了RH850-U2A的內(nèi)存保護(hù)單元(MPU),了解了MPU的概念以及在RH850-U2A上的具體使用流程,但是對(duì)于TC3xx系列芯片的的MPU功能不甚了解。本文就來(lái)詳細(xì)介紹下TC3xx芯片的MPU功能。

wKgZomUJGniAWMcGAABvIJ3pGu8491.jpg

縮略詞

簡(jiǎn)寫(xiě) 全稱(chēng)
MPU MemoryProtecionUnit
PS ProtectionSet
PSW ProgramStateWord

參考文檔:

1. TriCoreTM TC1.6.2 core architecture manual

2. AURIXTC3XX_um_part1_v2.0.pdf

3.MPU功能詳解-以RH850U2A為例

4.TC3xx芯片的Trap詳解

注:本公眾號(hào)文章中使用了一些第三方工具和文檔,若有侵權(quán),請(qǐng)聯(lián)系作者刪除!

正文

1.TC3xx芯片MPU介紹

MPU內(nèi)存保護(hù)是芯片的硬件的機(jī)制,可保護(hù)用戶(hù)指定的內(nèi)存范圍免受未經(jīng)授權(quán)的讀取,寫(xiě)入或指令提取訪(fǎng)問(wèn)的影響。通過(guò)MPU配置,把芯片的Memory劃分為位若干(有大小限制)區(qū)域,每個(gè)區(qū)域可以配置讀(DataRead)、寫(xiě)(DataWrite)、執(zhí)行(CodeFetch)權(quán)限。配置MPU且使能MPU后,如果訪(fǎng)問(wèn)某個(gè)內(nèi)存區(qū)域但是改內(nèi)存區(qū)域沒(méi)有配置對(duì)應(yīng)的權(quán)限,就會(huì)產(chǎn)生MPUTrap。

1.1TC3xx芯片MPU資源

以TC37x(TC1.6.2.P內(nèi)核)為例,有6個(gè)Memory Protection Register Sets;TC37x芯片有3個(gè)Core,每個(gè)核有18個(gè)Data Memory Protection Ranges,10個(gè)Code Protection Ranges。

wKgZomUJGniAR-dEAABnpVYd7Ik399.jpg

wKgZomUJGniAeyxTAAB2gB6_Vgw607.jpg

wKgaomUJGniALUE0AADag8beZO4935.jpg

wKgaomUJGniAU2zmAADZ0uXaEC0762.jpg

Note: 后文會(huì)介紹什么是Memory Protection Sets,Data/Code Protection Range.

1.2 Protection Sets

官方解釋?zhuān)?/p>

wKgaomUJGniAE8K9AANbgzyUZ8I662.jpg

作者理解:TC3xx芯片可以配置多種內(nèi)存保護(hù)集(Sets),每種內(nèi)存保護(hù)集的內(nèi)存劃分及其權(quán)限可以不一樣,這樣我們可以通過(guò)切換當(dāng)前的內(nèi)存保護(hù)集實(shí)現(xiàn)不一樣的內(nèi)存保護(hù)策略。程序狀態(tài)字寄存器的的PRS位域(PSW.PRS)確定了當(dāng)前使用內(nèi)存保護(hù)集。

1.3Protection Range

官方解釋?zhuān)?/p>

wKgZomUJGsyAJ4JhAAGT6QkT91I099.jpg

作者理解:TC3xx芯片的內(nèi)存保護(hù)Range的劃分和RH850不一樣,TC3xx的內(nèi)存保護(hù)Range還區(qū)分Data Protection Ranges和CodeProtection Ranges,對(duì)于Data Protection Ranges只能Enable讀、寫(xiě)的權(quán)限,對(duì)于Code Protection Range只能Enable可執(zhí)行(Execute Access)權(quán)限。

1.4訪(fǎng)問(wèn)權(quán)限

每個(gè)內(nèi)存保護(hù)區(qū)域可以配置它的DataRead, Data Write, Intruction Fectch權(quán)限,不過(guò)通過(guò)1.2章節(jié)可知,DataProtection Range只能配置Data Read/Write權(quán)限,Code Protection Range只能配置Instruction Fectch權(quán)限。

wKgaomUJGsyAMZY3AAFFXUkyRb4339.jpg

Note1: 兩塊不同Protection Range的公共區(qū)域的訪(fǎng)問(wèn)權(quán)限是兩塊區(qū)域訪(fǎng)問(wèn)權(quán)限的”或”關(guān)系后的訪(fǎng)問(wèn)權(quán)限。

wKgaomUJGxCATqt4AACJoIEV-Rk574.jpg

Note2: 跨Protection Range的訪(fǎng)問(wèn)不會(huì)產(chǎn)生Trap。

wKgaomUJGsyAW0LbAAFMwty-qJo141.jpg

Note3: 為了保持Protection Regions的分離性,Protection Region間應(yīng)該有空置的區(qū)域。

wKgaomUJGsyAGY7qAAEENxSm6Tk235.jpg

1.5使能內(nèi)存保護(hù)

配置SYSCON.PROTEN == 1即使能內(nèi)存保護(hù)功能。

wKgZomUJGsyAQdvIAADX1-NaNJg209.jpg

1.6內(nèi)存保護(hù)Trap

使能了內(nèi)存保護(hù)后,如果產(chǎn)生Error,就會(huì)觸發(fā)對(duì)應(yīng)的Trap。可以參考<>一文。

wKgaomUJGsyATTwlAAFHbO0pU7Q698.jpg

2.TC3xx內(nèi)存保護(hù)配置

ProtectionsSets和Code/Data Protection Type在DavinciConfigurator的SIP包中根據(jù)定制的芯片類(lèi)型以及預(yù)定義好的,只要使用的在配置Protection Range的時(shí)候引用就行。

wKgZomUJGsyAdA56AAN_cIVLJ6Q659.jpg

wKgZomUJGsyAJ4CYAAG7HHT7dCA461.jpg

如上圖所示,我們配置了一個(gè)Data Protection Ranges,給DFlash0配置上MPU權(quán)限:

Short Name: Protection Ranges的名字。

Memory Region End Address: Protection Ranges的結(jié)束地址,必須是8字節(jié)的整數(shù)倍,且應(yīng)該大于等于StartAddress.

Memory Region Identifier: 定義可選的特定于硬件的內(nèi)存保護(hù)區(qū)域標(biāo)識(shí)符。不是必須配置項(xiàng),一般不用配置。

MemoryRegion Owner: 指定內(nèi)存保護(hù)區(qū)域是特定于OS-Applicaiton,Task, ISR ,還是全局的。如果引用了Task, ISR后,只有進(jìn)入到對(duì)應(yīng)的Task,ISR后該P(yáng)rotection Ranges才被激活。如果沒(méi)有引用,則該P(yáng)rotection一直是被激活的。

Note: 這個(gè)配置項(xiàng)需要謹(jǐn)慎配置,如果不是很確定,建議不要配置,也就是Global的。因?yàn)?,比如,我給該P(yáng)rotection Ranges配置了一個(gè)Task,那么該P(yáng)rotectionRange只有該Task才能讀寫(xiě),如果有其他的Task也讀寫(xiě)該P(yáng)rotection Ranges的話(huà),就會(huì)產(chǎn)生MPUTrap。

Memory Region Protection Unit: 配置該P(yáng)rotection Range屬于哪一個(gè)Core的Data/Code MPU Protection Ranges。

Memory Region Protection Unit Slot: 和硬件特性相關(guān),可以不用配置。

Memory Region Start Address: Protection Ranges的起始地址,必須是8字節(jié)的整數(shù)倍,且應(yīng)該大于等于EndAddress.

Memory Region Access Rights: 選擇預(yù)定義好的Protection Set的權(quán)限。

3.MPU功能驗(yàn)證

參考:<>

著重理解Trap產(chǎn)生后如何定位發(fā)生Trap的位置及產(chǎn)生Trap的原因。

4.總結(jié)

使能MPU功能后,MCU的所有內(nèi)存訪(fǎng)問(wèn)都會(huì)被監(jiān)控,一單出現(xiàn)非預(yù)期內(nèi)的內(nèi)存訪(fǎng)問(wèn)就會(huì)觸發(fā)MPU的保護(hù),產(chǎn)生MPUTrap。根據(jù)使用經(jīng)驗(yàn),MPU是把雙刃劍,用的好能把一些偶發(fā)內(nèi)存異常訪(fǎng)問(wèn)問(wèn)題扼殺在開(kāi)發(fā)階段,也能利用MPU來(lái)定位內(nèi)存非法訪(fǎng)問(wèn)問(wèn)題。用的不好,就會(huì)導(dǎo)致系統(tǒng)經(jīng)常進(jìn)入Trap(一般都會(huì)走Reset)。如果項(xiàng)目要上MPU,建議提前規(guī)劃好MPU Protection Ranges及其訪(fǎng)問(wèn)權(quán)限,這樣經(jīng)過(guò)大量的開(kāi)發(fā)過(guò)程驗(yàn)證才能確保MPU達(dá)到正向監(jiān)控的作用,而不是出現(xiàn)反作用。

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀(guā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)注

    452

    文章

    50206

    瀏覽量

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

    關(guān)注

    0

    文章

    340

    瀏覽量

    48699
  • 內(nèi)存保護(hù)單元

    關(guān)注

    0

    文章

    6

    瀏覽量

    1584

原文標(biāo)題:TC3xx芯片MPU介紹

文章出處:【微信號(hào):汽車(chē)電子嵌入式,微信公眾號(hào):汽車(chē)電子嵌入式】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    英飛凌TC3XX系列多核MCU學(xué)習(xí)筆記(1)

    聲明:本文是在學(xué)習(xí)英飛凌 TC3XX系列多核 MCU 過(guò)程中整理的筆記,便于后期復(fù)習(xí)!
    發(fā)表于 09-19 09:54 ?2308次閱讀
    英飛凌<b class='flag-5'>TC3XX</b>系列多核MCU學(xué)習(xí)筆記(1)

    英飛凌TC3XX系列多核MCU學(xué)習(xí)筆記(3)

    TC3XX 系列屬于A(yíng)URIX? 2G系列,AURIX? 2G系列系列單片機(jī)采用的是TC1.6.E和TC1.6P的核心組合。使用的是32位哈弗架構(gòu),將程序指令存儲(chǔ)和數(shù)據(jù)存儲(chǔ)分開(kāi)。
    發(fā)表于 09-19 10:00 ?2064次閱讀
    英飛凌<b class='flag-5'>TC3XX</b>系列多核MCU學(xué)習(xí)筆記(<b class='flag-5'>3</b>)

    TC3xx芯片的Endinit功能詳解

    上鎖Endinit。那什么是Endinit功能了? -- 本文就來(lái)詳細(xì)解鎖TC3xx芯片的Endinit機(jī)制。
    的頭像 發(fā)表于 11-27 09:23 ?2005次閱讀
    <b class='flag-5'>TC3xx</b><b class='flag-5'>芯片</b>的Endinit<b class='flag-5'>功能</b><b class='flag-5'>詳解</b>

    TC3xx芯片時(shí)鐘系統(tǒng)的鎖相環(huán)PLL詳解

    的Tick數(shù)就是基于模塊時(shí)鐘的)。本系列文章就來(lái)詳細(xì)介紹TC3xx芯片的時(shí)鐘系統(tǒng)及其具體配置。本文為TC3xx芯片時(shí)鐘系統(tǒng)的鎖相環(huán)PLL詳解
    的頭像 發(fā)表于 12-01 09:37 ?2279次閱讀
    <b class='flag-5'>TC3xx</b><b class='flag-5'>芯片</b>時(shí)鐘系統(tǒng)的鎖相環(huán)PLL<b class='flag-5'>詳解</b>

    英飛凌TC3xx系列安全管理單元的使用

    本篇文檔主要用來(lái)介紹英飛凌基于A(yíng)URIX-2G TriCore 1.6.2架構(gòu)的 TC3xx系列安全管理單元的使用。
    的頭像 發(fā)表于 12-07 09:29 ?1934次閱讀
    英飛凌<b class='flag-5'>TC3xx</b>系列安全管理單元的使用

    TC3XX寄存器讀寫(xiě)時(shí)間過(guò)長(zhǎng)怎么解決?

    我目前在做TC3XX底層代碼優(yōu)化,經(jīng)過(guò)之前多次測(cè)試目前可以確定該系列芯片對(duì)單個(gè)寄存器地址的讀寫(xiě)耗時(shí)超過(guò)100us。請(qǐng)問(wèn)對(duì)于寄存器讀寫(xiě)耗時(shí)你們官方有沒(méi)有確切的文件說(shuō)明?還有就是既然寄存器讀寫(xiě)時(shí)間那么長(zhǎng)100M的外設(shè)總線(xiàn)時(shí)鐘是否有意義?
    發(fā)表于 01-25 06:56

    TC3xx系列怎么禁用trap?

    目前在TC3xx調(diào)試flash讀寫(xiě)功能,單獨(dú)運(yùn)行flash相關(guān)功能沒(méi)有問(wèn)題,但將flash相關(guān)功能集成到工程中。操作pflash就會(huì)進(jìn)入trap中,查看了一些帖子說(shuō)是要禁掉trap?請(qǐng)
    發(fā)表于 01-31 06:21

    TC3xx系列是否支持RTC功能?

    請(qǐng)教各位,TC3xx系列芯片是否支持RTC功能,目前要記錄snapshot的時(shí)間點(diǎn)(年月日時(shí)分秒)。
    發(fā)表于 02-02 07:53

    TC3xx的HSM中有沒(méi)有單調(diào)計(jì)數(shù)器?

    你好, 我看到 OPTIGA 有單調(diào)計(jì)數(shù)器,但我在 TC3xx 的 HSM 中確實(shí)找不到單調(diào)計(jì)數(shù)器。 能否確認(rèn)TC3xx的HSM中沒(méi)有單調(diào)計(jì)數(shù)器?
    發(fā)表于 03-05 07:56

    TSIM是否支持TC3xx系列在沒(méi)有硬件的情況下調(diào)試應(yīng)用程序?

    你好, TSIM是否支持TC3xx系列在沒(méi)有硬件的情況下調(diào)試應(yīng)用程序? AURIX TC3xx - Free Entry ToolChain 是否有助于實(shí)現(xiàn)上述目的?
    發(fā)表于 05-17 07:02

    AUTOSAR MCAL-基于Infineon TC3xx芯片的ADC模塊

    ADC模塊的配置,和芯片特性強(qiáng)相關(guān)的地方還是有很多地方(AUTOSAR MCAL標(biāo)準(zhǔn)定義的配置項(xiàng)都是一樣的),本文將詳細(xì)介紹基于Infineon TC3xx芯片MCAL_ADC模塊特有的一些配置
    的頭像 發(fā)表于 01-29 16:45 ?8111次閱讀

    一起學(xué)習(xí)TC3xx芯片的UCB文件

    剛開(kāi)始使用TC3xx芯片的時(shí)候,程序燒錄進(jìn)去后起不來(lái),一番咨詢(xún)后是因?yàn)闆](méi)有配置UCB導(dǎo)致的,然后刷了一個(gè)其他平臺(tái)項(xiàng)目的UCB文件后,程序正常起來(lái)了。
    的頭像 發(fā)表于 06-13 09:05 ?4390次閱讀
    一起學(xué)習(xí)<b class='flag-5'>TC3xx</b><b class='flag-5'>芯片</b>的UCB文件

    AURIX? TC3xx NVM是非易失性存儲(chǔ)器學(xué)習(xí)筆記

    TC3xx芯片最多有6個(gè)內(nèi)核,每個(gè)核有自己的私有的Memory以及共有的Memory。
    發(fā)表于 06-19 09:09 ?6314次閱讀
    AURIX? <b class='flag-5'>TC3xx</b> NVM是非易失性存儲(chǔ)器學(xué)習(xí)筆記

    TC3xx芯片DMU介紹

    AUTOSAR架構(gòu)圖下的Fls模塊對(duì)上(Fee)模塊提供統(tǒng)一的標(biāo)準(zhǔn)接口,但是具體的實(shí)現(xiàn)因不同的芯片而不一樣,Infineon公司的Fls模塊通過(guò)操作TC3xx芯片的DMU模塊實(shí)現(xiàn)Fls的功能
    的頭像 發(fā)表于 08-31 14:10 ?1736次閱讀
    <b class='flag-5'>TC3xx</b><b class='flag-5'>芯片</b>DMU介紹

    深入解析TC3xx芯片中的SMU模塊應(yīng)用

    TC3xx芯片是德國(guó)英飛凌半導(dǎo)體公司推出的汽車(chē)級(jí)處理器芯片系列,其中的SMU(System Management Unit)模塊是其重要組成部分之一。SMU模塊在TC3xx
    的頭像 發(fā)表于 03-01 18:08 ?1528次閱讀