《電子技術應用》
您所在的位置:首頁 > 模擬設計 > 設計應用 > 基于Windows CE的SPI驅動程序設計
基于Windows CE的SPI驅動程序設計
摘要: 設備驅動程序是直接與硬件或者虛擬設備進行交互,將對硬件或者虛擬設備的操作打包成一組操作系統調用,并完全隱藏了設備工作細節的編程接口,因此驅動程序的編寫在嵌入式系統開發中是一個重要的環節。本文通過闡述Windows CE操作系統中流式接口驅動的基本概念和工作原理、中斷處理機制、內層共享等問題,詳細介紹在Platform Builder下SPI驅動程序設計以及驅動程序同應用程序交互的實現。
關鍵詞: 接口IC 計算機 EDA WinCE
Abstract:
Key words :

       引 言

      
Windows CE為支持多線程、多任務、搶占式的嵌入式操作系統。隨著Windows CE 6.0的發布,其內核性能的明顯提升和源代碼開放,將促使其在消費電子、工業控制、移動通信等領域得到廣泛的應用。通常Platform Builder中給出了支持多種CPU常用設備驅動程序,如LCD驅動、鼠標驅動、USB驅動、串口驅動等;但有時由于平臺采用了其他特定的硬件設備,其驅動程序在Platform Builder并沒有給出,這時就需要用戶針對實際的硬件自行開發,以滿足個性化的需求。本文所涉及的SPI接口驅動就屬于此類。

       1 SPI總線及S3C2440芯片介紹

       串行外圍設備接口SPI(Serial Peripheral Interface)總線是Freescale公司推出的一種三線同步接口。接口采用同

 

步串行3~4線方式進行通信,即1條時鐘線SCK、1條數據輸入線MOSI、1條數據輸出線MISO,另外還有1條從選線NSS(可選),用于CPU與各種外圍器件進行全雙工、同步串行通信。SPI接口在眾多的移動存儲和高速通信芯片上得到廣泛應用。

       根據時鐘極性和時鐘相位的不同,MOSI和MISO上的數據支持4種數據傳輸格式。SPI的主要特點為:可以同時發出和接收串行數據,可以當作主機或從機工作,提供頻率可編程時鐘,發送結束中斷標志,寫沖突保護和總線競爭保護等。

       S3C2440是一款基于ARM920T的16/32位RISC微處理器,主頻可達400 MHz。該芯片性價比高,功耗低,含有豐富的片內外設,主要用于手持設備和移動終端。S3C2440中與SPI相關的寄存器有:

       SPI總線及S3C2440芯片

       2 Windows CE的驅動程序

      
2.1 Windows CE下驅動程序的基本概念和分類

      
驅動程序是一個抽象物理設備或者虛擬設備的功能軟件,驅動程序管理這些設備的操作并將設備的功能導出給操作系統和應用程序。根據驅動程序導出接口的不同,windows CE中驅動可以分為本機設備驅動程序(native device driver)和流式驅動程序(streams device driver)。本機設備驅動適于集成到基于Windows CE平臺的設備。這些設備驅動程序是一些硬件所必需的,是由原始設備制造商創建的,用來驅動如鍵盤、LED、觸摸屏等。本機驅動在編譯時被靜態鏈接到GWES,系統運行時由GWES加載。流式驅動程序也稱"可安裝驅動程序",是由設備管理器(device.exe)動態加載用戶模式的DLL。對流式驅動程序來說,不管需要控制的設備是什么類型,所有流式驅動都使用相同的接口并導出一組相同的函數--流接口函數。流式驅動適用任何在邏輯上可以被認為是一個數據源或者數據存儲的I/O設備。

       2.2流式驅動程序工作原理

       在Window CES中,流式驅動程序負責將設備抽象成一個文件,應用程序便能夠使用系統提供的API(ReadFile、writeFile、IOControl等)對其進行讀寫。應用程序使用文件API訪問設備時,請求經過文件系統(Filesys.exe)過濾被送到device.exe;device.exe根據請求調相關的流式驅動程序接口,從而完成與硬件的交互。

       2.3 設備驅動的中斷處理

      
在windows CE系統中,當中斷發生時,OEM抽象層(OEM Abstraction Layer,OAL)把物理中斷信號映射成OEM定義的邏輯中斷供操作系統和驅動程序調用。為了滿足實時性要求,系統將中斷處理過程分為2個階段,即處于內核模式的中斷服務例程(Interrupt Service Rout

ine,ISR)和處于用戶模式的中斷服務線程(Interrupt Service Thread,IST)。ISR主要負責將物理中斷映射為邏輯中斷,然后由操作系統根據邏輯中斷激發所關聯時間對象的內核,使等待該事件內核對象的線程IST開始執行中斷處理程序。
 
       具體中斷處理過程如圖1所示。中斷發生后,信號發往異常處理器,并且中斷支持處理器調用OAL函數OEMInterruptDisable關閉來自該硬件的中斷。ISR被內核調用并返回結果,且通過內核設置Event事件來觸發IST。IST被喚醒后調用各種I/O函數完成中斷處理并返回InterruptDone通知內核。內核調用OEMInterruptDone通知硬件重新開啟中斷。

 

中斷處理過程

      3 SPI總線驅動設計

      
綜上所述,SPI總線驅動分為2部分,即處于內核模式OAL層將物理中斷映射成邏輯中斷的ISR,以及處于用戶模式流式驅動。其中包

 

括執行中斷處理線程IST。

       3.1 初始化中斷以及ISR實現

      
SPI通信是通過讀寫SPI寄存器來完成的,通過讀寫上述6個SPI寄存器中的狀態字可以檢測和控制SPI總線的行為。在OAL層中需要完成的工作如下:

       ①在中斷頭文件oalintr.h中添加SPI的中斷宏定義,供ISR返回調用。
        #(define SYSINTR_SPIO (SYSINTR_FIRMWARE+22)

       注意:定義時要使中斷號滿足該文件中MapIrq2SysIntr中所要求的范圍。WinCE4.2版本支持最大中斷數為32,WinCE5.0版支持最大中斷數為64。

       ②在OAL實現文件cfw.c中,添加中斷初始化和禁止中斷實現代碼。

       ③在中斷處理實現文件armint.c的OEMInterruptHandler函數中添加ISR程序代碼,返回邏輯中斷號。代碼如下:

       基于Windows CE的SPI驅動程序設計代碼

       3.2 流式驅動的實現

      
驅動被加載后需要完成設備的初始化工作,包括地址空間申請和映射、全局變量的初始化、IST的加載等。初始化的代碼簡化如下:

       基于Windows CE的SPI驅動程序設計代碼
       v基于Windows CE的SPI驅動程序設計代碼
       基于Windows CE的SPI驅動程序設計代碼
       基于Windows CE的SPI驅動程序設計代碼eda08e-c1fb-4ef5-b9f1-66e0ce40939a.jpg" width="350" />

 
       需要說明的是,在本程序中使用了CEDDK中MmMapIoSpace庫函數,故另需在頭文件中添加#include和#pragma comment(lib,"ceddk.lib")。至此,g_SPIReg在其他的驅動實現函數中就可以調用,直接讀寫其指向的寄存器的代碼即可完成相關的操作。還需要實現的函數有:SPI_Deinit、SPI_Read、SPI_write、SPI_Seek、SPI_Open、SPI_Close、SPI_IOCntrol。限于篇幅,本文僅給出驅動初始化的代碼。

       3.3 驅動與應用程序的通信設計

       在Windows CE中,用戶模式下每個進程與其他進程所占有的內存空間被虛擬內存機制隔離,進程間無法實現直接互訪。在驅動程序和應用程序通信過程中,驅動程序位于device.exe的進程空間中,由于上述原因,驅動程序向應用程序發起的單向通信存在困難。通常的解決方法是在內核空間中共享同步對象,建立消息隊列或者通過指針映射來完成。上述

方法都無法回避進程間的數據復制過程,因而只適用于少量的數據傳輸。對于大量的數據或者實時性要求較高的情況,可以在虛擬地址為Ox4200 0000~0x7fff ffff的空間中建立命名的內存映射來實現內存共享,從而能夠避免數據在進程空間中的復制。相關的API為CreateFileMapping和MapView()fFile。

       3.4 驅動程序的封裝和安裝

       驅動接口函數編寫完后將其接口以dll的形式導出,再編寫一個簡單的注冊表文件,指明驅動安裝的路徑、前綴以及索引。至此驅動程序設計工作就完成了,將驅動及注冊表添加到當前的平臺中即可。

       結 語

       本文詳細介紹了Platform Builder下SPI接口驅動程序設計以及驅動程序同應用程序交互的實現。驅動例程已經成功地應用于基于nRF2401的嵌入式系統無線通信當中,具有很高的參考價值。

此內容為AET網站原創,未經授權禁止轉載。
热re99久久精品国产66热_欧美小视频在线观看_日韩成人激情影院_庆余年2免费日韩剧观看大牛_91久久久久久国产精品_国产原创欧美精品_美女999久久久精品视频_欧美大成色www永久网站婷_国产色婷婷国产综合在线理论片a_国产精品电影在线观看_日韩精品视频在线观看网址_97在线观看免费_性欧美亚洲xxxx乳在线观看_久久精品美女视频网站_777国产偷窥盗摄精品视频_在线日韩第一页
  • <strike id="ygamy"></strike>
  • 
    
      • <del id="ygamy"></del>
        <tfoot id="ygamy"></tfoot>
          <strike id="ygamy"></strike>
          亚洲欧美一区二区三区久久| 久久久精品一区| 欧美gay视频激情| 欧美成人自拍视频| 欧美在线|欧美| 亚洲制服欧美中文字幕中文字幕| 久久久av水蜜桃| 亚洲一区二区3| 久久国产精品一区二区三区四区| 欧美日韩三级一区二区| 国产亚洲精品aa| 亚洲欧美文学| 久久综合亚洲社区| 国产一区二区三区高清在线观看| 在线观看欧美激情| 国产亚洲精久久久久久| 亚洲乱码精品一二三四区日韩在线| 亚洲影院色在线观看免费| 国产婷婷色一区二区三区| 久久免费精品日本久久中文字幕| 亚洲无线观看| 国产精品美女久久久免费| 欧美午夜精品久久久久久超碰| 国产精品初高中精品久久| 亚洲欧美激情诱惑| 午夜精品一区二区三区四区| 亚洲精品永久免费精品| 美女爽到呻吟久久久久| 欧美成人午夜影院| 国产午夜亚洲精品羞羞网站| 欧美日韩激情网| 亚洲一区国产一区| 欧美日韩久久精品| 免费观看一级特黄欧美大片| 亚洲七七久久综合桃花剧情介绍| 亚洲精品国精品久久99热| 在线综合亚洲| 在线精品视频免费观看| 在线一区二区日韩| 亚洲一区二区三区四区中文| 欧美成人黑人xx视频免费观看| 亚洲人精品午夜在线观看| 国产精品自拍网站| 欧美日韩一二三区| 老司机精品久久| 亚洲视频播放| 欧美日韩高清一区| 久久精品99无色码中文字幕| 亚洲国产成人在线| 欧美成人午夜激情在线| 亚洲激情小视频| 亚洲欧美日韩精品久久| 亚洲图片自拍偷拍| 久久久久国色av免费观看性色| 欧美成人资源网| 欧美激情偷拍| 久久在线观看视频| 亚洲女性喷水在线观看一区| 国产精品丝袜xxxxxxx| 亚洲午夜视频在线观看| 欧美一区二区福利在线| 夜夜嗨av一区二区三区四区| 国产精品成人免费精品自在线观看| 亚洲欧美日本国产有色| 亚洲精品中文字幕在线观看| 久久久久国产精品厨房| 亚洲欧美日韩国产中文| 亚洲毛片一区二区| 国产日韩欧美一二三区| 性做久久久久久免费观看欧美| 欧美伊人久久久久久午夜久久久久| 免费视频最近日韩| 欧美专区亚洲专区| 亚洲经典视频在线观看| 国产精品99免费看| 尤物yw午夜国产精品视频| 亚洲激情电影在线| 亚洲黄色在线视频| 国产麻豆91精品| 亚洲精选久久| 99国产精品久久| 久久久久久久久蜜桃| 一区二区亚洲精品| 久久综合色影院| 欧美一区深夜视频| 亚洲视频一起| 欧美gay视频| 91久久国产综合久久蜜月精品| 国产精品日韩欧美一区二区三区| 久久影院午夜片一区| 亚洲一区二区三区成人在线视频精品| 国产精品久久久对白| 国产精品成人一区二区网站软件| 国产精品日韩欧美| 美女视频网站黄色亚洲| 在线电影欧美日韩一区二区私密| 欧美激情亚洲自拍| 亚洲精品黄色| 欧美激情精品久久久久久免费印度| 国产精品一区二区你懂得| 亚洲精品免费在线| 欧美极品一区二区三区| 亚洲乱码国产乱码精品精可以看| 欧美交受高潮1| 欧美日韩三级一区二区| 国产无遮挡一区二区三区毛片日本| 国产精品一区在线播放| 一区二区三区久久久| 伊人一区二区三区久久精品| 亚洲免费观看在线视频| 国产欧美日韩一区二区三区在线观看| 国产精品草莓在线免费观看| 国产日韩欧美一区二区三区在线观看| 国产日韩欧美高清免费| 欧美日韩123| 国产专区综合网| 亚洲日本aⅴ片在线观看香蕉| 欧美ab在线视频| 精品成人一区二区三区四区| 一区二区三区四区国产精品| 亚洲图中文字幕| 亚洲国产精品国自产拍av秋霞| 欧美资源在线观看| 美女91精品| 伊人男人综合视频网| 欧美吻胸吃奶大尺度电影| 国语自产偷拍精品视频偷| 欧美第一黄色网| 麻豆成人在线| 亚洲欧美日韩一区二区| 国产一区二区欧美日韩| 亚洲一区视频在线| 国产精品一区二区在线观看网站| 国产精品揄拍一区二区| 国产精品久久久久一区二区| 久久精品国内一区二区三区| 欧美色网在线| 久久蜜臀精品av| 亚洲国产视频一区二区| 国产精品护士白丝一区av| 亚洲一区二区在线免费观看视频| 久久夜色精品亚洲噜噜国产mv| 在线一区二区三区做爰视频网站| 久久精品综合一区| 亚洲精品在线三区| 最新中文字幕一区二区三区| 亚洲在线视频| 欧美日本精品一区二区三区| 欧美一区二区私人影院日本| 欧美在线日韩| 欧美日韩大片一区二区三区| 国产日韩在线视频| 国产精品成人久久久久| 欧美午夜激情小视频| 亚洲黄一区二区| 亚洲人成人一区二区三区| 欧美在线视频不卡| 一区视频在线看| 欧美专区在线观看一区| 国产伦精品一区二区三区免费| 亚洲欧美日韩系列| 欧美性事在线| 欧美xart系列在线观看| 狠狠做深爱婷婷久久综合一区| 久久精品在这里| 国产伦精品一区二区三区视频黑人| 狠狠色噜噜狠狠狠狠色吗综合| 免费在线亚洲欧美| 在线视频精品一| 一区二区高清视频| 亚洲亚洲精品三区日韩精品在线视频| 欧美日韩美女在线| 欧美日韩在线观看一区二区| 欧美视频在线观看免费网址| 国产一区二区三区四区三区四| 六月天综合网| 久久精品72免费观看| av成人毛片| 国产一区二区精品久久99| 国产中文一区二区三区| 国产精品色婷婷| 鲁大师影院一区二区三区| 毛片基地黄久久久久久天堂| 欧美日韩国产bt| 久久av老司机精品网站导航| 黄色工厂这里只有精品| 欧美一区2区视频在线观看| 亚洲一区二区四区| 欧美日韩一区在线播放| 国产日韩在线一区| 欧美日韩在线亚洲一区蜜芽| 国产拍揄自揄精品视频麻豆| 久久精品国产v日韩v亚洲| 99国产精品视频免费观看| 激情综合网址| 久久久久久精| 国产一区二区三区四区| 伊人久久大香线蕉av超碰演员| 久久天天躁狠狠躁夜夜爽蜜月| 国产欧美一区二区三区视频| 欧美区日韩区| 激情婷婷亚洲| 91久久国产综合久久蜜月精品| 国产日韩精品在线播放| 99精品免费网| 久久激情中文| 久久久高清一区二区三区| 免费久久99精品国产自在现线| 亚洲四色影视在线观看| 国产精品毛片在线| 国产精品v日韩精品v欧美精品网站| 欧美一级片一区| 国产一区二区三区电影在线观看| 欧美日韩在线精品| 久久成人人人人精品欧| 国产精品美女久久久浪潮软件| 国产视频在线一区二区| 国产亚洲午夜高清国产拍精品| 欧美 日韩 国产精品免费观看| 欧美另类综合| 久久精视频免费在线久久完整在线看| 久久精品国产77777蜜臀| 久久精品亚洲一区| 久久精品2019中文字幕| 香蕉av777xxx色综合一区| 欧美揉bbbbb揉bbbbb| 老牛国产精品一区的观看方式| 久久午夜国产精品| 在线欧美影院| 久热精品视频在线观看| 亚洲精品一区在线| 欧美三级资源在线| 亚洲图片欧洲图片日韩av| 亚洲免费视频中文字幕| 久久久久国产一区二区三区四区| 国产午夜一区二区三区| 韩国精品一区二区三区| 欧美日韩亚洲一区在线观看| 亚洲欧美日本在线| 欧美国产日韩免费| 欧美大片在线观看一区二区| 久久狠狠久久综合桃花| 欧美亚洲视频在线观看| 一区二区三区成人| 久久精品国产亚洲5555| 国产精品高精视频免费| 亚洲欧洲日夜超级视频| 欧美日韩国产区| 精品999在线观看| 久久久精品视频成人| 欧美一区二区三区视频免费播放| 欧美在线首页| 欧美精品一区二区三区在线播放| 欧美国产激情二区三区| 亚洲精品之草原avav久久| 亚洲成色www久久网站| 在线不卡中文字幕播放| 亚洲国产午夜| 亚洲第一区色| 国产精品高清免费在线观看| 亚洲国产精品女人久久久| 国产精品日韩一区| 狠狠色狠狠色综合日日tαg| 欧美日本中文字幕| 欧美精品入口| 久热re这里精品视频在线6| 国产精品国产三级国产普通话三级| 久久久综合网站| 欧美日韩视频在线第一区| 欧美亚洲在线视频| 亚洲激情在线观看| 亚洲欧美日本精品| 91久久国产精品91久久性色| 欧美美女bb生活片| 欧美日韩免费观看一区=区三区| 中文av一区二区| 亚洲精品视频在线播放| 国产精品久久久久久久久动漫| 欧美色图麻豆| 久久久久久久欧美精品| 一区二区三区日韩欧美| 国产精品美女主播| 亚洲线精品一区二区三区八戒| 亚洲福利视频专区| 影音先锋久久资源网| 国产一区二区三区无遮挡| 国产一区二区无遮挡| 免费成人av资源网| 国产欧美日韩一级| 亚洲国产国产亚洲一二三| 亚洲精品综合精品自拍| 国产精品乱码妇女bbbb| 亚洲一级二级| 香港久久久电影| 宅男噜噜噜66一区二区| 亚洲久色影视| 国产精品免费电影| 欧美午夜视频| 欧美韩国一区| 国产精品日日做人人爱| 亚洲精品国产精品国自产在线| 国产精品久久久久一区二区三区| 亚洲欧美国产精品桃花| 伊人春色精品| 久久精品二区亚洲w码| 亚洲国产一区视频| 亚洲国产一区二区三区青草影视| 国产精品爽爽爽| 亚洲风情在线资源站| 亚洲精品在线视频| 在线观看国产精品淫| 久久精品在线播放| 久久一区国产| 性欧美8khd高清极品| 国产精品日韩在线一区| 亚洲欧美日韩精品久久| 西西人体一区二区| 香蕉av福利精品导航| 国产专区精品视频| 1769国内精品视频在线播放| 国产精品自拍小视频| 黄色资源网久久资源365| 一区二区三区在线视频观看| 亚洲电影欧美电影有声小说| 亚洲成人在线免费| 欧美一区激情| 一区二区三区精品国产| 国产欧美日韩一区二区三区在线|