精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

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達到正向監控的作用,而不是出現反作用。

審核編輯:湯梓紅

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

    關注

    453

    文章

    50387

    瀏覽量

    421783
  • MPU
    MPU
    +關注

    關注

    0

    文章

    346

    瀏覽量

    48735
  • 內存保護單元

    關注

    0

    文章

    6

    瀏覽量

    1586

原文標題:TC3xx芯片MPU介紹

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

收藏 人收藏

    評論

    相關推薦

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

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

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

    TC3XX 系列屬于AURIX? 2G系列,AURIX? 2G系列系列單片機采用的是TC1.6.E和TC1.6P的核心組合。使用的是32位哈弗架構,將程序指令存儲和數據存儲分開。
    發表于 09-19 10:00 ?2150次閱讀
    英飛凌<b class='flag-5'>TC3XX</b>系列多核MCU學習筆記(<b class='flag-5'>3</b>)

    TC3xx芯片的Endinit功能詳解

    上鎖Endinit。那什么是Endinit功能了? -- 本文就來詳細解鎖TC3xx芯片的Endinit機制。
    的頭像 發表于 11-27 09:23 ?2090次閱讀
    <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 ?2369次閱讀
    <b class='flag-5'>TC3xx</b><b class='flag-5'>芯片</b>時鐘系統的鎖相環PLL<b class='flag-5'>詳解</b>

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

    本篇文檔主要用來介紹英飛凌基于AURIX-2G TriCore 1.6.2架構的 TC3xx系列安全管理單元的使用。
    的頭像 發表于 12-07 09:29 ?1994次閱讀
    英飛凌<b class='flag-5'>TC3xx</b>系列安全管理單元的使用

    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

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

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

    TSIM是否支持TC3xx系列在沒有硬件的情況下調試應用程序?

    你好, TSIM是否支持TC3xx系列在沒有硬件的情況下調試應用程序? AURIX TC3xx - Free Entry ToolChain 是否有助于實現上述目的?
    發表于 05-17 07:02

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

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

    一起學習TC3xx芯片的UCB文件

    剛開始使用TC3xx芯片的時候,程序燒錄進去后起不來,一番咨詢后是因為沒有配置UCB導致的,然后刷了一個其他平臺項目的UCB文件后,程序正常起來了。
    的頭像 發表于 06-13 09:05 ?4462次閱讀
    一起學習<b class='flag-5'>TC3xx</b><b class='flag-5'>芯片</b>的UCB文件

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

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

    TC3xx芯片DMU介紹

    AUTOSAR架構圖下的Fls模塊對上(Fee)模塊提供統一的標準接口,但是具體的實現因不同的芯片而不一樣,Infineon公司的Fls模塊通過操作TC3xx芯片的DMU模塊實現Fls的功能
    的頭像 發表于 08-31 14:10 ?1794次閱讀
    <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 ?1614次閱讀