新聞中心

        EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于Windows CE的SPI接口驅(qū)動(dòng)程序及與應(yīng)用程序交互的設(shè)計(jì)

        基于Windows CE的SPI接口驅(qū)動(dòng)程序及與應(yīng)用程序交互的設(shè)計(jì)

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










        需要說(shuō)明的是,在本程序中使用了DDK中MmMapIoSpace庫(kù)函數(shù),故另需在頭文件中添加#include和#pragma comment(lib,ceddk.lib)。至此,g_Reg在其他的驅(qū)動(dòng)實(shí)現(xiàn)函數(shù)中就可以調(diào)用,直接讀寫(xiě)其指向的寄存器的代碼即可完成相關(guān)的操作。還需要實(shí)現(xiàn)的函數(shù)有:_Deinit、_Read、SPI_write、SPI_Seek、SPI_Open、SPI_Close、SPI_IOCntrol。限于篇幅,本文僅給出驅(qū)動(dòng)初始化的代碼。

        3.3 驅(qū)動(dòng)與的通信

        中,用戶(hù)模式下每個(gè)進(jìn)程與其他進(jìn)程所占有的內(nèi)存空間被虛擬內(nèi)存機(jī)制隔離,進(jìn)程間無(wú)法實(shí)現(xiàn)直接互訪。在通信過(guò)程中,位于device.exe的進(jìn)程空間中,由于上述原因,發(fā)起的單向通信存在困難。通常的解決方法是在內(nèi)核空間中共享同步對(duì)象,建立消息隊(duì)列或者通過(guò)指針映射來(lái)完成。上述方法都無(wú)法回避進(jìn)程間的數(shù)據(jù)復(fù)制過(guò)程,因而只適用于少量的數(shù)據(jù)傳輸。對(duì)于大量的數(shù)據(jù)或者實(shí)時(shí)性要求較高的情況,可以在虛擬地址為Ox4200 0000~0x7fff ffff的空間中建立命名的內(nèi)存映射來(lái)實(shí)現(xiàn)內(nèi)存共享,從而能夠避免數(shù)據(jù)在進(jìn)程空間中的復(fù)制。相關(guān)的API為CreateFileMapping和MapView()fFile。

        3.4 驅(qū)動(dòng)程序的封裝和安裝

        驅(qū)動(dòng)函數(shù)編寫(xiě)完后將其以dll的形式導(dǎo)出,再編寫(xiě)一個(gè)簡(jiǎn)單的注冊(cè)表文件,指明驅(qū)動(dòng)安裝的路徑、前綴以及索引。至此驅(qū)動(dòng)程序工作就完成了,將驅(qū)動(dòng)及注冊(cè)表添加到當(dāng)前的平臺(tái)中即可。

        結(jié) 語(yǔ)

        本文詳細(xì)介紹了Platform Builder下SPI驅(qū)動(dòng)程序以及驅(qū)動(dòng)程序同應(yīng)用程序的實(shí)現(xiàn)。驅(qū)動(dòng)例程已經(jīng)成功地應(yīng)用于nRF2401的嵌入式系統(tǒng)無(wú)線(xiàn)通信當(dāng)中,具有很高的參考價(jià)值。

        本文引用地址:http://www.104case.com/article/149152.htm
        上一頁(yè) 1 2 下一頁(yè)

        評(píng)論


        相關(guān)推薦

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

        關(guān)閉
        主站蜘蛛池模板: 苍溪县| 新竹县| 安吉县| 霍邱县| 海盐县| 连平县| 徐州市| 明星| 萨迦县| 浦城县| 五常市| 丰城市| 郑州市| 浦县| 蒙山县| 呈贡县| 剑阁县| 清镇市| 韶关市| 襄城县| 宝应县| 杨浦区| 石狮市| 克拉玛依市| 武宣县| 大余县| 南宫市| 萨嘎县| 舒兰市| 大姚县| 拜泉县| 类乌齐县| 甘孜县| 安图县| 建水县| 故城县| 怀宁县| 兴安县| 宝兴县| 堆龙德庆县| 武冈市|