打印
[Kinetis]

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

[复制链接]
834|19
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
powerful1|  楼主 | 2015-3-28 21:51 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

想到过使用飞思卡尔的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了,可以实时更新观察变量,这点灰常灰常给力,如下图:


相关帖子

沙发
powerful1|  楼主 | 2015-3-28 21:52 | 只看该作者
当然我们也会猜到SEGGER不会那么蠢到自断财路(OpenSDA平台可是非常low-cost的),不然谁还会用那么昂贵的正版J-Link啊,呵呵。所以使用SEGGER提供的这个firmware有以下几点限制:

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

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

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

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

使用特权

评论回复
板凳
powerful1|  楼主 | 2015-3-28 21:52 | 只看该作者
powerful1 发表于 2015-3-28 21:52
当然我们也会猜到SEGGER不会那么蠢到自断财路(OpenSDA平台可是非常low-cost的),不然谁还会用那么昂贵的 ...

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

使用特权

评论回复
地板
Vitality1| | 2015-3-28 22:08 | 只看该作者

想请教关于Kinetis K60串口通信的问题:

串口UARTx_S1 寄存器中的IDLE位是在接收线空闲的时候置位,并产生中断的。


当通讯过程中有干扰信号使IDLE置位并发生中断,而IDLE中断是需要读取D寄存器才能清除的,此时D寄存器里没有数据,这时就没有办法清掉IDLE位。然后就反复频繁的进入接收空闲中断(因IDLE位没有清除)。
想请问下,在这种情况下,应该怎样清除IDLE位?谢谢!

使用特权

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


使用特权

评论回复
6
Vitality1| | 2015-3-28 22:11 | 只看该作者
powerful1 发表于 2015-3-28 22:10
Jlink是支持KL系列的,不过需要把Jlink的固件升级到4.5以上

我升级到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.
这会是什么原因啊?

使用特权

评论回复
7
Vitality1| | 2015-3-28 22:14 | 只看该作者
powerful1 发表于 2015-3-28 22:14
有这个可能,在你焊接的时候把KL烧坏了~

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

使用特权

评论回复
8
Vitality1| | 2015-3-28 22:16 | 只看该作者
powerful1 发表于 2015-3-28 22:15
调试接口你没有接RESET脚是吧,所以造成不能再程序运行时通过SWD接口与目标芯片通信,谢谢你的宝贵经验分 ...

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

使用特权

评论回复
9
Vitality1| | 2015-3-28 22:17 | 只看该作者
powerful1 发表于 2015-3-28 22:17
你接上Reset之后,在下载程序的时候jlink会拉低芯片复位,在复位之后默认是SWD模式(此时还未执行到你把S ...

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

使用特权

评论回复
10
Vitality1| | 2015-3-28 22:19 | 只看该作者
powerful1 发表于 2015-3-28 22:18
这样可以?中间一直不松吗,程序死在NMI中断的话按理说调试环境的flashloader就写不到芯片ram中了,也就 ...

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

使用特权

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

也没有出现timeout之类的错误

使用特权

评论回复
12
FSL_TICS_ZJJ| | 2015-4-2 10:55 | 只看该作者
   非常感谢你关于Kinetis的经验分享 !

使用特权

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

本版积分规则

88

主题

430

帖子

4

粉丝