萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 作業系統 >  >> Linux 教學

嵌入式 Linux 時間機制深度解析:系統時間 vs RTC 硬體時間、三種同步策略

嵌入式 Linux 涉及兩個獨立的時間體系,理解兩者差異是掌握 RTC 機制的關鍵。

一、兩種時間的本質差異

  • Linux 系統時間:軟體維護的全域變數,date 指令讀取/設定的即是此值。核心啟動預設初始化為 1970-01-01(Unix Epoch)。
  • RTC 硬體時間:RTC 晶片(外掛如 X1226/1227 或 CPU 內建)由備用電池供電,斷電仍持續計時,透過 I2C 或內部暫存器存取。

若無 RTC 支援,date 設定的時間掉電即失效,重開機回到 1970 年。

二、三種實現 RTC 支援的策略

策略一:核心啟動時從 RTC 同步系統時間

最直觀,但無法以獨立驅動模組形式運作;且透過 date 設定時間時,仍需驅動程式同步寫入 RTC 暫存器。

策略二:繞過系統時間,直接修改 date 讀取 RTC

修改 Busybox date.c,使其不讀取核心時間變數,改直接透過驅動存取 RTC。

策略三:完全自訂 read_rtc/write_rtc 取代 date

不使用核心時間介面,自行撰寫讀寫 RTC 函式,完全解耦系統時間與硬體時間。

三、關鍵同步時刻總結

  1. 開機時:從 RTC 取得時間校正系統時間(策略一)或直接供應用程式使用(策略二/三)。
  2. 設定時間時:同時更新系統時間與 RTC 硬體時間(策略一),或僅更新 RTC(策略二/三)。

實務上可視硬體資源與專案需求彈性選擇,甚至「偷懶」讓系統時間永遠停在 1970 年,完全依賴 RTC。

copyright © 萬盛學電腦網 all rights reserved