基于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测试程序。