基於乙太網的程序固化方法
2023-07-28 21:57:46 1
基於乙太網的程序固化方法
【專利摘要】本發明涉及一種基於乙太網的程序固化方法,包括以下步驟:1】被加載端初始化:2】加載端與被加載端建立網絡連接,完成同步:3】加載端將待固化文件加載到被加載端:4】被加載端根據文件加載信息表調用寫Flash驅動程序將待固化文件逐一固化進Flash存儲器中。本發明利用乙太網傳輸速率較串口等介質更快的特性,將待固化文件快速地從加載端加載到被加載端,有效縮短文件加載所需時間,提高程序固化效率。
【專利說明】基於乙太網的程序固化方法
【技術領域】
[0001]本發明屬於計算機軟體應用領域,具體涉及一種基於乙太網的程序固化方法。
【背景技術】
[0002]嵌入式軟體在開發調試完畢後,需要通過固化軟體將其固化到目標機的Flash存儲器中。固化過程,主要分為將待固化文件從加載端(一般為PC機)加載到被加載端(目標機)和被加載端將待固化文件寫入Flash存儲器兩個步驟。將待固化文件從加載端加載到被加載端,可以採用不同的傳輸介質,如串口、乙太網、AFDX總線等。在不同的傳輸介質條件下,文件加載過程所耗費的時間也各不相同。比如採用串口作為傳輸介質,文件傳輸速率低,在固化大文件時,需要耗費很長時間,固化效率低下。因此,採用一種高速率的傳輸介質,能夠縮短加載時間,提高固化效率。
【發明內容】
[0003]本發明提供一種基於乙太網的程序固化方法,利用乙太網傳輸速率較串口等介質更快的特性,將待固化文件快速地從加載端加載到被加載端,有效縮短文件加載所需時間,提聞程序固化效率。
[0004]本發明的技術解決方案:
[0005]基於乙太網的程序固化方法,其特殊之處在於:包括以下步驟: [0006]I】被加載端初始化:
[0007]啟動作業系統,初始化文件加載器,啟動文件加載任務,建立通訊埠,等待接收來自加載端的命令請求;
[0008]2】加載端與被加載端建立網絡連接,完成同步:
[0009]3】加載端將待固化文件加載到被加載端:
[0010]3.1】加載端向被加載端發送多個加載數據包;每個加載數據包包括一個加載命令字、一個待固化文件ID、一個待固化文件總塊數、加載數據包所對應的當前塊號、加載數據包所包含的有效數據、有效數據長度及校驗碼;所述校驗碼為加載端根據有效數據計算得出;根據待固化文件的總塊數將對應待固化文件分成多個數據塊,並用塊號對多個數據塊依次編號;
[0011]3.2】被加載端逐一接收加載數據包:
[0012]3.2.1】被加載端接收第一個加載數據包,根據接收到的第一個加載數據包中文件總塊數為第一個待固化文件申請相應內存空間,取得第一個待固化文件內存空間的起始地址;
[0013]將第一個加載數據包中的有效數據存儲到當前塊號所對應的內存空間中;
[0014]被加載端的文件加載器將待固化文件ID、內存空間起始地址寫入到文件加載信息表中;
[0015]3.2.2】繼續接收加載數據包,判斷當前所接收到的加載數據包中待固化文件ID與上一個加載數據包中的待固化文件ID是否一致:
[0016]如所接收到的加載數據包中待固化文件ID與上一個加載數據包中的待固化文件ID 一致,則屬於上一個待固化文件的加載數據包,將所接收到的當前加載數據包中包含的有效數據存儲到當前塊號所對應的內存空間中;
[0017]如所接收到的加載數據包中待固化文件ID與上一個加載數據包中的待固化文件ID不一致,則屬於下一個待固化文件的加載數據包,根據接收到的當前加載數據包中文件總塊數為當前待固化文件申請相應內存空間,取得當前待固化文件內存空間的起始地址;
[0018]將當前加載數據包中的有效數據存儲到當前塊號所對應內存空間中;
[0019]被加載端的文件加載器將待固化文件的ID、內存空間起始地址寫入到文件加載信息表中;
[0020]同時將累計得到的上一個待固化文件的有效數據總長度寫入到文件加載信息表的相應位置;
[0021]3.2.3】回到步驟3.2.2】,直至接收不到加載數據包;
[0022]3.3】向加載端返回加載命令響應包;
[0023]3.4】加載端發送燒寫數據包:
[0024]3.4.1】加載端向被加載端發送多個燒寫數據包,所述燒寫數據包中包含待固化文件ID以及相應的Flash存儲器固化地址;
[0025]3.4.2】被加載端接收到所有燒寫數據包後,根據各個燒寫數據包中待固化文件ID將其對應的Flash存儲器固化地址添加到文件加載信息表中;
[0026]4】被加載端根據文件加載信息表調用寫Flash驅動程序將待固化文件逐一固化進Flash存儲器中。
[0027]在步驟4】之後還包括校驗步驟:
[0028]將已經固化在Flash存儲器中的固化文件的內容與內存空間中的待固化文件內容逐一進行比對,並將比對結果返回給加載端。
[0029]上述步驟I】的具體步驟為
[0030]1.1】被加載端啟動作業系統;
[0031]1.2】文件加載器初始化,將文件加載信息表清零;
[0032]1.3】打開一個基於連接的目標機套接字;
[0033]1.4】將目標機套接字與其地址綁定;
[0034]1.5】使能目標機套接字連接;
[0035]1.6】等待接收加載端命令請求。
[0036]上述步驟2】的具體步驟為:
[0037]2.1】加載端初始化到 被加載端的套接字連接;
[0038]2.2】加載端向被加載端發送同步請求數據包;
[0039]2.3】被加載端接收同步請求數據包,執行同步命令處理程序,並將同步完成的信息封裝進同步命令響應包反饋回加載端;
[0040]2.4】加載端接收到被加載端返回的同步命令響應包後,確認同步完成;
[0041]還包括將有效數據存儲到內存空間之前進行有效數據校驗步驟:
[0042]被加載端根據有效數據計算一個比對校驗碼,將比對校驗碼與加載數據包中的對應校驗碼進行比較,如果一致,則存儲有效數據;如果不一致,則向加載端返回錯誤提示。
[0043]本發明所具有的優點:
[0044]1、本發明採用乙太網傳輸能顯著提高程序固化效率,以固化一個16M大小的二進位文件為例,採用基於串口的固化方法,需要I個小時,而採用本方法,只需6分鐘,時間縮短到原來的十分之一。
[0045]2、本發明的加載過程安全可靠,確定性強。
【專利附圖】
【附圖說明】
[0046]圖1基於乙太網的的程序固化流程圖。
【具體實施方式】
[0047]基於乙太網的程序固化方法具體實施步驟如下:
[0048]步驟1:被加載端啟動作業系統,初始化文件加載器,啟動文件加載任務,建立通訊埠,等待接收來自加載端的命令請求。
[0049]本步驟實現流程如下:
[0050]1.1)被加載端啟動作業系統;
[0051]1.2)文件加載器初始化,將文件加載信息表清零;
[0052]1.3)打開一個基於連接的目標機套接字;
[0053]1.4)將目標機套接字與其地址綁定;
[0054]1.5)使能目標機套接字連接;
[0055]1.6)等待接收加載端命令請求;
[0056]步驟2:加載端與被加載端建立網絡連接,完成同步。
[0057]本步驟實現流程如下:
[0058]2.1)加載端初始化到被加載端的套接字連接;
[0059]2.2)加載端向被加載端發送同步請求數據包;
[0060]2.3)被加載端接收同步請求數據包,執行同步命令處理程序,並將同步完成的信息封裝進同步命令響應包反饋回加載端;
[0061]2.4)加載端接收到被加載端返回的同步命令響應包後,確認同步完成。
[0062]步驟3:加載端將待固化文件加載到被加載端。
[0063]本步驟實現流程如下:
[0064]3.1】加載端向被加載端發送多個加載數據包;每個加載數據包包括一個加載命令字、一個待固化文件ID、一個待固化文件總塊數、加載數據包所對應的當前塊號、加載數據包所包含的有效數據、有效數據長度及校驗碼;所述校驗碼根據有效數據計算得出;
[0065]3.2】被加載端逐一接收加載數據包:
[0066]3.2.1】被加載端接收第一個加載數據包,根據接收到的第一個加載數據包中文件總塊數為第一個待固化文件申請相應內存空間,取得第一個待固化文件內存空間的起始地址;
[0067]將第一個加載數據包中的有效數據存儲到當前塊號所對應的內存空間中; [0068]被加載端的文件加載器將待固化文件ID、內存空間起始地址寫入到文件加載信息表中;
[0069]3.2.2】繼續接收加載數據包,判斷當前所接收到的加載數據包中待固化文件ID與上一個加載數據包中的待固化文件ID是否一致:
[0070]如所接收到的加載數據包中待固化文件ID與上一個加載數據包中的待固化文件ID 一致,則屬於上一個待固化文件的加載數據包,將所接收到的當前加載數據包中包含的有效數據存儲到當前塊號所對應的內存空間中;
[0071]如所接收到的加載數據包中待固化文件ID與上一個加載數據包中的待固化文件ID不一致,則屬於下一個待固化文件的加載數據包,根據接收到的當前加載數據包中文件總塊數為當前待固化文件申請相應內存空間,取得當前待固化文件內存空間的起始地址;
[0072]將當前加載數據包中的有效數據存儲到當前塊號所對應內存空間中;
[0073]被加載端的文件加載器將待固化文件的ID、內存空間起始地址寫入到文件加載信息表中;
[0074]同時將累計得到的上一個待固化文件的有效數據總長度寫入到文件加載信息表的相應位置;
[0075]3.2.3】回到步驟3.2.2】,直至接收不到加載數據包;
[0076]3.3】向加載端返回加載命令響應包;
[0077]3.4]加載端發送燒寫數據包:
[0078]3.4.1】加載端向被加載端發送多個燒寫數據包,所述燒寫數據包中包含待固化文件ID以及相應的Flash存儲器固化地址;
[0079]3.4.2】被加載端接收到所有燒寫數據包後,根據各個燒寫數據包中待固化文件ID將其對應的Flash存儲器固化地址添加到文件加載信息表中;
[0080]步驟4:被加載端將待固化文件固化進Flash並校驗。
[0081]被加載端根據文件加載信息表調用寫Flash驅動程序將待固化文件逐一固化進Flash存儲器中。
[0082]校驗步驟:將已經固化在Flash存儲器中的固化文件的內容與內存空間中待固化文件內容逐一進行比對,並 將比對結果返回給加載端。
【權利要求】
1.基於乙太網的程序固化方法,其特徵在於:包括以下步驟: 1】被加載端初始化: 啟動作業系統,初始化文件加載器,啟動文件加載任務,建立通訊埠,等待接收來自加載端的命令請求; 2】加載端與被加載端建立網絡連接,完成冋步; 3】加載端將待固化文件加載到被加載端: 3.1】加載端向被加載端發送多個加載數據包;每個加載數據包包括一個加載命令字、一個待固化文件ID、一個待固化文件總塊數、加載數據包所對應的當前塊號、加載數據包所包含的有效數據、有效數據長度及校驗碼;所述校驗碼為加載端根據有效數據計算得出; 3.2】被加載端逐一接收加載數據包: 3.2.1】被加載端接收第一個加載數據包,根據接收到的第一個加載數據包中文件總塊數為第一個待固化文件申請相應內存空間,取得第一個待固化文件內存空間的起始地址;將第一個加載數據包中的有效數據存儲到當前塊號所對應的內存空間中; 被加載端的文件加載器將待固化文件ID、內存空間起始地址寫入到文件加載信息表中; 3.2.2】繼續接收加載數據包,判斷當前所接收到的加載數據包中待固化文件ID與上一個加載數據包中的待固化文件ID是否一致: 如所接收到的加載數據包中待固化文件ID與上一個加載數據包中的待固化文件ID —致,則屬於上一個待固化文件的加載數據包,將所接收到的當前加載數據包中包含的有效數據存儲到當前塊號所對應的內存空間中; 如所接收到的加載數據包中待固化文件ID與上一個加載數據包中的待固化文件ID不一致,則屬於下一個待固化文件的加載數據包,根據接收到的當前加載數據包中文件總塊數為當前待固化文件申請相應內存空間,取得當前待固化文件內存空間的起始地址;將當前加載數據包中的有效數據存儲到當前塊號所對應內存空間中;被加載端的文件加載器將待固化文件的ID、內存空間起始地址寫入到文件加載信息表中;同時將累計得到的上一個待固化文件的有效數據總長度寫入到文件加載信息表的相應位置; 3.2.3]回到步驟3.2.2】,直至接收不到加載數據包; 3.3】向加載端返回加載命令響應包; 3.4】加載端發送燒寫數據包: 3.4.1】加載端向被加載端發送多個燒寫數據包,所述燒寫數據包中包含待固化文件ID以及相應的Flash存儲器固化地址; 3.4.2】被加載端接收到所有燒寫數據包後,根據各個燒寫數據包中待固化文件ID將其對應的Flash存儲器固化地址添加到文件加載信息表中; 4】被加載端根據文件加載信息表調用寫Flash驅動程序將待固化文件逐一固化進Flash存儲器中。
2.根據權利要求1所述的基於乙太網的程序固化方法,其特徵在於:在步驟4】之後還包括校驗步驟: 將已經固化在Flash存儲器中的固化文件的內容與內存空間中的待固化文件內容逐一進行比對,並將比對結果返回給加載端。
3.根據權利要求1或2所述的基於乙太網的程序固化方法,其特徵在於:所述步驟I】的具體步驟為 1.1】被加載端啟動fe作系統; 1.2】文件加載器初始化,將文件加載信息表清零; 1.3】打開一個基於連接的目標機套接字; 1.4】將目標機套接字與其地址綁定; 1.5】使能目標機套接字連接; 1.6】等待接收加載端命令請求。
4.根據權利要求3所述的基於乙太網的程序固化方法,其特徵在於:所述步驟2】的具體步驟為: 2.1】加載端初始化到被加載端的套接字連接; 2.2】加載端向被加載端發送同步請求數據包; 2.3】被加載端接收同步請求數據包,執行同步命令處理程序,並將同步完成的信息封裝進同步命令響應包反饋回加載端; 2.4】加載端接收到被加載端返回的同步命令響應包後,確認同步完成。
5.根據權利要求4所述的基於乙太網的程序固化方法,其特徵在於:還包括將有效數據存儲到內存空間之前進行有效數據校驗步驟: 被加載端根據接收到的有效數據計算一個比對校驗碼,將比對校驗碼與加載數據包中的對應校驗碼進行比較,如果一致,則存儲有效數據;如果不一致,則向加載端返回錯誤提/Jn ο
【文檔編號】G06F9/445GK103902306SQ201210575427
【公開日】2014年7月2日 申請日期:2012年12月26日 優先權日:2012年12月26日
【發明者】陳福, 李運喜, 任曉瑞, 趙根學, 邸海濤, 鍾珊, 張曉紅, 李向東 申請人:中國航空工業集團公司第六三一研究所