基于云计算的MCU应用开发平台
2011-07-24何汉青
何汉青,李 宁
(1.武汉理工大学网络信息中心,湖北武汉430070;2.武汉理工大学计算机科学与技术学院,湖北武汉430070)
云计算是一种新型的基于Internet的超级计算模式。云计算将共享的软硬件资源和信息按需提供给用户,允许用户在不了解提供服务的技术、没有相关知识以及设备操作能力的情况下,通过Internet获取服务[1-2]。
传统的MCU开发一直使用专业的集成环境,通常与Internet没有太多的联系。近年来IC厂商推出新MCU的速度非常迅猛,开发者对新MCU进行开发时,需从Internet中获得相关信息。若能将云计算引入到MCU开发工具中,将用户所需要的知识自动地推到用户面前[3-6],将大大加快MCU应用开发的进度。在分析传统MCU开发工具缺陷的基础上,介绍了笔者开发的基于云计算的MCU应用开发平台Coocox Tools。
1 传统MCU应用开发工具的缺陷
1.1 大量时间用于资料的整理和甄别
在MCU应用开发之前,工程师通常需要进行选型工作,包括MCU、外围IC、开发工具和技术支持等。开发过程中也需要大量相关的资料,如各种数据手册、电路图、例程和应用笔记等。这些资料通常从IC厂商的网站和一些专业网站中获得,有些可信,有些则需要进行甄别。另外,工程师还需从大量资料中找到自己所关注的部分。资料的收集、整理和甄别通常要花费大量的时间,传统的MCU开发工具不能为工程师提供相关的帮助。
1.2 孤立的工程师
完成MCU应用开发都不会是一个大的团队,多数情况下只有几个工程师,甚至只有一个工程师。在遇到问题的时候,通常是通过论坛、邮件组来与使用同样MCU的工程师进行交流,但这种交流往往是不及时的。
1.3 无法彻底关注业务层开发
MCU应用开发通常包含硬件设计和软件设计两部分,其中软件设计包含底层驱动设计、操作系统移植、算法移植与优化和应用层设计。对于MCU应用而言,最能体现产品特质和性能的是应用层设计,但工程师大量的工作都集中在底层驱动设计、操作系统及算法的移植上,无法专注于应用业务层的软件开发和优化。
由于目前市场要求MCU应用产品的开发周期越来越短,以上这些问题的存在使得工程师使用传统工具很难在有限开发时间内保证产品的质量,产品特质亦不容易体现,甚至难于完成开发任务。
2 云计算带来的信息整理方式变化
如何从Internet的海量信息中抽取出对用户有价值的信息,并整理为其所需要的格式成为网络及数据挖掘领域研究的重要问题。Internet上信息整理方式大致有以下几类。
(1)分类目录搜索。网站通过人工审核编辑信息,将其放入数据库中。使用者根据分类在网站上查找所需信息,典型的是Yahoo。这种方式,分类清晰,但有时很难找到某些专门知识。
(2)全文搜索。通过搜索软件在Internet上所有网站搜索信息,然后按照一定规律建立一个很大的在线数据库供用户查询。用户只要输入关键词,就可以在已建立的索引数据库中查询[7-8],典型的是Google。
(3)Wiki。每个人都可以通过编辑页面对自己关注的词条进行创建、编辑、修改和讨论,就像公共白板。Wiki依靠集体的力量,开创了一种借助互联网创建、积累、完善和分享知识的全新模式。具有共同兴趣的人可以很快将相关领域的知识整理得非常完善,甚至可以创造出许多新的知识。Wiki上的信息通常专业而且准确。
(4)开放互动式知识问答分享平台,众多用户自行提问与提供解答,借助众人的经验与专长,在问与答的讨论之间,帮使用者找到满意的答案。典型的有Yahoo Answers。这种方式采取有针对性的提问,可以获得非常及时而且专业的帮助。
从以上信息整理方式来看,如何整理知识将是Internet发展过程中一直努力的方向。云计算时代的到来,提出了软件即服务的概念,云软件打破以往大厂垄断的局面,所有人都可以在上面自由挥洒创意,提供各式各样的软件服务。云计算将充分利用上述各种信息整理方式,利用集体智慧产生更多的有效信息[9-10]。如果在嵌入式开发工具中引入云计算,会给嵌入式开发带来完全不同的新体验。
3 基于云计算的MCU开发
基于云计算的MCU开发工具是一个云软件,它可以像用水、用电一样随时使用网络中的有效信息。当用户对某款MCU进行应用开发时,相关知识(数据手册、例程、算法和电路图等)应被推到开发者面前。同时,用户也可以将自己的相关知识与其他使用同样MCU的开发者分享。理想的基于云计算的MCU开发工具,对于用户而言只需要一个浏览器,如图1所示。编辑、编译、存储、项目管理和资料管理等均在云端完成,用户只要使用任意一个带有浏览器并可访问Internet的设备,就可以随时随地进行开发。ARM公司推出的快速原型验证工具mbed就是一个这样的平台,如图2所示,用户只要有一个简易的验证平台,访问embed.org网站就可以在浏览器上完成编辑、编译和项目管理,并可与其他用户交流。不过,mbed只是一个快速原型的验证平台,不具备完整的嵌入式开发工具链的功能。笔者所在团队开发了一套完整的基于云计算的MCU开发工具链Coocox Tools。
图1 基于浏览器的嵌入式系统开发
图2 快速原型开发平台mbed
4 Coocox Tools
4.1 Coocox Tools的总体结构
Coocox Tools的总体架构如图3所示,对于MCU开发者而言,Coocox Tools包含 CoIDE、CoFlash、CoAssistant、CoLinkEx、CoOS 和 CoCenter。Coocox Tools可以在 www.coocox.org网站免费下载,Coocox Tools的总体结构如图3所示。
图3 Coocox Tools的总体结构
4.2 CoIDE
CoIDE是 Coocox Tools的核心,与传统 IDE不同之处在于:其编程方式是基于组件的,而其中的组件、例程和帮助均可通过网络自动更新和交互。CoIDE的编辑界面如图4所示,它有4个与其他IDE不同的窗口:组件窗口、组件树窗口、例程窗口和帮助窗口。
图4 CoIDE编辑界面
(1)组件窗口。组件是一组相对独立的代码、外设的驱动程序和一些算法,操作系统也可以是组件。用户选择某款MCU后,该MCU可用的组件将列在组件窗口中,用户只需勾选,即可将相应的代码自动加入工程中。如果有足够多的组件,则只需勾选组件即可完成除应用层之外的所有软件开发工作。组件窗口是一个浏览器窗口,任何用户都可按照Coocox组件标准上传自己的组件,与其他用户分享。开发者在使用其他用户提供的组件时,可以对组件进行评价、打分,组件窗口可按分值对组件排名。
(2)组件树窗口。用户在组件窗口勾选组件之后,被勾选的组件以树的形式组织在组件树窗口中,组件树和工程树是完全对应的。在组件树中选中某个组件时,工程树中对应的文件会高亮,且在例程窗口中也会自动显示该组件的例子。
(3)例程窗口。在组件树窗口中选中某组件时,相关例子将罗列在例程窗口中,用户可以参考,也可将该例子代码添加到工程中。与组件窗口一样,例程窗口也是一个浏览器,任何用户都可上传自己的例子与其他用户分享,也可评价其他用户提供的例子。
(4)帮助窗口。帮助窗口根据用户焦点的变化提供各种相关信息。选择处理器时,可以提供处理器基本信息、数据手册;勾选组件时,可以提供组件的API信息;查看例程时,提供例程的原理图及所对应评估板的信息。
在未来,CoIDE将会是一个基于Web的IDE,用户只需用浏览器访问Coocox网站即可使用。如图5所示,CoIDE将不仅是一个IDE,还是一个MCU开发者交流开发信息及知识的网络平台。
4.3 CoFlash
图5 基于云计算的IDE
CoFlash是一个免费的Flash编程工具,提供图形和命令两种编程方式。与其他Flash烧写工具的不同之处是:CoFlash允许用户自定义烧写算法,并将自己新增的烧写算法上传与其他用户分享,也可对其他用户提供的算法做评价。
4.4 CoAssistant
CoAssistant是一个在线编程辅助工具,只要访问 http://www.coocox.com:8080/coassistant_en/rap即可。选择某款MCU后,其寄存器的细节信息将直观地呈现在用户面前,如图6所示。无需查阅处理器技术手册,即可轻松实现对相关外设的配置。用户还可以通过加评论,将自己使用某个外设或某个寄存器的心得与其他用户分享。
图6 CoAssistant查看界面
4.5 CoLinkEx
CoLinkEx是一个免费、开源的ICE方案,支持JTAG和SWD调试接口,适用于各种Cortex-M0和Cortex-M3处理器。除了可用于Coocox Tools之外,还支持传统工具MDK和IAR。
4.6 CoOS
CoOS是一个免费和开源的 RTOS,特别为Cortex-M处理器设计,支持时间片轮询和优先级抢占两种任务切换方式;支持信号量、邮箱、队列、事件标志、互斥体等多种进程同步机制;具有高度可裁剪性,最小内核仅974字节;任务切换时允许中断;支持堆栈溢出检测;支持多种编译器,如 ICCARM、ARMCC、GCC。在 CoIDE 中,CoOS也是一个组件,通过勾选即可将CoOS源码加入到自己的工程中,用户修改OS_Config.h文件中的任务数、堆栈和系统时钟频率等相关配置后即可实现移植。
4.7 CoCenter
CoCenter是一个Coocox用户的中心,提供用户注册、软件下载及更新等功能。在未来,Coocox还将提供一个专用的即时通信工具,使用同一处理器的开发者将自动被分配到同一个组中,这些用户可在线进行实时交流。
5 结论
Coocox Tools的目的是建立一个嵌入式开发者社会网络平台,这种基于云计算的嵌入式开发平台与传统嵌入式开发工具的不同在于:
(1)根据开发者的需求,将开发所需的各种信息和知识整理好;用户选择所使用处理器后,这些相关信息就会被推给用户,节省了大量的开发时间。
(2)开发者不再是孤独的,及时的在线交流可以缩短开发者解决问题的时间。
(3)利用集体的智慧来整理信息,可以较快提取出有效的知识进行共享。
在未来,云计算的嵌入式开发平台不仅是开发者之间的信息交流平台,还应该是开发者之间的交易平台,用户可以相互交易代码和服务,也可以成为厂商与开发者的信息交流平台。
[1]DANIELSON K.Distinguishing cloud computing from
utility computing[EB/OL].[2011 - 02 - 23].http://www.ebizq.net/blogs/saasweek/2008/03/distinguishing_cloud_computing/.
[2]SIMSK.IBM introduces ready-to-use cloud computing:collaboration services get clients started with cloud computing[EB/OL].[2011 - 02 - 23].http://www-03.ibm.com/press/us/en/pressrelease/22613.
[3]ERICK,GALEN G.What cloud computing reallymeans[EB/OL].[2011 -02 - 23].http://www.infoworld.com/d/cloud-computing/what-cloud-computingreally-means-031.
[4]BOSSG,MALLADIP,QUAN D,et al.Cloud computing[EB/OL].[2011 - 02 - 23].http://download.boulder.ibm.com/ibmdl/pub/software/dw/wes/hipods/Cloud_computing_wp_final_8Oct.pdf.
[5]陈康,郑纬民.云计算:系统实例与研究现状[J].软件学报,2009,20(5):1337 -1348.
[6]李宁,宋薇,周薇.嵌入式开发工具发展趋势[J].单片机与嵌入式系统应用,2008(5):5-8.
[7]BARROSO L A,DEAN J,HOLZLE U.Web search for a planet:the Google cluster architecture[J].IEEE Micro,2003,23(2):22 -28.
[8]GHEMAWAT S,GOBIOFF H,LEUNG ST.The Google file system[C]//Proceedings of the 19th ACM Sympposium on Operating Systems Principles.New York:ACM Press,2003:29 -43.
[9]CHANG F,DEAN J,GHEMAWAT S,et al.Bigtable:a distributed storage system for structured data[C]//Proceedings of the 7th USENIX Symposium on Operating Systems Design and Implementation.Seattle:WA,2006:205-218.
[10]DEAN J,GHEMAWAT S.Distributed programming with mapreduce[M].Sebastopol:O 'Reilly Media Inc,2007:371 -384.