Linux下UART串口驱动开发:w83697/w83977 Super I/O详解

2 下载量 76 浏览量 更新于2024-08-30 收藏 177KB PDF 举报
该文档是关于嵌入式系统和ARM技术中Linux UART串口驱动开发的教程,重点讲解了Linux下串口驱动的设计、中断处理、中断共享和软中断机制,以及TTY与串口的关联。文档适用于w83697和w83977超级I/O串口驱动的开发,但不详细讨论这两个IC的配置寄存器。 在Linux系统中,串口接口被广泛使用,并且具有标准化的编程接口。串口驱动开发者需要关注不同串口集成电路(IC)的特定配置,如读写操作、中断管理和FIFO状态处理。在驱动程序的最底层,这些功能直接与硬件交互,负责实现串口的数据传输。 1. 串口硬件资源的处理: 文档提到,在ep93xx板上,W83697和W83977的硬件地址分别映射到0x20000000起始的1K空间和0x30000000起始的1K空间。由于串口设备可以作为终端使用,但在内核初始化之前,不能依赖内存映射(ioremap)来访问这些地址,因此在早期阶段需要特别的处理方法。 2. Linux的串口接口及层次: Linux的串口驱动分为多个层次,包括设备驱动层、端口管理层、串口控制器驱动和TTY层。设备驱动层直接与硬件交互,端口管理层负责多个串口的管理和调度,串口控制器驱动处理特定IC的细节,而TTY层提供了用户空间应用程序与内核通信的接口。 3. Linux的中断机制及中断共享机制: 在Linux中,中断处理是实时响应外部事件的关键。串口驱动通常会注册中断处理函数,当串口有数据发送或接收时,CPU会暂停当前任务,执行中断处理程序。中断共享机制允许多个设备共用同一个中断号,通过中断处理程序中的设备标识来区分处理不同的事件。 4. Linux的软中断机制: 软中断在串口驱动中用于处理非实时性但必须完成的任务,例如串口缓冲区的数据处理。它们在主CPU上下文之外运行,避免阻塞主线程,提高了系统的并发性能。 5. TTY与串口的具体关联: TTY(Teletype)系统在Linux中作为终端模拟器,串口可以作为一个TTY设备,使得用户可以直接通过串口输入输出数据。在内核初始化后,串口驱动会将串口设备与TTY子系统连接起来,允许串口数据通过TTY层与用户空间进行交换。 总结,这份文档深入探讨了Linux环境下的串口驱动开发,涵盖了从硬件接口到软件抽象的各个方面,对于理解和开发嵌入式系统中的UART串口驱动至关重要。