搜索
bottom↓
回复: 59

[开源] USB版Snail Emulator(非USB模拟串口,支持AVR32 Studio仿真)

[复制链接]

出0入618汤圆

发表于 2010-5-7 17:19:53 | 显示全部楼层 |阅读模式

[相关说明]


    由于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工程。



原理图


实物图(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)

阿莫论坛20周年了!感谢大家的支持与爱护!!

阿莫论坛才是最爱国的,关心国家的经济、社会的发展、担心国家被别国牵连卷入战争、知道珍惜来之不易的和平发展,知道师夷之长,关注世界的先进文化与技术,也探讨中国文化的博大精深,也懂得警惕民粹主义的祸国殃民等等等等,无不是爱国忧民的表现。(坛友:tianxian)

出0入0汤圆

发表于 2010-5-7 17:24:23 | 显示全部楼层
很有意义。

出10入210汤圆

发表于 2010-5-7 20:22:51 | 显示全部楼层
gzhuli 咕唧霖好强啊!

出0入0汤圆

发表于 2010-5-8 09:38:44 | 显示全部楼层
支持新的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的问题?

出0入0汤圆

发表于 2010-5-8 09:58:14 | 显示全部楼层
EVK1104上有一片AT32UC3B1256作UART+JTAG,或许也可以做个参考。

出0入0汤圆

发表于 2010-5-8 10:07:06 | 显示全部楼层

出0入296汤圆

发表于 2010-5-8 17:45:37 | 显示全部楼层
to 【4楼】 yystype
    你用这个版本看看,我把版本号码升级到了6.255
点击此处下载 ourdev_552438.rar(文件大小:16K) (原文件名:hex.rar)
    期待你的反馈。

出0入618汤圆

 楼主| 发表于 2010-5-8 18:54:04 | 显示全部楼层
回复【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。

出0入0汤圆

发表于 2010-5-9 03:49:53 | 显示全部楼层
谢谢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!

出0入618汤圆

 楼主| 发表于 2010-5-9 07:17:31 | 显示全部楼层
回复【8楼】yystype  
-----------------------------------------------------------------------

AVR32 Studio本来就不支持串口仿真,因为要移植RT-Thread,没仿真搞内核太痛苦,无奈之下才出此下策。

出0入618汤圆

 楼主| 发表于 2010-5-13 06:54:53 | 显示全部楼层
似乎关注的人不多,再添点柴:预告一下,USB Composite Device固件已完成,利用预留的串口,同时实现Snail和虚拟串口,一物两用,调试不再累赘!
代码梳理后更新,敬请期待。

出0入296汤圆

发表于 2010-5-13 09:26:27 | 显示全部楼层
to 【10楼】 gzhuli 咕唧霖
    顶~

出0入0汤圆

发表于 2010-5-13 10:46:46 | 显示全部楼层
真强人呀!!

出0入0汤圆

发表于 2010-5-13 11:14:48 | 显示全部楼层
支持一下

出0入0汤圆

发表于 2010-5-13 11:27:22 | 显示全部楼层
支持一下

出0入4汤圆

发表于 2010-5-13 12:05:42 | 显示全部楼层

出0入0汤圆

发表于 2010-5-13 12:23:15 | 显示全部楼层

出0入0汤圆

发表于 2010-5-13 13:41:35 | 显示全部楼层
哇,这个太酷啦!

出0入618汤圆

 楼主| 发表于 2010-5-13 19:40:23 | 显示全部楼层
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)

傻孩子如果方便的话麻烦把这个版本更新到楼主位吧。

出0入296汤圆

发表于 2010-5-14 09:59:38 | 显示全部楼层
帮你更新了,顶一下~
考虑过通过CDC支持原本SEK支持的JTAGICE模式么?使用CDC也可以继续用AVR Snail对
M32里面的程序进行更新……

出0入0汤圆

发表于 2010-5-14 10:54:55 | 显示全部楼层
既然是用STM32模拟串口,为何不直接用PL2303或者CP2102呢

出0入0汤圆

发表于 2010-5-14 10:59:55 | 显示全部楼层
真厉害啊

出0入0汤圆

发表于 2010-5-14 11:02:01 | 显示全部楼层
很强大呀

出0入0汤圆

发表于 2010-5-14 11:02:09 | 显示全部楼层
mark

出0入296汤圆

发表于 2010-5-14 11:44:31 | 显示全部楼层
to 【21楼】 fengpc
    你没有理解楼主的意图。模拟的串口是无法在AVR32 Studio下仿真的。

出0入0汤圆

发表于 2010-5-14 11:50:35 | 显示全部楼层
学习一下

出0入0汤圆

发表于 2010-5-14 12:01:29 | 显示全部楼层
听说部分AVR32流产了。

AVR 8位赶紧恢复正常哈~~~真是受不了啊。。。

出0入0汤圆

发表于 2010-5-14 12:38:05 | 显示全部楼层
回复【21楼】fengpc  
既然是用stm32模拟串口,为何不直接用pl2303或者cp2102呢
-----------------------------------------------------------------------

是用stm32把pl2303或者cp2102替代了。


另:也是可以用stm32把M32替代了吧?一个芯片搞定。

出0入618汤圆

 楼主| 发表于 2010-5-14 18:19:36 | 显示全部楼层
回复【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的东风了,不做重复劳动嘛。

出0入0汤圆

发表于 2010-5-14 18:41:40 | 显示全部楼层
如果与 Gorgon Meducer 傻孩子 合作一下,把mkII的程序移植到stm32上面单片搞定就完美了,毕竟stm32的速度比AVR快好多,仿真速度能提上去吧~~~
没用AVR两三年,现在的开源开发工具发展到怎样不大清楚了

出0入0汤圆

发表于 2010-5-14 18:46:47 | 显示全部楼层
这个可以顶

出0入618汤圆

 楼主| 发表于 2010-5-14 18:58:31 | 显示全部楼层
回复【30楼】fengpc
如果与 gorgon meducer 傻孩子 合作一下,把mkii的程序移植到stm32上面单片搞定就完美了,毕竟stm32的速度比avr快好多,仿真速度能提上去吧~~~
没用avr两三年,现在的开源开发工具发展到怎样不大清楚了
-----------------------------------------------------------------------

貌似Versaloon的作者SimonQian和傻孩子合作搞过STM32的mk2,前两天他才说速度主要受限于协议本身,看意思是STM32也不会快很多。
或许无机酸和roasn他们在研究的multijtager用FPGA做JTAG状态机,速度才会好点吧。
其实现在SEK也够用了,只是用完JLINK再用SEK的话,单步跟踪速度会有很明显的落差,时间长了就习惯了,只要断点下得准,其实也不会多费很多时间。

出0入296汤圆

发表于 2010-5-15 16:04:32 | 显示全部楼层
毕竟SEK是一个用 洞洞板+DIP封装的M32芯片就可以搞定的东西,主要目的是简易,降低开发门槛。

出0入618汤圆

 楼主| 发表于 2010-5-16 05:59:01 | 显示全部楼层
回复【33楼】Gorgon Meducer 傻孩子
毕竟sek是一个用 洞洞板+dip封装的m32芯片就可以搞定的东西,主要目的是简易,降低开发门槛。
-----------------------------------------------------------------------

呵呵,我的第一个SEK就是用STM32三合一小板做CDC,TQFP64转换板搭棚搞出来的,还是用5块钱一片的拆机M32,随手凑起来就能用。

出0入296汤圆

发表于 2010-5-17 21:56:33 | 显示全部楼层
呼叫 gzhuli,请联系我,有事找你帮忙。用QQ或者邮件都可以。
头像被屏蔽

出0入0汤圆

发表于 2012-3-26 14:18:06 | 显示全部楼层
COOL !

出0入0汤圆

发表于 2012-4-13 13:59:57 | 显示全部楼层
标记一下!!回来用到在学习!!

出0入0汤圆

发表于 2012-7-18 20:21:55 | 显示全部楼层
mark                    

出0入0汤圆

发表于 2012-11-28 10:36:30 | 显示全部楼层
多谢分享!!!!!!

出0入0汤圆

发表于 2012-12-21 09:50:35 | 显示全部楼层
支持一下,呵呵

出0入0汤圆

发表于 2012-12-21 12:20:39 | 显示全部楼层
有便宜的 仿真器了。。。

出0入0汤圆

发表于 2013-4-6 19:44:18 | 显示全部楼层
多谢楼主分享

出0入0汤圆

发表于 2013-4-19 20:02:17 | 显示全部楼层
好东西啊!!!

出0入0汤圆

发表于 2013-4-21 03:48:55 | 显示全部楼层
mark!!!!!!

出0入0汤圆

发表于 2013-4-22 14:03:46 | 显示全部楼层
mark,thanks.

出0入0汤圆

发表于 2013-4-24 12:26:16 | 显示全部楼层

出0入0汤圆

发表于 2013-4-24 12:28:35 | 显示全部楼层

出0入0汤圆

发表于 2013-4-24 12:29:26 | 显示全部楼层

出0入0汤圆

发表于 2013-4-24 12:31:13 | 显示全部楼层

出0入0汤圆

发表于 2013-4-24 12:31:57 | 显示全部楼层

出0入0汤圆

发表于 2013-11-2 11:33:44 | 显示全部楼层
好东西~~谢楼主~~

出0入0汤圆

发表于 2013-11-2 15:22:12 | 显示全部楼层
谢谢分享,正需要,下载看看!!!

出0入0汤圆

发表于 2013-11-2 18:40:47 | 显示全部楼层
好资料~~谢谢楼主~~

出0入0汤圆

发表于 2013-11-25 17:55:10 | 显示全部楼层
厉害,支持一下

出0入0汤圆

发表于 2014-1-2 16:14:28 | 显示全部楼层
本帖最后由 bdllllll 于 2014-1-2 17:13 编辑

请问大侠:可以在Atmel Studio 6下工作吗?

出0入0汤圆

发表于 2014-8-27 17:07:59 | 显示全部楼层
给楼主点个赞!

出0入0汤圆

发表于 2015-2-12 21:39:00 来自手机 | 显示全部楼层
yystype 发表于 2010-5-8 09:58
EVK1104上有一片AT32UC3B1256作UART+JTAG,或许也可以做个参考。

EVK1104上的只能做UART。原理图上有JTAG口。但好像不能仿真。

出0入0汤圆

发表于 2015-2-13 10:53:29 | 显示全部楼层
学习一下,谢谢分享!

出0入13汤圆

发表于 2015-2-13 14:20:34 | 显示全部楼层
几年前的强贴,不错,居然还被翻出来了
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-17 06:53

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表