versaloon开源版本发布 -- 包括Versaloon固件和一个CDC工具

发布: 2009-9-28 18:59 | 作者: simonqian | 来源: StmFans思蜕盟 OPELC 自由电子联盟

[i=s] 本帖最后由 simonqian 于 2009-12-24 13:35 编辑

注意:本贴不得转载,如果要再其它网站发布,会由本人亲自发布。
以前发布的版本只是自己使用的,现在发布的版本是提供给欧洲一家公司的,经过了一定的测试。
当然,不排除还有一些BUG,可以在本帖交流。

说明:
这个版本基于Versaloon_Mini硬件。目前的开源版本实现了vsllink(OpenOCD下的VerSaloon_Link),可以作为JTAG调试工具(目前支持IAR新版本,GCC Toolchain),可以作为CDC串口使用(半双工下921600,全双工下115200),具有USB_TO_XXX的部分功能(USB_TO_SPI、USB_TO_GPIO、USB_TO_DELAY、USB_TO_IIC、USB_TO_ADC,以后会加入USB_TO_SWIM和USB_TO_MICROWIRE)。其中,USB_TO_SPI、USB_TO_IIC、USB_TO_MICROWIRE可以用于ST的串行EEPROM。

开源协议(适用于Versaloon开源固件代码,以及衍生出来的USB转串口(带/不带 U盘)固件代码):
带有附加协议的GPLv3,开源代码只得用于Versaloon硬件上,只得个人使用,未经许可不得用于任何其它目的。
Versaloon的开源硬件同样只得个人使用,未经许可不得用于任何其它目的。

Windows下的程序和驱动:

executable_win32.zip
(2009-12-24 13:31:06, Size: 1.73 MB, Downloads: 17)


关于驱动:
按键按下后,运行更新程序,插入电脑后需使用stmcdc.inf驱动
不按按键,运行Versaloon程序,使用VCOM.inf驱动的话,可作为编程器使用;使用stmcdc.inf驱动的话,可作为USB转串口工具使用。
simonqian (2009-9-28 19:00:01)
[i=s] 本帖最后由 simonqian 于 2009-11-5 18:24 编辑

先发布的是USB转串口的代码,并且可以集成一个MSC的U盘(可同时操作,只是同时操作的时候,速度会慢),根据自己的测试方法还算稳定,但是不排除还有其他BUG。
编译环境:IAR EWARM 5.40 KS
代码(2009-10-09,StdPeriph3.1.0,USBLib3.0.1):已经加入了vsprog中,在dongle\firmware目录下。下载方法(使用SVN):
    svn checkout http://vsprog.googlecode.com/svn/trunk
或者下载http://www.simonqian.com/download/MinGW_configured.7z,解压到C:\,运行C:\msys\1.0\msys.bat,运行如下命令(自动下载代码,并编译安装vsprog):
    cd vsprog && ./update

Flash占用:不带U盘的话,8K;带U盘的话,10K。
RAM占用(CSTACK为1K):不带U盘,2K+USB和串口的缓存;带U盘,3K+USB和串口的缓存。
如果串口缓存设置为1K,USB缓存设置为2K,U盘为3K(BOOT区、FAT表、根目录各占1K,总共占用6KFlash)的话,可以使用STM32F103C4(16K Flash/6K RAM)。

配置说明:
1. 目标芯片(最低可以支持STM32F103C4)
    在Projects\CDC\EWARM5.40目录下,用EWARM5.40打开Versaloon.eww项目文件,在项目选项中的Target里,选择对应的芯片。并且需要设置对应的驱动文件。
    在Linker选项中的配置文件中做相应的设置。
    如果使用了自己写的Bootloader,那么还需要修改HW\HW.c文件中的NVIC_Configuration函数中的NVIC_SetVectorTable部分,并修改Link配置文件中的Flash起始地址。
2. 功能配置(Projects\CDC\app_cfg.h)
    使能U盘:USB_WITH_MASSSTORAGE,为1表示使能
    设置U盘数据区的起始地址:MSD_MEMORY_START_ADDR,设置在固件之后,按照芯片的block大小对齐。
    设置USB缓存大小:USB_DATA_BUFF_SIZE,剩多少RAM就用多少。
    设置串口缓存大小:ASYN_DATA_BUFF_SIZE,在921600bps下,10ms的数据不到1K,所以这个使用1K就够了。
    U盘的容量设置:这个是需要修改U盘的第一个扇区的第0x13位置的16位数据(单位为K字节,因为扇区大小为1K字节),U盘的镜像为udisk\image(1024).bin。容量设置错误引起的问题,自己负责,见4。
3. 驱动
    Windows下:
    带MSC:driver\win32\stmcdc_with_MSC.inf,这一个文件就够了,其他文件都不需要。U盘可以自动设别。
    不带MSC:driver\win32\stmcdc.inf
    Linux下(Ubuntu8.04LTS):不需要驱动,都认得出,dmesg输出:
[  629.190514] usb 2-1: USB disconnect, address 2
[ 1266.002694] usb 2-1: new full speed USB device using uhci_hcd and address 3
[ 1266.210652] usb 2-1: configuration #1 chosen from 1 choice
[ 1266.251548] scsi6 : SCSI emulation for USB Mass Storage devices
[ 1266.252503] /build/buildd/linux-2.6.24/drivers/usb/class/cdc-acm.c: This device cannot do calls on its own. It is no modem.
[ 1266.252529] cdc_acm 2-1:1.1: ttyACM0: USB ACM device
[ 1266.253092] usb-storage: device found at 3
[ 1266.253097] usb-storage: waiting for device to settle before scanning
[ 1271.247774] usb-storage: device scan complete
[ 1271.250751] scsi 6:0:0:0: Direct-Access     Simon    FDonVCOM         1.0  PQ: 0 ANSI: 2
[ 1271.262727] sd 6:0:0:0: [sdb] 98 1024-byte hardware sectors (0 MB)
[ 1271.265707] sd 6:0:0:0: [sdb] Write Protect is off
[ 1271.265714] sd 6:0:0:0: [sdb] Mode Sense: 03 00 00 00
[ 1271.265718] sd 6:0:0:0: [sdb] Assuming drive cache: write through
[ 1271.274698] sd 6:0:0:0: [sdb] 98 1024-byte hardware sectors (0 MB)
[ 1271.277695] sd 6:0:0:0: [sdb] Write Protect is off
[ 1271.277700] sd 6:0:0:0: [sdb] Mode Sense: 03 00 00 00
[ 1271.277704] sd 6:0:0:0: [sdb] Assuming drive cache: write through
[ 1271.277710]  sdb: unknown partition table
[ 1271.306735] sd 6:0:0:0: [sdb] Attached SCSI removable disk
[ 1271.306805] sd 6:0:0:0: Attached scsi generic sg2 type 0
4. OOXX
      U盘实现代码中,去掉了对flash容量的检测,也就是说,如果设置的容量大于芯片内Flash的实际容量的话,程序可以继续运行。这样就可以OOXX了,实际测试下来,64K的STM32F103C8实际的容量可以达到128K。其他的芯片就自己去测试吧,估计还要多做做好事,攒攒人品,希望芯片不是因为Flash问题而变成小容量版本的。
5. 串口速度测试
    目前代码的实现方式下,偶这里测试下来,用921600的速度下载MTK代码到手机里去,速度为49KB/s - 50KB/s,使用PL2303的话,速度是47KB/s -48KB/s。性能上也可以领先了。而且,PL2303的串口接收缓冲很小,基本上用Versaloon给PL2303发送几百字节数据,PL2303就要丢失数据了;而用PL2303发送数据,Versaloon没有丢数据的现象(串口接收使用最高优先级的中断,正常情况下,不会丢数据,并且缓存设置为10ms+的数据余量)。当然,和PL2303本来就不是一个成本的东西,没什么可比性。
6. 版权
    本USB转串口是免费开源软件,但只可以个人自己使用,不得用于其它任何目的。



Versaloon固件也已经加入(Projects\Versaloon)。
simonqian (2009-9-28 19:00:54)
3楼是使用说明,兼FAQ和广告位。。。。。。
pepsi360 (2009-9-30 17:21:15)
期待啊,呵呵呵
hqgboy (2009-10-08 13:52:30)
等消息啊 。。。。。。
binglin (2009-11-01 23:20:18)
顶一把。
simonqian (2009-11-05 18:20:29)
[i=s] 本帖最后由 simonqian 于 2009-11-5 18:21 编辑

多谢支持
量产版本的硬件已经定型并发布(trunk/dongle/hardware目录下),进度正常的话,下周可以买到外壳,交付工厂加工。
之后会准备Versaloon的中英文论坛,方便使用者交流。

原来计划在国内销售的10套Versaloon-Pro版本硬件,将尽快准备好,价格范围仍旧是原先说的150-200的范围内。当然,根据硬件部分的开源协议中的说明(trunk/dongle/hardware/license),可免费供个人DIY使用。