申同強 宋國志 荊淑霞
摘 要:eBox是一個運行在STM32平臺上的涵蓋了驅(qū)動層、系統(tǒng)層、標準應用軟件層、用戶軟件層和bootloader的軟硬件一體化的解決方案。豐富的標準驅(qū)動和標準應用,像用Arduino那樣方便,性能又遠高于arduino。操作系統(tǒng)的支持讓eBox滿足多任務系統(tǒng)的需求;標準應用提供多種控制算法、通信協(xié)議,滿足不同應用場所的需求。
關鍵詞:STM32;應用程序;創(chuàng)新;開發(fā)
1 STM32開發(fā)現(xiàn)狀
就目前的開發(fā)方式而言,國內(nèi)并沒有一套完整的生態(tài)系統(tǒng),來支持用戶的快速開發(fā),影響了企業(yè)開發(fā)的效率。主要原因有以下幾點:
①官方固件庫是面向STM32本身設計的,接口不夠友好,使用比較困難,用戶必須十分了解STM32本身特性,才能應用其固件庫。
②驅(qū)動問題:由于設計電路板的差異性,會導致同樣的芯片驅(qū)動程序無法在不同的電路板上運行,需要一個移植過程,移植非常困難。這樣就導致用戶永遠無法避免移植的問題。
③缺少標準應用程序庫的積累:由于工程師沒有一個很好的架構控制,不能保證其代碼的高重復利用率,就會導致工程師要不斷的自己去重復這個開發(fā)過程。
和Arduino相比雖然硬件資源更豐富,主頻更高,但是軟件發(fā)展卻遠遠不如Arduino發(fā)展的快。所以要重新整合STM32的軟硬件資源,將其系統(tǒng)化、結構化。這樣在同一的架構下才能保證慢慢的形成一個較為完備的生態(tài)系統(tǒng)。eBox就是一個完成這種系統(tǒng)化的軟件支持。
2 eBox軟件系統(tǒng)
2.1 eBox整體架構
eBox開發(fā)平臺致力于開創(chuàng)新的開發(fā)模式,簡化用戶開發(fā),增強代碼復用率,實現(xiàn)多人協(xié)同聯(lián)合開發(fā)。提供一套完整的開發(fā)解決方案,能適應于工業(yè)現(xiàn)場、運動控制、數(shù)據(jù)采集處理、消費類電子產(chǎn)品、物聯(lián)網(wǎng)等不同應用場合的開發(fā)。
良好的程序框架有利于多人同時開發(fā)的分工合作。統(tǒng)一的編程標準便于程序的移植和重復利用。一個龐大的工程如果沒有一個良好的程序結構和統(tǒng)一的編程標準,會導致程序耦合關系混亂、層次不明朗、代碼易讀性差、二次利用率低、難以維護等缺點。所以eBox軟件系統(tǒng)嚴格地規(guī)范了架構,來保證所有代碼能按照其特性進行層次區(qū)分。
2.2 面向?qū)ο缶幊?/p>
eBox是基于c/c++編程實現(xiàn)的。采用c++的幾大優(yōu)勢:
①面向?qū)ο蟮乃悸房梢愿玫亟鉀Q問題。
②封裝性和隱蔽性:可以對一個對象進行封裝處理,把它的一部分屬性和功能對外界屏蔽。這樣做的好處是大大降低了操作對象的復雜程度。
③抽象性:抽象的過程是將有關事物的共性歸納、集中的過程。抽象的作用是表示同一類事物的本質(zhì)。在eBox中,這種抽象應用最多,最直觀的就是驅(qū)動層。將一種外設芯片抽象出一個類。這個類包含了芯片的所有屬性和方法。
2.3 外設固件庫
外設固件庫是指STM32內(nèi)部的設備包括IO、UART、TIMER、SPI、IIC、RTC、FLASH、CAN、USB、WDG等設備。固件庫將所有外設以c++的方式重新封裝。為用戶提供人性化的用戶接口。以外設某種應用特性作為初始化參數(shù)。
外設固件庫除了支持所有MCU外設功能外,還提供了很多系統(tǒng)功能,方便用戶的使用,比如millis()、micros()服務為用戶提供了基本的時間戳服務,delay_ms(),delay_us()提供標準的延時功能、random()為用戶提供隨機數(shù)產(chǎn)生的功能,還有很多字符串處理函數(shù)方便了用戶的字符串查找、替換、數(shù)字轉(zhuǎn)換。eBox固件庫為用戶提供了很多標準的常用函數(shù),這樣可以簡化用戶的編程,提高工程師開發(fā)的效率。
2.3.1 串口
2.3.2 使用示例
從以上可以看出使用這種封裝方式可以大大簡化用戶的底層代碼復雜度。
2.3.3 驅(qū)動層
eBox驅(qū)動是指基于eBox固件庫針對某種芯片做的讀寫、控制程序它有標準的驅(qū)動程序框架做限制,不能任意編寫,在eBox平臺上可以實現(xiàn)任意合理硬件的兼容性,可移植性。
eBox驅(qū)動模式徹解決變傳統(tǒng)STM32編程驅(qū)動的移植性差、功能不齊全等問題。讓應用工程師和驅(qū)動工程師合理分工,加快項目開發(fā)進度。驅(qū)動可以多次利用,提高代碼使用價值。開源驅(qū)動分享平臺可以為大家提供大量驅(qū)動代碼,盡可能的包含更多的芯片驅(qū)動,方便用戶使用。
2.3.4 驅(qū)動層架構
2.3.5 按鍵驅(qū)動架構
驅(qū)動層很好地利用了c++類的特性。將非用戶信息進行屏蔽,只留出擁護需要的方法。
2.3.6 驅(qū)動使用示例
2.4 標準應用層
2.4.1 網(wǎng)絡通信
eBox的網(wǎng)絡功能非常簡潔,功能也非常強大,給用戶提供了一套標準的socket接口,除此之外還有TCP、UDP、DNS等網(wǎng)絡支持,大大方便用戶對網(wǎng)絡的需求。
2.4.2 文件系統(tǒng)
文件系統(tǒng)是在嵌入式領域中經(jīng)常遇到的一個問題, eBox將此功能集成起來。留給用戶的只有fatfs的標準接口。如果用戶想在自己的board上使用eBox,只需修改sd的初始化的接口即可。
當然標準庫不僅僅包含這兩項,還有很多其他的內(nèi)容比如常用數(shù)學庫、控制算法庫、色彩轉(zhuǎn)換庫等隨著不斷的發(fā)展會有更多的應用庫加載進來,工程師可根據(jù)自己的需求來選擇不同的庫實現(xiàn)自己的算法。
3 總結
eBox是借鑒Arduino的思路來對STM32編程進行系統(tǒng)的改造,徹底改變STM32編程的分散化現(xiàn)狀,打造一個完整的生態(tài)系統(tǒng)。目前eBox可以支持STM32F103全系列MCU。在今后的發(fā)展中會不斷地把eBox移植到其他MCU平臺。例如8051、NXP、飛思卡爾等。再構建一個超級生態(tài)圈,讓應用層幾乎不做任何修改就可以實現(xiàn)跨平臺移植。這是eBox最終發(fā)展的目的。
參考文獻:
[1]田軍鋒,林滸,姚壯,李杰.數(shù)控系統(tǒng)S型曲線加減速快速規(guī)劃研究[J].小型微型計算機系統(tǒng),2013(01).
[2]于洋,劉平.S型速度曲線進給率控制研究[J].制造技術與機床,2012(09).