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