打印

电子展预演 -- VSF repo,一种奇特的开发分享外包方式

[复制链接]
2667|22
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 Simon21ic 于 2016-3-11 22:12 编辑

本来想在电子展上讲我们做的一些wifi IOT应用,不过后来想想,还是不针对特定项目,说一下我之后想做的一种开发分享甚至是外包方式 -- VSF repo。
其实以前不少人问过关于VSF的推广,即使到目前为止,我也不太想推广VSF。原因很简单,按照之前的找外包和兼职的经验,7-10个人里,只有一个能够用起来的。而对于VSF repo而言,这个问题就不太关键了。当然,虽然VSF repo可以提供一些有意思的特性,但也并不能解决所有问题。
大家可以发表自己的想法。

最近准备做文档了:
https://www.gitbook.com/book/versaloon/vsf-the-definitive-guide

VSF repo是啥?

VSF repo是一个仓库,可以是应用仓库,也可以是组件仓库、协议栈仓库、工具仓库等等。其实在MCU等级的软件开发中,就我所知,很早就有人想怎么做了。比如,几年前和coocox的经理聊的时候,就知道他们在做一些代码仓库,包括各种驱动等等,当然,不知道他们现在做了怎么样了。做这种代码仓库的话,会碰到一些现实的问题,比如,如果我的代码并不想公开,但是我希望别人能够试用,如果测试OK,有意向的话,可以来找我合作,那如果代码都公开了,别人直接自己开发生产就行了。这种情况下,代码仓库就无法解决问题了。甚至一些大公司,也有类似的想法,比如ARM,mbed不就是类似的代码仓库吗?

VSF repo是一个可执行文件的仓库,用户可以下载这些可执行文件,并且安装进自己的系统。这个可执行文件并不一定是最终的应用,可能只是一个tcpip协议栈,xml解析等等的功能模块。那么问题来了,市场上MCU种类辣木多,可能提供一个可执行文件,让那些不同的MCU在不同的硬件环境下使用?答案是。。。。不能。所以:

VSF repo是一个CortexM的可执行文件仓库。至少第一步会只做CortexM的支持,当然,以后也可能针对特定内核实现对应的仓库。那么问题又来了,即使只是CortexM,市场上的芯片种类也不少了,能提供一个可执行文件,在不同的芯片和硬件上跑?答案是。。。。这个可以有。VSF已经实现了,比如一个USB转串口的应用bin文件,可以下载在任何具备USB和串口以及GPIO的CortexM处理器上运行,并且得到一致的功能。但是,各个厂家的芯片,可能针对一些特殊应用,提供了特殊的功能,这些功能是依赖芯片资源的,所以:

VSF repo是一个通用功能的CortexM的可执行文件仓库。这里的通用功能,是指我可以通过通用接口,来实现的功能。比如,通过SPI和GPIO驱动wifi芯片,这个就属于通用功能。还有一些算法,相当于是使用MCU以及RAM来实现的功能,也属于通用功能。不过,需要注意的是,有一些算法对处理器有要求,比如,会要求FPU,那就需要实际处理的支持了,比如用CortexM4F。

这个听上去,像是linux的软件仓库。但是,linux的软件运行,依赖linux系统。VSF repo上的软件运行,也应该要依赖什么吧,不然怎么实现不同的处理器,运行同样的可执行文件?确实,VSF repo,顾名思义,就是利用了我们以前设计的VSF构架中的很多特性,所以:

VSF repo是一个基于VSF操作系统的通用功能的CortexM的可执行文件仓库。这里说的操作系统,并不是指RTOS这种系统,而是类似linux的操作系统,只是运行在了一般的CortexM处理器上。所以,VSF操作系统不单单包括多任务核心、IPC等基本功能,还会包括一个操作系统所需要具备的一些额外功能,比如内存管理、命令行界面等等。在命令行界面上,用户可以键入命令,下载安装各种需要的可执行文件(库),然后安装运行自己的应用。并且可以安装多个应用,自己选择运行那些(可以多个应用同时运行)。



VSF repo这么实现有啥用?

模块化的开发,这里简单举一个栗子,应用实现了一个特殊的USB设备,这个设备需要安装驱动,但是,为了方便用户,需要在USB设备上集成一个虚拟U盘,里面放驱动和应用程序就行。那么这个虚拟U盘如何实现。
1. 需要安装USB device协议栈以及MSC设备驱动
2. MSC设备驱动,需要接到一个SCSI设备,所以,安装SCSI库
3. 用SCSI设备实现起来很麻烦,我们需要用到fakefat32,把一个memfs(在内存里的文件系统)结构,模拟成mal(块设备),那就安装fakefat32
4. 安装mal2scsi,把mal块设备,转换成scsi设备,这样就可以连接到MSC设备驱动了
整个过程,基本上不用写什么代码,也不需要实际的U盘的存储空间,只是需要按照各个库的文档,定义相应的类的实例,然后在数据结构中,连接起来就行。当然,需要自己制作一个memfs的实例,这个也很简单,只是数据,没有代码。当然,前提是,这些模块都是VSF repo里现成的。
再举个栗子,要做一个wifi的网页服务器:
1. 选型好wifi模块,下载安装对应的netif驱动
2. 安装tcpip协议栈
3. 安装httpd
4. httpd是基于文件系统接口来找网页文件的,所以,安装文件组件
5. 如果网页在一个U盘里,那么,安装USBH协议栈
6. 安装MSC主机驱动
7. 安装malfs(块设备文件系统支持)以及fat文件系统
8. 设置好各个参数,也几乎不用写什么代码,就可以运行起来了,前提是,VSF repo里有这些模块。
9. 这么多东西,资源占用会不会很大?去掉VSF操作系统,直接整合各个模块的话,优化好甚至可以在64K flash/16K RAM的芯片上跑起来,当然,需要芯片支持相应的接口,比如USB host。
上面2个虽然只是栗子,但是,VSF里确实有(或者正在开发)这些模块。

MCU开发的产品一般受成本、效率等因素的影响,不可能使用这么大一套环境来实现一个产品。所以,基于VSF repo的应用一般不直接量产。要量产的话,也是直接整合各个库,加上应用再量产。但是,又有问题了,VSF repo里提供的可执行文件,是基于VSF操作系统的,怎么直接整合呢?

用了别人提供的东西,如果别人是开源的,那就不用多说了,如果别人是不开源的,那就找别人合作咯。比如,有人做了一套电机驱动的库,这个库一般基于GPIO、ADC、PWM、中断等通用的接口,那么可以下载下来,在安装好VSF操作系统的平台上测试运行,测试基本OK,但是需要一些功能和性能的完善(定制化)的要求的话,那就直接联系作者。


为啥是基于VSF构架,VSF如何实现这些功能的?
哪那么多为什么,如果我有空参加21ic的交流会的话,到时候再说了


先上一些命令行界面的截图吧:




相关帖子

沙发
Simon21ic|  楼主 | 2016-2-28 23:10 | 只看该作者
yyy71cj 发表于 2016-2-28 22:20
得讲点别人能直接用上的

不能全讲完啊,不然交流会咋办?
直接用得上的,还是要等我这里发布呢,经过去年一年的完善,这套东西我觉得是越来越好玩了
有兴趣试试看不?不过要等我们建好repo服务器,然后发布VSF操作系统,我可以把一些东西放上去了

使用特权

评论回复
板凳
jrcsh| | 2016-2-29 01:41 | 只看该作者
感觉在说: 模块化编程,  把功能打包成一个模块(多个模块也可以组成一个模块 )

按需要组合使用就是, 看起来,不要求效率的情况下,这样的开发周期因当是比较快的,但也可能~~~BUG多多。

使用特权

评论回复
地板
keer_zu| | 2016-2-29 09:56 | 只看该作者
学习学习

使用特权

评论回复
5
犹豫的大三| | 2016-2-29 11:11 | 只看该作者
Linux的架构是不是类似啊?可以安装的设备库

使用特权

评论回复
6
Simon21ic|  楼主 | 2016-2-29 13:06 | 只看该作者
jrcsh 发表于 2016-2-29 01:41
感觉在说: 模块化编程,  把功能打包成一个模块(多个模块也可以组成一个模块 )

按需要组合使用就是,  ...

是的,不过这种开发方式不针对最终产品,最终产品的话,需要去掉系统,只保留模块和应用。
而且,需要按照产品的方式做足够测试

使用特权

评论回复
7
Simon21ic|  楼主 | 2016-2-29 13:09 | 只看该作者
犹豫的大三 发表于 2016-2-29 11:11
Linux的架构是不是类似啊?可以安装的设备库

linux可以安装自己需要的库和应用,库和应用并不一定需要明显的区分,应用也可以提供接口给别人,当做库来使用

使用特权

评论回复
8
Simon21ic|  楼主 | 2016-2-29 13:10 | 只看该作者
yyy71cj 发表于 2016-2-29 07:05
完全可以。这段时间手头有点忙,空了好好了解一下。你最好能介绍得生动一点,好让我先知道这可以做什么、 ...

弄好后,会有一些例子,不过估计不一定会很快
我们最近也比较忙,要把各个模块的文档弄好,需要一些时间

使用特权

评论回复
9
Simon21ic|  楼主 | 2016-2-29 13:13 | 只看该作者
我们现在就是用类似的外包/兼职方式,开发人员只是根据我的要求,开发需要的模块,代码也是MCU无关的,我们自己做应用的组装

使用特权

评论回复
10
hufengweixx| | 2016-2-29 13:21 | 只看该作者
归纳内的产品应该需要考虑的东西很多,因为不同需求有些参数就可能需要不同

使用特权

评论回复
11
Simon21ic|  楼主 | 2016-2-29 13:35 | 只看该作者
hufengweixx 发表于 2016-2-29 13:21
归纳内的产品应该需要考虑的东西很多,因为不同需求有些参数就可能需要不同 ...

是的,VSF repo只处理一般的东西,一些需要定制化的,可以联系关键模块的作者,外包给他会相对靠谱吧

使用特权

评论回复
12
zwwoshi| | 2016-2-29 14:10 | 只看该作者
学习了   模块化设计很好 移植不依赖硬件

使用特权

评论回复
13
sbitxihc0616| | 2016-2-29 16:56 | 只看该作者
楼主要组织交流会?什么时候啊

使用特权

评论回复
14
Simon21ic|  楼主 | 2016-2-29 17:18 | 只看该作者
sbitxihc0616 发表于 2016-2-29 16:56
楼主要组织交流会?什么时候啊

不是我组织,是21ic组织的
本来也没想把这套东西拿出来,不过如果参加的话,那也不藏着掖着了

使用特权

评论回复
15
Simon21ic|  楼主 | 2016-3-4 22:57 | 只看该作者
基本核心的东西已经差不多了,之后写个busybox,集成一些基本命令就可以了

使用特权

评论回复
16
小小小小白| | 2016-3-7 09:44 | 只看该作者
还招兼职开发人员不,我比较菜,但是有兴趣。。

使用特权

评论回复
17
idterminator| | 2016-3-7 14:26 | 只看该作者
且说说自己的理解吧。

VSF是一个系统(类比windows,LZ要做比尔盖茨^_^);
这个系统可以运行在各种单片机构成硬件平台上,目前仅支持CortexM系列;
这个系统对硬件平台所能支持的各资源实现了模块化,可供用户快速连接配置;
这个系统支持用户编写自己的应用,且最终产品可以不依赖VSF系统而独立运行在VSF所支持的硬件平台;
VSF提供的模块化需要完善,可以也不得不通过所有用户来制作完善(插件?),从而也提供了一个成果共享的平台(一种奇特的开发分享外包方式?);
VSF目前仅支持通用功能,随着模块扩充、插件完善,应该能支持定制器件特殊资源的应用,总而言之言而总之,很宏伟庞大;
这样的话,这个事就是无穷尽的啊,不过LZ好像比较中意于提供外包平台;P

使用特权

评论回复
18
Simon21ic|  楼主 | 2016-3-7 21:44 | 只看该作者
小小小小白 发表于 2016-3-7 09:44
还招兼职开发人员不,我比较菜,但是有兴趣。。

有适合的话,一直在找兼职人员,不过我们对能力要求也不低

使用特权

评论回复
19
Simon21ic|  楼主 | 2016-3-7 21:50 | 只看该作者
idterminator 发表于 2016-3-7 14:26
且说说自己的理解吧。

VSF是一个系统(类比windows,LZ要做比尔盖茨^_^);

VSF类似一些RTOS,vsfos类似那些操作系统
VSF的模块化已经完成了
VSF并不是我想推广的东西,这个只是我自己的项目使用的一种平台,是我们专用的平台
只是这次既然被邀请了,那就介绍一下

使用特权

评论回复
20
Simon21ic|  楼主 | 2016-3-11 13:49 | 只看该作者
yyy71cj 发表于 2016-3-10 16:39
争取生动点,能有原子弹效应最好,我们这版赏金越来越落后了…… ...

呵呵,我倒是担心我没办法吧东西讲清楚

赏金有什么用?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

266

主题

2597

帖子

104

粉丝