打印
[Kinetis]

使用MTB模块快速跟踪定位Cortex-M0+指令执行状态

[复制链接]
3249|12
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 FSL_FAE_JiCheng 于 2013-9-29 13:28 编辑

使用MTB模块快速跟踪定位Cortex-M0+指令执行状态


作者: FSL_FAE_JiCheng


      相信很多博友在调试ARM代码的时候,尤其是涉及到操作底层的时候,由于一些误操作常常会遇到Hard fault错误或者程序跑飞的情况,这些bug采用正常的方法是比较难定位的,往往需要我们逐行去排查测试,最后看的眼花缭乱,永远给人以苦逼程序员的印象,呵呵。此篇内容致力于节省广大程序员的精力,以崭新的一种方法角度或者说是手段来定位跟踪bug(仅限于支持Coresight技术的ARM处理器,本篇只讲针对M0+内核的),故冠之以“原创猛料”之称号,希望能名副其实,好了,闲话不多说,呵呵,开整……

       ARM的Coresight技术估计大家有所耳闻(没听过的可以参考我之前的一篇介绍类**http://blog.chinaaet.com/detail/29770.html),它实际上包括了ARM嵌入到其处理器内核的片上跟踪调试组件和相关的配套系统软件标准之类的,方便我们开发调试ARM产品。可能单说Coresight技术有点太泛了,把它具体化的话就不得不提到ETB(Embeded Trace Buffer)和MTB(Micro Trace Buffer)这两个经典的模块,其中ETB模块是Cortex-M3/M4内核的片上跟踪单元,而MTB模块则是Cortex-M0/M0+内核的跟踪单元。不过估计很多人没有用过,所以我就本着“吃螃蟹”的态度去尝试了一番,结果还是挺让我惊喜的,灰常好用,所以下面我就把使用方法分享给大家供大家评估,本文以MTB模块调试飞思卡尔基于Cortex-M0+内核的Kinetis L系列为例:

      在介绍使用方法之前需要提一下,目前我测试的结果是J-link暂不支持MTB模块(但是支持ETB模块),所以我使用了OpenSDA平台的CMSIS-DAP固件来调用MTB模块,所以如果你手中有Kinetis L系列的Freedom板的话就直接可以跟我做了,其中CMSIS-DAP固件在本博客附件中,使用方法仍旧是类似更新OpenSDA的应用,不过换过CMSIS-DAP固件之后OpenSDA的小灯可能不亮,这个纯属正常,不要惊慌,哈哈。

测试环境:IAR6.6 + Freedom OpenSDA(CMSIS-DAP firmware)

测试目标芯片:Kinetis MKL25Z128

     1  打开一个KL25的demo例程,然后右键工程Options->Debugger,选择“CMSIS-DAP”调试器,然后其他默认即可,设置完毕,点击“OK”,如下图所示:



      2  点击调试按钮,进入调试界面,此时菜单栏会出现CMSIS-DAP选项,选择CMSIS-DAP->ETM Trace,调用MTB模块,弹出跟踪窗口,如下图所示。默认情况下跟踪功能是禁止的,此时点击跟踪窗口ETM Trace左上角的“电源符号”,打开跟踪功能,此时调试界面的左上角的ETM显示绿色,表示已经打开;




      3  此时MTB功能已经打开,我们可以点击“全速运行”,然后再点击“暂停”,此时就可以在ETM Trace跟踪窗口看到从运行到断点停止这段时间所有的指令执行情况了,非常直观,如下图所示,此外可以选择同时查看汇编和C语言,也可以保存跟踪的结果,进而分析程序执行情况。



       说到这,我们就该想到这种方式的好处了吧,如果遇到Hardfault或者程序跑飞的时候,通过设置断点或者点击暂停,然后就可以捕捉到出现hardfault或者程序跑飞的之前的程序执行情况从而帮助我们快速定位到bug的地方,非常方便实用。此外,实用CMSIS-DAP调试工具还有一个好处是,可以使用很多插件了,比如Timeline等等,灰常不错,哈哈~

    先说到这,其中有问题可以在博客下面留言,欢迎探讨,呵呵,未完待续~

    附件为CMSIS-DAP固件

CMSIS-DAP_OpenSDA.zip (11.36 KB)


相关帖子

沙发
FSL_TICS_Admin| | 2013-9-10 09:37 | 只看该作者
好帖要顶啊。

使用特权

评论回复
板凳
Harvard| | 2013-9-28 22:56 | 只看该作者
不错 问题是opensda如何先切换到CMSIS-DAP模式呢 .应该给菜鸟一个交代,让菜鸟们感受opensda的博大精深

使用特权

评论回复
地板
Harvard| | 2013-9-29 00:35 | 只看该作者
zip文件中的CMSIS-DAP固件为何没有后缀呢?????? 一般应该是SDA吧

使用特权

评论回复
5
戈卫东| | 2013-9-29 07:18 | 只看该作者
这样可以么?

使用特权

评论回复
6
戈卫东| | 2013-9-29 08:54 | 只看该作者
好像不行啊.
你的那个CMSIS-DAP_OpenSDA无法下载到FRDM板子去...
你确定文件没有问题么?

使用特权

评论回复
7
FSL_FAE_JiCheng| | 2013-9-29 13:32 | 只看该作者
Harvard 发表于 2013-9-28 22:56
不错 问题是opensda如何先切换到CMSIS-DAP模式呢 .应该给菜鸟一个交代,让菜鸟们感受opensda的博大精深 ...

关于切换OpenSDA应用的方法请参考此篇**http://blog.chinaaet.com/detail/31795.html,CMSIS_DAP固件的使用类似其他固件~

使用特权

评论回复
8
FSL_FAE_JiCheng| | 2013-9-29 13:34 | 只看该作者
Harvard 发表于 2013-9-29 00:35
zip文件中的CMSIS-DAP固件为何没有后缀呢?????? 一般应该是SDA吧

这个CMSIS-DAP的固件后缀为s19文件(这个是你电脑设置的问题,隐藏了默认格式的后缀),其他固件为.sda文件,不过一样可以用~

使用特权

评论回复
9
FSL_FAE_JiCheng| | 2013-9-29 13:37 | 只看该作者
戈卫东 发表于 2013-9-29 08:54
好像不行啊.
你的那个CMSIS-DAP_OpenSDA无法下载到FRDM板子去...
你确定文件没有问题么? ...

把文件解压之后会有一个CMSIS-DAP_OpenSDA.s19文件,在OpenSDA的bootloader模式下把该文件烧进去,然后再进入到normal模式即可,具体使用方法可以参照我在7楼给出的链接中的那篇**~

使用特权

评论回复
10
Harvard| | 2013-9-30 00:04 | 只看该作者
按住sw 把对应的FRDM 开发板的QS文件夹内的CMSIS-DAP_OPENSDA.sda文件 放入U盘,然后再插拔usb线就会更新了

使用特权

评论回复
11
FSL_TICS_Jeremy| | 2013-10-11 15:02 | 只看该作者
好贴不能沉,顶一下!!

使用特权

评论回复
12
FSL_TICS_A|  楼主 | 2013-10-11 16:27 | 只看该作者
教程在不断更新,是不是有点美中不足?21IC论坛马上搞送板子回馈活动啊,通知已在论坛中贴出!!
链接如下:https://bbs.21ic.com/icview-627480-1-1.html,赶快行动吧!!

使用特权

评论回复
13
youluo235| | 2013-10-13 19:17 | 只看该作者
学习了。碉堡了

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

41

主题

1014

帖子

20

粉丝