打印
[工具和软件]

飞思卡尔调试方式OpenSDA

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

  飞思卡尔出的调试方式OpenSDA,我早有耳闻,估计有些时髦的博友现在都已经在尝鲜了吧,呵呵。它是作为前段时间飞思卡尔打的火热的Kinetis L系列开发平台Freedom的板载调试器一块儿推出来的,前几天还在e络盟看到这个小板子貌似仍然卖的很火来,哈哈。关于OpenSDA我最开始曾进入了一个误区,误把它当作与JTAG、SWD类似的一种新的调试接口,等最近开始深入了解研究之后才恍然,所以今儿就索性为此写篇浅谈,简单说说OpenSDA,至于具体的实际操作调试使用,改天我会再另开一篇,给大家详细介绍一下OpenSDA的使用经验,对此有兴趣的不妨期待一下,呵呵。

    OpenSDA,即Open-standard Serial and Debug adapter,是飞思卡尔新近推出的创新的一种嵌入式调试工具,注意它是一种调试工具而非调试接口,不过与其他类似OSBDM、Mutilink之类的仿真器不同的是,它换了一种创新的思路,即把传统的仿真器连接PC机方式改成了更友好的方式,即以USB存储设备的方式呈现给开发者。这样OpenSDA插上电脑后就成为一个U盘,下载程序就像是往U盘里复制,当然文件类型只支持S19和bin格式,当然也可以通过更换固件(OpenSDA Application)与IDE集成,仿真调试目标芯片。下面为了更深入了解OpenSDA,先看看它的架构软硬件架构:

    从硬件上看,OpenSDA的硬件组件很简单,采用了自带USB控制器的MK20DX128VFM5,作为USB device与PC主机通信,通过K20的SPI接口软件实现JTAG/SWD协议调试仿真Target MCU,所以到头来它仍然还是采用JTAG或者SWD接口,而不是额外增加了一种调试接口,同时类似于OSBDM,OpenSDA也支持虚拟串口通信(增加了USB CDC类的 Application)。由于自己这段时间在测试OSBDM,所以正好拿这两者做了下对比,调试速度上OpenSDA是快上不少的,操作界面上OpenSDA也相对友好许多,不过由于OpenSDA毕竟是新推出来的,目前具体都支持哪些飞思卡尔的片子我还没有看到相关信息,而从BOM硬件成本上来看,OpenSDA就简单的多了,基本K20+1*74LVC125即可搞定了,而OSBDM如果按照我自己DIY的那个版本的话需要JM60+2*74LVC125+1*74LVC04+1*74LVC1T45,K20市场价目前为¥30左右,而JM60为20¥左右,所以算下来其实价格差不多,只不过OSBDM支持飞思卡尔全系列MCU,当然这个其实没有可比性,哈哈,因为目前我只看到了在Freedom的板子上加了OpenSDA,估计等到支持其他系列的时候硬件成本和板子的复杂性也该上去了,所以此次对比纯属娱乐娱乐,嘿嘿~

    从软件上看,OpenSDA包括两部分,一个是以USB存储设备枚举形式的Bootloader,一个是一套实现具体功能的Applications(注意是-s复数形式,呵呵)。Bootloader模式,以fat16文件系统格式的U盘形式存在(Windows下卷名为BOOTLOADER),里面包含了一些必要文件,以提供信息,实现Application的导入后者更新那就更简单了,类似于我们平常的拷贝文件,把相应功能的Application文件(S19、bin类型)拖到BOOTLOADER下的U盘根目录下即可,下图为OpenSDA软件构架,注意左边的Applications同时只能有一种实现:

    左图所示有六个Applications,这里我就挑我们平时最常用的两个Application固件简单说说(什么应用最常用呢,呵呵,当然一个是下载,一个是调试了),一个是MSD Programmer,一个是P&E Open Debug,而且这两个应用固件可以从P&E官方下载到http://www.pemicro.com/opensda/index.cfm


相关帖子

沙发
我是MT|  楼主 | 2015-4-21 21:35 | 只看该作者
(1)MSD Flash Programmer

    利用Bootloader更新该应用的话(MSD Flash Programmer),OpenSDA会类似于Bootloader一样,另外再虚拟枚举一个USB存储设备(FAT16文件系统,对KL的Freedom平台来说,虚拟的卷名为FRDM-KL25Z),其实就是相当于把目标芯片内部的Flash虚拟成U盘了(个人觉着这个想法真的很NB,实现起来真的不难,难的是想出这个Idea),而对目标芯片的flash编程就可以利用简单的把S19或者bin文件拖到该U盘下实现了,灰常简单方便啊有木有,这个应用最大的好处是淘汰了上位机编程软件,这点来看我真是有点敬佩飞思卡尔的工程师了,极大的方便了开发者。

(2)P&E Debug Application

    这个是P&E开发的调试应用固件,上面的Programmer只是简单的烧写flash,而如果我们想要配合IDE集成开发环境来仿真调试的话,那就得用到这个固件了,另外该固件也附加了USB CDC类的实现,方便实现虚拟串口功能。目前该固件支持的IDE版本为Codewarrior 10.3及以上,IAR for ARM 6.40.3及以上,Keil MDK 4.54(需要下载P&E补丁)及以上,当然最新的P&E推出的一些软件肯定也是支持OpenSDA的了,哈哈,很强大啊有木有~

使用特权

评论回复
板凳
我是MT|  楼主 | 2015-4-21 21:37 | 只看该作者
后会无期1 发表于 2015-4-21 21:37
问你个问题  我用iar 接 k60的板子  烧程序  用的osjtag
ld OSJTAG/OSBDM firmware has been detected .the ...

这个就是正常的固件升级,OSBDM有个Boot跳线,升级的时候需要拔下来线,短接该跳线,然后再插线,之后再点确认就可以自动升级了,升完级再拔下线,拔掉跳线帽,就可以了~

使用特权

评论回复
地板
后会无期1| | 2015-4-21 21:38 | 只看该作者
我是MT 发表于 2015-4-21 21:37
这个就是正常的固件升级,OSBDM有个Boot跳线,升级的时候需要拔下来线,短接该跳线,然后再插线,之后再 ...

已经解决了 感谢大神。
另外我想咨询下大神,k60选什么集成开发环境比较好,如果带操作系统用什么MQX还是RTOS比较好,
非常感谢

使用特权

评论回复
5
我是MT|  楼主 | 2015-4-21 21:39 | 只看该作者
后会无期1 发表于 2015-4-21 21:38
已经解决了 感谢大神。
另外我想咨询下大神,k60选什么集成开发环境比较好,如果带操作系统用什么MQX还是 ...

看个人习惯吧,我自己用惯了IAR了。至于操作系统,MQX就是RTOS(实时操作系统)一种,看你有什么要求了,K60现在网上有移植好的MQX,UCOS,FreeRTOS等很多~

使用特权

评论回复
6
后会无期1| | 2015-4-21 21:39 | 只看该作者
我是MT 发表于 2015-4-21 21:39
看个人习惯吧,我自己用惯了IAR了。至于操作系统,MQX就是RTOS(实时操作系统)一种,看你有什么要求了, ...

能给个网址吗

使用特权

评论回复
7
我是MT|  楼主 | 2015-4-21 21:40 | 只看该作者

MQX去飞思卡尔官网,那两个也都直接去官网下就成,谷歌搜下~

使用特权

评论回复
8
后会无期1| | 2015-4-21 21:41 | 只看该作者
MSD Bootloader如何下载到芯片?固件从哪下载啊?

使用特权

评论回复
9
fhguo1990| | 2015-4-21 21:41 | 只看该作者
'正在构建目标: 5.afx'
'正在调用: ARM Linker'
"C:/Program Files/Freescale/CW MCU v10.1/MCU/ARM_Tools/Command_Line_Tools/mwldarm" @@"5.args" -o "5.afx"  
C:/Program Files/Freescale/CW MCU v10.1/MCU/ARM_Tools/Command_Line_Tools/mwldarm|Linker|Error
(D:\Products\ARM_CORTEXM\ARM_CortexM_Component\ewl\EWL_Runtime\Runtime_ARM\Source\startup.c|157|0|0|0|0)
=Referenced from "__thumb_startup" in librt_Thumb_LE_v7M.a
>Undefined : "__SP_INIT"
C:/Program Files/Freescale/CW MCU v10.1/MCU/ARM_Tools/Command_Line_Tools/mwldarm|Linker|Error
(D:\Products\ARM_CORTEXM\ARM_CortexM_Component\ewl\EWL_Runtime\Runtime_ARM\Source\ROMCopy.c|101|0|0|0|0)
=Referenced from "__copy_rom_sections_to_ram" in librt_Thumb_LE_v7M.a
>Undefined : "__S_romp"
C:/Program Files/Freescale/CW MCU v10.1/MCU/ARM_Tools/Command_Line_Tools/mwldarm|Linker|Error
(D:\Products\ARM_CORTEXM\ARM_CortexM_Component\ewl\EWL_Runtime\Runtime_ARM\Source\startup.c|157|0|0|0|0)
=Referenced from "__thumb_startup" in librt_Thumb_LE_v7M.a
>Undefined : "__S_romp"
C:/Program Files/Freescale/CW MCU v10.1/MCU/ARM_Tools/Command_Line_Tools/mwldarm|Linker|Error
(D:\Products\ARM_CORTEXM\ARM_CortexM_Component\ewl\EWL_Runtime\(RISC_Common)\StaticInitializers.cpp|73|0|0|0|0)
=Referenced from "__call_static_initializers" in librt_Thumb_LE_v7M.a
>Undefined : "__sinit__"
C:/Program Files/Freescale/CW MCU v10.1/MCU/ARM_Tools/Command_Line_Tools/mwldarm|Linker|Error
>Link failed.


Errors caused tool to abort.
C:\Program Files\Freescale\CW MCU v10.1\gnu\bin\make: *** [5.afx] Error 1
师兄,   我用苏大的链接文件替换了原来的文件,但编译时出错显示“原来文件”的某个变量没有定
这样的问题咋恩么解决?

使用特权

评论回复
10
我是MT|  楼主 | 2015-4-21 21:42 | 只看该作者
fhguo1990 发表于 2015-4-21 21:41
'正在构建目标: 5.afx'
'正在调用: ARM Linker'
"C:/Program Files/Freescale/CW MCU v10.1/MCU/ARM_Tool ...

这个是肯定的了啊,你只把原来的链接文件替换了,但是原来工程的文件里需要链接文件里的相关变量。你要不然就是在原来的工程里找到这几个变量,替换成苏大里的变量;或者直接在苏大的链接文件里添加所需的这几个文件,当然要注意语法

使用特权

评论回复
11
我是MT|  楼主 | 2015-4-21 21:42 | 只看该作者
后会无期1 发表于 2015-4-21 21:41
MSD Bootloader如何下载到芯片?固件从哪下载啊?

我**最后给出的那个链接就是,里面有固件及相关说明~

使用特权

评论回复
12
后会无期1| | 2015-4-21 21:43 | 只看该作者
请问你那里有OpenSDA的硬件电路吗?万分感谢~~~

使用特权

评论回复
13
我是MT|  楼主 | 2015-4-21 21:43 | 只看该作者
后会无期1 发表于 2015-4-21 21:43
请问你那里有OpenSDA的硬件电路吗?万分感谢~~~

OpenSDA的电路我都是从Freedom板子上摘出来的,Freedom板的原理图上有OpenSDA的原理图部分。

使用特权

评论回复
14
后会无期1| | 2015-4-21 21:44 | 只看该作者
我是MT 发表于 2015-4-21 21:43
OpenSDA的电路我都是从Freedom板子上摘出来的,Freedom板的原理图上有OpenSDA的原理图部分。 ...

你好,能不能稍微详细的叙述一下呢,我刚刚接触这些东西,还有打算做一写入器,可以直接烧写飞思卡尔KL系列和KW系列的写入器  但是毫无思路,不知从何下手,求大神指导~~~~不胜感激…………

使用特权

评论回复
15
我是MT|  楼主 | 2015-4-21 21:44 | 只看该作者
后会无期1 发表于 2015-4-21 21:44
你好,能不能稍微详细的叙述一下呢,我刚刚接触这些东西,还有打算做一写入器,可以直接烧写飞思卡尔KL系 ...

你如果想做烧写器,不妨试一下USBDM,这个我博客里之前有详细介绍过怎么做,你在我的博客里搜关键词USBDM就可以了。

使用特权

评论回复
16
后会无期1| | 2015-4-21 21:45 | 只看该作者
我是MT 发表于 2015-4-21 21:44
你如果想做烧写器,不妨试一下USBDM,这个我博客里之前有详细介绍过怎么做,你在我的博客里搜关键词USBDM ...

实在是谢谢你,对了,既然OpenSDA   firmware源代码不是开源的,那您上次提到的固件下载是什么意思呢?还是说源代码是大神自己编的啊!

使用特权

评论回复
17
我是MT|  楼主 | 2015-4-21 21:45 | 只看该作者
后会无期1 发表于 2015-4-21 21:45
实在是谢谢你,对了,既然OpenSDA   firmware源代码不是开源的,那您上次提到的固件下载是什么意思呢?还 ...

呵呵,我没那么厉害,固件是以S19文件或者Bin文件的形式放出来的,但是源代码不开放的

使用特权

评论回复
18
我思故我在12345| | 2015-4-21 21:46 | 只看该作者
win8.1下无法识别  提示设备描述符请求失败

使用特权

评论回复
19
我是MT|  楼主 | 2015-4-21 21:47 | 只看该作者
我思故我在12345 发表于 2015-4-21 21:46
win8.1下无法识别  提示设备描述符请求失败

事先已经装了PE的驱动了吗?
如果只是虚拟串口装不上的话,可以进http://blog.csdn.net/wangwenxue1989/article/details/42008443这篇**里看一下。

使用特权

评论回复
20
FSL_TICS_ZJJ| | 2015-4-27 13:36 | 只看该作者
非常感谢你关于Kinetis的经验分享 !

使用特权

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

本版积分规则

28

主题

278

帖子

1

粉丝