在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

Linux的RTC回到了1970年,是時光倒流了么?

ZLG致遠電子 ? 2024-12-17 11:37 ? 次閱讀

導讀

RTC是一種用于記錄時間的電子設備,廣泛應用于各種嵌入式系統中。本文通過實際案例分析RTC在實際應用中的問題并給出實際建議,如時間“歸零”、RTC時間誤差過大等。

RTC (Real Time Clock):實時時鐘,是一個獨立的定時器,無論器件處于運行模式、低功耗模式還是復位狀態,只要電源電壓保持在工作范圍內,RTC就會一直工作,實現計時功能。RTC電路雖然簡單,但實際應用中還是會出現一些問題,例如時間“歸零”、RTC時間誤差過大等等,既涉及到硬件方面,也涉及到軟件方面。下面結合實際遇到的問題進行一些方案討論和建議。

另外,在32位Linux系統上,不可避免的會遇到2038年問題,也放在這里一并闡述。

4bd26ad8-bc28-11ef-8084-92fbcf53809c.jpg ?從倉庫發貨的全新產品,為何RTC時間是1970年?

全新產品,開機后系統時間是1970年,有兩種可能性:

產品RTC電池沒有正確安裝,或者鋰電池與電池倉之間的隔離塑料墊片沒有去掉,RTC沒電不工作。

  1. 安裝了RTC電池,但RTC電池已經被耗盡,這情況一般出現在較長時間庫存產品上。

提示:RTC獨立供電的產品,使用前必須正確安裝RTC電池,并在第一次開機的時候設置正確的RTC時間。庫存產品,不安裝RTC電池,或者在安裝電池時做好供電隔離。

4bd26ad8-bc28-11ef-8084-92fbcf53809c.jpg ?產品運行一段時間后,RTC變成1970年了,引起程序運行異常

正常運行的系統,經過一段時間后內核出現如下提示:

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

說明RTC電池電壓已經偏低。這樣會導致RTC時間不可靠,從而影響到Linux系統時間的準確性。

PCF8563芯片具有電池電壓檢測功能,當電壓低于0.9V時將無法保證時鐘信息的準確性(參考圖1),進而導致系統運行異常。

4c0f0510-bc28-11ef-8084-92fbcf53809c.jpg

圖1 PCF8563RTC芯片低壓檢測功能

為了避免出現RTC電池電壓偏低的情況,可以做如下方面的考慮:

  • 可考慮用可充電的RTC電池,并設計充電電路;
  • 關閉RTC芯片的CLKOUT功能,降低RTC功耗,延長RTC電池續航時間;
  • 增加超級電容,正常上電時由系統電源供電,系統掉電后由超級電容供電,超級電容耗盡再用鋰電池供電。

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

4c28b280-bc28-11ef-8084-92fbcf53809c.jpg

4c312a6e-bc28-11ef-8084-92fbcf53809c.png

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

設計時需注意以下幾點:

RTC_VDD 僅供電給時鐘芯片的VDD引腳;

RTC_VDD供電線路上使用的二極管選型低壓降、低漏電流

I2C 上拉電阻使用系統電源;

預留CLKOUT 信號測試點,用于調試時鐘精度,調試結束后關閉該功能可減少功耗。


4bd26ad8-bc28-11ef-8084-92fbcf53809c.jpg ?讓人頭疼的“2038年”問題

先介紹一下UNIX世界的時間,Unix紀元時間是從協調世界時(UTC)1970年1月1日0點開始算起,到現在的總秒數。這個時間也被稱為POSIX時間。Linux沿用UNIX時間,在32位處理器的Linux系統里,定時器是32位的,最大計數是0xFFFFFFFF,而在Linux系統中,rtc_time定義的是秒、分、小時等都是有符號整數。

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位定時器有符號整數最大計數為0x7FFFFFF,換算成十進制是2147483647。

2147483647秒,換算成年的話,是68.09625973490614年,大概是68年零18天。所以,UNIX時間,從1970年1月1日零時起,經過68年零18天后(確切是2038年1月19日中午1107),計數器溢出,RTC將無法正常工作。在32位系統上解決這個問題,需要升級到Linux內核到高版本,同時升級glibc,工作量很大,對一些發布較久的處理器,原廠不一定能提供新版本內核,這是很讓人頭疼的。如果選用選用64位處理器,跑64位Linux系統就沒這個問題了。

升級到64位Linux系統后,RTC計數器最大值為0x7FFFFFFFFFFFFFFF,換算成十進制是9223372036854775807。9223372036854775807秒,換算成年,大約是292億年,完全不用去考慮RTC時間溢出的問題了。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • Linux
    +關注

    關注

    87

    文章

    11479

    瀏覽量

    213056
  • 實時時鐘
    +關注

    關注

    4

    文章

    308

    瀏覽量

    66925
  • RTC
    RTC
    +關注

    關注

    2

    文章

    615

    瀏覽量

    68455
收藏 人收藏

    評論

    相關推薦
    熱點推薦

    【RA4L1-SENSOR】RTC實時時鐘

    在使用SLCDC配置好段碼LCD屏之后,則能不用來顯示個時間呢 下面展示下配置RTC的流程 時鐘源要選擇外部低俗時鐘,就是圖中的Sub-clock Frequency Comparision
    發表于 06-13 12:10

    “耐高溫!”RTC時鐘芯片+電池的應用案例(二)

    實時時鐘,簡稱RTC,是廣泛應用于電子產品的重要元器件。愛普生RTC實時時鐘具有高精度、高穩定性和多功能等特點,廣泛應用于多個行業。RTC時鐘芯片主要功能是保持設備時間的準確運行,即使在主電源斷電
    的頭像 發表于 06-04 17:35 ?294次閱讀
    “耐高溫!”<b class='flag-5'>RTC</b>時鐘芯片+電池的應用案例(二)

    【米爾-RK3562開發板試用評測】rtc測評

    至系統時鐘。MYD-YR3562?持內部與外部雙RTC架構,開發板 系統默認使用外部 RTC。針對常規功耗場景的 RTC功能驗證,可通過 Linux 系統標準工 具(如 hwclock
    發表于 05-31 15:04

    linux+rtos系統如何適配linux小核屏幕驅動?

    的開發板配套的屏幕都沒有hx8399,我應該如何去適配一個自己的屏幕。可以的話我希望能夠適配自己的第三方的屏幕,已經在大核上調通能用點亮運行。linux下的適配遇到了困難。 有的、可以在看一下
    發表于 04-25 07:16

    小安派BW21-CBV-Kit教程——基礎RTC例程與簡易RTC鬧鐘

    本例演示如何使用 RTC 庫方法。本函數介紹如何使用 RTC API。RTC 功能由一個獨立的 BCD 定時器/計數器實現。
    發表于 04-13 17:46 ?286次閱讀
    小安派BW21-CBV-Kit教程——基礎<b class='flag-5'>RTC</b>例程與簡易<b class='flag-5'>RTC</b>鬧鐘

    RTC芯片有Linux PCA2131驅動程序嗎?

    RTC 芯片有 Linux PCA2131驅動程序嗎? 1) 如果沒有,我可以使用任何兼容的驅動程序來驅動這個 RTC 芯片嗎? 2) 如果是,我在哪里可以找到它?
    發表于 03-31 06:22

    如何利用RTC外設實現萬歷功能

    本小節講解的是如何利用RTC外設實現萬歷功能,本實驗工程與RTC底層驅動相關的文件為bsp_rtc.c/h,在底層驅動之上我們添加了bsp_calendar.c/h和bsp_date
    的頭像 發表于 02-18 16:56 ?1002次閱讀

    飛凌嵌入式ElfBoard ELF 1板卡-開發板適配之I2C-RTC

    \\ 02-Linux 源代碼\\02-1 驅動源碼\\13_rx8010\\rtc-rx8010.c拷貝到內核源碼的drivers/rtc/路徑下: 二、修改Kconfig: elf@ubuntu
    發表于 02-14 10:10

    RTC時鐘芯片+電池的應用案例(一)

    實時時鐘,簡稱RTC,是廣泛應用于電子產品的重要元器件。愛普生RTC實時時鐘具有高精度、高穩定性和多功能的特點,目前廣泛應用于多個行業。下面通過幾個視頻來詳細了解一下愛普生RTC實時時鐘在工業以及
    的頭像 發表于 01-08 11:25 ?1505次閱讀
    <b class='flag-5'>RTC</b>時鐘芯片+電池的應用案例(一)

    嵌入式學習-飛凌嵌入式ElfBoard ELF 1板卡-shell編程入門之提取字符并設置rtc時間

    ,主要分為以下幾個步驟: 一、使用echo命令輸出一段提示信息,表示開始測試RTC功能。 二、使用date命令設置系統時間為20231月1日0時0分0秒。 三、使用hwclock命令將系統時間寫入
    發表于 12-12 17:26

    飛凌嵌入式ElfBoard ELF 1板卡-shell編程入門之提取字符并設置rtc時間

    控制和條件處理; 五、支持與其他Unix及Linux命令行工具配合使用; awk的語法結構比較簡單,它的基本語法格式如下: awk \'pattern {action}\' filename 設置rtc時間
    發表于 12-11 16:49

    RTC與WebRTC的主要區別

    在數字通信領域,實時通信(RTC)和WebRTC是兩個經常被提及的術語。它們都旨在提供即時的、高質量的通信體驗,但它們在實現方式、應用場景和技術支持上有所不同。 1. 定義與起源 1.1 實時通信
    的頭像 發表于 12-11 15:41 ?1197次閱讀

    RTC技術在實時通信中的應用 RTC與VoIP的區別

    在數字化時代,實時通信(RTC)技術已經成為我們日常生活和工作中不可或缺的一部分。從視頻會議到在線教育,從遠程醫療到社交網絡,RTC技術都在發揮著重要作用。 一、RTC技術在實時通信
    的頭像 發表于 12-11 15:38 ?1716次閱讀

    提升效率:RTC時鐘實用設置

    今天來給大家講解的是RTC時鐘實用性,提升絕對的效率。
    的頭像 發表于 11-04 16:35 ?1272次閱讀
    提升效率:<b class='flag-5'>RTC</b>時鐘實用設置

    什么是RTC模塊?

    什么是“RTC”?“RTC”是實時時鐘的縮寫,它是一種測量時間的電子設備。什么是“RTC模塊”?“RTC模塊”是一個集成了RTCIC、振蕩器電路和主時鐘的單封裝模塊。無需自行設計振蕩器
    的頭像 發表于 07-24 14:14 ?861次閱讀
    什么是<b class='flag-5'>RTC</b>模塊?
    主站蜘蛛池模板: 俺去啦在线视频 | 四虎国产成人亚洲精品 | 超h 高h 污肉男男 | 一级片在线观看免费 | 四虎永久免费在线观看 | 三级视频国产 | 亚洲酒色1314狠狠做 | 四虎影在线永久免费观看 | 高清视频 一区二区三区四区 | 免费精品| 国产在线免 | 717影院理论午夜伦不卡久久 | 天天干影视 | 狠狠夜夜| 亚洲香蕉久久一区二区三区四区 | 欧美 亚洲 国产 丝袜 在线 | 天天做天天爱天天干 | 久久精品久噜噜噜久久 | 日本免费性 | 四虎影业 | 久久成人亚洲 | 视频一区中文字幕 | 清纯漂亮小美女准备啪啪 | 韩国视频在线播放 | 18女人毛片 | 亚洲欧美在线播放 | 视频一区视频二区在线观看 | 欧美极品在线播放 | 狠狠色丁香久久婷婷 | 亚洲综合视频一区 | 在线资源站 | 色吧综合网 | 黄视频网站免费 | 丁香六月欧美 | 婷婷色在线观看 | 五月天婷婷在线观看 | seetube18日本第一次 | 久久久久久青草大香综合精品 | 性网站在线观看 | 恐怖片大全恐怖片免费观看好看的恐怖片 | 久久久免费网站 |