gzhuli 发表于 2010-5-7 17:19:53

[开源] 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)

1181zjf 发表于 2010-5-7 17:24:23

很有意义。

rainbow 发表于 2010-5-7 20:22:51

gzhuli 咕唧霖好强啊!

yystype 发表于 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的问题?

yystype 发表于 2010-5-8 09:58:14

EVK1104上有一片AT32UC3B1256作UART+JTAG,或许也可以做个参考。

eworker 发表于 2010-5-8 10:07:06

Gorgon_Meducer 发表于 2010-5-8 17:45:37

to 【4楼】 yystype
    你用这个版本看看,我把版本号码升级到了6.255
点击此处下载 ourdev_552438.rar(文件大小:16K) (原文件名:hex.rar)
    期待你的反馈。

gzhuli 发表于 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。

yystype 发表于 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!

gzhuli 发表于 2010-5-9 07:17:31

回复【8楼】yystype
-----------------------------------------------------------------------

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

gzhuli 发表于 2010-5-13 06:54:53

似乎关注的人不多,再添点柴:预告一下,USB Composite Device固件已完成,利用预留的串口,同时实现Snail和虚拟串口,一物两用,调试不再累赘!
代码梳理后更新,敬请期待。

Gorgon_Meducer 发表于 2010-5-13 09:26:27

to 【10楼】 gzhuli 咕唧霖
    顶~

wangxiaoacc 发表于 2010-5-13 10:46:46

真强人呀!!

_yuming 发表于 2010-5-13 11:14:48

支持一下

yixin 发表于 2010-5-13 11:27:22

支持一下

lwy86 发表于 2010-5-13 12:05:42

liumaojun_cn 发表于 2010-5-13 12:23:15

crazy_stone 发表于 2010-5-13 13:41:35

哇,这个太酷啦!

gzhuli 发表于 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)

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

Gorgon_Meducer 发表于 2010-5-14 09:59:38

帮你更新了,顶一下~
考虑过通过CDC支持原本SEK支持的JTAGICE模式么?使用CDC也可以继续用AVR Snail对
M32里面的程序进行更新……

fengpc 发表于 2010-5-14 10:54:55

既然是用STM32模拟串口,为何不直接用PL2303或者CP2102呢

watch1030 发表于 2010-5-14 10:59:55

真厉害啊

cat_li 发表于 2010-5-14 11:02:01

很强大呀

gpzdc986 发表于 2010-5-14 11:02:09

mark

Gorgon_Meducer 发表于 2010-5-14 11:44:31

to 【21楼】 fengpc
    你没有理解楼主的意图。模拟的串口是无法在AVR32 Studio下仿真的。

lj2505 发表于 2010-5-14 11:50:35

学习一下

benladn911 发表于 2010-5-14 12:01:29

听说部分AVR32流产了。

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

xiaorunyi 发表于 2010-5-14 12:38:05

回复【21楼】fengpc
既然是用stm32模拟串口,为何不直接用pl2303或者cp2102呢
-----------------------------------------------------------------------

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


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

gzhuli 发表于 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的东风了,不做重复劳动嘛。

fengpc 发表于 2010-5-14 18:41:40

如果与 Gorgon Meducer 傻孩子 合作一下,把mkII的程序移植到stm32上面单片搞定就完美了,毕竟stm32的速度比AVR快好多,仿真速度能提上去吧~~~
没用AVR两三年,现在的开源开发工具发展到怎样不大清楚了

avrpicarm 发表于 2010-5-14 18:46:47

这个可以顶

gzhuli 发表于 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的话,单步跟踪速度会有很明显的落差,时间长了就习惯了,只要断点下得准,其实也不会多费很多时间。

Gorgon_Meducer 发表于 2010-5-15 16:04:32

毕竟SEK是一个用 洞洞板+DIP封装的M32芯片就可以搞定的东西,主要目的是简易,降低开发门槛。

gzhuli 发表于 2010-5-16 05:59:01

回复【33楼】Gorgon Meducer 傻孩子
毕竟sek是一个用 洞洞板+dip封装的m32芯片就可以搞定的东西,主要目的是简易,降低开发门槛。
-----------------------------------------------------------------------

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

Gorgon_Meducer 发表于 2010-5-17 21:56:33

呼叫 gzhuli,请联系我,有事找你帮忙。用QQ或者邮件都可以。

armok 发表于 2012-3-26 14:18:06

COOL !

zhenglu891028 发表于 2012-4-13 13:59:57

标记一下!!回来用到在学习!!

ericl_Q 发表于 2012-7-18 20:21:55

mark                  

aitchow 发表于 2012-11-28 10:36:30

多谢分享!!!!!!

yunshuhualei 发表于 2012-12-21 09:50:35

支持一下,呵呵

richards 发表于 2012-12-21 12:20:39

有便宜的 仿真器了。。。

崆峒 发表于 2013-4-6 19:44:18

多谢楼主分享

HBBMAKEIT 发表于 2013-4-19 20:02:17

好东西啊!!!

jarodzz 发表于 2013-4-21 03:48:55

mark!!!!!!

jlian168 发表于 2013-4-22 14:03:46

mark,thanks.

389704844 发表于 2013-4-24 12:26:16

{:smile:}{:smile:}{:smile:}

389704844 发表于 2013-4-24 12:28:35

{:smile:}{:smile:}{:smile:}

389704844 发表于 2013-4-24 12:29:26

{:smile:}{:smile:}{:smile:}{:smile:}

389704844 发表于 2013-4-24 12:31:13

{:smile:}{:smile:}{:smile:}{:smile:}{:smile:}{:smile:}{:smile:}

389704844 发表于 2013-4-24 12:31:57

{:smile:}{:smile:}{:smile:}{:smile:}{:smile:}{:smile:}{:smile:}{:smile:}

liudongyu 发表于 2013-11-2 11:33:44

好东西~~谢楼主~~

奮闘ing 发表于 2013-11-2 15:22:12

谢谢分享,正需要,下载看看!!!

liudongyu 发表于 2013-11-2 18:40:47

好资料~~谢谢楼主~~

Eric321 发表于 2013-11-25 17:55:10

厉害,支持一下

bdllllll 发表于 2014-1-2 16:14:28

本帖最后由 bdllllll 于 2014-1-2 17:13 编辑

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

muyitaozhi 发表于 2014-8-27 17:07:59

给楼主点个赞!

StoneSun 发表于 2015-2-12 21:39:00

yystype 发表于 2010-5-8 09:58
EVK1104上有一片AT32UC3B1256作UART+JTAG,或许也可以做个参考。

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

翔宇 发表于 2015-2-13 10:53:29

学习一下,谢谢分享!

weiwei4 发表于 2015-2-13 14:20:34

几年前的强贴,不错,居然还被翻出来了
页: [1]
查看完整版本: [开源] USB版Snail Emulator(非USB模拟串口,支持AVR32 Studio仿真)