CoreSight学习笔记

文章目录

  • 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 monitorCoreDebug->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.hqwc.cn/news/460851.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

AOP相关

AOP相关 什么是AOP&#xff1f; 常见的场景 记录操作日志 缓存处理 spring内置事务处理 AOP记录操作日志 定义切点表达式&#xff0c;确定要记录的方法 找到方法中有log注解的方法 获得方法 获得方法的参数 spring中的事务实现 spring中的事务分声明式事务和编程式事务…

巴菲特经典演讲:这些人只关注两个数字,便取得了成就

1984年&#xff0c;为纪念格雷厄姆&#xff08;Benjamin Graham&#xff09;和多德&#xff08;Daved L. Dodd&#xff09;所合著的《证券分析》出版五十周年&#xff0c;巴菲特应哥伦比亚大学邀请&#xff0c;进行了一次题为《格雷厄姆-多德式的超级投资者》&#xff08;The S…

[VulnHub靶机渗透] WestWild 1.1

&#x1f36c; 博主介绍&#x1f468;‍&#x1f393; 博主介绍&#xff1a;大家好&#xff0c;我是 hacker-routing &#xff0c;很高兴认识大家~ ✨主攻领域&#xff1a;【渗透领域】【应急响应】 【python】 【VulnHub靶场复现】【面试分析】 &#x1f389;点赞➕评论➕收藏…

#Js篇:js里面递归的理解

定义&#xff1a; 递归是一种编程技术&#xff0c;它是指一个函数在其定义内部调用自身的过程。 特点&#xff1a; 一个问题可以分解为更小的问题用同样的方法解决&#xff1b;分解后的子问题求解方式一样&#xff0c;不同的是数据规模变小&#xff1b;存在递归终止条件 作…

Springboot根据环境读取application配置文件

目录 1. 首先创建两个不同配置文件 2. pom.xml 配置文件 3. 指定环境 4. 最后启动测试 1. 首先创建两个不同配置文件 分别为开发环境和生产环境 application-dev.properties 和 application-prod.properties application-dev.properties 配置为 1931 端口 application-pro…

[leetcode] 31. 下一个排列

文章目录 题目描述解题方法两遍扫描java代码复杂度分析 题目描述 整数数组的一个 排列 就是将其所有成员以序列或线性顺序排列。 例如&#xff0c;arr [1,2,3] &#xff0c;以下这些都可以视作 arr 的排列&#xff1a;[1,2,3]、[1,3,2]、[3,1,2]、[2,3,1] 。 整数数组的 下…

可靠性测试

1 软件可靠性测试 软件可靠性概述 可靠性&#xff08;reliability&#xff09;是指产品在规定的条件下和规定的时间内完成规定功能的能力。 固有可靠性是通过设计、制造赋予产品的可靠性&#xff1b;使用可靠性既受设计、制造的影响&#xff0c;又受使用条件的影响。一般使用可…

(43)找出中枢整数

文章目录 每日一言题目解题思路法一&#xff1a;法二&#xff1a; 代码法一&#xff1a;法二&#xff1a; 结语 每日一言 即使慢&#xff0c;驰而不息&#xff0c;纵令落后&#xff0c;纵令失败&#xff0c;但一定可以达到他所向往的目标。——鲁迅 题目 题目链接&#xff1a…

如何使用CLZero对HTTP1.1的请求走私攻击向量进行模糊测试

关于CLZero CLZero是一款功能强大的模糊测试工具&#xff0c;该工具可以帮助广大研究人员针对HTTP/1.1 CL.0的请求走私攻击向量进行模糊测试。 工具结构 clzero.py - 工具主脚本&#xff1b; default.py - 包含了大多数标准攻击测试方法和字符&#xff1b; exhaustive.py - 包…

JavaScript流程控制详解之循环结构(倒三角、九九乘法表)

循环结构 在JavaScript中&#xff0c;循环语句指的是在满足某个条件下重复执行 指定的一段代码。若条件结果为true,则重复执行&#xff0c;则进入循环&#xff0c;否则结束循环。 在JavaScript中&#xff0c;循环语句如下&#xff1a; while语句do…while语句for语句 while…

常见关系型数据库产品介绍

更新晚了&#xff0c;不好意思啦&#xff01;继关系型数据库的介绍与历史今天主要和大家分享关系型数据库有哪些产品以及简单的背景介绍。这篇文章介意宝宝们听着舒缓的音乐静静享受。 关系型数据库的产品有很多&#xff0c;下面和大家分享一些比较有名的、使用比较广泛的关系…

GEE详细教程之:将Landsat8与Landsat9影像合成一个影像

1.前言 因项目需求&#xff0c;需要获取一个研究区的Landsat8影像&#xff0c;但Landsat8重复周期长&#xff0c;加之天气的影响&#xff0c;很难获取影像质量较好的影像。Landsat4/5/7的波段顺序与landsat8不同&#xff0c;除此之外&#xff0c;landsat7影像还需要工具进行条带…