WINCE6.0与S3C6410串口驱动开发详解

4星 · 超过85%的资源 需积分: 9 14 下载量 175 浏览量 更新于2024-09-13 收藏 13KB TXT 举报
"本文主要介绍如何在Windows CE 6.0操作系统上为S3C6410处理器开发串口驱动程序。" 在Windows CE 6.0系统中,为S3C6410处理器编写串口驱动涉及到几个关键概念和技术。S3C6410是一款基于ARM11架构的微处理器,它包含了多个通用串行接口(UART),通常用于通信和设备连接。针对这些串口,我们需要编写设备驱动程序来确保系统能够识别并正确地与它们交互。 首先,了解串口驱动的结构至关重要。在Windows CE中,驱动分为两种主要类型:模块化设备驱动(MDD)和平台设备驱动(PDD)。MDD是系统级别的驱动,负责提供通用的串口功能,而PDD则更接近硬件,处理特定于平台的细节。在本例中,MDD和PDD协同工作,MDD通过调用PDD的服务来与硬件进行交互。 1. **驱动模型**:在Windows CE中,串口驱动通常采用MDD-PDD模型。MDD提供标准的串口API,使得应用程序可以与任何串口进行通信,而PDD则实现与S3C6410硬件的具体交互。 2. **初始化**:驱动程序的初始化始于`COM_Init`函数。这个函数注册驱动,创建设备对象,并分配必要的资源。在S3C6410中,可能需要配置UART的寄存器以设定波特率、数据位、停止位和校验位等参数。 3. **设备注册**:在`COM_Init`中,会通过`RegisterDevice`将驱动注册到系统中,这样设备管理器才能识别和管理这个串口。注册时,需要提供设备的标识符和设备类信息。 4. **设备打开与关闭**:当应用程序需要使用串口时,它会调用`CreateFile`来打开串口。驱动程序的`COM_Open`函数在此时被调用,处理访问权限和共享模式。相反,`COM_Close`函数在应用关闭串口时执行,释放相关资源并调用`CloseHandle`。 5. **读写操作**:`COM_Read`和`COM_Write`函数分别处理串口的数据读取和发送。它们调用`ReadFile`和`WriteFile`系统调用来执行实际的I/O操作。在处理读写时,需要考虑到缓冲区管理和中断处理。 6. **设备去初始化**:当设备不再使用时,`COM_Deinit`负责清理驱动程序分配的资源。此外,还有`COM_PreDeinit`和`COM_PreClose`这样的预处理函数,它们在设备关闭或去初始化前执行,可能用于保存状态或释放部分资源。 7. **设备控制**:除了基本的读写操作,驱动还需要处理设备控制请求,例如改变波特率或设置流控等。这些请求通常通过`DeviceIoControl`函数到达驱动程序。 在实际开发过程中,开发者需要熟悉S3C6410的硬件参考手册,理解其UART控制器的工作方式,以及如何通过编程来配置和控制这些控制器。同时,对Windows CE内核和驱动模型的理解也是必不可少的,这有助于构建高效且稳定的驱动程序。开发完成后,还需要进行详尽的测试以确保驱动在各种条件下都能正常工作。