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

使用CMSIS-DAP仿真器+KEIL,在不连接RESET线的情况下,软启动...

[复制链接]
radio2radio 发布时间:2018-6-10 11:36
本帖最后由 radio2radio 于 2018-6-10 11:54 编辑

遇到过这个问题的朋友,知道我说的是什么。多数情况是目标板没有RESET线,或不方便多引出一条线。
首先,也可以这样解决: 1. 换用J-LINK仿真器,它不用RESET连线,也可以下载后程序自动运行。2. 进入Debug模式,按Run按钮,开始运行程序。3. 编写一个批处理程序,调用外部的Flash Programmer下载程序+软启动程序。

导致不能实现软启动的原因,是因为KEIL里面的SYSRESETREQ功能在使用CMSIS-DAP时不起作用,没有发出相应的软启动的命令。
02.jpg
03.jpg


MCU软启动的原理,是向某个地址位写入特定的数据(此为后门),内部的逻辑就会给出等同于外部复位启动的动作。 系统时钟正常工作,是软启动(复位)成功的必要条件,这也就是MCU应用中软启动不能完全替代硬启动的原因。

Cortex-M系列MCU的软启动,就是向AIRCR地址0xE000ED0C写入数据0x05FA0007。
(人生,如果有这样一个“奇葩后门”,太多的大小问题都不会是问题了。)

01.jpg

下面我给出一个KAIL解决CMSIS-DAP仿真器软启动CortexMCU的办法。

1. 编写一个KEIL的Debug模式的脚本文件,文件名随意,比如ResetTargetBoard.ini,内容如下:
-------------------------------------------------------------------------------------------
LOG OFF
FUNC void Reset_Target(void)
{
_WWORD(0xE000ED0C, 0x05FA0007);      //Reset Command
  printf("\nApplication running ...\n");
}
Reset_Target();   //run
EXIT       //exit Debug mode,如果需要留在Debug模式,删除这个EXIT指令
---------------------------------------------------------------------------------------------

2. 在KAIL的环境下,导入此脚本文件:
04.jpg

3. 在KAIL下载了用户程序以后,按一下Debug按钮,软启动就会自动完成
05.jpg

4. 如果需要软启动后,留在Debug模式,删除最后面的EXIT。

希望有兴趣的朋友,找到更加简便的方法。
注意,此文的环境是针对Cortex-M MCU,CMSIS-DAP仿真器,KEIL系统,不使用RESET连接线。
其他情况下,各种不同的,仅供参考。
文中,软启动,复位,RESET,都是开始运行应用程序的同义词。
硬启动,是指仿真器和开发板之间,连接上RESET连线,使用CMSIS-DAP仿真器连上RESET线,就没有上述问题了。

收藏 2 评论16 发布时间:2018-6-10 11:36

举报

16个回答
huangxuejia-292 回答时间:2018-6-10 17:13:15
mark。
楼主研究得真细。
andeyqi 回答时间:2018-6-11 09:07:19
赞一下 666
radio2radio 回答时间:2018-6-11 19:48:39
huangxuejia-292 发表于 2018-6-10 17:13
mark。
楼主研究得真细。

这个问题就是您提出来的,我正在尝试解决。

另外,我发的ST-LINK的固件,与您的板子的GPIO定义一样,您可以试一试:
https://www.stmcu.org.cn/module/forum/thread-616215-1-1.html
spmno 回答时间:2018-6-12 10:23:32
支持楼主,研究的细,还写文章推广,值得学习。
vitasnokia 回答时间:2018-6-29 17:25:33
楼主,请问一下,用jlink仿真的时候,即使代码里面有看门狗,单步执行时,也不会因为没有喂狗而引起看门狗复位,而用这个dap仿真就会触发,请问怎么解决了
radio2radio 回答时间:2018-6-29 19:53:12
vitasnokia 发表于 2018-6-29 17:25
楼主,请问一下,用jlink仿真的时候,即使代码里面有看门狗,单步执行时,也不会因为没有喂狗而引起看门狗 ...

我没有这方面的经验,如果我遇到,我会暂时关闭WDT,毕竟WDT只是系统出现严重问题时重启系统的,不影响正常的程序运行。
waitshare 回答时间:2019-7-22 22:08:14
6666666666
bird0123 回答时间:2019-7-25 09:31:20
感谢分享
radio2radio 回答时间:2019-7-25 11:39:59
目前,许多新版的CMSIS-DAP仿真器,固件已经改进,可以像J-Link/STLINK一样完成软起动了。

一楼的方法,可以用于老式的没有软起动功能的CMSIS-DAP仿真器。
12下一页

所属标签

STM32团队

意法半导体微控制器和微处理器拥有广泛的产品线,包含低成本的8位单片机和基于ARM® Cortex®-M0、M0+、M3、M4、M33、M7及A7内核并具备丰富外设选择的32位微控制器及微处理器


最新内容

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