1. 1 简介

HD-AM335X-IOT评估板采用TI AM3352处理器, 800MHz主频,集成6路UART ( 提供RS-485驱动 ),支持GPS、GPRS、传感器、采集模块等功能扩展。2路CAN总线接口,实现车辆、工业现场控制数据的可靠传输。1路百兆网接口、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

奇偶校验错误

出现次数较多,说明配置有误;

出现次数较少,说明系统硬件可能引入干扰

  1. 检查串口配置;
  2. 检查串口硬件接线;

frame

帧错误

收到的数据异常

  1. 检查串口波特率配置等;
  2. 检查硬件接线;

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串口技术分析相关推荐

  1. 20145328 《网络对抗技术》恶意代码分析

    20145328 <网络对抗技术>恶意代码分析 ------看到这句话说明还没写完-------- 实践内容: 使用schtasks指令监控系统运行 使用sysmon工具监控系统运行 使用 ...

  2. 深入掌握Java技术 EJB调用原理分析

      深入掌握Java技术 EJB调用原理分析     一个远程对象至少要包括4个class文件:远程对象:远程对象的接口:实现远程接口的对象的stub:对象的skeleton这4个class文件. 在 ...

  3. C# vs. C++/C : 从技术管理角度的分析(附: .Net 在桌面领域的潜敌分析)

    产品是由一系列属性组成,如,价格,性能,可移动性等.对于程序开发语言来说,就是性能.开发速度.可维护性等.对于产品的某个属性,并不是这个属性越高越好,只要足够高就行了.绝大多数人绝大多数场合,对产品的 ...

  4. 视频直播中用户连麦技术模型与特点分析

    本文章来源与网络(视频直播中用户连麦技术模型与特点分析 - 老头慢慢飞 - 博客园) 随着Web与移动视频直播应用的深度发展,有用户参与互动的视频直播技术被越来越多平台所支持,原来的RTMP流媒体方案 ...

  5. dll oem证书导入工具_技术干货 | 恶意代码分析之反射型DLL注入

    欢迎各位添加微信号:qinchang_198231   加入安全+ 交流群 和大佬们一起交流安全技术 01 技术概要 这是一种允许攻击者从内存而非磁盘向指定进程注入DLL的技术,该技术比常规的DLL注 ...

  6. 纵观计算机网络发展历程,人工智能在计算机网络技术中的应用分析

    人工智能在计算机网络技术中的应用分析 罗思浩 宁波工程学院 315020 摘要:人工智能技术随着科学技术的发展,目前已相当成熟,其拥有众多优势,可对计算机技术存在的诸多问题予以解决.在此背景之下,本文 ...

  7. 计算机关键性检测的部件是,试论计算机硬件关键技术的若干问题分析

    试论计算机硬件关键技术的若干问题分析 1 计算机硬件系统的组成 1.1 控制设备 在硬件的组成部分中,控制设备占据着较为核心的位置,其主要功能在于根据所接收的命令进行一定的判断,再将需要传送的信息输入 ...

  8. java holder详解,Java基础系列18:Holder技术的实现原理分析

    一 简介 (1)Java中的Holder是什么? 我这里说的Holder即这个类:javax.xml.ws.Holder 这个类属于JAX-WS 2.0规范中的一个类.它的作用是为不可变的对象引用提供 ...

  9. 案例分享 | 某券商利用AI技术进行告警关联分析(上)

    本内容来自公众号"布博士"------(擎创科技资深产品专家) 背景: 作为大型券商企业之一,某券商对深入数字化转型,以及对应用.网络.主机.操作系统.中间件.用户使用体验等的全面 ...

最新文章

  1. 自然语言处理深度学习篇-BiLSTM文本挖掘实践 命名实体识别
  2. 【Qt】Qt Creator中文输入设置
  3. 可扩展性的builder模式的构建方法
  4. 禁用引导模态区域之外的单击以关闭模态
  5. java泰坦宙斯之战程序_泰坦 - 宙斯之战 相关知识点: 1. 使用随机类 2. 类的成员变量 3. 类的成员方法 4. 带参构造器_电商题库2017(学测)答案_学小易找答案...
  6. SpringBoot+Vue+HIKVSION实现摄像头多选并多窗口预览(插件版)
  7. matlab图像处理——分水岭法
  8. 登录form php一个页面跳转页面,Extjs4中表单登录功能、登录成功跳转页面的代码...
  9. 我新买的红米手机,新浪和360浏览器都能进,也能看电视,就是不能上手机QQ和微信...
  10. 客户端页面不更新CSS样式或JS脚本的方法 (2018-08-17 17:33)
  11. [Windows驱动开发](一)序言
  12. ubuntu升级python_Ubuntu 升级python3为更高版本【已实测】
  13. 信号量sem_init,sem_wait,sem_post
  14. 计算机专业及软件职称,软件工程师职称评定的级别及标准是什么?
  15. 为了写好代码,你坚持了哪些好习惯?
  16. ZooKeeper session has been expired
  17. 机考[51 - 60]
  18. 看完 2021 CSS 年度报告,才知道 CSS 发展这么快
  19. PHP极其强大的图片处理库Grafika详细教程(1):图像基本处理
  20. 搞笑生活短视频为何涨粉飞快?有三个原因,抓住用户心理是关键

热门文章

  1. 3DTouch 基本使用
  2. 【硬件设计】布线篇-----超实用的PCB布局布线规则,助你最美的、最优的PCB板子
  3. 域环境的Kerbers协议(渗透方向)
  4. 驭势科技出席2023智慧机坪新技术交流研讨会,以无人驾驶加速共建智慧机场新生态...
  5. 闪迪u盘适合装linux,3分钟轻体验告诉你这款闪迪U盘值不值得买
  6. LeetCode题库第67题二进制求和
  7. linux内核特征,Linux内核的特征
  8. django restframework choice 自定义输出数据
  9. java+selenium+new——拖曳页面元素
  10. python回声程序echo 一行代码_回声状态网络法echo state network代码(简单)