etas os配置nonTrusted MPU保护--Apple

作者: applecai | 来源:发表于2023-06-17 21:42 被阅读0次

    一,前言

    之前已经玩过了tricore内核mpu的寄存器了,也就是说若etas os中我配置错误,导致生成的代码无效果,那么我有能力直接去看相关寄存器就可以排查问题了。那么就开始用etas os来配置吧

    二,配置过程及排查问题

    porting手册写了些内容,用户手册也写了些内容,感觉配置中没找到要设置start stop地址的地方。
    于是就把能配置的地方配置了下,另外打钩了2个hook回调函数。就生成os代码了。


    image.png
    image.png

    在trusted为true的application中若设置Trusted with protection为true就会使用set2了。否则按上图配置就是user0的set1为nontrusted application。Supervisor为set0的trusted application。配置完成后调试发现SYSCON.PROTEN为0,set0和set1相关寄存器中都是0,只有PSW在task切换的时候会切换,空闲任务也是可信的,这说明初始化set0和set1等寄存器需要用户设置,且打开SYSCON.PROTEN为1。
    若不是我之前有自己设置寄存器的技术准备,现在就要不知道怎么办了,哈哈~


    image.png
    要生成Os_Cbk_SetMemoryAccess需要设置trusted application下的Trusted with protection项为true,然后就可以在task,isar调度过程中去修改MPU权限了,它是动态的,比之前我理解的仅初始化设置固定范围要灵活,手册中有描述的,我暂时练习做框架及etas配置实验,不做task基本的颗粒度MPU保护,因为这需要加更多手工代码的。
    image.png

    三,测试通过

    我加完初始化手工代码设置set0和set1的地址范围和权限后,测试通过。nontrust的Application中的task无法写入保护地址。【设计原理是set0为全范围写入,set1设置了一段不可访问区间,所以os 任务切换为nontrusted的task的同时,psw也切换为了set1,所以就出现地址不可访问,被保护起来了,若在nontrusted task也就是set1的时候写入此范围,就进入trap了】


    image.png

    四,小结

    通过拆分法一步步学习是我惯用的手法,所以我才喜欢做最小系统,从空白开始,一步一个脚印来掌握技能。先学会寄存器应用原理,自己手工写小代码来验证对寄存器的理解,最后通过配置调试代码来验证功能。用这种方法来学习配置的话,分分钟就学会了,感觉一切都很顺利,主要是用方法对了,哈哈~

    五,补充

    这个0xFFFFF104的地址在实际板子上跑属于非法地址,看来无板仿真还是有点缺陷,改成正常ram地址例如0x9000000,在实际板子上效果一样,mpu配置方法是正确的。


    image.png

    相关文章

      网友评论

        本文标题:etas os配置nonTrusted MPU保护--Apple

        本文链接:https://www.haomeiwen.com/subject/ascjydtx.html