semihost/ITM机制浅析以及使用JLINK通过ITM调试stm32单片机
使用ITM机制实现调试stm32单片机,实现printf与scanf。
- 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单片机相关推荐
- 009:semihost/ITM机制浅析以及使用JLINK通过ITM调试stm32单片机(转)
----------------------------------------------------------------------------------------------- 作者:p ...
- semihost/ITM机制浅析以及使用JLINK通过ITM调试stm32单片机(转)
----------------------------------------------------------------------------------------------- 作者:p ...
- (转)jLink使用ITM机制实现调试stm32单片机
----------------------------------------------------------------------------------------------- 作者:p ...
- 使用ITM机制实现调试stm32单片机
使用ITM机制实现调试stm32单片机,实现printf与scanf. 1. ITM简介 ITM机制是一种调试机制,是新一代调试方式,在这之前,有一种比较出名的调试方式,称为半主机(semihosti ...
- vscode openOCD 配置Jlink 下载和调试STM32 教程
1.修改openOCD 的配置文件jlink.cfg 由于手头上的jlink 是swd接口,需要将openOCD的jlink.cfg修改,指定接口类型为swd.这里直接复制一份,然后修改,jlink- ...
- ITM机制-不用串口也能printf
在PC上编写过C语言的人都知道,printf可以向控制台输出,scanf可以从控制台获取输入,这里的printf/scanf都是标准库函数,利用这些函数,我们可以很方便的调试程序. printf的方式 ...
- MDK硬件调试打印调试信息的实现方式---ITM机制的实现
时调试代码的时候大家都喜欢用printf函数来输出一些打印信息,来提示自己代码的执行情况.在刚开始接触这个调试方法的时候,我采用的方式就是浪费一个芯片的串口,然后利用TTL转USB模块,在PC端的串口 ...
- Linux模块机制浅析
Linux模块机制浅析 Linux允许用户通过插入模块,实现干预内核的目的.一直以来,对linux的模块机制都不够清晰,因此本文对内核模块的加载机制进行简单地分析. 模块的Hello World! ...
- .NET1.1中预编译ASP.NET页面实现原理浅析[1]自动预编译机制浅析
.NET1.1中预编译ASP.NET页面实现原理浅析[1]自动预编译机制浅析 .NET1.1中预编译ASP.NET页面实现原理浅析[1]自动预编译机制浅析 作者:&;nbsp来自:网络 htt ...
最新文章
- 重磅:ATT的《5G移动边缘计算白皮书》!
- jemter接口并发数怎么算_JMeter学习使用(1) - 接口GET请求并发测试
- ASP.NET Web API中展示实体Link相关的方面
- DLL文件无法删除怎么解决
- python必须使用try except而不是if else的场合
- put url带参数_避免自己写的 url 被diss!建议看看这篇RESTful API简明教程!
- echarts字变大_在echarts中如何调整lable的字体大小?
- 要闻君说:Intel要“起底”新任CEO了?微软停止支持Win 7?OPPO加入WPC无线充电联盟,15W无线闪充技术呼之欲出!...
- 【MATLAB】 csvwrite数据缺失怎么办
- python 高级_Python高级特性(一)
- 亲历 尤金.卡巴斯基开启2009中国行
- Linux 内存管理(一)——地址空间
- 高通 锁定DDR频率
- 【信仰充值中心】Pale Moon 29 正式版更新日志
- 广电行业编码传输系统调研
- 孩子给产品经理的一堂课
- 2018年阿里安全工程师面试
- php msg oob,一个例子说明 MSG_OOB MSG_PEEK MSG_DONTWAIT
- TAP-Win32 Adapter OAS“的网络适配器删除后总是出现(kms激活器及win10激活)
- 利用Python脚本给图片批量添加文字水印
热门文章
- iOS自动布局进阶用法
- openssh-在win7上的搭建
- 使用fastjson进行json字符串和List的转换
- 13--长度最小的子数组
- java asynccontext,超时后的JavaEE 6 AsyncContext行为
- django存入mysql数据库_django如何存数据到一个mysql数据表里面
- unity消息队列判断字符串相等有错误_Python3十大经典错误及解决办法
- setup2go制作安装程序
- 引用js_js值和引用
- oracle 01013 02063,Oracle11g dblink用户密码大写限制-ORA-02063: preceding line from FOR244_DBLINK...