<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > S3C2440 Windows CE的RTC模塊驅動(dòng)設計與實(shí)現

S3C2440 Windows CE的RTC模塊驅動(dòng)設計與實(shí)現

作者: 時(shí)間:2013-03-30 來(lái)源:網(wǎng)絡(luò ) 收藏

  3 驅動(dòng)程序實(shí)現
  
  本RTC功能的實(shí)現在基于嵌入式開(kāi)發(fā)平臺上,通過(guò)WinCE下的的驅動(dòng)程序完成,而WinCE下RTC的驅動(dòng)是在底層實(shí)現的,具體要在OAL(OEM Adaption Layer)實(shí)現。下面對于OAL代碼層進(jìn)行簡(jiǎn)要介紹,然后分析RTC驅動(dòng)代碼,在此基礎上給出部分源程序。
  
  3.1 OAL概述
  
  OAL的全稱(chēng)是OEM Adaption Layer,即原始設備制造商適配層。從邏輯結構上看,它位于操作系統的內核與硬件之間,是連接系統與硬件的樞紐;從功能上看,OAL是被鏈接到內核的庫,它可以用來(lái)創(chuàng )建內核的可執行文件。OAL在系統內核與目標設備之間進(jìn)行通信,隸屬于操作系統.是操作系統的一部分。從存在方式上講OAL是一組函數的集合體,這些函數體現出OAL的功能,如圖2所示。

        圖2 OAL功能結構關(guān)系框圖
  

  OAL層包含Startup()、OEMInit()、實(shí)時(shí)時(shí)鐘函數、串口調試函數、底層中斷處理函數、以太網(wǎng)口調試函數、KITL(Kernel Independent Transport Layer)內核獨立傳輸層,此外,它還實(shí)現了包括電源管理、模塊認證等高級功能。
  

  WinCE的啟動(dòng)過(guò)程為:CPU執行引導向量,跳轉到硬件初始化代碼,即Startup函數。
  

  在Startup函數完成最小硬件環(huán)境初始化后跳轉到KernelStart函數來(lái)對內核進(jìn)行初始化;KernelStart函數調用OEMInitDebugSerial完成對調試串口的初始化,調用OEMInit函數來(lái)完成硬件初始化工作以及設置時(shí)鐘、中斷,調用OEMGetExtensionDRAM函數來(lái)判斷是否還有另一塊DRAM。
  

  因此,實(shí)時(shí)時(shí)鐘驅動(dòng)實(shí)現代碼是在OAL層實(shí)現的,當Windows CE啟動(dòng)時(shí),會(huì )調用實(shí)時(shí)時(shí)鐘函數來(lái)初始化系統時(shí)間,下面介紹這些函數的具體實(shí)現。

  3.2 時(shí)鐘函數

  實(shí)現RTC功能需要編寫(xiě)3個(gè)函數,分別是OEMGetRealTime()、OEMSetRealTime()與OEMSetAlarmTime()。下面對于這三個(gè)函數分別介紹。
  
  OEMGetRealTime()得到當前時(shí)間。此函數名不可更改,是WinCE內核規定好了的,也就是當內核需要知道當前時(shí)間的時(shí)候直接調用此函數。圖3為函數OEMGetRealTime()執行流程。
      

  由于RTC不能任意地修改,不然會(huì )造成時(shí)間的混亂,所以每次獲取時(shí)間或者設置時(shí)間完畢以后必須禁止RTC,具體是通過(guò)設置RTC使能/禁止寄存器實(shí)現的。而在每次讀取時(shí)間或者設置時(shí)間的時(shí)候必須先使用它。在讀取時(shí)間的時(shí)候 若讀取的“秒”為0必須重新讀取時(shí)間,因此時(shí)的“分”已經(jīng)被進(jìn)位了。
  
  OEMSetRealTime()設置時(shí)間。與OEMGetRealTime()一樣,它也不可改名,通過(guò)此函數核心可以直接修改時(shí)間。也就是說(shuō),如果用戶(hù)點(diǎn)擊WinCE任務(wù)欄中的時(shí)間以后,修改時(shí)間最終都是調用此函數。
  
OEMSetAlarmTime()設置系統報警時(shí)間,其參數為指向含有SYSTEMTIME結構體緩沖區的長(cháng)指針。如果此函數執行成功則返回TRUE,執行失敗則返回FALSE。此函數必須是可重人的以防止對硬件的多次操作。對于一般用戶(hù)的操作,用戶(hù)可以不用編寫(xiě)此函數。如果需要系統在特定的時(shí)間完成特定的功能就需要完成此函數的編寫(xiě)。



關(guān)鍵詞: S3C2440 WindowsCE RTC模塊

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>