




版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、第第1212章章 RTCRTC實時時鐘驅動實時時鐘驅動RTC實時時鐘為操作系統(tǒng)提供一個可靠的時間,并且在斷實時時鐘為操作系統(tǒng)提供一個可靠的時間,并且在斷電的情況下,電的情況下,RTC實時時鐘也可以通過電池供電,一直運行下實時時鐘也可以通過電池供電,一直運行下去。在計算機系統(tǒng)中,經(jīng)常會用到去。在計算機系統(tǒng)中,經(jīng)常會用到RTC實時時鐘。例如,手機實時時鐘。例如,手機在關機模式下,仍然能夠保證時間的正確性,就是因為在關機模式下,仍然能夠保證時間的正確性,就是因為RTC實實時時鐘可以在很小的耗電量下工作。在嵌入式系統(tǒng)中,時時鐘可以在很小的耗電量下工作。在嵌入式系統(tǒng)中,RTC設設備是一種常用的設備,所以
2、學會寫備是一種常用的設備,所以學會寫RTC實時時鐘驅動程序是一實時時鐘驅動程序是一件非常重要的工作。件非常重要的工作。12.1 RTC12.1 RTC實時時鐘硬件原理實時時鐘硬件原理在編寫驅動程序之前,需要首先了解一下在編寫驅動程序之前,需要首先了解一下RTC實時時實時時鐘的概念和硬件原理。熟悉鐘的概念和硬件原理。熟悉RTC實時時鐘的概念和硬件原理實時時鐘的概念和硬件原理對驅動程序的編寫又非常大的好處。首先來看看什么是對驅動程序的編寫又非常大的好處。首先來看看什么是RTC實時時鐘。實時時鐘。12.1.1 RTC12.1.1 RTC實時時鐘實時時鐘RTC的英文全稱是的英文全稱是Real-Time
3、 Clock,一般稱為,一般稱為RTC實時時實時時鐘。實時時鐘(鐘。實時時鐘(RTC)單元可以在系統(tǒng)電源關半閉的情況下依)單元可以在系統(tǒng)電源關半閉的情況下依靠備用電池工作,一般主板上都有一個紐扣電池作為實時時鐘靠備用電池工作,一般主板上都有一個紐扣電池作為實時時鐘的電源。的電源。RTC可以通過使用可以通過使用STRBLDDRB這兩個這兩個ARM指令向指令向CPU傳遞傳遞8位數(shù)據(jù)(位數(shù)據(jù)(BCD碼)。數(shù)據(jù)包括秒、分、小時、日期碼)。數(shù)據(jù)包括秒、分、小時、日期、天、月、和年。、天、月、和年。RTC實時時鐘依靠一個外部的實時時鐘依靠一個外部的32.768kHZ的的石晶體,產(chǎn)生周期性的脈沖信號。每一個
4、脈沖信號到來時,計石晶體,產(chǎn)生周期性的脈沖信號。每一個脈沖信號到來時,計數(shù)器就加數(shù)器就加1,通過這種方式,完成計時功能。,通過這種方式,完成計時功能。12.1.2 RTC12.1.2 RTC實時時鐘的功能實時時鐘的功能XTIrtc和和XTOrtc產(chǎn)生脈沖信號。傳給產(chǎn)生脈沖信號。傳給215的一個時鐘分頻的一個時鐘分頻器,得到一個器,得到一個128Hz的頻率,這個頻率用來產(chǎn)生滴答計數(shù)。當?shù)念l率,這個頻率用來產(chǎn)生滴答計數(shù)。當TICNT計數(shù)為計數(shù)為0時,產(chǎn)生一個時,產(chǎn)生一個TIME TICK中斷信號。中斷信號。RTCCON寄存器用來控制寄存器用來控制RTC實時時鐘的功能。實時時鐘的功能。RTCRST是
5、是重置寄存器,用來重置重置寄存器,用來重置SEC和和MIN寄存器。寄存器。Leap Year Generator是一個閏年發(fā)生器,用來產(chǎn)生閏年邏輯。是一個閏年發(fā)生器,用來產(chǎn)生閏年邏輯。RTCALM用來控制是否產(chǎn)生報警信號。用來控制是否產(chǎn)生報警信號。13.1.2 RTC13.1.2 RTC實時時鐘的工作原理實時時鐘的工作原理RTC實時時鐘的工作由多個寄存器來控制。實時時鐘的工作由多個寄存器來控制。RTCCON寄存器用來控制寄存器用來控制RTC實時時鐘的整體功能。實時時鐘的整體功能。 12.1 RTC12.1 RTC實時時鐘架構實時時鐘架構本節(jié)對本節(jié)對RTC實時時鐘的整體架構進行了簡要的分析。實時
6、時鐘的整體架構進行了簡要的分析。主要包括驅動程序的加載卸載函數(shù)、探測函數(shù)、使能函數(shù)、主要包括驅動程序的加載卸載函數(shù)、探測函數(shù)、使能函數(shù)、頻率設置函數(shù)等。從這些函數(shù)的分析中,讀者可以了解到整頻率設置函數(shù)等。從這些函數(shù)的分析中,讀者可以了解到整個驅動程序的架構,也能對個驅動程序的架構,也能對RTC實時時鐘的工作原理更為了實時時鐘的工作原理更為了解。解。12.2.1 12.2.1 加載卸載函數(shù)加載卸載函數(shù)RTC實時時鐘的驅動程序包含在實時時鐘的驅動程序包含在/drivers/rtc/Rtc-s3c.c文件中。文件中。RTC實時時鐘的驅動模塊邏輯比較簡單,首先注冊實時時鐘的驅動模塊邏輯比較簡單,首先注
7、冊一個平臺設備驅動,然后由平臺設備驅動負責完成對一個平臺設備驅動,然后由平臺設備驅動負責完成對RTC實實時時鐘的驅動工作。時時鐘的驅動工作。RTC模塊的加載函數(shù)是模塊的加載函數(shù)是s3c_rtc_init(),卸載函數(shù)是卸載函數(shù)是s3c_rtc_exit()。12.2.2 RTC12.2.2 RTC實時時鐘的平臺驅動實時時鐘的平臺驅動在文件在文件/drivers/rtc/Rtc-s3c.c中定義了中定義了RTC實時時鐘的實時時鐘的平臺設備驅動。其中平臺設備驅動的一些函數(shù)沒有用處,所平臺設備驅動。其中平臺設備驅動的一些函數(shù)沒有用處,所以沒有定義。以沒有定義。12.2.3 RTC12.2.3 RTC
8、驅動探測函數(shù)驅動探測函數(shù)當調(diào)用當調(diào)用platform_driver_register()函數(shù)注冊驅動之后,會觸函數(shù)注冊驅動之后,會觸發(fā)平臺設備和驅動的匹配函數(shù)發(fā)平臺設備和驅動的匹配函數(shù)platform_match()。匹配成功,則。匹配成功,則會調(diào)用平臺設備驅動中的會調(diào)用平臺設備驅動中的probe()函數(shù),函數(shù),RTC實時時鐘驅動中對實時時鐘驅動中對應的函數(shù)就是應的函數(shù)就是s3c_rtc_probe()。12.2.5 RTC12.2.5 RTC實時時鐘設置頻率函數(shù)實時時鐘設置頻率函數(shù)s3c_rtc_setfreq()s3c_rtc_setfreq()時鐘脈沖時鐘脈沖1秒鐘產(chǎn)生秒鐘產(chǎn)生128次時
9、鐘滴答??梢越o次時鐘滴答。可以給TICNT寄寄存器的低存器的低7位賦值,取值范圍為位賦值,取值范圍為0到到127,用,用n來表示。來表示。12.2.6 RTC12.2.6 RTC設備注冊函數(shù)設備注冊函數(shù) rtc_device_register()rtc_device_register()RTC實時時鐘設備必須注冊到內(nèi)核中才可以使用。在注實時時鐘設備必須注冊到內(nèi)核中才可以使用。在注冊設備的過程中,將設備提供的應用程序的接口冊設備的過程中,將設備提供的應用程序的接口ops也指定到也指定到設備上。這樣,當應用成員讀取設備的數(shù)據(jù)時,就可以調(diào)用設備上。這樣,當應用成員讀取設備的數(shù)據(jù)時,就可以調(diào)用這些底層
10、的驅動函數(shù)。注冊這些底層的驅動函數(shù)。注冊RTC設備的函數(shù)是設備的函數(shù)是rtc_device_register()。12.3 RTC12.3 RTC文件系統(tǒng)接口文件系統(tǒng)接口和字符設備一樣,和字符設備一樣,RTC實時時鐘驅動程序也定義了一個實時時鐘驅動程序也定義了一個與與flie_operation對應的對應的rtc_class_ops結構體。這個結構體中的結構體。這個結構體中的函數(shù)定義了文件系統(tǒng)中的對應函數(shù)。本節(jié)將對這些函數(shù)進行函數(shù)定義了文件系統(tǒng)中的對應函數(shù)。本節(jié)將對這些函數(shù)進行簡要的分析,以使讀者對驅動程序的讀寫有詳細的了解。簡要的分析,以使讀者對驅動程序的讀寫有詳細的了解。12.3.1 12
11、.3.1 文件系統(tǒng)接口文件系統(tǒng)接口rtc_class_opsrtc_class_opsrtc_class_ops是一個對設備進行操作的抽象結構體。內(nèi)是一個對設備進行操作的抽象結構體。內(nèi)核允許為設備建立一個設備文件,對設備文件的所有操作,核允許為設備建立一個設備文件,對設備文件的所有操作,就相當于對設備的操作。這樣的好處是,用戶程序可以使用就相當于對設備的操作。這樣的好處是,用戶程序可以使用訪問普通文件的方法,來訪問設備文件,進而訪問設備。這訪問普通文件的方法,來訪問設備文件,進而訪問設備。這樣的方法,極大地減輕了程序員的編程負擔,程序員不必要樣的方法,極大地減輕了程序員的編程負擔,程序員不必要
12、去去熟悉新的驅動接口,就能夠訪問設備。熟悉新的驅動接口,就能夠訪問設備。 12.3.2 RTC12.3.2 RTC實時時鐘打開函數(shù)實時時鐘打開函數(shù)s3c_rtc_open()s3c_rtc_open()RTC設備的打開函數(shù)由設備的打開函數(shù)由s3c_rtc_open()來實現(xiàn)。用戶空來實現(xiàn)。用戶空間調(diào)用間調(diào)用open()時,最終會調(diào)用時,最終會調(diào)用s3c_rtc_open()函數(shù)。該函數(shù)主函數(shù)。該函數(shù)主要申請了兩個中斷,一個報警中斷,另一個是計時中斷。要申請了兩個中斷,一個報警中斷,另一個是計時中斷。12.3.3 RTC12.3.3 RTC實時時鐘關閉函數(shù)實時時鐘關閉函數(shù)s3c_rtc_rele
13、ase()s3c_rtc_release()RTC設備的釋放函數(shù)由設備的釋放函數(shù)由s3c_rtc_release()來實現(xiàn)。用戶來實現(xiàn)。用戶空間調(diào)用空間調(diào)用close()時,最終會調(diào)用時,最終會調(diào)用s3c_rtc_release()函數(shù)。該函函數(shù)。該函數(shù)主要釋放數(shù)主要釋放s3c_rtc_open()函數(shù)中申請的兩個中斷,一個報函數(shù)中申請的兩個中斷,一個報警中斷,另一個是計時中斷。警中斷,另一個是計時中斷。12.3.4 RTC12.3.4 RTC實時時鐘獲得時間函數(shù)實時時鐘獲得時間函數(shù)s3c_rtc_gettime()s3c_rtc_gettime()當調(diào)用當調(diào)用read()函數(shù)時會間接的調(diào)用函
14、數(shù)時會間接的調(diào)用s3c_rtc_gettime()函數(shù)函數(shù)來獲得實時時鐘的時間。時間值分別保存在來獲得實時時鐘的時間。時間值分別保存在RTC實時時鐘的實時時鐘的各個寄存器中。這些寄存器是秒寄存器(各個寄存器中。這些寄存器是秒寄存器(BCDSEC)、日期)、日期寄存器(寄存器(SECDATA)、分鐘寄存器()、分鐘寄存器(BCDMIN)、小時寄)、小時寄存器(存器(BCDHOUR)。)。s3c_rtc_gettime()函數(shù)中會使用一個函數(shù)中會使用一個struct rtc_time的結構體,這個結構體表示一個時間值。的結構體,這個結構體表示一個時間值。12.3.5 RTC12.3.5 RTC實時
15、時鐘設置時間函數(shù)實時時鐘設置時間函數(shù)s3c_rtc_settime()s3c_rtc_settime()當調(diào)用當調(diào)用write()函數(shù)向設備驅動程序寫入時間時,會間接函數(shù)向設備驅動程序寫入時間時,會間接的調(diào)用的調(diào)用s3c_rtc_settime()函數(shù)來設置實時時鐘的時間。時間函數(shù)來設置實時時鐘的時間。時間值分別保存在值分別保存在RTC實時時鐘的各個寄存器中。這些寄存器是實時時鐘的各個寄存器中。這些寄存器是秒寄存器(秒寄存器(BCDSEC)、日期寄存器()、日期寄存器(SECDATA)、分鐘)、分鐘寄存器(寄存器(BCDMIN)、小時寄存器()、小時寄存器(BCDHOUR)。對應)。對應驅動程
16、序中的驅動程序中的S3C2410_RTCSEC、S3C2410_RTCDATE、S3C2410_RTCMIN、S3C2410_RTCHOUR等寄存器。等寄存器。12.3.6 RTC12.3.6 RTC驅動探測函數(shù)驅動探測函數(shù)s3c_rtc_getalarm()s3c_rtc_getalarm()在正常模式和掉電模式下,在正常模式和掉電模式下,RTC在指定的時刻會產(chǎn)生在指定的時刻會產(chǎn)生一個報警信號。正常模式下,報警中斷一個報警信號。正常模式下,報警中斷ALMINT有效,對應有效,對應INT_RTC引腳。掉電模式下,報警中斷引腳。掉電模式下,報警中斷ALMINT有效外還有效外還產(chǎn)生一個喚醒信號產(chǎn)生
17、一個喚醒信號PMWKUP,對應,對應PMWKUP引腳。引腳。RTC報警寄存器報警寄存器RTCALM決定是否使能報警狀態(tài)和設置報警條決定是否使能報警狀態(tài)和設置報警條件。件。12.3.7 RTC12.3.7 RTC實時時鐘設置報警時間函數(shù)實時時鐘設置報警時間函數(shù)s3c_rtc_setalarm()s3c_rtc_setalarm()與與s3c_rtc_getalarm()函數(shù)對應的函數(shù)是函數(shù)對應的函數(shù)是s3c_rtc_setalarm()函數(shù)。函數(shù)。s3c_rtc_setalarm()函數(shù)用來設置報函數(shù)用來設置報警時間。警時間。12.3.8 RTC12.3.8 RTC設置脈沖中斷使能函數(shù)設置脈沖中
18、斷使能函數(shù)s3c_rtc_setpie()s3c_rtc_setpie()s3c_rtc_setpie()函數(shù)用來設置是否允許脈沖中斷。第一函數(shù)用來設置是否允許脈沖中斷。第一個參數(shù)是個參數(shù)是RTC設備結構體,第二個參數(shù)表示是否允許脈沖中設備結構體,第二個參數(shù)表示是否允許脈沖中斷。斷。enalbed等于等于1表示允許,表示允許,enabled等于等于0表示不允許脈沖表示不允許脈沖中斷。中斷。12.3.9 RTC12.3.9 RTC時鐘脈沖中斷判斷函數(shù)時鐘脈沖中斷判斷函數(shù)s3c_rtc_proc()s3c_rtc_proc()在在proc文件系統(tǒng)中,可以讀取文件系統(tǒng)中,可以讀取proc文件系統(tǒng)來判斷文件系統(tǒng)來判斷RTC實時時鐘是否支持脈沖中斷。脈沖中斷由實時時鐘是否支持脈沖中斷。脈沖中斷由TICNT寄存器的最寄存器的最高位來決定,最高位為高位來決定,最高位為1則表示使能脈沖中斷,為則表示使能脈沖中斷,為0表示不允表示不允許脈沖中斷。許脈沖中斷。proc文件系統(tǒng)中的讀取命令,一般為文件系統(tǒng)中的讀取命令,一般為cat命令命令,會調(diào)用內(nèi)核中的,會調(diào)用內(nèi)核中的s3c_rtc_proc()函數(shù)。函數(shù)。12.4 12.4 小結小結RTC實時時鐘是計算機中一個非常重要的計時系統(tǒng)。實時時鐘是計算機中一個非常重要的計時系統(tǒng)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年商丘道路運輸從業(yè)資格證
- 代加工用合同范本
- 鄉(xiāng)鎮(zhèn)開店送貨合同范本
- 分兩期買車合同范例
- 公路制式版合同范本
- 農(nóng)機抵押貨款合同范本
- 農(nóng)業(yè)搭棚工程合同范例
- 借貸型買賣合同范本
- 內(nèi)部法律顧問合同范本
- 單位門鎖維修合同范本
- GB/T 3498-2008潤滑脂寬溫度范圍滴點測定法
- GB/T 31586.2-2015防護涂料體系對鋼結構的防腐蝕保護涂層附著力/內(nèi)聚力(破壞強度)的評定和驗收準則第2部分:劃格試驗和劃叉試驗
- GB/T 15175-2012固體激光器主要參數(shù)測量方法
- 建筑工程施工進度計劃網(wǎng)絡圖和橫道圖
- HP工作站BIOS詳解參考模板
- 員工培訓、考試、積分記錄表
- 微專題:地理時空“尺度觀”思想課件
- 大學普通物理-習題答案(程守洙-江之勇主編-第六版)課件
- 風冷熱泵主機改造-模塊機匯總
- 烏司他丁課件
- 《工程化學》全套教學課件
評論
0/150
提交評論