TW201715384A - 設定建構指示符以啟用或停用特徵之技術 - Google Patents
設定建構指示符以啟用或停用特徵之技術 Download PDFInfo
- Publication number
- TW201715384A TW201715384A TW105128925A TW105128925A TW201715384A TW 201715384 A TW201715384 A TW 201715384A TW 105128925 A TW105128925 A TW 105128925A TW 105128925 A TW105128925 A TW 105128925A TW 201715384 A TW201715384 A TW 201715384A
- Authority
- TW
- Taiwan
- Prior art keywords
- value
- feature
- program code
- variable
- code
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
Abstract
一建構指示符係在一建構環境中設定為用來建構一程式代碼的一設定值,該設定值選自於指示該程式代碼的一特徵被啟用的一第一值,及指示該程式代碼的一特徵被停用的一第二值。回應於該建構指示符的該設定值為該第一值,一變數被設定成指示該特徵被啟用的一值。該程式代碼係使用該變數的該值而予建構。
Description
本揭示係有關於設定建構指示符以啟用或停用特徵之技術。
發明背景 一電子裝置可包括於該電子裝置可執行來從事個別任務的各種不同的程式模組。此等程式模組(其包括機器可讀取指令)的實例包括一基本輸入/輸出系統(BIOS)、一作業系統、一應用程式等。該等程式模組可於製造廠中建構且可連同出貨的電子裝置提供給消費者。
依據本發明之一實施例,係特地提出一種方法,其包含:於包含一處理器的一系統中,在一建構環境中設定一建構指示符為用來建構一程式代碼的一設定值,該設定值選自於指示該程式代碼的一特徵係被啟用的一第一值,及指示該程式代碼的一特徵被停用的一第二值;回應於該建構指示符的該設定值為該第一值,由該系統設定一變數為指示該特徵係被啟用的一值;及由該系統建構該程式代碼使用該變數的該值。
較佳實施例之詳細說明 電子裝置的製造商可建構將涵括於電子裝置的程式代碼(包括機器可讀取指令)。舉例言之,程式代碼可包括基本輸入/輸出系統(BIOS)代碼,此乃進行電子裝置的硬體電子組件(例如,處理器、輸入/輸出(I/O)控制器、周邊裝置等)的初始化及開機啟動該電子裝置的代碼。於若干實例中,BIOS代碼可包括統一可擴延韌體介面(UEFI)代碼。
雖然本文討論中係述及電子裝置的製造商建構程式代碼來連同電子裝置提供給消費者,但須注意於其它實例中,不同的實體可建構欲涵括於電子裝置的程式代碼。因此,如於本文揭示中使用,「製造商」可指電子裝置的製造商、電子裝置的分銷商、涵括於電子裝置的程式代碼之提供者、或負責建構欲涵括於電子裝置的程式代碼之任何其它實體。
電子裝置之實例包括電腦(例如,桌上型電腦、筆記型電腦、平板電腦)、伺服器、智慧型電話、遊戲設施、穿戴裝置(例如,智慧型手表、智慧型眼鏡等)、車輛等。
製造商可判定用在電子裝置的程式代碼(例如,BIOS代碼或其它程式代碼)的特徵是否欲被啟用或停用。於若干實例中,該特徵可包括程式代碼的自動化回復特徵,其回應於檢測得該程式代碼已被訛誤而從該電子裝置的安全儲存裝置(或該給定電子裝置外部的安全儲存裝置)復原該程式代碼。
至於進一步實例,該特徵可包括經程式規劃接觸一預定目的地來解決該電子裝置的一問題之該電子裝置的一嵌入式控制器(EC)的一特徵。此種特徵可稱作為「EC背景連線通訊(phone home)」特徵。EC可實施為微控制器或其它硬體控制電路,其係經組配(例如,以含機器可讀取指令的韌體規劃)以從事預定任務。
至於額外實例,該特徵可包括BIOS代碼的網克隆(Netclone)驅動程式,其接取一網路諸如公用網際網路來下載作業系統至裝置上。
雖然給定特徵(或多給定特徵)可在由製造商製造的若干電子裝置之程式代碼中被啟用,但該(等)給定特徵可在由製造商製造的其它電子裝置之程式代碼中被停用。舉例言之,該程式代碼的一給定特徵在出售於或出貨到第一地理區域的電子裝置內可被啟用,但在出售於或出貨到第二地理區域的電子裝置的程式代碼中可被停用。
與電子裝置之製造及使用有相關聯的各期。第一期包括建構環境,其中製造商判定於電子裝置的程式代碼中之哪些特徵將被啟用或停用。第二期包括建構工具環境,其中建構工具係用來建構程式代碼,於該處,已建構的程式代碼可有某些特徵被啟用或停用。第三期包括運行期環境,其中於由消費者使用期間程式代碼係於電子裝置中執行。雖然前文列舉數期實例,但須注意於其它實例中,可提供替代期及/或額外期。
於有些情況下,跨多期的程式代碼中之一特徵的啟用或停用可能不一致。舉例言之,由建構時間工具使用的或運行期期間使用的指示符指示該特徵欲被啟用或停用可能與另一期中設定的指示符狀態不一致。可能出現此種不一致性的原因在於啟用或停用程式代碼的特徵之配置係針對多期分開地手動進行,因而可能針對該等期中之一者的手動配置係與針對該等期中之另一者的手動配置不一致。
依據本文揭示之若干實施例,於建構環境(對應前記第一期)中之建構指示符可被設定為第一值(指示該特徵被啟用)及第二值(指示該特徵被停用)中之一者。「指示符」可指旗標、參數、資料結構、或任何其它元件其值可在二或多值間改變以提供不同的指示。
建構指示符的設定值可被提升至其它環境(對應前記其它期)中使用的變數,包括建構工具環境及運行期環境。「提升」建構指示符之值至一變數可指基於該建構指示符之該值設定變數之值。一「變數」可指旗標、參數、資料結構、或任何其它元件,其值可在二或多值間改變以提供不同的指示。注意於本文揭示中術語「指示符」與「變數」可互換使用。
於建構工具環境中,建構工具可使用建構工具變數(自建構指示符提升)的一值來判定於程式代碼中代碼模組(例如,驅動程式或包括機器可讀取指令的其它類型模組)是否欲被啟用。
於運行期環境中,從建構指示符提升的運行期變數可用來進行程式代碼的運行期檢查,及用來判定程式代碼的執行期間欲使用程式代碼的哪些部分-程式代碼的第一部分(或第一路徑)可回應於運行期變數的第一值而使用,於該處,該第一部分(或第一路徑)具有被啟用的特徵;及程式代碼的第二部分(或第二路徑)可回應於運行期變數的第二值而使用,於該處,該第二部分(或第二路徑)具有被停用的特徵。
圖1顯示與一程式代碼(例如,BIOS代碼)相關聯的各種環境實例,包括建構環境102及建構工具環境104。建構環境102及建構工具環境104為製造使用來提供程式代碼(例如,BIOS代碼)的環境。該等環境進一步包括程式代碼(例如,BIOS代碼)可於其中執行的電子裝置之運行期環境106。
於後文討論中,述及建構帶有被選擇性地啟用或停用的一給定特徵(或多特徵)的一BIOS代碼。然而,注意依據若干實施例的技術或機構可使用於其它類型的程式代碼,諸如作業系統、應用程式、驅動程式、或任何其它類型的程式代碼。
於該建構環境102中,製造商可針對一BIOS代碼的一特徵設定(於108)一環境指示符(又稱「建構指示符」)。於若干實例中,建構環境102可以是命令線路環境,於該處,一命令線路介面可由製造商系統(例如,製造商的一電腦系統或多電腦系統)顯示。製造商(或更明確言之,製造商的用戶)可於命令線路介面提供命令。取決於在BIOS代碼中之一特定特徵是否欲被啟用或停用,通過該命令線路介面,用戶可提交命令來選擇性地設定建構指示符至啟用值或停用值。雖然述及設定建構指示符之值來選擇性地啟用或停用BIOS代碼中之一個特徵,但須注意依據若干實施例的技術或機構可施加至該等情況來使用一個建構指示符或多個建構指示符而選擇性地啟用或停用BIOS代碼(或其它程式代碼)中之多個特徵。
於其它實例中,替代設定命令線路介面中之建構指示符之值,由製造商系統可提供不同的用戶介面,諸如圖形使用者介面或其它類型的介面。
如於圖1中進一步描繪,所設定(於108)的建構指示符之值被提升(於110)至建構工具變數,及也被提升(於112)至運行期變數。「提升」建構指示符之值至建構工具變數或運行期變數可包括基於建構指示符之值而設定建構工具變數或運行期變數之值。舉例言之,若建構指示符被設定為一啟用值來指示於BIOS代碼中之該特徵係將被啟用,則建構工具變數設定為第一值。另一方面,若建構指示符被設定為一停用值來指示於BIOS代碼中之該特徵係將被停用,則建構工具變數設定為第二值。同理,若建構指示符係設定為一啟用值,則運行期變數被設定為第一值。另一方面,若建構指示符係設定為一停用值,則運行期變數被設定為第二值。
於建構工具環境104中,建構工具可於製造商系統中執行來基於建構工具變數之值而建構(於114)一BIOS可執行代碼。於若干實例中,建構工具可以是UEFI發展套件中可用的一建構工具,諸如由英特爾(Intel)提供用來發展UEFI代碼的發展套件。於其它實例中,可使用其它類型的建構工具。此等建構工具中之任一者可經修改來當建構該BIOS可執行代碼時依據本文揭示的若干實施例支援使用建構指示符之值。
所建構(於114)的BIOS可執行代碼係呈於電子裝置可執行的可執行形式,諸如可執行二進制檔案、可執行目標代碼等。作為建構BIOS可執行代碼之一部分,也提供欲被啟用或停用的針對一給定特徵(或多給定特徵)的一或多個代碼模組。於一實例中其中一代碼模組包括有關欲被選擇性地啟用或停用的一給定特徵的至少一部分,該建構工具可基於建構工具變數之值而判定是否涵括代碼模組於該BIOS可執行代碼。若該代碼模組為特徵特異性(亦即,代碼模組包括只針對該給定特徵的機器可讀取指令),若該建構工具變數之值係設定為第一值,則該建構工具可涵括代碼模組於該BIOS可執行代碼;及若該建構工具變數之值係設定為第二值,則從該BIOS可執行代碼中排除該代碼模組。
於其它實例中,有關欲被選擇性地啟用或停用的一給定特徵之一代碼模組可包括針對該給定特徵之機器可讀取指令以及,除了該給定特徵之外,針對其它任務的機器可讀取指令。於此種情況下,該代碼模組須涵括於BIOS可執行代碼中,即便建構工具變數係設定為第二值來指示該給定特徵係欲被停用亦復如此。於此種情況下,運行期變數可用來在運行期判定將使用BIOS可執行代碼的哪個部分(該給定特徵被啟用的部分或該給定特徵被停用的部分)。
欲被啟用或停用的一給定特徵相關的該代碼模組(或多代碼模組)可呈可執行代碼(例如,可執行二進制檔案、可執行目標等)或來源代碼(例如,根據C程式語言或其它程式語言的來源代碼)形式。若一給定特徵相關的一代碼模組為一可執行代碼,則無需進行代碼模組的編譯,及建構工具可基於建構工具變數判定是否涵括該代碼模組。另一方面,若該給定特徵相關的該代碼模組係呈來源代碼形式,則由建構工具調用一編譯器來將該代碼模組編譯成BIOS可執行代碼。於若干實例中,編譯器可調用一前處理器來判定該代碼模組是否欲涵括於該BIOS可執行代碼。前處理器(例如,C前處理器或其它類型的前處理器)係由編譯器使用來進行某些工作為編譯的一部分,於該處,此等工作可包括插入標頭檔案、擴充巨集指令、進行代碼轉譯等。
雖然述及於若干實例中由一編譯器使用一前處理器,但須注意於其它實例中,編譯器可不使用前處理器而編譯一來源代碼。
如於圖1中進一步顯示,建構指示符之值(於108設定)也可被提升(於111)成編譯器變數,其可由藉編譯器調用的前處理器使用。於若干實例中,此種編譯器變數可稱作「前處理器符號常數」。
回應於建構指示符被設定為啟用值,編譯器變數可被設定為第一值,及回應於建構指示符被設定為停用值,編譯器變數可被設定為第二值。取決於建構指示符之值,由編譯器調用的前處理器可判定是否將代碼模組涵括入BIOS可執行代碼內。舉例言之,若代碼模組對欲被啟用或停用的一給定特徵為特異性,若編譯器變數係設定為第一值,則前處理器可包括代碼模組及BIOS可執行代碼。另一方面,若代碼模組對該給定特徵為特異性,若編譯器變數係設定為第二值,則前處理器可從BIOS可執行代碼中排除代碼模組。然而,於代碼模組對一給定特徵並非特異性(反而除了針對該給定特徵的機器可讀取指令之外,包括額外機器可讀取指令)之情況下,則前處理器將涵括代碼模組於BIOS可執行代碼,即便編譯器變數係設定為第二值以指示該給定特徵被停用亦復如此。
被提升的運行期變數(於112)可被涵括於BIOS可執行代碼的元資料。於若干實例中,BIOS可執行代碼可包括數個區域,包括針對可執行代碼的第一區域、針對BIOS代碼之元資料的第二區域、及針對販售商特定資訊的另一個區域。於元資料區域中的元資料可包括影響BIOS代碼之操作的各項參數。此等參數中之一者包括可從建構指示符提升(於112)的運行期變數。
於若干實施例中,嵌置於元資料中的運行期變數係受到元資料的簽章保護。元資料可於建構時間經簽章,及該簽章於BIOS代碼的運行期驗證,來確保元資料未被竄改。元資料的簽章可根據金鑰及元資料內容而以密碼學方式產生。沒有已經簽章的元資料中之運行期變數的保護,駭客潛在地可能改變元資料中之特徵設定,結果導致BIOS代碼的出乎意外的或未經界定的表現。藉著元資料的簽章保護運行期變數,確保了一給定特徵在運行期的啟用或停用係與其它階段中者符合一致。
當於一電子裝置內BIOS可執行代碼係於運行期環境106中執行時,電子裝置可基於運行期變數之值而進行(於116)運行期檢查。若運行期變數係設定為第一值(指示一給定特徵被啟用),則運行期檢查使得BIOS代碼的第一部分被執行來啟用該給定特徵。另一方面,若運行期變數係設定為第二值(指示該給定特徵被停用),則使用不支援該項特徵的BIOS代碼的第二部分。
須注意此項基於運行期變數之值的運行期檢查係經進行來解決下述情況,於該處,一給定特徵相關的代碼模組係涵括於BIOS可執行代碼,即便建構工具變數及/或編譯器變數係被設定為第二值指示該給定特徵欲被停用亦復如此。若代碼模組包括給定特徵的特定機器可讀取指令以及其它特徵的特定機器可讀取指令兩者,則此等代碼模組將已經涵括於BIOS可執行代碼中,即便建構工具變數及/或運行期變數係被設定為第二值亦復如此。
圖2為示意圖,顯示依據進一步實例建構環境102及建構工具環境104的工作及組件。如於圖2中描繪,針對一給定特徵的建構指示符係於建構環境102中設定(於108)。此種建構指示符被提升(於110)成編譯腳本(Makefile)變數,其為連結圖1討論的建構工具變數之實例。此外,建構指示符之值被提升(於111)成前處理器符號常數(其為連結圖1討論的編譯器變數之實例)。
編譯腳本202為當建構BIOS可執行代碼206時由建構工具204使用的檔案。編譯腳本202可包括第一選項資訊208及第二選項資訊210。第一選項資訊208係用在編譯腳本變數被設定為第一值指示該給定特徵係被啟用的情況,而第二選項資訊210係用在編譯腳本變數被設定為第二值指示該給定特徵係被停用的情況。不同的選項資訊208及210可包括各種參數及能夠用來建構BIOS可執行代碼206的其它配置資訊。第一選項資訊208可包括該給定特徵之相關資訊,而第二選項資訊210可排除該給定特徵之相關資訊。
建構工具204接收BIOS來源代碼212及一或多個可執行代碼模組214來建構BIOS可執行代碼206。
於若干實例中,可執行代碼模組214可已經由對應販售商提供給製造商,使得製造商無需進行可執行代碼模組的編譯。然而,於其它實例中,欲被選擇性地啟用或停用的一給定特徵(或多個給定特徵)相關的代碼模組可以來源代碼形式傳遞給製造商,諸如圖2中顯示的來源代碼模組216。編譯器218可用來編譯來源代碼模組216。至於編譯過程的部分,編譯器218調用前處理器220,其施加來源代碼模組216的各種前處理,容後詳述。前處理器220可使用得自建構指示符的前處理器符號常數(於111提升)以判定是否涵括與該(等)給定特徵相關的個別來源代碼模組216於BIOS可執行代碼206。
圖3為依據若干實施例可由製造商系統形成的方法實例之流程圖。製造商系統可包括由製造商使用來進行各項工作的一或多個電腦系統,包括如上討論的建構程式代碼。
該方法包括於建構環境(例如,圖1及2中之102)設定(於302)一建構指示符(類似圖1或2中之工作108)為用於建構一程式代碼(例如,BIOS代碼)的一設定值,於該處,該設定值係選自指示該程式代碼之一特徵被啟用的第一值,及指示該特徵被停用的第二值。
回應於該建構指示符的設定值為第一值,該方法設定(於304)一建構工具變數為指示該特徵被啟用的一值。然後該方法使用建構工具變數的該值建構(於306)該程式代碼。程式代碼的建構可藉建構工具進行,諸如圖2中顯示的建構工具204。
圖4為於一電子裝置的運行期期間可由該電子裝置進行的方法實例之流程圖。圖4之方法取回(於402)與一程式代碼相關聯的運行期變數之值,運行期變數之值係藉提供程式代碼的製造商基於建構環境中設定的建構指示符之值而被設定,回應於建構指示符被設定為指示程式代碼的一特徵被啟用的啟用值,運行期變數被設定為第一值;及回應於建構指示符被設定為指示程式代碼的該特徵被停用的停用值,運行期變數被設定為第二值。
該方法進一步判定(於404)運行期變數是否具有第一值。於電子裝置中於程式代碼的執行期間,回應於運行期變數具有第一值,方法執行(於406)程式代碼的第一部分而該特徵被啟用;回應於運行期變數具有第二值,方法執行(於408)程式代碼的第二部分而該特徵被停用。
圖5為依據若干實施例可由製造商使用的製造商系統500實例之方塊圖。製造商系統500包括一處理器(或多處理器)502。處理器可包括微處理器、微控制器、硬體處理器模組或子系統、可規劃積體電路、可規劃閘陣列、或其它處理硬體。該(等)處理器504能夠執行各種機器可讀取指令,包括命令接收指令504用以設定建構指示符為第一值或第二值(圖1或2中之工作108或圖3中之工作302),提升指令506用以將建構指示符提升成建構工具變數及運行期變數(例如,圖1中之工作110及112),及程式代碼建構指令508(例如,諸如建構工具204)用以根據該建構工具變數被設定之值而建構程式代碼。
圖6為包括一非暫態機器可讀取儲存媒體(或多儲存媒體)602用以儲存機器可讀取指令的電子裝置600之一實例的方塊圖,其當執行時使得電子裝置600於運行期期間進行各項工作。儲存於機器可讀取儲存媒體602中之機器可讀取指令包括運行時間變數取回指令604用以取回與程式代碼相關聯的運行期變數之值(例如,圖4之工作402),及程式代碼執行指令606用以取決於運行期變數之值而執行程式代碼的不同部分(例如,圖4中之工作406及408)。
儲存媒體(或多儲存媒體)602可包括一或多個不同形式的記憶體,包括半導體記憶體裝置諸如動態或靜態隨機存取記憶體(DRAM或SRAM)、可抹除及可規劃唯讀記憶體(EPROM)、可電氣抹除及可規劃唯讀記憶體(EEPROM)及快閃記憶體;磁碟諸如固定碟、軟碟及活動碟;其它磁性媒體包括磁帶;光學媒體諸如光碟(CD)或數位影音碟(DVD);或其它類型的儲存裝置。注意前文討論的指令可提供於一個電腦可讀取或機器可讀取儲存媒體上,或另外,提供於分散在可能具有多個節點之大型系統的多個電腦可讀取或機器可讀取儲存媒體上。此(等)電腦可讀取或機器可讀取儲存媒體係被考慮為物件(或製造物件)的一部分。物件或製造物件可指任何被製造的單一組件或多個組件。該(等)儲存媒體可位在跑該等機器可讀取指令的機器內,或位在遠端位置從該處可透過網路下載機器可讀取指令用於執行。
於前文詳細說明部分中,陳述無數細節以供瞭解本文揭示的主旨。然而可無若干此等細節而實施實施例。其它實施例可包括從前文討論的細節之修改及變化。意圖隨附之申請專利範圍涵蓋此等修改及變化。
102‧‧‧建構環境
104‧‧‧建構工具環境
106‧‧‧運行期環境
108-116、302-306、402-408‧‧‧工作
202‧‧‧編譯腳本
204‧‧‧建構工具
206‧‧‧BIOS可執行代碼
208、210‧‧‧選項資訊
212‧‧‧BIOS來源代碼
214‧‧‧可執行代碼模組
216‧‧‧來源代碼模組
218‧‧‧編譯器
220‧‧‧前處理器
500‧‧‧製造商系統
502‧‧‧處理器
504‧‧‧命令接收指令
506‧‧‧提升指令
508‧‧‧程式代碼建構指令
600‧‧‧電子裝置
602‧‧‧機器可讀取儲存媒體
604‧‧‧運行期變數取回指令
606‧‧‧程式代碼執行指令
104‧‧‧建構工具環境
106‧‧‧運行期環境
108-116、302-306、402-408‧‧‧工作
202‧‧‧編譯腳本
204‧‧‧建構工具
206‧‧‧BIOS可執行代碼
208、210‧‧‧選項資訊
212‧‧‧BIOS來源代碼
214‧‧‧可執行代碼模組
216‧‧‧來源代碼模組
218‧‧‧編譯器
220‧‧‧前處理器
500‧‧‧製造商系統
502‧‧‧處理器
504‧‧‧命令接收指令
506‧‧‧提升指令
508‧‧‧程式代碼建構指令
600‧‧‧電子裝置
602‧‧‧機器可讀取儲存媒體
604‧‧‧運行期變數取回指令
606‧‧‧程式代碼執行指令
將就下列圖式描述若干實施例。
圖1及2為依據若干實施例建構及跑一程式代碼相關環境實例的方塊圖。
圖3為依據若干實施例一製造商系統的一方法實例之流程圖。
圖4為依據若干實施例一電子裝置的一方法實例之流程圖。
圖5為依據若干實施例一製造商系統實例的方塊圖。
圖6為依據若干實施例一電子裝置實例的方塊圖。
102‧‧‧建構環境
104‧‧‧建構工具環境
106‧‧‧運行期環境
108-116‧‧‧方塊、工作
Claims (19)
- 一種方法,其包含: 於包含一處理器的一系統中,在一建構環境中設定一建構指示符為用來建構一程式代碼的一設定值,該設定值選自於指示該程式代碼的一特徵係被啟用的一第一值,及指示該程式代碼的一特徵被停用的一第二值; 回應於該建構指示符的該設定值為該第一值,由該系統設定一變數為指示該特徵係被啟用的一值;及 由該系統建構該程式代碼使用該變數的該值。
- 如請求項1之方法,其中該程式代碼之該建構包括回應於該變數被設定為指示該特徵係被啟用的該值而,於該程式代碼中,涵括針對該特徵的一代碼模組。
- 如請求項2之方法,其進一步包含: 回應於該建構指示符的該設定值為該第二值,由該系統設定該變數為指示該特徵係被停用的一不同值, 其中該程式代碼之該建構包括回應於該變數被設定為指示該特徵係被停用的該不同值而,自該程式代碼中,排除該代碼模組。
- 如請求項1之方法,其進一步包含: 回應於該建構指示符的該設定值為該第二值,由該系統,設定該變數為指示該特徵係被停用的一不同值; 其中該程式代碼之該建構包含: 判定一代碼模組對該特徵是否為特異性, 回應於判定該代碼模組對該特徵係為特異性,回應於該變數被設定為指示該特徵係被停用的該不同值而,自該程式代碼,排除針對該特徵的該代碼模組,及 回應於判定該代碼模組包括針對該特徵的機器可讀取指令及針對另一個特徵的機器可讀取指令,回應於該變數被設定為指示該特徵係被停用的該不同值而涵括該代碼模組於該程式代碼。
- 如請求項1之方法,其中針對該特徵的一代碼模組係呈來源代碼形式,該方法進一步包含: 回應於該建構指示符的該設定值為該第一值,由該系統,設定一編譯器變數為指示該特徵係被啟用的一值; 回應於該編譯器變數被設定為指示該特徵係被啟用的一值,藉一編譯器,使得該來源代碼的編譯涵括該代碼模組於該程式代碼。
- 如請求項1之方法,其進一步包含: 回應於該設定值為該第一值,藉於一編譯腳本中的該系統,包括建構帶有該特徵被啟用的該程式代碼相關的資訊。
- 如請求項1之方法,其進一步包含: 回應於該建構指示符的該設定值為該第一值,由該系統,設定一運行期變數為指示該特徵係被啟用的一值,其中該運行期變數係被設定為指示該特徵係被啟用的該值使得該程式代碼的一運行期檢查使用啟用該特徵的該程式代碼之一部分。
- 如請求項7之方法,其進一步包含: 回應於該建構指示符的該設定值為該第二值,由該系統,設定該運行期變數為指示該特徵係被停用的一不同值,其中該運行期變數係被設定為指示該特徵係被停用的該不同值使得該程式代碼的該運行期檢查使用帶有該特徵被停用的該程式代碼之一不同部分。
- 如請求項1之方法,其中該特徵包含用以回應於在運行期時該程式代碼的訛誤而自安全儲存裝置復原該程式代碼的一特徵。
- 如請求項1之方法,其中該特徵包含用以使得於其中該程式代碼執行的一電子裝置的一嵌入式控制器接觸一預定目的地而解決在該電子裝置檢測的一問題的一特徵。
- 如請求項1之方法,其中該特徵包含存取一遠端伺服器的該程式代碼的一驅動程式。
- 一種系統,其包含: 至少一個處理器用以: 在一建構環境中,接收一命令來設定一建構指示符為一第一值或一第二值; 提升該建構指示符至一建構工具變數及一運行期變數,其中該提升包含: 設定該建構工具變數至一值其指示回應於該建構指示符被設定為該第一值,一程式代碼的一特徵被啟用,及設定該建構工具變數至一值其指示回應於該建構指示符被設定為該第二值,該程式代碼的該特徵被停用, 設定該運行期變數至一值其指示回應於該建構指示符被設定為該第一值,一程式代碼的該特徵被啟用,及設定該運行期變數至一值其指示回應於該建構指示符被設定為該第二值,該程式代碼的該特徵被停用;及 根據該建構工具變數被設定的一值而建構該程式代碼。
- 如請求項12之系統,其中該至少一個處理器係用以進一步包括該運行期變數於與該程式代碼相關聯的元資料,該元資料由一簽章保護。
- 如請求項12之系統,其中該程式代碼根據該建構工具變數的該值之該建構包含: 回應於該建構工具變數被設定為指示該特徵係被啟用的該值而,在該程式代碼中,包括針對該特徵的一代碼模組;及 回應於該建構工具變數被設定為指示該特徵係被停用的該值而,自該程式代碼中,排除針對該特徵的該代碼模組。
- 如請求項12之系統,其中該至少一個處理器係用以進一步: 提升該建構指示符至一編譯器變數,包含: 設定該編譯器變數至一值其指示回應於該建構指示符被設定為該第一值,一程式代碼的一特徵被啟用,及設定該編譯器變數至一值其指示回應於該建構指示符被設定為該第二值,該程式代碼的該特徵被停用, 其中該程式代碼根據該建構工具變數的該值之該建構包含使用一編譯器用以: 回應於該編譯器變數被設定為指示該特徵係被啟用的該值而,在該程式代碼中,包括針對該特徵的一代碼模組;及 回應於該編譯器變數被設定為指示該特徵係被停用的該值而,自該程式代碼中,排除針對該特徵的該代碼模組。
- 如請求項12之系統,其中該程式代碼包含一基本輸入/輸出系統(BIOS)代碼。
- 一種物件,其包含至少一個非暫態機器可讀取儲存媒體儲存指令其當執行時使得一電子裝置用以: 取回與該程式代碼相關聯的一運行期變數之一值,該運行期變數之該值係根據由提供該程式代碼的一製造商於一建構環境中設定的一建構指示符的一值,回應於該建構指示符被設定為指示該程式代碼的一特徵被啟用的一啟用值,該運行期變數係被設定為一第一值,及回應於該建構指示符被設定為指示該程式代碼的一特徵被停用的一停用值,該運行期變數係被設定為一第二值;及 於該電子裝置中之該程式代碼的執行期間, 回應於該運行期變數具有該第一值而執行帶有該特徵被啟用之該程式代碼的一第一部分,及 回應於該運行期變數具有該第二值而執行帶有該特徵被停用之該程式代碼的一第二部分。
- 如請求項17之物件,其中該運行期變數係在與該程式代碼相關聯的元資料中。
- 如請求項17之物件,其中該程式代碼包含一基本輸入/輸出系統(BIOS)代碼。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/923,040 US9904543B2 (en) | 2015-10-26 | 2015-10-26 | Setting a build indicator to enable or disable a feature |
US14/923,040 | 2015-10-26 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201715384A true TW201715384A (zh) | 2017-05-01 |
TWI624790B TWI624790B (zh) | 2018-05-21 |
Family
ID=58558740
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW105128925A TWI624790B (zh) | 2015-10-26 | 2016-09-07 | 設定建構指示符以啟用或停用特徵之技術 |
Country Status (2)
Country | Link |
---|---|
US (2) | US9904543B2 (zh) |
TW (1) | TWI624790B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI822973B (zh) * | 2020-03-09 | 2023-11-21 | 系微股份有限公司 | 建構bios的資訊處理系統及資訊處理方法 |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2020167286A1 (en) | 2019-02-11 | 2020-08-20 | Hewlett-Packard Development Company, L.P. | Deletion of firmware instructions |
KR102485137B1 (ko) * | 2020-12-07 | 2023-01-06 | 한국전자기술연구원 | 프로그램 오류 자동 수정 방법 및 이를 지원하는 시스템 |
Family Cites Families (43)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5960198A (en) * | 1997-03-19 | 1999-09-28 | International Business Machines Corporation | Software profiler with runtime control to enable and disable instrumented executable |
US6272537B1 (en) * | 1997-11-17 | 2001-08-07 | Fujitsu Limited | Method for building element manager for a computer network element using a visual element manager builder process |
US6427234B1 (en) * | 1998-06-11 | 2002-07-30 | University Of Washington | System and method for performing selective dynamic compilation using run-time information |
US6892323B2 (en) * | 1999-05-05 | 2005-05-10 | Giga-Byte Technology Co., Ltd. | Dual basic input/output system for a computer |
US6487713B1 (en) * | 1999-09-24 | 2002-11-26 | Phoenix Technologies Ltd. | Software development system that presents a logical view of project components, facilitates their selection, and signals missing links prior to compilation |
US6615198B1 (en) * | 2000-04-10 | 2003-09-02 | Sprint Communications Company, L.P. | System and method for creating performance solution tools and performance solutions |
TW530265B (en) | 2000-12-07 | 2003-05-01 | Giga Byte Tech Co Ltd | A method for automatic recovery of basic input-output system memory device in computer system |
US6651188B2 (en) | 2001-06-29 | 2003-11-18 | Intel Corporation | Automatic replacement of corrupted BIOS image |
TWI251771B (en) | 2001-12-28 | 2006-03-21 | Asustek Comp Inc | Module and method for automatic restoring BIOS device, and the computer-readable recording media of storing the program codes thereof |
US6993487B2 (en) * | 2002-02-22 | 2006-01-31 | Maxima Blue Ltd. | Software code comments management method and system supporting speech recognition technology |
US6934873B2 (en) | 2002-02-28 | 2005-08-23 | Dell Products L.P. | Automatic BIOS recovery in a multi-node computer system |
GB0214303D0 (en) * | 2002-06-21 | 2002-07-31 | Koninkl Philips Electronics Nv | Server side configuration management |
JP4061492B2 (ja) * | 2003-02-10 | 2008-03-19 | ソニー株式会社 | 情報処理装置および消費電力制御方法 |
US7539854B2 (en) * | 2003-12-24 | 2009-05-26 | Intel Corporation | System and method to seamlessly enable enhanced management and scripting of a computer system and its add-in devices |
US7412710B2 (en) * | 2004-11-12 | 2008-08-12 | Red Hat, Inc. | System, method, and medium for efficiently obtaining the addresses of thread-local variables |
US7810089B2 (en) * | 2004-12-30 | 2010-10-05 | Citrix Systems, Inc. | Systems and methods for automatic installation and execution of a client-side acceleration program |
US7716638B2 (en) * | 2005-03-04 | 2010-05-11 | Microsoft Corporation | Methods for describing processor features |
US8413134B2 (en) * | 2005-05-10 | 2013-04-02 | International Business Machines Corporation | Method, system and computer program for installing software products based on package introspection |
US7571269B2 (en) | 2005-08-25 | 2009-08-04 | Silicon Image, Inc. | Covert channel for conveying supplemental messages in a protocol-defined link for a system of storage devices |
EP1980943B1 (en) * | 2006-01-31 | 2011-03-16 | Fujitsu Limited | System monitor device control method, program, and computer system |
US7698546B2 (en) * | 2006-04-27 | 2010-04-13 | Microsoft Corporation | BIOS configuration update technique |
CN101320342A (zh) | 2007-06-07 | 2008-12-10 | 威达电股份有限公司 | 应用于数据处理装置的数据备份/恢复系统及方法 |
KR100911324B1 (ko) * | 2007-06-22 | 2009-08-07 | 삼성전자주식회사 | 가변성 요소 관리 방법 및 그 장치 |
US8181153B2 (en) * | 2007-06-29 | 2012-05-15 | Accenture Global Services Limited | Refactoring monolithic applications into dynamically reconfigurable applications |
US20090125882A1 (en) * | 2007-10-08 | 2009-05-14 | Matteo Frigo | Method of implementing hyperobjects in a parallel processing software programming environment |
US8001316B2 (en) | 2007-12-27 | 2011-08-16 | Sandisk Il Ltd. | Controller for one type of NAND flash memory for emulating another type of NAND flash memory |
US8261242B2 (en) * | 2008-06-09 | 2012-09-04 | International Business Machines Corporation | Assisting debug memory tracing using an instruction array that tracks the addresses of instructions modifying user specified objects |
US8468332B2 (en) * | 2009-06-13 | 2013-06-18 | Kinglite Holdings Inc. | Dynamic link loading in extensible firmware interface compliant systems |
US8997040B2 (en) * | 2010-03-24 | 2015-03-31 | Microsoft Technology Licensing, Llc | Variable closure |
US9213661B2 (en) * | 2010-06-23 | 2015-12-15 | International Business Machines Corporation | Enable/disable adapters of a computing environment |
US8935683B2 (en) * | 2011-04-20 | 2015-01-13 | Qualcomm Incorporated | Inline function linking |
FR2976094B1 (fr) * | 2011-05-31 | 2013-07-12 | Myriad France | Procede de generation d'un logiciel |
US9158660B2 (en) * | 2012-03-16 | 2015-10-13 | International Business Machines Corporation | Controlling operation of a run-time instrumentation facility |
GB2501757A (en) * | 2012-05-04 | 2013-11-06 | Ibm | Instrumentation of software applications for configuration thereof |
US9134974B2 (en) * | 2012-11-12 | 2015-09-15 | Signalogic, Inc. | Source code separation and generation for heterogeneous central processing unit (CPU) computational devices |
US9195854B2 (en) * | 2012-12-19 | 2015-11-24 | Salesforce.Com, Inc. | System and method for controlling the on and off state of features at runtime |
WO2014122320A2 (de) * | 2013-02-11 | 2014-08-14 | Dspace Digital Signal Processing And Control Engineering Gmbh | Verändern eines signalwerts eines fpga zur laufzeit |
US20140372988A1 (en) * | 2013-06-14 | 2014-12-18 | Microsoft Corporation | Using a Static Analysis for Configuring a Follow-On Dynamic Analysis for the Evaluation of Program Code |
US20150112739A1 (en) * | 2013-10-18 | 2015-04-23 | Agreeya Mobility, Inc. | Method and system for monetization of applications and services in communication devices |
US9772828B2 (en) * | 2014-04-22 | 2017-09-26 | Oracle International Corporation | Structural identification of dynamically generated, pattern-instantiation, generated classes |
WO2015176492A1 (en) * | 2014-05-21 | 2015-11-26 | Huawei Technologies Co., Ltd. | A system and method thereof for creating dynamically attachable and detachable binary files |
US10509644B2 (en) * | 2015-02-25 | 2019-12-17 | Safedk Mobile Ltd | Method and system for controlling integrated software components |
US9880925B1 (en) * | 2015-09-28 | 2018-01-30 | The Mathworks, Inc. | Collecting structured program code output |
-
2015
- 2015-10-26 US US14/923,040 patent/US9904543B2/en active Active
-
2016
- 2016-09-07 TW TW105128925A patent/TWI624790B/zh active
-
2018
- 2018-01-03 US US15/861,403 patent/US10585665B2/en active Active
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI822973B (zh) * | 2020-03-09 | 2023-11-21 | 系微股份有限公司 | 建構bios的資訊處理系統及資訊處理方法 |
Also Published As
Publication number | Publication date |
---|---|
US9904543B2 (en) | 2018-02-27 |
US10585665B2 (en) | 2020-03-10 |
TWI624790B (zh) | 2018-05-21 |
US20180129496A1 (en) | 2018-05-10 |
US20170115963A1 (en) | 2017-04-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107003864B (zh) | 恢复片上系统设备 | |
US10289406B2 (en) | Dependencies between feature flags | |
US20150082279A1 (en) | Software testing system and method | |
US9141464B2 (en) | Computing device and method for processing system events of computing device | |
CN107003863B (zh) | 引导片上系统器件 | |
JP2010146299A5 (zh) | ||
US20120303944A1 (en) | Data recovering system and method | |
JP2022545012A (ja) | メモリー・アパーチャのフラッシュ・オーダーを使用したデーター保存 | |
US10585665B2 (en) | Setting a build indicator to enable or disable a feature | |
TW201351194A (zh) | 可攜式電子裝置的資料保護方法及其電腦程式產品 | |
US9672047B1 (en) | Systems and methods for accessing a bootable partition on a serial peripheral interface device | |
US8370618B1 (en) | Multiple platform support in computer system firmware | |
US8788800B2 (en) | OS processing method, system and non-transitory computer readable storage medium thereof | |
CN111797387A (zh) | 拦截外挂插件的方法及装置 | |
US9384015B2 (en) | Techniques for dynamically redirecting device driver operations to user space | |
US8972708B2 (en) | Plurality of interface files usable for access to BIOS | |
TWI754221B (zh) | 軟體存留性關閉技術 | |
CN111258617B (zh) | 一种电子设备 | |
WO2017076034A1 (zh) | 一种对移动终端的存储器进行格式化的方法和装置 | |
US10635818B1 (en) | Blocking runtime firmware variable access | |
KR101225577B1 (ko) | 어셈블리 언어 코드의 분석 장치 및 방법 | |
TWI719102B (zh) | 控制計算裝置的方法、電腦可讀取媒體及計算裝置 | |
CN114546454A (zh) | bootloader升级方法、装置、计算机设备及存储介质 |