转自http://biancheng.dnbcw.info/linux/336240.html

Linux OS的设备驱动有相当经典的抽象思想以及分层思想。与通信世界里面的思想相一致。

一、在Linux os中,一个设备驱动文件是对一个实际设备的抽象,不管这个设备是电脑的外设,还是某段虚拟内存读写设备。在Linux中,打开一个设备驱动文件意味着打开了这个设备。

在TTY设备当中亦是如此(在理解线路规程这一个内容是,我没有把握这个原则)。以下我把LDD3中的内容摘之其中(粗体表示):

tty 驱动从未看见 tty 线路规程. 这个驱动不能直接和线路规程通讯, 它甚至也不知道它存在. 驱动的工作是以硬件能够理解的方式格式化发送给它的数据, 并且从硬件接收数据. tty 线路规程的工作是以特殊的方式格式化从一个用户或者硬件收到的数据. 这种格式化常常采用一个协议转换的形式, 例如 PPP 和 Bluetooth.

我想再重复2点:

  • 1、驱动的作用是接受硬件数据活着发送硬件能够理解的数据至硬件设备(如8N1),并且承担了配置硬件寄存器的任务。
  • 2、线路规程用于格式化在驱动层以上的数据。格式化的作用是让整个设备具有额外的功能。如PPP作为线路规程的时候,将具有鉴权、压缩等功能。当然这里说明一点最最总要的一点:我说上面一句话的时候,所处在的模型是PC通过串口接入网络。因为PPP在OSI模型中作为链路层协议的时候,物理层可以用RS232。一般的串口通信(包括AT命令的发送,单片机裸程序)都不需要PPP协议控制,貌似需要的是Z-MODE等类似流控制(我用过)。

二、关于PPP。

今天在实验室高人的指点下,理解了PPP在Linux下的工作原理。

PPP协议具有鉴权、压缩、纠错等功能。但是这些都是PPP的扩展功能,基本的PPP功能只有纠错、成帧等相当简单的功能。Linux在用户空间创建了守护进程PPPD用于扩展PPP协议当中的压缩、鉴权等扩展功能,而内核模块当中的设备驱动文件/dev/ppp实现了PPP协议中的最基本功能。依然PPP协议处于数据链路层。可以这么说Socket用于收集用户空间的数据加工层TCP/IP数据发给链路层PPP协议发送,而用那总物理层设备,都可以。

[uart]理解线路规程的作用的更多相关文章

  1. [tty与uart]理解线路规程的作用

    转自:http://biancheng.dnbcw.info/linux/336240.html Linux OS的设备驱动有相当经典的抽象思想以及分层思想.与通信世界里面的思想相一致. 一.在Lin ...

  2. Android(Linux)线路规程的使用

        一般来说,车载导航主机都需要外接若干个UART的外设,如支持HFP的蓝牙模块.与原车通信的CAN解码盒模块.u-blox的GPS模块和DVD机芯等.早年使用Telechips TCC8902+ ...

  3. Java并发编程学习笔记 深入理解volatile关键字的作用

    引言:以前只是看过介绍volatile的文章,对其的理解也只是停留在理论的层面上,由于最近在项目当中用到了关于并发方面的技术,所以下定决心深入研究一下java并发方面的知识.网上关于volatile的 ...

  4. 理解Object.defineProperty的作用

    对象是由多个名/值对组成的无序的集合.对象中每个属性对应任意类型的值.定义对象可以使用构造函数或字面量的形式: var obj = new Object; //obj = {} obj.name = ...

  5. Spring理解IOC,DI,AOP作用,概念,理解。

    IOC控制反转:创建实例对象的控制权从代码转换到Spring容器.实际就是在xml中配置.配置对象 实例化对象时,进行强转为自定义类型.默认返回类型是Object强类型. ApplicationCon ...

  6. [转] 理解Object.defineProperty的作用

    对象是由多个名/值对组成的无序的集合.对象中每个属性对应任意类型的值.定义对象可以使用构造函数或字面量的形式: var obj = new Object; //obj = {} obj.name = ...

  7. 《转》理解Object.defineProperty的作用

    对象是由多个名/值对组成的无序的集合.对象中每个属性对应任意类型的值.定义对象可以使用构造函数或字面量的形式: var obj = new Object; //obj = {} obj.name = ...

  8. C#进阶——从应用上理解异步编程的作用(async / await)

    欢迎来到学习摆脱又加深内卷篇 下面是学习异步编程的应用 1.首先,我们建一个winfrom的项目,界面如下: 2.然后先写一个耗时函数: /// <summary> /// 耗时工作 // ...

  9. 简单理解Hash算法的作用

    什么是Hash Hash算法,简称散列算法,也成哈希算法(英译),是将一个大文件映射成一个小串字符.与指纹一样,就是以较短的信息来保证文件的唯一性的标志,这种标志与文件的每一个字节都相关,而且难以找到 ...

随机推荐

  1. C-从源文件到可执行文件的详细编译链接过程

    一直用windows一键搞定, 没有去了解详细的编译链接过程, 今天看了一篇文章, 顺便实验和记录在Linux下逐步生成的步骤. 预处理: 执行#include, #define, #if, #ifd ...

  2. Mac 通过活动监视器关闭卡死进程

    前言: 心好累,Lantern太不省事了 之前装过之后,就设定了开启自启动,搞得我上网都受影响(这玩意,qq没事,但是网易云之类的一些软件上网都不行了...就是这玩意搞的鬼) 没办法,点击关闭吧... ...

  3. jsp引入js文件

    转自:http://blog.csdn.net/ppzhangj/article/details/7859628 1)引入的js文件出错, 检查方法:将Js的内容写在当前的页面的<script& ...

  4. Python练习笔记——编写一个装饰器,测算出一个函数的运行时间

    import time def time_value(dec): def wrapper(*args,**kwargs): start_time = time.time() get_str = dec ...

  5. shell学习四十八天----文件校验和匹配

    文件校验和匹配 要是你怀疑可能有非常多文件具有同样的内文,而是用cmp或diff进行比較全部横队的比較,导致所花费的时间会随着文件数目增长成次方的增长. 这是能够使用file checksum(文件校 ...

  6. Xcode6:解决_NSURLAuthenticationMethodServerTrust异常问题

    一.在使用Xcode6进行执行项目时.发现程序直接Crash了,控制台信息例如以下: dyld: Symbol not found: _NSURLAuthenticationMethodServerT ...

  7. Linux操作系统CentOS7.2发行版本的安装与配置(安装是选择服务器类型)

    原文地址:http://1130739.blog.51cto.com/1120739/1738791 由于CentOS 7出来不久,对于这个版本的系统安装与配置的教程较少,今天就索性介绍一下CentO ...

  8. STORM在线业务实践-集群空闲CPU飙高问题排查(转)

    最近将公司的在线业务迁移到Storm集群上,上线后遇到低峰期CPU耗费严重的情况.在解决问题的过程中深入了解了storm的内部实现原理,并且解决了一个storm0.9-0.10版本一直存在的严重bug ...

  9. [na]锐起无盘机并发部署多台windows

    小时候很好奇这个技术,也并无卵,只是为了遂儿时愿, 用到锐起无盘部署,支持win7哦: 视频教程: 拓展:网吧电脑为什么没有硬盘? 网吧电脑没有硬盘是怎么运行的? 所需软件: https://yunp ...

  10. winphone开发环境配置

    环境:操作系统win7 要进行winphone开发,必须进行一些环境的配置.下面是我的一些配置总结. 1.操作系统 winphone开发仅仅能在win8下开发.所以首先得安装win8.能够使用nt6 ...