晶片程序加載方法
2023-08-01 05:22:06 2
專利名稱:晶片程序加載方法
技術領域:
本發明涉及電子領域,特別涉及可編程晶片的程序加載技術。
背景技術:
微電子技術經過50多年的發展,目前進入一個很關鍵的時期,工藝尺寸越來越小,集成度越來越高,與其它學科結合越來越緊密。而邏輯器件領域是微電子技術的一個重要發展分支,目前此領域內發展最快的是可編程晶片。可編程晶片(Programmable Chip)泛指各種在使用前需要進行程序加載的電子晶片,在現代電子產品中大量使用,包括但不限於現場可編程門陣列(Field Programmable Gate Array,簡稱「FPGA」)、數位訊號處理器(DigitalSignal Processor,簡稱「DSP」)、可擦可編程邏輯器件(Erasable ProgrammableLogic Device,簡稱「EPLD」)等邏輯器件。
可編程晶片研製周期較短,直接的開發費用較低,也沒有限定最少訂購數量,隨著門電路成本的降低和器件中門電路數量的增加,可編程晶片正大舉打入傳統的門陣列領域,但是各家公司都在利用可編程晶片的靈活性把自己的產品設計得不同於競爭對手的產品,同樣,半導體廠商已經開發出獨特的EPLD和FPGA等,以便在性能、功耗、集成度和成本等方面達到特定的目標。這樣的做法導致這類可編程晶片在功能領域和複雜度上存在明顯差異。
但不管此類可編程晶片有多麼大的差異,都具有一個共同點,即按照前述定義中描述的,使用前需要為其加載程序。可編程晶片的程序加載過程通常是在中央處理器(Central Processing Unit,簡稱「CPU」)上電或復位完成後進行,並由CPU控制整個加載過程。以FPGA為例,整個可編程晶片的設計過程是這樣的首先晶片設計師採用硬體描述語言(Hardware DescriptionLanguage,簡稱「HDL」)以類似於編程的方式描繪出硬體的結構和硬體行為;然後用設計工具將這些描述綜合映射成與半導體工藝有關的硬體工藝文件,這些描述和軟體領域中的程序非常類似,可編程晶片則是這些硬體工藝文件的載體;最後通過特殊的寫入工具將硬體工藝文件加載到可編程晶片上,使之具有相應的功能。
由此可見,程序加載是整個可編程晶片設計過程最後一步,十分重要。雖然各種可編程晶片的程序加載技術和加載過程都不盡相同,但都應該滿足可靠、快速、穩定的要求,此外還必須充分考慮到晶片使用壽命和系統升級過程。
常用的加載技術包括下面兩種。
第一種是目前最常見的加載技術簡單加載法。這種方法多用於FPGA、DSP等可多次反覆加載的可編程晶片。具體的實現方法是CPU在需要加載的時刻,即上電或復位完成後,直接對可編程晶片進行強制加載,將編制好的程序燒錄入其中,使之具有特定的功能。這種方法簡單有效,容易實現,也可以充分滿足系統升級的要求。
第二種方法是版本檢查加載法,適用於EPLD等自帶非易失性存儲器的可編程晶片。具體的實現方法是CPU在加載前先對可編程晶片進行版本檢測,即檢查其自帶非易失性存儲器上存儲的程序和待加載的程序版本是否一致,如果檢測結果和待加載的程序版本一致,則不進行加載操作。這種方法可以減少無效重複加載的次數。
在實際應用中,上述方案存在以下問題對於第一種方案,由於無意義的重複加載次數多,消耗晶片的使用壽命,因此這種方案僅僅適用於可以多次反覆加載的晶片,例如FPGA和DSP;另外,由於晶片加載需要耗費較長時間,因此這種強制加載的方式普遍地延長了系統初始化所需的時間,然而在很多情況下,尤其是系統帶電復位後,不需要這種額外的加載。
對於第二種方案,由於這種方案需要在發布的晶片程序中附帶一個不重複的版本號,因此系統升級不方便。具體的說,如果採用開發者預先設置的版本號,則由於一般開發計劃只規劃到大版本,導致內部小測試版本和不定版本採用相同版本號,升級到這些版本時不得不採用手工強制升級,造成系統升級不可靠和不方便;如果根據程序編譯時間生成版本號,對於不採用「日構造」方法的公司,難以進行管理和實施。
發明內容
有鑑於此,本發明的主要目的在於提供一種晶片程序加載方法,避免了由於對不需要加載的晶片進行重複加載而延長系統初始化所需的時間,能夠使得系統升級更加可靠和方便。
為實現上述目的,本發明提供了一種晶片程序加載方法,包含以下步驟B根據通過程序文件直接導出的唯一標識,檢測晶片當前程序和待加載的目標程序是否一致,如果一致,則執行步驟C,其中,所述唯一標識是程序文件的屬性、或由該程序文件本身推導出的信息;C為所述晶片加載所述目標程序。
其中,所述方法還包含以下步驟D對所述晶片初始化,並且當執行所述步驟C後,執行所述步驟D。
當所述步驟B中判定所述晶片的當前程序和待加載目標程序一致時,執行步驟D。
所述唯一標識是程序的數字摘要、數字籤名、程序內容校驗欄位、程序大小、程序構造日期和時間中的任意一種或它們的任意組合。
所述晶片是現場可編程門陣列、或可擦編程邏輯器件、或數位訊號處理器。
所述方法還包含以下步驟A中央處理器檢測晶片功能是否正常,如果是,則執行步驟B,否則,執行步驟C。
所述步驟A中,如果所述晶片是現場可編程門陣列或可擦編程邏輯器件,通過對已知地址的檢測寄存器進行讀寫操作完成晶片功能的檢測,如果所述晶片是數位訊號處理晶片,則通過通信鏈路進行數位訊號處理器-中央處理器間的環回測試來完成晶片功能的檢測。
通過比較可以發現,本發明的技術方案與現有技術的區別在於,提出了通過能夠直接得到的唯一標識對當前程序和目標程序進行比較的方式,其中唯一標識是程序文件本身的屬性或能夠從該程序文件本身直接導出的信息。通過上述唯一標識的比較,對於當前程序和目標程序一致的情況,不再對晶片進行重複加載。對於不一致的,才進行程序加載。
這種技術方案上的區別,帶來了較為明顯的有益效果,避免了現有技術中強制加載方式導致的消耗晶片使用壽命的問題,並縮短了那些實際不需要加載的情況下系統初始化所需的時間。另外,這種技術方案僅根據程序文件本身,不依賴於人為設置的版本號,使得系統升級更為可靠和方便。
圖1是根據本發明的一個實施例的晶片程序加載方法的流程示意圖。
具體實施例方式
為使本發明的目的、技術方案和優點更加清楚,下面將結合附圖對本發明作進一步地詳細描述。
總的來說,本發明的原理在於,通過程序本身的屬性,或由該程序文件本身推導出來的信息,判斷晶片當前程序和目標程序是否一致,在一致的情況下不進行重複加載。從而避免了系統初始化所需時間的無效延長,使系統升級更加方便,並且這種方式適用於除了能反覆加載以外的其他晶片上。
下面結合圖1,根據本發明的一個實施例詳細展開,進一步來解釋和說明本發明中提出的晶片程序加載方法的原理和工作流程。
首先在步驟200,由CPU執行預設的檢測過程,對可編程晶片的功能進行檢測,核查晶片是否能正常工作。如果晶片功能正常,則轉入步驟210;如果晶片功能異常,則轉入步驟220。
在本步驟中,對於DSP晶片,可以通過通信鏈路進行DSP和CPU之間的環回測試。具體地來說,CPU預設一個數據,並通過它與DSP間的通信鏈路向DSP發送一個測試數據。接著,DSP處理來自CPU的測試數據,並將處理結果再通過CPU和DSP間的通信鏈路返回給CPU。然後,CPU將來自DSP的處理結果與其預設的數據作比較。如果兩者完全一致,則表示DSP能正常工作,DSP晶片功能正常;如果兩者不完全一致,則表示DSP不能正常工作,DSP晶片功能異常。
另一方面,對於FPGA和EPLD,可以對已知地址的檢測寄存器進行讀寫操作。具體地來說,CPU預設一個數據,通過地址總線和數據總線,將其寫入到晶片的檢測輸入寄存器中。晶片內部的邏輯單元,將檢測輸入寄存器的內容經過特定規則的計算處理後,送到晶片的檢測輸出寄存器中。然後,CPU讀取晶片的檢測輸出寄存器,將讀出來的數據和先前寫入到檢測輸入寄存器的測試數據相比較,如果它們符合所期望的計算規則,則表示檢測寄存器能正常工作,該晶片功能正常;如果它們不符合所期望的計算規則,則表示檢測寄存器不能正常工作,該晶片功能異常。
此後,進入步驟210,CPU檢測晶片的當前運行程序是否和待加載的目標程序一致,如果一致,則進入步驟230,否則,進入步驟220。
需要說明的是,在本發明中,CPU根據通過晶片的程序文件本身直接獲得或導出的唯一標識,檢測晶片的當前程序和待加載的目標程序是否一致。換句話說,CPU從晶片獲取當前運行程序的唯一標識,從待加載的目標程序中也獲取唯一標識,比較這兩個唯一標識。如果完全一致,則說明晶片當前運行程序與待加載的目標程序完全一樣;如果這兩個唯一標識不完全一致,則就說明晶片當前運行程序與待加載的目標程序不一致。
上述唯一標識的獨特之處在於,是通過程序文件直接獲得或導出的,不需要人為地預先設置。在本發明的第一個實施例中,唯一標識可以是數字摘要,該數字摘要可以是對程序內容使用某種摘要算法計算得到,不同的程序其內容不會完全一致,則使用同一種摘要算法分別對其內容計算得到的數字摘要一般不會相同;在本發明的第二個實施例中,唯一標識也可以是數字籤名,該數字籤名是對程序內容使用已知的公共密鑰和籤名算法計算得到,不同的程序內容,其計算得到的數字籤名一般不會相同;在本發明的第三個實施例中,唯一標識也可以是利用程序內容校驗欄位,可以是對程序內容進行校驗算法而得到的校驗欄位,比如循環冗餘校驗碼(Cyclic RedundancyCheck,簡稱「CRC」),不同程序其內容不完全一致,則使用CRC校驗算法而得到的校驗欄位一般不會相同;在本發明的第四實施例中,唯一標識還可以是程序的大小,通常兩個不同的程序,其大小也是不同的;在本發明的第五實施例中,唯一標識還可以是程序構造日期和時間,通常兩個不同的程序其構造日期一般不相同,如果構造日期相同,則其構造時間不會相同。需要說明的是,在本發明的其他實施例中,唯一標識也可以是上述若干種方法的組合,這樣不同程序的區分準確率比單使用一種技術更高。值得一提的是,現在的多數文件格式已經包含了校驗欄位、數字摘要或者數字籤名,系統不需要進行額外的運算,只要利用文件系統提供的一些標準操作就很容易的讀取到文件的校驗欄位、數字摘要或者數字籤名,從而得到目標程序的唯一標識;或者系統根據標準算法和公共密鑰,對程序內容進行計算後,便可得到目標程序的唯一標識。此外,系統生成一個文件後,系統就會自動的為文件設置好屬性選項,並在文件屬性選項中記錄好文件所佔存儲空間的字節數即文件的大小和文件生成的時間,這樣利用文件系統讀取文件的屬性選項就很容易的獲取文件的大小和時間,從而得到目標程序的唯一標識。因此,從待加載的目標程序文件獲取唯一標識一般是相當容易的,不需要系統進行專門的運算或者設計。
由此可見,本發明並不限制唯一標識的具體實現技術,只要是從程序本身直接獲得或導出,並能正確區分兩個不同程序的唯一標識的實現技術,均屬於本發明所支持的唯一標識實現技術的範疇內。
在步驟220中,由於前面步驟中CPU檢測出晶片功能異常,或者CPU檢測出晶片當前運行程序和待加載的目標程序不一致,因此本步驟中CPU為該晶片強制加載目標程序。
熟悉本領域的技術人員能夠理解,對於不同的晶片,其具體的目標程序加載過程不盡相同。例如,對於FPGA晶片,目標程序數據以固定的數據幀格式傳送,一幀接一幀的傳送。其數據幀的長度隨著器件型號的不同而有較大差異。加載開始後,晶片內置的計數器便從0開始對傳送到晶片內部的數據作加法計數,當計數的值與目標程序的大小相同時,則表示目標程序加載結束。目標程序在加載的過程當中,FPGA自動檢查加載的目標程序數據,一旦發現錯誤,就立即中斷目標程序的加載,並輸出出錯標誌給CPU,告訴CPU加載過程已終止,CPU需要重新啟動加載過程。
在步驟230中,CPU重新初始化晶片。本步驟用於執行必要的初始化操作,而且復位晶片的執行時間遠少於加載程序的時間。
需要說明的是,本步驟是可選的,重新初始化晶片的操作,如復位晶片,可根據實際情況而定。並且對於不同類型的晶片其初始化過程一般不盡相同。例如,對於FPGA晶片,CPU首先觸發晶片內部的加電/復位電路,接著FPGA清除片內的可配置存儲器,並通過檢測引腳的電平來判斷晶片的工作方式。晶片初始化時需要將輸出引腳置成高阻狀態,一般FPGA晶片內置有延時電路,使得晶片有足夠的時間完成初始化操作。需要說明的是,在晶片目標程序加載過程中,如果施加有效的晶片復位信號,則晶片目標程序將被中斷,使晶片重新初始化,並重新加載晶片目標程序。在晶片進入正常工作狀態後,如果外界強制施加有效復位信號,則晶片也會重新初始化。
雖然通過參照本發明的某些優選實施例,已經對本發明進行了圖示和描述,但本領域的普通技術人員應該明白,可以在形式上和細節上對其作各種各樣的改變,而不偏離所附權利要求書所限定的本發明的精神和範圍。
權利要求
1.一種晶片程序加載方法,其特徵在於,包含以下步驟B根據程序文件的唯一標識檢測晶片當前程序和待加載的目標程序是否一致,如果一致,則執行步驟C,其中,所述唯一標識是程序文件本身的屬性、或由該程序文件本身推導出的信息;C為所述晶片加載所述目標程序。
2.根據權利要求1所述的晶片程序加載方法,其特徵在於,所述方法還包含以下步驟D對所述晶片初始化,並且當執行所述步驟C後,執行所述步驟D。
3.根據權利要求2所述的晶片程序加載方法,其特徵在於,當所述步驟B中判定所述晶片的當前程序和待加載目標程序一致時,執行步驟D。
4.根據權利要求1或3所述的晶片程序加載方法,其特徵在於,所述唯一標識是程序的數字摘要、數字籤名、程序內容校驗欄位、程序大小、程序構造日期和時間中的任意一種或它們的任意組合。
5.根據權利要求4所述的晶片程序加載方法,其特徵在於,所述晶片是現場可編程門陣列、或可擦編程邏輯器件、或數位訊號處理器。
6.根據權利要求5所述的晶片程序加載方法,其特徵在於,所述方法還包含以下步驟A中央處理器檢測晶片功能是否正常,如果是,則執行步驟B,否則,執行步驟C。
7.根據權利要求6所述的晶片程序加載方法,其特徵在於,所述步驟A中,如果所述晶片是現場可編程門陣列或可擦編程邏輯器件,通過對已知地址的檢測寄存器進行讀寫操作完成晶片功能的檢測。
8.根據權利要求6所述的晶片程序加載方法,其特徵在於,所述步驟A中,如果所述晶片是數位訊號處理器,則通過通信鏈路進行數位訊號處理器-中央處理器間的環回測試來完成晶片功能的檢測。
全文摘要
本發明涉及電子領域,公開了一種晶片程序加載方法,避免了由於對不需要加載的晶片進行重複加載而延長系統初始化所需的時間,能夠使系統升級更加可靠和方便。本發明的原理在於,通過能夠直接從程序文件自身得到的唯一標識,對當前程序和目標程序進行比較,對於當前程序和目標程序一致的情況,不再對晶片進行重複加載。對於不一致的,才進行程序加載。
文檔編號G06F9/445GK1752930SQ20041008302
公開日2006年3月29日 申請日期2004年9月23日 優先權日2004年9月23日
發明者周天翔 申請人:華為技術有限公司