jicheng0622

【原创】Codewarrior10.5低功耗模式唤醒后保持调试功能

0
阅读(3806)

    这两天一直在广州出差,抽空游了游珠江,看了看“小蛮腰”,逛了逛陈家祠,走了走上下九,一趟下来作为第一次来到南方的我来说觉着南方的环境真心不错(有山有水有树林儿的),给人一种很舒服的感觉,咳咳,当然也可能是出差的缘故,少了很多压力和匆忙。当然,对我这种土生土长的北方人来说,可能不太容易适应南方的生活,但是南方的确不失为一个度假旅游的好地方,哈哈。

    闲话不多说了,回归正题,其实早就想把这篇内容写出来的,结果这段时间跑这么老远出差就耽搁了。Codewarrior10.5估计很多人已经在用了(貌似现在CW10.6都出来了),好不好用姑且不谈,本篇文章主要是想聊聊在使用CW调试Kinetis低功耗的时候需要注意的一个问题。

    说实话,Kinetis的低功耗指标还是不错的(尤其是M0+内核的KL系列,跟业界低功耗的标杆430相比也毫不逊色),但是需要注意的是Kinetis在进入低功耗的时候其调试接口是禁用的(想想也有道理,如果在低功耗的还是仍然让调试端口standby,那岂不是成了耗电大户了,呵呵),也就是说单片机在进入低功耗模式之后芯片就与仿真器和IDE开发环境断开了,这个时候如果我们点击“暂停”的话,调试环境是报错的。但是这样就给我们调试带来了麻烦,因为有的时候我们是需要在芯片唤醒之后查看某些变量和程序的运行状态的。不过不用担心,这种情况下,一些IDE开发环境在芯片与仿真器断开之后默认会不断给仿真器发指令,让其尝试与芯片重新连接,这样如果芯片从低功耗模式下唤醒之后,仿真器和开发环境就会再次与芯片握手成功,并且此种方式并不会中断调试环境,所以在芯片唤醒之后可以继续正常访问变量和程序状态,IAR就是可以这样的。但是不走寻常路的总会有的,Codewarrior就是这个不守规矩的,呵呵。

    我不太清楚Codewarrior架构师是处于什么目的(我们假设牛人做事情总是有理由的,呵呵),总之Codewarrior10.5默认是仿真器与芯片在调试环境下如果断开的话自动就终止整个调试进程,也就是说如果一旦芯片进入低功耗模式下调试端口断开后Codewarrior就会abort整个调试process,所以即使芯片被唤醒也无法再进入调试环境了,只能手动点击重新下载调试,但是这样也就没了低功耗调试的意义了。所谓发现问题就得解决问题,摸索了半天终于找到了症结所在。

    我们点击菜单栏Run->Debug configurations,进入调试工具选项,如下图,点击“Edit”,选择“Advanced”,可以看到系统默认是“Ask me”或者“Terminate the debug sessions”二选一,所以我们只需要选中“Try to reconnect”即可,这样就可以实现断开之后不断重新尝试连接的功能。

image

image

    所谓药到病除,别看我这“广告”还是得看“疗效”,自己赶紧去亲手试试吧,自己主动解决问题的感觉还是很爽的,哈哈。这个问题就到这,未完待续~