OCDS(on chip debug support)之STM

1. 问题:

在使用劳得巴赫调试TC397过程中,发现劳得巴赫break后,再次运行,task中的计数器不再增加,OS不再调度,并且会进入ERROR hook,error类型为OS_LIMITED

2. 排查

2.1 ErrorHook中的Error=4,错误类型是E_OS_LIMIT,原因:激活次数过大

2.2 造成激活次数过多的原因:

——激活task时机:

  • 直接激活:调用ActivaTask()或者ChainTask();
  • 间接激活:ALARM激活或者ScheduleTable激活;

每个ScheduleTable的counter使用的是STM的counter,如果STM的counter一直在增加,会导致ScheduleTable多次激活task。

2.3 查看STM counter,一直在变化

所以需要在劳德巴赫暂停时,STM的counter也暂停。

3. 解决

3.1 当核被暂停时,TriCore允许暂停外设。

3.2 调试器暂停时,STM模块暂停

寄存器STM0_OCS支持挂起STM counter,使用劳德巴赫修改STM0_OCS寄存器,STM0_TIM0计数器不再增加。同样操作,修改其他的STMOCS寄存器,暂停后重新运行程序,不会再进入ErrorHook;

4. 完善

4.1 使用cmm脚本修改STMx_OCS:

参考劳德巴赫提供的手册中:

实现如下:

缺点:每次DEBUG RESET后,寄存器恢复默认值;需要再次加载cmm脚本;

优点:只有在需要调试器会设置OCS寄存器,不接调试器不需要设置;

4.2 修改代码

注意!OCS相关寄存器只能在OCDS enable时才可以写入!否则会进TRAP。

实现如下:


/** \brief 80, OSCUStatus Register */
#define CBS_OSTATE /*lint --e(923, 9078)*/ (*(volatile Ifx_CBS_OSTATE*)0xF0000480u)/** \brief E8, OCDS Control and Status Register */
#define STM0_OCS /*lint --e(923, 9078)*/ (*(volatile Ifx_STM_OCS*)0xF00010E8u)/** \brief E8, OCDS Control and Status Register */
#define STM1_OCS /*lint --e(923, 9078)*/ (*(volatile Ifx_STM_OCS*)0xF00011E8u)/** \brief E8, OCDS Control and Status Register */
#define STM2_OCS /*lint --e(923, 9078)*/ (*(volatile Ifx_STM_OCS*)0xF00012E8u)/** \brief E8, OCDS Control and Status Register */
#define STM3_OCS /*lint --e(923, 9078)*/ (*(volatile Ifx_STM_OCS*)0xF00013E8u)/** \brief E8, OCDS Control and Status Register */
#define STM4_OCS /*lint --e(923, 9078)*/ (*(volatile Ifx_STM_OCS*)0xF00014E8u)/** \brief E8, OCDS Control and Status Register */
#define STM5_OCS /*lint --e(923, 9078)*/ (*(volatile Ifx_STM_OCS*)0xF00015E8u)if(CBS_OSTATE.B.OEN == 1u)
{
Ifx_STM_OCS ocs;
ocs = STM0_OCS;
ocs.B.SUS_P      = 1u;
ocs.B.SUS        = 2u;
STM0_OCS =  ocs;
STM0_OCS.B.SUS_P = 0u;ocs = STM1_OCS;
ocs.B.SUS_P      = 1u;
ocs.B.SUS        = 2u;
STM1_OCS =  ocs;
STM1_OCS.B.SUS_P = 0u;ocs = STM2_OCS;
ocs.B.SUS_P      = 1u;
ocs.B.SUS        = 2u;
STM2_OCS =  ocs;
STM2_OCS.B.SUS_P = 0u;ocs = STM3_OCS;
ocs.B.SUS_P      = 1u;
ocs.B.SUS        = 2u;
STM3_OCS =  ocs;
STM3_OCS.B.SUS_P = 0u;ocs = STM4_OCS;
ocs.B.SUS_P      = 1u;
ocs.B.SUS        = 2u;
STM4_OCS =  ocs;
STM4_OCS.B.SUS_P = 0u;ocs = STM5_OCS;
ocs.B.SUS_P      = 1u;
ocs.B.SUS        = 2u;
STM5_OCS =  ocs;
STM5_OCS.B.SUS_P = 0u;
}

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

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

相关文章

Docker Desktop 不支持 host 网络模式

先把这个结论的放在前面,直接访问链接就能看到官方文档中已经明确说了不支持。 参考链接:docker desktop for windows 不支持 host 网络模式 以前对于 docker 的网络模式,一直只是了解,没有亲自尝试过。结果今天在尝试 docker 的 …

PostgreSQL 文章下架 与 热更新和填充可以提升数据库性能

开头还是介绍一下群,如果感兴趣PolarDB ,MongoDB ,MySQL ,PostgreSQL ,Redis, Oceanbase, Sql Server等有问题,有需求都可以加群群内有各大数据库行业大咖,CTO,可以解决你的问题。加群请联系 liuaustin3 ,(…

从多模态生物图数据中学习Gene的编码-MuSeGNN

由于数据的异质性,在不同的生物医学背景下发现具有相似功能的基因对基因表示学习提出了重大挑战。在本研究中,作者通过引入一种称为多模态相似性学习图神经网络的新模型来解决这个问题,该模型结合了多模态机器学习和深度图神经网络&#xff0…

vulhub中Struts2-008 远程代码执行漏洞复现

影响版本: 2.1.0 - 2.3.1 原理 > S2-008 涉及多个漏洞,Cookie 拦截器错误配置可造成 OGNL 表达式执行,但是由于大多 Web 容器(如 Tomcat)对 Cookie 名称都有字符限制,一些关键字符无法使用使得这个点显得比较鸡肋…

断网了,还能 ping 通 127.0.0.1 吗?

什么是127.0.0.1 什么是 ping TCP发数据和ping的区别 为什么断网了还能 ping 通 127.0.0.1 ping回环地址和ping本机地址有什么区别 127.0.0.1 和 localhost 以及 0.0.0.0 有区别吗 总结 你女神爱不爱你 ,你问她,她可能不会告诉你。 但网通不通 &#xf…

51单片机入门:认识开发板

认识开发板 板载资源: 数码管模块 说明: 2个四位一体共阴数码管 详细: 2个四位一体:两个独立的四位数码管,每个四位数码管都是“一体”的设计,也就是说,每个数码管内部集成了四个独立的七段LE…

Windows 2008虚拟机安装、安装VM Tools、快照和链接克隆、添加硬盘修改格式为GPT

一、安装vmware workstation软件 VMware workstation的安装介质,获取路径: 链接:https://pan.baidu.com/s/1AUAw_--yjZAUPbsR7StOJQ 提取码:umz1 所在目录:\vmware\VMware workstation 15.1.0 1.找到百度网盘中vmwa…

SD-WAN组网面临的安全挑战?如何提供有效的安全措施

SD-WAN(软件定义广域网)技术的广泛应用,企业面临着越来越多的网络安全挑战。尽管SD-WAN带来了灵活性和效率的提升,但其开放性和基于云的特性也带来了一系列安全威胁。本文将探讨SD-WAN组网面临的安全挑战,并提供一些有…

【51单片机入门记录】A/D D/A转换器概述

目录 一、A/D D/A转换器简介 (1)模数转换器-ADC (analogue-to-digital conversion) (2)数模转换器-DAC(digital-to-analogue conversion) (3)应用场景 二…

剑指Offer题目笔记25(使用回溯法解决其他类型问题)

面试题85: 问题: ​ 输入一个正整数n,输出所有包含n个左括号和n个右括号的组合,要求每个组合的左括号和右括号匹配。 解决方案: ​ 使用回溯法。因为要生成n个左括号和n个右括号,故需要走2n步&#xff0…

2012年认证杯SPSSPRO杯数学建模D题(第二阶段)人机游戏中的数学模型全过程文档及程序

2012年认证杯SPSSPRO杯数学建模 D题 人机游戏中的数学模型 原题再现: 计算机游戏在社会和生活中享有特殊地位。游戏设计者主要考虑易学性、趣味性和界面友好性。趣味性是本质吸引力,使玩游戏者百玩不厌。网络游戏一般考虑如何搭建安全可靠、丰富多彩的…

红黑树路径长度分析:证明与实现

红黑树路径长度分析:证明与实现 一、红黑树的基本性质二、证明:最长路径至多是最短路径的2倍2.1 证明思路2.2 证明过程 三、伪代码实现四、 C语言代码实现5、 结论 红黑树作为一种高效的自平衡二叉搜索树,在计算机科学领域中被广泛应用于各种…