嵌入式Linux中RTC的操作說明

2021-05-23 08:20:42 字數 1652 閱讀 2174

對於手機、pda的嵌入式平台的關機鬧鐘都使用rtc實現,rtc是乙個硬體。

rtc中儲存兩個時間,乙個是普通的滴答時間,另乙個是提醒時間,rtc猶如乙個滴答計時器,當rtc中時鐘到達指定的提醒時間的時候,就會發出中斷,讓系統開機,從而達到關機鬧鐘的功能。

在linux中,當系統啟動之後,會啟動乙個叫atd的deamon程序,用於操作rtc。

atd中會用while迴圈不停的查詢/var/spool/at/***.pid和/var/spool/at/trigger兩個管道是否有資料,如果有則重新設定rtc的滴答時間或是提醒時間(/var/spool/at/***.pid是以提醒的時間的utc的秒數來命名的;而/var/spool/at/trigger中有資料"w"表示需要將系統當前時間寫到rtc中)。當設定乙個提醒時間到rtc之後,會使用select監聽/var/spool/at/***.pid和/var/spool/at/trigger兩個管道及rtc提醒時間的中斷訊息。

rtc硬體對應的裝置檔案是/dev/rtc。

下面省略了open和close介面

對rtc裝置的讀操作主要是返回目前rtc的中斷情況的乙個狀態值(**中用rtc_irq_status標識),這個值是乙個unsigned long型別的資料,該資料的定義如下:

其他bit

低8bit

中斷次數

中斷型別

下面的巨集定義了中斷的型別:

#define     rtc_irqf            0x80

#define     rtc_pf              0x40

#define     rtc_af              0x20

#define     rtc_uf              0x10

rtc_pf標識periodic interrupt flag。

rtc_af標識alarm interrupt flag

rtc_uf標識update interrupt flag

沒有中斷產生的時候,rtc沒有資料可讀。

rtc misc driver實現的ioctl命令包括: 命令

解釋rtc_aie_off

關閉alarm中斷

rtc_aie_on

開啟alarm中斷

rtc_pie_on

開啟週期性中斷

rtc_pie_off

關閉週期性中斷

rtc_uie_on

開啟update型別的中斷

rtc_uie_off

關閉update型別的中斷

rtc_alm_read

讀取alarm的時間

rtc_alm_set

設定alarm的時間

rtc_rd_time

讀取當前的rtc時間

rtc_set_time

設定當前的rtc時間

rtc_irqp_read

讀取當前週期性中斷的頻率

rtc_irqp_set

設定當前週期性中斷的頻率

1)同時只能有乙個程序開啟/dev/rtc裝置進行操作;

2)對rtc寫alarm之後,不能關閉裝置號,否則設定的alarm無效,必須在alarm中斷到達之後關閉才有效

說明:上面是分析qtopia得出的結論,如果有分析不清楚或是表達不得當的地方,請多多指教!

嵌入式Linux中RTC的操作說明

對於手機 pda的嵌入式平台的關機鬧鐘都使用rtc實現,rtc是乙個硬體。rtc中儲存兩個時間,乙個是普通的滴答時間,另乙個是提醒時間,rtc猶如乙個滴答計時器,當rtc中時鐘到達指定的提醒時間的時候,就會發出中斷,讓系統開機,從而達到關機鬧鐘的功能。在linux中,當系統啟動之後,會啟動乙個叫at...

藍橋杯嵌入式 RTC

bkp裡是關於備份暫存器的庫函式,pwr裡是關於電源管理的庫函式 ifndef rtc h define rtc h include stm32f10x.h void rtc init u8 hh,u8 mm,u8 ss endif include rtc.h void rtc init u8 hh...

嵌入式linux下操作GPIO

本文 在嵌入式裝置中對gpio的操作是最基本的操作。一般的做法是寫乙個單獨驅動程式,網上大多數的例子都是這樣的。其實linux下面有乙個通用的gpio操作介面,那就是我要介紹的 sys class gpio 方式。首先,看看系統中有沒有 sys class gpio 這個資料夾。如果沒有請在編譯核心...