经过了不断的努力,已经实现了几种MCU的支持了。自己也对Versaloon的能力有了进一步的了解和信心。
Versaloon也一直努力着成为一个简单的USB转接线,当然,是可以支持各种接口的转接线。对于一些MCU或者EEPROM或者Flash的支持的算法,完全在上位机上实现。这个是灵活性的根源,因为同一个接口(或者几个接口的配合),更具上位机实现的不同,可以具有各种不同的功能。
居于这个目的,准备略微修改一下目前的USB协议:
0x00 -- 0x0F:通用命令,如得到版本号和支持信息、离线编程支持、固件更新等命令。
0x10 -- 0x1F:内置的编程算法,目前AVR、AVR32以及以后的XMega都是在这个区域的。
0x20 -- 0x7F:USB_TO_XXX,灵活性的体现,使用通用的命令格式
0x20 -- 0x3F:通用单片机外围接口,如SPI、I2C、ADC、GPIO、USART等
0x40 -- 0x5F:特定的MCU编程接口,如JTAG(HighLevel)、C2、ISSP等
0x60 -- 0x7E:预留特殊用途接口
0x7F:USB_TO_ALL,用于连接所有的接口
0x80 -- 0xFF:特定的支持,目前OpenOCD的支持在这个区域(以后会移植到0x60-0x7E的区域)。
对于这个通用USB_TO_XXX的接口,尽量将使用如下简单的通用命令和回复:
命令(所有的接口简单的抽象为数据流):
USB_TO_XXX_INIT 初始化<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
USB_TO_XXX_CONFIG 配置
USB_TO_XXX_FINI 终止化
USB_TO_XXX_IN_OUT 输入输出流(用于SPI这样的同步接口)
USB_TO_XXX_IN 输入流
USB_TO_XXX_OUT 输出流
回复:
USB_TO_XXX_SUCCESS 成功
USB_TO_XXX_FAIL 失败
USB_TO_XXX_NOT_IMPLEMENTED 未实现
USB_TO_XXX_PARA_ERROR 参数错
USB_TO_XXX_IDX_NOT_EXIST 指定的接口序号不存在
USB_TO_XXX_DATA 返回数据流
这个完成后,所有的功能的实现就只是基于通用的USB_TO_XXX接口上了。
当然,这个只是USB协议的更新,对目前最新的RC3正式版本的硬件没有影响。
用户131114 2008-11-19 13:33
用户146821 2008-11-18 22:43