本發明屬于嵌入式,特別涉及一種基于tftp具有回滾操作的dsp應用動態更新方法。
背景技術:
1、dsp處理器是數字信號處理中常使用的主控芯片,其特有的乘加運算邏輯單元和流水線技術,可以高效的實現數字信號處理算法。ti公司生產的c66x系列dsp芯片具有高主頻、強運算能力和豐富接口資源等特點,在業內被廣泛的使用。
2、在dsp硬件系統中,程序代碼的固化和嵌入式自啟動是一個關鍵技術。行業內主流的設計方案使用的是flash啟動方式。直接通過dsp的局部總線或低速串行接口(如spi、i2c等)連接片外flash,同時硬件配置dsp為flash啟動模式。嵌入式系統設備的應用程序代碼將固化到flash中,當系統上電后,dsp將會直接尋址flash,運行應用程序。然而,當產品升級換代,需要更新flash中的應用程序時,維護人員不得不進行現場設備開箱操作,通過板卡連接仿真器,更新flash內的應用程序。同時在更新過程中,一旦出現更新鏡像錯誤或者系統故障掉電,導致更新失敗時,之前鏡像也會丟失,導致系統癱瘓和不可追溯。如此進行應用程序代碼更新,必將使得設備維護成本高、周期長和故障率高。
3、因此,如何提供一種基于tftp具有回滾操作的dsp應用動態更新方法成為本領域亟需解決的技術難題。
技術實現思路
1、本發明的目的是提供一種基于tftp具有回滾操作的dsp應用動態更新方法。
2、根據本發明,提供了一種基于tftp具有回滾操作的dsp應用動態更新方法,包括,
3、步驟s1、編寫dsp的“bootload”程序:初始化dsp的系統和完成應用程序的解析和加載;
4、步驟s2、編寫“flash動態更新程序”:獲取待更新程序數據和進行flash更新;
5、步驟s3、應用程序中完成“flash動態更新程序”的加載啟動;
6、步驟s4、通過固化“bootload”程序和“flash動態更新程序”代碼,完成前期準備工作;當所述前期準備工作完成,則進入了“動態加載”階段;所述“動態加載”階段完成后,獲取待加載程序數據,進入“應用更新”階段,將獲取的待加載程序數據燒寫到flash中。
7、可選地,在所述步驟s1中,所述初始化dsp的系統包括:dsp的核時鐘、片外ddr3和調試串口。
8、可選地,在所述步驟s1中,所述應用程序的解析和加載包括:
9、通過判定eeprom中所記錄標識的奇偶性,來選擇是解析和加載ping緩存還是pong緩存中的應用代碼;
10、通過解析每段數據的源地址、目的地址和長度完成從flash到內存的代碼搬移。
11、可選地,在所述步驟s2中,所述獲取待更新程序數據包括:
12、獲取待更新程序數據主要通過網口來實現;在程序運行之前,先在pc端開啟一個tftp服務器任務,并把待更新程序數據放入服務器開放的目錄下,等待tftp客戶端連接;在程序運行之初,代碼將初始化dsp網口,啟動標準tcp/ip協議棧,建立一個tftp客戶端線程,同pc端的tftp服務器進行連接,而后獲取待更新程序數據和待更新程序數據的長度,并存放在ddr3中。
13、可選地,在所述步驟s2中,所述進行flash更新包括:
14、在flash中,應用存儲空間規劃為兩塊,分別命名為ping存儲空間和pong存儲空間,用于存放不同的應用程序;而應用程序的具體存放哪里,則需要通過eeprom中的標識來進行判定;所述判定的原則,選用奇偶判別法:在更新flash前,讀取所述標識,如果為偶數,則在ping存儲空間進行代碼數據寫入;如果為奇數,則在pong空間進行代碼數據寫入;而后對寫入的代碼數據進行回讀,進行crc校驗;當crc校驗通過,則表示此次應用更新成功,則需要把eeprom中的標識加1;否則,則此次更新失敗,需要通過調試串口,通知pc機。
15、可選地,在所述步驟s2中,還包括:
16、為了確保系統不掉電,則在更新完成后,通過跳轉dsp的pc指針到flash基地址,來運行“bootload”程序,實現dsp的重啟動,加載更新后的應用程序。
17、可選地,在所述步驟s2中,還包括:
18、如果更新失敗,同樣跳轉dsp的pc指針到flash基地址,由于eeprom中的標識沒有更新,依舊對應更新前的flash應用存儲空間,因此實現回滾原應用代碼到dsp內存,恢復到更新前的工作狀態。
19、可選地,在所述步驟s3中,為了滿足應用更新的實時性,需要在應用程序中建立一個tcp的服務器線程,等待pc機發送的更新命令;而pc機端則通過一些網絡通用軟件建立一個tcp客戶端,發送指定的tcp數據包,來告知dsp開始進行應用的更新。
20、可選地,在所述步驟s3中,所述加載啟動包括:
21、dsp一旦收到命令,則關閉所有端口,釋放所有資源;而后按照預定義的地址,從flash中讀取“flash動態更新程序”的代碼數據,開始進行解析;按照加載數據的格式,獲取程序的入口地址、各個段的內存存放地址和段長度,再根據所述程序的入口地址、各個段的內存存放地址和段長度,完成flash到內存的數據搬移;當所有的代碼搬移完成,則操作pc指針跳轉到解析的程序入口地址。
22、可選地,在所述步驟s4中,所述“動態加載”階段包括:
23、dsp上電后,dsp將啟動“bootload”程序,選擇ping存儲空間的應用程序或者pong存儲空間的應用程序進行加載和啟動;此時dsp就已達到動態應用更新前的正常工作狀態:dsp已上電,應用已運行;在所有的應用中,應當建立一個tcp服務器的任務,以等待pc機請求的動態更新要求,一旦接收到請求,dsp將讀取并解析“flash動態更新程序”代碼,后按照解析的段地址和段長度進行代碼數據的從flash到內存的搬移,最后通過控制pc指針來啟動“flash動態更新程序”代碼的運行;一旦“flash動態更新程序”代碼運行,則dsp會啟動一個tftp客戶端的任務,來連接pc機端的tftp服務器,從而獲取待更新的數據。
24、本發明所帶來的有益效果如下:
25、從上述方案可以看出,本發明實施例提供一種基于tftp具有回滾操作的dsp應用動態更新方法,具有如下有益效果:提出可以避免設備應用升級時復雜、繁瑣的開箱機械操作,提高工作效率,減小機械操作帶來的設備損壞風險;同時其特創的更新失效回滾技術,確保因掉電或存儲壞塊等突發原因造成更新失敗時,dsp不至于系統崩潰,而是返回到更新前的工作狀態,再次進行更新操作。
1.一種基于tftp具有回滾操作的dsp應用動態更新方法,其特征在于,包括:
2.根據權利要求1所述的基于tftp具有回滾操作的dsp應用動態更新方法,其特征在于,在所述步驟s1中,所述初始化dsp的系統包括:dsp的核時鐘、片外ddr3和調試串口。
3.根據權利要求1所述的基于tftp具有回滾操作的dsp應用動態更新方法,其特征在于,在所述步驟s1中,所述應用程序的解析和加載包括:
4.根據權利要求1所述的基于tftp具有回滾操作的dsp應用動態更新方法,其特征在于,在所述步驟s2中,所述獲取待更新程序數據包括:
5.根據權利要求1所述的基于tftp具有回滾操作的dsp應用動態更新方法,其特征在于,在所述步驟s2中,所述進行flash更新包括:
6.根據權利要求5所述的基于tftp具有回滾操作的dsp應用動態更新方法,其特征在于,在所述步驟s2中,還包括:
7.根據權利要求6所述的基于tftp具有回滾操作的dsp應用動態更新方法,其特征在于,在所述步驟s2中,還包括:
8.根據權利要求1所述的基于tftp具有回滾操作的dsp應用動態更新方法,其特征在于,在所述步驟s3中,為了滿足應用更新的實時性,需要在應用程序中建立一個tcp的服務器線程,等待pc機發送的更新命令;而pc機端則通過一些網絡通用軟件建立一個tcp客戶端,發送指定的tcp數據包,來告知dsp開始進行應用的更新。
9.根據權利要求8所述的基于tftp具有回滾操作的dsp應用動態更新方法,其特征在于,在所述步驟s3中,所述加載啟動包括:
10.根據權利要求1所述的基于tftp具有回滾操作的dsp應用動態更新方法,其特征在于,在所述步驟s4中,所述“動態加載”階段包括: