胡琪 顏科峰 蔣國軍
(第七一五研究所,杭州,310023)
陣列信號處理是現(xiàn)代信號處理的重要分支,它被廣泛應用于雷達、移動通信、聲吶、地震勘探、射電天文、電子醫(yī)療等多個領域。陣列信號源包含多個按一定空間規(guī)則排布的信號產生單元,通過控制每個單元的信號延時產生不同形狀的波束。基于這個目的,陣列信號源有時被設計成為“一個主控,多個陣元”的結構。主控是指上位計算機,陣元即信號產生單元。信號產生單元通常以MCU或DSP為核心,獨立產生信號和計算延時。這樣的硬件組成可以提供更靈活多樣的輸出,但通常會增加軟硬件維護的復雜性和備件成本,尤其在信號陣元數(shù)量很大時,所以,研究一種適用于這種系統(tǒng)結構的固件維護與升級方法具有重要意義。
陣列信號源可抽象為圖1所示。其中用戶通過上位機生成指令,指令通過通信節(jié)點進行協(xié)議或接口轉換,然后被送到各個信號產生單元生成信號。本文描述的陣列信號源系統(tǒng)中,信號產生單元的核心是Freescale公司的MCF52259,這是一款32位MCU,主頻最高可達80 MHz,片上包含64 kB的RAM和512 kB的Flash ROM,接口包含UART、I2C、SPI等[1]。這款芯片可以在程序中對Flash ROM進行讀寫操作,而且程序可以運行在RAM或Flash ROM中,這些特性將被用于這個設計中。上位機與通信節(jié)點間使用LAN網絡通信,通信節(jié)點與信號產生單元間使用UART接口通信。上位機對各個信號產生單元進行程序更新。
圖 1 陣列信號源架構圖
信號產生單元的固件更新,實質上就是將在上位機編譯產生的目標程序燒錄到信號產生單元MCU的Flash指定空間上。MCF52259的目標文件是標準格式的S19文件,這是一個ASCII碼文件,需要將內容轉換成十六進制進行傳輸。根據文件結構定義,S19文件分為若干個固定大小的幀,每幀內容包括幀頭、長度、目標地址、有效數(shù)據與校驗和[2]。在程序更新前,上位機將對S19文件進行預處理,給每幀添加一個編號。信號產生單元可以通過編號判斷文件中幀的完整性,通過校驗和判斷幀內數(shù)據的完整性,如圖2所示。
圖 2 S19文件結構
程序更新過程中,上位機與節(jié)點板之間進行多次數(shù)據傳輸,每次傳送一個幀。節(jié)點板將內容轉發(fā)給各個信號產生單元。信號產生單元接收到數(shù)據后需要進行校驗與反饋,僅當校驗通過才能執(zhí)行寫入操作,對校驗失敗的幀應進行重發(fā),確保固件的完整性。圖3是上位機工作流程圖。
圖 3 上位機工作流程圖
信號產生單元工作流程如圖4(a)所示,正常的更新過程流程如圖4(b)所示。對信號產生單元而言,整個操作流程涉及到Flash擦寫操作,如果操作過程中某個環(huán)節(jié)出問題,比如上位機發(fā)送過程中出錯且無法恢復時,將會使所有信號源的固件失效。這里采用備份最小系統(tǒng)的方法來加強系統(tǒng)的可靠性。信號產生單元通過串口接收到更新指令后進入更新模式。更新模式過程中,首先備份一個最小系統(tǒng)到SRAM 中,然后執(zhí)行具體的更新操作。最小系統(tǒng)代碼中包含了必要的硬件初始化設置、串口收發(fā)等操作,能獨立完成程序更新任務,更重要的是,它也能實現(xiàn)自我備份和還原,防止最小系統(tǒng)在更新過程中遭到破壞。當更新操作中檢測到不可恢復錯誤時,比如主機失去響應,看門狗程序將被激活,最小系統(tǒng)被寫回Flash中,系統(tǒng)下次加電時直接啟動最小系統(tǒng),避免系統(tǒng)因更新失敗而無法啟動。正常更新過程中,因為Flash會被擦除,所以期間需要運行的代碼應該被拷貝到內存上,然后通過修改程序指針的方法從內存中運行代碼[2-3],完成擦寫Flash、與主機通信接收新程序段等任務。接收過程中,程序將完成校驗和比對、幀序號比對,一旦比對出錯將生成信息反饋到主機。
圖 4(a) 信號產生單元工作流程
圖 4(b) 更新操作流程
實際測試中,我們對六路信號產生單元同時進行了固件更新,其中S19文件大小為183.8 kB,每幀長度為138 byte,由于每個字符的ASCII碼占用8 bit,轉換為十六進制數(shù)后空間減半,算出實際幀數(shù)為682幀。最小系統(tǒng)在其中占用了約40幀空間,即 5 kB左右大小,相對于 512 kB大小的 Flash ROM來說完全可以接受。
傳輸速率方面,為保證上位機發(fā)送數(shù)據后信號產生單元有足夠時間進行處理,每幀發(fā)送結束后上位機都進行延時。起始幀因為要等待Flash擦寫完成還要額外延時5 s,其余每幀發(fā)送完畢后延時20 ms,總耗時小于20 s。
本文方法在線進行,無需外加電路,僅通過已有的硬件鏈路就可完成,避免用仿真器對硬件進行逐個操作,它能將本來需要幾個小時甚至數(shù)天才能完成的大量繁瑣工作在幾分鐘內完成,節(jié)省時間、人力和硬件資源。在燒寫過程中備份最小系統(tǒng)的設計能增強可靠性,有效降低系統(tǒng)升級維護風險。這種方法已在工程項目中得到應用,并適用于具有類似架構的其他大型系統(tǒng)。
[1] Freescale. MCF52259 ColdFire Integrated Microcontroller Reference Manual[M].2009.
[2] Freescale. Implement UART Boot-loader On Coldfire V1 Products[M].2010
[3]Freescale.TN259:Placing Varibles and Code in ROM Using the Codewarrior Linker Configuration File for ColdFire Architecture[M].2008.
[4] Freescale. ColdFire編程參考手冊[M].2009.
[5]諶利. 深入淺出ColdFire系列32位嵌入式微處理器[M].北京: 北京航空航天大學出版社,2009.