CM3调试系统简析

news/2024/9/24 18:05:04

CM3 调试系统简析

**“一直以来,单片机的调试一直不是很突出的主题,很多简单些的程序在开发中,甚至都没有调试的概念,而只是把生成的映像直接烧入片子,再根据错误症状来判断问题,然后修改程序重新烧,周而复始,直到问题解决或放弃为止。” **

—《Cortex-M3 权威指南》

大部分初学者在学习嵌入式软件时,往往只注重函数 API 的使用和功能的实现,对于调试工具的使用往往不求甚解,殊不知,熟练使用调试工具对嵌入式设备进行故障排查往往是必不可少的技能。

为什么我们需要使用单片机调试?你可能会问这个问题

畅想一下,当代码有好几个分支时,我们想知道当前代码执行的是哪个分支,或代码执行到某一步时,某个变量的值是多少,抑或是我们想知道某个函数被调用了几次、执行时间是多少?

你可能会说:诶,你看我可以用 LED 状态指示灯来判断当前代码的执行情况啊,我还能用这个串口通信输出变量的值,我看那个串口上位机软件接收时间不就能知道代码执行时间了嘛。

没毛病,这个方法的的确确可以,不过有十分大的限制性:

其一:代码分支复杂情况下无法判断代码执行情况;

其二:无法精确知道代码的执行时间,譬如要求精确到 us 级别;

其三:在功能无法正常运行时,无法进行调试,比如时钟初始化就有问题,后面代码都无法执行。

同时,想象一下如下情况,我们想要同时完成:

(1)使用 ADC 外设扫描八个通道电压值,采样率为 1KHz,我们想知道每个时间点上八个通道的电压值;

(2)与此同时,我们还使用了串口外设,我们想知道某个串口在某种情况下某个寄存器的值;

(3)在某个代码段的某种情况下总是出现 bug,我们想让单片机执行一次代码就暂停一下,同时查看代码中相关变量的值和相关寄存器状态;

(4)整套程序还使用了 RTOS,我们想知道每个任务的执行时间和执行顺序。

此时,你会发现基于串口通信数据输出的“调试方法”不再适用。

你:不慌,你看,我们可以创建一个定时器中断服务程序,利用串口外设,软件定时解析从 PC 端发送的各种指令,对指令进行解析输出寄存器或者变量的值,对各个任务也可以利用 CPU 主频和多个计数变量完成对任务的执行时间和执行顺序的解析。除了不能一步一步执行程序外,照样可以满足其他功能。

**确实,可以,但只限在 MCU 速率较低的情况下,实际上 51 单片机的调试工具 ISD51 在线调试模式下就是这么干的,ISD51 在 8051 系统里增加了一个串口中断函数 (ISD51 中断) 。当 ISD51 连接到 uVision 调试器时, 8051 输入 ISD51 的中断函数。只要到程序运行一被停止, 8051 就只运行 ISD51 中断服务程序。当 uVision2 调试器发出一个"Go"的指令, 8051 就脱离 ISD51 中断函数并且运行用户程序。 **

问题是,该方法会使得程序执行效率大大降低,对于 ISD51 在线模式来说,它的调试会使得程序运行速度将会比原来慢 100 倍,这将使得原本需要高速执行的程序无法正常工作,导致时序出现重大问题。
image
image
image
image
image
image
image
image
image
image
image
image
image
image
image
image
image
image
image
image
image
image
image
image
image
image

image

视频课程可以查看以下链接:

bilibili:https://www.bilibili.com/video/BV1bs4y1k7uT?t=2.2
image

原文档可以在以下链接下载:

Github:https://github.com/leezisheng/Doc
image

image

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

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

相关文章

KOPRA论文阅读笔记

Joint Knowledge Pruning and Recurrent Graph Convolution for News Recommendation论文阅读笔记 Abstract ​ 最近,利用知识图谱(KG)来丰富新闻文章的语义表征已被证明对新闻推荐有效。这些解决方案的重点是利用知识图谱中的附加信息对新闻文章进行表征学习,用户表征主要…

R语言估计时变VAR模型时间序列的实证研究分析案例|附代码数据

原文链接: http://tecdat.cn/?p=3364 原文出处:拓端数据部落公众号最近我们被客户要求撰写关于时变VAR模型的研究报告,包括一些图形和统计输出。 加载R包和数据集加载包后,我们将此数据集中包含的12个心情变量进行子集化: mood_data <- as.matrix(symptom_data$data[…

Modbus协议转Profibus协议网关模块连PLC与激光发射器通讯

PLC作为控制中枢,而Modbus协议和Profibus协议是两种常见的工业通讯协议。在实际应用中,我们常常会遇到需要将Modbus协议转换为Profibus协议的情况,这时就需要借助Modbus协议转Profibus协议网关模块(XD-MDPB100)来进行实现。Modbus协议转Profibus协议网关模块可以理解为一种…

生态学建模:增强回归树(BRT)预测短鳍鳗生存分布和影响因素|附代码数据

全文下载链接: http://tecdat.cn/?p=22482 最近我们被客户要求撰写关于增强回归树(BRT)的研究报告,包括一些图形和统计输出。 在本文中,在R中拟合BRT(提升回归树)模型。我们的目标是使BRT(提升回归树)模型应用于生态学数据,并解释结果。 引言 本教程的目的是帮助你学…

基于机会网络编码(COPE)的卫星网络路由算法matlab仿真

1.程序功能描述基于机会网络编码(COPE)的卫星网络路由算法。基于机会的网络编码(COPE,completely opportunity encoding)方法,使每个接收节点都对信道进行侦听,通过获取邻居节点的信息状态确定编码机会,并且在本地信息缓存区中进行编码,最后进行基于编码机会的路由,可以…

Cocos 编译发布微信小程序

微信小游戏不允许 远程加载脚本,所以这里会和其他web的打包生成的不一样 然后把remote文件夹拷贝到服务器上,让文件资源域名指向 remote的上一级,然后可以通过域名:/remote/main 访问到config.json即可

IOS微信版本过低无法登录 2024最新

备机IOS 12 ,微信已经没法再登录了,一直提示升级。 So,jailbreak it , 是的,2024年了还越狱,过程就不说了,现在不像以前,jb越来越简单 连接到爱思助手,打开“文件管理”并依次打开“程序(用户)- 微信 - WeChat.app”,找到“Info.plist”文件修改最新的版本号 从这里…

兰州二手房数据自取(学习使用)

链接:https://pan.baidu.com/s/1aU9ga83Zf3OsZlo-vHdz4g?pwd=9999 提取码:9999