打印
[Kinetis]

求版主老大指点!(已解决)

[复制链接]
1647|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
万利电子|  楼主 | 2014-1-8 16:01 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 FSL_TICS_A 于 2014-2-6 23:06 编辑

K系列MCU在:
1. 片内FLASH被全部擦除
2. 片内FLASH有正常的可执行代码
的情况下,通过SWD接口怎样能够正确进入仿真调试状态。
前者在访问Watchdog前的unlock时,MCU立刻进入Reset状态;后者一切正常。

相关帖子

沙发
FSL_TICS_MAHUI| | 2014-1-8 16:40 | 只看该作者
1. 片内Flash被全部擦除,这时候通过SWD想要进入调试状态是不可能的。原因是芯片在全部擦除时,0x40C被写入0xFF值,这个值在芯片上电复位时会被加载到FTFx_FSEC寄存器中引起芯片被保护. 这时候SWD是无法解除保护. JTAG是可以实现mass erase解除保护,进入调试状态的.
2. 片内有正常的可执行代码,SWD可以正常进入调试状态.

使用特权

评论回复
板凳
万利电子|  楼主 | 2014-1-8 17:31 | 只看该作者
我说的片内Flash被全部擦除指的是0x0000040C=0xFE。
问题是能够让DHCSR.DBGEN=1,也能够执行单步指令,就是不能全速运行以及访问Watchdog的unlock寄存器。
一旦访问DHCSR立刻为0x02010001。

使用特权

评论回复
地板
万利电子|  楼主 | 2014-1-8 17:33 | 只看该作者
试问一下:K系列MCU的DAP模块是不是没有按规则出牌?还是存在补丁或后门?

使用特权

评论回复
5
万利电子|  楼主 | 2014-1-9 11:09 | 只看该作者
自己再顶一下,希望老大给予指点!

使用特权

评论回复
6
FSL_TICS_MAHUI| | 2014-1-9 14:54 | 只看该作者
看门狗unlock寄存器写入时需要注意,如果以8位写入,必须要确保每次写入需要的值到 WDOG_UNLOCK寄存器中, 否则会产生异常造成复位。你可以查看手册 Refresh and unlock operations with 8-bit access 这一节获取详细信息。

使用特权

评论回复
7
万利电子|  楼主 | 2014-1-9 16:35 | 只看该作者
本帖最后由 万利电子 于 2014-1-9 16:40 编辑

KL系列看门狗必须是8位方式写入,我已经按要求做了。



使用特权

评论回复
8
万利电子|  楼主 | 2014-1-9 17:03 | 只看该作者
这是一个可以正常运行的例子,将断点设置到写WDOG_STCTRLH之后,全速运行是正确的,程序如下:
//  /*Disable WWDT*/
//  reg = WDOG_STCTRLH;
  reg &= ~1UL;
  /*Unlock sequence*/
  WDOG_UNLOCK  = 0xC520;
  WDOG_UNLOCK  = 0xD928;
  WDOG_STCTRLH = reg;

汇编指令是16位操作的:
MOVW R2,#0xC520
STRH R2,[R0, 0x0E]
MOVW R2,#0xD928
STRH R2,[#R0,0x0E]

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

24

主题

174

帖子

2

粉丝