【DSP】无法在线仿真无法进入main()函数

DSP无法在线仿真无法进入main()函数

1.问题描述

​ 接手前人的DSP代码,硬件平台是DSP C6701,软件IDE是CCS 12.3.0。仿真器版本是XDS 560V2。

​ 在进行在线仿真时,经常出现“伪在线”的情况。简单来说,正常的在线过程:在CCS软件中点击debug按钮,程序加载进硬件后,会进入暂停状态,此时点击继续运行按钮,程序开始运行,接收遥控指令等功能正常。而“伪在线”地情况,点击debug按钮,程序加载进硬件进入暂停状态,此时点击继续运行按钮,程序看似正常运行,但不对遥控进行响应,此时暂停程序,会显示停留在中断函数的某一句语句上,重复地进行“暂停-启动”操作,程序每次都停止在相同的语句。

​ 在第一版代码中,也就是前人的代码,该问题偶尔出现,出现该问题后需要反复重启产品、仿真器、CCS软件等,运气好的话几次就能在线成功。

​ 在对第一版代码进行修改后,本文使用第二版代码进行在线,开始每次都出现该问题,始终无法在线成功。
在这里插入图片描述

​ 程序的大概结构如下:


class ReceiveSend
{private://一些私有函数和私有变量public:fun_process();fun_isr_process();
}ReceiveSend * ptr_tmp;
int main()
{//中断定时器设置_fun_timer00_set();//中断设置_fun_isr_init();//DSP EMIF口初始话_fun_emif_init();//new对象ptr_tmp = new ReceiveSend;while(1){//需要在main()中的对时间要求不高的功能//包含接收遥控指令,发送遥测数据ptr_tmp -> fun_processs();}return 0;
}interrupt void c_int14()
{//在中断中运行的,对事件要求比较高的功能ptr_tmp -> fun_isr_process();
}

2.问题定位

​ 代码中的fun_processs()函数实现了接收主机的遥控指令,向主机发送遥测数据的功能,因此在debug的过程中,将主机能否接收到遥测数据作为程序是否正常运行的判别标准。如果主机可以接收到遥测数据,则认为程序正常运行。

​ (1)最开始怀疑是第二版代码添加的功能太多了,造成了无法在线运行的问题,因此将许多无效的变量和函数删除,将Memory的分配占比调整地比第一版的分配占比还低,但是很可惜,“伪在线”的问题还是没有解决。
在这里插入图片描述

​ (2)接下来将中断函数c_int14fun_isr_process()函数中的内容全部注释,也就是保留中断函数,但是中断函数中不执行任何功能。这回程序fun_process()中的遥控遥测收发是正常的,主机端接收到了遥测。

​ 于是怀疑是fun_isr_process()中的功能太多了,在中断事件内无法运行完。程序此时是具备遥控遥测收发功能的,fun_isr_process()函数中没有任何功能,本文使用#if 0的办法,去增加fun_isr_process()中的功能模块。如果增加到,比如说C模块时,遥控遥测收发不正常了,那么问题可能出现在C模块的代码中。

​ 试验的结果比较奇怪:
第一次试验,逐步地增加模块数量,直到剩余1个功能模块没有启用,程序正常运行,将最后1个模块也启用,程序不能正常运行;
第二次试验,产品断电重启,将代码恢复到可以正常启用的情况,也就是不启用最后1个模块的状态,程序不能正常运行;
第三次试验,产品断电重启,重复第一次试验的步骤,逐步增加模块数量直至最后1个功能模块,程序正常运行。
第四次试验,产品断点重启,重复第一次试验的步骤,逐步增加功能模块,直到启用最后1个功能模块,此时程序不能正常运行,此时不断电,将代码中的最后1个模块禁用, 程序还是不能正常运行。

​ 总结来说,代码完全相同的情况下,程序能否正常运行是个玄学问题。

​ (3)

​ 重复(2)中的第四次试验,到达“最后1个模块禁用+程序不能正常运行”的状态,在fun_process()函数中打上断点,断点位于一个必定会执行的函数后,结果程序没有停止在断点的位置。

​ 本文怀疑fun_process()函数根本就没有运行,没有运行自然就没有遥控遥测收发功能了。

3.问题解决

​ 以“DSP程序不进入main()函数”进行搜索,搜索到了一个可能的原因:

求助:DSP28034程序跑不到main是什么原因 (amobbs.com 阿莫电子技术论坛)
在这里插入图片描述

​ 本文的第二版代码确实是向class中添加了很多变量和函数。

​ 于是调整了一下main()函数中的代码的顺序,将new ReceiveSend的操作放到程序的最开始,也就是中断函数设置之前,问题解决,可以正常地在线调试了…

int main()
{//放置在最开始ptr_tmp = new ReceiveSend;//中断定时器设置_fun_timer00_set();//中断设置_fun_isr_init();//DSP EMIF口初始话_fun_emif_init();//new对象//ptr_tmp = new ReceiveSend;

​ 本文猜测是中断设置完成后,中断函数就开始运行了,中断函数中的fun_isr_process()函数用到了class ReceiveSend中的变量和函数,而这个时候还还在new的过程中,还没有初始化完成,就产生冲突,造成程序无法正确运行了。当然这些都是猜测,不管怎么说,虽然不了解原理,但是问题得到了解决,没有耽误开发。

4.遗留问题

​ 遗留的问题在于,为什么“伪在线”的问题只出现在线仿真阶段,如果将程序的.bin文件烧写进Flash,由FPGA加载程序,就不出现该问题。也许在线加载和从Flash启动程序存在区别?

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

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

相关文章

【数据结构与算法 | 搜索二叉树篇 力扣篇】力扣530

1. 力扣530:二叉搜索树的最小绝对差 1.1 题目: 给你一个二叉搜索树的根节点 root ,返回 树中任意两不同节点值之间的最小差值 。 差值是一个正数,其数值等于两值之差的绝对值。 示例 1: 输入:root [4,…

QT5记录 QHBoxLayout ScrollArea导致QLabel重新计算位置导致内容显示不全

先给QLabel 固定高度 # 这里让背景框适配聊天框font_metrics QFontMetrics(font)rect font_metrics.boundingRect(QRect(0, 0, self.width(), 1920), Qt.TextFlag.TextWordWrap,text)newWidth rect.width() 40if rect.width() < 800:self.setMaximumWidth(newWidth)self…

python中pip源配置

文章目录 1、前言2、pip下载源配置 1、前言 conda环境的源配置&#xff0c;相关博客有很多&#xff0c;这里不再赘述。在我使用梯子后&#xff0c;使用pip进行库安装&#xff0c;总是出现错误情况&#xff0c;如下所示&#xff1a; 2、pip下载源配置 因此&#xff0c;在这里进…

多模态:DetCLIPv3解析

文章目录 前言一、介绍二、方法2. Open vocabulary detector2.1 encoder2.2 decoder 3. Object captioner 三、数据工程1. Auto-annotation data pipeline 四、训练策略五、实验总结 前言 目前多模态目标检测逐渐成为检测领域的主要发力方向&#xff0c;从最初的检测大模型gro…

这个桌面插件真的酷!该有的都有了!改造桌面必备神器

这个桌面插件真的酷&#xff01;该有的都有了&#xff01;改造桌面必备神器。一个好用的桌面插件可以给我们提供很多的方便&#xff0c;给自己桌面打扮一下&#xff0c;定制一个自己喜欢的桌面插件&#xff0c;让桌面变得更美观实用&#xff01; 如何给桌面添加一个实用的插件&…

编译器基础介绍

随着深度学习的不断发展&#xff0c;AI 模型结构在快速演化&#xff0c;底层计算硬件技术更是层出不穷&#xff0c;对于广大开发者来说不仅要考虑如何在复杂多变的场景下有效的将算力发挥出来&#xff0c;还要应对 AI 框架的持续迭代。AI 编译器就成了应对以上问题广受关注的技…

安装破解激活pycharm

装pycharm之前先装python 激活方式版本不能过新&#xff0c;要22年1月及其之前的版本&#xff0c;下拉找到对应版本的专业版 Other Versions - PyCharmGet past releases and previous versions of PyCharm.https://www.jetbrains.com/pycharm/download/other.html 2.下载电脑…

Transiting from CUDA to HIP(三)

一、Workarounds 1. memcpyToSymbol 在 HIP (Heterogeneous-compute Interface for Portability) 中&#xff0c;hipMemcpyToSymbol 函数用于将数据从主机内存复制到设备上的全局内存或常量内存中&#xff0c;这样可以在设备端的内核中访问这些数据。这个功能特别有用&#x…

【qiankun】使用总结

主应用 主应用使用的技术栈&#xff1a;Angular 18 Antd 微应用 微应用使用的技术栈&#xff1a;React 18 Antd 创建子应用 // 安装angular CLI&#xff08;如果本地已安装可忽略&#xff09; npm install -g angular/cli// 创建子应用 ng new my-app-name配置子应用 安…

保姆级教程:Dupay从注册到充值开卡全过程,可开GPT Plus、可绑定GPT充值API余额

前言 想要购买GPT Plus&#xff0c;或者给GPT充值&#xff0c;绑定国内visa信用卡&#xff0c;会被拒&#xff0c;于是便问问度娘&#xff0c;找到了一篇关于注册虚拟卡的教程&#xff0c;搬过来顺便修改下&#xff01; 应用场景 1、Depay Master Visa卡支持绑定宝、微、美外…

软件测试基础知识 + 面试理论(超详细!)

一、什么是软件&#xff1f; 软件是计算机系统中的程序和相关文件或文档的总称。 二、什么是软件测试&#xff1f; 说法一&#xff1a;使用人工或自动的手段来运行或测量软件系统的过程&#xff0c;以检验软件系统是否满足规定的要求&#xff0c;并找出与预期结果之间的差异…

【网络安全】服务基础第一阶段——第十一节:Windows系统管理基础----PKI技术与应用

目录​​​​​​​ 一、加密技术 1.1 基本保密通信模型 1.2 密码学发展 1.2.1 古典密码学&#xff08;1949年前&#xff09; 1.2.2 近代密码学&#xff08;1949&#xff5e;1975年&#xff09; 1.2.3 现代密码学&#xff08;1976年以后&#xff09; 1.3 古典密码 1.3.…

月考成绩如何私密发布?教程来啦!

月考结束&#xff0c;老师们总是忙得不可开交。需要将每一份成绩单仔细核对&#xff0c;然后逐一私信给每位学生的家长。这个过程不仅耗时耗力&#xff0c;而且容易出错。家长们也常常因为等待成绩而焦虑不安。但现在有了一种更高效、更私密的方法来发布成绩——易查分小程序。…

GatewayWorker框架的详解和应用

一、介绍 1. 简介 GatewayWorker基于Workerman开发的一个项目框架&#xff0c;用于快速开发TCP长连接应用&#xff0c;例如app推送服务端、即时IM服务端、游戏服务端、物联网、智能家居等等 GatewayWorker使用经典的Gateway和Worker进程模型。Gateway进程负责维持客户端连接…

烟雾报警器可以节能与守护并存吗?| 合宙功耗分析仪Air9000P实测

有多少人跟我一样&#xff0c;每次抬头看到天花板上那个长年累月默默站岗的烟雾报警器&#xff0c; 总会想&#xff1a;它真的在工作吗&#xff1f;电量到底能撑多久呢&#xff1f; 不如&#xff0c;动手测一测功耗&#xff01; 烟雾报警器通过内置的传感器实时感知环境中的烟…

Vue3安装Element Plus

文章目录 安装使用包管理器安装配置&#xff1a;完整引入按需引入&#xff1a; 使用&#xff1a; 以下将参考Element Plus官网 一个 Vue 3 UI 框架 | Element Plus (element-plus.org)进行 安装 在创建好的项目文件控制台下安装&#xff1a; 使用包管理器 我们建议您使用包…

UE4_后期处理_后期处理材质及后期处理体积二

效果&#xff1a; 步骤&#xff1a; 1、创建后期处理材质,并设置参数。 2、回到主界面&#xff0c;找到需要发光的物体的细节面板。 渲染自定义深度通道&#xff0c;默认自定义深度模具值为10&#xff08;需要修改此值&#xff0c;此值影响物体的亮度&#xff09;。 3、添加…

git clone 别人的项目上传到自己的Gitee或者github仓库

git clone别人的项目 git clone https://github.com/wohuweixiya/yft-design.git 进入该项目内&#xff0c;删除原有的.git信息 rm -r .git 初始化.git git init 将本地代码添加到仓库 git add . git commit -m "提交仓库说明" Github上新建一个和这个clone下来…

AI生产力工具暑期迎来大爆发 极光数据:夸克新增用户规模领先

9月3日&#xff0c;极光旗下月狐数据发布《AI生产力工具暑期发展报告》。数据显示&#xff0c;AI生产力工具在用户侧呈现高速增长态势&#xff0c;总体月活跃用户数量达1.7亿。其中&#xff0c;夸克APP实现暑期新增用户数量行业第一&#xff0c;凭借大模型、数据、场景等优势&a…

netty之实现同步调用

写在前面 源码 。 本文看下netty如何实现同步调用&#xff0c;netty本身是不具备这种能力的&#xff0c;但是我们可以结合juc包的相关工具类来让其具备这种能力。接下来就一起看下吧&#xff01;&#xff01;&#xff01; 1&#xff1a;server 请求和响应对象 package com.…