当前位置: 首页 > news >正文

如何做网站美工深圳网络推广外包公司

如何做网站美工,深圳网络推广外包公司,设计制作中国第一架飞机的人是,做网站是不是涉及很多语言职专栏文章目录传送门#xff1a;返回专栏目录 Hi, 我是你们的老朋友#xff0c;主要专注于嵌入式软件开发#xff0c;有兴趣不要忘记点击关注【码思途远】 目录 1. Linux 串口驱动 1.1 Uart 驱动注册流程 1.2 uart 操作函数 1.3 line discipline 2. Linux tty应用层使用… 专栏文章目录传送门返回专栏目录 Hi, 我是你们的老朋友主要专注于嵌入式软件开发有兴趣不要忘记点击关注【码思途远】 目录 1. Linux 串口驱动 1.1 Uart 驱动注册流程 1.2 uart 操作函数 1.3 line discipline 2. Linux tty应用层使用 2.1 UART 操作步骤 2.2 UART 使用注意要点 3. 总结 本章节主要对Linux 下tty 相关设备以serial进行一些分析 cpu: i.mx8mq OSAndroid 11 Kernel versionkernel 5.10 根据上一章节对TTY的整个框架有一些简单了解常说的串口驱动也一并进行简单说明对tty调用至串口相关的整个流程进行讲解。 1. Linux 串口驱动 Linux 串口整个驱动在嵌入式中使用率是非常非常高的一个部分常用用于打印调试。先查看串口驱动的整个层次结构情况主要是串口驱动与tty驱动的关系紧密。 对于TTY Core 层中已经在Linux tty子系统介绍一已经有大致提到主要是为用户层提供相关接口为下层各种不一样的tty 进行管理 Serial Core 层Serial Core 层提供了一个抽象层用于表示和处理串口设备。它定义了一组通用的接口和数据结构使得不同类型的串口设备能够在同一接口上进行交互。 Uart driver 层UART Driver Layer 提供了一个硬件抽象层允许不同型号和厂商的 UART 控制器以统一的方式与 Linux 内核交互。这种抽象层使得 Linux 内核能够适应各种不同的硬件实现。 1.1 Uart 驱动注册流程 串口驱动的注册主要包含UART驱动注册platform 平台注册 UART驱动注册 uart_register_driver(imx_uart_uart_driver); 注册流程图 从注册流程来看最终会注册到一个TTY设备将会在文件系统产生一个tty 设备这样可以提供给应用程进行调用控制UART. 主要代码接口uart_register_driver 关于代码调用相关 这里引用TTY 驱动设备创建过程 platform 平台注册 platform_driver_register(imx_uart_platform_driver); 这一步注册了一个平台驱动。imx_uart_platform_driver 是一个 platform_driver 结构体的实例它定义了平台驱动的属性和操作函数包括匹配、探测、移除等操作。平台驱动负责与具体的硬件平台进行交互。 主要用于总线匹配 通过 platform_driver_register 将 platform_driver 结构体注册到内核内核因此知道有一个新的平台驱动可以处理特定的平台设备。 1.2 uart 操作函数 串口驱动的 uart_ops 结构体包含了uart 的操作函数。在不同平台SoC需要实现该操作函数。 static const struct uart_ops imx_uart_pops {.tx_empty       imx_uart_tx_empty,     // 检查发送缓冲区是否为空.set_mctrl       imx_uart_set_mctrl,     // 设置调制解调器控制信号.get_mctrl       imx_uart_get_mctrl,     // 获取调制解调器控制信号.stop_tx         imx_uart_stop_tx,       // 停止发送数据.start_tx       imx_uart_start_tx,     // 开始发送数据.stop_rx         imx_uart_stop_rx,       // 停止接收数据.enable_ms       imx_uart_enable_ms,     // 启用调制解调器状态中断.break_ctl       imx_uart_break_ctl,     // 控制串口的断点信号.startup         imx_uart_startup,       // 启动串口.shutdown       imx_uart_shutdown,     // 关闭串口.flush_buffer   imx_uart_flush_buffer, // 刷新发送和接收缓冲区.set_termios     imx_uart_set_termios,   // 设置串口的参数波特率、数据位、停止位等.type           imx_uart_type,         // 获取串口类型.config_port     imx_uart_config_port,   // 配置串口端口.verify_port     imx_uart_verify_port,   // 验证串口端口 #if defined(CONFIG_CONSOLE_POLL).poll_init       imx_uart_poll_init,     // 初始化轮询模式.poll_get_char   imx_uart_poll_get_char, // 在轮询模式下获取字符.poll_put_char   imx_uart_poll_put_char, // 在轮询模式下发送字符 #endif }; 假如在RK3588平台同样需要实现uart_ops的操作函数。 1.3 line discipline 在架构图中可以发现有一个line discipline这个作用是什么 line discipline是线路规划意思是TTY子系统中的一个比较重要概念它在字符设备和用户空间之间扮演了一个中间层的角色处理从用户空间传入的数据和从硬件传出的数据。它的主要作用是提供一个可插拔的处理机制使得不同的协议和数据处理方式可以方便地集成到串口驱动中。 line discipline代码中结构体 tty_ldisc_ops 代表不同的线路规程line discipline每种线路规程实现了一种特定的数据处理方式或协议。 比如 N_TTY默认线路规划用于标准的字符终端输入输出处理。它处理基本的控制字符如回车、删除等并提供行缓冲和行编辑功能。 N_PPP用于点对点协议PPP处理适用于通过串口进行的网络连接。它负责处理 PPP 的帧封装和解封装。 N_SLIP用于串行线路互联网协议SLIP处理。SLIP 是一种简单的封装协议用于在串行接口上传输 IP 数据报。 N_R3964用于西门子的 R3964 协议通常用于工业控制系统。它实现了西门子硬件设备的通信协议。 最常用的就是n_tty源码路径drivers/tty/n_tty.c static struct tty_ldisc_ops n_tty_ops {.magic           TTY_LDISC_MAGIC,.name             n_tty,.open             n_tty_open,.close           n_tty_close,.flush_buffer     n_tty_flush_buffer,.read             n_tty_read,.write           n_tty_write,.ioctl           n_tty_ioctl,.set_termios     n_tty_set_termios,.poll             n_tty_poll,.receive_buf     n_tty_receive_buf,.write_wakeup     n_tty_write_wakeup,.receive_buf2     n_tty_receive_buf2, }; 2. Linux tty应用层使用 对于TTY 应用层中的UART 来说可以发现并没有像其他通信串口IIC,SPI具体设备驱动关于具体设备一般都在应用层实现。对于 应用层中只有简单的一些操作。 2.1 UART 操作步骤 打开串口设备 配置串口参数 读写数据 关闭串口设备 这几个步骤 需要注意在配置串口举例子 #include termios.h ​ struct termios options; tcgetattr(fd, options);  // 获取当前串口配置 ​ // 设置波特率 cfsetispeed(options, B9600); cfsetospeed(options, B9600); ​ // 设置控制模式 options.c_cflag | (CLOCAL | CREAD);  // 允许接收数据 options.c_cflag ~PARENB;           // 无校验 options.c_cflag ~CSTOPB;           // 一位停止位 options.c_cflag ~CSIZE;            // 清除数据位掩码 options.c_cflag | CS8;               // 数据位 8 ​ // 设置输入模式 options.c_iflag ~(IXON | IXOFF | IXANY);  // 关闭软件流控制 ​ // 设置输出模式 options.c_oflag ~OPOST;  // 原始输出模式 ​ // 设置本地模式 options.c_lflag ~(ICANON | ECHO | ECHOE | ISIG);  // 原始输入模式 ​ // 设置新的串口配置 tcsetattr(fd, TCSANOW, options); 关于读写操作普通的write read等。 2.2 UART 使用注意要点 使用串口通信需要注意的是 波特率的问题 需要与通信接口的波特率一直既可。 阻塞和非阻塞模式在阻塞模式下读写操作会一直等待直到完成在非阻塞模式下读写操作会立即返回应用程序需要使用轮询或其他方法来检查是否有数据可用或是否已经完成写入。 串口设备文件权限确保应用程序对串口设备文件有足够的访问权限否则可能无法打开串口。 3. 总结 本文主要以串口驱动去介绍TTY 相关的知识主要对串口驱动注册流程一些重要操作函数进行简单分析对于应用层来说是一个非常通用的用法不过在遇到一些通信不上的时候通过一些排查手法进行查看问题。
http://www.dnsts.com.cn/news/71684.html

相关文章:

  • 网站策划与设计如何注册网站卖东西
  • 世界最受欢迎的免费架站平台wordpress 多厂商插件
  • 如何做提卡网站广东网站建设报价
  • 门户网站开发报价单塘厦
  • 中国网上购物平台有哪些wordpress加速优化
  • 网站建设需要的框架结构金坛网站建设哪家好
  • 杭州网站建设app网站视频主持
  • 手表交易网站网站设计问题
  • 没公司怎么做网站wordpress icp涵数
  • wordpress设计的网站做网站开发甲方一直要求p图
  • php语言做的大网站网站的用途
  • 爱站网 关键词挖掘工具站长工具临泉建设网站
  • 网站优化怎么样做做设计的地图网站
  • 公司网站手工优化怎么做世界十大著名室内设计师
  • 徐州网站建设模板网络文化经营许可证在哪里办
  • 网站通栏广告素材wordpress 分类文章数
  • 如何将自己做的网站推广出去网页后端开发需要学什么
  • 怎么为做的网站配置域名创建网站基本流程
  • 如何建设公司网络营销网站今天杭州新闻最新消息
  • 淄博网站建设-中国互联wordpress 搭建vultr
  • 惠州网站建设方案报价西安百度公司
  • 图片展示网站模板山东建设厅网站扫黑
  • 新手用jsp做网站网站 ip修改备案流程图
  • 做机械设备销售的那个网站好网站域名转出
  • 汝州市建设局网站濮阳公司网站建设企业
  • 北京装修公司网站建设网站首页制作过程
  • 免费发布项目的网站个人网站开论坛
  • 公司招聘做哪家网站舟山市建设信息港网站
  • 网址导航网址大全彩票网站大全网站后台制作视频教程
  • 32岁学做网站建筑企业查询