中文字幕一级黄色A级片|免费特级毛片。性欧美日本|偷拍亚洲欧美1级片|成人黄色中文小说网|A级片视频在线观看|老司机网址在线观看|免费一级无码激情黄所|欧美三级片区精品网站999|日韩av超碰日本青青草成人|一区二区亚洲AV婷婷

您當(dāng)前的位置:檢測資訊 > 科研開發(fā)

RTC常見故障問題

嘉峪檢測網(wǎng)        2025-03-17 09:09

1.RTC變成1970年的問題與解決方案

 

在某些嵌入式產(chǎn)品運(yùn)行一段時間后,可能會出現(xiàn)RTC(Real-Time Clock)時間回退到1970年,導(dǎo)致程序運(yùn)行異常。

 

這通常與RTC電池電壓過低有關(guān),具體表現(xiàn)為內(nèi)核日志提示類似以下內(nèi)容:

 

rtc-pcf8563 0-0051: low voltage detected, date/time is not reliable.

 

這表明RTC電池電壓偏低,無法保證時間的準(zhǔn)確性,從而影響Linux系統(tǒng)的時間同步。

 

2.PCF8563 RTC芯片的低電壓檢測功能

 

PCF8563芯片具有低電壓檢測功能。

 

當(dāng)檢測到RTC電池電壓低于0.9V時,芯片會標(biāo)記時間數(shù)據(jù)為不可靠(參考圖1)。

 

這可能導(dǎo)致系統(tǒng)時間不同步甚至程序異常。

 

圖1 PCF8563 RTC芯片低壓檢測功能

 

為了避免此類問題,可從以下幾個方面進(jìn)行改進(jìn)和優(yōu)化:

 

采用可充電RTC電池并設(shè)計充電電路,使用可充電電池代替一次性電池,并設(shè)計合適的充電電路,確保電池在設(shè)備運(yùn)行時能夠得到持續(xù)補(bǔ)充電能。

 

關(guān)閉CLKOUT功能以降低功耗,CLKOUT是PCF8563的一個時鐘輸出功能,可能會消耗額外功率。在實際使用中,可通過配置寄存器關(guān)閉此功能,從而延長電池續(xù)航時間。

 

引入超級電容作為輔助電源,設(shè)計多電源供電方案,增加超級電容以提供短期供電:系統(tǒng)上電時由主電源供電。系統(tǒng)掉電后,超級電容供電;超級電容耗盡時,再切換到RTC電池供電。這種方案可以顯著減少對RTC電池的依賴。

 

3.RTC多電源供電參考設(shè)計

 

圖2 RTC多電源供電參考原理圖

 

設(shè)計時需要注意以下幾點:

 

RTC_VDD 專供時鐘芯片,RTC_VDD應(yīng)僅連接到時鐘芯片的VDD引腳,以避免供電干擾。

 

選擇低壓降、低漏電流二極管,在RTC_VDD的供電線路上,二極管的壓降和漏電流直接影響供電效率和電池壽命,應(yīng)優(yōu)先選擇低損耗型號。

 

I²C 上拉電阻使用系統(tǒng)電源,RTC芯片的I²C總線需要使用系統(tǒng)主電源作為上拉電阻供電,避免增加RTC電池負(fù)擔(dān)。

 

預(yù)留CLKOUT調(diào)試測試點,CLKOUT信號可用于調(diào)試時鐘精度,在調(diào)試結(jié)束后關(guān)閉該功能以降低功耗。

 

4.UNIX系統(tǒng)中的“2038年問題”

 

問題背景

 

UNIX系統(tǒng)的時間以“Unix紀(jì)元時間”表示,即從協(xié)調(diào)世界時(UTC)1970年1月1日00:00:00開始累計的秒數(shù)。

 

這種時間表示方式被稱為POSIX時間,廣泛應(yīng)用于Linux和其他系統(tǒng)。

 

在32位處理器的Linux系統(tǒng)中,rtc_time結(jié)構(gòu)體使用有符號整數(shù)表示時間相關(guān)字段,如下所示:

 

struct rtc_time {

    int tm_sec;  // 秒

    int tm_min;  // 分

    int tm_hour; // 小時

    int tm_mday; // 日期

    int tm_mon;  // 月份

    int tm_year; // 年份

    int tm_wday; // 星期

    int tm_yday; // 一年中的第幾天

    int tm_isdst; // 是否為夏令時

};

 

由于32位整數(shù)的最大值為0x7FFFFFFF(即2147483647),其能表示的最大時間范圍約為68年零18天,從1970年1月1日開始計算,到2038年1月19日11:14:07。

 

屆時計數(shù)器溢出,將導(dǎo)致系統(tǒng)時間異常,影響RTC功能的正常運(yùn)行。

 

解決方案

 

升級到高版本Linux內(nèi)核與glibc,對于32位系統(tǒng),可通過升級Linux內(nèi)核和glibc庫以支持更大的時間范圍。然而,此方案工作量較大,且依賴于處理器廠商是否提供相應(yīng)的內(nèi)核支持。

 

遷移到64位系統(tǒng),選用64位處理器并運(yùn)行64位Linux系統(tǒng)是徹底解決問題的最佳方案。在64位系統(tǒng)中,POSIX時間由64位有符號整數(shù)表示,其最大值為0x7FFFFFFFFFFFFFFF(9223372036854775807秒),對應(yīng)的時間范圍約為292億年,從根本上規(guī)避了時間溢出的問題。

 

 

分享到:

來源:美男子玩編程

相關(guān)新聞: