Board logo

标题: WinCE流设备驱动简介及GPIO驱动的实现 02 [打印本页]

作者: samwalton    时间: 2014-2-23 11:15     标题: WinCE流设备驱动简介及GPIO驱动的实现 02

在BSP目录下面的”CATALOG”文件夹下面找到”BspName.pbcxml”并用记事本打开,然后添加GPIO驱动的选项,首先找到<BSP>…</BSP>并在里面添加下面一行:
           <BspItemId>Item:Cirrus Logic:bsp_ep94xx_gpio_ep9407_EP94xx</BspItemId>
       然后在< CatalogFile >…</CatalogFile>中添加下面的驱动描述:
      <Item Id="Item:Cirrus Logic:bsp_ep94xx_gpio_ep9407_EP94xx">
           <Title>GPIO</Title>
           <Description>GPIO Driver</Description>
           <Type>BspSpecific</Type>
           <Variable>BSP_EP94XX_GPIO</Variable>
           <Location>Device Drivers</Location>
           <SourceCode>
                 <Title>$(_WINCEROOT)\PLATFORM\EP94XX\SRC\DRIVERS\gpio</Title>
                 <Path>$(_WINCEROOT)\PLATFORM\EP94XX\SRC\DRIVERS\gpio</Path>
           </SourceCode>
      </Item>
       上面实际上添加了GPIO驱动,环境变量为BSP_EP94XX_GPIO,源代码位于路径”\Platform\EP94XX\SRC\DRIVERS\gpio”下面。
        (2) 创建GPIO驱动文件夹并更改dir文件:
       进入”\Platform\EP94XX\SRC\DRIVERS\”目录,创建一个名为”gpio”的文件夹,这个文件夹包含GPIO驱动。然后打开dirs文件,在末尾添加”gpio”。
       (3) 开发GPIO驱动:
       进入”\Platform\EP94XX\SRC\Drivers\gpio”并创建gpio.c文件,在文件中封装相应的流设备接口函数,如下:
                                   GPI_Init(..)
                                   GPI_DeInit(..)
                                   GPI_Read(..)
                                   GPI_Write(..)
                                   …
       可以在GPI_Read函数中读取GPIO的状态,在GPI_Write函数中设置GPIO的状态,当然也可以通过GPI_IoControl函数来实现。
       然后在该路径下面创建makefile文件,并在里面包含下面一行就可以了:
              !INCLUDE $(_MAKEENVROOT)\makefile.def
       接下来创建模块导出文件gpio.def,具体内容如下:
              LIBRARY     GPIO_LIB
EXPORTS
                  DllEntry
                  GPI_Init
                  GPI_Deinit
                  GPI_Open
                  GPI_Close
                  GPI_Read
                  GPI_Write
                  GPI_Seek
                  GPI_IOControl
                  GPI_PowerDown
                  GPI_PowerUp
       最后创建用于编译的sources文件,具体内容如下:
       !ifndef BSP_EP94XX_GPIO
SKIPBUILD=1
!endif

TARGETNAME=gpio
RELEASETYPE=PLATFORM
TARGETTYPE=DYNLINK
TARGETLIBS= \
               $(_SYSGENSDKROOT)\lib\$(_CPUINDPATH)\coredll.lib

DLLENTRY=DllEntry
SOURCES= gpio.c
        (4) 添加GPIO驱动的注册表配置:




欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0