5、注册tty_driver。
注册uart_driver实际上是注册tty_driver,与用户空间打交道的工作完全交给tty_driver,这一部分是内核实现好的不需要修改
此接口用于注册一个uart port 到uart driver上,通过注册,uart driver就可以访问对应的uart port,进行数据收发。该接口在uart driver中的probe函数调用,必须保证晚于uart_register_drver的注册过程。
uart driver在调用接口前,要手动设置uart_port的操作uart_ops,使得通过调用uart_add_one_port接口后驱动完成硬件的操作接口注册。uart添加port流程如图3-4所示:
2.4. 数据收发流程 2.4.1. 打开设备(open操作)open设备的大体流程如图3-5所示:
2.4.2. 数据发送流程(write操作)发送数据大体流程如图3-6所示:
2.4.3. 数据接收流程(read操作)接收数据的大体流程如图3-7所示:
2.4.4. 关闭设备(close操作)close设备的大体流程如图3-8所示:
2.4.5. 注销流程 2.4.5.1. 移除uart_port此接口用于从uart driver上注销一个uart port,该接口在uart driver中的remove函数中调用。uart移除port的流程如图3-9所示:
2.4.5.2. 注销uart_driver此接口在uart driver中调用,用来从kernel中注销uart_driver,调用阶段在uart driver的退出阶段,例如:module_exit(),uart driver的注销流程如图3.10所示
2.5. 使用rs485通信 2.5.1. rs485和rs232的区别uart(TTL-3.3V)/rs232(工业级 +-12V)是电压驱动,rs485是电流驱动(能传输更远的距离)
rS232用电平表示数据,使用2根线可实现全双工,rs485用差分电平表示数据,因此必须用4根线实现全双工rs485;
全双工:uart-tx 1根线变成rs485-A/B 2根线;uart-rx 1根线变成rs485- X/Y两根线;
rs485半双工: 将全双工的A/B和X/Y合并起来分时复用;
rs485-de/re是给转换器的一个控制信号,对我们芯片来说,都是输出;
首先保证uart模块和相关gpio,电压转换芯片工作正常:
a,保证uart tx/rx功能正常。
b,用gpio-output来控制 de/re 相关的2个gpio,观察 de/re的gpio输出low/high是否正常
c,在b的基础上,单独调试 rs485-tx/rs485-rx,单端调试是否pass.