资源说明:本文介绍了WinCE6.0下的串口驱动模型,结合LPC3250的硬件情况,详细说明了串口驱动开发过程,包括配置串口相关的寄存器和处理中断中重要函数的实现,以及注册表和Source文件编写等。本驱动程序在广州致远电子有限公司的SmartARM3250开发板上实验成功。在串口驱动开发中所用的思路,对其他类似的驱动设计有较高的参考价值。
在Windows CE 6.0操作系统环境下,开发针对LPC3250微处理器的串口驱动程序是一项重要的任务,尤其对于嵌入式系统的应用。LPC3250是一款基于ARM Cortex-M3架构的高性能微控制器,常用于工业控制、消费电子产品等场景。在WinCE系统中,串口驱动通常采用流接口驱动程序模型,该模型分为平台相关驱动PDD层和模型设备驱动MDD层。
在串口驱动开发中,首先要理解Windows CE的驱动模型。PDD层负责特定硬件或平台的代码实现,可能需要根据目标硬件进行修改。而MDD层则是平台无关的代码,通过实现预定义接口来实现通用功能,这部分通常由微软提供。操作系统通过DDI(设备驱动接口)与MDD层交互,MDD层还包含中断处理线程IST,并定义了与PDD层的接口函数DDSI。在开发过程中,需要关注如 `%_WinCEROOT%`\PUBLIC`\COMMON`\OAK`\DRIVERS`\SERIAL 下的源代码文件,这些文件包含了标准串口驱动的核心功能。
串口驱动程序的实现主要包括配置串口相关寄存器和处理中断两个关键点。配置寄存器涉及将物理地址映射到内核的虚拟地址,并在不同操作阶段正确设置寄存器。对于LPC3250,由于其串口寄存器地址间隔为32位,不同于标准的8位,所以在实现时需要特别注意。处理中断则涉及到物理中断到系统中断的映射,中断与事件的绑定,以及中断发生时的处理逻辑。
在具体实现时,需要继承CPdd16550和CReg16550类。CReg16550的子类CRegLPC32xx将实现与LPC3250硬件的低级别读写操作。而Clpc32xxPdd16550UART继承自CPdd16550,需要重写相关函数以适应LPC3250的硬件特性,例如Init函数中获取中断信息,以及通过KernelloControl函数进行中断号的逻辑转换。
注册表和Source文件的编写也是开发过程的重要部分。注册表用于存储设备的配置信息,如串口的Active键会指示物理中断号。Source文件中则包含了驱动程序的实现细节,如设备初始化、数据传输速率计算、水印设置等功能。
开发LPC3250的WinCE串口驱动程序需要深入理解WinCE驱动模型,熟悉LPC3250硬件特性,并能够熟练地编写和调试驱动代码。这个过程不仅涉及硬件寄存器操作,还包括中断处理机制,以及与操作系统的交互。通过这样的驱动程序开发,可以为基于LPC3250的系统提供稳定、高效的串口通信能力,同时,这种开发经验对其他类似的驱动设计具有很高的参考价值。
本源码包内暂不包含可直接显示的源代码文件,请下载源码包。