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