[开源] USB版Snail Emulator(非USB模拟串口,支持AVR32 Studio仿真)
[相关说明]由于AVR32 Studio没有支持串口JTAGICE mkII仿真的计划,于是自己做了个USB口
的。原理非常简单,用STM32实现了JTAGICE mkII的USB协议数据包收发,再将数据包由
串口转发给ATmega32中的Snail Emulator固件处理。这样AVR32 Studio就能认到USB口
的JTAGICE mkII,允许仿真了,真好骗。 ^o^
源代码包中Release目录下是GCC makefile,可用CodeSourcery G++ Lite工具链编
译,RVMDK目录下是MDK 4工程。
http://cache.amobbs.com/bbs_upload782111/files_28/ourdev_552177.gif
原理图
http://cache.amobbs.com/bbs_upload782111/files_27/ourdev_540117.jpg
实物图(STM32在背面)
<font color=red> [相关下载]
原理图PDF:ourdev_552178.pdf(文件大小:122K) (原文件名:SnailMk2USB2.pdf)
STM32源代码:ourdev_552179.zip(文件大小:184K) (原文件名:jtagice_mkii_emulator.zip)
STM32固件:ourdev_552180.zip(文件大小:11K) (原文件名:jtagice_mkii_emulator_hex.zip)
2010-05-13更新
1.使用USB IAD复合设备,同时实现Snail Emulator和虚拟串口
2.USART改用DMA发送(主要给main loop减负,性能并无大提升)
3.因IAD改变了设备ID,驱动可能需要手工选择(浏览计算机以查找驱动程序软件 -> 从计算机的设备驱动程序列表中选择 -> 厂商Atmel Corp. -> 型号JTAGICE mkII)
源代码 ourdev_553763.zip(文件大小:191K) (原文件名:jtagice_mkii_emulator.zip)
GCC编译的固件 ourdev_553764.zip(文件大小:13K) (原文件名:jtagice_mkii_emulator_hex.zip)
虚拟串口驱动 ourdev_553770.zip(文件大小:778字节) (原文件名:snail_cdc.zip) 很有意义。 gzhuli 咕唧霖好强啊! 支持新的AVR32 Studio 2.5/IAR for AVR32 吗?
我用snail emulator连IAR,报jtagICE mkII版本低于6.06; AVR32 Studio 2.5提示升级,不升级可以下载程序但调试的时候提示"No emulator attached."。
看了看你的代码,主要数据包转发到atmega32了,mkII版本应该是snil mkII报出的,不知lz使用哪个版本的AVR32 Studio? 有没有试过IAR?如何解决版本低于6.06的问题? EVK1104上有一片AT32UC3B1256作UART+JTAG,或许也可以做个参考。 好 to 【4楼】 yystype
你用这个版本看看,我把版本号码升级到了6.255
点击此处下载 ourdev_552438.rar(文件大小:16K) (原文件名:hex.rar)
期待你的反馈。 回复【3楼】yystype
支持新的avr32 studio 2.5/iar for avr32 吗?
我用snail emulator连iar,报jtagice mkii版本低于6.06; avr32 studio 2.5提示升级,不升级可以下载程序但调试的时候提示"no emulator attached."。
看了看你的代码,主要数据包转发到atmega32了,mkii版本应该是snil mkii报出的,不知lz使用哪个版本的avr32 studio? 有没有试过iar?如何解决版本低于6.06的问题?
-----------------------------------------------------------------------
我用AVR32 Studio 2.5/GNU Toolchain 2.4.2,IAR没试过,不过IAR据说串口也可以调试,也就不用折腾了。
傻孩子发布的Snail Emulator新固件,解决了版本号的问题。
由于USB不需要更改串口通讯速率,所以Snail默认是在19200,现在这个程序是判断Sign Out数据包,然后追加发送Set Parameter指令给Snail Emulator,把串口通讯速率改回115200。所以即使傻孩子没解决,理论上也可以用同样的手法,在STM32中把数据包中的版本号和CRC改掉再发给PC。 谢谢ls两位的回复。
傻孩子的新固件解决了版本号问题,IAR可以用了,我的AVR32 Studio2.5 debug 问题依旧,还是说"no emulator attached.", 有趣的是用run就可以下载程序到MCU,按一下目标板上的Reset button,程序就会运行.
Project 的设置中
run configuration/Main (tab)/Run options 框,
Run from reset vector
Reset MCU
Start executing
都已经被选中,而run configuration/Debugger(tab)/"Stop on startup at"未选中,不知为何目标板上非要按Reset才会运行。
Run的Console output:
Connected to JTAGICE mkII version 6.255, 6.255 at COM2.
Programming 9084 bytes in 4 segments.
Resetting CPU.
CPU resumes execution at 0x80000000.
不知道AVR32 Stuido用串口连snail mkII为什么Run可以而debug不可以。使用5.37旧版固件时,在program目标芯片(此处使用UC3B0256)时会在Verify的时候fail掉,而新版本6.255不会。Good job.
Anyway,非常感谢傻孩子的新固件。
AVR32 Studio的debug用串口我没有试出来,好在知道有gzhuli的方案,great! 回复【8楼】yystype
-----------------------------------------------------------------------
AVR32 Studio本来就不支持串口仿真,因为要移植RT-Thread,没仿真搞内核太痛苦,无奈之下才出此下策。 似乎关注的人不多,再添点柴:预告一下,USB Composite Device固件已完成,利用预留的串口,同时实现Snail和虚拟串口,一物两用,调试不再累赘!
代码梳理后更新,敬请期待。 to 【10楼】 gzhuli 咕唧霖
顶~ 真强人呀!! 支持一下 支持一下 顶 顶 哇,这个太酷啦! 2010-05-13更新
1.使用USB IAD复合设备,同时实现Snail Emulator和虚拟串口
2.USART改用DMA发送(主要给main loop减负,性能并无大提升)
3.因IAD改变了设备ID,驱动可能需要手工选择(浏览计算机以查找驱动程序软件 -> 从计算机的设备驱动程序列表中选择 -> 厂商Atmel Corp. -> 型号JTAGICE mkII)
源代码 ourdev_553763.zip(文件大小:191K) (原文件名:jtagice_mkii_emulator.zip)
GCC编译的固件 ourdev_553764.zip(文件大小:13K) (原文件名:jtagice_mkii_emulator_hex.zip)
虚拟串口驱动 ourdev_553770.zip(文件大小:778字节) (原文件名:snail_cdc.zip)
傻孩子如果方便的话麻烦把这个版本更新到楼主位吧。 帮你更新了,顶一下~
考虑过通过CDC支持原本SEK支持的JTAGICE模式么?使用CDC也可以继续用AVR Snail对
M32里面的程序进行更新…… 既然是用STM32模拟串口,为何不直接用PL2303或者CP2102呢 真厉害啊 很强大呀 mark to 【21楼】 fengpc
你没有理解楼主的意图。模拟的串口是无法在AVR32 Studio下仿真的。 学习一下 听说部分AVR32流产了。
AVR 8位赶紧恢复正常哈~~~真是受不了啊。。。 回复【21楼】fengpc
既然是用stm32模拟串口,为何不直接用pl2303或者cp2102呢
-----------------------------------------------------------------------
是用stm32把pl2303或者cp2102替代了。
另:也是可以用stm32把M32替代了吧?一个芯片搞定。 回复【20楼】Gorgon Meducer 傻孩子
考虑过通过cdc支持原本sek支持的jtagice模式么?使用cdc也可以继续用avr snail对
m32里面的程序进行更新……
-----------------------------------------------------------------------
现在这个硬件上我没有设计任何跳线,所以要跑回CDC模式,需要刷个CDC的固件。
因为这个硬件最初纯粹是按自己的需求来设计的,手上JLINK和USBASP都有,为了尽量节省PCB面积(当时JLC做5*5以内板子才50)就只留了两个MCU的编程口,完全没考虑bootloader这些问题,连STM32的BOOT0脚都是接死的。理论上,加个跳线,代码稍微patch一下就可以做到随时切换USB模式和COM模式。
回复【21楼】fengpc
既然是用stm32模拟串口,为何不直接用pl2303或者cp2102呢
-----------------------------------------------------------------------
标题已经说了:非USB模拟串口,因为AVR32 Studio仿真只认USB接口的JTAGICE mkII,虽然USB口和串口的上层协议是一致的。
正因为这个原因,所以当初才有这个念头,用STM32做个简单的接口转接,骗过AVR32 Studio来实现调试。
当时是这么考虑的:Snail Emulator Kit原设计用的FT232也要二十多一片,STM32F103CBT6才十几,就算这个做法行不通,用个CDC固件代替FT232也不亏呀~ :)
回复【28楼】xiaorunyi 萧润逸
另:也是可以用stm32把m32替代了吧?一个芯片搞定。
-----------------------------------------------------------------------
理论上是可以,只是我懒得折腾JTAGICE mkII协议和AVR32 JTAG状态机,尤其是据说协议中还有不少未公开的操作,分析起来太费时,所以就直接借Snail的东风了,不做重复劳动嘛。 如果与 Gorgon Meducer 傻孩子 合作一下,把mkII的程序移植到stm32上面单片搞定就完美了,毕竟stm32的速度比AVR快好多,仿真速度能提上去吧~~~
没用AVR两三年,现在的开源开发工具发展到怎样不大清楚了 这个可以顶 回复【30楼】fengpc
如果与 gorgon meducer 傻孩子 合作一下,把mkii的程序移植到stm32上面单片搞定就完美了,毕竟stm32的速度比avr快好多,仿真速度能提上去吧~~~
没用avr两三年,现在的开源开发工具发展到怎样不大清楚了
-----------------------------------------------------------------------
貌似Versaloon的作者SimonQian和傻孩子合作搞过STM32的mk2,前两天他才说速度主要受限于协议本身,看意思是STM32也不会快很多。
或许无机酸和roasn他们在研究的multijtager用FPGA做JTAG状态机,速度才会好点吧。
其实现在SEK也够用了,只是用完JLINK再用SEK的话,单步跟踪速度会有很明显的落差,时间长了就习惯了,只要断点下得准,其实也不会多费很多时间。 毕竟SEK是一个用 洞洞板+DIP封装的M32芯片就可以搞定的东西,主要目的是简易,降低开发门槛。 回复【33楼】Gorgon Meducer 傻孩子
毕竟sek是一个用 洞洞板+dip封装的m32芯片就可以搞定的东西,主要目的是简易,降低开发门槛。
-----------------------------------------------------------------------
呵呵,我的第一个SEK就是用STM32三合一小板做CDC,TQFP64转换板搭棚搞出来的,还是用5块钱一片的拆机M32,随手凑起来就能用。 呼叫 gzhuli,请联系我,有事找你帮忙。用QQ或者邮件都可以。 COOL ! 标记一下!!回来用到在学习!! mark 多谢分享!!!!!! 支持一下,呵呵 有便宜的 仿真器了。。。 多谢楼主分享 好东西啊!!! mark!!!!!! mark,thanks. {:smile:}{:smile:}{:smile:} {:smile:}{:smile:}{:smile:} {:smile:}{:smile:}{:smile:}{:smile:} {:smile:}{:smile:}{:smile:}{:smile:}{:smile:}{:smile:}{:smile:} {:smile:}{:smile:}{:smile:}{:smile:}{:smile:}{:smile:}{:smile:}{:smile:} 好东西~~谢楼主~~ 谢谢分享,正需要,下载看看!!! 好资料~~谢谢楼主~~ 厉害,支持一下 本帖最后由 bdllllll 于 2014-1-2 17:13 编辑
请问大侠:可以在Atmel Studio 6下工作吗? 给楼主点个赞! yystype 发表于 2010-5-8 09:58
EVK1104上有一片AT32UC3B1256作UART+JTAG,或许也可以做个参考。
EVK1104上的只能做UART。原理图上有JTAG口。但好像不能仿真。 学习一下,谢谢分享! 几年前的强贴,不错,居然还被翻出来了
页:
[1]