原创 CORTEX M3调试信息输出的实现方法

2012-3-8 23:03 2892 31 24 分类: MCU/ 嵌入式

嵌入式软件开发中的一个基本需求就是能通过终端来输出调试信息,一般可通过2种方式实现:一种是使用串口线连接板上的UART和PC上的COM口,通过 PC上的超级终端来查看调试信息;另一种则是采用半主机机制,但有可能不被所用的工具链支持。基于Cortex-M3核的软件调试突破了这样的限制,Cortex-M3内核提供了一个ITM(Instrumentation Trace Macrocell)接口,通过SWV(Serial Wire Viewer)可调试由SWO引脚接收到的ITM数据。ITM实现了32个通用的数据通道,基于这样的实现,CMSIS规定用通道0作为终端来输出调试信息,通道31用于操作系统的输出调试(特权模式访问)。在core_cm3.h中定义了ITM_SendChar()函数,因此可通过调用该函数来重写 fputc,或者自己实现printf函数,以在应用程序中通过printf打印调试信息,并可通过ITM Viewer查看这些调试信息。有了这样的实现,嵌入式软件开发者就可以在不配置串口和使用终端调试软件的情况下输出调试信息,在一定程度上减少了工作量。

实现方法见附件

文章评论1条评论)

登录后参与讨论

用户1499261 2012-12-13 16:08

挺不错的,刚好用上

用户110037 2007-12-28 10:03

  晕,全英文的,看着累!

用户1196145 2007-3-10 11:01

顶一下!多谢资源共享!

用户900892 2007-3-1 16:05

太贵了!

 

用户1169282 2007-2-28 10:04

非常同意这个观点:好的PCB设计工程师一定是一个综合知识能力特别强的人。不懂电路机理是很难把电路很好的实现出来的。

用户1318081 2007-2-14 11:19

谢谢捧场!

用户1053025 2007-2-13 16:10

顶一下!

首席设计师,真让人羡慕啊:D

用户1318081 2007-2-13 15:34

   呵呵!
相关推荐阅读
用户470955 2014-08-21 10:41
C++类型转换方式总结
        在C编程中,我们经常在基本类型比如int,float,long之间转换,直接()就可以的。然而,在C++中就涉及到类与对象,父类与子类对象的转换就复杂多了。         手...
用户470955 2014-07-28 16:17
C语言中int到float的强制类型转换
     最近项目中经常需要int与float之间转换,有必要对它们之间转换的原理做个了解。      网上找到一篇资料,拷贝如下:   最近在看一本名为的书。由于我所看过的计算机理论方面的书较少,加...
用户470955 2013-09-27 12:16
RS232串口通信详解(转载)
 网上找到这篇比较详细介绍RS232通信知识,特转载记录,以备查询。 原文: http://bowen34.blog.163.com/blog/static/354176942010412...
用户470955 2012-12-21 16:40
Cortex M与FreeRTOS的使用点滴之一:移植,vPortSVCHandler/xPortPendSVHandler/xPortSysTickHandl
      在Cortex M使用FreeRTOS时,建立工程项目,经常会应为start_xxx.s与port.c、portasm.s中的中断函数名不同困惑:是在start_xxx.s修改为:vP...
用户470955 2012-12-21 16:27
Cortex M与FreeRTOS的使用点滴之三:STM32F107+FreeRTOS+Lwip的源码以及一个socket client的例程
本人之前在STM32F107上做过UCOS+LWIP,参照网络上一些资源修改了sys_arch.c/sys_arch.h,对tcpip_thread 的优先级、以及与之对应的lwip_timeou...
用户470955 2012-11-21 16:35
Cortex M与FreeRTOS的使用点滴之二:Cortex-M3内核使用FreeRTOS注意事项
转载:原文出处:http://openmcu.net/post/8.html 翻译自FreeRTOS官网文档,原文网址:http://www.freertos.org/RTOS-Cortex-...
我要评论
1
31
关闭 站长推荐上一条 /2 下一条