王 偉
(西華大學(xué) 電氣信息學(xué)院,成都 610039)
計算機(jī)的發(fā)展經(jīng)歷了半個多世紀(jì),從體積大運(yùn)算慢的計算機(jī),往運(yùn)算速度快的巨型機(jī)與體積小的微處理器兩個方向發(fā)展,單位體積的運(yùn)算速度大大提高,功耗大大降低。從微處理器的發(fā)展來看,各種MCU、FPGA、SoC五花八門層出不窮;軟件的角度來看,操作系統(tǒng)方面包括Scheduler、RTOS等,應(yīng)用軟件方面包括計算軟件等。本文給出了一種基于開源軟硬件技術(shù)的嵌入計算平臺,用于某一具體項目中來證明開源軟硬件技術(shù)在實際工程應(yīng)用中的高效率。
嵌入計算平臺有別于一般意義的嵌入式系統(tǒng),目前市面上的很多嵌入式智能產(chǎn)品其實并不具有或者只有少量先進(jìn)的智能算法,很少用到現(xiàn)代信息處理和現(xiàn)代控制理論的最新成果。傳統(tǒng)的學(xué)術(shù)研究開發(fā)模式基于某些先進(jìn)的算法,都是在Matlab上實現(xiàn)的,真正轉(zhuǎn)換為嵌入式C或其他能運(yùn)行在小型嵌入式系統(tǒng)中的算法很少,這就影響到產(chǎn)學(xué)研的過程。借助敏捷開發(fā)的思想,讓開發(fā)的迭代過程加快,真正實現(xiàn)產(chǎn)學(xué)研結(jié)合。
本文中,硬件選用 Arduino(AVR單片機(jī))、Raspberrypi(ARM11),軟件在AVR芯片上采用Scheduler或者RTOS,在ARM芯片上采用Linux,計算軟件采用Scilab。
開放源碼與封閉源碼的對比如表1所列。單片機(jī)一次投板成本在200元左右,周期1周。片上系統(tǒng)一次投板版成本在2 000元左右。
表1 開放源碼與封閉源碼的對比
開源技術(shù)開啟了一場新工業(yè)革命,打破了原有的嵌入式開發(fā)模式。現(xiàn)有的計算平臺系統(tǒng)結(jié)構(gòu)框圖和嵌入計算平臺結(jié)構(gòu)框圖分別如圖1、圖2所示。
兩塊名片大小的開源硬件結(jié)構(gòu)如圖3所示,與名片的尺寸對比如表2所列,與PC的功耗對比如表3所列。
圖2 嵌入計算平臺結(jié)構(gòu)框圖
圖3 兩塊名片大小的開源硬件開發(fā)板(標(biāo)尺為inch)
表2 Arduino、Raspberry和名片的尺寸對比
表3 Arduino、Raspberry和PC的功耗對比
從圖1~3以及表2~3,可以看出,采用開源的Arduino和Raspberrypi,無論從尺寸大小還是功率消耗方面,在嵌入計算應(yīng)用領(lǐng)域上都具有明顯的優(yōu)勢。
在過去的半個多世紀(jì)里,計算機(jī)軟硬件技術(shù)和電氣工程理論水平得到了長足的發(fā)展,但是智能控制、軟件算法、軟件工程、芯片技術(shù)、電路設(shè)計與制造、傳感器技術(shù)都在各自的方向不斷發(fā)展,這一發(fā)展又與日益增長的客戶需求發(fā)生了矛盾。工程師們可以充分減少產(chǎn)品開發(fā)成本、技術(shù)風(fēng)險和開發(fā)時間,在比過去短得多的時間里將更可靠、更便宜的產(chǎn)品投放市場,迎接市場的挑戰(zhàn)。為此我們嘗試從軟硬件角度、算法理論、項目管理思想等多角度去理解一個典型實時聲音圖像識別控制系統(tǒng)。
(1)SPI總線
SPI(Serial Peripheral Interface,串行外設(shè)接口),一般由 MOSI、MISO、CLK三條線組成,三線制串行通信接口。Raspberrypi與Arduino的SPI總線連接如圖4所示。
圖4 SPI通信接口連接
(2)實現(xiàn)基于中斷方式的流控通信機(jī)制
Raspberrypi為700MHz的處理器,而Arduino為16 MHz的處理器,兩片不對稱的芯片要進(jìn)行通信,采用基于中斷控制的流控方式通信機(jī)制,具體實現(xiàn)流程如圖5所示。
以上流程實現(xiàn)了慢速的從處理器主導(dǎo)通信的流程,也就是慢速處理器決定通信狀態(tài)機(jī)的狀態(tài)關(guān)系。
①FreeRTOS,基于時間觸發(fā)的調(diào)度器和實時操作系統(tǒng)設(shè)計,包含內(nèi)存管理、隊列管理、任務(wù)調(diào)度幾個部分。抽象的內(nèi)存管理算法來自μC/OS,原因是在ANSI C中,malloc和free的使用是危險的。隊列管理包括數(shù)據(jù)隊列、任務(wù)隊列,原因包括計算機(jī)是基于流水線的串行處理的原理實現(xiàn)的。
②Linux,源于Unix,誕生于1993,由程序愛好者編寫。
圖5 中斷控制的流控方式通信機(jī)制
③Scilab,誕生于1990年代的法國自動化信息學(xué)會。從用戶體驗的角度來說,它與Matlab這類的數(shù)值計算軟件類似。唯一不同的是,這是一款開源的數(shù)值計算軟件,并且可以稍加修改移植到ARM-Linux系統(tǒng)之上,實現(xiàn)低成本的智能計算與控制的解決方案。
①Arduino,一種來自意大利的開源社區(qū)的成熟的單片機(jī)方案。開源的開放環(huán)境使用Java語言寫成,基于processing,avr-gcc和其他開源軟件。.net microframework簡單實用,用上層開發(fā)模式來開發(fā)。Processing、Wiring則是一種新型的編程語言實現(xiàn)。
②Raspberrypi,來自英國劍橋大學(xué)的開源的SoC片上系統(tǒng),基于 ARM11,集成 CPU、GPU、內(nèi)存,外部接GPIO、USB、RJ45。具體電路采用成熟方案,或者采用廠家的OEM模塊進(jìn)行積木式搭建設(shè)計。既保證了系統(tǒng)的穩(wěn)定性,也減少系統(tǒng)搭建的時間。當(dāng)然并不代表我們就可以忽略電路知識以及電路設(shè)計的一些技術(shù)積累和細(xì)節(jié)。
Posix是開源軟件領(lǐng)域的一個重要標(biāo)準(zhǔn),Linux基于Debian,由業(yè)余愛好者整合和移植上萬個軟件包。
這部分將成為本系統(tǒng)中最核心、最有難度的部分,也是決定產(chǎn)品成敗的關(guān)鍵點。數(shù)學(xué)很重要,除此之外,便是實踐。這是嵌入式系統(tǒng)開發(fā)工程師應(yīng)該秉承的理念。
① 數(shù)值計算:采用Scilab開源數(shù)值計算軟件,并移植到ARM-Linux環(huán)境中。
② 圖形識別:采用Opencv開源嵌入式圖像識別庫,二值灰度表示圖像和圖像的幾何學(xué)變換。
③ 聲音識別:采用Simon開源嵌入式聲音識別庫,兩階段識別算法,在英語語音識別系統(tǒng)中,常用的聲學(xué)模型基本單元是單詞(word),上下文無關(guān)音素(monophone),上下文相關(guān)音素(triphone,biphone)和音節(jié)(syllable)。
當(dāng)前階段,本系統(tǒng)已經(jīng)搭建起來。實現(xiàn)基本功能的移植,已經(jīng)展現(xiàn)出其開放開源的好處,以及低成本的實現(xiàn)。
對于軟件產(chǎn)品來說,軟件開發(fā)就是其所有。對于嵌入式產(chǎn)品來說,除了硬件電路,還有大量的軟件開發(fā),甚至還有機(jī)械結(jié)構(gòu)或者工業(yè)設(shè)計。這樣看來,嵌入式系統(tǒng)的開發(fā),特別是優(yōu)秀的嵌入式產(chǎn)品的開發(fā)的過程,是一個比較復(fù)雜的項目管理過程。
技術(shù)、過程、人是嵌入式系統(tǒng)開發(fā)的三要素,過程起到了樞紐的作用,將技術(shù)和人貫穿起來,如何使技術(shù)和人能最大程度的發(fā)揮其作用,也成了開發(fā)者和項目管理者所面臨的重大挑戰(zhàn)。
[1] 張曉丹.應(yīng)用計算方法教程[M].北京:機(jī)械工業(yè)出版社,2008.
[2] 胡廣書.數(shù)字信號處理[M].北京:清華大學(xué)出版社,2006:71-76.
[3] 嚴(yán)蔚敏.數(shù)據(jù)結(jié)構(gòu)[M].北京:清華大學(xué)出版社,2012.
[4] 馬龍華.基于Scilab的ARM-Linux嵌入式計算及應(yīng)用[M].北京:科學(xué)出版社,2011.
[5] 譚浩強(qiáng).C程序設(shè)計[M].北京:清華大學(xué)出版社,2011.
[6] 錢能.C++程序設(shè)計教程[M].北京:清華大學(xué)出版社,2011.