4785|10

66

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

100分求助:关于CE下串口驱动流程 [复制链接]

各位高手
CE下的分层的串口驱动是怎么一个流程呢???
我看资料写的似乎PDD层只有一个函数GetSerialObject是跟MDD通信的
那其他函数需要怎么定义呢?
简单一句:
分层的串口驱动是怎么样一个执行流程???
编写串口驱动是什么样一个思路???
非常非常感谢大家!!!!!!!

最新回复

再次感谢各位: 请问下面这段是什么意思呢? typedef HWOBJ const *PCHWOBJ; const PCHWOBJ HWObjects[] = {         &IoObj,         &IrObj }; // GetSerialObj : The purpose of this function is to allow multiple PDDs to be // linked with a single MDD creating a multiport driver.  In such a driver, the // MDD must be able to determine the correct vtbl and associated parameters for // each PDD.  Immediately prior to calling HWInit, the MDD calls GetSerialObject // to get the correct function pointers and parameters. // PHWOBJ GetSerialObject(                DWORD DeviceArrayIndex                ) {         PHWOBJ pSerObj;         RETAILMSG(DEBUGMODE,(TEXT("GetSerialObject : DeviceArrayIndex = %d\r\n"), DeviceArrayIndex));         // Now return this structure to the MDD.         if ( DeviceArrayIndex == 1 )                 pSerObj = (PHWOBJ)(&IrObj);         else                 pSerObj = (PHWOBJ)(&IoObj);         return (pSerObj); }   详情 回复 发表于 2008-7-31 09:36
点赞 关注

回复
举报

76

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
多花点时间看看PB的帮助文档吧,里面对串口驱动有比较详细的介绍。
 
 

回复

82

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
ms-help://MS.WindowsCE.500/wceddk5/html/wce50grfstreaminterfacedriverfunctions.htm
如果你装了MSDN...都在这里了

http://msdn.microsoft.com/en-us/library/ms895459.aspx
如果你没装可以上MSDN的站。建议看英文的。。中文的我没找到- -||||
按照下面的路径就能找到了

MSDN
Please Wait
MSDN Library

    * Design Tools
    * Development Tools and Languages
    * Mobile and Embedded Development
    * .NET Development
    * Office Development
    * Open Specifications
    * Servers and Enterprise Development
    * Web Development
    * Win32 and COM Development

Mobile and Embedded Development

    * Windows Embedded
    * Windows Mobile
    * Shared Windows Mobile 6 and Windows Embedded CE 6.0 Library
    * .NET Compact Framework
    * Mobile Web Development
    * Windows Automotive

Windows Embedded
Please Wait
Windows Embedded CE

    * Windows Embedded CE 6.0 Documentation
    * Windows Embedded CE 6.0 Technical Articles
    * Windows CE 5.0
    * Windows CE .NET
    * Windows CE 3.0
    * Windows CE 2.1

Windows CE 5.0

    * Product Documentation
    * Technical Articles

Product Documentation
Please Wait
Developing a Device Driver

    * Device Driver Development Overview
    * Device Driver Development Concepts
    * Device Driver Development Helper Libraries
    * Device Driver Development How-to Topics
    * Best Practices for Developing a Device Driver
    * Device Manager
    * Power Management
    * Windows CE Drivers

Windows CE Drivers

    * Driver Catalog Items
    * Audio Drivers
    * Battery Drivers
    * Block Drivers
    * Bluetooth HCI Transport Driver
    * Direct3D Mobile Display Drivers
    * DirectDraw Display Drivers
    * Display Drivers
    * DVD-Video Renderer
    * Flash Media Drivers
    * HID Drivers
    * IEEE 1394 Drivers
    * Keyboard Drivers
    * Network Drivers
    * Notification LED Drivers
    * Parallel Port Drivers
    * PC Card Drivers
    * PCI Bus Driver
    * Printer Drivers
    * Root Bus Driver
    * Secure Digital Card Drivers
    * Serial Port Drivers
    * Smart Card Drivers
    * Stream Interface Drivers
    * Timer Driver
    * Touch Screen Drivers
    * USB Function Drivers
    * USB Host Drivers
    * USB Serial Host Driver

Stream Interface Drivers

    * Stream Interface Driver Development Concepts
    * Stream Interface Driver Reference

Stream Interface Driver Reference

    * Stream Interface Driver Functions

Stream Interface Driver Functions

    * XXX_Close (Device Manager)
    * XXX_Deinit (Device Manager)
    * XXX_Init (Device Manager)
    * XXX_IOControl (Device Manager)
    * XXX_Open (Device Manager)
    * XXX_PowerDown (Device Manager)
    * XXX_PowerUp (Device Manager)
    * XXX_PreClose (Device Manager)
    * XXX_PreDeinit (Device Manager)
    * XXX_Read (Device Manager)
    * XXX_Seek (Device Manager)
    * XXX_Write (Device Manager)

 
 
 

回复

86

帖子

0

TA的资源

一粒金砂(初级)

4
 
上面是关于流驱动的。。串口的
ms-help://MS.WindowsCE.500/wceddk5/html/wce50conserialportdrivers.htm
msdn这里了

没装就上网站看看
http://msdn.microsoft.com/en-us/library/ms923741.aspx

 
 
 

回复

80

帖子

0

TA的资源

一粒金砂(初级)

5
 
PDD层只要实现N个函数,然后用GetSerialObject,将这些函数通过一组“函数指针”就传给MDD层了,MDD层就可以调用这些函数了。
所以PDD层实现的这些函数,名字无所谓,但是输入输出参数必须按照CE的标准规定来设置,具体的需要实现哪些函数,参数如何设置还是去看MSDN了。
 
 
 

回复

61

帖子

0

TA的资源

一粒金砂(初级)

6
 

编写驱动程序,很高深。学习。
 
 
 

回复

77

帖子

0

TA的资源

一粒金砂(初级)

7
 
好象<>一书中有比较好的介绍
 
 
 

回复

82

帖子

0

TA的资源

一粒金砂(初级)

8
 
windowsCE应用技术
没找到这本书相关信息?
是不是名字错了??
 
 
 

回复

83

帖子

0

TA的资源

一粒金砂(初级)

9
 
还是看英文的比较好,MSDN
老实点看吧
我现在也在学习当中

eeworld真好,无论什么问题,简单的还是复杂的,都回答。
气氛不错
 
 
 

回复

68

帖子

0

TA的资源

一粒金砂(初级)

10
 
1、MDD接口
由于串口驱动由Device.exe直接调用,所以MDD部分是以完整的Stream接口给出的. 也就具备基于Stream接口的驱动程序所需的函数实现,包括COM_Init,COM_Deinit ,COM_Open,COM_Close ,COM_Read ,COM_Write, COM_Seek,, COM_PowerUp, COM_PowerDown, COM_IOControl几个基本实现。


2、PDD接口
HWOBJ是相应的硬件设备操作的抽象集合。BandFlags指定IST的启动时间,可选为在初始化过程启动或是在打开设备的时候起动ISR,也可以在PDD层实现。而第二个参数则是指定拦截的具体的系统中断号。最后一个参数是一个结构,该结构定义了硬件操作的各式行为函数的指针,MDD正是通过这些函数来访问具体的PDD操作。
typedef struct __HWOBJ {
    ULONG        BindFlags; // Flags controlling MDD behaviour.  Se above.
    DWORD   dwIntID;   // Interrupt Identifier used if THREAD_AT_INIT or THREAD_AT_OPEN
    PHW_VTBL        pFuncTbl;
} HWOBJ, *PHWOBJ;





*****************************
深圳友坚恒天科技最新推出UT-S3C2440开发板,仅售700元RMB
史上做工最精致、性价比最高的2440开发板
详尽的文档、丰富的实验例程,ARM软、硬件开发入门最佳选择!
详情请登录:www.urbetter.com
联系电话:0755-26423815  符先生

 
 
 

回复

81

帖子

0

TA的资源

一粒金砂(初级)

11
 
再次感谢各位:
请问下面这段是什么意思呢?
typedef HWOBJ const *PCHWOBJ;

const PCHWOBJ HWObjects[] = {
        &IoObj,
        &IrObj
};

// GetSerialObj : The purpose of this function is to allow multiple PDDs to be
// linked with a single MDD creating a multiport driver.  In such a driver, the
// MDD must be able to determine the correct vtbl and associated parameters for
// each PDD.  Immediately prior to calling HWInit, the MDD calls GetSerialObject
// to get the correct function pointers and parameters.
//
PHWOBJ
GetSerialObject(
               DWORD DeviceArrayIndex
               )
{
        PHWOBJ pSerObj;

        RETAILMSG(DEBUGMODE,(TEXT("GetSerialObject : DeviceArrayIndex = %d\r\n"), DeviceArrayIndex));

        // Now return this structure to the MDD.
        if ( DeviceArrayIndex == 1 )
                pSerObj = (PHWOBJ)(&IrObj);
        else
                pSerObj = (PHWOBJ)(&IoObj);

        return (pSerObj);
}
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表