请选择 进入手机版 | 继续访问电脑版
搜索
查看: 16175|回复: 16

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

[复制链接]

该用户从未签到

20

主题

621

帖子

152

蝴蝶豆

论坛元老

最后登录
2023-11-13
发表于 2018-6-10 11:36:46 | 显示全部楼层 |阅读模式
本帖最后由 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线,就没有上述问题了。

回复

使用道具 举报

该用户从未签到

35

主题

167

帖子

61

蝴蝶豆

金牌会员

最后登录
2021-1-30
发表于 2018-6-10 17:13:15 | 显示全部楼层
mark。
楼主研究得真细。
回复 支持 反对

使用道具 举报

该用户从未签到

37

主题

2167

帖子

32

蝴蝶豆

论坛元老

最后登录
2024-9-23
发表于 2018-6-11 09:07:19 | 显示全部楼层
赞一下 666
回复

使用道具 举报

该用户从未签到

20

主题

621

帖子

152

蝴蝶豆

论坛元老

最后登录
2023-11-13
 楼主| 发表于 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
回复 支持 反对

使用道具 举报

该用户从未签到

0

主题

37

帖子

0

蝴蝶豆

初级会员

最后登录
2019-1-29
发表于 2018-6-12 10:23:32 | 显示全部楼层
支持楼主,研究的细,还写文章推广,值得学习。
回复 支持 反对

使用道具 举报

该用户从未签到

0

主题

12

帖子

0

蝴蝶豆

初级会员

最后登录
2020-9-3
发表于 2018-6-29 17:25:33 | 显示全部楼层
楼主,请问一下,用jlink仿真的时候,即使代码里面有看门狗,单步执行时,也不会因为没有喂狗而引起看门狗复位,而用这个dap仿真就会触发,请问怎么解决了
回复 支持 反对

使用道具 举报

该用户从未签到

20

主题

621

帖子

152

蝴蝶豆

论坛元老

最后登录
2023-11-13
 楼主| 发表于 2018-6-29 19:53:12 | 显示全部楼层
vitasnokia 发表于 2018-6-29 17:25
楼主,请问一下,用jlink仿真的时候,即使代码里面有看门狗,单步执行时,也不会因为没有喂狗而引起看门狗 ...

我没有这方面的经验,如果我遇到,我会暂时关闭WDT,毕竟WDT只是系统出现严重问题时重启系统的,不影响正常的程序运行。
回复 支持 反对

使用道具 举报

该用户从未签到

0

主题

2

帖子

0

蝴蝶豆

新手上路

最后登录
2019-7-23
发表于 2019-7-22 22:08:14 | 显示全部楼层
6666666666
回复 支持 反对

使用道具 举报

该用户从未签到

0

主题

79

帖子

0

蝴蝶豆

初级会员

最后登录
2019-10-24
发表于 2019-7-25 09:31:20 | 显示全部楼层
感谢分享
回复

使用道具 举报

该用户从未签到

20

主题

621

帖子

152

蝴蝶豆

论坛元老

最后登录
2023-11-13
 楼主| 发表于 2019-7-25 11:39:59 | 显示全部楼层
目前,许多新版的CMSIS-DAP仿真器,固件已经改进,可以像J-Link/STLINK一样完成软起动了。

一楼的方法,可以用于老式的没有软起动功能的CMSIS-DAP仿真器。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条

Archiver|手机版|小黑屋|论坛-意法半导体STM32/STM8技术社区

GMT+8, 2025-5-17 18:14 , Processed in 0.196432 second(s), 43 queries .

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.

快速回复 返回顶部 返回列表