linux串口数据丢失--中断绑定CPU优化

news2024/11/22 9:14:55

问题现象

机器在户外测试时, 出现 轮速记 丢失的现象

  • 小概率出现 50Hz丢失1~2帧
  • 极低概率出现 0.1~0.3秒内没有底盘数据
    RK3588s开发版
    串口示意
    此问题导致slam定位漂, 需要优化处理.

验证与测试

问题1: 底盘串口 一个数据帧(head–data–crc) 被分片2~3报文
解决方法: 检测到head之后, 解析data_len, 读取剩余的字节

问题2: 极小概率, 帧head 不在头部, 即buf[0], buf[1]不是head
解决方法: 内存搜索head, 若匹配到
1.使用memmove移到buf[0]
2.使用p_head 指向buf中的head

验证1: 压力测试

开发板运行stress --cpu 6 , 模拟cpu高负载场景
-->结果: 数据未丢失

验证2: 回环测试

1. PC模拟串口数据, 给开发板发串口数据.
2. 开发板运行stress  --cpu 6, 给cpu增加负载.
-->结果: 数据未丢失

验证3: 怀疑串口线过长

1.怀疑串口线过长, 硬件改线改短.  --无优化效果
2.更改串口通信的波特率bps. --无优化效果

验证4: 怀疑MCU没有发送数据

发送定位,感知信息给MCU做导航处理, 怀疑处理不及时导致丢包.

  1. 验证方法: MCU上报数据协议添加: 时间戳, 序列号.
    <1 通过序列号调试发现, 确实丢失报文, 丢失的序列号, 时间戳与数量对的上.
  2. 硬件信号上的确认
    <1 逻辑分析仪器, 捕捉信号分析. --未进行
    <2 PC接入串口, 看是否有数据丢失. --未进行

小结

  1. 给开发板CPU加负载, 测试没有复现问题
    1. 排除硬件接线问题. -->验证2(回环测试) + 验证3(串口线改短)排除.
    2. 怀疑MCU处理速度慢, 来不及上报数据.
      需要进行
      1.逻辑逻辑分析仪 捕捉信号, 解析判断
      2.PC串口接RX, 尝试解析串口数据, 从第3方外设确认是否丢包

中断绑定CPU优化方法

柳暗花明的提示点1: 压力测试方法
1. 同事进行拷机测试, 尝试把SOC的温度, 提高到95度, 进行7x24小时老化, 稳定性测试.
2. 得知只进行CPU压力测试, 无法把SOC温度提到最高, 给了我一个cpu+npu+gpu的压力测试工具, 极限压榨SOC.

使用压力测试工具
–> 测试结果: 串口帧率从50Hz降到30Hz.

默认压力测试
50Hz30Hz

柳暗花明的提示点2: 绑定CPU核
1. 同事负责深度相机数据上报, 说绑定CPU核, 可以稳定帧率
绑定CPU亲和性API

#define _GNU_SOURCE
#include <sched.h>

    cpu_set_t mask;
    CPU_ZERO(&mask);
    CPU_SET(3, &mask);
    if (sched_setaffinity(0, sizeof(cpu_set_t), &mask) == -1){
        return 0;
    }

测试:
压力测试工具 + 绑定CPU核
测试结果如图

默认压力测试压力测试+绑定CPU核心
50Hz30Hz45Hz

神器的发现点

调试时, top查看负载时, 发现 0.3 si

  • hi 表示硬件中断
  • si 表示软件中断
    查看中断使用情况
    cat /proc/interrupts
    在这里插入图片描述

可以看到, irq中断默认在cpu0上触发.
尝试 将 irq中断绑定到指定的cpu核心上.
串口设备为ttyS0, 查看ttyS0的中断号
cat /proc/interrupts| grep tty
在这里插入图片描述

ttyS0的中断号为28, 绑定中断号28到cpu2
sudo echo 0x4 > /proc/irq/28/smp_affinity
确认修改是否成功
cat /proc/irq/28/smp_affinity

04

运行程序, 查看中断触发情况
cat /proc/interrupts| grep -E "tty|CPU"
在这里插入图片描述
可以看到, 中断号irq28在cpu2上触发
测试结果

默认压力测试压力测试+绑定CPU核心压力测试+irq中断绑定CPU
50Hz30Hz45Hz46.5

方案对比测试

通过上面分析验证测试, 找到如下的优化方案

  1. 增加程序的优先级
  2. 进程绑定CPU核
  3. irq 中断绑定CPU核
    增加一个对比测试
  4. 进程绑定CPU + 中断绑定CPU核

开发有多个外设, 选取两个外设做压力测试.
ttyS0 底盘串口, ttyS3 IMU串口, 测试结果如下
在这里插入图片描述

测试结论:
中断irq绑定CPU >= 进程绑定CPU >= 中断绑定CPU+进程绑定CPU

总结

  1. 怀疑串口数据丢失, 应该使用 逻辑分析仪, 第三方串口工具接入RX 验证数据是否丢失.
  2. 高CPU负载不能复现问题, 可以从io负载, irq中断 使用等情况分析.

参考链接

中断分配
https://developer.aliyun.com/article/64868
https://blog.csdn.net/ysdaniel/article/details/8779084

修改程序优先级: nice, setpriority
https://www.cnblogs.com/zhangxuan/p/6427533.html

进程绑定到CPU核, 亲和性绑定
https://blog.csdn.net/Z_Stand/article/details/107883684
绑定CPU实例代码

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1306694.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2023全国大学生数据分析大赛A题完整论文教学

大家好呀&#xff0c;从发布赛题一直到现在&#xff0c;总算完成了全国大学生数据分析大赛A题某电商平台用户行为分析与挖掘完整的成品论文。 本论文可以保证原创&#xff0c;保证高质量。绝不是随便引用一大堆模型和代码复制粘贴进来完全没有应用糊弄人的垃圾半成品论文。 实…

bugku -- 网站被黑--本地管理员

dirsearch 或者御剑扫目录 扫出来有个登录页面 然后bp抓包爆破密码 扫出来密码是heck登录就行了 构造x-forwarded-for:127.0.0.1 本地登录&#xff1a; 爆破账号 密码是text123 下面的base64解码可以知道

《地理信息系统原理》笔记/期末复习资料(11. GIS的输出与地图可视化)

目录 11. GIS的输出与地图可视化 11.1. GIS的输出 11.1.1. 输出方式 11.1.2. GIS的图形输出设备 11.2. 地图符号 11.2.1. 地图符号的实质 11.2.2. 地图符号的分类 11.2.3. 地图符号的设计要求 11.3. 专题信息表达 11.3.1. 专题地图的基本概念 11.3.2. 专题地图的表示…

漏洞补丁存在性检测技术洞察

1、 漏洞补丁存在性检测技术是什么&#xff1f; 漏洞补丁存在性检测技术通俗的理解就是检测目标对象中是否包含修复特定已知漏洞的补丁代码&#xff0c;目标检测对象可能是源码&#xff0c;也能是二进制文件。 2、 漏洞补丁存在性检测技术业务背景 补丁检测这个问题背景是产品…

SSL证书验证域名所有权

SSL证书申请时需要进行验证&#xff0c;这是因为SSL证书的主要目的是为了确保网络通信的安全性和数据的完整性。通过验证&#xff0c;证书颁发机构&#xff08;CA&#xff09;可以确认申请者对特定域名或资源的所有权&#xff0c;并确保他们有权使用该证书来加密和保护用户与网…

vue3 实现日期格式化

vue3 实现日期格式化 在标签内添加 value-format"YYYY-MM-DD" <el-form-item label"注册时间:"><el-date-picker v-model"tableForm.date" type"date" value-format"YYYY-MM-DD" placeholder"选择注册时间&…

探究Spring Boot 中实现跨域的几种方式

文章目录 前言1. 使用CrossOrigin注解2. 使用WebMvcConfigurer配置3. 使用Filter配置4. 使用全局配置结束语 前言 在现代Web应用中&#xff0c;由于安全性和隐私的考虑&#xff0c;浏览器限制了从一个域向另一个域发起的跨域HTTP请求。解决这个问题的一种常见方式是实现跨域资…

MyBatis框架知识点①

MyBatis 1.MyBatis的特点2.搭建MyBatis项目依赖文件配置编写MyBatis中全局配置文件数据库SQL编写实体类编写映射文件加载映射文件log4j配置编写测试程序 3.增删改查的基本操作查询操作新增操作修改删除操作 4. Mapper代理方式Mybatis 工具类实体类Mapper接口mapper文件加载mapp…

一览科技创始人罗江春:AI涌现,文娱迎来黄金十年

编者荐语&#xff1a; 一览科技创始人兼CEO罗江春先生在11月28日的极新AIGC峰会上发表了以“AI涌现&#xff0c;文娱迎来黄金十年”为题的演讲&#xff0c;关于AIGC对文娱行业的加持以及AI创业公司的方向和基本点&#xff0c;罗江春先生给出了未来的方向。 以下文章来源于一览…

广度(宽度)优先搜素——层层递进

分析算法及题目 完整代码实现 广度优先搜索&#xff08;Breadth-First Search&#xff0c;BFS&#xff09;是一种图和树的遍历算法&#xff0c;与深度优先搜索相对应。BFS从起始节点开始&#xff0c;首先访问起始节点&#xff0c;然后逐层地访问其邻居节点&#xff0c;直到达到…

OpenHarmony应用开发——在标准OpenHarmony上运行应用-标准OpenHarmony工程设置

一、前言 前面我们创建了一个工程并使其在HarmonyOS系统上运行&#xff0c;本文我们来阐述一下如何在标准的OpenHarmony开发板或系统上运行。 二、详细步骤 1.下载并配置OpenHarmony SDK 首先&#xff0c;打开Settings. 将SDK选择为OpenHarmony&#xff0c;第一次选择路径应该…

想要更稳定的数据传输?试试这些Aspera替代方案

在现代数字化时代&#xff0c;数据传输变得越来越重要。由于数据文件的规模、数量和复杂性的增加&#xff0c;以及对数据安全和机密性的需求不断提高&#xff0c;传统的FTP、SCP和HTTP等协议已无法满足现代数据传输的需求。因此&#xff0c;许多组织和企业转向使用Aspera协议进…

外发加工ERP软件功能有哪些?外发加工ERP系统哪家好

不同的外发加工业务有不同的业务流程和管理策略与方式&#xff0c;在当前这个激烈竞争的时代&#xff0c;如何降低经营成本&#xff0c;打通各种信息流&#xff0c;优化资源配置和降低成本&#xff0c;提升生产过程联动效率&#xff0c;加强企业核心竞争力管理等&#xff0c;是…

轻松搭建FPGA开发环境:第二课——UE 安装与配置说明

工欲善其事必先利其器&#xff0c;很多人想从事FPGA的开发&#xff0c;但是不知道如何下手。既要装这个软件&#xff0c;又要装那个软件&#xff0c;还要编译仿真库&#xff0c;网上的教程一大堆&#xff0c;不知道到底应该听谁的。所以很多人还没开始就被繁琐的开发环境搭建吓…

基于ssm+jsp的实验室考勤管理系统网页的设计与实现论文

摘 要 现代经济快节奏发展以及不断完善升级的信息化技术&#xff0c;让传统数据信息的管理升级为软件存储&#xff0c;归纳&#xff0c;集中处理数据信息的管理方式。本实验室考勤管理系统就是在这样的大环境下诞生&#xff0c;其可以帮助管理者在短时间内处理完毕庞大的数据信…

后端只打印了info等级的日志?-SpringBoot日志打印-Slf4j

在调用log变量的方法来输出日志时&#xff0c;有以上5个级别对应的方法&#xff0c;从不太重要&#xff0c;到非常重要 调用不同的方法&#xff0c;就会输出不同级别的日志。 trace&#xff1a;跟踪信息debug&#xff1a;调试信息info&#xff1a;一般信息warn&#xff1a;警告…

浏览器的一些思考(12.13)

1.在没有浏览器之前是什么样子的&#xff1f; 在没有浏览器之前&#xff0c;人们访问互联网主要通过终端机或图文电视系统。 终端机是一种没有显示器、键盘和鼠标的计算机&#xff0c;只能通过终端模拟器来显示和操作。终端模拟器可以模拟终端机的功能&#xff0c;让用户能够…

只有27亿参数,性能却高25倍!微软发布Phi-2

12月13日&#xff0c;微软在官方网站正式发布了&#xff0c;27亿参数的大语言模型—Phi-2。 Phi-2是基于微软的Phi-1.5开发而成&#xff0c;可自动生成文本/代码、总结文本、数学推理等功能。 虽然Phi-2的参数很小&#xff0c;性能却优于130亿参数的Llama-2和70亿参数的Mistr…

大型软件编程实际应用实例:个体诊所电子处方系统,使用配方模板功能输入症状就可开出处方软件操作教程

一、前言&#xff1a; 在开电子处方的时候&#xff0c;如果能够输入症状就可以一键导入配方&#xff0c;则在很大程度上可以节省很多时间。而且这个配方可以根据自己的经验自己设置&#xff0c;下面以 佳易王诊所电子处方软件为例说明。 二、具体一键导入配方详细操作教程 点击…

YOLOv8独家原创改进:SPPF自研创新 | SPPF创新结构,重新设计全局平均池化层和全局最大池化层,增强全局视角信息和不同尺度大小的特征

💡💡💡本文原创自研创新改进:SPPF_improve利用全局平均池化层和全局最大池化层,加入一些全局背景信息和边缘信息,从而获取全局视角信息并减轻不同尺度大小所带来的影响 强烈推荐,适合直接使用,paper创新级别 💡💡💡 在多个数据集验证涨点,尤其对存在多个尺…