本發(fā)明涉及在線可編程技術,尤其涉及一種支持調(diào)試接口的MCU在線編程系統(tǒng)。
背景技術:
在線可編程技術已在MCU中得以實現(xiàn),系統(tǒng)中始終駐留用于代碼更新的引導程序(BootLoader),該引導程序在MCU復位時執(zhí)行,根據(jù)外部條件決策運行現(xiàn)有程序或?qū)ο到y(tǒng)進行在線編程。開發(fā)者可利用上位軟件,通過產(chǎn)品固有的通信接口(USB、RS232或CAN等)對程序存儲器進行修改(既修改應用軟件),從而在不拆卸產(chǎn)品機箱的情況下使產(chǎn)品得到升級,特別適用于加固外設產(chǎn)品的調(diào)試與維護,可有效節(jié)約開發(fā)時間,降低開發(fā)成本。
但現(xiàn)有在線可編程系統(tǒng)不具有調(diào)試功能,無法在不拆卸產(chǎn)品機箱的情況下進行在線調(diào)試,在線可編程技術的優(yōu)勢難以充分發(fā)揮,不能有效提升產(chǎn)品的可維護性和可維修性。
技術實現(xiàn)要素:
為了解決以上的技術問題,本發(fā)明提出了一種支持調(diào)試接口的MCU在線編程系統(tǒng)。該系統(tǒng)由MCU在線編程支持固件和上位編程/調(diào)試軟件組成,實現(xiàn)簡單、有效。
所述MCU在線編程支持固件由引導程序和應用程序構成。其中引導程序長期駐留在系統(tǒng)內(nèi),不在程序更新過程中修改。該引導程序在MCU復位時執(zhí)行,根據(jù)系統(tǒng)當前狀態(tài)決策執(zhí)行當前程序或進行在線編程。
所述應用程序由實時操作系統(tǒng)(RTOS)內(nèi)核、在線編程支持模塊和功能性應用程序組成。RTOS內(nèi)核為在線編程支持模塊和功能性應用程序提供多線程調(diào)度與管理、內(nèi)存管理等基礎服務;在線編程支持模塊為具有較高優(yōu)先級的線程,負則響應編程與調(diào)試指令;功
能性應用程序為一組優(yōu)先級較在線編程支持模塊低的線程,負則實現(xiàn)產(chǎn)品功能,因具體產(chǎn)品而不同。
所述上位編程/調(diào)試軟件由人機交互模塊、通信模塊、“.hex”文件加載/解析模塊和“.map”文件加載/解析模塊組成。人機交互模塊負則引導開發(fā)者對MCU進行在線編程或調(diào)試;通信模塊負則向MCU發(fā)送編程指令和調(diào)試指令,并將所接收到的調(diào)試信息傳遞至人機
交互模塊;“.hex”文件加載/解析模塊負則加載并解析MCU工程編譯所產(chǎn)生的“.hex”文件得到程序更新數(shù)據(jù);“.map”文件加載/解析模塊負則加載并解析MCU工程編譯所產(chǎn)生的“.map”文件獲取調(diào)試信息。
該系統(tǒng)利用產(chǎn)品固有的通信接口,對難以拆卸的加固外設產(chǎn)品進行在線程序更新、調(diào)試和維護,以提高外設產(chǎn)品的可維護性與可維修性。
附圖說明
圖1為本發(fā)明系統(tǒng)結構框圖;
圖2為MCU程序存儲器區(qū)域劃分示例圖;
圖3為引導程序流程圖;
圖4為在線編程支持模塊流程圖。
具體實施方式
為對本發(fā)明專利有更加詳細的了解,下面結合附圖,對本發(fā)明專利的具體實施方式進行詳細描述。
該在線可編程系統(tǒng)由MCU在線編程支持固件和上位編程/調(diào)試軟件組成。其中MCU在線編程支持固件由引導程序和應用程序構成,上位編程/調(diào)試軟件由人機交互模塊、通信模塊、“.hex”文件加載/解析模塊、“.map”文件加載解析模塊構成,系統(tǒng)整體結構如圖1所示。
為實現(xiàn)在系統(tǒng)可編程功能,需要對MCU的程序存儲區(qū)域進行劃分,圖2展示了一種可行的劃分方法。其中引導程序在首次編程下載至程序存儲區(qū)后不再改寫,在線編程時僅更新應用程序區(qū)域中的數(shù)據(jù)。進行在線編程時,首先將接收自上位軟件的程序更新數(shù)據(jù)存放
至臨時存放區(qū),置位參數(shù)存放區(qū)中的在線編程標志位并復位MCU。復位后引導程序執(zhí)行,引導程序首先讀取參數(shù)存放區(qū)中的數(shù)據(jù)以判斷系統(tǒng)當前狀態(tài),若系統(tǒng)首次運行或在線編程標志位未置位,執(zhí)行現(xiàn)有應用程序;否則對臨時存放區(qū)中的程序更新數(shù)據(jù)進行校驗,校驗正確則對應用程序存儲區(qū)域進行擦寫,擦寫完成后清零在線編程標志位并使MCU復位,校驗錯誤則清零在線編程標志位并執(zhí)行現(xiàn)有應用程序。其程序流程如圖3所示。
應用程序又可劃分為RTOS內(nèi)核、在線編程支持模塊和功能性應用程序。其中在線編程支持模塊為系統(tǒng)核心模塊,其本質(zhì)為一個具有較高優(yōu)先級的線程,負則實時響應來自上位軟件的編程與調(diào)試指令。收到調(diào)試指令時向上位軟件回復所需調(diào)試信息;收到編程指令時解析并存儲程序更新數(shù)據(jù),收到完整程序更新數(shù)據(jù)后置位在線編程標志位,并使MCU復位;未收到上位機指令時,該模塊始終處于掛起狀態(tài),不影響功能性應用程序的執(zhí)行。其程序流程如圖4所示。
上位編程/調(diào)試軟件又可劃分為人機交互模塊、通信模塊、“.hex”文件加載/解析模塊和“.map”文件加載/解析模塊。人機交互模塊向開發(fā)者提供友好的人機界面,實現(xiàn)源文件路徑設定、編譯器選擇、在線編程、調(diào)試功能使能/禁用、全局變量實時顯示和調(diào)試字符串打印功能;通信模塊利用產(chǎn)品固有通信接口,根據(jù)指定通信協(xié)議與MCU進行通信,完成數(shù)據(jù)的打包與解析;“.hex”文件加載/解析模塊解析MCU工程編譯所產(chǎn)生的“.hex”文件,截取應用程序段的內(nèi)容,得到程序的起始地址、長度與程序更新數(shù)據(jù),并對數(shù)據(jù)進行初次校驗確保其合法性;“.map”文件加載/解析模塊解析MCU工程編譯所產(chǎn)生的“.map”文件,得到源代碼中各全局變量的基址與長度,以在調(diào)試過程中實現(xiàn)全局變量的實時顯示。