S3C2440 Windows CE的RTC模塊驅動(dòng)設計與實(shí)現
桌面Windows系統的時(shí)間顯示功能已為大家所熟知,它是通過(guò)BIOS上的時(shí)鐘模塊實(shí)現的。用戶(hù)通過(guò)點(diǎn)擊桌面系統任務(wù)欄右下腳的時(shí)間,可以修改當前時(shí)間、時(shí)區以及實(shí)現與Internet時(shí)間同步等功能。
目前流行的手機、PDA、HMI(人機接口設備)等嵌入式系統中,都大量移植了微軟的Windows CE操作系統。雖然WinCE系統也實(shí)現了時(shí)間顯示,但是在具體的實(shí)現中,其原理和方法與桌面系統大不相同,即使是基于不同嵌入式硬件平臺的WinCE開(kāi)發(fā),也有所不同。由于嵌入式系統的復雜性、分散性,目前嵌入式系統的實(shí)時(shí)時(shí)鐘RTC功能的實(shí)現,大部分是在基于內嵌于SoC處理器的RTC功能IP模塊的基礎上,通過(guò)軟件驅動(dòng)實(shí)現的。
S3C2440是三星公司推出的一款基于A(yíng)RM920T處理器構架的低功耗、高性能的嵌入式SoC處理器,應用極為廣泛。RTC是S3C2440的一個(gè)內部功能模塊,本文首先對于S3C2440的硬件架構進(jìn)行介紹,在此基礎上對S3C2440的RTC功能模塊的工作機理進(jìn)行了分析,最后給出Windows CE.net下的RTC功能的驅動(dòng)程序設計、實(shí)現,本驅動(dòng)程序成功地應用在基于S3C2440Window CE平臺的手持GPS機實(shí)時(shí)時(shí)鐘功能的實(shí)現,對于基于Windows CE.net其它硬件平臺的RTC功能實(shí)現具有一定的借鑒作用。
2 硬件構架
WinCE下RTC功能實(shí)現是基于RTC模塊的,在此先對S3C2440處理器作簡(jiǎn)單介紹,主要對于S3C2440的RTC的硬件結構、工作機理進(jìn)行分析,這些是Windows CE.net下RTC功能實(shí)現的基礎。
2.1 簡(jiǎn)介
S3C2440 是三星公司推出的基于A(yíng)RM920T的嵌入式處理器,主頻高達400MHz,最高可達533MHz,低功耗、高性能,廣泛地應用于PDA、便攜媒體播放器、衛星導航儀等多媒體終端,片上集成指令/數據分開(kāi)的16KCache、SDRAM控制器、LCD控制器、4通道DMA、3通道UART、IIC總線(xiàn)、IIS總線(xiàn)、SD主機接口、PWM定時(shí)器、看門(mén)狗、片上PLL時(shí)鐘發(fā)生器、8通道10位AD控制器和觸摸屏接口以及帶日歷函數的實(shí)時(shí)時(shí)鐘,極大地方便于系統開(kāi)發(fā)。
2.2 S3C244O處理器的RTC硬件構架
S3C2440內部RTC模塊結構框圖如圖1所示。S3C2440處理器的RTC模塊依靠外部32.768kHz晶振提供基準時(shí)鐘,系統能夠在斷電的情況下由后備電池供電繼續工作,能夠將8位數據轉換為BCD碼的格式傳送給處理器。這些數據包括秒、分、時(shí)、日期、星期、月、年。
如圖1所示,RTC模塊由基準晶振的連接引腳、時(shí)鐘滴答發(fā)生器、215時(shí)鐘分頻器、控制和重置寄存器、閏年發(fā)生器、報警發(fā)生器以及BCD數字(秒、分、時(shí)、日期、星期、月、年)等幾部分組成:XTlrtc與XTortc是連接外部晶振32.768kHz的兩個(gè)引腳,為RTC內部提供輸入。215時(shí)鐘分頻器負責對基準頻率進(jìn)行分頻。時(shí)鐘滴答發(fā)生器可以產(chǎn)生時(shí)鐘滴答,它可以引起中斷。閏年發(fā)生器按照從日期、月、年得來(lái)的BCD數據決定一個(gè)月最后一天是28、29、30還是31號(也就是計算是否是閏年)。報警發(fā)生器可以根據系統設定時(shí)間和當前時(shí)間決定是否報警??刂萍拇嫫骺刂瓢ㄗx/寫(xiě)BCD寄存器使能、時(shí)鐘復位、時(shí)鐘選擇等。重置寄存器可以選擇”秒”對”分”進(jìn)位邊界,提供三個(gè)可選邊界:30、40或者50秒。
圖1 S3C2440內部RTC模塊結構圖
2.3 S3C2440處理器的RTC工作原理
由RTC模塊的結構圖可以看出,RTC模塊的有三種功能:產(chǎn)生時(shí)鐘滴答、實(shí)時(shí)計時(shí)和作為系統的觸發(fā)喚醒器。RTC時(shí)鐘滴答可以作為實(shí)時(shí)操作系統(RTOS)的內核時(shí)鐘滴答,當時(shí)鐘滴答周期確定后,就會(huì )定時(shí)產(chǎn)生中斷,操作系統的中斷服務(wù)程序會(huì )實(shí)時(shí)處理這個(gè)中斷。
RTC模塊可以在處理器的掉電模式或普通模式在設定時(shí)間(由BCD數據給出)和當前時(shí)間相同時(shí)發(fā)生報警。在普通模式下,ALMINT(報警中斷)處于激活狀態(tài)。在掉電模式下,PMWKUP(電源管理喚醒信號)與ALMINT一起處于報警狀態(tài)。
RTC最重要的功能就是顯示時(shí)間。在掉電模式下,RTC依然能夠正常工作,此時(shí),RTC模塊通過(guò)外部的電池工作。RTC時(shí)間顯示功能是通過(guò)讀/寫(xiě)寄存器來(lái)實(shí)現的。要顯示秒、分、時(shí)、日期、月、年,處理器只要讀取存在于BCDSEC、BCDMIN、BCDHOUR、BCDDAY、BCDDATE、BCDMON和BCDYEAR寄存器中的值即可。
評論