本文主要是介绍WinCE5.0 SMDK2410 BSP在GEC2410开发板上的移植(7)-Serial串口驱动,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
SMDK2410已经实现了串口驱动,因此不需要大的改动,其中PDD库位于/PUBLIC/COMMON/OAK/CSP/ARM/SAMSUNG/S3C2410X/SERIAL下,生成dll的驱动位于/PLATFORM/GEC2410/SRC/DRIVERS/SERIAL.
为了更好的研究串口驱动,我们把/PUBLIC/COMMON/OAK/CSP/ARM/SAMSUNG/S3C2410X/SERIAL目录复制到/PLATFORM/GEC2410/SRC/COMMON/S3C2410X/SERIAL,还是先介绍移植的工程,然后再来分析CE的串口驱动
1.修改source文件
(1)需要的组件都已经添加好了,首先修改PDD库的source:
把RELEASETYPE改成PLATFORM就好了.
TARGETNAME=s3c2410x_serial
RELEASETYPE=PLATFORM
TARGETTYPE=LIBRARY
INCLUDES=../inc
CDEFINES=$(CDEFINES) -DUSE_NEW_SERIAL_MODEL
SOURCES=pdds3c2410_ser.cpp
(2)修改dll的source文件,主要是修改RELEASETYPE,设置DLLENTRY,修改上面已经编译的s3c2410x_serial.lib的路径
WINCEOEM=1
TARGETNAME=serial_smdk2410
TARGETTYPE=DYNLINK
RELEASETYPE=PLATFORM
TARGETLIBS=$(_COMMONSDKROOT)/lib/$(_CPUINDPATH)/coredll.lib /
$(_SYSGENOAKROOT)/lib/$(_CPUINDPATH)/ceddk.lib
SOURCELIBS=$(_TARGETPLATROOT)/lib/$(_CPUINDPATH)/s3c2410x_serial.lib /
$(_SYSGENOAKROOT)/lib/$(_CPUINDPATH)/serpddcm.lib /
$(_SYSGENOAKROOT)/lib/$(_CPUINDPATH)/com_mdd2.lib
DEFFILE=serial.def
DLLENTRY=DllEntry
SOURCES= ser_smdk2410.cpp
其实这两个文件夹可以整合到一起直接编译成一个dll,只需要将pdds3c2410_ser.cpp复制到/PLATFORM/GEC2410/SRC/DRIVERS/SERIAL,修改source文件,将pdds3c2410_ser.cpp添加到编译文件.
SOURCES= ser_smdk2410.cpp /
pdds3c2410_ser.cpp
这也是WinCE6.0 DEVICEEMULATOR BSP的串口文件目录结构.
2.这里使用的是UART0,UART1被用作调试串口,在移植eboot的时候讲过eboot不能使用UART0的原因就是被系统串口驱动占用了.
修改只需要这么多,注册表,bib文件都用原来的设置即可.
3.测试程序
我们需要写一个测试程序,来检验串口驱动是否工作正常.我们使用基本的SDK API来操作串口,即CreateFile,ReadFile,WriteFile等通用的API.当然也可以使用MFC下的串口控件.
(1)Open Port
(2)Read Port
(3)Write Port
(4)Close Port
(5)main
代码比较简单,先写字符串到串口,然后不停读串口,每次等待时间为1s,这是一个测试程序,要写一个真正的基于串口的应用程序,还需要考虑诸多方面,如读串口采用中断方式等.
在CE上运行该程序,PC上使用串口工具,可以收到数据,发送数据也能被CE接收到.
这篇关于WinCE5.0 SMDK2410 BSP在GEC2410开发板上的移植(7)-Serial串口驱动的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!