基于wince5.0平台开发Si4730收音机芯片驱动开发总结

时间:2022-09-05 17:50:41

基于wince5.0平台开发Si4730收音机芯片前期开发工作暂告一段落。下面对前期驱动开发进行总结和分析。

1.当前项目进展状态:完成WINCE5.0系统平台架构。
2.基于此平台上建立Si4730芯片驱动程序,调试通过收台成功。
3.下一阶段任务为:
3.1收音机功能的完善
3.2更好的与wince5.0融合,实现音效的系统化。
3.3考虑更换其他收音机模块或与wince6.0以上版本兼容。
4.项目实施描述
4.1 Si4730芯片在此项目中,我们将其看为基于wince系统的一个流设备进行处理,其所有的操作做为流设备驱动完成。
4.2 按照流驱动设备的开发步骤,以及结合SIRF芯片开发的步骤做如下工作:
  4.2.1 在SIRF提供BSP和CSP包中参考声卡部分实现原理实现构建好文件框架。具体如下
     4.2.1.1建立BSP部分。在%winceRoot%/PLATFORM/ARAGORN/DRIVERS下建立Radio目录。
     4.2.1.2参考声卡部分添加sources和MAKEFILE文件。sources文件和MAKEFILE文件具体内容如下:
     ########################sources begin################################
     !IF 0
     Copyright ?2008 Tandow.CO.,LTD.
     !ENDIF
     TARGETNAME=si4730
     RELEASETYPE=PLATFORM
     TARGETTYPE=DYNLINK
     DLLTENTRY=DllMain
     WINCEREL=1
     TARGETLIBS=/
     $(_COMMONSDKROOT)/lib/$(_CPUINDPATH)/coredll.lib /
     SOURCELIBS= /
     $(_AT4X0ACSPPATH)/SRC/LIB/$(_CPUINDPATH)/si4730.lib /
        $(_TARGETPLATROOT)/lib/$(_CPUINDPATH)/bspregmap.lib /
        $(_AT4X0ACSPPATH)/SRC/LIB/$(_CPUINDPATH)/at4x0a_cspregmap.lib /
     DEFFILE=$(_AT4X0ACSPPATH)/SRC/DRIVERS/radio/si4730/si4730.def
     SOURCES= /
     #CDEFINES=$(CDEFINES) /FAs
     #CDEFINES=$(CDEFINES) /Od
     ########################sources end##################################### 

     ########################makefile begin##################################
     # Copyright (c) 1999-2000 Microsoft Corporation.  All rights reserved.
     # DO NOT EDIT THIS FILE!!!  Edit ./sources. if you want to add a new source
     # file to this component.  This file merely indirects to the real make file
     # that is shared by all the components
     #
     !INCLUDE $(_MAKEENVROOT)/makefile.def
     ########################makefile end###################################
     4.2.1.3BSP部分只需上述两个文件即可,完成后转至上一级DRIVER目录,编辑DIRS文件,将radio文件夹包含到目录中。
     4.2.1.4CSP包部分,目录为%winceRoot%/PUBLICE/COMMON/OAK/CSP/ARM/CENTARLITY/AT4X0A/SRC/DRIVERS/raido
     4.2.1.5CSP部分主要为功能实现部分。对于SI4730芯片驱动的主要流式设备驱动功能实现的主要程序存放于此目录下。其中包括如下主要文件:
            1.si4730.cpp//实现流设备功能驱动,定义基础功能以及功能实现。
            2.si4730.h//定义头文件
            3.si4730_command.h//变量定义以及公用函数定义部分
            4.si4730.def//DLL文件函数驱动声明部分。
            5.SOURCES//资源文件
            6.makefile//编译文件
     4.2.1.6实现si4730.cpp,关于流设备驱动的建立方法参照WINCE HELP或参考原厂提供函数编写。同时DEFINE文件中定义内容为:
            ;
       ; Copyright (c) Microsoft Corporation.  All rights reserved.
       ;
       ;
       ; Use of this source code is subject to the terms of the Microsoft end-user
       ; license agreement (EULA) under which you licensed this SOFTWARE PRODUCT.
       ; If you did not accept the terms of the EULA, you are not authorized to use
       ; this source code. For a copy of the EULA, please see the LICENSE.RTF on your
       ; install media.
       ;
       LIBRARY si4730

       EXPORTS
         RSI_Init
         RSI_Deinit
         RSI_Open
         RSI_Close
         RSI_Read
         RSI_Write
         RSI_Seek
         RSI_IOControl    
         RSI_PowerUp
         RSI_PowerDown
     4.2.1.7 完成以上文档的编写后,在PB5.0上运行命令行提示编译以上CSP包和BSP包两个部分。编译后检查是否有错误。更具错误提示完善程序。
    4.2.2 编译无错误后添加部分打印信息到以上定义的函数中。在PB上打开wince5.0的硬件部分的platform.reg文件,在最后加入注册表信息将此驱动程序加载到系统驱动中,具
          体实现如下:
          [HKEY_LOCAL_MACHINE/Drivers/Buildin/SI4730/]
          "Prefix"="RSI"
          "Dll"="si4730.dll"
          "Index"=dword:1
          "Order"=dword:1
          "FriendlyName"="Raido Si4730"
          "Ioctl"=dword:0
    4.2.3 完成后BUILD,sysgen,完成后将IMAGE烧入内存测试,如打印信息出现则说明加入,或通过PB自带的监视工具监视是否有si4730.dl应用到系统中。
   4.2.4 在应用层的实现方式采用将流设备看作为流文件的形式进行操作。通过打开和关闭流文件达到操作驱动的作用。其中由于上面定义的注册变量名为RSI,排序为1则读取的方式
          按如下参考:
          hStr = CreateFile(_T("RSI1:"),GENERIC_READ|GENERIC_WRITE,NULL,NULL,OPEN_EXISTING,NULL,NULL);//打开操作。
          通过这个句柄提出流设备的信息。具体可参考前期设计的I2CTest测试程序。