OpenSDA调试器技术资料与设计图纸
【OpenSDA调试器】
OpenSDA是一款开源的ARM串行调试器,它主要用在NXP官方的开发板上,提供一个板载的调试和编程接口(例如Kinetis的各种官方开发板上都是它),但也可制作为单独的调试器使用。
OpenSDA是独立的开源项目,但Blazar基于OpenSDA的开源电路,设计Layout了自己的调试器(仅局部优化了一些设计),在固件和驱动等层面则完全兼容原始OpenSDA,用于为Blazar提供廉价的调试方案。
【OpenSDA的构架】
OpenSDA的方便之处在于,它是一个开放的Bootloader+Application结构,可以下载不同的应用固件,被配置为不同的调试器来使用,包括J-Link、CMSIS-DAP、P&E、USBDM等。
如图所示,OpenSDA自身的开源项目( CMSIS-DAP )包括了电路原理图、一个Bootloader(蓝色),在其基础上,加载不同的应用固件(Application),就可以当不同的经典编程器啦。
当然,在ARM、NXP等芯片供应商的努力下,可以选择的经典编程器也不止一种,有的开源、有的不开源但免费,参见下表,选自己喜欢的吧。。。(在下载链接里,可以从各个调试器官方主页下载到bin格式的固件,还可以下载到对应的调试器驱动和开发工具补丁)
Bootloader |
调试APP |
支持的开发工具 |
备注 |
固件和驱动下载地址 |
|||
KEIL |
IAR |
CW |
KDS |
||||
OpenSDAv2 |
● |
● |
X |
○ |
开放源码 |
||
● |
● |
● |
● |
无源码,非商用 |
|||
○ |
● |
○ |
● |
无源码,非商用? |
|||
X |
X |
○ |
○ |
开放源码 |
【如何更新OpenSDA的固件】
OpenSDA的Bootloader是需要用编程器烧写进去的(显然,这是个鸡和蛋的问题:-)。
而一般已有Bootloader的OpenSDA编程器,更新应用固件是很容易的。比如,从J-Link刷成P&E,或者反之。
按住OpenSDA编程器的Reset按键,插入USB线。此时OpenSDA会擦掉自己的应用固件,进入Bootloader,表现为在Windows里会认出一个U盘。
将下载的编程器应用固件,比如J-Link的"OpenSDA_V2_1.bin"拷贝/拖动到这个U盘里,它就会自动烧写更新,完成后小灯快速闪烁。
重新插拔USB,可以看到已经被识别为新下载的编程器设备了(比如J-Link)。
【OpenSDA调试器设计资料】
OpenSDA是独立的开源项目,但Blazar基于OpenSDA的开源电路,设计Layout了自己的调试器(仅局部优化了一些设计),在固件和驱动等层面则完全兼容原始OpenSDA,用于为Blazar提供廉价的调试方案。
设计图纸下载链接:
· 原理图(PDF)
※ Blazar里的OpenSDA调试器由清华大学薛涛老师和他的学生们完成,使用和修改,免费使用请遵循Blazar的Lincense。
【OpenSDA的版本】
稍微Tricky的问题是,OpenSDA有若干个版本,如下表:
版本 | 引导加载程序 | 默认调试接口 | 闪存编程 | 虚拟串行端口 | 提供源代码 |
---|---|---|---|---|---|
OpenSDAv1 | P&E Micro | P&E Micro | .sda/.s19/.srec | 有 | 无,专有 |
OpenSDAv2 | Arm/mbed | CMSIS-DAP | .bin | 有 | 有,开源 |
OpenSDAv2.1 | Arm/mbed | CMSIS-DAP | .bin | 有 | 有,开源 |
OpenSDAv2.2 | mbed DAPLink | DAPLink | .bin, .hex | 有 | 有,开源 |
其中,OpenSDAv1是不开源的,所以忽略。
OpenSDAv2是开源的第一版,Bootloader加载程序从0x5000开始,但随后发现留给调试器固件的空间较小。
OpenSDAv2.1,Bootloader加载程序改进为从0x8000开始。
所以的所以,Bootloader的v2和v2.1,调试器固件是不通用的。比如,比如J-Link固件,从https://www.segger.com/downloads/jlink#JLinkOpenSDAGenericFirmwares 下载,就能看到v2和v2.1不同的对应文件。
※ 历史上,Blazar-β板,里面的出厂bootloader是OpenSDAv2。而自制新的OpenSDA调试器,建议使用OpenSDAv2.1固件。
【其它有用的参考链接】