Versaloon使用了比较通用的方式处理USB接口的数据。这样,其实对于Versaloon中的各个模块而言,USB接口是“透明”的,所以增加其他的支持而比较简单。一般之需要实现如下的接口函数就可以了:
Versaloon_XXXX(uint8* cmd, uint16 len);
这个函数里需要设置buffer_out的数据,并设置rep_len大小,函数退出后,Versaloon的构架自动会发送rep_len大小的返回数据。
目前已经使用的USB接口命令:
0x00 -- 0x0F : 通用命令,比如得到Versaloon的版本信息,和USB缓存长度等信息;设置离线编程的数据。
0x10 -- 0x1F : 各种MCU的编程或者调试的命令
0x20 -- 0x2F : USB_TO_XXX接口
0x80 -- 0xFF : 通用JTAG命令接口,目前已经可以通过OpenOCD的支持来支持ARM7,ARM9,ARM11,Cortex,XSCALE等芯片(可能将来还会支持MSP等处理器),当然,我没有那么多芯片,只是在部分型号上做的测试,目前测试过LPC21xx和STM32F的芯片,都可以支持。
对于上位机的开发:
基本基于一个原则,就是使用免费开放的开发环境,并且需要具有多平台的支持能力。
所以,程序基本上在Linux下实现,并且需要考虑Windows和Mac等平台。USB接口使用libusb。各个MCU支持的程序使用CLI界面,CLI程序的输出信息格式统一,方便GUI程序解析。GUI程序使用wxWidgets构架,当然,如果有人有兴趣的话,也可以使用Lazarus(这个使用Pascal语言,我这里测试下来发现虽然具有多平台的支持特性,但各个平台上的程序实例总有一些区别,并且字体问题解决了都不太好)。
如果你有兴趣,增加Versaloon的功能,可以直接联系我,代码测试没有问题的话,可以加到Versaloon中去(以contributor的方式)
文章评论(0条评论)
登录后参与讨论