首页 > 其他分享 >TZC-400学习

TZC-400学习

时间:2023-08-16 14:48:24浏览次数:41  
标签:DDR REGION mmio 学习 TZC 400 32 CONFIG

ARM® CoreLink™ TZC-400 TrustZone® Address Space Controller

该篇文档的翻译及一些总结说明:https://www.cnblogs.com/lvzh/p/16582717.html

TZC400学习总结

这是个大佬的总结:https://blog.csdn.net/weixin_42135087/article/details/107161137

TZC400总结之于SOC安全域

https://zhuanlan.zhihu.com/p/627274503

配置:

配置寄存器顺序:

  1. 0x004: ACTION
  2. 0x00C: SPECULATION_CTRL
  3. 0x008: GATE_KEEPER
  4. 0x120~0x200: REGION_BASE_LOW_<n>
  5. 0x128~0x208: REGION_TOP_LOW_<n>
  6. 0x110、0x130~0x210: REGION_ATTRIBUTES_0、REGION_ATTRIBUTES_<n>
  7. 0x114、0x134~0x214: REGION_ID_ACCESS_0、REGION_ID_ACCESS_<n>
  8. 读取0x008,检查gate keeper status

TZC_REGION配置宏定义:

#define CONFIG_TZC_REGION0(t, attr, access) \
  mmio_write_32(TZC##t##_REGION_ATTRIBUTES_0, attr);\
  mmio_write_32(TZC##t##_REGION_ID_ACCESS_0, access)

#define CONFIG_TZC_REGION(t, r, base_l, base_h, top_l, top_h, attr, access) \
  mmio_write_32(TZC##t##_REGION_BASE_LOW_##r, base_l);\
  mmio_write_32(TZC##t##_REGION_BASE_HIGH_##r, base_h);\
  mmio_write_32(TZC##t##_REGION_TOP_LOW_##r, top_l);\
  mmio_write_32(TZC##t##_REGION_TOP_HIGH_##r, top_h);\
  mmio_write_32(TZC##t##_REGION_ATTRIBUTES_##r, attr);\
  mmio_write_32(TZC##t##_REGION_ID_ACCESS_##r, access)

配置流程:

  // configure TZC0
  mmio_write_32(TZC0_GATE_KEEPER, 0);
  mmio_write_32(TZC0_ACTION, 0x3);

  CONFIG_TZC_REGION0(0, 0, 0);
  CONFIG_TZC_REGION(0, 1, DDR_REGION_START, 0, DDR_BL31_REGION_START - 1, 0, 0xc000000f, 0xffffffff);
  CONFIG_TZC_REGION(0, 2, DDR_BL31_REGION_START, 0, DDR_BL31_REGION_END, 0, 0xc000000f, 0x0);
  CONFIG_TZC_REGION(0, 3, DDR_BL31_REGION_END + 1, 0, DDR_TEE_REGION_START - 1, 0, 0xc000000f, 0xffffffff);
  CONFIG_TZC_REGION(0, 4, DDR_TEE_REGION_START, 0, DDR_TEE_REGION_END, 0, 0xc000000f, 0x0);
  CONFIG_TZC_REGION(0, 5, DDR_TEE_REGION_END + 1, 0, ddr_top_l, ddr_top_h, 0xc000000f, 0xffffffff);
  if (ddr_cap < 6)
  {
    CONFIG_TZC_REGION(0, 8, ddr_inv_l, ddr_inv_h, DDR_REGION_END_LOW, DDR_REGION_END_HIGH, 0x0, 0x0);
  }

  mmio_write_32(TZC0_SPECULATION_CTRL, 0x3);
  mmio_write_32(TZC0_GATE_KEEPER, 0xf);

  // configure TZC1
  mmio_write_32(TZC1_GATE_KEEPER, 0);
  mmio_write_32(TZC1_ACTION, 0x3);

  CONFIG_TZC_REGION0(1, 0, 0);
  CONFIG_TZC_REGION(1, 1, DDR_REGION_START, 0, DDR_BL31_REGION_START - 1, 0, 0xc000000f, 0xffffffff);
  CONFIG_TZC_REGION(1, 2, DDR_BL31_REGION_START, 0, DDR_BL31_REGION_END, 0, 0xc000000f, 0x0);
  CONFIG_TZC_REGION(1, 3, DDR_BL31_REGION_END + 1, 0, DDR_TEE_REGION_START - 1, 0, 0xc000000f, 0xffffffff);
  CONFIG_TZC_REGION(1, 4, DDR_TEE_REGION_START, 0, DDR_TEE_REGION_END, 0, 0xc000000f, 0x0);
  CONFIG_TZC_REGION(1, 5, DDR_TEE_REGION_END + 1, 0, ddr_top_l, ddr_top_h, 0xc000000f, 0xffffffff);
  if (ddr_cap < 6)
  {
    CONFIG_TZC_REGION(1, 8, ddr_inv_l, ddr_inv_h, DDR_REGION_END_LOW, DDR_REGION_END_HIGH, 0x0, 0x0);
  }

  mmio_write_32(TZC1_SPECULATION_CTRL, 0x3);
  mmio_write_32(TZC1_GATE_KEEPER, 0xf);

 

标签:DDR,REGION,mmio,学习,TZC,400,32,CONFIG
From: https://www.cnblogs.com/xiululu/p/17633966.html

相关文章

  • python编程从入门到实践(第2版)学习笔记(变量,字符串)
    变量变量是一种可以赋给值的标签。每一个变量都指向一个相关联的值,下列代码中message即为变量,指向的值为“HelloPythonworld!”message="HelloPythonworld!"print(message)第二行的print()函数用于打印输出这个message变量所关联的值。且变量的值是可以修改的,p......
  • 数据仓库的相关学习
    1、数据仓库概念--为了分析数据数仓专注分析:出现:支持分析、面向分析:2、数据仓库的主要特征面向主题性:集成性:非易失性(非易变性):时变性:3、数据仓库主流开发语言--SQL介绍......
  • 最小表示法学习笔记
    定义一个字符串\(S\)的最小表示法为该字符串所有循环同构字符串中字典序最小的一个。比如:\(abca\),对于他,循环同构字符串就有\(aabc\),\(caab\),\(bcaa\),其中字典序最小的是\(aabc\)。那么我们说\(aabc\)就是\(abca\)最小表示法。算法流程介绍考虑对于一对子串\(A,B\),......
  • docker命令学习
    docker镜像命令:                      退出:exit           退出但是不停止运行:Ctrl+p+q 删除容器:rm容器iddockerimages  查看镜像dockersearch 镜像名称 ......
  • 2023年Java学习路线,23分钟视频讲解,快速掌握Java课程体系
    自学Java开发并非易事,特别是当你刚开始学习时,需要面对的困难似乎比预期的要多得多。但是,如果你有一个系统的学习路线和计划,并注重实践,那么你将会逐渐掌握Java,有效的提高学习效率。深知大家自学Java的苦,苦于没有系统的知识体系,不知道该学什么?看哪个视频比较好?因此,老杜精心录制了一版......
  • gunicorn学习笔记
    官方文档:https://docs.gunicorn.org/en/stable/部署flask相关2.1参考:https://blog.csdn.net/qq_41608408/article/details/1261107462.2参考:https://blog.csdn.net/luhuibo318/article/details/1026881542.3参考:https://www.jianshu.com/p/fecf15ad0c9a2.4参考:https://w......
  • c++学习知识
    1.c++11的各种新特性2.四件套,也就是各种硬件知识3.TCP编程4.Linux的各种指令5.编写shell脚本和python脚本......
  • echarts 学习1
    构建代码varecharts=require('echarts');//基于准备好的dom,初始化echarts实例varmyChart=echarts.init(document.getElementById('main'));//绘制图表myChart.setOption({title:{text:'ECharts入门示例'},tooltip:{},......
  • 基于Android的英语学习APP的设计与实现
    随着移动互联网技术的快速发展,利用手机APP进行工作学习已经成为大众非常喜欢的生活方式。作为传统英语课外学习的重要补充,为了更好的提升英语学习的效果,设计一款适合学生学习的英语学习APP成为关注的焦点。本文通过对当前市场的英语学习APP软件进行需求调研,以怎样更方便为学生用户......
  • 【QT 学习之路】事件
    事件(event)是由系统或者Qt本身在不同的时刻发出的。当用户按下鼠标、敲下键盘,或者是窗口需要重新绘制的时候,都会发出一个相应的事件。一些事件在对用户操作做出响应时发出,如键盘事件等;另一些事件则是由系统自动发出,如计时器事件。事件也就是我们通常说的“事件驱动(eventdrive)”......