王源源
(成都東軟學院,四川 成都611844)
自20世紀70年代單片機出現以來,嵌入式系統已獲得了較為深入的研究,隨著嵌入式技術的不斷成熟,基于嵌入式系統編寫特制電路下的設備驅動程序也越來越受到人們的青睞。在所有的操作系統中,VxWorks的系統結構是一個相當小的微內核的層次結構,內核支持VxWorks在較高層次所需要的多任務環境、進程間通信和同步功能,并以其良好的可靠性和卓越的實時性被廣泛應用于通信、軍事、航空、航天等高精尖技術及實時性要求極高的領域。本文主要從軟硬件的可靠性設計方面來闡述,硬件方面采用了結構化、模塊化的設計思想,硬件平臺結構清晰、易于裁剪[1];軟件方面,對設備驅動可靠性的設計著重于設備驅動與操作系統內核的有效分離、雙驅動冗余備份及智能切換技術[2-3]。
從功能、接口、結構、模塊間通訊方式等方面來考慮劃分模塊,我們可以將本系統分成數據采集模塊、控制模塊和尾翼電機控制[4]模塊。系統整體結構如圖1所示。

圖1 系統控制整體框圖
(1)控制模塊采用基于 ARM920t內核的S3C2410A微處理器作為控制系統的中央控制器,該芯片主頻400MHz,最高可達到533MHz,內含多種設備接口,硬件支持從NorFlash啟動并可增加Nand-Flash容量。
(2)數據采集部分采用的是飛思卡爾公司的MMA7260QT三軸向加速傳感器,其采用了信號調理、單極低通濾波器和溫度補償技術,并提供4個量程可選,用戶可在4個靈敏度中做選擇,且帶有低通濾波并已做零g補償。MMA7260QT傳感器可準確測量三軸低量級下降、傾斜、移動、定位、撞擊和震動,并且帶符號輸出表示測量值的方向。當周圍環境發生變動時,通過MMA7260QT型三軸小量程加速傳感器,可將X軸、Y軸和Z軸變化的加速度轉換為數字信號供ARM處理器處理。

圖2 硬件模塊容錯框圖
(3)尾翼電機控制部分采用的是TA8435H電機驅動芯片,通過MMA7260QT型三軸小量程加速傳感器采集的數據,經ARM處理器處理后輸出信息,來控制電機無極調速,從而控制X、Y、Z軸的功放,進而控制X、Y、Z軸電機的轉速,以達到控制方向的目的。
根據調查研究,當前的硬件設計能力已相當成熟,以往設計嵌入式硬件主要是從元器件的選用與控制、熱設計、電磁兼容設計等方面來保證其可靠性,只著眼于所開發的產品個體,著眼于可靠地實現系統的各項功能,并未系統地從橫向考慮開發相近產品所需的條件或從縱向考慮產品的升級換代,造成多個產品設計相對孤立、設計開發周期長、效率低,增加了產品升級和新產品研發的難度。
在本設計中,我們除了遵循傳統的嵌入式硬件設計方法外,還引進了模塊化和容錯設計思想[5-6]。
模塊化設計的核心思想是以少變的系統構思應付多變的需求,以內部的標準化應付外部的個性化和多樣化,通過可重用的模塊組合得到盡可能多的品種,最大限度地滿足不同用戶的需求,同時也便于設備調試和維修。
同時,對于電機控制驅動模塊,我們可以采用容錯控制原理,即在以前的三路電機基礎上增加一到兩路電機控制作為備用電機,這樣的話,當三路電機中某路偶爾出現問題時就可調用備用電機,從而使得其在各種惡劣的環境下都能可靠工作。硬件模塊容錯框架原理如圖2所示。
從功能、接口、結構、模塊間通訊方式等方面來考慮劃分模塊,我們可以將本設計分成傳感器輸入模塊、控制模塊和尾翼電機控制模塊,這樣既可發揮模塊化設計的優勢,又能避免模塊組合帶來的兼容性[7-8]問題。
(1)控制模塊(主控CPU)的功能主要是實現電機控制以及傳感器信號的處理和控制。對電機的控制采用模塊化方法,即選用已成熟的電機驅動器直接控制電機,因此,控制模塊硬件電路的設計主要解決電機驅動器與ARM應用板之間的接口問題以及相關傳感器信號采樣問題。軟件的設計遵循與硬件相結合的方法,即根據性能要求,基于硬件電路的設計進行相關軟件算法的研究??刂颇K的目的是根據輸入控制信號、傳感器采樣信號,實現對尾翼控制的3個電機進行協調控制,使之能實現左、右、上步進電機的轉速、轉動時間、正反轉的控制,即三自由度控制,問題的核心在于對各電機的啟停、速度、方向進行控制。
(2)對于電機控制驅動模塊,單獨設計一個CPU控制一路電機。通過片間接口模塊接收來自主控CPU的目標位置數據,進行點對點控制。即由模塊中的CPU完成發送脈沖指令,實現加、減速運動的控制,使電機運動至主控CPU指定位置。在此處,電機控制模塊的本質就是“黑匣子”,擁有公開接口,實現完整功能,無需知道其內部情況就可在不同系統中進行電機的點對點控制,從而體現其通用性。
(3)容錯模塊選擇器其實是一個多分支選擇電路,當主轉電機出現異常事故時,可以通過檢測驅動芯片返回的異常信號來自動切換到備用電機,從而保證了系統在異常的情況下能夠正常工作。
總之,在設計中運用模塊化和容錯的設計思路,可使各單元工作要求明確,提高了總體設計的可行性和可靠性,縮短了設計周期,降低了制造成本,便于設備調試和維護,增強了抗干擾性,加強了各個模塊的通用性,為以后的升級換代預留了空間。
驅動軟件在嵌入式系統中起到了橋梁作用,應用軟件通過其找到與硬件相連的接口,進而來控制硬件,因此嵌入式系統的可靠性除了在硬件方面要得到保障以外,很大一部分依賴于驅動軟件的高可靠性。
根據現有的關于驅動程序的可靠性研究[9],驅動可靠性的提高依賴于對驅動程序的隔離,因而如何將設備驅動程序運行空間與內核運行空間進行有效隔離,成為了我們著重關注的問題。
根據驅動程序進行隔離后所處的地址空間,一般將設備驅動隔離在3個不同位置:
(1)驅動程序仍然運行在內核態,但要加強對驅動程序運行時的權限限制和對驅動程序的安全檢查;
(2)將驅動程序遷移到用戶態空間[10],把驅動程序當成應用程序來運行;
(3)將驅動程序隔離在一個單獨系統中,運行驅動程序和上層系統通過微內核進行通訊。
在本設計中我們采用的是第二種提高驅動可靠性的方法,即將驅動程序遷移到用戶態空間,其好處有二:
(1)與內核地址空間隔離,驅動的崩潰不會引起系統崩潰;
(2)驅動開發與調試均可使用用戶空間的編譯工具和調試工具,并且引入了模塊化的設計思想,使得驅動的開發與調試更加便捷。
驅動應用框圖如圖3所示。

圖3 用戶態驅動結構示意圖
同時,提高驅動程序的可靠性還可以采用雙驅動冗余備份及智能切換技術[2-3],該技術能進行智能切換,即一個驅動作為主驅動正常工作,另一個驅動作為備用驅動處于激活狀態。當主驅動發生故障時,系統自動切換至備份驅動繼續工作,這就保證了整個系統的高可靠性。其原理如圖4所示。
本文介紹了嵌入式VxWorks下的一種高可靠性尾翼電機容錯控制模塊,成功實現了通過外部傳感器的輸入信號來控制各個方向的電機的轉速、轉動方向和轉動時間,其已經在各種環境下進行過嚴格測試并用于工業自動化控制中,實踐證明性能穩定可靠。
[1]潘繼軍.基于ARM的嵌入式系統實驗分析[J].微計算機信息,2006(5):129-131,66.
[2]胡國鵬,劉利強.VxWorks環境下雙冗余以太網卡技術在底層驅動中的實現[J].應用科技,2005,32(8):43-45.
[3]劉利強,戴運桃,周衛東.基于VxWorks的雙端口網卡智能雙冗余驅動[J].電子技術應用,2006(7):64-66.
[4]王鴻鈺.步進電機控制技術入門[M].上海:同濟大學出版社,1990.
[5]姚放吾.嵌入式系統的硬件/軟件協同設計[J].微計算機信息,2001(3):1-3.
[6]蔡建平.關于嵌入式應用開發技術[J].單片機與嵌入式系統應用,2001(3):5-11,34.
[7]薛萍冰.電子系統中抗干擾技術的實用經驗[J].國外電子測量技術,2008,27(8):69-71.
[8]李舜陽,李華.印制電路板的電磁兼容設計[J].電子產品可靠性與環境試驗,2002(2):18-22.
[9]周啟平,張楊.VxWorks下設備驅動程序及BSP開發指南[M].北京:中國電力出版社,2004.
[10]顏躍進,秦瑩,孔金珠,等.操作系統設備驅動可靠性研究綜述[J].計算機工程與科學,2009,31(5):121-125.