文档章节

IAR ITM机制调试信息打印

Jr小王子
 Jr小王子
发布于 2015/02/04 15:26
字数 374
阅读 252
收藏 0

打印调试信息几种途径:

1.串口打印:

将fputc映射到UART,通过USB-TLL转接板打印调试信息。

STM32F103官方提供的代码:

 /**
  * @brief  Retargets the C library printf function to the USART.
  * @param  None
  * @retval None
  */
PUTCHAR_PROTOTYPE
{
  /* Place your implementation of fputc here */
  /* e.g. write a character to the USART */
  USART_SendData(EVAL_COM1, (uint8_t) ch);
  /* Loop until the end of transmission */
  while (USART_GetFlagStatus(EVAL_COM1, USART_FLAG_TC) == RESET)
  {
  }
  return ch;
}

 


1.通过Jlink仿真器打印:

cortex-M3内核支持ITM机制,可以通过Jlink打印调试信息。 ITM相关函数在core_cm3.h中有定义,需要将fputc重新映射到ITM,实现printf。

注意:

ITM需要使用SWD的仿真口(且需要连接SWO),而不是常用的Jlink仿真口。

需要激活ITM的Port0端口来捕获信息

时钟需要配置和开发板的时钟一致

 

SWD接口如下: 

   

fputc映射代码如下:

 /**

  * @brief  Retargets the C library printf function to the USART.

  * @param  None

  * @retval None

  */

PUTCHAR_PROTOTYPE

{

#ifdef DEBUG_USART1

    /* Place your implementation of fputc here */

    /* e.g. write a character to the USART */

    USART_SendData(USART1, (uint8_t) ch);

    /* Loop until the end of transmission */

    while (USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET)

    {

        __NOP();

    }

    return ch;

#endif

    

#ifdef DEBUG_ITM

    /* Place your implementation of fputc here */

    /* e.g. write a character to the ITM */

    ITM_SendChar((uint32_t)ch);

    

    return ch;

#endif

}

  IAR配置如下:

  使用SWD

 

   配置ITM的Prot0端口 和 时钟, SWO变绿说明,SWO正常使用

 

  

   仿真:

   将数据逻辑断点打在randomvalue变量处,使用Timeline窗口查看randomvalue。 打印随机数变量 randomvalue到Terminal IO窗口,

   后续使用NIST的STS来验证随机数是否符合标准

   

    

   

 

 

© 著作权归作者所有

Jr小王子
粉丝 11
博文 119
码字总数 18368
作品 0
深圳
程序员
私信 提问
ARM编辑、编译工具

手动编译 编译器问题,肯定是GNU的大名鼎鼎的GCC了,与此相关的什么连接器,汇编器也都包含在内了。 针对arm的GCC,当然就是arm-linux-gcc了,我所用的版本就是友善之臂光盘自带arm-linux-g...

野渡书生
2016/03/19
185
0
MDK中软仿真下Debug-(printf)Viewer

在用MDK软件做软件仿真时,通常用到printf()函数,为了在软仿下,用printf()函数能在 Debug (printf) Viewer窗口下能看到正确数据,需做以下配置: (1) 打开keil的工程设置,在Targe下...

Iammalt
2017/10/09
0
0
IAR调试使用技巧:数据断点、CallStack、设置堆栈、查看栈使用率和栈深度、Memory、Set Next Statement、编译文件含义等

目录 使用数据断点 Set next statement 手动执行到某行代码 设置堆栈大小 查看程序Stack栈使用情况,以及栈深度 Call stack查看当前栈空间 使用Memory查看程序运行中各种过程数据 IAR各编译文...

HowieXue
2018/05/20
0
0
Zigbee通讯之开发篇(基于TI 的Z-Stack)

1.Zigbee协议和Z-Stack Zigbee协议和Z-Stack是什么关系?这可能是初学Zigbee同学想知道的问题。给大家举个例子吧,我们生活中使用的插排是要符合一定的标准的,现在国家标准是GB2099.3-2008...

zhanglianpin
2015/07/14
0
0
IAR 的printf打印问题

IAR 软件自己的库函数不能实现printf打印浮点数的功能,但是打印整型变量是可以的 可以用整型实现printf打印浮点数的功能 本文转自飞行萌51CTO博客,原文链接:http://blog.51cto.com/85275...

技术小甜
2017/11/16
0
0

没有更多内容

加载失败,请刷新页面

加载更多

总结

一、设计模式 简单工厂:一个简单而且比较杂的工厂,可以创建任何对象给你 复杂工厂:先创建一种基础类型的工厂接口,然后各自集成实现这个接口,但是每个工厂都是这个基础类的扩展分类,spr...

BobwithB
34分钟前
3
0
java内存模型

前言 Java作为一种面向对象的,跨平台语言,其对象、内存等一直是比较难的知识点。而且很多概念的名称看起来又那么相似,很多人会傻傻分不清楚。比如本文我们要讨论的JVM内存结构、Java内存模...

ls_cherish
38分钟前
3
0
友元函数强制转换

友元函数强制转换 p522

天王盖地虎626
昨天
5
0
js中实现页面跳转(返回前一页、后一页)

本文转载于:专业的前端网站➸js中实现页面跳转(返回前一页、后一页) 一:JS 重载页面,本地刷新,返回上一页 复制代码代码如下: <a href="javascript:history.go(-1)">返回上一页</a> <a h...

前端老手
昨天
5
0
JAVA 利用时间戳来判断TOKEN是否过期

import java.time.Instant;import java.time.LocalDateTime;import java.time.ZoneId;import java.time.ZoneOffset;import java.time.format.DateTimeFormatter;/** * @descri......

huangkejie
昨天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部