計算機程序注入方法及系統的制作方法
【技術領域】
[0001]本發明屬于程序注入領域,涉及一種計算機程序注入方法及系統,特別涉及一種用于星載計算的程序注入方法及系統。
【背景技術】
[0002]空間環境中,存在復雜的電磁環境,以及地面所沒有的單粒子輻射,對于電子設備的功能和性能會造成不利的影響,嚴重的還會導設備的致功能失效。所以,在空間環境中工作的電子設備要有抗空間環境的不利因素的機制。單粒子反轉會破壞程序的完整性和邏輯,能夠導致軟件加載失敗或者運行錯誤,一般都會選在帶有EDAC功能的器件。空間除了環境復雜外,所執行的任務也比較復雜,處于多種原因常常需要對電子設備的軟件進行在軌修改,以在軌的方式改變軟件功能,從而應對復雜多變的環境和任務。
[0003]目前已有的在軌注入方法主要為整體上注,即對軟件存在更新時,需要對軟件所有的程序進行注入以完成更新,這種方式雖然簡單,但上注的數據量大,不適合于在軌應用。
[0004]因此,有必要提出一種新的程序注入方法,以減少因大量注入不需改變的程序帶來的不便和由于大量注入而可能造成的注入錯誤。
【發明內容】
[0005]有鑒于此,為克服上述至少一個缺點,并提供下述至少一種優點。本發明公開了星載計算機軟件在軌上注方法及系統。
[0006]一方面,通過本發明可以減少為在軌計算機的上注程序量。
[0007]另一方面,通過本發明可以實現對在軌計算機中程序或錯誤的及時維護。
[0008]為解決上述技術問題,本發明采用以下技術方案:
[0009]一方面,本發明公開了一種程序注入方法,包括以下步驟:
[0010]確定待注入程序與功能程序的原程序間的差異部分;
[0011]將所述差異部分注入存儲器中;
[0012]合并所述原程序和所述差異部分。
[0013]進一步的,還包括以下步驟:
[0014]將所述原程序與所述差異部分合并執行。
[0015]進一步的,還包括以下步驟:
[0016]在存儲器中為所述功能程序分配第一訪問空間用于存儲所述原程序;
[0017]對應于所述第一訪問空間,在存儲器中分配第二訪問空間用于存儲與所述原程序對應的所述差異部分。
[0018]進一步的,采用向量表存儲對應于不同所述功能程序的第一訪問空間的地址和第二訪問空間的地址。
[0019]進一步的,所述合并所述原程序和所述差異部分的步驟包括:
[0020]判斷所述差異部分是否為空;
[0021]若所述差異部分不為空,則將所述原程序與所述差異部分合并加載;
[0022]若所述差異部分為空,則僅加載所述原程序。
[0023]另一方面,本發明還公開了一種用于程序注入的系統,包括:
[0024]差異比較模塊,用于確定待注入程序與功能程序的原程序間的差異部分;
[0025]程序注入模塊,用于將所述差異部分注入存儲器中;
[0026]程序合并模塊,用于合并所述原程序和所述差異部分。
[0027]進一步的,還包括:
[0028]程序執行模塊,用于將所述原程序與所述差異部分合并執行。
[0029]進一步的,還包括:
[0030]程序管理模塊,用于在存儲器中為所述功能程序分配第一訪問空間用于存儲所述原程序;并對應于所述第一訪問空間,在存儲器中分配第二訪問空間用于存儲與所述原程序對應的所述差異部分。
[0031]進一步的,所述程序管理模塊,利用向量表存儲對應于不同所述功能程序的第一訪問空間的地址和第二訪問空間的地址。
[0032]進一步的,所述程序合并模塊,判斷所述差異部分是否為空;若所述差異部分不為空,則將所述原程序與所述差異部分合并加載;若所述差異部分為空,則僅加載所述原程序。
[0033]通過采用上述技術方案,本發明的所達到的有益效果為:
[0034]本發明將與原程序不同的差異部分以增量進行注入方式,此種注入方式改變了將原程序存在差異時即整體進行注入的缺點,通過僅注入差異部分,減少了注入量,尤其對于空間通信環境距離遠,通信時延長,受重量、體積、功耗,通信速率等限制,該注入方式節省了上注量對于空間設備的在軌及時維護的困難,且降低了大量注入程序所帶來的風險。
【附圖說明】
[0035]為了更清楚地說明本發明實施例中的技術方案,下面將對本發明實施例描述中所需要使用的附圖作簡單的介紹,顯而易見地,下面描述中的附圖僅僅是本發明的一些實施例,對于本領域普通技術人員來講,在不付出創造性勞動的前提下,還可以根據本發明實施例的內容和這些附圖獲得其他的附圖。
[0036]圖1為本發明實施例程序注入流程圖;
[0037]圖2為本發明實施例存儲器分區示意圖;
[0038]圖3為本發明實施例中合并原程序和差異部分的示意圖;
[0039]圖4為本發明實施例用于程序注入的系統的模塊示意圖。
【具體實施方式】
[0040]為使本發明解決的技術問題、采用的技術方案和達到的技術效果更加清楚,下面將結合附圖對本發明實施例的技術方案作進一步的詳細描述,顯然,所描述的實施例僅僅是本發明一部分實施例,而不是全部的實施例。基于本發明中的實施例,本領域技術人員在沒有作出創造性勞動前提下所獲得的所有其他實施例,都屬于本發明保護的范圍。
[0041]程序注入是指在運行程序的載體或設備外部,將需要加載于該載體或設備的程序寫入的載體內部的操作。一個通過程序的載體或設備是通過一系列功能程序的組合,完成控制和操作的,各功能程序可以被看做一個獨立的模塊,具有獨立的某項或某幾項的功能。在各功能程序運行和使用的過程中,為適應于不斷產生的新需求和新功能,需要對相應的功能程序進行升級或更新,然而對于不能完全恢復全部設置并重新燒錄程序的載體或設備,需要通過程序注入的方式完成對相應功能程序的升級或更新。
[0042]在本發明實施例中,給出了進行程序注入的一種實現方案,下面結合附圖并通過【具體實施方式】來進一步說明本發明的技術方案。
[0043]圖1為本發明實施例程序注入流程圖。
[0044]SlOl中,對功能程序中,待注入的整體程序與原程序進行比較,確定待注入的整體程序與原程序間的差異部分。
[0045]在本發明實施例中,程序注入之前,需要對功能程序中待注入的整體程序與原程序進行比較,以確定待注入的整體程序與原程序間的差異部分。該差異部分可對應于功能程序中可以被更改的任意部分。
[0046]對差異部分的比較可以通過載體或設備之外的其他設備完成,在一種實施例中,該載體或設備可以為在宇宙空間中運行的衛星或飛行器,衛星或飛行器的在軌運行離不開根據其內部程序所具有的各種功能完成的自動控制,若要對該衛星或飛行器進行程序注入,考慮到空間通信的復雜性和帶寬的限制性,可以在地面控制中心完成對差異部分的確定,即在地面控制中心將待注入的整體程序與當前在衛星或飛行器中運行的原程序進行比較,該種比較可以為按照程序的字段進行的逐字比較,也可以為對原程序按照更小組成單元的劃分后,以組成單元為單位進行的比較,通過比較的結果,可以確定相對于原程序中待注入的整體程序的差異部分。通過該種實施例所記載的方式,可以將確定差異部分的操作在載體或設備之外完成,從而可以在通信傳輸過程中,僅傳輸所確定的差異部分,減少了通信傳輸過程中的數據流量,從而相應的減少了通信中出錯和受干擾的可能性。
[0047]與衛星或飛行器不同,在另一種實施例中,差異部分可以在載體或設備中自動完成,在該實施例中,用于運行功能程序的模塊以獨立于其他模塊的形式進行工作,載體或設備在相應的用于完成通信功能的模塊的配合下,獲取外部期望注入的整體程序,并由獨立與運行功能程序的模塊之外的模塊,完成對待注入整體程序和原程序的比較,從而確定差異部分。雖然在該種實施例中,并未減少設備或載體與外部傳輸的數據流量,即仍然獲取了待注入的整體程序,但是,相對于運行功能程序的模塊,仍然可以在確定差異部分后,僅被注入差異部分,因此,仍然提高了功能程序運行效率和僅注入差異部分相對于整體程序的安全性。
[0048]當然,上述實施例僅為通過比較待注入整體程序和原程序以確定差異部分的示例性實施例,本領域技術人員清楚,仍然存在與上述實施例相同或等同的操作方式,可以從降低數據流量、減少干擾以及提供運行效率等角度完成的差異部分的比較。
[0049]S102中,在確定了差異部分后,需要將所確定差異部分注入存儲器。
[0050]用于存儲差異部分的存儲器可以為非易失性存儲器的一種,在本發明的一種實施例中,用于存儲注入程序的存儲器可以為載體或設備的R0M,該ROM可以用于存儲載體或設備的全部程序,相應的在運行程序時,處理器可以從該ROM中讀取相應的功能程序。
[0051]圖2為本發明實施例存儲器分區示意圖。
[0052]參考圖2,作為本發明實施的一種,在該存儲器中,可以按照功能程序為單位,對存儲器的中的存儲空間進行劃分,對應于不同的的存儲空間一個區域,可以存儲當前供當前載體或設備運行的具有某一功能的一個完整的功能程序的原程序,可以將用于存儲某個完整的原程序的空間識別為第一訪問空間,當然對應與不同功能程序的原程序,可以有不同的第一訪問空間。同時,在存儲器中,還對因故每個第一訪問空間,分配有第二訪問空間,該每個第二訪問空間用于存儲差異部分,即被注入的差異部分可被識別為對應原程序的增量程序,被存儲與該第二訪問空間。