標籤:
最近客戶反映我們提供的WINCE7系統的RTC時鐘設定後,掉電不能儲存,總是回到2000年的起始年份,
我們的工業觸控螢幕使用的是AM3354方案,查看了原來的WINCE7系統源碼,開啟檔案:
C:\WINCE700\PLATFORM\AM33X_BSP\SRC\OAL\OALLIB\init.c
發現在OEMInit函數中調用的是TI自己的RTC驅動函數OAL3XX_RTCInit,這個函數在路徑為:
C:\WINCE700\PLATFORM\COMMON\src\soc\COMMON_TI_V1\COMMON_TI_AMXX\OAL\OALRTC
中的:oalrtc.c檔案被定義,調試發現該檔案中RTC_GetTime函數讀出的寄存器值一直是0,查看網上資料也有
很多人反映TI的AM3354的RTC時鐘有問題,後來進一步檢查了硬體,備用紐扣電池正常3.0V,32.768的晶振
沒有直接接入到AM3354,而是接入到了BQ32000這款RTC晶片,BQ32000以I2C的方式與AM3354串連,從
地址為0X68,於是只能自己編寫BQ32000的WINCE7驅動了,
1.建立目錄和makefile,首先在目錄:
C:\WINCE700\PLATFORM\COMMON\src\soc\COMMON_TI_V1\COMMON_TI_AMXX\OAL
下建立檔案夾:BQ32K_OALRTC
拷貝目錄:
C:\WINCE700\PLATFORM\COMMON\src\soc\COMMON_TI_V1\COMMON_TI_AMXX\OAL\OALRTC
中的makefile到BQ32K_OALRTC
2.編寫sources檔案,在BQ32K_OALRTC目錄下建立並編寫sources檔案,內容如下:
!INCLUDE "..\..\sources.inc"
TARGETNAME=am33x_bq32krtc
TARGETTYPE=LIBRARY
SOURCES= oalrtc.c
3.編寫源碼檔案,在BQ32K_OALRTC目錄下編寫oalrtc.c檔案,完成驅動的開發
該檔案需要實現函數:OALBQ32KRTCInit
4.修改檔案:
C:\WINCE700\PLATFORM\COMMON\src\soc\COMMON_TI_V1\COMMON_TI_AMXX\OAL\dirs
增加目錄BQ32K_OALRTC,內容如下;
DIRS=\
CPUIDLE\
OALI2C\
TIMER\
OALRTC\
BQ32K_OALRTC\
5.建立標頭檔,在目錄:
C:\WINCE700\PLATFORM\COMMON\src\soc\COMMON_TI_V1\COMMON_TI_AMXX\INC
下建立標頭檔:
bq32k_rtc.h
匯出函數:OALBQ32KRTCInit
6.修改上述init.c檔案,注釋掉語句:
OAL3XX_RTCInit(AM33X_RTCSS_REGS_PA, IRQ_RTCALARM);
新增語句:
OALBQ32KRTCInit(....);//(內容略過)
7.編輯檔案:
C:\WINCE700\PLATFORM\AM33X_BSP\SRC\OAL\OALEXE\sources
注釋掉以下語句:
# $(_PLATCOMMONLIB)\$(_CPUINDPATH)\am3xx_oalrtc.lib \
在下一行添加如下語句:
$(_PLATCOMMONLIB)\$(_CPUINDPATH)\am33x_bq32krtc.lib \
修改完成後,開啟VS2008的SLN工程,重新編譯解決方案即可。
有需要這部分源碼的朋友可以+我QQ2362317758
WINCE7中RTC時鐘晶片BQ32K的開發