coresight(五) rom table

news2025/1/11 8:06:13

五、 rom table
在一个soc中,有多个coresight组件,但是软件怎么去识别这些coresight组件,去获取这些coresight组件的信息了?这个时候,就需要靠coresight组件中,一个重要的组件,这个组件就是rom table。

ARM规定,在一个soc中,必须要实现至少1个rom table,该rom table,保存了soc中各个coresight组件的信息,包括组件格式以及组件的基地址。

rom table只会占用一个4K空间大小,也就是PIDR4寄存器的SIZE为0。

1. entry寄存器
对于rom table,从0x000-0xefc,是entry寄存器。每个entry保存了一个coresight组件的信息。

在这里插入图片描述
在这里插入图片描述
[31:12]是coresight组件,基于ROM table基地址的偏移地址。例如ROM table的基地址为0x2000_0000,而[31:12]为1, 那么这个coresight组件的基地址就是0x2000_1000。

[8:4]和[2]是用来说明该coresight组件所处的power domain。因为一个soc中,有多个power domain,而每个组件可能会处于不同的power domain中。就依靠这两个位域说明。

[1],表示coresight的寄存器的数据有效是8bit,还是32bit。

[0],表示这个entry代表的组件是否有有效的。

一个rom table中,最多有960个entry,也就是一个rom table中,可以最多保存960个coresight组件的信息,但是在一个entry中,可以指向下一个rom table,这样,就扩展了保存coresight组件信息的个数。

如果rom table的entry没有用完,那最后一个有效的entry后的下一个entry,entry值为全0。

在这里插入图片描述

rom table的基地址,保存在DAP的AP的base addr寄存器中,这样debugger通过访问DAP的AP,就可以获取到rom table的基地址,然后在访问rom table,从而获取到整个soc中所有的coresight组件的信息。

rom table的entry指向,可以理解是一个链表,但是链表中,不能有环。如以下的entry指向是错误的。

在这里插入图片描述
在这里插入图片描述

如果一个coresight组件,占用的空间,超过了4K,但coresight有规定,coresight的寄存器,要实现在最后一个4K的最后1K位置,因此rom table中的该coresight组件的基地址,为最后一个4K空间的基地址。

2. 例子
例如如下的coresight系统,共4个组件,假设第一个组件是rom table。假设rom table的基地址是0x8000_0000。
在这里插入图片描述

那么:

在这里插入图片描述

rom table的基地址,存在DAP的AP的base addr寄存器中,外部通过访问DAP的这个寄存器,获取到rom table的基地址,然后就可以访问rom table各个entry 寄存器的值。

组件1,组件2,组件3的基地址信息,存放在rom table的entry0,entry1,entry2中。

对于组件1,entry0的[31:12]为1,表示组件1的基地址是0x8000_1000,外部根据这个地址,就可以访问这个组件的coresight寄存器,从而获取到这个组件的信息。

对于组件2,因为这个组件,占用了4个4K空间大小,rom table中存放占用最后1个4K空间的基地址,因此entry0的[31:12]为5,表示组件1的基地址是0x8000_5000,外部根据这个地址,就可以访问这个组件的coresight寄存器,从而获取到这个组件的信息。通过读取PIDR4寄存器的SIZE信息,获取到该组件占用4个4K空间,从而反推,可以得到该组件的基地址是0x8000_2000。

对于组件3,entry0的[31:12]为6,表示组件1的基地址是0x8000_6000,外部根据这个地址,就可以访问这个组件的coresight寄存器,从而获取到这个组件的信息。

这样,外部就通过rom table,就可以获取到soc中,所有coresight组件的基地址。有了基地址,就可以对其进行访问。

作者:卢俊

移知是中国半导体线上讲座和技术交流平台;这里汇聚了众多优秀和资深的大咖,通过提供最接地气的实战课程,分享最实用的经验,为您职场学习和成长助力;关注移知,还可领取100元新人红包和免费半导体课程!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/146273.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

CMD有哪些有趣的命令?

程序员宝藏库:https://gitee.com/sharetech_lee/CS-Books-Store 用惯Linux和macOS的同学都会对各种各样强大的命令印象深刻,然而再转向Windows时就开始不屑一顾,认为Windows上没有Linux上那些超级便捷好用的命令。 其实,Windows下…

ROS安装及rosdep update问题解决

ROS安装: 参考链接:详细介绍如何在ubuntu20.04中安装ROS系统,以及安装过程中出现的常见错误的解决方法,填坑!!!_慕羽★的博客-CSDN博客_ubuntu20.04安装ros rosdep update问题解决&#xff1a…

Linux Shell 脚本编程基础

Shell是一个命令解释器,它解释由用户输入的命令并且把它们送到内核,不仅如此,Shell有自己的编程语言用于对命令的编辑,它允许用户编写由shell命令组成的程序.Shel编程语言具有普通编程语言的很多特点,比如它也有循环结构和分支控制结构等,用这种编程语言编写的Shell程序与其他应…

Selenium用法详解【窗口表单切换】【JAVA爬虫】

简介本文主要讲解java 代码利用Selenium如何实现控制浏览器进行窗口切换和页面内的不同表单之间的切换操作。切换操作窗口切换在 selenium 操作页面的时候,可能会因为点击某个链接而跳转到一个新的页面(打开了一个新标签页),这时候…

电子词典流程图

简易流程: 详细介绍 服务端(TCP并发) 一.分支线程负责处理客户端发送的信息 1.登陆与注册信息 登陆(l);注册(e) (1)登陆根据接收的用户名,密码在用户注册表中遍历是否符合&#xff…

ORB-SLAM2 --- ORBmatcher::SearchBySim3函数

目录 1.函数作用 2.函数流程 3.函数解析 3.1 准备工作:内参,计算Sim3的逆 3.2 记录已经匹配的特征点 3.3 通过Sim变换,寻找 pKF1 中特征点和 pKF2 中的新的匹配 3.4 通过Sim变换,寻找 pKF2 中特征点和 pKF1 中的新的匹…

Jenkins远程SSH部署SpringBoot项目

1.前置环境 前置环境配置:jdk、maven、git 2.在Jenkins配置git凭据 请查看往期文章: https://blog.csdn.net/RookiexiaoMu_a/article/details/122655272?spm1001.2014.3001.5501 3.安装Publish over SSH插件 4.配置SSH Servers 安装完Publish over…

C++蓝桥杯贪心算法

目录 🌼一,1812: [NewOJ Week 5] 排列变换 🌼二,1827: [NewOJ Week 8] 升降数字 🌼三,剑指offer 10-II 青蛙跳台阶问题 🌼四,P1223 排队接水 🌼五,P5650…

npm常用命令

目录1. 构建项目2. 安装包3. 查看安装目录4. 卸载包5. 更新包6. 查看已安装的包7. 使用国内npm镜像源8. 使用yarn1. 构建项目 npm init # 全部使用默认配置 npm init --yes2. 安装包 # 全局安装 npm install 包名 -g # 本地安装 npm install 包名 # 一次安装多个 npm install…

ROS移动机器人开发——硬件引脚

我们使用的32开发板为冰达机器人官方的开发板,类型为STM32RCT6。32章节的目的为,将官方所给源码转化为 官方标准库函数来进行使用 —————————————— 需求提出: 电源 1. 3.3V-200ma供电 2. 输入 9-12.6V 5A 控制&#xff1a…

(十三)JAVA基础语法

目录 前言: 一、包 二、权限修饰符 三、final关键字 四、常量 五、枚举 六、抽象类 七、抽象类:模板方法模式 八、接口 前言: ①包: 在编写Java程序时,随着程序架构越来越大,类的个数也越来越多,这时就会发现管理程序中维护类名称也…

利用OpenCV的函数calcHist()计算出图像的直方图数据后绘制图像的直方图

利用OpenCV的函数calcHist()计算出图像的直方图数据后绘制图像的直方图 在上一篇博文 https://www.hhai.cc/thread-200-1-1.html 中已经对OpenCV的直方图计算函数calcHist()进行了详细介绍。 这篇博文介绍如何用直方图数据绘制直方图。 OpenCV是没有统计图绘制的相关函数的&a…

Verilog语法笔记(夏宇闻第三版)-循环语句

目录 forever语句: repeat语句: while语句: for语句: 在Verilog HDL中存在着四种类型的循环语句,用来控制执行语句的执行次数。 1) forever 连续的执行语句。 2) repeat 连续执行一条语句 n 次。 3) while 执行一条语句直到某个条件不满足。如果一开始条件即…

数据异动分析方法论

注:本文首发于公众号:书剑双修,欢迎关注。 数据异动分析是一类典型的数据分析问题,也是分析师日常工作中会频繁遇到的问题。很多的数据分析面试过程中,都会对这个方面进行考察,以此来判断分析师思考问题的全…

使用IIS服务器搭建一个网站

1、什么是IISIIS全称为Internet Information Services,是一种Web服务组件。通过在自己电脑上安装好IIS服务,就可以把你自己的电脑当作一个网站的服务器。2、搭建一个IIS2.1、开启windows的IIS服务Step1、控制面板——程序——程序和功能——启用或关闭wi…

微软的COM、DOM和COM+

纯粹的为了记录一下 COM 组件对象模型(COM),是微软公司为了计算机工业的软件生产更加符合人类的行为方式开发的一种新的软件开发技术。在COM构架下,人们可以开发出各种各样的功能专一的组件,然后将它们按照需要组合起…

大数据NiFi(九):NiFi集群页面的添加、配置处理器操作

文章目录 NiFi集群页面的添加、配置处理器操作

jdb2/kworker

测试代码出自&#xff1a;块设备IO优化的典型案例分析_papaofdoudou的博客-CSDN博客_kworker/u2:2-2- #include <stdio.h> #include <string.h> #include <sys/types.h> #include <sys/stat.h> #include <sys/ioctl.h> #include <unistd.h&g…

基础算法 - 常见算法模板题(最简洁写法)【下】

目录 双指针 最长连续不重复子序列​编辑 二进制中1的个数 离散化 区间和 区间合并 双指针 最长连续不重复子序列 思路&#xff1a; 设左右指针 j&#xff0c;i&#xff1b;用 i 遍历数组&#xff0c;对【j&#xff0c;i】范围路径数值出现次数记录若次数大于1&#xff0c;则…

Seata-go 发布 1.0.3,补齐 AT 模式

文&#xff5c;赵新&#xff08;花名&#xff1a;于雨 )蚂蚁集团 Seata 项目开源负责人本文 3902 字 阅读 10 分钟发布概览Seata-go 1.0.3 版本补齐了 AT 模式下对 Insert/Delete 的支持&#xff0c;这意味着除了 “select for update” 外&#xff0c;Seata-go 的 AT 模式与 S…