数码之家

 找回密码
 立即注册

QQ登录

只需一步,快速开始

微信登录

微信扫一扫,快速登录

搜索
查看: 5397|回复: 51

[C51] 单片机入门杂谈(一):调试器

[复制链接]
发表于 2023-5-1 03:44:00 | 显示全部楼层 |阅读模式
单片机开发中常用到两种调试器:ICE(In Circuit Emulator,在线仿真器)和ICD(In Circuit Debugger,在线调试器),两者的区别是:ICE通过自身仿真CPU进行调试,而ICD则是利用芯片内部的Embedded ICE单元对CPU进行调试。当下常见的芯片调试使用的是ICD方案,ICD方案又分为硬件ICD和软件ICD,常见芯片ARM属于硬件ICD,STC 8051属于软件ICD。

硬件ICD和软件ICD的最直观的区别是:硬件ICD可以全速调试时可以设置Flash断点,软件ICD需要先设置断点再运行程序才能实现Flash断点功能;硬件ICD可以全速运行时更新观察窗口、内存窗口的值,软件ICD需要遇到断点或暂停调试才会更新观察窗口、内存窗口的值;硬件ICD可设置的断点数比较少,如ARM M3可以设置6个Flash断点,软件ICD可以设置比较多的Flash断点,取决于设计预留的资源(需要占用一部分ROM、RAM)。

初学者如果想快速入门、不缺银子且想用银子换时间、脑子的话,强烈建议选用带硬件ICD的芯片,无论是下载、调试都会省心很多。

软件ICD举例 -- STC8051芯片


STC软件ICD断点实现原理:


硬件ICD举例 -- 某国产8051芯片

这里不以常见的ARM芯片为例,旨在说明调试8051单片机也可以很方便。



mp4原视频见附件。







单片机入门杂谈(二):程序结构
https://www.mydigit.cn/thread-386258-1-1.html

单片机入门杂谈(三):按键
https://www.mydigit.cn/thread-393998-1-1.html

单片机入门杂谈(四):单片机普通I/O直接驱动LED数码管
https://www.mydigit.cn/thread-439515-1-1.html

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册 微信登录

x
 楼主| 发表于 2023-5-6 12:25:49 来自手机浏览器 | 显示全部楼层
疯狂的兔子来了 发表于 2023-5-6 10:33
楼主,你好!有试试我司的STC8H8K64U的核心板或者实验箱吗?可以USB直接下载和仿真的。加我QQ:3323874452 ...

我用的就是8H8K64U 45I,实验版是按需设计的,你们的实验板不是我想要的。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-5-7 17:43:26 | 显示全部楼层
msvcp60 发表于 2023-5-7 17:39
stc8h8k64u有硬件仿真器吗?类似nulink,jlink,stlink那种?一直isp下载,串口打印 ...

我的第一个演示就是stc8h8k64u,不需要专用调试器,除了不能全速运行时下断点,你需要的调试功能都能满足。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-5-7 19:44:18 | 显示全部楼层
疯狂的兔子来了 发表于 2023-5-5 10:03
感谢楼主的分享,但是楼主有个错误的引导:
STC现在KEIL仿真,STC8H8K64U,软硬件结合的仿真;STC32G12K128, ...

经测试,修改程序确实不需要重新ISP下载。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-5-11 19:07:29 来自手机浏览器 | 显示全部楼层
fryefryefrye 发表于 2023-5-11 16:28
我搞嵌入式开发10几年了,在线调试几乎没啥作用。只要程序涉及到通信,和别的外设协同工作,就没法在线Debu ...

这取决于是否有富余的软硬件资源。我工作以来使用的都是资源比较紧张的芯片,完成正常功能已经很勉强,我曾配合一个客户做下位机,他的主控是ARM-M4芯片,太频繁地打印输出最终把他的软件搞垮了。联调在线调试大部分时候是没问题的,因为只需关注可疑的一部分程序,而不是要看整个软件的运行过程,虽然一方暂停后另一方运行就不正常了,但影响不大,只需重来一次直到排除问题。有人说,他们不喜欢用调试器,调试器在脑中,我觉得,用调试器固然有偷懒的成分,但一般人写软件不会为了制造bug再去修,而是认为自己写的都是对的,反复在脑中调试很难找到问题点,而问题往往很简单,比如少打或多打一个>。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-1-13 17:49:50 | 显示全部楼层
4758866 发表于 2024-1-13 14:19
USB仿真可以实时查看变量的值吗?STC8H8K64U

不能,因为STC的仿真依赖仿真监控程序,如果要实时查看变量的值,则需要仿真监控程序一直输出这些值,影响正常程序功能。
支持硬件ICD功能的平台才能实现这个功能。


回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册 微信登录

本版积分规则

APP|手机版|小黑屋|关于我们|联系我们|法律条款|技术知识分享平台

闽公网安备35020502000485号

闽ICP备2021002735号-2

GMT+8, 2025-7-23 08:51 , Processed in 0.390001 second(s), 13 queries , Redis On.

Powered by Discuz!

© 2006-2025 MyDigit.Net

快速回复 返回顶部 返回列表