IOT時(shí)代談驅(qū)動(dòng)/MCU軟件技術(shù)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
8048的面世標(biāo)志著控制專用CPU MCU(Microcontroller Unit)的延生,而作為互聯(lián)網(wǎng)基石的PC,其CPU8088卻是在3年以后的1979年才出現(xiàn)。自1979年以后,PC的CPU從16位、4.77MHz時(shí)鐘、單核發(fā)展到了今天的64位、常見的3GHz時(shí)鐘和多核。而比PC的CPU歷史悠久的MCU,其字節(jié)停止在32位已有10多年了。相對(duì)于芯片,MCU軟件技術(shù)進(jìn)展更慢,在PC機(jī)軟件開發(fā)已由工廠化發(fā)展到全社會(huì)協(xié)同的今天,MCU軟件技術(shù)仍停留在單打獨(dú)斗的個(gè)人英雄時(shí)代。
盡管MCU的應(yīng)用領(lǐng)域和市場(chǎng)規(guī)模都要比PC大得多,其MCU軟件技術(shù)進(jìn)展仍然十分緩慢,其中原因包括應(yīng)用領(lǐng)域的碎片化導(dǎo)致公有技術(shù)抽象困難,開發(fā)力量難以聚焦。軟件技術(shù)進(jìn)展緩慢直接影響MCU芯片技術(shù)的發(fā)展,芯片的性能又反過來阻礙軟件技術(shù)的發(fā)展。隨著物聯(lián)網(wǎng)(IOT)在人們生活中的滲透,高性能MPU的價(jià)格已下降接近MCU的價(jià)格區(qū)間,互聯(lián)網(wǎng)軟件技術(shù)不斷向MCU領(lǐng)域浸入,加速M(fèi)CU軟件技術(shù)發(fā)展的時(shí)機(jī)已到來。
由無規(guī)則向OOA及OOD轉(zhuǎn)化
MCU軟件的前期分析設(shè)計(jì)將由無規(guī)則向OOA及OOD轉(zhuǎn)化。傳統(tǒng)的MCU軟件開發(fā),其分析設(shè)計(jì)和實(shí)施通常是由封閉的團(tuán)隊(duì),甚至一個(gè)人獨(dú)立完成。盡管團(tuán)隊(duì)內(nèi)部成員理念一致、配合默契,項(xiàng)目實(shí)施敏捷。但整個(gè)開發(fā)過程都在同一團(tuán)隊(duì)進(jìn)行,幾乎不涉及團(tuán)隊(duì)外的協(xié)同開發(fā),因此分析設(shè)計(jì)簡(jiǎn)陋,甚至只停留在口頭上。隨著IOT時(shí)代的到來,其封閉單一的團(tuán)隊(duì)難以適應(yīng)今天的發(fā)展,團(tuán)隊(duì)外的協(xié)同是MCU軟件開發(fā)的必然趨勢(shì),但前期分析設(shè)計(jì)的不足,會(huì)使問題變得更復(fù)雜。
將PC軟件開發(fā)成熟的方法論引入MCU軟件領(lǐng)域,則是促進(jìn)MCU軟件技術(shù)發(fā)展的捷徑。OOA(Object OrientedAnalyzing)和OOD(Object Oriented Design)是系統(tǒng)工程理論在PC軟件技術(shù)中的體現(xiàn),它們是支撐軟件技術(shù)工廠化和社會(huì)化的重要理論基礎(chǔ)。OOA及其OOD通過對(duì)應(yīng)用進(jìn)行分層、分類抽象處理,將部分層與類從應(yīng)用中剝離出來,從而使協(xié)同者不需要了解應(yīng)用就能進(jìn)行軟件開發(fā)。從1997年開始,作者以系統(tǒng)工程理論為基礎(chǔ)開始探索OOA及OOD在MCU軟件開發(fā)中的應(yīng)用,并于2005年將初步成果應(yīng)用于繼電保護(hù)裝置開發(fā)。其方法是將繼電保護(hù)裝置分層分類封裝在4個(gè)不同的MCU之中,在不具備獨(dú)立開發(fā)繼電保護(hù)裝置的團(tuán)隊(duì)中實(shí)施,其開發(fā)時(shí)間和開發(fā)投入遠(yuǎn)低于當(dāng)時(shí)同行業(yè)經(jīng)驗(yàn)豐富的開發(fā)團(tuán)隊(duì)。該系列繼電保護(hù)裝置已經(jīng)應(yīng)用10多年了,不僅維護(hù)升級(jí)方便,而且至今競(jìng)爭(zhēng)力不減。
編程方法由FP向OOP融合
編程方法由FP向OOP融合是另一個(gè)發(fā)展趨勢(shì)。在編程方法上,F(xiàn)P(FuncTIonal programming)與OOP(Object Oriented Programming)之間的戰(zhàn)爭(zhēng)從來沒有停止過。作者認(rèn)為脫離應(yīng)用背景,討論FP與OOP是毫無意義的,因?yàn)镕P強(qiáng)調(diào)的是精英技術(shù),它是開發(fā)人員的綜合個(gè)人能力的體現(xiàn),是一門精致而美的藝術(shù),藝術(shù)的特點(diǎn)就是難以復(fù)制;OOP則是實(shí)施軟件開發(fā)工廠化與社會(huì)化的一門技術(shù),其不足在于CPU及其資源利用率低,但高速發(fā)展的芯片產(chǎn)業(yè)彌補(bǔ)了它的不足。MCU軟件技術(shù)是FP的代表者之一,但它實(shí)在是無奈之舉。因?yàn)橹钡?000年,主流MCU還停止8位、256Byte內(nèi)部RAM和12MHz的時(shí)鐘,在這樣低的資源下進(jìn)行軟件開發(fā),不僅僅是FP編程方法,更有C與匯編的交融,它已超越技術(shù),升華為一門藝術(shù)。
2000年以后,OOP己成為PC軟件開發(fā)的主流技術(shù),現(xiàn)在主流MCU內(nèi)核ARM cortexM3/M4與2000年時(shí)PC的資源配置接近,在MCU軟件開發(fā)中實(shí)施OOP的條件已具備。PC軟件開發(fā)成功的經(jīng)驗(yàn)證明:實(shí)施OOP,是降低軟件研發(fā)的門檻,是將軟件開發(fā)從精英模式走向工廠化和社會(huì)化的有效措施。同時(shí)也是解決軟件開發(fā)人員短缺的唯一手段。作者于兩年前通過對(duì)OOP編程語言JAVA的歸零學(xué)習(xí),已感悟OOP之真諦。然后親自編程將OOP技術(shù)應(yīng)用于MCU軟件開發(fā)中,并向同行、同事介紹OOP在MCU軟件開發(fā)中的體會(huì),讓目前的MCU軟件開發(fā)人員拓展思路,使他們從封閉的思維方式中解脫出來,走向社會(huì)化,其效果也是非常明顯的。
軟件開發(fā)的分離與成熟
中間件成熟,推動(dòng)驅(qū)動(dòng)軟件與應(yīng)用軟件開發(fā)分離。過去因MCU性能和資源的限制,MCU軟件開發(fā)與硬件開發(fā)是密不可分的,驅(qū)動(dòng)軟件是聯(lián)接MCU硬件與軟件之間的橋梁,它是MCU開發(fā)最重要的環(huán)節(jié)。因?yàn)轵?qū)動(dòng)軟件涉及軟件和硬件技術(shù),要求開發(fā)人員同時(shí)具備硬件和軟件知識(shí),所以驅(qū)動(dòng)軟件開發(fā)是MCU開發(fā)中最難的一個(gè)環(huán)節(jié),它是MCU開發(fā)的主要成本。
2010年與ARM cortex M系列MCU先后出現(xiàn)的還有CMSIS(Cortex Microcontroller Software InterfaceStandard)。CMSIS是ARM公司制定的ARM Cortex-M系列MCU軟件接口標(biāo)準(zhǔn),它將MCU外設(shè)與軟件無關(guān)抽象化。自此,MCU驅(qū)動(dòng)軟件由MCU制造商或MCU開發(fā)軟件商提供,從而降低了MCU開發(fā)的難度,提高了MCU軟件的重用性。
Ethernet、WiFi和Bluetooth是主要通信標(biāo)準(zhǔn)。作為IOT前端的MCU也必需具備信息交互功能。Ethernet、WiFi和Bluetooth等協(xié)議軟件經(jīng)過多年發(fā)展,已成熟、規(guī)范和專業(yè),作為MCU的公有技術(shù)把它們植入到MCU軟件之中是十分必要的。將它們封裝成中間件,MCU軟件開發(fā)時(shí),在硬件的支持下只需要將這些中間件集成到MCU軟件之中就能使MCU與互聯(lián)網(wǎng)實(shí)現(xiàn)靈活的信息交互。例如ucTCPIP、CMX-TCP/IP、IwIP等是MCU軟件開發(fā)常用的Ethernet中間件。在MCU開發(fā)時(shí),不需要了解TCP/IP的細(xì)節(jié),僅需將這些中間件集成到MCU軟件中就能實(shí)現(xiàn)Ethernet功能。目前除了上述互聯(lián)網(wǎng)信息功能外,還有大量的其他中間件,如MCU圖形中間件emWin、USB中間件ecc-USB等。同時(shí),MCU軟件開發(fā)主流平臺(tái)KEIL將自己的和第三方提供的中間件集成在同一開發(fā)平臺(tái)上。MCU軟件開發(fā)時(shí),只需要將這些中間件集成到自己的軟件中,就可實(shí)現(xiàn)相應(yīng)的功能。
總之,MCU中間件的廣泛應(yīng)用,標(biāo)志作MCU軟件開發(fā)由封閉走向開放。在原生市場(chǎng)本來就廣闊的MCU應(yīng)用領(lǐng)域,借助IOT的推動(dòng),MCU軟件技術(shù)必將迎來新的發(fā)展浪潮。作為經(jīng)歷了電子管時(shí)代,并且電路設(shè)計(jì)和代碼編寫己成為人生一大愛好的作者,將激情滿懷地迎接MCU軟件技術(shù)的又一次變革。
【相關(guān)推薦文章】華為正在力挺的NB-IoT是什么鬼!