日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當前位置:首頁 > 嵌入式 > 嵌入式軟件
[導讀] 首先,明確一個問題:1、嵌入式系統(tǒng)板子上的時間是用date標準系統(tǒng)命令查看的,date是SHELL命令,例如busybox或者uClinux上的sash等。這個時間是有運行起來的嵌入式LINUX軟

 首先,明確一個問題:

1、嵌入式系統(tǒng)板子上的時間是用date標準系統(tǒng)命令查看的,date是SHELL命令,例如busybox或者uClinux上的sash等。這個時間是有運行起來的嵌入式LINUX軟件維護的,其實就是內(nèi)存中的一個全局變量,LINUX默認啟動給這個全局變量賦值就是19700101這樣的數(shù)值。

2、RTC芯片(很多是嵌入式處理器內(nèi)置RTC模塊,那么就是CPU內(nèi)部寄存器)內(nèi)部的寄存器維護的時間值。

一般的,LINUX啟動后,您可以通過date命令來設置更改系統(tǒng)時間,但掉電就會丟失的,啟動后又是1970這樣的時間了。若要能date設置后保存系統(tǒng)時間,使得在下次重啟后還能保持的話,就必須有RTC+后備電池 的軟硬件支持。

例如,我們PC上可以設置系統(tǒng)時間,重啟后也不會丟失,就是因為我們PC主板上有RTC支持。

RTC可以是外接的一個芯片,例如常見的X1226/1227等,它們就是通過I2C接到處理器上的。

當然,現(xiàn)在更多的情況是CPU內(nèi)置RTC模塊,這樣您硬件設計的話就只要提供后備電池即可。

明確了系統(tǒng)時間的兩個概念后,我們來看看RTC的實現(xiàn)機制。

在嵌入式系統(tǒng)上,實現(xiàn)的方法可以靈活多樣,只要能達到最終的目的:

您可通過某種操作獲取當前的正確的時間,而且重啟不會丟失。

那么看看幾種實現(xiàn)機制。

在開始介紹幾種方法前,我們先說明一下軟件時間的方式:

我們的平臺是嵌入式LINUX,要實現(xiàn)RTC支持,則必須是“驅(qū)動+應用程序”的方式,而我們的驅(qū)動都建議是采用MODULES方式獨立加載的方式,這樣可不影響整個LINUX內(nèi)核。

下面開始介紹實現(xiàn)方法:

從上面可以看到,時間實際上是兩個地方同時在維護的,一個是RTC芯片內(nèi)部寄存器或CPU的RTC寄存器;另一個則是LINUX維護的時間。LINUX的時間重啟就會丟失,而RTC由于有后備電池保護,則不會丟失,在板子斷電后還可以繼續(xù)維持計時。所以,最好理解的實現(xiàn)方式就是讓LINUX內(nèi)核啟動的時候,從RTC芯片里面讀取時間值,賦給LINUX的時間變量。這樣LINUX一啟動時間就校正過來,不再是1970了。當然,這樣做,就不能用獨立的RTC驅(qū)動的MODULES形式了。而當您通過date命令設置LINUX時間時,您還要修改date命令的代碼,使之同時還要通過I2C修改RTC芯片內(nèi)部寄存器數(shù)值(或CPU內(nèi)部寄存器數(shù)值),當然了,這樣還是需要一個讀寫RTC的驅(qū)動的。

下面則是一個更簡化的實現(xiàn)方法

即LINUX啟動時,不從RTC芯片里面讀取時間,而您直接修改date命令的代碼,讓它不要從LINUX提供的接口讀取,而是直接通過驅(qū)動從RTC里面直接讀取。

另外,如果您的系統(tǒng)允許的話,您都可以不走date的路線,即讀取系統(tǒng)時間不用date命令也可以,可以自己直接寫個讀取時間的函數(shù),例如read_rtc/write_rtc,就用這兩個函數(shù)取代date命令讀取和設置系統(tǒng)時間的功能。

呵呵,寫了這么多,好像也沒說清楚,最后,大家記?。?/p>

我們看到的時間,實際是在兩個不同的地方維護的

一個是LINUX維護的,一個是RTC芯片里面的。

這樣就存在一個兩個時間同步的問題,一個發(fā)生在LINUX啟動的時候,需要從RTC里面獲取時間;另一個發(fā)生在您設置系統(tǒng)時間的時候,需要兩個同時更改。

當然了,中間一些貓膩就可以發(fā)生,例如您可以偷懶跳過LINUX時間,讓date或者您自己的代碼直接讀取RTC時間,而完全不理會LINUX的時間(還讓它是1970...吧)

在ARM9實驗箱等板子上,我們是通過修改busybox的date.c代碼來實現(xiàn)的的;而在HHGW-LITE-R3等HHPPC平臺上則是通過自己寫的writeRTC來作的。

前一種方法改變了系統(tǒng)運行方式,后一種則沒有把硬件時間同LINUX系統(tǒng)時間聯(lián)系起來。

本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

控制寄存器(Control Register)是中央處理器(CPU)中用于管理系統(tǒng)級操作的特殊寄存器,它為操作系統(tǒng)和硬件提供對處理器行為的精細控制。本文從計算機體系結(jié)構(gòu)角度系統(tǒng)闡述控制寄存器的設計原理、功能分類、操作機制...

關(guān)鍵字: 寄存器 處理器

在嵌入式系統(tǒng)開發(fā)中,硬件抽象層(Hardware Abstraction Layer,HAL)起著至關(guān)重要的作用。它為上層軟件提供了統(tǒng)一的硬件訪問接口,隱藏了底層硬件的細節(jié),使得軟件具有更好的可移植性和可維護性。C++作...

關(guān)鍵字: 嵌入式C++ HAL 寄存器 封裝

采用51單片機最小開發(fā)板,由8位自制獨立按鍵控制。單片機芯片為STC89C52RC,晶振為@12.000 mhz。8X8LED點陣屏模塊由MAX7219驅(qū)動,MAX7219包含一個自動掃描電路。你只需要把要顯示的數(shù)據(jù)發(fā)送...

關(guān)鍵字: 51單片機 MAX7219 寄存器

電源管理集成電路(PMIC)有益于簡化最終應用并縮小其尺寸,也因此備受青睞。然而,當默認啟動時序和輸出電壓與應用要求不符時,就需要定制上電設置。大多數(shù)情況下,電路沒有可以存儲這些設置的非易失性存儲器(NVM)。對此,低功...

關(guān)鍵字: 電源管理 集成電路 寄存器

我從Digilent公司拿出了我的Arty Z7板,并在Vivado/Vitis 2021.2中創(chuàng)建了一個項目來讓它工作,你可以在我的上一個項目帖子中閱讀,我在QDSP-6061的5位數(shù)上顯示滾動文本,上面寫著“Hell...

關(guān)鍵字: 寄存器 AXI4 QDSP-6061 RTL模塊

在單片機系統(tǒng)的設計中,復位電路是確保單片機正常工作的關(guān)鍵組成部分。它能夠在系統(tǒng)啟動時將單片機的內(nèi)部寄存器和狀態(tài)設置為初始值,保證單片機從一個確定的狀態(tài)開始運行。與門芯片作為一種常見的數(shù)字邏輯芯片,有時會被應用于單片機復位...

關(guān)鍵字: 復位電路 寄存器 單片機

在數(shù)字電路設計中,計數(shù)器是一種基礎的數(shù)字電路組件,用于記錄并顯示脈沖信號的數(shù)量或頻率。4進制計數(shù)器,即模4計數(shù)器,是一種特殊的計數(shù)器,其計數(shù)范圍從0到3,共4個狀態(tài)。本文將深入探討如何結(jié)合D觸發(fā)器與寄存器來實現(xiàn)一個4進制...

關(guān)鍵字: D觸發(fā)器 寄存器 計數(shù)器

寄存器是CPU內(nèi)部存儲單元,即寄存器是CPU的組成部份。寄存器是有限存貯容量的高速存貯部件,它們可用來暫存指令、數(shù)據(jù)和位址等。

關(guān)鍵字: 寄存器 CPU

隨著電子技術(shù)的迅速發(fā)展,計算機已深入地滲透到我們的生活中,許多電子愛好者開始學習單片機知識,但單片機的內(nèi)容比較抽象,相對電子愛好者已熟悉的模擬電路、數(shù)字電路,單片機中有一些新的概念,這些概念非?;疽灾劣谝话阕髡卟恍既フ?..

關(guān)鍵字: 單片機 寄存器

今天,小編將在這篇文章中為大家?guī)砘谝莆患拇嫫鱐DM的實現(xiàn)方式的有關(guān)報道。

關(guān)鍵字: 寄存器 移位寄存器
關(guān)閉