系統時間與 RTC 時間設置方法

方法說明

嵌入式設備,尤其是帶電池的設備,系統時間特別依賴於 RTC 來維持。這一般也沒問題,都有成熟的實現方案。

但涉及時區時,就有一些坑需要特別注意了。爲了內核的運行可靠,RTC 的時區設置保持爲 UTC,當系統時區不是 UTC 時需要特別注意設置方法,所以分兩種情況進行說明。

 

系統時區爲 UTC

系統時區不爲 UTC

查看系統時間

# date

# date

查看 RTC 時間

# hwclock

# hwclock -u

設置系統時間

# date -s "2020-02-25 16:33:33"

# date -s "2020-02-25 16:33:33"

同步系統時間到RTC

# hwclock --systohc

# hwclock --systohc -u

同步RTC時間到系統

# hwclock --hctosys

# hwclock --hctosys -u

關於 CST、UTC 的補充說明

我們的北京時間是東部區,時區配置一般指定的城市爲 Shanghai,標識爲 CST(China Standard Time),使用 date 命令查看時間時可以看到 CST 或 UTC 標識。

UTC 是協調世界時,又稱世界統一時間、世界標準時間、國際協調時間。也就是東西零區的時間,比我們東八區慢 8 個小時。

關於 hwclock 的補充說明

RTC 存儲的時間本身不帶有時區信息,當使用 hwclock 區讀取解析顯示時需要根據實際配置的時區信心進行轉換。

爲了保持內核的一致性,我們保持 RTC 存儲 UTC 的時間信息。所以無論是讀取還是設置 RTC 時間都需要加上 -u 選項。如果系統配置的時區就是 UTC 的,就不用多此一舉。注意這裏的描述與 PC 上 hwclock 命令關於 -u、--localtime 的解釋有點出入,這裏以嵌入式板卡上的實際運行效果爲準。畢竟我們這裏 hwclock 用的是 busybox 的實現。

當使用 hwclock 命令添加 -u 選項時,表示當前從 RTC 讀取的時間是 UTC 時間信息,然後 hwclock 會根據當前系統配置的時區進行轉換顯示。

2020-02-28 - 廖傑良

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章