S3C2440 Windows CE的RTC模塊驅動設計與實現
發布時間:2008/8/20 0:00:00 訪問次數:694
桌面windows系統的時間顯示功能已為大家所熟知,它是通過bios上的時鐘模塊實現的。用戶通過點擊桌面系統任務欄右下腳的時間,可以修改當前時間、時區以及實現與internet時間同步等功能。
目前流行的手機、pda、hmi(人機接口設備)等嵌入式系統中,都大量移植了微軟的windows ce操作系統。雖然wince系統也實現了時間顯示,但是在具體的實現中,其原理和方法與桌面系統大不相同,即使是基于不同嵌入式硬件平臺的wince開發,也有所不同。由于嵌入式系統的復雜性、分散性,目前嵌入式系統的實時時鐘rtc功能的實現,大部分是在基于內嵌于soc處理器的rtc功能ip模塊的基礎上,通過軟件驅動實現的。
s3c2440是三星公司推出的一款基于arm920t處理器構架的低功耗、高性能的嵌入式soc處理器,應用極為廣泛。rtc是s3c2440的一個內部功能模塊,本文首先對于s3c2440的硬件架構進行介紹,在此基礎上對s3c2440的rtc功能模塊的工作機理進行了分析,最后給出windows ce.net下的rtc功能的驅動程序設計、實現,本驅動程序成功地應用在基于s3c2440window ce平臺的手持gps機實時時鐘功能的實現,對于基于windows ce.net其它硬件平臺的rtc功能實現具有一定的借鑒作用。
2 硬件構架
wince下rtc功能實現是基于rtc模塊的,在此先對s3c2440處理器作簡單介紹,主要對于s3c2440的rtc的硬件結構、工作機理進行分析,這些是windows ce.net下rtc功能實現的基礎。
2.1 簡介
s3c2440 是三星公司推出的基于arm920t的嵌入式處理器,主頻高達400mhz,最高可達533mhz,低功耗、高性能,廣泛地應用于pda、便攜媒體播放器、衛星導航儀等多媒體終端,片上集成指令/數據分開的16kcache、sdram控制器、lcd控制器、4通道dma、3通道uart、iic總線、iis總線、sd主機接口、pwm定時器、看門狗、片上pll時鐘發生器、8通道10位ad控制器和觸摸屏接口以及帶日歷函數的實時時鐘,極大地方便于系統開發。
2.2 s3c244o處理器的rtc硬件構架
s3c2440內部rtc模塊結構框圖如圖1所示。s3c2440處理器的rtc模塊依靠外部32.768khz晶振提供基準時鐘,系統能夠在斷電的情況下由后備電池供電繼續工作,能夠將8位數據轉換為bcd碼的格式傳送給處理器。這些數據包括秒、分、時、日期、星期、月、年。
如圖1所示,rtc模塊由基準晶振的連接引腳、時鐘滴答發生器、215時鐘分頻器、控制和重置寄存器、閏年發生器、報警發生器以及bcd數字(秒、分、時、日期、星期、月、年)等幾部分組成:xtlrtc與xtortc是連接外部晶振32.768khz的兩個引腳,為rtc內部提供輸入。215時鐘分頻器負責對基準頻率進行分頻。時鐘滴答發生器可以產生時鐘滴答,它可以引起中斷。閏年發生器按照從日期、月、年得來的bcd數據決定一個月最后一天是28、29、30還是31號(也就是計算是否是閏年)。報警發生器可以根據系統設定時間和當前時間決定是否報警。控制寄存器控制包括讀/寫bcd寄存器使能、時鐘復位、時鐘選擇等。重置寄存器可以選擇”秒”對”分”進位邊界,提供三個可選邊界:30、40或者50秒。
圖1 s3c2440內部rtc模塊結構圖
2.3 s3c2440處理器的rtc工作原理
由rtc模塊的結構圖可以看出,rtc模塊的有三種功能:產生時鐘滴答、實時計時和作為系統的觸發喚醒器。rtc時鐘滴答可以作為實時操作系統(rtos)的內核時鐘滴答,當時鐘滴答周期確定后,就會定時產生中斷,操作系統的中斷服務程序會實時處理這個中斷。
rtc模塊可以在處理器的掉電模式或普通模式在設定時間(由bcd數據給出)和當前時間相同時發生報警。在普通模式下,almint(報警中斷)處于激活狀態。在掉電模式下,pmwkup(電源管理喚醒信號)與almint一起處于報警狀態。
rtc最重要的功能就是顯示時間。在掉電模式下,rtc依然能夠正常工作,此時,rtc模塊通過外部的電池工作。rtc時間顯示功能是通過讀/寫寄存器來實現的。要顯示秒、分、時、日期、月、年,處理器只要讀取存在于bcdsec、bcdmin、bcdhour、bcdday、bcddate、bcdmon和bcdyear寄存器中的值即可。
3 驅動程序實現
本rtc功能的實現在基于s3c2440嵌入式開發平臺上,通過wince下的rtc模塊的驅動程序完成,而wince下rtc的驅動是在底層實現的,具體要在oal(oem adaption layer)實現。下面對于oal代碼層進行簡要介紹,然后分析rtc驅動代碼,在此基礎上給出部分源程序。
3.1 oal概述
oal的全稱是oem adaption layer,即原始設備制造商適配層。從邏輯結構上看,它位于操作系統的內核與硬
桌面windows系統的時間顯示功能已為大家所熟知,它是通過bios上的時鐘模塊實現的。用戶通過點擊桌面系統任務欄右下腳的時間,可以修改當前時間、時區以及實現與internet時間同步等功能。
目前流行的手機、pda、hmi(人機接口設備)等嵌入式系統中,都大量移植了微軟的windows ce操作系統。雖然wince系統也實現了時間顯示,但是在具體的實現中,其原理和方法與桌面系統大不相同,即使是基于不同嵌入式硬件平臺的wince開發,也有所不同。由于嵌入式系統的復雜性、分散性,目前嵌入式系統的實時時鐘rtc功能的實現,大部分是在基于內嵌于soc處理器的rtc功能ip模塊的基礎上,通過軟件驅動實現的。
s3c2440是三星公司推出的一款基于arm920t處理器構架的低功耗、高性能的嵌入式soc處理器,應用極為廣泛。rtc是s3c2440的一個內部功能模塊,本文首先對于s3c2440的硬件架構進行介紹,在此基礎上對s3c2440的rtc功能模塊的工作機理進行了分析,最后給出windows ce.net下的rtc功能的驅動程序設計、實現,本驅動程序成功地應用在基于s3c2440window ce平臺的手持gps機實時時鐘功能的實現,對于基于windows ce.net其它硬件平臺的rtc功能實現具有一定的借鑒作用。
2 硬件構架
wince下rtc功能實現是基于rtc模塊的,在此先對s3c2440處理器作簡單介紹,主要對于s3c2440的rtc的硬件結構、工作機理進行分析,這些是windows ce.net下rtc功能實現的基礎。
2.1 簡介
s3c2440 是三星公司推出的基于arm920t的嵌入式處理器,主頻高達400mhz,最高可達533mhz,低功耗、高性能,廣泛地應用于pda、便攜媒體播放器、衛星導航儀等多媒體終端,片上集成指令/數據分開的16kcache、sdram控制器、lcd控制器、4通道dma、3通道uart、iic總線、iis總線、sd主機接口、pwm定時器、看門狗、片上pll時鐘發生器、8通道10位ad控制器和觸摸屏接口以及帶日歷函數的實時時鐘,極大地方便于系統開發。
2.2 s3c244o處理器的rtc硬件構架
s3c2440內部rtc模塊結構框圖如圖1所示。s3c2440處理器的rtc模塊依靠外部32.768khz晶振提供基準時鐘,系統能夠在斷電的情況下由后備電池供電繼續工作,能夠將8位數據轉換為bcd碼的格式傳送給處理器。這些數據包括秒、分、時、日期、星期、月、年。
如圖1所示,rtc模塊由基準晶振的連接引腳、時鐘滴答發生器、215時鐘分頻器、控制和重置寄存器、閏年發生器、報警發生器以及bcd數字(秒、分、時、日期、星期、月、年)等幾部分組成:xtlrtc與xtortc是連接外部晶振32.768khz的兩個引腳,為rtc內部提供輸入。215時鐘分頻器負責對基準頻率進行分頻。時鐘滴答發生器可以產生時鐘滴答,它可以引起中斷。閏年發生器按照從日期、月、年得來的bcd數據決定一個月最后一天是28、29、30還是31號(也就是計算是否是閏年)。報警發生器可以根據系統設定時間和當前時間決定是否報警。控制寄存器控制包括讀/寫bcd寄存器使能、時鐘復位、時鐘選擇等。重置寄存器可以選擇”秒”對”分”進位邊界,提供三個可選邊界:30、40或者50秒。
圖1 s3c2440內部rtc模塊結構圖
2.3 s3c2440處理器的rtc工作原理
由rtc模塊的結構圖可以看出,rtc模塊的有三種功能:產生時鐘滴答、實時計時和作為系統的觸發喚醒器。rtc時鐘滴答可以作為實時操作系統(rtos)的內核時鐘滴答,當時鐘滴答周期確定后,就會定時產生中斷,操作系統的中斷服務程序會實時處理這個中斷。
rtc模塊可以在處理器的掉電模式或普通模式在設定時間(由bcd數據給出)和當前時間相同時發生報警。在普通模式下,almint(報警中斷)處于激活狀態。在掉電模式下,pmwkup(電源管理喚醒信號)與almint一起處于報警狀態。
rtc最重要的功能就是顯示時間。在掉電模式下,rtc依然能夠正常工作,此時,rtc模塊通過外部的電池工作。rtc時間顯示功能是通過讀/寫寄存器來實現的。要顯示秒、分、時、日期、月、年,處理器只要讀取存在于bcdsec、bcdmin、bcdhour、bcdday、bcddate、bcdmon和bcdyear寄存器中的值即可。
3 驅動程序實現
本rtc功能的實現在基于s3c2440嵌入式開發平臺上,通過wince下的rtc模塊的驅動程序完成,而wince下rtc的驅動是在底層實現的,具體要在oal(oem adaption layer)實現。下面對于oal代碼層進行簡要介紹,然后分析rtc驅動代碼,在此基礎上給出部分源程序。
3.1 oal概述
oal的全稱是oem adaption layer,即原始設備制造商適配層。從邏輯結構上看,它位于操作系統的內核與硬