使用ITM机制实现调试stm32单片机,实现printf与scanf。

  1. ITM简介
    ITM机制是一种调试机制,是新一代调试方式,在这之前,有一种比较出名的调试方式,称为半主机(semihosting)方式。

在pc上编写过C语言的人都知道,printf可以向控制台输出,scanf可以从控制台获取输入,这里的printf/scanf都是标准库函数,利用操作系统的这些函数,我们可以很方便的调试程序。在嵌入式设备上(如stm32单片机平台上)开发工具(如MDK/IAR)也都提供了标准库函,自然也提供了printf/scanf函数,那么这些函数是否可以使用呢? 问题来了,printf向哪里输出呢?并且大部分情况下,也没有键盘,又如何使用scanf实现输入呢?

我们都知道,嵌入式设备一般的使用仿真器,如常见Jlink/ulink,可以实现烧录,单步,下断点,查看变量,等等。仿真器将PC机和单片机连接器来。聪明的设计者们就在考虑是否可以借助仿真器,使得单片机可以借助PC机的屏幕以及PC机的键盘实现printf的输出和scanf的按键获取。
也就是说,如下的hello,world程序
#include <stdio.h>
int main()
{
//硬件初始化
//…
printf(“hello, world”);
for(;

semihost/ITM机制浅析以及使用JLINK通过ITM调试stm32单片机相关推荐

  1. 009:semihost/ITM机制浅析以及使用JLINK通过ITM调试stm32单片机(转)

    ----------------------------------------------------------------------------------------------- 作者:p ...

  2. semihost/ITM机制浅析以及使用JLINK通过ITM调试stm32单片机(转)

    ----------------------------------------------------------------------------------------------- 作者:p ...

  3. (转)jLink使用ITM机制实现调试stm32单片机

    ----------------------------------------------------------------------------------------------- 作者:p ...

  4. 使用ITM机制实现调试stm32单片机

    使用ITM机制实现调试stm32单片机,实现printf与scanf. 1. ITM简介 ITM机制是一种调试机制,是新一代调试方式,在这之前,有一种比较出名的调试方式,称为半主机(semihosti ...

  5. vscode openOCD 配置Jlink 下载和调试STM32 教程

    1.修改openOCD 的配置文件jlink.cfg 由于手头上的jlink 是swd接口,需要将openOCD的jlink.cfg修改,指定接口类型为swd.这里直接复制一份,然后修改,jlink- ...

  6. ITM机制-不用串口也能printf

    在PC上编写过C语言的人都知道,printf可以向控制台输出,scanf可以从控制台获取输入,这里的printf/scanf都是标准库函数,利用这些函数,我们可以很方便的调试程序. printf的方式 ...

  7. MDK硬件调试打印调试信息的实现方式---ITM机制的实现

    时调试代码的时候大家都喜欢用printf函数来输出一些打印信息,来提示自己代码的执行情况.在刚开始接触这个调试方法的时候,我采用的方式就是浪费一个芯片的串口,然后利用TTL转USB模块,在PC端的串口 ...

  8. Linux模块机制浅析

    Linux模块机制浅析   Linux允许用户通过插入模块,实现干预内核的目的.一直以来,对linux的模块机制都不够清晰,因此本文对内核模块的加载机制进行简单地分析. 模块的Hello World! ...

  9. .NET1.1中预编译ASP.NET页面实现原理浅析[1]自动预编译机制浅析

    .NET1.1中预编译ASP.NET页面实现原理浅析[1]自动预编译机制浅析 .NET1.1中预编译ASP.NET页面实现原理浅析[1]自动预编译机制浅析 作者:&;nbsp来自:网络 htt ...

最新文章

  1. 重磅:ATT的《5G移动边缘计算白皮书》!
  2. jemter接口并发数怎么算_JMeter学习使用(1) - 接口GET请求并发测试
  3. ASP.NET Web API中展示实体Link相关的方面
  4. DLL文件无法删除怎么解决
  5. python必须使用try except而不是if else的场合
  6. put url带参数_避免自己写的 url 被diss!建议看看这篇RESTful API简明教程!
  7. echarts字变大_在echarts中如何调整lable的字体大小?
  8. 要闻君说:Intel要“起底”新任CEO了?微软停止支持Win 7?OPPO加入WPC无线充电联盟,15W无线闪充技术呼之欲出!...
  9. 【MATLAB】 csvwrite数据缺失怎么办
  10. python 高级_Python高级特性(一)
  11. 亲历 尤金.卡巴斯基开启2009中国行
  12. Linux 内存管理(一)——地址空间
  13. 高通 锁定DDR频率
  14. 【信仰充值中心】Pale Moon 29 正式版更新日志
  15. 广电行业编码传输系统调研
  16. 孩子给产品经理的一堂课
  17. 2018年阿里安全工程师面试
  18. php msg oob,一个例子说明 MSG_OOB MSG_PEEK MSG_DONTWAIT
  19. TAP-Win32 Adapter OAS“的网络适配器删除后总是出现(kms激活器及win10激活)
  20. 利用Python脚本给图片批量添加文字水印

热门文章

  1. iOS自动布局进阶用法
  2. openssh-在win7上的搭建
  3. 使用fastjson进行json字符串和List的转换
  4. 13--长度最小的子数组
  5. java asynccontext,超时后的JavaEE 6 AsyncContext行为
  6. django存入mysql数据库_django如何存数据到一个mysql数据表里面
  7. unity消息队列判断字符串相等有错误_Python3十大经典错误及解决办法
  8. setup2go制作安装程序
  9. 引用js_js值和引用
  10. oracle 01013 02063,Oracle11g dblink用户密码大写限制-ORA-02063: preceding line from FOR244_DBLINK...