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

    文章

    47804

    浏览量

    409172
  • MPU
    MPU
    +关注

    关注

    0

    文章

    298

    浏览量

    48374
  • 内存保护单元

    关注

    0

    文章

    6

    浏览量

    1562

原文标题:TC3xx芯片MPU介绍

文章出处:【微信号:汽车电子嵌入式,微信公众号:汽车电子嵌入式】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    TC3xx芯片的Endinit功能详解

    上锁Endinit。那什么是Endinit功能了? -- 本文就来详细解锁TC3xx芯片的Endinit机制。
    的头像 发表于 11-27 09:23 823次阅读
    <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 804次阅读
    <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 6272次阅读

    AURIX™ TC3xx NVM是非易失性存储器学习笔记

    TC3xx芯片最多有6个内核,每个核有自己的私有的Memory以及共有的Memory。
    发表于 06-19 09:09 3379次阅读
    AURIX™ <b class='flag-5'>TC3xx</b> NVM是非易失性存储器学习笔记

    TC3xx芯片的Trap功能详解

    前面介绍了TC3xx一系列的功能与特性,看起来感觉高大上,但是总有一种空中楼阁的感觉:这些复杂的架构、特性、功能在平时好像也用不到呀?
    的头像 发表于 07-03 09:13 2963次阅读
    <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 868次阅读
    <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 546次阅读