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

當(dāng)前位置:首頁(yè) > 嵌入式 > 嵌入式軟件
[導(dǎo)讀] 首先,明確一個(gè)問(wèn)題:1、嵌入式系統(tǒng)板子上的時(shí)間是用date標(biāo)準(zhǔn)系統(tǒng)命令查看的,date是SHELL命令,例如busybox或者uClinux上的sash等。這個(gè)時(shí)間是有運(yùn)行起來(lái)的嵌入式LINUX軟

 首先,明確一個(gè)問(wèn)題:

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

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

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

例如,我們PC上可以設(shè)置系統(tǒng)時(shí)間,重啟后也不會(huì)丟失,就是因?yàn)槲覀働C主板上有RTC支持。

RTC可以是外接的一個(gè)芯片,例如常見(jiàn)的X1226/1227等,它們就是通過(guò)I2C接到處理器上的。

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

明確了系統(tǒng)時(shí)間的兩個(gè)概念后,我們來(lái)看看RTC的實(shí)現(xiàn)機(jī)制。

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

您可通過(guò)某種操作獲取當(dāng)前的正確的時(shí)間,而且重啟不會(huì)丟失。

那么看看幾種實(shí)現(xiàn)機(jī)制。

在開(kāi)始介紹幾種方法前,我們先說(shuō)明一下軟件時(shí)間的方式:

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

下面開(kāi)始介紹實(shí)現(xiàn)方法:

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

下面則是一個(gè)更簡(jiǎn)化的實(shí)現(xiàn)方法

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

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

呵呵,寫(xiě)了這么多,好像也沒(méi)說(shuō)清楚,最后,大家記住:

我們看到的時(shí)間,實(shí)際是在兩個(gè)不同的地方維護(hù)的

一個(gè)是LINUX維護(hù)的,一個(gè)是RTC芯片里面的。

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

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

在A(yíng)RM9實(shí)驗(yàn)箱等板子上,我們是通過(guò)修改busybox的date.c代碼來(lái)實(shí)現(xiàn)的的;而在HHGW-LITE-R3等HHPPC平臺(tái)上則是通過(guò)自己寫(xiě)的writeRTC來(lái)作的。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

隨著電子技術(shù)的迅速發(fā)展,計(jì)算機(jī)已深入地滲透到我們的生活中,許多電子愛(ài)好者開(kāi)始學(xué)習(xí)單片機(jī)知識(shí),但單片機(jī)的內(nèi)容比較抽象,相對(duì)電子愛(ài)好者已熟悉的模擬電路、數(shù)字電路,單片機(jī)中有一些新的概念,這些概念非常基本以至于一般作者不屑去談...

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

今天,小編將在這篇文章中為大家?guī)?lái)基于移位寄存器TDM的實(shí)現(xiàn)方式的有關(guān)報(bào)道。

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