linux系统中串口驱动的基本实现原理
创始人
2024-05-04 18:05:38

       大家好,今天主要和大家聊一聊,如何利用linux系统中的串口驱动。

 

目录

第一:linux系统中UART驱动框架

第二:uart_ops的具体实现

第三:串口驱动设备树的添加  


第一:linux系统中UART驱动框架

       向SPI一样,Linux系统也提供了串口驱动框架,我们需要按照相应的串口框架编写驱动程序即可。串口驱动没有主机端和设备端之分,就只有一个串口驱动,我们真正要做的就是在设备数中添加所要使用的串口节点信息。当系统启动以后串口和设备匹配成功,相应的串口就会被驱动起来,生成/dev/ttymxcX文件。

//串口驱动框架还是需要知道的struct  uart_driver{struct module  *owner;     //模块所属者const char *drvier_name;   //驱动名字const char *dev_name;      //设备名字 int  major;                //主设备号int  minor;                //此设备号int   nr;                  //设备树struct consle    *cons;    //控制台struct uart_state    *state;struct tty_driver   *tty_driver;
};//串口驱动要定义uart_driver,向系统中注册这个uart_driverint   uart_register_driver(struct uart_driver *drv)

第二:uart_ops的具体实现

      uart_port中的ops成员变量很重要,因为ops包含了针对UART具体的驱动函数,Linux系统收发数据最终调用的都是ops中的函数。ops是uart_ops类型的结构体指针变量。

struct  uart_ops{unsigned int (*tx_empty)(struct uart_port  *);void (*stop_tx)(struct uart_port  *);};

     第三:串口驱动设备树的添加  

     大部分的UART已经编写好了,我们要做的就是在设备树中添加UART3对应的设备节点即可。

//UART3对应的pinctl子节点pinctrl_uart3: uart3grp {fsl,pins = ;
};

      uart1是UART1,默认在板子上使用到的外设功能,然后加上UART3对应的uart3节点的内容如下:

&uart3{pinctrl-names = "default";pinctrl-0 = <&pinctrl_uart3>;status = "okay";
};

     总结:完成以后重新编译设备树启动对应的Linux,系统启动以后会生产一个为"/dev/ttymxc2"的设备文件。可以通过访问ttymxc2来实现对UART3的操作。

相关内容

热门资讯

阿西吧是什么意思 阿西吧相当于... 即使你没有受到过任何外语培训,你也懂四国语言。汉语:你好英语:Shit韩语:阿西吧(아,씨발! )日...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
demo什么意思 demo版本... 618快到了,各位的小金库大概也在准备开闸放水了吧。没有小金库的,也该向老婆撒娇卖萌服个软了,一切只...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...