打印
[Kinetis]

使用OpenSDA平台作为J-Link调试Kinetis

[复制链接]
2439|23
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
我是MT|  楼主 | 2015-4-19 11:38 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

想到过使用飞思卡尔的Freedom平台当做昂贵的J-Link调试器吗,好吧,这次给你机会了,呵呵。昨天在去SEGGER官网查资料的时候看到了一个suprise,Segger刚刚为OpenSDA平台release了一个可以兼容Jlink功能的firmware。说白了,就是借用OpenSDA当做J-Link用,当然有部分功能是有所限制的,不过瑕不掩瑜,Jlink的高速、稳定及一些特有的功能一直让接触过它的开发者印象深刻,所以能用low-cost的OpenSDA实现高性能的Jlink实在是让人兴奋,包括在下,哈哈,所以还等什么,赶紧露胳膊抹袖子整整吧,呵呵~

    其实这次SEGGER提供的firmware就是OpenSDA的一个Application(我已经上传到本博客最后的附件中了),类似MSD-APP和DBUG-APP等其他的OpenSDA应用,所以它的使用方法类似,具体可以参考我之前的一篇博客《尝鲜OpenSDA方式调试仿真Freedom平台》http://blog.chinaaet.com/detail/31795.html

    (1)将firmware更新到OpenSDA的平台之后,再回到normal mode,这样就可以把OpenSDA当J-Link用了。将硬件连接好之后,打开J-Link Commander,弹出的窗口如下图所示,看吧,有点如假包换的J-Link味道了吧,呵呵,而且还有正版的S/N序列号哦。

    (2)当然在IAR环境下使用它还需要简单的设置几步,如下图所示,建议不使用flash loader而是使用jlink自带的调试下载引擎,更稳定且速度杠杠的,呵呵:

    (3)一切都准备好之后,就可以按照J-Link的调试方法调试Kinetis了,呵呵。当然有个最大的好处是,借用J-Link的特性,使用OpenSDA也可以支持Live watch了,可以实时更新观察变量,这点灰常灰常给力,如下图:

Limitations:

    当然我们也会猜到SEGGER不会那么蠢到自断财路(OpenSDA平台可是非常low-cost的),不然谁还会用那么昂贵的正版J-Link啊,呵呵。所以使用SEGGER提供的这个firmware有以下几点限制:

1)只能用在飞思卡尔平台基于ARM的产品上;

2)只可以调试飞思卡尔的评估板,所以貌似如果用在自己画的板子上可能有问题;

3)还有一个比较遗憾的,那就是不支持使用J-Flash软件(我一直觉着J-Flash很好用);

4)SEGGER不提供技术支持(这个我觉着无所谓)。

    总体来说,还是利好的消息的,我还是灰常灰常看好OpenSDA的应用前景的,连SEGGER都低头兼容了,看来飞思卡尔以后调试器短板有望得到弥补,加油吧,呵呵。


相关帖子

沙发
我是MT|  楼主 | 2015-4-19 11:39 | 只看该作者
附件为更新的固件
JLink_OpenSDA.zip (68.69 KB)

使用特权

评论回复
板凳
后会无期1| | 2015-4-19 11:40 | 只看该作者
想请教关于Kinetis K60串口通信的问题:
串口UARTx_S1 寄存器中的IDLE位是在接收线空闲的时候置位,并产生中断的。
当通讯过程中有干扰信号使IDLE置位并发生中断,而IDLE中断是需要读取D寄存器才能清除的,此时D寄存器里没有数据,这时就没有办法清掉IDLE位。然后就反复频繁的进入接收空闲中断(因IDLE位没有清除)。 想请问下,在这种情况下,应该怎样清除IDLE位?

使用特权

评论回复
地板
后会无期1| | 2015-4-19 11:41 | 只看该作者
后会无期1 发表于 2015-4-19 11:40
想请教关于Kinetis K60串口通信的问题:
串口UARTx_S1 寄存器中的IDLE位是在接收线空闲的时候置位,并产生 ...

问题解决了

使用特权

评论回复
5
我是MT|  楼主 | 2015-4-19 11:42 | 只看该作者

恭喜解决了,方便把它写出来吗,分享给大家~

使用特权

评论回复
6
后会无期1| | 2015-4-19 11:42 | 只看该作者
我是MT 发表于 2015-4-19 11:42
恭喜解决了,方便把它写出来吗,分享给大家~

是UARTx_C1寄存器的ILT位没有设成1,即收到停止位后再计数,之前默认是0,起始位就计数,把ILT设成1后问题就解决了。

使用特权

评论回复
7
fhguo1990| | 2015-4-19 11:43 | 只看该作者
我想问下用J_Link的SWD可不可以调试KL15,KL15的调试电路和KL15的FRDM-KL25开发板给的电路一样,但是在调试的时候J_Link的commander老是报找不到芯片的错误,能不能指导下?

使用特权

评论回复
8
我是MT|  楼主 | 2015-4-19 11:45 | 只看该作者
Jlink是支持KL系列的,不过需要把Jlink的固件升级到4.5以上

使用特权

评论回复
9
fhguo1990| | 2015-4-19 11:45 | 只看该作者
我升级到4.68a的版本了,还是没有成功,出现了J_Link commander还是报没找到芯片的错误,codewarrior的错误是
Failed to resume target process., ARM GDI Protocol Adapter : An error occurred while trying to write memory. The Debugger can not write memory.
这会是什么原因啊?

使用特权

评论回复
10
fhguo1990| | 2015-4-19 11:46 | 只看该作者
我是MT 发表于 2015-4-19 11:45
Jlink是支持KL系列的,不过需要把Jlink的固件升级到4.5以上

换了一块新的KL15芯片就能调试了,我想这样的话,出现找不到KL15芯片的现象是不是意味着KL15芯片坏了?

使用特权

评论回复
11
我是MT|  楼主 | 2015-4-19 11:47 | 只看该作者
有这个可能,在你焊接的时候把KL烧坏了

使用特权

评论回复
12
fhguo1990| | 2015-4-19 11:48 | 只看该作者
我是MT 发表于 2015-4-19 11:47
有这个可能,在你焊接的时候把KL烧坏了

J_Link commander找不到芯片的原因是我把SWD的数据口在程序中使用了,导致第二次下不进去,昨天,我同事找到的原因,分享下

使用特权

评论回复
13
我是MT|  楼主 | 2015-4-19 11:48 | 只看该作者
调试接口你没有接RESET脚是吧,所以造成不能再程序运行时通过SWD接口与目标芯片通信,谢谢你的宝贵经验分享

使用特权

评论回复
14
我是MT|  楼主 | 2015-4-19 11:49 | 只看该作者
调试接口你没有接RESET脚是吧,所以造成不能再程序运行时通过SWD接口与目标芯片通信,谢谢你的宝贵经验分享

使用特权

评论回复
15
fhguo1990| | 2015-4-19 11:50 | 只看该作者
我是MT 发表于 2015-4-19 11:49
调试接口你没有接RESET脚是吧,所以造成不能再程序运行时通过SWD接口与目标芯片通信,谢谢你的宝贵经验分享 ...

reset脚可以不接,对下程序没有影响,是我将SWD的数据口使用后,影响了SWD的下载,将NMI_b拉低就好了

使用特权

评论回复
16
我是MT|  楼主 | 2015-4-19 11:50 | 只看该作者
fhguo1990 发表于 2015-4-19 11:50
reset脚可以不接,对下程序没有影响,是我将SWD的数据口使用后,影响了SWD的下载,将NMI_b拉低就好了 ...

你接上Reset之后,在下载程序的时候jlink会拉低芯片复位,在复位之后默认是SWD模式(此时还未执行到你把SWD口设置成数据口的初始化代码)就可以烧程序了,所以这种情况你接上reset脚比较好。
不过你说的把NMI_b拉低就好了是什么意思呢?这样程序应该会死在NMI中断里面吧?

使用特权

评论回复
17
fhguo1990| | 2015-4-19 11:51 | 只看该作者
我是MT 发表于 2015-4-19 11:50
你接上Reset之后,在下载程序的时候jlink会拉低芯片复位,在复位之后默认是SWD模式(此时还未执行到你把S ...

是死在nmi中断里的,主要就是利用这个中断阻止了mian函数对IO口的复用初始,保证这时的swd的IO口是默认的功能,这样就可以把程序下进去了。

使用特权

评论回复
18
我是MT|  楼主 | 2015-4-19 11:52 | 只看该作者
fhguo1990 发表于 2015-4-19 11:51
是死在nmi中断里的,主要就是利用这个中断阻止了mian函数对IO口的复用初始,保证这时的swd的IO口是默认的 ...

这样可以?中间一直不松吗,程序死在NMI中断的话按理说调试环境的flashloader就写不到芯片ram中了,也就是少不进去程序了吧,应该会提示timeout之类的错误吧?

使用特权

评论回复
19
fhguo1990| | 2015-4-19 11:53 | 只看该作者
我是MT 发表于 2015-4-19 11:52
这样可以?中间一直不松吗,程序死在NMI中断的话按理说调试环境的flashloader就写不到芯片ram中了,也就 ...

中间没松,这样做在kl15芯片上是可以的,之前因为复用SWD的data口而无法烧程序的芯片这么做之后就好使了,等烧写完程序,把nmi_b脚再拉高,程序就可以运行

使用特权

评论回复
20
fhguo1990| | 2015-4-19 11:54 | 只看该作者
我是MT 发表于 2015-4-19 11:52
这样可以?中间一直不松吗,程序死在NMI中断的话按理说调试环境的flashloader就写不到芯片ram中了,也就 ...

也没有出现timeout之类的错误

使用特权

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

本版积分规则

28

主题

278

帖子

1

粉丝