vsprog是自己实现的用于支持一些MCU的ISP功能的上位机程序,目前已经可以支持S51/S52和PSoC。使用纯C语言实现的命令行界面,可以在Windows和Linux(在Ubuntu8.04上测试)下编译通过,只需要修改app_cfg.h中的_COMPILER和_PLATFORM即可(目前Linux下直接make,Windows下使用VS2008Express)。
vsprog使用2个重要的结构。一个是programmer_info_t,定义了一个编程器。另一个是target_info_t定义了一种目标芯片。
target_info_t定义了操作一种目标芯片所需要的数据和函数,可以在target目录下增加一个子目录,并添加代码实现这个结构需要的函数,并给target目录下的target.c文件中的targets_info数组增加一个对应的target_info_t元素即可。
programmer_info_t定义了各种操作函数(比如spi,gpio,jtag,issp...),当然并不是所有的编程器都可以支持这些功能的,可以通过结构中的interfaces成员来定义支持的接口。同样在programmer目录下增加一个子目录,编写这些函数的代码,并给programmer.c文件中的programmers_info数组增加一个元素即可。当然,只需要指定.name,.parse_argument和.init_capability即可,其他接口函数和支持的功能由init_capability初始化(不然随着以后支持更多的芯片,这个结构要长到N长了(我本人非常理解为什么Linux代码中有那么多BT的结构--都是为了增加一些支持和功能,一点一点变长的);GCC 2.95以后的版本可以支持.name方式初始化结构成员,但VC不行,所以只有让编程器的驱动编写者来初始化支持的接口和函数指针了)。
这样做的好处很明显,可以比较简单的增加各种MCU和编程器的支持。并且,代码基本可以直接移植到编程器中,来实现离线编程功能。
最近比较忙,有空之后测试一下S52的支持,先发布支持S52的vsprog。
PSoC的支持代码可能做在一个链接库里,在vsprog里只是实现一个简单的代理。
如果对这个实现方式有什么建议,可以站内短信我。
当然,如果有兴趣增加某些芯片或者编程器的支持的话,也可以联系我。
上图先:
S51/S52 Support:
PSoC Support:
C8051F_JTAG Support:
预览代码已经发布在versaloon的小组里。
节后准备发布Beta版本。
用户131114 2008-9-25 00:04
用户131114 2008-9-24 16:15
用户131114 2008-9-24 16:13