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