哪个网站有学做吃的昆明高端网站建设
2026/1/10 8:22:48 网站建设 项目流程
哪个网站有学做吃的,昆明高端网站建设,做排行榜的网站知乎,网站流量统计模板“这个程序在旧板子上运行正常的#xff0c;在新板子怎么不行#xff1f;硬件上的修改点不会影响到软件呀#xff0c;怎么回事#xff1f;#xff0c;我也是服了#xff01;”“我是参考MCU官方demo程序写的SPI从机驱动程序啊#xff0c;数据接收怎么异常呢#xff1f;…“这个程序在旧板子上运行正常的在新板子怎么不行硬件上的修改点不会影响到软件呀怎么回事我也是服了”“我是参考MCU官方demo程序写的SPI从机驱动程序啊数据接收怎么异常呢神奇了”“程序在我这里运行正常的呀LED正常闪烁的你那里的板子怎么不行不应该啊”…………其实还有很多来自于软硬件工程师们的经典话语都是对不该出问题而实际又出问题的一种信息反馈其实在工作中这是最常见的也是最正常的现象了。我们在程序调试时肯定都会遇到很多问题包括程序仿真时卡死在某一个地方程序一直进HardFault中断又或者是程序在新硬件板子上运行异常等等有些问题出现的很诡异有些问题让人匪夷所思有些问题也可能是调试环境影响而并非程序本身问题总之就是一句话怎么会出现这样的问题呢今天作者就从实际经验出发针对一些常见的程序调试问题给大家支一些招希望能够进一步提高朋友们的快速定位问题的能力和技巧从而提高解决问题的效率。常见问题1仿真器和目标板连接不上无法下载程序在我们进行程序调试之前当然要先搭建好硬件环境其实仿真器和目标板连接异常问题是比较常见的有时候还不容易解决因为涉及的东西比较多。如果你遇到这个问题的话一般可以尝试通过以下的一些方法去逐一排查以jlink仿真器和keil IDE为例说明去设备管理器中确认仿真器是否已正常工作即是否已安装驱动使用万用表电阻档测量确认SWD的连接线是否已连接正常SWD连接线不要太长使用万用表直流电压档测量确认目标板MCU供电电压正常确认IDE里面已配置正确的仿真器适当降低仿真器和目标板的通信速率咨询技术支持等确认仿真器固件版本是否支持当前目标MCU或者直接升级仿真器固件将仿真器连接到开发板或其他正常板子确认是否连接正常确认MCU复位电路是否正常更换MCU芯片等等。常见问题2程序仿真运行后不知道跑哪里去了有时候进入仿真点击全速运行后程序没有按正常逻辑执行。此时你可以点击停止运行程序然后看程序当前停在哪里可以多操作几次看程序是不是都停在同一个代码位置那基本上就是程序卡死在这块代码了可以尝试屏蔽掉这块代码然后再试试。或者你也可以在main初始化代码位置打个断点然后单步执行程序看程序执行到哪里的代码后就无法继续执行下去以下情况也可能会导致程序运行后不知道跑哪里去了问题MCU系统时钟配置错误printf函数重定向异常外设中断已使能但没有使用中断向量表完成中断服务程序的编写程序运行的ROM起始地址配置错误注意是否带bootloader程序程序里增加了某些死循环操作等等。然后如果你使用的是Cortex-M核的MCU还可以在Watch窗口里监控一下SCB寄存器这些寄存器会监控和记录一些错误故障信息。比如其中的HFSR硬件故障状态寄存器就会记录HardFault异常。常见问题3部分板子的软件功能出现问题有时候也会遇到这种情况生产了一批板子可是其中部分板子的功能不正常并且经过初步的软硬件分析后也没找到原因我们可能会怀疑是不是这批MCU芯片批次有问题或者一致性不好导致的。其实吧MCU芯片出问题的概率是非常低的不到万不得已不要轻易去质疑这个原因大部分情况下还是我们的软件或者硬件存在设计缺陷导致的。举个实际例子之前有个坛友发贴咨询了使用PIC芯片实现的低功耗产品有部分产品的低功耗数据偏大尝试了交叉测试和代码减法测试起初都没找到原因后来通过咨询FAE和自己认真比对进入低功耗之前的GPIO配置代码终于是定位到原因了还是代码配置问题。这种问题确实比较恶心不静下心来认真查找分析是很难定位原因的。那遇到这种问题我们应该怎么去做呢自我怀疑一定要优先认为是自己的软件或者硬件设计缺陷导致的实际上很多情况也是如此芯片本身问题毕竟少数吧。很多问题或者Bug的迷惑性很大特别是偶发性问题你以正常思维去分析和理解肯定是觉得设计本身没问题的但是往往到最后的确是设计上存在的缺陷导致的。波形测试如果是与外置芯片相关的问题可以尝试测试一下MCU和芯片的通信时序波形看波形是否存在失真问题或者与芯片手册里的波形对比看是否存在临界信号的问题是不是CLK波形上升沿或者下降沿时间太长或者太短等等。这一点很重要做嵌入式软硬件开发遇到问题时一定要有“我来测试一下波形”的意识波形测试能解决很多问题优先用示波器协议数据分析时可以用逻辑分析仪。也一定要学会“会看”芯片数据手册怎样算“会看”就需要自己去摸索了这里就不详细阐述了。更换芯片测试如果是与芯片相关的问题最快最暴力的方式就是更换一颗肯定好的芯片测试一下如果好了那要么是原芯片坏了要么是软硬件设计不太好把芯片的一致性问题暴露出来了。这个时候就可以看看信号线上的一些滤波电容是不是太大了对于级联应用是不是PCB走线太长导致时序错位了。代码减法测试通过逐渐屏蔽相关代码进行测试看异常板子是否会恢复正常如果恢复了那可能就是代码设计存在缺陷比如通信速度偏高延时时间偏长和GPIO配置不合理等等。交叉测试在正常板子和异常板子之间进行芯片交叉测试也可以进一步定位问题原因。这个方法也是常用的也要学会。常见问题4偶发性Bug怎么办在软件开发中随着代码量的增多有时候会出现一些奇奇怪怪的Bug对于必现每次测试都会出现的Bug一般通过仿真信息打印单步调试等手段都可以得到解决但对于偶现偶尔测试会出现的Bug或者是出现概率低的Bug有时候消耗了好多脑细胞尝试了好多方法最后都没找到根本原因。因此对于这样的偶发性Bug一般怎么去排查呢大胆猜想根据现象理论分析因为出现异常问题的机会并不多所以要根据出现的现象多思考一下哪些地方可能会导致出现这个Bug如果是客户现场出现那是不是干扰问题是不是操作方式问题如果是干扰问题那是不是软件滤波没做好是不是总线通信速度太快导致如果是操作方式问题是不是软件代码逻辑顺序导致的一定要结合出现的Bug现象能尽量理论推导出一些能够与代码沾上边的信息由后往前逐层分析这样才有可能解决。作者之前写了一篇文章https://bbs.21ic.com/icview-3448040-1-1.html就是关于解决一个偶发性Bug的有一位坛友发的一个帖子https://bbs.21ic.com/icview-3444870-1-1.html引发偶发性串口通信问题的根源应该就是全局变量没有加volatile关键字声明还有一位坛友发的关于有些板子出现低功耗数据偏高的https://bbs.21ic.com/icview-3453022-1-1.html最后排查出来也是代码配置问题导致的有兴趣的可以看下。监控数据尝试复现不管能不能复现Bug我们肯定是需要搭建测试环境自己测试一定的次数。我们可以直接通过软件仿真和Debug的方式进行同时可以在IDE里监控你认为可能造成Bug的相关变量和标志位等运气好的时候说不定可以复现和监控到异常数据这样有利于解决偶发性Bug。记住一定不要嫌麻烦有时候为了尝试复现一些比较严重的Bug自测一星期都是存在的一定要静下心来好好自测实事求是切勿浮躁。复现不了增加防护机制如果实在搞不定偶发性Bug那在代码上也不能啥都不做可以在自己认为可能造成偶发性Bug的代码位置加一些防御式代码保证出错后不影响程序的正常执行如果没加看门狗一定要加上软件看门狗如果有总线通信代码可以在不影响通信实时性的前提下适当降低通信速率如果有一些比较复杂的宏定义建议一定多用括号括起来对于使用了数组的代码注意数组坐标是否存在越界风险如果使用了指针避免存在野指针等了解一下volatile关键字在哪些代码场景下需要使用它局部变量一定不要忘记初始化对于带操作系统的代码注意临界代码的资源占用避免变量值混乱。以上针对程序调试这块列举了几个常见的问题以及根据自身经验提供了一些供参考的排查方法和手段希望对你们有用。如果有坛友遇到比较棘手的程序问题也可以直接找我我们一起研究看下。”---------------------作者dffzh链接https://bbs.21ic.com/icview-3462532-1-1.html来源21ic.com此文章已获得原创/原创奖标签著作权归21ic所有任何人未经允许禁止转载。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询