历史上的今天
今天是:2024年12月15日(星期日)
2018年12月15日 | MDK硬件调试_在Debug printf Viewer窗口显示打印信息_ITM
2018-12-15 来源:eefocus
平时调试代码的时候大家都喜欢用printf函数来输出一些打印信息,来提示自己代码的执行情况。在刚开始接触这个调试方法的时候,我采用的方式就是浪费一个芯片的串口,然后利用TTL转USB模块,在PC端的串口调试助手中打印提示信息。另一种方式是硬件仿真的时候可以利用J-Link等工具实现的一种打印提示信息的方式。由于需要重定向fputc,所以两者最终只能选择其一,如果在资源不紧张的情况下,浪费一个串口其实也没啥,但是有些项目中会有很多通信接口需要使用这个时候就不可能浪费一个串口给我们做调试用了,这个时候通过MDK输出一些打印信息对于我们调试代码是很有帮助的。能实现MDK硬件调试打印调试信息的方式有两种:ITM机制和semihosting(半主机)机制。
这里总结一下ITM机制在MDK调试串口打印出信息的步骤:
1、建立一个.c文件,复制下列代码进去,并添加到工程目录中
#include
4、点击魔术棒,在Debug下添加刚才的.ini文件(图1);

5、选择仿真器Port口为SW模式,在Trace下按照下图设置,使能Trace,由于我的芯片系统时钟是72M,所以设置
为72M,ITM Stimulus Ports口只保留0(图2);

6、编译程序之后进入调试模式,调用Debug printf Viewer窗口,运行程序,这时候就可以发现有数据输出了(图3);

备注:本方法是百度从豆瓣某页中找到的,总结一下备自己和各位朋友参考。
史海拾趣
|
做winCE6应用和驱动的都进来下: CE6, 三星2440, CreateDIBSection/LCD驱动的问题 这个问题并不是那么容易发现,表面上看起来好像没有问题一样. 如果您们对界面执行效率要求不高,也许根本就发现不了 环境三星2440, windows CE 6.0 800×480的分辨率. 我们有一个程序在windows CE 5.0下跑得很流畅,但同样的代码移植到三星2440的wi ...… 查看全部问答> |
|
请问config.reg文件中CE_MODULES_PPP这类变量是在哪里定义的? 请问config.reg文件中CE_MODULES_PPP这类变量是在哪里定义的?我在哪里配置这些变量,使之编译到内核中去?… 查看全部问答> |
|
采用VS2005+PB FOR CE6.0一定要安装Vs2k5 SP1和Platform Builder Service Pack 1吗 采用VS2005+PB FOR CE6.0一定要安装Vs2k5 SP1和Platform Builder Service Pack 1吗?? 在没安装这两个补丁情况下,为什么我生成的NB.bin无法被模拟器加载,模拟器一直黑屏,在用vs2005启动模拟器加载NK.bin时出现了如下提示 PB Debugger Warning ...… 查看全部问答> |
|
大家好,我用的是friendly arm开发板MINI2440,wince系统。我现在想通过USB延长线(两头是USB放大器中间是靠超五类网线连接,长度50米)来连接开发板和USB摄像头。现在的问题是通过延长线,usb鼠标可以用,但插上摄像头没有反应。我又給USB放大器外 ...… 查看全部问答> |
|
我们用sc36410开发板,将usbfn主件加入系统,将系统下载到板子上。通过预先修改注册表,主机电脑可以将板子识别为一块u盘,在设备管理器里观看,板子的PID为0405,vid为AAAA。 然而,在usbfn\\class\\storage文件里,设备描述符PID和VID全部都 ...… 查看全部问答> |
|
大家好,我用LM3S6432,在用JLINK下载bootloader程序的时候,提示:,然后点击确定,在最下行提示如图:再通过LMFLASH进行网络下载,不行,没有反应,LMFLASH显示:attemp to connect ....然后就没用反应了。 请高人指点:如何下载bootloader,需 ...… 查看全部问答> |
|
STM32的定时器,能不能实现74HC4040那样的脉冲计数器功能 HC4040是异步的12bit二进制计数器 只要输入连续的时钟(脉冲)信号,就会输出信号开始到停止之间脉冲的个数,和输入脉冲频率无关 不知道用stm32内部的定时器能不能实现这个功能 可以的话,就不用买芯片也省IO口了… 查看全部问答> |




