首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

串口驱动框架设计思考

串口驱动框架设计思考 1.本文概述 2.简易串口协议设计 3.基于固定缓冲区设计 4.基于报文处理解析 5.循环缓冲区使用 6.基于帧处理串口框架 7.总结 1.本文概述 串口驱动不简单,在实际工作中...,往往串口驱动框架设计都是需要考虑非常清楚,特别是实际项目中。...6.基于帧处理串口框架 目前,正在做一个基于物联网通用系统模型,所以思考了一下基于物联网上面的串口模块使用架构,最后设计了一个可以使用框架。...其设计思想基于串口中间件考虑,上层应用不直接访问串口驱动硬件。每次都调用同样接口去包管理器中去取一帧数据,所以这种设计出发点是基于一帧数据模型。...7.总结 对于串口框架设计,是需要好好思考,设计串口驱动程序时,不要认为串口驱动简单,在做协议时,也不能太过于数据传输理想化,应该综合考虑连包、断帧、超时、干扰等等因素,这样设计驱动才会更加稳定

1.5K12
您找到你想要的搜索结果了吗?
是的
没有找到

驱动串口驱动分析(三)-serial driver

简介 前两节我们介绍串口驱动框架和tty core部分。这节我们介绍和硬件紧密相关串口驱动部分。 UART驱动部分依赖于硬件平台,而TTY驱动和具体平台无关。...在 Linux 内核中,每个串口设备都会对应一个 struct uart_port 数据结构,并且这个数据结构会作为串口设备一个属性被保存在相应设备节点中。...uart硬件操作函数集合,底层硬件驱动必须实现这个结构体。 uart_ops结构体 用于定义一个串口驱动程序接口,让上层调用这些接口实现串口读写等操作。...它包含了很多函数指针,每个函数指针对应了一个特定串口操作。 在Linux内核中,串口驱动程序是分为两层实现串口芯片驱动程序和 serial core 层。...uart_unregister_driver uart_unregister_driver是一个Linux内核中串口驱动反注册函数,用于将之前注册驱动程序与系统中串口设备取消关联。

19010

【收藏转发】从串口驱动Linux驱动,嵌入式入门必备!

本文通过对Linux串口驱动分析。由最上层C库,到操作系统系统调用层封装,再到tty子系统核心,再到一系列线路规程,再到最底层硬件操作。 对Linuxtty子系统进行简要说明。...以便读者能对OS原理有更深入了解和更具体掌握。 在具体分析之前。我们必须对串口驱动。和Linux操作系统有一定了解。这一阶段我们有三个问题需要解决: 1.什么是Linux操作系统。...2.什么是Linux设备驱动。 3.关于串口种种。 要了解这些概念。如下我介绍了一点这方面的知识。不过遗憾是对一些概念有着不可避免向前引用。 这个过程中我会尽量忽略次要因素。...这个串口指令功能是由Uboot本身完成。并不是linux串口驱动。 引入此图旨在让读者感性认识到串口控制台功能是什么。 下面正式开始对串口打开。发送。接收函数分析。这里向前引用一个函数。...下面是这个uart驱动总图。结合数据结构调用链。Linux内核完成了驱动模型和特定硬件分离: ? 串口驱动数据结构总图: ?

3.6K20

驱动串口驱动分析(二)-tty core

前言 tty这个名称源于电传打字节简称,在linux表示各种终端,终端通常都跟硬件相对应。比如对应于输入设备键盘鼠标,输出设备显示器控制终端和串口终端。也有对应于不存在设备pty驱动。...在如此众多终端模型之中,linux是怎么将它们统一建模呢?这就是我们今天要讨论问题。 tty驱动概貌 tty架构如下所示: 如上图所示,用户空间主要是通过系统调用与tty core交互。...这里我们看到了熟悉cdev_init(),device_create()之类函数,这正是字符设备创建流程。因此,我们说串口驱动也是一个字符设备驱动。...因此,也可以说串口驱动是总线设备驱动模型。...在查找 tty 驱动程序时,需要调用 tty_lookup_driver 函数来查找对应 tty 驱动程序,并将找到 tty 驱动程序保存到 driver 变量中。

48450

驱动串口驱动分析(一)-软件架构

交互,shell与kernel交互 现代tty架构 串口驱动框架 串口驱动,内核启动时候,便初始化完成,后期应用层用到时候,访问设备节点便,获取串口设备 fd 句柄,然后设置相关参数(波特率...Linux Kernel UART 串口分为几层,tty 核心层,tty 线路规程,串行驱动核心层,以及下面对接具体芯片 ops: 整个流程走下来,有太多数据结构和 ops,要分析清楚整个流程...串口硬件驱动层 这个层次主要负责和具体串口硬件进行通信,实现了对硬件控制和访问。在内核中,串口驱动模块通常被实现为字符设备,通过字符设备接口与串口核心模块进行交互。...它通过注册到串口核心层,实现了对上层透明。 小结 tty core 和串口硬件驱动层是串口驱动框架核心部分。...在使用串口设备时,用户通常只需要与tty core模块进行交互,而不需要直接操作串口驱动模块和平台驱动模块。下一节我们将深入到串口驱动内部分析tty core框架体系结构。

41320

linux字符设备驱动基本框架

对于Linux驱动程序,需要遵循一定框架结构。嵌入式Linux学习其实并不难,只要深入理解Linux框架,写起来也可以得心应手。...2.驱动程序框架 在理解设备框架之前,首先要知道驱动程序主要做了以下几件事 1.将此内核驱动模块加载到内核中 2.从内核中将驱动模块卸载 3.声明遵循开源协议 2.1 Linux设备 Linux...一般来说对硬件IO操作可归结为字符设备。常见字符设备有led,蜂鸣器,串口,键盘等等。包括lcd与摄像头驱动都属于字符设备驱动。...2.2 驱动程序框架一个例子 对于一个驱动程序,如果想让内核知道,就准守一定框架,下面来看一下一个最简单驱动程序框架 #include #include <linux...3.字符设备驱动程序解析 字符设备在Linux驱动中起到十分关键作用。包括我们要实现LCD驱动以及CAM驱动都属于字符设备驱动。所以现在主要分析一下字符设备驱动程序框架

5.8K53

Linux系统驱动之Framebuffer驱动程序框架

资料下载 coding无法使用浏览器打开,必须用git工具下载: git clone https://e.coding.net/weidongshan/linux/doc_and_source_for_drivers.git...视频观看 百问网驱动大全 Framebuffer驱动程序框架 1....怎么编写字符设备驱动程序 驱动主设备号 构造file_operations结构体,填充open/read/write等成员函数 注册驱动:register_chrdev(major, name, &fops...Framebuffer驱动程序框架 分为上下两层: fbmem.c:承上启下 实现、注册file_operations结构体 把APP调用向下转发到具体硬件驱动程序 xxx_fb.c:硬件相关驱动程序...怎么编写Framebuffer驱动程序 核心: 分配fb_info framebuffer_alloc 设置fb_info var fbops 硬件相关操作 注册fb_info register_framebuffer

3.3K30

Linux内核LED设备驱动框架【转】

驱动框架概念 内核中驱动部分维护者针对每个种类驱动设计一套成熟、标准、典型驱动实现,并把不同厂家同类硬件驱动中相同部分抽出来自己实现好,再把不同部分留出接口给具体驱动开发工程师来实现,这就叫驱动框架...即标准化驱动实现,统一管理系统资源,维护系统稳定。 2. LED设备驱动框架概述 (1)LED设备共性: 1)LED亮与灭; 2)具有相应设备节点(设备文件)。...因此,Linux中LED驱动框架把所有LED设备共性给实现了,把不同地方留给驱动工程师去做。...接口 LED设备驱动框架驱动开发者提供在/sys/class/leds这个类下创建LED设备接口。...接口 LED设备驱动框架驱动开发者LED设备驱动卸载接口。

2.5K10

Android 串口调试_串口转usb需要驱动

——————————————– 1.串口linux驱动配置 (/dev/ttyHSL1) //msm8909.dtsi blsp1_uart2:serial@78b0000 { compatible...(实际中,dtsi导致启动不了,一种是语法错误导致进入fastboot,一种配置错误,莫名启动不了) 2.串口ttyHSL1C测试程序 (ndk编译,可执行文件推到system/bin/测试) #include...termios.h> #include #include #include #include #include <linux...(尽量还是分配大点吧,现在机器咱不缺那一点) 预期结果: 3.写app测试发送串口ttyHSL1发送数据 本来以为android里面要加so或者jni, 没想到别人已经弄好了,直接implement...github: GitHub – AIlll/AndroidSerialPort: Android Serial Port , 基本Android 串口通信库 就很简单了: 1. implementation

7.8K21

Linux驱动框架与杂项字符设备框架介绍

Linux驱动框架介绍 1.1 驱动框架分类 Linux驱动框架分为3大类型: 字符设备 --------- 块设备 存储设备 SD 硬盘 网络设备 网卡 无线 有线 字符设备和块设备都会生成设备节点在...、蜂鸣器 驱动都是使用字符设备框架编写 1.2 驱动框架代码模板 示例代码: #include #include static...杂项设备框架 2.1 框架结构介绍 杂项字符设备主设备号固定: 10 主设备号: 0 ~ 255 次设备号范围: 0 ~ 255 Linux内核寻找驱动节点是依靠设备号寻找。...设备号: 主设备号(区分类型)、次设备号(区分同类型具体设备) 主设备号: 10 ,240 下面是查看串口设备节点、MMC设备节点详细信息: 下面是杂项设备模型图: Linux下把无法分类一些设备都归类为杂项设备...文件操作集合模型图: 2.2 蜂鸣器驱动示例代码 这是蜂鸣器驱动层示例代码,使用杂项设备框架编写: #include #include <linux/module.h

3.1K30

LinuxI2C驱动框架分析

Linux总线设备框架工作原理 如果想要弄清楚I2C驱动框架,必须深刻理解Linux总线设备框架。之所以会形成这样框架,很重要原因是为了代码复用性。...因为驱动和设备关系是一对多,对于相同类型不同设备,可共用同一套驱动程序接口。为了提高驱动可移植性,Linux抽象出一套管理资源函数。...3.Linux下I2C驱动程序体系结构 ---- 对于LinuxI2C驱动,其体系结构组成主要分为三个部分 (1)I2C核心:I2C核心提供了I2C总线驱动和设备驱动注册,注销方法,I2C通信方法...这也是本文重点。 根据前面的总线设备驱动框架,有driver那么肯定会有device。...到这里,一个I2C完整传输流程就完成了。 5.总结 ---- 对于I2C完整传输协议,最重要是弄清楚总线驱动程序框架,因为I2C也是属于总线框架

4.6K11

moxa串口服务器配置说明(moxa串口驱动)

串口服务器简介 串口服务器提供串口转网络功能,能够将RS-232/485/422串口转换成TCP/IP网络接口,实现RS-232/485/422串口与TCP/IP网络接口数据双向透明传输。...使得串口设备能够立即具备TCP/IP网络接口功能,连接网络进行数据通信,极大扩展串口设备通信距离。...该模式适用于将两个串口设备之间总线连接改造为TCP/IP网络连接。 2.使用虚拟串口通讯模式:该模式下,一个或者多个转换器与一台电脑建立连接,支持数据双向透明传输。...由电脑上虚拟串口软件管理下面的转换器,可以实现一个虚拟串口对应多个转换器,N个虚拟串口对应M个转换器(N《=M)。该模式适用于串口设备由电脑控制485总线或者232设备连接。...moxa串口服务器通讯设置参数 1.配置AP 步骤一:连接网线,如果遇到无法连接本地网络就先查看宽带驱动有没有装好,另外换一根网线试试。

6.4K10

Linux 串口基本用法

查看Linux本机串口: 1、查看串口是否可用 如果需要查看这个串口设备输出: cat ttyUSB0 如果需要对这个设备输入: echo yaoxu > ttyUSB0 常用调试工具有: minicom...cutecom Linux系统可视化串口应用软件,使用上与Windows系统串口调试工具。 picocom 效果上类似 minicom 精简版,设置比较简单,还可以有背景颜色。...; 3、查看串口驱动 cat/proc/tty/drivers/serial 4、查看串口设备 dmesg | grep tty* 5、查一下板子上串口有没有设备 grep tty/proc/devices...PC上串口一般是ttyS,板子上Linux串口一般叫做ttySAC; 串口权限问题 临时调试解决 在使用串口进行通信时,经常需要使用指令来赋予用户读写权限 $ sudo chmod 777 /dev.../etc/passwd 是一个文本文件,其中包含了登录 Linux 系统所必需每个用户信息。

9.9K41

如果串口驱动有问题,怎么调

有很多人问我,为什么不录串口驱动? 实际上串口裸板很简单,但是串口驱动还是挺复杂; 另外基本上所有芯片内核源码中基本上都会有串口驱动。...所以我认为对于串口,我们只要会APP编程即可,不需要去写它驱动程序。 现在有2个问题: 1.怎么写串口APP? 2.如果串口驱动有问题,怎么调? 第1个问题挺简单,百度搜搜就可以找到源码。...然后用镊子短接串口TXD、RXD引脚,即可看到这个程序不断打印0x5a:这表明测试成功 第2个问题:总有一些不太完善驱动程序需要我们稍微调整。...比如jz2440用linux 3.4.2内核,它/dev/ttySAC2无法使用。...我们要把它改为一般串口

1.4K20

嵌入式Linux驱动开发——字符设备驱动框架入门

1 提到了关于Linux设备驱动,那么在Linux中I/O设备可以分为两类:块设备和字符设备。...那么,首先,认识一下字符设备驱动框架。 对于上层应用开发人员来说,没有必要了解具体硬件是如何组织在一起并工作。...在这里毕竟不是为了分析框架具体实现原理,以后有机会慢慢展开,在此主要为了讨论,如何快速使用这些框架来写出字符设备驱动程序。...其实编写字符驱动步骤并不复杂,我们首先将框架建立起来,建立框架大致我认为可以分为以下两部(其中细节问题后续展开): 编写驱动入口和出口函数,此函数会在驱动模块加载和卸载时调用 编写具体read...(非必须) 我们先看看一个简单驱动程序框架: #include //定义了module_init #include //最基本头文件

3.1K20
领券