<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
創作中心

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

3天內不再提示

TC3xx芯片的MPU功能詳解

832065824 ? 來源:汽車電子嵌入式 ? 2023-09-19 11:42 ? 次閱讀

前言

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

wKgZomUJGniAWMcGAABvIJ3pGu8491.jpg

縮略詞

簡寫 全稱
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詳解

注:本公眾號文章中使用了一些第三方工具和文檔,若有侵權,請聯系作者刪除!

正文

1.TC3xx芯片MPU介紹

MPU內存保護是芯片的硬件的機制,可保護用戶指定的內存范圍免受未經授權的讀取,寫入或指令提取訪問的影響。通過MPU配置,把芯片的Memory劃分為位若干(有大小限制)區域,每個區域可以配置讀(DataRead)、寫(DataWrite)、執行(CodeFetch)權限。配置MPU且使能MPU后,如果訪問某個內存區域但是改內存區域沒有配置對應的權限,就會產生MPUTrap。

1.1TC3xx芯片MPU資源

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

wKgZomUJGniAR-dEAABnpVYd7Ik399.jpg

wKgZomUJGniAeyxTAAB2gB6_Vgw607.jpg

wKgaomUJGniALUE0AADag8beZO4935.jpg

wKgaomUJGniAU2zmAADZ0uXaEC0762.jpg

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

1.2 Protection Sets

官方解釋:

wKgaomUJGniAE8K9AANbgzyUZ8I662.jpg

作者理解:TC3xx芯片可以配置多種內存保護集(Sets),每種內存保護集的內存劃分及其權限可以不一樣,這樣我們可以通過切換當前的內存保護集實現不一樣的內存保護策略。程序狀態字寄存器的的PRS位域(PSW.PRS)確定了當前使用內存保護集。

1.3Protection Range

官方解釋:

wKgZomUJGsyAJ4JhAAGT6QkT91I099.jpg

作者理解:TC3xx芯片的內存保護Range的劃分和RH850不一樣,TC3xx的內存保護Range還區分Data Protection Ranges和CodeProtection Ranges,對于Data Protection Ranges只能Enable讀、寫的權限,對于Code Protection Range只能Enable可執行(Execute Access)權限。

1.4訪問權限

每個內存保護區域可以配置它的DataRead, Data Write, Intruction Fectch權限,不過通過1.2章節可知,DataProtection Range只能配置Data Read/Write權限,Code Protection Range只能配置Instruction Fectch權限。

wKgaomUJGsyAMZY3AAFFXUkyRb4339.jpg

Note1: 兩塊不同Protection Range的公共區域的訪問權限是兩塊區域訪問權限的”或”關系后的訪問權限。

wKgaomUJGxCATqt4AACJoIEV-Rk574.jpg

Note2: 跨Protection Range的訪問不會產生Trap。

wKgaomUJGsyAW0LbAAFMwty-qJo141.jpg

Note3: 為了保持Protection Regions的分離性,Protection Region間應該有空置的區域。

wKgaomUJGsyAGY7qAAEENxSm6Tk235.jpg

1.5使能內存保護

配置SYSCON.PROTEN == 1即使能內存保護功能。

wKgZomUJGsyAQdvIAADX1-NaNJg209.jpg

1.6內存保護Trap

使能了內存保護后,如果產生Error,就會觸發對應的Trap??梢詤⒖?>一文。

wKgaomUJGsyATTwlAAFHbO0pU7Q698.jpg

2.TC3xx內存保護配置

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

wKgZomUJGsyAdA56AAN_cIVLJ6Q659.jpg

wKgZomUJGsyAJ4CYAAG7HHT7dCA461.jpg

如上圖所示,我們配置了一個Data Protection Ranges,給DFlash0配置上MPU權限:

Short Name: Protection Ranges的名字。

Memory Region End Address: Protection Ranges的結束地址,必須是8字節的整數倍,且應該大于等于StartAddress.

Memory Region Identifier: 定義可選的特定于硬件的內存保護區域標識符。不是必須配置項,一般不用配置。

MemoryRegion Owner: 指定內存保護區域是特定于OS-Applicaiton,Task, ISR ,還是全局的。如果引用了Task, ISR后,只有進入到對應的Task,ISR后該Protection Ranges才被激活。如果沒有引用,則該Protection一直是被激活的。

Note: 這個配置項需要謹慎配置,如果不是很確定,建議不要配置,也就是Global的。因為,比如,我給該Protection Ranges配置了一個Task,那么該ProtectionRange只有該Task才能讀寫,如果有其他的Task也讀寫該Protection Ranges的話,就會產生MPUTrap。

Memory Region Protection Unit: 配置該Protection Range屬于哪一個Core的Data/Code MPU Protection Ranges。

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

Memory Region Start Address: Protection Ranges的起始地址,必須是8字節的整數倍,且應該大于等于EndAddress.

Memory Region Access Rights: 選擇預定義好的Protection Set的權限。

3.MPU功能驗證

參考:<>

著重理解Trap產生后如何定位發生Trap的位置及產生Trap的原因。

4.總結

使能MPU功能后,MCU的所有內存訪問都會被監控,一單出現非預期內的內存訪問就會觸發MPU的保護,產生MPUTrap。根據使用經驗,MPU是把雙刃劍,用的好能把一些偶發內存異常訪問問題扼殺在開發階段,也能利用MPU來定位內存非法訪問問題。用的不好,就會導致系統經常進入Trap(一般都會走Reset)。如果項目要上MPU,建議提前規劃好MPU Protection Ranges及其訪問權限,這樣經過大量的開發過程驗證才能確保MPU達到正向監控的作用,而不是出現反作用。

審核編輯:湯梓紅

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 芯片
    +關注

    關注

    447

    文章

    47984

    瀏覽量

    410345
  • MPU
    MPU
    +關注

    關注

    0

    文章

    303

    瀏覽量

    48407
  • 內存保護單元

    關注

    0

    文章

    6

    瀏覽量

    1566

原文標題:TC3xx芯片MPU介紹

文章出處:【微信號:汽車電子嵌入式,微信公眾號:汽車電子嵌入式】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    TC3xx芯片的Endinit功能詳解

    上鎖Endinit。那什么是Endinit功能了? -- 本文就來詳細解鎖TC3xx芯片的Endinit機制。
    的頭像 發表于 11-27 09:23 ?852次閱讀
    <b class='flag-5'>TC3xx</b><b class='flag-5'>芯片</b>的Endinit<b class='flag-5'>功能</b><b class='flag-5'>詳解</b>

    TC3xx芯片時鐘系統的鎖相環PLL詳解

    中的Tick數就是基于模塊時鐘的)。本系列文章就來詳細介紹TC3xx芯片的時鐘系統及其具體配置。本文為TC3xx芯片時鐘系統的鎖相環PLL詳解
    的頭像 發表于 12-01 09:37 ?908次閱讀
    <b class='flag-5'>TC3xx</b><b class='flag-5'>芯片</b>時鐘系統的鎖相環PLL<b class='flag-5'>詳解</b>

    AURIX? TC3XX如何暫時僅啟用/禁用CAN中斷?

    你我使用的是 AURIX? TC3XX。 在 CAN ISR 處理期間,如何暫時僅啟用/禁用 CAN 中斷?
    發表于 01-18 06:47

    TC3xx SCR功耗應該怎么評估?

    TC3xx SCR處于70kHz active狀態,以及CAN WAKE UP也處于active,Tricore都掉電了,這個時候功耗是多少呢?SCR中不同的組件激活狀態下,功耗應該怎么評估,有沒有
    發表于 01-19 08:28

    tc3xx休眠時mcu pin可以是高阻態嗎?如何設置?

    tc3xx,休眠時mcu pin可以是高阻態嗎?如何設置?
    發表于 01-19 08:26

    TC3XX寄存器讀寫時間過長怎么解決?

    我目前在做TC3XX底層代碼優化,經過之前多次測試目前可以確定該系列芯片對單個寄存器地址的讀寫耗時超過100us。請問對于寄存器讀寫耗時你們官方有沒有確切的文件說明?還有就是既然寄存器讀寫時間那么長100M的外設總線時鐘是否有意義?
    發表于 01-25 06:56

    TC3xx系列怎么禁用trap?

    目前在TC3xx調試flash讀寫功能,單獨運行flash相關功能沒有問題,但將flash相關功能集成到工程中。操作pflash就會進入trap中,查看了一些帖子說是要禁掉trap?請
    發表于 01-31 06:21

    TC3xx系列是否支持RTC功能?

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

    GCC和TASKING有什么區別?應該為AURIX? TC3xx選擇什么?

    GCC 和 TASKING 有什么區別? 我應該為 AURIX? TC3xx 選擇什么? 這將如何影響代碼的運行?
    發表于 03-01 10:09

    TC3xx的HSM中有沒有單調計數器?

    你好, 我看到 OPTIGA 有單調計數器,但我在 TC3xx 的 HSM 中確實找不到單調計數器。 能否確認TC3xx的HSM中沒有單調計數器?
    發表于 03-05 07:56

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

    ADC模塊的配置,和芯片特性強相關的地方還是有很多地方(AUTOSAR MCAL標準定義的配置項都是一樣的),本文將詳細介紹基于Infineon TC3xx芯片MCAL_ADC模塊特有的一些配置
    的頭像 發表于 01-29 16:45 ?6443次閱讀

    AURIX? TC3xx NVM是非易失性存儲器學習筆記

    TC3xx芯片最多有6個內核,每個核有自己的私有的Memory以及共有的Memory。
    發表于 06-19 09:09 ?3597次閱讀
    AURIX? <b class='flag-5'>TC3xx</b> NVM是非易失性存儲器學習筆記

    TC3xx芯片的Trap功能詳解

    前面介紹了TC3xx一系列的功能與特性,看起來感覺高大上,但是總有一種空中樓閣的感覺:這些復雜的架構、特性、功能在平時好像也用不到呀?
    的頭像 發表于 07-03 09:13 ?3054次閱讀
    <b class='flag-5'>TC3xx</b><b class='flag-5'>芯片</b>的Trap<b class='flag-5'>功能</b><b class='flag-5'>詳解</b>

    TC3xx芯片DMU介紹

    AUTOSAR架構圖下的Fls模塊對上(Fee)模塊提供統一的標準接口,但是具體的實現因不同的芯片而不一樣,Infineon公司的Fls模塊通過操作TC3xx芯片的DMU模塊實現Fls的功能
    的頭像 發表于 08-31 14:10 ?935次閱讀
    <b class='flag-5'>TC3xx</b><b class='flag-5'>芯片</b>DMU介紹

    深入解析TC3xx芯片中的SMU模塊應用

    TC3xx芯片是德國英飛凌半導體公司推出的汽車級處理器芯片系列,其中的SMU(System Management Unit)模塊是其重要組成部分之一。SMU模塊在TC3xx
    的頭像 發表于 03-01 18:08 ?595次閱讀
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>