申同強 宋國志 荊淑霞



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