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