本申請涉及計算機技術領域,尤其涉及一種輸出調(diào)試信息的方法及裝置。
背景技術:
隨著嵌入式技術的發(fā)展,嵌入式設備更新?lián)Q代的速度越來越快。
不管是開發(fā)階段還是維護階段都需要人力對新設備發(fā)生的故障進行分析和解決,這些過程中都少不了調(diào)試。
特別是在維護過程中,一旦設備啟動過程中發(fā)送宕機,由于現(xiàn)有的操作系統(tǒng)不能輸出調(diào)試信息,所以維護人員很難準確定位問題所在。
現(xiàn)有技術中,在設備發(fā)送宕機后,維護人員需要重啟操作系統(tǒng)并重新編譯系統(tǒng)版本,人為修改操作系統(tǒng)中信息輸出的級別,使得操作系統(tǒng)可以輸出調(diào)試信息;然后再次重啟操作系統(tǒng),此時操作系統(tǒng)才可以輸出調(diào)試信息,而維護人員根據(jù)輸出的調(diào)試信息查看到底哪里出現(xiàn)了問題、出現(xiàn)了什么問題,進而修復該問題。
如上所述,現(xiàn)有技術中輸出調(diào)試信息的過程較為復雜、定位問題較慢導致解決問題的效率較低。
技術實現(xiàn)要素:
本申請?zhí)峁┑妮敵稣{(diào)試信息的方法及裝置,以解決現(xiàn)有技術中輸出調(diào)試信息的過程較為復雜、定位問題較慢導致解決問題的效率較低的問題。
根據(jù)本申請實施例提供的一種輸出調(diào)試信息的方法,所述方法包括:
裝載程序bootloader在引導操作系統(tǒng)前,獲取預設的標記值;所述標記值用于控制操作系統(tǒng)修改調(diào)試信息輸出的級別;
所述bootloader將所獲取到的標記值保存到參數(shù)隊列中;
在所述bootloader引導所述操作系統(tǒng)過程中,將保存有所述標識值的參數(shù)隊列傳遞給所述操作系統(tǒng);
所述操作系統(tǒng)接收到所述bootloader傳遞的參數(shù)隊列后,獲取該參數(shù)隊列中保存的標記值;
所述操作系統(tǒng)判斷所述標識值是否為預設值;
在所述標識值為預設值的情況下,所述操作系統(tǒng)修改調(diào)試信息輸出的級別,使得所述調(diào)試信息輸出的級別高于或等于最低輸出級別。
可選的,所述bootloader將所獲取到的標記值保存到參數(shù)隊列中,具體包括:
所述bootloader將所獲取到的標記值保存在參數(shù)隊列的尾部。
可選的,所述操作系統(tǒng)接收到所述bootloader傳遞的參數(shù)隊列后,所述方法還包括:
對所述參數(shù)隊列進行校驗;
在校驗通過的情況下,執(zhí)行獲取該參數(shù)隊列中保存的標記值的步驟。
可選的,所述校驗包括循環(huán)冗余校驗碼crc校驗。
可選的,所述標記值為至少4字節(jié)的常數(shù)。
根據(jù)本申請實施例提供的一種輸出調(diào)試信息的裝置,所述裝置包括:
獲取單元,裝載程序bootloader在引導操作系統(tǒng)前,獲取預設的標記值;所述標記值用于控制操作系統(tǒng)修改調(diào)試信息輸出的級別;
保存單元,所述bootloader將所獲取到的標記值保存到參數(shù)隊列中;
傳遞單元,在所述bootloader引導所述操作系統(tǒng)過程中,將保存有所述標識值的參數(shù)隊列傳遞給所述操作系統(tǒng);
接收單元,所述操作系統(tǒng)接收到所述bootloader傳遞的參數(shù)隊列后,獲取該參數(shù)隊列中保存的標記值;
判斷單元,所述操作系統(tǒng)判斷所述標識值是否為預設值;
修改單元,在所述標識值為預設值的情況下,所述操作系統(tǒng)修改調(diào)試信息輸出的級別,使得所述調(diào)試信息輸出的級別高于或等于最低輸出級別。
可選的,所述保存單元,具體包括:
保存子單元,所述bootloader將所獲取到的標記值保存在參數(shù)隊列的尾部。
可選的,所述接收單元,具體包括:
接收子單元,在所述bootloader引導所述操作系統(tǒng)過程中,對所述參數(shù)隊列進行校驗;
獲取子單元,在校驗通過的情況下,獲取該參數(shù)隊列中保存的標記值。
可選的,所述校驗包括循環(huán)冗余校驗碼crc校驗。
可選的,所述標記值為至少4字節(jié)的常數(shù)。
本申請實施例中,通過bootloader向操作系統(tǒng)傳遞一個預設的用于控制所述操作系統(tǒng)修改信息輸出的級別的標記值,在該標記值為預設值的情況下可以令所述操作系統(tǒng)修改調(diào)試信息輸出的級別,從而實現(xiàn)輸出調(diào)試信息。如此,在設備發(fā)送宕機后,用戶只需重啟設備并將bootloader下的標記值設置為所述預設值,再次重啟設備后所述操作系統(tǒng)就可以輸出調(diào)試信息了。大大簡化了操作過程,無需重新編譯系統(tǒng)版本,從而可以快速定位問題,提高問題解決的效率。
附圖說明
圖1是本申請一實施例提供的輸出調(diào)試信息的方法的流程圖;
圖2是本申請輸出調(diào)試信息的裝置所在設備的一種硬件結(jié)構(gòu)圖;
圖3是本申請一實施例提供的輸出調(diào)試信息的裝置的模塊圖。
具體實施方式
這里將詳細地對示例性實施例進行說明,其示例表示在附圖中。下面的描述涉及附圖時,除非另有表示,不同附圖中的相同數(shù)字表示相同或相似的要素。以下示例性實施例中所描述的實施方式并不代表與本申請相一致的所有實施方式。相反,它們僅是與如所附權(quán)利要求書中所詳述的、本申請的一些方面相一致的裝置和方法的例子。
在本申請使用的術語是僅僅出于描述特定實施例的目的,而非旨在限制本申請。在本申請和所附權(quán)利要求書中所使用的單數(shù)形式的“一種”、“所述”和“該”也旨在包括多數(shù)形式,除非上下文清楚地表示其他含義。還應當理解,本文中使用的術語“和/或”是指并包含一個或多個相關聯(lián)的列出項目的任何或所有可能組合。
應當理解,盡管在本申請可能采用術語第一、第二、第三等來描述各種信息,但這些信息不應限于這些術語。這些術語僅用來將同一類型的信息彼此區(qū)分開。例如,在不脫離本申請范圍的情況下,第一信息也可以被稱為第二信息,類似地,第二信息也可以被稱為第一信息。取決于語境,如在此所使用的詞語“如果”可以被解釋成為“在……時”或“當……時”或“響應于確定”。
如前所述,現(xiàn)有技術中,設備的操作系統(tǒng)一般都不會輸出調(diào)試信息;所以一旦設備發(fā)生宕機,維護人員無法快速定位問題;只能重啟操作系統(tǒng)并重新編譯系統(tǒng)版本,人為修改操作系統(tǒng)中信息輸出的級別,使得操作系統(tǒng)可以輸出調(diào)試信息;然后再次重啟操作系統(tǒng),此時操作系統(tǒng)才可以輸出調(diào)試信息。這樣的方式,顯然會使得解決問題的效率較低。而且,通常,解決問題后,維人員還必須將編譯過的系統(tǒng)版本再重新改回原先的系統(tǒng)版本,進一步增大了維護人員的工作量。再有的,由于都是維護人員人工編譯系統(tǒng)版本,容易出現(xiàn)編譯錯誤等情況,過程不可控。
為了解決上述問題,請參見圖1,為本申請一實施例提供的輸出調(diào)試信息的方法的流程圖,包括以下步驟:
步驟110:裝載程序bootloader在引導操作系統(tǒng)前,獲取預設的標記值;所述標記值用于控制操作系統(tǒng)修改調(diào)試信息輸出的級別。
在相關技術中,bootloader是在操作系統(tǒng)啟動之前運行的??梢猿跏蓟布O備、建立內(nèi)存空間映射圖等,從而將系統(tǒng)的軟硬件環(huán)境帶到一個合適狀態(tài),以便為最終調(diào)用操作系統(tǒng)內(nèi)核準備好正確的環(huán)境。
本實施例中,bootloader下可以新提供一個用于配置標記的方法。一般的,該標記默認的標記值表示操作系統(tǒng)正常輸出,即與原有操作系統(tǒng)一樣不輸出調(diào)試信息。
在設備發(fā)生宕機后,用戶可以重啟設備并通過命令行、配置選項或配置文件等方式,在bootloader重新配置該標記的標記值,例如將該標記值配置為可以控制操作系統(tǒng)輸出調(diào)試信息的值。然后,再次重啟設備。
設備每次重啟后,其裝載程序bootloader在引導操作系統(tǒng)前,都需要獲取預設的標記值。
值得一提的是,所述標記值為大于4字節(jié)的常數(shù)。例如111111。
通過將標記值設置的較為復雜,可以避免該標記值與其它參數(shù)值重復的情況,避免發(fā)送不必要的錯誤。
步驟120:所述bootloader將所獲取到的標記值保存到參數(shù)隊列中。
本實施例中,所述bootloader引導操作系統(tǒng)啟動過程中,需要將生成的參數(shù)隊列傳遞給操作系統(tǒng)。該參數(shù)隊列中參數(shù)都是操作系統(tǒng)啟動所必須的包括如pmc,ebi,smc,sdram,usart等。
本實施例中,所述bootloader可以將所獲取到的標記值保存到參數(shù)隊列中。
具體地,所述bootloader將所獲取到的標記值保存在參數(shù)隊列的尾部。
當然,在其它的一些實施例中,還可以是將所述標記值保存在參數(shù)隊列的其它的任意位置。
步驟130:在所述bootloader引導所述操作系統(tǒng)過程中,將保存有所述標識值的參數(shù)隊列傳遞給所述操作系統(tǒng)。
本實施例中,在所述bootloader啟動完畢后,可以引導操作系統(tǒng)啟動;而在所述bootloader引導所述操作系統(tǒng)過程中,可以將保存有所述標識值的參數(shù)隊列傳遞給所述操作系統(tǒng)。
步驟140:所述操作系統(tǒng)接收到所述bootloader傳遞的參數(shù)隊列后,獲取該參數(shù)隊列中保存的標記值。
本實施例中,所述操作系統(tǒng)接收到所述bootloader傳遞的參數(shù)隊列后,還是按照原有的流程啟動操作系統(tǒng);不同之處在于,由于該參數(shù)隊列中新增了一個標記值,所以操作系統(tǒng)需要獲取該參數(shù)隊列中保存的標記值。
步驟150:所述操作系統(tǒng)判斷所述標識值是否為預設值。
所述預設值可以人為設置的一個值。
如果所述標識值為預設值,進一步執(zhí)行后續(xù)步驟160;
如果所述標識值不為預設值,則說明無需輸出調(diào)試信息,所以操作系統(tǒng)無需針對該標識值做處理。
步驟160:在所述標識值為預設值的情況下,所述操作系統(tǒng)修改調(diào)試信息輸出的級別,使得所述調(diào)試信息輸出的級別高于或等于最低輸出級別。
本實施例中,在所述標識值為預設值的情況下,說明用戶需要操作系統(tǒng)輸出調(diào)試信息,所以所述操作系統(tǒng)需要修改調(diào)試信息輸出的級別,使得所述調(diào)試信息輸出的級別高于或等于最低輸出級別。
舉例說明,操作系統(tǒng)中最低輸出級別為6級;在正常情況下,調(diào)試信息輸出的級別通常低于6級;
如果bootloader傳遞過來的標記值為預設值,則所述操作系統(tǒng)需要將調(diào)試信息輸出的級別修改為大于或等于6級。這樣,就可以輸出調(diào)試信息,用戶也就可以根據(jù)輸出的調(diào)試信息定位問題。
本申請實施例中,通過bootloader向操作系統(tǒng)傳遞一個預設的用于控制所述操作系統(tǒng)修改信息輸出的級別的標記值,在該標記值為預設值的情況下可以令所述操作系統(tǒng)修改調(diào)試信息輸出的級別,從而實現(xiàn)輸出調(diào)試信息。如此,在設備發(fā)送宕機后,用戶只需重啟設備并將bootloader下的標記值設置為所述預設值,再次重啟設備后所述操作系統(tǒng)就可以輸出調(diào)試信息了。大大簡化了操作過程,無需重新編譯系統(tǒng)版本,從而可以快速定位問題,提高問題解決的效率。
在本申請的另一個具體地實施例中,步驟130中所述操作系統(tǒng)接收到所述bootloader傳遞的參數(shù)隊列后,所述方法還包括:
對所述參數(shù)隊列進行校驗;
在校驗通過的情況下,執(zhí)行獲取該參數(shù)隊列中保存的標記值的步驟。
本實施例中,為了保證操作系統(tǒng)的啟動安全,對于接收到的參數(shù)隊列,還可以對所述參數(shù)隊列進行校驗;只有校驗通過的隊列參數(shù),才可以使用該隊列參數(shù)。
值得一提的是,所述校驗可以包括crc(cyclicredundancycheck,循環(huán)冗余校驗碼)校驗,md5(messagedigestalgorithm5,消息摘要算法第五版)校驗或奇偶校驗等。
與前述輸出調(diào)試信息的方法實施例相對應,本申請還提供了輸出調(diào)試信息的裝置的實施例。
本申請輸出調(diào)試信息的裝置的實施例可以分別應用在嵌入式設備上。裝置實施例可以通過軟件實現(xiàn),也可以通過硬件或者軟硬件結(jié)合的方式實現(xiàn)。以軟件實現(xiàn)為例,作為一個邏輯意義上的裝置,是通過其所在設備的處理器將非易失性存儲器中對應的計算機程序指令讀取到內(nèi)存中運行形成的。從硬件層面而言,如圖2所示,為本申請輸出調(diào)試信息的裝置所在設備的一種硬件結(jié)構(gòu)圖,除了圖2所示的處理器、網(wǎng)絡接口、內(nèi)存以及非易失性存儲器之外,實施例中裝置所在的設備通常根據(jù)該輸出調(diào)試信息的的實際功能,還可以包括其他硬件。
請參見圖3,為本申請一實施例提供的輸出調(diào)試信息的裝置的模塊圖,所述裝置可以包括:獲取單元210、保存單元220、傳遞單元230、接收單元240、判斷單元250及修改單元260。
其中,獲取單元210,裝載程序bootloader在引導操作系統(tǒng)前,獲取預設的標記值;所述標記值用于控制操作系統(tǒng)修改調(diào)試信息輸出的級別;
保存單元220,所述bootloader將所獲取到的標記值保存到參數(shù)隊列中;
傳遞單元230,在所述bootloader引導所述操作系統(tǒng)過程中,將保存有所述標識值的參數(shù)隊列傳遞給所述操作系統(tǒng);
接收單元240,所述操作系統(tǒng)接收到所述bootloader傳遞的參數(shù)隊列后,獲取該參數(shù)隊列中保存的標記值;
判斷單元250,所述操作系統(tǒng)判斷所述標識值是否為預設值;
修改單元260,在所述標識值為預設值的情況下,所述操作系統(tǒng)修改調(diào)試信息輸出的級別,使得所述調(diào)試信息輸出的級別高于或等于最低輸出級別。
在一個可選的實現(xiàn)方式中:
所述保存單元220,具體包括:
保存子單元,所述bootloader將所獲取到的標記值保存在參數(shù)隊列的尾部。
在一個可選的實現(xiàn)方式中:
所述接收單元240,具體包括:
接收子單元,在所述bootloader引導所述操作系統(tǒng)過程中,對所述參數(shù)隊列進行校驗;
獲取子單元,在校驗通過的情況下,獲取該參數(shù)隊列中保存的標記值。
在一個可選的實現(xiàn)方式中:
所述校驗包括循環(huán)冗余校驗碼crc校驗。
在一個可選的實現(xiàn)方式中:
所述標記值為至少4字節(jié)的常數(shù)。
通過本申請實施例,bootloader可以向操作系統(tǒng)傳遞一個預設的用于控制所述操作系統(tǒng)修改信息輸出的級別的標記值,在該標記值為預設值的情況下可以令所述操作系統(tǒng)修改調(diào)試信息輸出的級別,從而實現(xiàn)輸出調(diào)試信息。如此,在設備發(fā)送宕機后,用戶只需重啟設備并將bootloader下的標記值設置為所述預設值,再次重啟設備后所述操作系統(tǒng)就可以輸出調(diào)試信息了。大大簡化了操作過程,無需重新編譯系統(tǒng)版本,從而可以快速定位問題,提高問題解決的效率。
上述實施例闡明的系統(tǒng)、裝置、模塊或單元,具體可以由計算機芯片或?qū)嶓w實現(xiàn),或者由具有某種功能的產(chǎn)品來實現(xiàn)。一種典型的實現(xiàn)設備為計算機,計算機的具體形式可以是個人計算機、膝上型計算機、蜂窩電話、相機電話、智能電話、個人數(shù)字助理、媒體播放器、導航設備、電子郵件收發(fā)設備、游戲控制臺、平板計算機、可穿戴設備或者這些設備中的任意幾種設備的組合。
上述裝置中各個單元的功能和作用的實現(xiàn)過程具體詳見上述方法中對應步驟的實現(xiàn)過程,在此不再贅述。
對于裝置實施例而言,由于其基本對應于方法實施例,所以相關之處參見方法實施例的部分說明即可。以上所描述的裝置實施例僅僅是示意性的,其中所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個地方,或者也可以分布到多個網(wǎng)絡單元上??梢愿鶕?jù)實際的需要選擇其中的部分或者全部模塊來實現(xiàn)本申請方案的目的。本領域普通技術人員在不付出創(chuàng)造性勞動的情況下,即可以理解并實施。
本領域技術人員在考慮說明書及實踐這里公開的發(fā)明后,將容易想到本申請的其它實施方案。本申請旨在涵蓋本申請的任何變型、用途或者適應性變化,這些變型、用途或者適應性變化遵循本申請的一般性原理并包括本申請未公開的本技術領域中的公知常識或慣用技術手段。說明書和實施例僅被視為示例性的,本申請的真正范圍和精神由下面的權(quán)利要求指出。
應當理解的是,本申請并不局限于上面已經(jīng)描述并在附圖中示出的精確結(jié)構(gòu),并且可以在不脫離其范圍進行各種修改和改變。本申請的范圍僅由所附的權(quán)利要求來限制。