你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

关于硬件仿真的问题  

[复制链接]
netlhx 提问时间:2015-7-17 10:56 /
本帖最后由 netlhx 于 2015-7-17 11:14 编辑

看到很多人对硬件仿真的问题纠缠不清,发个贴子讨论一下。

首先,这里讨论的是MDK下的仿真问题,IAR没用过,不熟。

仿真有软仿真及硬件仿真之分。所谓软仿真,就是不需要硬件,纯粹纸上谈兵式的,这里也不讨论。

大多数人都是从STM32F1XX系列学习入门的,MDK对STM32F1XX提供了专门的仿真DLL,所以支持得很好。但后续的M4及M7的仿真,基本上转向了基于ITM及ETM的技术。ETM需要专用的外部调试器,如ULINK才可以支持,但ITM大部分开发板都支持,特别是官方自己的板子基本都支持ITM。

ITM是Instrumentation trace macrocell的缩写,用于指令跟踪及调试。实际上ITM是MCU内部提供的一种机制,外部使用这一技术的名词称为SWV/SWD。

其中一些常见的功能如断点、变量观察、内存观察、条件断点,都可以直接使用,不需要特殊的配置。但一些高级的功能,如实现printf函数、LA逻辑分析仪功能则需要相应的设置才可以完成。

下面举几个例子来说明一下。下面调试在F7 DISCO上面完成。

1. 实现逻辑分析仪的功能

GPIO配置代码如下

QQ截图20150717103946.png

打开ITM调试功能,这一步非常重要!!!

QQ截图20150717104147.png

其中4和5是最重要的,设置错误的话就可能不能实现ITM功能。4是打开跟踪功能,5是设置MCU的SYSCLK,以便产生正确的跟踪信息!

接下来进入调试并打开LA,如下图

QQ截图20150717104610.png

新建一个LA信号, 在本例中是GPIOI->ODR,然后结合MASK及SHIFT设置,如下图如示

QQ截图20150717104757.png

因为是GPIOI里面的PIN1,所以MASK及SHIFT的设置你应该能看懂。

开始全速运行,就会发现有波形出来了。如下

QQ截图20150717105012.png

这样就实现了简单的LA功能。

注意:ITM只能跟踪全局或静态变量,所以一些局部变量是不能跟踪和分析的。另外还有个缺陷,就是如果PIN上的信号是复用后的,那么也不能跟踪,比如你不能把它当成一台真正的LA来用,要不然MDK就亏大了!

为什么复用后的PIN不能跟踪呢,给一张GPIO的内部结构图

QQ截图20150717110011.png


从上图可以看出,复用后的电平信号根本就没有通过GPIO->ODR,当然就不能啦!

再补充一点,如果你的LA信号不出来,先检查是不是设置问题,如果都没有问题,把板子的电拔了,再来一次,就没有问题了。





2. 实现PRINTF功能

这个功能已有坛友实现了,这里就不再讨论,给个链接

https://www.stmcu.org.cn/module/forum/forum.php?mod=viewthread&tid=602205&highlight=%E8%B0%83%E8%AF%95

欢迎大家讨论,挖掘ITM的其它高级功能。




收藏 6 评论22 发布时间:2015-7-17 10:56

举报

22个回答
shanji 回答时间:2015-7-17 11:16:09
这是F1还是F4的?F4怎么也弄不出波形
netlhx 回答时间:2015-7-17 11:16:42
shanji 发表于 2015-7-17 11:16
这是F1还是F4的?F4怎么也弄不出波形

F7上面实现的,都是可以的
shanji 回答时间:2015-7-17 11:45:11
netlhx 发表于 2015-7-17 11:16
F7上面实现的,都是可以的

按你的方法,在F4上试了一下,不行,不知道哪里的原因
creep 回答时间:2015-7-17 11:54:38
感谢版主分享。
查看GPIOI的Pin1的状态可以直接输入
  1. GPIOI->ODR.1
复制代码
moyanming2013 回答时间:2015-7-17 12:36:13
学习了。。。
stary666 回答时间:2015-7-17 13:58:47
学习了,,,,,,,,,,
dsjsjf 回答时间:2015-7-17 22:54:54
谢谢分享,很详细
风子 回答时间:2015-7-18 21:11:58
谢谢分享
wjandsq 回答时间:2015-7-19 17:15:33
creep 发表于 2015-7-17 11:54
感谢版主分享。
查看GPIOI的Pin1的状态可以直接输入

STM32F103的TIM1,可以软件仿真,引脚也是复用输出。
直接输入GPIOA_IDR.8
123下一页

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版