【应用技术】AM335x串口技术分析
1 简介
HD-AM335X-IOT评估板采用TI AM3352处理器, 800MHz主频,集成6路UART ( 提供RS-485驱动 ),支持GPS、GPRS、传感器、采集模块等功能扩展。2路CAN总线接口,实现车辆、工业现场控制数据的可靠传输。1路百兆网接口、1路千兆网接口,满足电网、军工等特殊环境内外网隔离与双网冗余的应用需求,同时可通过光纤交换机实现数据高速上传。
2 串口简介
AM335x共6路原生串口,所有原生串口的相关信息如表1.1所示。
表1.1 串口系统信息
设备节点 |
功能 |
/dev/ttyO0 |
调试串口 |
/dev/ttyO1 |
UART1 |
/dev/ttyO2 |
UART2 |
/dev/ttyO3 |
UART3 |
/dev/ttyO4 |
UART4 |
/dev/ttyO5 |
UART5 |
/proc/tty/driver/OMAP_SERIAL |
串口状态记录信息 |
/proc/tty/driver/目录内的各个文件是Linux系统记录串口各类事件的接口文件,内部记录该驱动的基本信息,如中断号、发送字节数、接收字节数、异常状态触发次数等,用户根据针对这些信息可反向分析异常原因,从而确认问题解决思路,文件内容如图1.1所示。
图1.1 OMAP_SERIAL文件内容
所谓Linux驱动,实际是对硬件寄存器的读写操作封装,将难以理解的硬件操作封装成统一的便于管理的接口函数。AM335x的串口状态寄存器如下所示。
RXFIFOSTS:接收缓冲区状态位;
TXSRE:记录发送保持和移位寄存器是否为空;
TXFIFOE:记录发送保持寄存器是否为空;
RXBI:记录接收缓冲区是否有Break触发;
RXFE:记录接收缓冲区是否有帧错误;
RXPE:记录接收缓冲区是否有奇偶校验错误;
RXOE:记录接收缓冲区是否有溢出错误;
RXFIFOE:记录接收缓冲区是否有数据;
AM335x的原生串口驱动为kernel-source/drivers/tty/serial/omap-serial.c,驱动代码内通过查找UART模块的LSR(Uart Line Status)寄存器,将所有状态信息记录在up->port.icount内,如图 1.2所示。例如rx记录接收字节数,tx记录发送字节数,break记录UART_LSR_BI位触发次数,parity记录奇偶校验错误,frame记录帧错误触发次数,overrun记录缓冲区溢出错误,等。然后系统把这些错误计数反馈到对应硬件平台的/proc/tty/driver/目录内对应的驱动文件上。
图 1.2 串口状态记录接口
在现场使用环境下,当出现串口报文异常时,有经验的工程师可直接通过此文件分析各类错误。常见的错误关系与应对方法如下所示。
异常计数 |
原因 |
可能解决思路 |
parity 奇偶校验错误 |
出现次数较多,说明配置有误; 出现次数较少,说明系统硬件可能引入干扰 |
|
frame 帧错误 |
收到的数据异常 |
|
brk 打断触发 |
串口缓冲区内的数据出现被打断的情况,详细可查看https://blog.csdn.net/Colorful_lights/article/details/80911225 |
|
overrun 溢出错误 |
数据进入FIFO后,有两种情况会触发系统进行读FIFO操作。1)在一定时间内没有新的数据进入则触发上层应用读取数据(保证时效性)。2)FIFO内数据持续输入,当数据量到达一定而未超过缓冲区大小时,则触发上层应用读取数据。 根据缓冲区的触发方式,溢出错误其实就是,通知上层应用期间,数据还在不断进来而应用没及时读完导致的。 |
由于硬件的缓冲区是有限的,所以可以从加快读取数据的思路来解决。例如: 1,串口读取操作采用阻塞方式,使用select编程; 2,设置硬件寄存器的FIFO触发标准线,如原本是32,改为8,这样当FIFO接受到8个字节时,就立即触发应用读取。 |
【应用技术】AM335x串口技术分析相关推荐
- 20145328 《网络对抗技术》恶意代码分析
20145328 <网络对抗技术>恶意代码分析 ------看到这句话说明还没写完-------- 实践内容: 使用schtasks指令监控系统运行 使用sysmon工具监控系统运行 使用 ...
- 深入掌握Java技术 EJB调用原理分析
深入掌握Java技术 EJB调用原理分析 一个远程对象至少要包括4个class文件:远程对象:远程对象的接口:实现远程接口的对象的stub:对象的skeleton这4个class文件. 在 ...
- C# vs. C++/C : 从技术管理角度的分析(附: .Net 在桌面领域的潜敌分析)
产品是由一系列属性组成,如,价格,性能,可移动性等.对于程序开发语言来说,就是性能.开发速度.可维护性等.对于产品的某个属性,并不是这个属性越高越好,只要足够高就行了.绝大多数人绝大多数场合,对产品的 ...
- 视频直播中用户连麦技术模型与特点分析
本文章来源与网络(视频直播中用户连麦技术模型与特点分析 - 老头慢慢飞 - 博客园) 随着Web与移动视频直播应用的深度发展,有用户参与互动的视频直播技术被越来越多平台所支持,原来的RTMP流媒体方案 ...
- dll oem证书导入工具_技术干货 | 恶意代码分析之反射型DLL注入
欢迎各位添加微信号:qinchang_198231 加入安全+ 交流群 和大佬们一起交流安全技术 01 技术概要 这是一种允许攻击者从内存而非磁盘向指定进程注入DLL的技术,该技术比常规的DLL注 ...
- 纵观计算机网络发展历程,人工智能在计算机网络技术中的应用分析
人工智能在计算机网络技术中的应用分析 罗思浩 宁波工程学院 315020 摘要:人工智能技术随着科学技术的发展,目前已相当成熟,其拥有众多优势,可对计算机技术存在的诸多问题予以解决.在此背景之下,本文 ...
- 计算机关键性检测的部件是,试论计算机硬件关键技术的若干问题分析
试论计算机硬件关键技术的若干问题分析 1 计算机硬件系统的组成 1.1 控制设备 在硬件的组成部分中,控制设备占据着较为核心的位置,其主要功能在于根据所接收的命令进行一定的判断,再将需要传送的信息输入 ...
- java holder详解,Java基础系列18:Holder技术的实现原理分析
一 简介 (1)Java中的Holder是什么? 我这里说的Holder即这个类:javax.xml.ws.Holder 这个类属于JAX-WS 2.0规范中的一个类.它的作用是为不可变的对象引用提供 ...
- 案例分享 | 某券商利用AI技术进行告警关联分析(上)
本内容来自公众号"布博士"------(擎创科技资深产品专家) 背景: 作为大型券商企业之一,某券商对深入数字化转型,以及对应用.网络.主机.操作系统.中间件.用户使用体验等的全面 ...
最新文章
- 自然语言处理深度学习篇-BiLSTM文本挖掘实践 命名实体识别
- 【Qt】Qt Creator中文输入设置
- 可扩展性的builder模式的构建方法
- 禁用引导模态区域之外的单击以关闭模态
- java泰坦宙斯之战程序_泰坦 - 宙斯之战 相关知识点: 1. 使用随机类 2. 类的成员变量 3. 类的成员方法 4. 带参构造器_电商题库2017(学测)答案_学小易找答案...
- SpringBoot+Vue+HIKVSION实现摄像头多选并多窗口预览(插件版)
- matlab图像处理——分水岭法
- 登录form php一个页面跳转页面,Extjs4中表单登录功能、登录成功跳转页面的代码...
- 我新买的红米手机,新浪和360浏览器都能进,也能看电视,就是不能上手机QQ和微信...
- 客户端页面不更新CSS样式或JS脚本的方法 (2018-08-17 17:33)
- [Windows驱动开发](一)序言
- ubuntu升级python_Ubuntu 升级python3为更高版本【已实测】
- 信号量sem_init,sem_wait,sem_post
- 计算机专业及软件职称,软件工程师职称评定的级别及标准是什么?
- 为了写好代码,你坚持了哪些好习惯?
- ZooKeeper session has been expired
- 机考[51 - 60]
- 看完 2021 CSS 年度报告,才知道 CSS 发展这么快
- PHP极其强大的图片处理库Grafika详细教程(1):图像基本处理
- 搞笑生活短视频为何涨粉飞快?有三个原因,抓住用户心理是关键
热门文章
- 3DTouch 基本使用
- 【硬件设计】布线篇-----超实用的PCB布局布线规则,助你最美的、最优的PCB板子
- 域环境的Kerbers协议(渗透方向)
- 驭势科技出席2023智慧机坪新技术交流研讨会,以无人驾驶加速共建智慧机场新生态...
- 闪迪u盘适合装linux,3分钟轻体验告诉你这款闪迪U盘值不值得买
- LeetCode题库第67题二进制求和
- linux内核特征,Linux内核的特征
- django restframework choice 自定义输出数据
- java+selenium+new——拖曳页面元素
- python回声程序echo 一行代码_回声状态网络法echo state network代码(简单)