何漢青,李 寧
(1.武漢理工大學(xué)網(wǎng)絡(luò)信息中心,湖北武漢430070;2.武漢理工大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,湖北武漢430070)
云計(jì)算是一種新型的基于Internet的超級(jí)計(jì)算模式。云計(jì)算將共享的軟硬件資源和信息按需提供給用戶,允許用戶在不了解提供服務(wù)的技術(shù)、沒有相關(guān)知識(shí)以及設(shè)備操作能力的情況下,通過(guò)Internet獲取服務(wù)[1-2]。
傳統(tǒng)的MCU開發(fā)一直使用專業(yè)的集成環(huán)境,通常與Internet沒有太多的聯(lián)系。近年來(lái)IC廠商推出新MCU的速度非常迅猛,開發(fā)者對(duì)新MCU進(jìn)行開發(fā)時(shí),需從Internet中獲得相關(guān)信息。若能將云計(jì)算引入到MCU開發(fā)工具中,將用戶所需要的知識(shí)自動(dòng)地推到用戶面前[3-6],將大大加快MCU應(yīng)用開發(fā)的進(jìn)度。在分析傳統(tǒng)MCU開發(fā)工具缺陷的基礎(chǔ)上,介紹了筆者開發(fā)的基于云計(jì)算的MCU應(yīng)用開發(fā)平臺(tái)Coocox Tools。
在MCU應(yīng)用開發(fā)之前,工程師通常需要進(jìn)行選型工作,包括MCU、外圍IC、開發(fā)工具和技術(shù)支持等。開發(fā)過(guò)程中也需要大量相關(guān)的資料,如各種數(shù)據(jù)手冊(cè)、電路圖、例程和應(yīng)用筆記等。這些資料通常從IC廠商的網(wǎng)站和一些專業(yè)網(wǎng)站中獲得,有些可信,有些則需要進(jìn)行甄別。另外,工程師還需從大量資料中找到自己所關(guān)注的部分。資料的收集、整理和甄別通常要花費(fèi)大量的時(shí)間,傳統(tǒng)的MCU開發(fā)工具不能為工程師提供相關(guān)的幫助。
完成MCU應(yīng)用開發(fā)都不會(huì)是一個(gè)大的團(tuán)隊(duì),多數(shù)情況下只有幾個(gè)工程師,甚至只有一個(gè)工程師。在遇到問(wèn)題的時(shí)候,通常是通過(guò)論壇、郵件組來(lái)與使用同樣MCU的工程師進(jìn)行交流,但這種交流往往是不及時(shí)的。
MCU應(yīng)用開發(fā)通常包含硬件設(shè)計(jì)和軟件設(shè)計(jì)兩部分,其中軟件設(shè)計(jì)包含底層驅(qū)動(dòng)設(shè)計(jì)、操作系統(tǒng)移植、算法移植與優(yōu)化和應(yīng)用層設(shè)計(jì)。對(duì)于MCU應(yīng)用而言,最能體現(xiàn)產(chǎn)品特質(zhì)和性能的是應(yīng)用層設(shè)計(jì),但工程師大量的工作都集中在底層驅(qū)動(dòng)設(shè)計(jì)、操作系統(tǒng)及算法的移植上,無(wú)法專注于應(yīng)用業(yè)務(wù)層的軟件開發(fā)和優(yōu)化。
由于目前市場(chǎng)要求MCU應(yīng)用產(chǎn)品的開發(fā)周期越來(lái)越短,以上這些問(wèn)題的存在使得工程師使用傳統(tǒng)工具很難在有限開發(fā)時(shí)間內(nèi)保證產(chǎn)品的質(zhì)量,產(chǎn)品特質(zhì)亦不容易體現(xiàn),甚至難于完成開發(fā)任務(wù)。
如何從Internet的海量信息中抽取出對(duì)用戶有價(jià)值的信息,并整理為其所需要的格式成為網(wǎng)絡(luò)及數(shù)據(jù)挖掘領(lǐng)域研究的重要問(wèn)題。Internet上信息整理方式大致有以下幾類。
(1)分類目錄搜索。網(wǎng)站通過(guò)人工審核編輯信息,將其放入數(shù)據(jù)庫(kù)中。使用者根據(jù)分類在網(wǎng)站上查找所需信息,典型的是Yahoo。這種方式,分類清晰,但有時(shí)很難找到某些專門知識(shí)。
(2)全文搜索。通過(guò)搜索軟件在Internet上所有網(wǎng)站搜索信息,然后按照一定規(guī)律建立一個(gè)很大的在線數(shù)據(jù)庫(kù)供用戶查詢。用戶只要輸入關(guān)鍵詞,就可以在已建立的索引數(shù)據(jù)庫(kù)中查詢[7-8],典型的是Google。
(3)Wiki。每個(gè)人都可以通過(guò)編輯頁(yè)面對(duì)自己關(guān)注的詞條進(jìn)行創(chuàng)建、編輯、修改和討論,就像公共白板。Wiki依靠集體的力量,開創(chuàng)了一種借助互聯(lián)網(wǎng)創(chuàng)建、積累、完善和分享知識(shí)的全新模式。具有共同興趣的人可以很快將相關(guān)領(lǐng)域的知識(shí)整理得非常完善,甚至可以創(chuàng)造出許多新的知識(shí)。Wiki上的信息通常專業(yè)而且準(zhǔn)確。
(4)開放互動(dòng)式知識(shí)問(wèn)答分享平臺(tái),眾多用戶自行提問(wèn)與提供解答,借助眾人的經(jīng)驗(yàn)與專長(zhǎng),在問(wèn)與答的討論之間,幫使用者找到滿意的答案。典型的有Yahoo Answers。這種方式采取有針對(duì)性的提問(wèn),可以獲得非常及時(shí)而且專業(yè)的幫助。
從以上信息整理方式來(lái)看,如何整理知識(shí)將是Internet發(fā)展過(guò)程中一直努力的方向。云計(jì)算時(shí)代的到來(lái),提出了軟件即服務(wù)的概念,云軟件打破以往大廠壟斷的局面,所有人都可以在上面自由揮灑創(chuàng)意,提供各式各樣的軟件服務(wù)。云計(jì)算將充分利用上述各種信息整理方式,利用集體智慧產(chǎn)生更多的有效信息[9-10]。如果在嵌入式開發(fā)工具中引入云計(jì)算,會(huì)給嵌入式開發(fā)帶來(lái)完全不同的新體驗(yàn)。
基于云計(jì)算的MCU開發(fā)工具是一個(gè)云軟件,它可以像用水、用電一樣隨時(shí)使用網(wǎng)絡(luò)中的有效信息。當(dāng)用戶對(duì)某款MCU進(jìn)行應(yīng)用開發(fā)時(shí),相關(guān)知識(shí)(數(shù)據(jù)手冊(cè)、例程、算法和電路圖等)應(yīng)被推到開發(fā)者面前。同時(shí),用戶也可以將自己的相關(guān)知識(shí)與其他使用同樣MCU的開發(fā)者分享。理想的基于云計(jì)算的MCU開發(fā)工具,對(duì)于用戶而言只需要一個(gè)瀏覽器,如圖1所示。編輯、編譯、存儲(chǔ)、項(xiàng)目管理和資料管理等均在云端完成,用戶只要使用任意一個(gè)帶有瀏覽器并可訪問(wèn)Internet的設(shè)備,就可以隨時(shí)隨地進(jìn)行開發(fā)。ARM公司推出的快速原型驗(yàn)證工具mbed就是一個(gè)這樣的平臺(tái),如圖2所示,用戶只要有一個(gè)簡(jiǎn)易的驗(yàn)證平臺(tái),訪問(wèn)embed.org網(wǎng)站就可以在瀏覽器上完成編輯、編譯和項(xiàng)目管理,并可與其他用戶交流。不過(guò),mbed只是一個(gè)快速原型的驗(yàn)證平臺(tái),不具備完整的嵌入式開發(fā)工具鏈的功能。筆者所在團(tuán)隊(duì)開發(fā)了一套完整的基于云計(jì)算的MCU開發(fā)工具鏈Coocox Tools。
圖1 基于瀏覽器的嵌入式系統(tǒng)開發(fā)
圖2 快速原型開發(fā)平臺(tái)mbed
Coocox Tools的總體架構(gòu)如圖3所示,對(duì)于MCU開發(fā)者而言,Coocox Tools包含 CoIDE、CoFlash、CoAssistant、CoLinkEx、CoOS 和 CoCenter。Coocox Tools可以在 www.coocox.org網(wǎng)站免費(fèi)下載,Coocox Tools的總體結(jié)構(gòu)如圖3所示。
圖3 Coocox Tools的總體結(jié)構(gòu)
CoIDE是 Coocox Tools的核心,與傳統(tǒng) IDE不同之處在于:其編程方式是基于組件的,而其中的組件、例程和幫助均可通過(guò)網(wǎng)絡(luò)自動(dòng)更新和交互。CoIDE的編輯界面如圖4所示,它有4個(gè)與其他IDE不同的窗口:組件窗口、組件樹窗口、例程窗口和幫助窗口。
圖4 CoIDE編輯界面
(1)組件窗口。組件是一組相對(duì)獨(dú)立的代碼、外設(shè)的驅(qū)動(dòng)程序和一些算法,操作系統(tǒng)也可以是組件。用戶選擇某款MCU后,該MCU可用的組件將列在組件窗口中,用戶只需勾選,即可將相應(yīng)的代碼自動(dòng)加入工程中。如果有足夠多的組件,則只需勾選組件即可完成除應(yīng)用層之外的所有軟件開發(fā)工作。組件窗口是一個(gè)瀏覽器窗口,任何用戶都可按照Coocox組件標(biāo)準(zhǔn)上傳自己的組件,與其他用戶分享。開發(fā)者在使用其他用戶提供的組件時(shí),可以對(duì)組件進(jìn)行評(píng)價(jià)、打分,組件窗口可按分值對(duì)組件排名。
(2)組件樹窗口。用戶在組件窗口勾選組件之后,被勾選的組件以樹的形式組織在組件樹窗口中,組件樹和工程樹是完全對(duì)應(yīng)的。在組件樹中選中某個(gè)組件時(shí),工程樹中對(duì)應(yīng)的文件會(huì)高亮,且在例程窗口中也會(huì)自動(dòng)顯示該組件的例子。
(3)例程窗口。在組件樹窗口中選中某組件時(shí),相關(guān)例子將羅列在例程窗口中,用戶可以參考,也可將該例子代碼添加到工程中。與組件窗口一樣,例程窗口也是一個(gè)瀏覽器,任何用戶都可上傳自己的例子與其他用戶分享,也可評(píng)價(jià)其他用戶提供的例子。
(4)幫助窗口。幫助窗口根據(jù)用戶焦點(diǎn)的變化提供各種相關(guān)信息。選擇處理器時(shí),可以提供處理器基本信息、數(shù)據(jù)手冊(cè);勾選組件時(shí),可以提供組件的API信息;查看例程時(shí),提供例程的原理圖及所對(duì)應(yīng)評(píng)估板的信息。
在未來(lái),CoIDE將會(huì)是一個(gè)基于Web的IDE,用戶只需用瀏覽器訪問(wèn)Coocox網(wǎng)站即可使用。如圖5所示,CoIDE將不僅是一個(gè)IDE,還是一個(gè)MCU開發(fā)者交流開發(fā)信息及知識(shí)的網(wǎng)絡(luò)平臺(tái)。
圖5 基于云計(jì)算的IDE
CoFlash是一個(gè)免費(fèi)的Flash編程工具,提供圖形和命令兩種編程方式。與其他Flash燒寫工具的不同之處是:CoFlash允許用戶自定義燒寫算法,并將自己新增的燒寫算法上傳與其他用戶分享,也可對(duì)其他用戶提供的算法做評(píng)價(jià)。
CoAssistant是一個(gè)在線編程輔助工具,只要訪問(wèn) http://www.coocox.com:8080/coassistant_en/rap即可。選擇某款MCU后,其寄存器的細(xì)節(jié)信息將直觀地呈現(xiàn)在用戶面前,如圖6所示。無(wú)需查閱處理器技術(shù)手冊(cè),即可輕松實(shí)現(xiàn)對(duì)相關(guān)外設(shè)的配置。用戶還可以通過(guò)加評(píng)論,將自己使用某個(gè)外設(shè)或某個(gè)寄存器的心得與其他用戶分享。
圖6 CoAssistant查看界面
CoLinkEx是一個(gè)免費(fèi)、開源的ICE方案,支持JTAG和SWD調(diào)試接口,適用于各種Cortex-M0和Cortex-M3處理器。除了可用于Coocox Tools之外,還支持傳統(tǒng)工具M(jìn)DK和IAR。
CoOS是一個(gè)免費(fèi)和開源的 RTOS,特別為Cortex-M處理器設(shè)計(jì),支持時(shí)間片輪詢和優(yōu)先級(jí)搶占兩種任務(wù)切換方式;支持信號(hào)量、郵箱、隊(duì)列、事件標(biāo)志、互斥體等多種進(jìn)程同步機(jī)制;具有高度可裁剪性,最小內(nèi)核僅974字節(jié);任務(wù)切換時(shí)允許中斷;支持堆棧溢出檢測(cè);支持多種編譯器,如 ICCARM、ARMCC、GCC。在 CoIDE 中,CoOS也是一個(gè)組件,通過(guò)勾選即可將CoOS源碼加入到自己的工程中,用戶修改OS_Config.h文件中的任務(wù)數(shù)、堆棧和系統(tǒng)時(shí)鐘頻率等相關(guān)配置后即可實(shí)現(xiàn)移植。
CoCenter是一個(gè)Coocox用戶的中心,提供用戶注冊(cè)、軟件下載及更新等功能。在未來(lái),Coocox還將提供一個(gè)專用的即時(shí)通信工具,使用同一處理器的開發(fā)者將自動(dòng)被分配到同一個(gè)組中,這些用戶可在線進(jìn)行實(shí)時(shí)交流。
Coocox Tools的目的是建立一個(gè)嵌入式開發(fā)者社會(huì)網(wǎng)絡(luò)平臺(tái),這種基于云計(jì)算的嵌入式開發(fā)平臺(tái)與傳統(tǒng)嵌入式開發(fā)工具的不同在于:
(1)根據(jù)開發(fā)者的需求,將開發(fā)所需的各種信息和知識(shí)整理好;用戶選擇所使用處理器后,這些相關(guān)信息就會(huì)被推給用戶,節(jié)省了大量的開發(fā)時(shí)間。
(2)開發(fā)者不再是孤獨(dú)的,及時(shí)的在線交流可以縮短開發(fā)者解決問(wèn)題的時(shí)間。
(3)利用集體的智慧來(lái)整理信息,可以較快提取出有效的知識(shí)進(jìn)行共享。
在未來(lái),云計(jì)算的嵌入式開發(fā)平臺(tái)不僅是開發(fā)者之間的信息交流平臺(tái),還應(yīng)該是開發(fā)者之間的交易平臺(tái),用戶可以相互交易代碼和服務(wù),也可以成為廠商與開發(fā)者的信息交流平臺(tái)。
[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ì)算:系統(tǒng)實(shí)例與研究現(xiàn)狀[J].軟件學(xué)報(bào),2009,20(5):1337 -1348.
[6]李寧,宋薇,周薇.嵌入式開發(fā)工具發(fā)展趨勢(shì)[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用,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.