• 强!!如何测试自制调试器的功能?


    273c815cdb21717fcd0054d99d58097b.png

    来源:公众号【鱼鹰谈单片机】

    作者:鱼鹰Osprey

    ID   :emOsprey

    自制了一个调试器,该如何确定这个调试器是否正常工作呢?官方给了一个调试工程,专门用于测试调试器是否正常(所有 MDK 支持的调试器都可以使用该工程测试)。

    为了测试 103 的芯片,我们需要稍微修改一下工程(原来的工程不适合)。

    工程路径如下(这里的 5.5.1 根据实际安装版本找):

    C:\Keil_v5\ARM\PACK\ARM\CMSIS\5.5.1\CMSIS\DAP\Firmware\Validation\MDK5

    首先,我们先复制两个工程文件出来,因为默认情况下为只读,所以需要设置为可读写:

    f9bae0aa4b77b81fe5c1fb5fe6d02eba.png

    我们设置 Validasion 两个文件为可读写。

    38e5e92adcf9036cb827c866cb7b5fb8.png

    打开工程,出现错误,直接取消即可:

    b2deaf93b34f068dce327a7258d9f076.png

    因为是测试 CMSIS-DAP 调试器(其它调试器类似),所以需要设置一些调试配置。

    1、首先修改地址为 0x08000000,因为我们的目标板是 103 的。

    51f8962ae2b78735f5f1079312a10ad9.png

    2、选择调试器,SWJ 勾选上,连接被调试板子,此时应该能看到右边的 ID。

    352dda26afb1c812cfd467f28825e09e.png

    如果没有连接目标板子,就会出现错误,但是调试器是可以正常识别的:

    247fd6ff3b166e641f9a93be886cf9f9.png

    3、下载配置:

    95f006f81d098066b1c7544261f40bac.png

    完成之后,我们就可以关闭工程了。

    现在我们有两种方式进行测试:

    手动法:

    重新打开工程,编译、下载、调试三部曲之后,在调试界面下会自动完成测试工作,测试完成后会自动退出调试模式,测试结果存放在工程目录下 test_results :

    e50afe4b4b3992466d3e1aa24a940892.png

    2164bc4ca21f1e6da3f148204feae109.png

    通过这种方式,鱼鹰得到结果都是正常的:

    f2af9ca075c94a264622faab73496c62.png

    自动法:

    这种方法使用脚本自动完成测试功能(不需要打开工程)。里面有一个脚本 test.bat。正常情况下,直接在命令行下执行就可得到结果,但可能安装路径不对时,会出现如下错误:

    f6ef8b60541ab3075099aa399d3149cc.png

    此时可以在执行脚本时手动指定路径,或者修改脚本中的路径:

    test.bat C:\Keil_v5\UV4\UV4.exe

    然后可以得到下面的执行结果。

    f5dbdafc92cbb1caa507e03d31d376ea.png

    可以看出,这种执行的结果最后一项是有问题的,目前暂不清楚为啥两者结果不一致。

    以上就是鱼鹰想为大家分享的内容,帮助大家测试一个制作好的调试器。

    那么原理是什么呢?

    其实就是利用了 MDK 调试器中的 test.ini 文件进行调试命令交互,如设置断点、读写内存等操作,并对结果进行验证,通过学习它,能更深刻的理解调试过程,建议大家学习。

    最后分享一些相关的链接供大家学习:

    驱动安装

    https://www.armbbs.cn/forum.php?mod=viewthread&tid=101747&extra=page%3D2%26filter%3Dtypeid%26typeid%3D312

    https://www.armbbs.cn/forum.php?mod=viewthread&tid=101748&extra=page%3D1%26filter%3Dtypeid%26typeid%3D312

    源码 pack(5.8.0 ,其它版本亦可)

    https://www.armbbs.cn/forum.php?mod=viewthread&tid=107629&extra=page%3D1%26filter%3Dtypeid%26typeid%3D312

    测试:

    https://www.armbbs.cn/forum.php?mod=viewthread&tid=99606&extra=page%3D2%26filter%3Dtypeid%26typeid%3D312

  • 相关阅读:
    QT简单串口通信终端实现
    开发人员的技术写作
    (附源码)springboot学生社团管理系统 毕业设计 151109
    软考 系统架构设计师系列知识点之边缘计算(1)
    LeetCode50天刷题计划(Day 19—— 在排序数组中查找元素的第一个和最后一个位置(9.10-10.40)
    二战字节跳动成功上岸,准备了小半年,拿27k也算不上很高吧~
    线性回归分析----学院综测成绩能显示出什么信息?
    图像形态学操作:基于CUDA的图像处理算法---灰度图像腐蚀
    【Nov 8th to 13th】Personal work record
    哪些活动适合媒体邀约?有啥作用
  • 原文地址:https://blog.csdn.net/weixin_42876465/article/details/125494666