基于S3C2410的Windows CE 5.0 BSP移植
⑶ 實(shí)現(xiàn)OEMInit(),該函數(shù)將調(diào)用以下函數(shù):OALCacheGlobalsInit(),OALIntrInit(),OALTimerInit(),OALKitlStart()來初始化Cache Global,中斷,時(shí)鐘,啟動(dòng)KITL,實(shí)現(xiàn)代碼如下:
void OEMInit()
{
OALCacheGlobalsInit();// 初試化cache globals
if (!OALIntrInit()) {
OALMSG(OAL_ERROR, (
LERROR: OEMInit: failed to initialize interruptsrn
));
} // 初試化中斷
OALTimerInit(1, S3C2410X_PCLK/2000, 0); // 初始化時(shí)鐘
OALKitlStart();// 初始化KITL
}
⑷ 實(shí)現(xiàn)OALTimerInit(),該函數(shù)用于初始化OS TIMER,設(shè)置每毫秒產(chǎn)生一個(gè)System tick,為系統(tǒng)計(jì)數(shù),觸發(fā)進(jìn)程調(diào)度。由CPU的運(yùn)行主頻和硬件定時(shí)器資源來確定,執(zhí)行過程有:初始化時(shí)鐘狀態(tài)全局變量,初始化高分辨率時(shí)鐘函數(shù)指針,使能TIMER。
⑸ 實(shí)現(xiàn)中斷處理處理函數(shù):OALIntrInit(),該函數(shù)通常先初始化中斷映射表,因?yàn)閃INCE為了模塊化,把平臺(tái)相關(guān)物理中斷號(hào)和系統(tǒng)中斷號(hào)建立映射。然后清除外部中斷,內(nèi)部中斷等。
3.3 驅(qū)動(dòng)移植
以觸摸屏為例,來探討Windows CE 5.0系統(tǒng)驅(qū)動(dòng)程序移植。這里以三星公司ARM9內(nèi)核芯片S3C2410觸摸屏接口為基礎(chǔ),通過外接4線電阻式觸摸屏構(gòu)成硬件基礎(chǔ),整個(gè)觸摸屏由橫向電阻線和縱向電阻線組成。觸摸屏驅(qū)動(dòng)的主要函數(shù)組成有:
TSP_Poweron 該函數(shù)將執(zhí)行觸摸屏的一些初始化,主要是寄存器的配置。
DdsiTouchPanelEnable:使能DDSI接口,使得硬件能將流數(shù)據(jù)提供給DDSI接口,就可以實(shí)現(xiàn)觸摸的操作了。
DdsiTouchPanelSetMode:模式設(shè)置函數(shù),設(shè)置觸摸屏是高采樣率還是低采樣率
DdsiTouchPanelGetPoint :觸摸屏進(jìn)行采樣函數(shù)
TSP_CalibrationPointGet:坐標(biāo)轉(zhuǎn)換函數(shù),該函數(shù)實(shí)現(xiàn)將從AD采樣植轉(zhuǎn)換成坐標(biāo)。
移植主要過程:
⑴ 修改source文件,要添加如下庫文件:
TARGETLIBS=$(_COMMONSDKROOT)lib$(_CPUINDPATH)coredll.lib
SOURCELIBS=
$(_COMMONOAKROOT)lib$(_CPUINDPATH)tch_cal.lib
$(_COMMONOAKROOT)lib$(_CPUINDPATH)tchmdd.lib
因?yàn)檫@個(gè)驅(qū)動(dòng)在Windows CE 4.2下面是在Public目錄,而這里將該觸摸屏移到了Platform下面,在Windows CE4.2下面是沒有以上三條鏈接庫,但Platform,Public編譯路徑,先決條件都不同。因此引用的庫不一樣。
⑵ 刪除如下庫文件:
$(_TARGETPLATROOT)lib$(_CPUINDPATH)drvlib.lib
該庫在Windows CE 4.2系統(tǒng)下為觸摸屏與音頻共用庫,但在Windows CE5.0系統(tǒng)下,這個(gè)庫已經(jīng)不是必要的并且已經(jīng)不存在了,所以刪除掉,否則系統(tǒng)會(huì)出編譯錯(cuò)誤。
⑶修改platform.bib,將我們移植過來的驅(qū)動(dòng)dll包含到nk.bin中
⑷修改platform.reg,其中CalibrationData是觸摸屏的一個(gè)參數(shù):
[HKEY_LOCAL_MACHINEHARDWAREDEVICEMAPTOUCH]
MaxCalError=dword:7
portrait
CalibrationData=517,610 897,934 142,936 129,290 891,285
其他驅(qū)動(dòng)的過程與觸摸屏類似。
評(píng)論