南京熊貓漢達科技有限公司 江蘇 南京 210000
隨著科技的不斷進步,軍用通信設備的功能逐漸擴展,應用場合和功能需求也表現出多樣化的特征。傳統的嵌入式軟件開發模式已經不能滿足日益增長的產品研發需求。嵌入式軟件在確保能夠安全、穩定的應用在各種通信設備的同時,還要能夠降低需求變更帶來的開發風險,能夠在不斷修改、迭代中進行演化和發展,所以選擇一種合理的開發模式,構建一種適應性強的軟件架構,具有非常重要的意義。
目前嵌入式軟件開發模式和軟件架構的現狀不容樂觀,其主要體現在以下幾個方面,首先現階段針對軟件進行開發的過程中,主要是根據用戶提出的需求進行,在整個開發周期中缺少大局觀,只追求實現功能,沒有考慮未來的維護和發展,所以導致由于系統資源的消耗過度,而使嵌入式軟件在代碼制作和功能開發的過程中復用度相對較低,同時還導致軟件在實際使用過程中,因為用戶的需求種類多,而影響開發過程中的統籌效率。然后是由于現階段在嵌入式軟件的應用過程中,需要和硬件設備及驅動設備配合使用,但是在實際使用過程中因為硬件設備和驅動設備與嵌入式軟件可能會出現不符合的問題,并且兼容性較差,所以導致很多嵌入式軟件在設備中的應用出現不兼容的問題,從而影響嵌入式軟件的后期開發和架構建設。最后是由于某項細小需求變更或者軟件自身代碼可能存在的錯誤問題,要在無數的地方小心翼翼地修改,或者不斷地打補丁,軟件架構快速腐化,從而出現工作效率較低、軟件難于維護并且不安全等問題[1]。
嵌入式軟件的開發流程和桌面型軟件的開發流程相比具有相對較大的差別。由于嵌入式處理器種類繁多,不同處理器平臺又有各自的編譯器和調試軟件,嵌入式軟件開發不僅要做上層的業務交互,還要對底層的硬件接口芯片進行控制,比如常用的RS232接口、SPI接口、LCD控制器接口等。當設備需求較為復雜時,系統中將會出現多種嵌入式芯片,舉個較為常見的應用實例就是,使用ARM作為控制處理器,完成操作輸入和顯示輸出,使用DSP作為數據高速運算處理器,使用FPGA作為數據采集和邏輯電路控制器,所以在開發的過程中必須要考慮和硬件系統的兼容性,如果嵌入式軟件在開發完成以后和硬件設備不具有良好的兼容性將導致嵌入式軟件的使用效率下降和兼容性錯誤問題。在使用多平臺的研發條件進行研發的過程中,要盡量實現資源共享,只有這樣才能夠盡量減少研發的時間,降低研發成本,這是現階段各大軟件開發公司追求的研發趨勢。軟件要符合預期,就需要完全的確定性,以往開發過程最常選用的就是瀑布式開發模型,遵循開發計劃-需求分析-軟件設計-編碼-測試-運行維護嚴謹的線性開發過程,這種模式過于理想化。而實際上需求總是會變化的,軟件設計作為開發周期中最重要的階段,設計越彈性、越靈活的軟件架構,在功能維護和擴展時,變更的成本就越低[2]。
嵌入式軟件在架構建設的過程中要融入分層設計、分模塊設計的思想,使程序結構高內聚低耦合。任何軟件根據其內部職能都可以分成多個層次,分層設計已有很多成功的應用實例,最典型的就如OSI七層網絡模型。這里用一個通信設備的控制器軟件為例,分析分層設計的必要性。
該軟件的主要功能是提供操作顯示交互和業務服務,架構中層與層之間不能跨層調用,模塊之間各自獨立,區分內外接口。硬件驅動層包含各功能模塊正常運行所需要的管腳配置、時鐘配置、串口、數據讀寫、存儲等驅動程序并提供接口給功能模塊層調用。按鍵掃描模塊調用硬件驅動層GPIO和TIMER提供的API函數實現讀取鍵值的功能,屏幕顯示模塊調用GPIO和LCD提供的API函數實現顯示內容的輸出,串口通信模塊調用USART提供的API實現與其他設備的數據交互,數據存儲調用FLASH提供的API完成數據讀寫與存儲,同時各功能模塊提供接口給后臺服務層。后臺服務層通過調用功能模塊層的接口實現標準邏輯處理和控制協議封包與拆包,向前端提供基礎服務。前端應用層將各個后臺服務進行整合調用,完成整個產品的功能。這里好的API接口設計就顯得非常重要,接口設計為各層各模塊分工協作提供前提,為模塊間實現解耦提供可操作性。當模塊之間擺脫技術細節,甚至可以進行并行軟件開發。分層后的優勢很明顯,如果平臺更換或驅動變了,只需要修改驅動層;如果功能擴展了或裁剪了,只需要修改功能模塊層;如果編程語言自己定義的控制協議修訂了,只需要修改服務層,都不會影響前端應用的開發。分層設計的軟件,代碼結構清晰容易理解,層與層通過接口隔離利于問題排查,函數抽象化便于復用。開發者可以根據用戶的具體需求對軟件進行合理的配置,從而既提高了軟件的應用范圍,又提升了軟件的應用率[3]。
目前,嵌入式軟件已經在我國軟件市場中占有較大的比例,但是在實際研究過程中因為經費和研究水平問題導致嵌入式軟件的應用具有較大的局限性,所以,負責軟件開發和架構建設的工作人員必須要盡量縮短產品的研發周期,并且使用更多先進技術提高研發效率。