第一次寫部落格,應該會有一些瑕疵,後續不斷改進吧。以前只是分享別人的東西,現在希望把自己掌握知識分享給大家,希望能堅持下去~~
什麼是處理器的冷啟動 vs 熱啟動?
冷啟動:是處理器的一種啟動方式,就是切斷處理器的供電電源,重新啟動,一旦冷啟動,記憶體的東西全部丟失。
熱啟動:熱啟動通常是由於系統復位造成的系統重啟,如硬體看門狗復位、軟體看門狗復位、記憶體越界訪問造成的重啟等。
為什麼要區分冷啟動 vs 熱啟動?意義何在?
冷啟動的主要工作及此時系統設計目標。通常情況下,對於嵌入式系統而言,冷啟動需要對系統整體進行初始配置,包括但不限於硬體暫存器配置、軟體變數初始化、上電自檢(記憶體、nvram、通訊匯流排、ad、io……)、記錄產品上電資訊(上電次數、上電自檢結果……)等,產品設計的第一目標是保證系統初次上電擁有乙個良好的初始狀態。即使有問題也要爭取在初始階段暴漏,而禁止產品「帶病」執行。當然,執行這些操作需要耗費一定的啟動時間,這是系統設計需要必須付出的代價。
熱啟動通常是由於復位造成的系統重啟、軟體的重新執行,如硬體看門狗、軟體看門狗等造成的復位。針對熱啟動,產品設計的第一目標是盡快使系統恢復到熱啟動之前的狀態,並保持產品處於受控狀態。因此,部分冷啟動時所做的設計操作可能不需要或者也不允許再次進行,否則可能造成不必要的系統異常發生。這裡舉乙個ad電壓採集問題的簡單例子,用以說明為什麼要區分冷啟動和熱啟動。
(1)如果冷啟動時電壓採集變數初始化為0,熱啟動時電壓採集變數也初始化為0。這樣可能會產生以下的問題:物理連線的電壓始終沒有變化(如保持28vdc),僅僅由於處理器的復位造成採集的電壓值產生跳變28vdc—>0—>28vdc。
(2)冷啟動時電壓採集變數初始化為0,熱啟動時電壓採集變數初始化為啟動前的狀態。這樣就可以避免上述電壓取樣值的跳變問題。
上述問題的解決方法可能不知一種,比如濾波、將資料記錄在flash中等等,但實際應用情況可能比較複雜(比如電壓資料記在flash中,那麼是否需要實時記錄電壓資料?——耗費系統時間;產品下電後,第二次啟動是否會誤讀該資料?),在此不展開討論。
冷啟動、熱啟動的區分方法有哪些?
區分方法一:利用處理器內部ram物理特性,採用軟體程式設計方法
實現原理:處理器內部ram儲存的資料掉電丟失,處理器復位時資料不會丟失,利用該特點進行冷啟動、熱啟動的區分。
實現步驟:(不能插入流程圖,只能寫偽**了……)
void main (void)
else
......
}
優點:不需要額外的硬體資源,即可區分冷啟動和熱啟動,實現方法簡單。
缺點:可靠性取決於magic number的複雜度,在實際應用中,設定了32位長度資料,經實際應用暫未發現問題。
區分方法二:借助cpld或者fpga等邏輯器件實現
實現原理:在邏輯器件內部建立cpu可以讀寫的位址空間(例如address = 0xa0000000),通過該位址空間的數值區分冷啟動vs熱啟動。 編寫cpld邏輯實現,產品冷啟動時address 位址上鎖存的資料為initvalue = 0x1111;熱啟動該值保持不變。
實現步驟:
const
unsigned
int initvalue = 0x1111; // 預設邏輯位址資料
int systemstartupmode = 0; // 系統啟動方式定義
void main(void)
else
.......
}
優點:區分處理器的冷啟動、熱啟動更加安全、可靠。
缺點:需要cpld或者fpga外圍器件支援。
冷啟動 熱啟動
冷啟動 1 接通電源啟動計算機的方式,稱為冷啟動。2 介紹 自檢 3 具體操作步驟如下 加電 自檢 引導作業系統。熱啟動 1 熱啟動是指在計算機已經開啟的狀態下,通過鍵盤重新引導作業系統。一般在宕機時才使用。2 方法 左手按住 ctrl 和 alt 不放開,右手按下 del 然後同時放開。3 熱啟動...
熱啟動和冷啟動
在日常用機過程中,往往需要對計算機進行冷啟動和熱啟動,通常的方法是通過按reset 鍵實現冷啟動,按 實現熱啟動。它們的實 質都是轉入bios的入口點,即rom的起始位址ffff 0處 轉向啟動程式。該啟動程式在執行過程中需檢測復位標誌字 位於bios資料區位址0040 0072 的值,若為1234...
冷啟動與熱啟動的區別
冷啟動對電子產品影響才大。從電路角度來看 熱啟動是在系統仍通電的情況下重新啟動系統,熱啟動也是一次軟體復位。熱啟動清除易失性系統記憶體,並重新裝載作業系統。冷啟動是用關閉電源來啟動系統,冷啟動還對硬體進行復位,它檢查硬體,並重新裝載作業系統。最重要的是冷啟動對硬體進行一次檢查。現在的電腦這個過程好像...