行业seo网站优化方案厦门优化公司

news/2025/10/3 11:04:40/文章来源:
行业seo网站优化方案,厦门优化公司,响应式网站建设网站,定制网站建设文章目录 背景介绍 问题描述 分析排查 解决方案 总结归纳 背景介绍 在一个嵌入式软件项目中#xff0c;有一段使用C语言写的嵌入式代码#xff0c;功能是把CAN总线上的几帧报文接收进来#xff0c;并解析出数据。示例如下#xff1a; 乍一看感觉挺简单#xff0c;想着… 文章目录 背景介绍 问题描述 分析排查 解决方案 总结归纳 背景介绍 在一个嵌入式软件项目中有一段使用C语言写的嵌入式代码功能是把CAN总线上的几帧报文接收进来并解析出数据。示例如下 乍一看感觉挺简单想着直接用一个while循环周期提取CAN buffer中缓存的数据就行了。但是就这么一个小应用让我栽了跟头在整个工程中排查了几个小时才找到问题下面就来分享一下这一小段个人经历。 一开始代码调试的时候很顺利一共接收5帧报文总共40个信号相关代码大概是下面这个样子 void main(void) { //省略若干行if(Timer10ms 1){do{ret GetCANFrame(1, Ext, ID, Length, DataBuf);if(ret){if(ID 0x100){memcpy(SignalArray[0], DataBuf, 8)}if(ID 0x101){memcpy(SignalArray[8], DataBuf, 8)}if(ID 0x102){memcpy(SignalArray[16], DataBuf, 8)}if(ID 0x103){memcpy(SignalArray[24], DataBuf, 8)}if(ID 0x104){memcpy(SignalArray[32], DataBuf, 8)}}}while(ret (i 100))}//省略若干行 } 问题描述 按照上述示例开发的软件烧录到ECU中在实验室桌面上调试使用Vector的CAN接口卡模拟残余总线发送0x100、0x101、0x102、0x103、0x104这五帧报文ECU都能正常接收。但是把ECU集成到实车之后却收到反馈ECU的CAN接收有丢帧现象。 分析排查 把实车上的CAN报文Log打开之后看到总线上除了0x100、0x101、0x102、0x103、0x104这五帧报文之外还有几十个其他ID的报文所以推测是这些残余总线报文干扰了ECU的CAN接收。所以在实验室桌面上把这些残余总线模拟出来复现了实车上的CAN接收丢帧现象这就锁定了是残余总线的问题。 为了更具体的分析Bug机理在代码中加入了一些调试信息每个ID接收到之后都把相应的计数加1示例如下 void main(void) { //省略若干行if(Timer10ms 1){do{ret GetCANFrame(1, Ext, ID, Length, DataBuf);if(ret){if(ID 0x100){memcpy(SignalArray[0], DataBuf, 8)FrameCount[0];}if(ID 0x101){memcpy(SignalArray[8], DataBuf, 8)FrameCount[1];}if(ID 0x102){memcpy(SignalArray[16], DataBuf, 8)FrameCount[2];}if(ID 0x103){memcpy(SignalArray[24], DataBuf, 8)FrameCount[3];}if(ID 0x104){memcpy(SignalArray[32], DataBuf, 8)FrameCount[4];}}}while(ret (i 100))}//省略若干行 } 烧录上述软件后可以看到发生CAN接收丢帧时都伴随着残余总线报文的集中突增总线瞬时100%负载率会持续十多ms所以推测可能是残余总线报文挤占了CAN接收buffer。翻了一下CAN接收buffer的配置是40帧的size。根据CAN总线500k的波特率计算100%负载率持续十多ms总线上会有50帧左右的报文。而我的代码是10ms从CAN接收buffer提取一次数据这样必然会导致CAN接收buffer塞满后无法继续接收也就是丢帧的现象。 解决方案 针对上述CAN接收buffer溢出的问题解决方案可以从如下公式的每一个因子入手 Buffer占用空间 单位时间最多的报文数量 * 提取Buffer的周期                    公式(1) 方案一扩大buffer size配置。其他条件不变这里只要把原本40帧的size扩大到45帧左右即可。因为500k波特率的CAN总线10ms时间内最多产生的报文不会超过45帧。这个方案需要MCU硬件资源的支持。 方案二避免报文突增。其他条件不变这里只要在CAN协议中约定好各个ECU节点都按既定节拍发送报文避免瞬时负载率拉升到100%或者控制100%负载率持续时间要小于10ms。这样任何一个10ms周期内总线上的报文最多也不会超过40帧现有的40帧的Buffer size就够用了。这个方案需要总线上各个节点ECU的配合。 方案三降低波特率。其他条件不变这里只要把原本500k的波特率降下来也就降低了单位时间最多的报文数量实现的原理跟方案二一样。这个方案也需要总线上各个节点ECU配合变更波特率。 方案四CAN接收ID过滤。其他条件不变这里只要在底层CAN接收模块中做一个ID过滤只允许0x100、0x101、0x102、0x103、0x104这五帧报文进入CAN接收buffer实现的原理也跟方案二一样。这个方案只需要自己的ECU修改底层软件即可不需要其他方面的支持和配合。 方案五缩短提取Buffer的周期。其他条件不变这里只要把原本10ms的提取周期改成5ms或者其他小于10ms的数值即可。因为因为500k波特率的CAN总线5ms时间内最多产生的报文在20帧左右远远低于40帧的buffer空间。这个方案只需要自己的ECU修改应用软件即可不需要其他方面的支持和配合。 上述五种解决方案各有优劣适用于不同的项目开发情景。方案一适用于ECU开发的早期在MCU选项时或者在软件架构定型时就根据CAN总线的应用需求为buffer size留出足够的资源空间。方案二和方案三适用于系统集成阶段在制定整车的网络协议时约定好各个ECU节点需要遵循的公共基础和公用策略。方案四和方案五适用于ECU的应用开发阶段在开发具体功能时更具其他已经设定的条件决定如何设计ID过滤和报文提取周期。 总结归纳 那么这个代码调试过程发现的问题可以积累下来这么几条小经验以供自己将来使用也给广大网友参考 1、CAN网络相关的模块设计与开发时不光要考虑自身ECU节点的发送和接收还要考虑其他节点不相关报文的实际存在。对于不能确定确定参数时就要按照最严酷的情况来估算比如残余总线瞬时负载率达到100%而且还持续挺长一段时间。 2、方案设计用的是等式解决方案中的哪个等式但是软件开发中用的是不等式因为实际情况中要面对的有各种误差所有在留下余量时等式中的“”就要变成“”或者“”。比如理论计算的buffer size是40帧这里就应该使用40帧。 以上就是本人在解决CAN接收Buffer溢出Bug时一些个人理解和分析的总结首先介绍了基本的项目背景然后描述了问题的想象最后分析排查了Bug原因并给出了问题解决方案。 后续还会分享其他的使用C/C研发时遇到的Bug欢迎评论区留言、点赞、收藏和关注这些鼓励和支持都将成文本人持续分享的动力。 述例程使用的Demo工程可以到笔者的主页查找和下载。 版权声明原创文章转载请注明出处与链接违者必究

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

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

相关文章

网站建站图片汉滨区住房和城乡建设局网站

在进行绘图时必须考虑这两种坐标。 世界坐标是整个区域的坐标,而页面坐标是可视区的坐标。这两种坐标是通过滚动条来体现出来的。 页面坐标的原点始终是窗口可视区的坐上角,世界坐标的原点始终不变,这两种坐标和VC中的屏幕坐标和客户坐标很…

2025染井吉野樱公司 TOP 种植服务推荐排行榜,染井吉野樱花苗,五公分染井吉野樱,十公分染井吉野樱,染井吉野樱批发,染井吉野樱基地,染井吉野樱花树公司推荐

引言在樱花苗木采购与景观工程实施过程中,分枝点规格的把控已成为行业突出痛点。当前市场上,染井吉野樱苗木分枝点标准混乱,从 0.5 米到 3 米不等的规格随意标注,缺乏统一规范,导致采购方难以精准匹配绿化需求。部…

网站建设如何定价广州网站制作怎样

Facebook广告是海外营销的一大利器,但是随着互联网的发展,有部分不法分子正在利用他进行盈利,导致Facebook官方安全审核日益严格,不少卖家遭遇封号问题!这篇文章就来教你如何更好地管理 Facebook广告帐户,实…

如何建立自己的摄影网站做电商网站用什么框架

来源:AI前线 作者:Jiang Chen,Moveworks 机器学习副总裁译者:王强策划:刘燕从 Siri 到 Alexa 再到谷歌助手,今天我们已经被各种人工智能系统包围了。它们的设计目标只有一个:理解我们。我们已经…

鄂州网站建设与设计乐器网站模板

windows2003-建立域 Active Directory建立DNS建立域查看日志xp 加入域 Active Directory 活动目录是一个包括文件、打印机、应用程序、服务器、域、用户账户等对象的数据库。 常见概念:对象、属性、容器 域组件(Domain Component,DC&#x…

glazewm_windows平铺窗口管理器使用方法

1.在github上寻找预构建版本 2.双击安装 3.关闭与zebra有关的命令 配置文件在 C:\Users{yourname}.glzr\glazewm\config.yaml 打开这个文件 默认这条指令是没有注释的,我这边直接注释掉这样软件启动就不会报错了4.添加…

详细介绍:LeetCode热题100(1-7)

详细介绍:LeetCode热题100(1-7)pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco&…

树莓派搭建NAS之三:使用OpenList挂载网盘

移动硬盘中发现有之前备份的文件,并且监控是一直在写盘,容易将磁盘写坏,之前备份的数据就无法读出。找了半天找到了个不用的32GB的U盘,可以先用着。 U盘的空间太小,连续录制1-2天的时间就会满了,之前的监控也无法…

sg-ss 逆向分析

sg-ss、sgss声明 本文章中所有内容仅供学习交流使用,不用于其他任何目的,抓包内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关! wx a15018601872 q 27…

网站建设报价比较深圳团购网站设计

在前端Web开发中,下拉筛选功能是一种非常常见的交互方式,它可以帮助用户快速选择所需的选项。本文将介绍如何利用Vue.js和uni-app框架来实现一个高效的下拉筛选功能。通过使用这两个强大的前端框架,我们可以轻松地创建具有响应式用户操作的下…

PySide6 之登录界面设计

一、效果图二、示例代码from PySide6.QtWidgets import QApplication, QWidget from PySide6.QtCore import Qt, Slot, QPoint, QPropertyAnimation, QEasingCurve from PySide6.QtGui import QColorfrom views.login…

Jupyter notebook 虚拟环境(服务)EnvironmentLocationNotFound: Not a conda environment

ErrorAn error occurred while retrieving installed packages. EnvironmentLocationNotFound: Not a conda environment: E:\Eprogramfiles\Anaconda3\envs\Anaconda3 ================================ 网上说修改文…

本地部署overleaf服务帮助latex论文编写 —— 操作笔记

本地部署overleaf服务帮助latex论文编写 —— 操作笔记原文参照: https://www.cnblogs.com/xuhe2/p/18792632操作: git clone https://github.com/xuhe2/sharelatex-ce本博客是博主个人学习时的一些记录,不保证是为…

简述网站开发的三层架构中国建设银行网站转账

近用到Java动态生成背景透明的图片功能,从gif和png中选择了png格式,个中缘由就不说了,于是动手到网上搜索有用的代码。现把搜索结果总结如下:1. 生成png图片int width 400;int height 300;// 创建BufferedImage对象BufferedImag…

怎么免费建立网站广告设计制作公司简介

1. 张量概念 张量本质上是一个n维数组,它在numpy中为ndarray, 在pytorch中称为tensor , 两者的区别在于: numpy仅支持CPU计算tensor能支持GPU运算,并且支持自动微分,更适合深度学习 2. 张量的访问 一个二维矩阵a&a…

【Groovy】Array、List、Set、Map简介

1 Array 1.1 创建数组 1.1.1 创建一维数组 int[] arr1 = new int[2] arr1[0] = 1 arr1[1] = 2float[] arr2 = new float[] { 1f, 2f, 3f } String[] arr3 = ["abc", "xyz"] as String[]1.1.2 创建…

深入解析:【Python高级语法与正则表达式】

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

成都 广告公司网站建设成都建设路小学网站

系统架构师考试是对计算机从业人员,以考代评的重要考试,近几年一直在参加考试,屡战屡败,后又屡败屡战,记录总结论文相关的知识点,方便考前查看。 一、2010年论文 1)论软件的静态演化和动态演化…

详细介绍:PandasAI:ChatBI的极简上手版学习(一)

详细介绍:PandasAI:ChatBI的极简上手版学习(一)pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas"…

河南网站设计微信云开发平台

#记录工作 提示:整个过程最好先开启系统代理,也可以用镜像源,确保有官方发布的最新特性和官方库的完整和兼容性支持。 期间下载会特别慢,需要在系统上先开启代理,然后WSL设置里打开网络模式“Mirrored”,以设置WSL自动…