RT-Thread设备驱动开发指南
上QQ阅读APP看书,第一时间看更新

2.1 UART层级结构

UART层级结构如图2-2所示。

图2-2 UART层级结构图

1)I/O设备管理层向应用层提供rt_device_read/write等标准接口,应用层可以通过这些标准接口访问UART设备。

2)UART设备驱动框架源码文件为serial_v2.c,位于RT-Thread源码的components\drivers\serial文件夹中。抽象出的UART设备驱动框架和平台无关,是一层通用的软件层。UART设备驱动框架提供以下功能。

①对接上层的I/O设备管理层,以让应用层调用I/O设备管理层提供的统一接口对UART进行操作。

②UART设备驱动框架向UART设备驱动层提供UART设备操作方法接口struct rt_uart_ops(如configure、control、putc、getc、transmit),驱动开发者需要实现这些接口。

③提供设备注册管理接口rt_hw_serial_register和中断处理接口rt_hw_serial_isr。

3)UART设备驱动源码文件为drv_usartv2.c,放在具体bsp目录下,v2表示对接在串口v2版本的设备驱动框架上。UART设备驱动的实现与平台相关,它操作具体的MCU UART控制器。UART设备驱动需要实现UART设备的操作方法struct rt_uart_ops,以提供访问和控制UART硬件的能力。这一层也负责调用rt_hw_serial_register函数将UART设备注册到操作系统。最后还需调用中断处理接口rt_hw_serial_isr,通知UART设备驱动框架层处理数据。

4)最下面一层是MCU外接的UART模块,如UART通信模块、RS-232芯片或者RS-485芯片电路模块等,这样MCU就可以与外接模块进行数据通信了。

UART设备驱动开发的主要任务就是实现串口设备操作方法接口struct rt_uart_ops,然后注册串口设备。本章将会以STM32的UART驱动为例讲解UART驱动的具体实现。接下来先按照步骤创建一个UART设备。