CoreSight学习笔记

news2024/9/25 2:25:23

文章目录

  • 1 Components
    • 1.1 ROM Table
  • 2 使用场景
    • 2.1 Debug Monitor中断
      • 2.1.1 参考资料
    • 2.2 Programming the cross halt
      • 2.2.1 编程实现
      • 2.2.2 参考资料
    • 2.3 CTI中断
      • 2.3.1 编程实现
        • 2.3.1.1 准备工作
        • 2.3.1.2 触发中断
        • 2.3.1.3 中断响应
      • 2.3.2 参考资料

1 Components

1.1 ROM Table

在这里插入图片描述

2 使用场景

2.1 Debug Monitor中断

  1. 使能中断
		// 测试debug monitor中断
		// enable debug monitor
		CoreDebug->DEMCR |= (1 << 16);
		NVIC_EnableIRQ(DebugMonitor_IRQn);
		NVIC_SetPriority(DebugMonitor_IRQn, 1);
  1. 实现中断响应函数
void DebugMon_Handler(void) {
		printf("DebugMon_Handler entered\n");
}

void HardFault_Handler() {
		printf("HardFault_Handler entered\n");
}

如果没有进debug monitor handler,而是进了hard fault handler,那么就说明Debug Monitor没有使能。

  1. 中断触发条件
    程序实现软件断点,全速run起来的情况下可以进去debug monitor中断。
#if defined (TEST_SOFTWARE_BREAKPOINTS)
		// 测试软件断点
		imtprintf("start test software breakpoint.\r\n");
	    __asm("BKPT 0"); imtprintf("software breakpoint 1\r\n");
		__asm("BKPT 0"); imtprintf("software breakpoint 2\r\n");
        __asm("BKPT 0"); imtprintf("software breakpoint 3\r\n");
		__asm("BKPT 0"); imtprintf("software breakpoint 4\r\n");
	    __asm("BKPT 0"); imtprintf("software breakpoint 5\r\n");
		__asm("BKPT 0"); imtprintf("software breakpoint 6\r\n");
		__asm("BKPT 0"); imtprintf("software breakpoint 7\r\n");
		__asm("BKPT 0"); imtprintf("software breakpoint 8\r\n");
#endif 

2.1.1 参考资料

[1] https://developer.arm.com/documentation/ddi0337/e/CEGHJDCF
[2] https://interrupt.memfault.com/blog/cortex-m-debug-monitor

2.2 Programming the cross halt

Cross-halt behavior happens when one processor core enters the Halting debug state, and then all the processor cores should enter the Halting debug state. This is a common situation that is encountered when debugging a system.

To generate the cross-halt behavior, the debugger must make use of the Debug Halt and Cross Halt trigger events. The debug halt event is the signal to the processor core to enter the debug state. The cross-halt event is the signal from the processor core that it is entering the debug state. To achieve the cross-halt behavior, the debugger maps the debug halt event and cross halt event signals for every processor core in the system to the same cross-trigger channel. For example, if the debugger mapped the events to Channel 3 it would program the registers as follows:
• Enable the CTI: CTICONTROL = 0b1
• Map input trigger 0 to Channel 3: CTIINEEN0 = 0b1000
• Map output trigger 0 to Channel 3: CTIINEEN0 = 0b1000
• Enable event propagation on Channel 3: CTIGATE = 0b1XXX
The following diagram illustrates how Trigger inputs 0 and Trigger outputs 0 for multiple CTI components can be mapped to channel 3 of the Cross Trigger Matrix:
在这里插入图片描述
注意:需要programme LAR寄存器,clear software lock。否则向CTI_CONTROL寄存器中写值的话会失效,即,值写不进去,写了在读出来还是没有变化。

2.2.1 编程实现

(1)enable trace 功能

CoreDebug -> DEMCR |= CoreDebug_DEMCR_TRCENA_Msk;

(2)清除CTI的软件访问锁

LOCK_ACCESS_REGISTER = 0xC5ACCE55

(3)enable CTI功能

CTI_CONTROL |= (1 << 0);

(4)enable要使用的channel

CTI_GATE |= (1 << 3);  // 这里使用了channel 3 

(5)建立trigger和channel的映射

// 这里是trigger 0 和channel 3 建立映射。
CTI_IN_EN0 |= (1 << 3);
CTI_OUT_EN0 |= (1 << 3);

2.2.2 参考资料

[1] https://developer.arm.com/documentation/102520/0100/Programming-the-cross-halt

2.3 CTI中断

CTI中断是由ctitrigout信号触发产生。 ctitrigoutack信号可以清除ctitrigout所影响的寄存器的值。

配置【Integration Test Trigger Output register, ITTRIGOUT】寄存器相应的trigger为的值为1,可以产生ctitrigout信号。channel中也可以产生ctitrigout信号,可以通过配置【CTI Application Pulse register, CTIAPPPULSE】的值,在指定的channel上产生一个channel Event,会将此event传递给相应的trigger。

配置【CTI Interrupt Acknowledge register, CTIINTACK】的值可以acknowledge ctitrigout信号。

2.3.1 编程实现

2.3.1.1 准备工作

(1)enable trace功能和CTI的功能。
(2)启用想要使用的channel。下图所示,就启用了channel 3.
(3)建立trigger和channel的映射。以K3芯片为例,只有trigger2和trigger1才能产生中断信号给中断控制器,所以下图讲trigger2和channel3绑定。
(4)使能中断

2.3.1.2 触发中断

在channel 3上面产生channel Event,即可给trigger 2发出ctitrigout信号,触发中断。

CTI_APP_PULSE |= (1 << 3);
2.3.1.3 中断响应

(1)实现中断相应函数
(2)在相应函数中清除中断。避免频繁进入中断响应函数。

CTI_INT_ACK |= (1 << 2);

2.3.2 参考资料

[1] 《ARM® CoreSight™ SoC-400 Revision: r3p2 Technical Reference Manual》中CTI registers章节

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

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

相关文章

力扣热门100题 - 4.寻找两个正序数组的中位数

力扣热门100题 - 4.寻找两个正序数组的中位数 题目描述&#xff1a;示例&#xff1a;提示&#xff1a;解题思路&#xff1a;代码&#xff1a; 题目链接&#xff1a;4.寻找两个正序数组的中位数 题目描述&#xff1a; 给定两个大小分别为 m 和 n 的正序&#xff08;从小到大&a…

【golang】23、gorilla websocket 源码:examples、数据结构、流程

文章目录 一、examples1.1 echo1.1.1 server.go1.1.2 client.go 1.2 command1.2.1 功能和启动方式1.2.2 home.html1.2.3 main.go 1.3 filewatch1.3.1 html1.3.2 serveHome 渲染模板1.3.3 serveWs1.3.4 writer() 1.4 buffer pool1.4.1 server1.4.2 client 1.5 chat1.5.1 server1…

掌握虚拟化与网络配置之道:深入浅出VMware及远程管理技巧

目录 虚拟机介绍 虚拟机的关键字 服务器架构的发展 为什么用虚拟机VMware 虚拟机和阿里云的区别 功能角度 价格因素 应用场景 优势方面 找到windows的服务管理 配置VMware 关于VMware安装的几个服务 vmware如何修改各种网络配置 关于NAT的详细信息(了解) NAT(网…

【芯片设计- RTL 数字逻辑设计入门 11 -- 移位运算与乘法】

请阅读【嵌入式开发学习必备专栏 】 文章目录 移位运算与乘法Verilog Codeverilog 拼接运算符&#xff08;{}&#xff09;Testbench CodeVCS 波形仿真 问题小结 移位运算与乘法 已知d为一个8位数&#xff0c;请在每个时钟周期分别输出该数乘1/3/7/8,并输出一个信号通知此时刻输…

LLaMA 入门指南

LLaMA 入门指南 LLaMA 入门指南LLaMA的简介LLaMA模型的主要结构Transformer架构多层自注意力层前馈神经网络Layer Normalization和残差连接 LLaMA模型的变体Base版本Large版本Extra-Large版本 LLaMA模型的特点大规模数据训练 LLaMA模型常用数据集介绍公共数据来源已知的数据集案…

物理信息神经网络(PINN): 将物理知识融合到深度学习中

物理信息神经网络&#xff08;PINN&#xff09;: 将物理知识融合到深度学习中 物理信息神经网络&#xff08;PINN&#xff09;简介PINN的工作原理PINN模型如何利用物理法则指导模型训练1. 定义物理问题和相应的物理定律2. 构建神经网络3. 定义损失函数数据误差项 (Data-fidelit…

Docker-Learn(三)创建镜像Docker(换源)

根据之前的内容基础&#xff0c;本小点的内容主要涉及到的内容是比较重要的文本Dockerfile 1. 编辑Dockerfile 启动命令行终端&#xff08;在自己的工作空间当中&#xff09;,创建和编辑Dockerfile。 vim Dockerfile然后写入以下内容 # 使用一个基础镜像 FROM ubuntu:late…

Mysql为什么使用B+Tree作为索引结构

B树和B树 一般来说&#xff0c;数据库的存储引擎都是采用B树或者B树来实现索引的存储。首先来看B树&#xff0c;如图所示&#xff1a; B树是一种多路平衡树&#xff0c;用这种存储结构来存储大量数据&#xff0c;它的整个高度会相比二叉树来说&#xff0c;会矮很多。 而对于数…

苹果推出新型开源AI图像编辑模型“MGIE”;可汗学院辅助学习的GPT,Prompt 质量非常高

&#x1f989; AI新闻 &#x1f680; 苹果推出新型开源AI图像编辑模型“MGIE” 摘要&#xff1a;苹果公司最近发布了一个名为“MGIE”的开源人工智能模型&#xff0c;旨在通过自然语言指令对图片进行编辑。MGIE&#xff0c;全称MLLM-Guided Image Editing&#xff0c;依赖于多…

文献速递:肿瘤分割---- 弱监督教师-学生网络用于非增强图像的肝脏肿瘤分割

文献速递&#xff1a;肿瘤分割---- 弱监督教师-学生网络用于非增强图像的肝脏肿瘤分割 01 文献速递介绍 准确的肝脏肿瘤分割对放射科医师来说是必不可少的&#xff0c;以诊断和治疗肝脏肿瘤并提高患者的生存率&#xff08;Radtke 等人&#xff0c;2007年&#xff09;。特别是…

代码随想录算法训练营29期|day44 任务以及具体任务

动态规划&#xff1a;完全背包理论基础 本题力扣上没有原题&#xff0c;大家可以去卡码网第52题 (opens new window)去练习&#xff0c;题意是一样的。 #算法公开课 《代码随想录》算法视频公开课 (opens new window)&#xff1a;带你学透完全背包问题&#xff01; (opens …

HTML 标签

HTML&#xff1a;超文本标记语言 HTML骨架结构&#xff1a; html标签&#xff1a;网页的整体 head标签&#xff1a;网页的头部 body标签&#xff1a;网页的身体 HTML的注释 VS code中&#xff1a;ctrl/ 浏览器不会执行注释 HTML标签的构成&#xff1a; 双标签&#xff1a…

Kubernetes基础(十四)-Cluster Autoscaler

Kubernetes 给出的解决方案就是&#xff1a;自动伸缩&#xff08;auto-scaling&#xff09;&#xff0c;通过自动伸缩组件之间的配合&#xff0c;可以 7*24 小时的监控着k8s集群&#xff0c;动态变化负载&#xff0c;以适应用户需求。 1 自动伸缩组件 1.1 自动伸缩类型 1.1.…

VsCode中常用的正则表达式操作

在vscode中可以使用正则表达式来进行搜索内容&#xff0c;极大的方便了我们对大量数据中需要查看的信息进行筛选&#xff0c;使用正则搜索时点击 .* 此文章会持续补充常用的正则操作 1.光标选中搜索到的内容 将搜索的内容进行全选&#xff0c;举例&#xff1a;在如下文件中我需…

基于Linux的HTTP代理服务器搭建与配置实战

在数字化世界中&#xff0c;HTTP代理服务器扮演着至关重要的角色&#xff0c;它们能够帮助我们管理网络请求、提高访问速度&#xff0c;甚至在某些情况下还能保护我们的隐私。而Linux系统&#xff0c;凭借其强大的功能和灵活性&#xff0c;成为了搭建HTTP代理服务器的理想选择。…

Android Camera2 API 后台服务

最近在搞CameraAPP需要将Camera2弄成一个后台服务&#xff0c;发现跟预览的Activity没多大变动只是加了Service&#xff0c;和一些简单的修改。之前的公司也用到Camera2&#xff0c;发现用到的时候还是蛮多的所以记录一下&#xff0c;代码在文章末尾 camera2的结构如下&#x…

常用的前端模块化标准总结

1、模块化标准出现以前使用的模块化方案&#xff1a; 1&#xff09;文件划分&#xff1a; 将不同的模块定义在不同的文件中&#xff0c;然后使用时通过script标签引入这些文件 缺点&#xff1a; 模块变量相当于是定义在全局的&#xff0c;容易造成变量名冲突&#xff08;即不…

代码随想录算法训练营第25天 | 216.组合总和III ,17.电话号码的字母组合

回溯章节理论基础&#xff1a; https://programmercarl.com/%E5%9B%9E%E6%BA%AF%E7%AE%97%E6%B3%95%E7%90%86%E8%AE%BA%E5%9F%BA%E7%A1%80.html 216.组合总和III 题目链接&#xff1a;https://leetcode.cn/problems/combination-sum-iii/ 思路: 本题就是在[1,2,3,4,5,6,7,…

Git简单了解

文章目录 1、Git概述2、Git下载与安装3、Git代码托管服务3.1、使用码云托管服务 1、Git概述 什么是Git Git是一个分布式版本控制工具&#xff0c;主要用于管理开发过程中的源代码文件&#xff08;Java类、xml文件、html页面等&#xff09;&#xff0c;在软件开发过程中被广泛使…

免费文字转语音工具,一款优秀且永久免费的文字转语音工具,同时拥有多种类型男声女声,支持多国语言转换,支持语速调节和下载!

一、软件简介 该工具只有一个功能&#xff0c;就是将输入框内的纯文本内容转换为指定语言的音频&#xff0c;并且可以自由调节语速及音色&#xff08;男声/女声&#xff09;&#xff0c;其内置了多种语音包&#xff0c;包含男声、女声、普通话、粤语以及方言&#xff0c;并且支…