当前位置: 代码迷 >> WinCE >> 关于BSP驱动和APP的简单有关问题
  详细解决方案

关于BSP驱动和APP的简单有关问题

热度:95   发布时间:2016-04-28 12:13:51.0
关于BSP驱动和APP的简单问题
一、关于WinCE的流驱动说明:
    流(Stream)设备驱动是WinCE.NET系统中用途最广也是最为重要的驱动类型,在系统启动
的时候,它由设备管理器搜索注册表加载,流驱动程序向文件系统提供统一的、类似于文件访
问的函数接口,也就是说明应用程序可以通过文件I/O函数CreateFile、ReadFile、
WriteFile、CloseHandle等来访问设备驱动程序。

二、BSP驱动分层:MDD层
    初始接触BSP开发,看到相关资料的说明BSP驱动分2层,其中PDD是和硬件相关的、而MDD
是规范(WinCE的规范),具体说MDD层是要实现:
    XXX_Init、XXX_Deinit、XXX_Open、XXX_Read、XXX_WrIte、XXX_Seek、XXX_IOControl
一组接口,比如HMI_Init、HMI_Open,那么如果有的动作不能同步完成,比如HMI_Read需要
等待10ms后才能完成,这种情形如何定义与Application的交互时序,Application提供
Callback函数、还是Driver向其发送Message。

三、BSP驱动分层:PDD
    MDD层各个接口的实现势必要和硬件控制相关,如设定寄存器等,也就是说这些接口的实现
由PDD层提供支持,是这样的吧。

四、硬件结构相关
    通常情形,硬件厂商提供一个开发板,芯片间的结构通常是一个主芯片+专业芯片(DSP),
假设是MCS51 + (Radio芯片、Bluetooth芯片),那么MCS51和Radio芯片间需要通信,比如UART
方式,在WinCE系统运行的情形下,这个UART是否属于WinCE驱动范畴,也要需要实现MDD
我认为也需要,相当于给Application提供一个Radio的驱动程序,而这个UART就相当于PDD。

------解决方案--------------------
这个UART就相当于PDD,这样的理解不对!
------解决方案--------------------
不要搞太复杂了,MDD就是跟硬件相关的,PDD就是跟硬件无关的。
MDD + PDD之后,应用层或其他驱动、服务等就只需要调用PDD的接口就OK,无需关注硬件那边
------解决方案--------------------
PDD是硬件相关   MDD是硬件无关的  
------解决方案--------------------
引用:
1) 楼上的兄弟,是否说反了,PDD是硬件相关而MDD是硬件无关的.
2) 假设我的开发板(主芯片)只有一个串口UART吧,再有一些其他的Timer等,
   现在把WinCE移植到这个板子上,只提供一个UART驱动,其他的都没有(显卡都没有).
   现在的问题是:application使用串口的API是CreateFile/WriteFile/ReadFile等,
   那么这个UART驱动对外提供的接口是什么?

   问题的本质就是想知道WinCE是否对所有设备都预定义了标准的API,而Device Driver
   只需要实现这些接口即可,比如Bluetooth设备的标准API定义是BT_INIT,BT_CONNECT,
   当主芯片不同的时候,这2个接口的内部实现不同.


呃~~~说反了,PDD与硬件有关,MDD调用PDD,为系统提供通用API接口。
  相关解决方案