493

帖子

1

TA的资源

一粒金砂(高级)

41
 
    说一下曾经遇到过的一个车载导航的S级别Bug,当时查了好多天才解决的。
    Bug现象:随机操作机器reset。
    拿到这个Bug时,是一脸懵逼,情报也太少了,无从开查,只能再现。经过了2个多周的日夜再现,最终竟然找到了100%的再现操作,天知道我是怎么碰大运发现的。
    再现操作:机器供电后,Power Off/On操作反复100次,机器就会Reset。
    知道了再现操作,剩下的就好办了。首先将看门狗生效后打上断点,再现,发现Reset是由于看门狗生效,被咬死的。那就是喂狗失败,可能程序中有死循环。
    一般思路是将wdt禁用,然后再现。当问题发生时,就能找到其所在的死循环处。但是如上操作后,当再现时确发现系统调度正常,在各个Module的Task里打断点,发现都可以跑到,并没有在某处死循环处。
    于是改变了一下调查方向,从wdt入手,查找什么原因导致了喂狗失败。
    由于芯片自身的硬件wdt的触发事件都比较短,配置成最长时间也才1.4ms左右,对软件来说不够用。所以对硬wdt进行了一层软件封装,定周期给watchdog Task发Event。当收到Event时,喂软狗。
    问题再现时,发现Event没有收到,通过断点调试,发现所有的中Event都无法进行收发了。经过一通Debug,找到了根源,是由于此时的Event队列已满了,事件无法继续入队了。此时打开消息队列的内存处发现,里面都被同一个事件塞满了。
    为什么这个事件没有人去Receive它呢?查找它的receiver,发现了问题。原来是一个已经不用的task,当初代码注释没有注释干净。而这个事件是在每次poweron操作的时候进入event队列中的。
    到此,整个事情的前因后果都清楚了。
    每次powerOn操作的时候,会有一个无用的event入队。当进行了100次的PowerOn操作后,队列中就残存了100个这个无用事件。而整个消息队列的Size也是100,于是乎,消息队列被塞满了。此后的所有event都发送失败了。于是乎,喂软狗的那个事件发送失败了,于是乎,软狗喂不了了,于是乎,狗咬死片子,Reset了。

    整个调查加修改bug过程持续了2个多周,其中的大部分时间都用在了再现Bug上。真正调Code改Code的时间,实际上也就是只用了一两天时间。其实,我觉得,如果有一个能百分百再现的操作手顺,这对调试Bug是一个十分重要且有用的前提。

    ===End

赞赏

1

查看全部赞赏

 
 

回复

91

帖子

0

TA的资源

一粒金砂(中级)

42
 
服务器组遇到个问题:
服务是从Kafka里面取出数据,然后把offset存储到ssdb中,每个topic和partition都对应ssdb中不同的key,服务启动之后,每次kafka数据更新我们这边收到消息,然后存储之后就发现ssdb的值偶尔是-2。
这就奇怪了,最开始我们是在代码中打印存储的日志,发现没什么问题,后来去查看ssdb的日志,才发现里面每次set的时候都会对同一个key存储2次,一次正确的值,一次是-2,当-2先存储的时候那么再次读取的值就是正确的,否则就是错误的。
最开始大家以为是代码的事,所有人一起看也没发现什么问题,然后我们怀疑是ssdb的服务器有问题,把ssdb杀掉,然后重新编译一个也是有问题,最后大家想可能是erlang的ssdb driver的问题,结果在driver中也加了打印信息,发现也就发送了一条ssdb set命令,这时候我就怀疑有可能还有个node也链接kafka然后也往这个ssdb中存取数据,那么测试就好办了,把我们的节点停掉了,然后再往kafka发消息,结果ssdb果真又出现了个-2。
把这个节点停掉,启动正确的节点,果真一切正常了。

赞赏

1

查看全部赞赏

 
 
 

回复

359

帖子

9

TA的资源

一粒金砂(高级)

43
 
说一个曾经非常低级的错误。电源问题。
测试一个新的电路板,用5V供电,用linux系统。就随手用了1个手边的手机充电器,开始效果很好,启动,然后就正常初始化,各个模块逐个加载,但是每当运行到一半时,就突然重启,不断循环。
正常情况下,就逐个排查问题,用万用表查电压都正常,然后就怀疑是否系统有bug,排查模块加载。当然,那个过程是很长的,但是没有任何结果。。。没找到问题。
后来,没有办法,换了一个电源,就一切OK了。
结论:这个手机充电器是山寨版,用一会儿供电不足,电压降低,板子就重启,给手机充电没有问题,因为手机也不需要连续供电。而且看起来也很正品。这个坑,遇到不明白的问题,电源有问题的可能性最大,以后知道了。

赞赏

1

查看全部赞赏

 
 
 

回复

2

帖子

2

TA的资源

一粒金砂(初级)

44
 
与上位机通信的时候,其中有的不频繁变化的信号向上传递,会出现漏信号的时候,这种BUG如何很好避免,高手指教指教啊
 
 
 

回复

128

帖子

0

TA的资源

一粒金砂(高级)

45
 
关注下
 
 
 

回复

33

帖子

0

TA的资源

一粒金砂(中级)

46
 
说说以前做的一个产品吧。
一款量产的便携式手持产品,开机工作正常,等待检测不到传感器时,自动关机(省电设计),此时正常状态。反复开关机正常。
但是,BUG出现了,关机后,1,2秒之类立即开机,不能启动,不能启动,不能启动。
软件有BUG,查了又查,没有BUG.
只有硬件了,对了,从电源入手,原来是用了国产某款LDO,关机时,电压下降为0V的过程太慢了,导致无法再次启动,需要3~4秒才能下降到0V。果断换了LDO,没问题了。
最后,希望国产IC越做越好。

赞赏

1

查看全部赞赏

 
 
 

回复

578

帖子

0

TA的资源

纯净的硅(初级)

47
 
今天就发现一个,使用keil V5对新唐的M051系列单片机进行在线调试程序,进入调试界面时都一切正常,一点击“全速运行”按钮,就弹出调试命令错误的提示:

检查了一下,能正常下载程序和运行,那说明连接线连接没有问题,然后就把所有相关的设置项都检查一遍都是和以前的一样没有改动,之前的工程就能正常调试,而新的却不能。接下来重启电脑、重新打开keil、工程目录设置为全英文都没有用,还是一样的问题,没有招了只好去问度娘,看到有说是因为打开了芯片内部看门狗的事情,我的程序里确实是使用了内部看门狗,赶紧把看门狗的代码注释掉,编译、进调试,点运行,一切正常,问题解决,原来真是看门狗引起的问题,但是为什么会这样还不太清楚,也许是仿真用的时钟太快,导致看门狗复位的时间缩短才这样?如果有大神知道原因的话,希望不吝赐教

赞赏

1

查看全部赞赏

个人签名刻苦学习,共同进步
 
 
 

回复

714

帖子

2

TA的资源

一粒金砂(高级)

48
 
说说最近遇到的各种问题,首先是sd卡fatfs文件系统的时候,spi通信很正常,就是创建文件后不能直接往文件里写数据,或者只能更改已经存在的文件里面的数据。这个之后换了fatfs版本之后修复了这个问题,但是比较两个文件没有明显的不同,到现在也没搞清楚什么问题,等这段时间忙完了要好好看看。另外就是之前有发过的窗口看门狗的问题的时候在中断函数里清完中断标志后,需要等待一段时间,不然一直复位。还有就是自己定义了一个char buf[]="000";char buf2[]="111"当我在后面的操作粗心的给它一个比如buf=“0000”;然后我在进行一些需要判定"\0"的函数时,就会导致打印出的数据是“0000111”这样的情况,还有好多,虽说有改不完的bug,但是每一个bug都有它存在的原因。找bug的过程是痛苦的,解决bug的时候是

赞赏

1

查看全部赞赏

个人签名Hello astroturfers
 
 
 

回复

2721

帖子

0

TA的资源

纯净的硅(中级)

49
 
littleshrimp 发表于 2016-10-27 15:56
以前做过一个触摸开关,单片机使用MSP430G2553
项目代码是我写的,有一次同事编译后下载的代码触摸不好用
...

很好奇同一个编译器生成的hex文件不同?确定同版本,同一个网站下载?

点评

一样的 是把我的安装文件使用U盘考给他的 即使不是一个版本也不应该不一样的  详情 回复 发表于 2016-11-1 07:50
 
 
 

回复

2721

帖子

0

TA的资源

纯净的硅(中级)

50
 
arduino和enc28j60网络通信问题
下了最新的ethercard库 貌似CS接8或10 都ping 不通 是同一网段 接线是 INT - 2 , SO - 12 , SCK - 13 , RES - RES , SI - 11 , CS - 10 ,VCC - 3.3V ,GND - GND 板是UNO  , 代码是用本帖的代码
提醒大家一点,很容易犯,而且很隐蔽的一个错误:mac地址第一字节必须是偶数
// PIN Connections (Using Arduino UNO):
//   VCC -   3.3V
//   GND -    GND
//   RESET -  RESET;
//   SCK - Pin 13
//   SO  - Pin 12
//   SI  - Pin 11
//   CS  - Pin  10
 
 
 

回复

9717

帖子

24

TA的资源

版主

51
 
suoma 发表于 2016-10-31 22:35
很好奇同一个编译器生成的hex文件不同?确定同版本,同一个网站下载?

一样的
是把我的安装文件使用U盘考给他的
即使不是一个版本也不应该不一样的
个人签名虾扯蛋,蛋扯虾,虾扯蛋扯虾
 
 
 

回复

28

帖子

0

TA的资源

一粒金砂(中级)

52
 
Server Tomcat v7.0 Server at localhost failed to start.
遇到以上问题一般是由于web项目中配置出现问题,可能是使用了@WebServlet配置,同时有使用了Web.xml文件配置,导致工程和服务器开启失败。
Target runtime com.genuitec.runtime.generic
解决方案,在工程目录下的settings文件夹中,“org.eclipse.wst.common.project.facet.core.xml”这个文件也需要修改下打开该文件,会发现,把这句话去掉就可以了,回到IDE工具中刷新一下工程就解决了。

赞赏

1

查看全部赞赏

 
 
 

回复

55

帖子

0

TA的资源

一粒金砂(中级)

53
 
超级奇葩的bug。
使用cc430无线通信,调试过程中能进入接收中断,但是收到数据总是ff,f3,两个数字循环。无论发送什么数据,接收端收到的永远是这两个字节。
各种找问题,发送确认发送出来了,接收确认进入接收中断。
查找问题,各种排除法,确认寄存器没有问题,确认流程没有问题,。就是找不到原因。
后来直接用串口打印竟然是对的。
最后发现引起这个问题的原因竟然是编译器BUG,更改高版本的编译器解决问题……

赞赏

1

查看全部赞赏

 
 
 

回复

82

帖子

0

TA的资源

一粒金砂(中级)

54
 
最近在做一个项目   用的是STM32F103V8T6  串口接收30字长数据  单片机收到特定的字头字尾   返回32字长数据  没有问题   但是个别板子出现返回数据时  莫名的有乱码   其它数据还正常
 
 
 

回复

256

帖子

0

TA的资源

一粒金砂(中级)

55
 

就在昨天,我的手机努比亚小牛z9mini,发生一件诡异故障,手机能打电话,发短信,但就是不能上网,无论是格式化,恢复出厂设置,刷机。都没软用,从上午一直搞到下午都没用,我一想,是不是手机硬件坏了主要当地还没售后,这一下不麻烦了吗,于是乎想起了客服,一问才知,原来z9mini刷机,升级操作失误等,就容易把MBN文件搞丢失,按照客服指示,按手机*#626#查看MBN文件,整个文件界面为空,此时心里不禁暗喜,还好没硬伤,马上让客服把教程发过了,就开始弄,后来由于电脑上缺少驱动,费了好大劲才安装好,按教程一步一步来的,没想到还真弄好了,后来一回想,可能是前几天在单位升级手机系统,中途网络断了一下,把MBN文件弄没了的缘故,想想真是坑啊。。。。。最后希望论坛朋友们有用z9mini手机的,如果出现类是我这种问题可以按以下教程刷一下,但愿可以解决此类问题

Z9miniMBN文件丢失线刷恢复工具使用教程.docx

423.51 KB, 下载次数: 4

赞赏

1

查看全部赞赏

 
 
 

回复

3238

帖子

5

TA的资源

五彩晶圆(中级)

56
 
分享下今天遇到一个奇怪问题:今天测试有线网关代码时遇到一个很奇怪的问题,接收手机app端发送的json格式数据,STM32直接进入到了硬件异常中断了,后来发现是定义的栈太小了,将原来的2K改成了4K,一切正常了。
分析解释如下:
函数的局部变量,都是存放在"栈"里面,栈的英文是:STACK.STACK的大小,我们可以在stm32的启动文件里面设置,在startup_stm32f10x_hd.s里面,开头就有:

Stack_Size      EQU     0x00000800

表示栈大小是0X800,也就是2048字节.这样,CPU处理任务的时候,函数局部变量做多可占用的大小就是:2048字节,注意:是所有在处理的函数,包括函数嵌套,递归,等等,都是从这个"栈"里面,来分配的.
所以,如果一个函数的局部变量过多,比如在函数里面定义一个u8 buf[512],这一下就占了1/4的栈大小了,再在其他函数里面来搞两下,程序崩溃是很容易的事情,这时候,一般你会进入到hardfault....
这是初学者非常容易犯的一个错误.切记不要在函数里面放N多局部变量,尤其有大数组的时候!

赞赏

1

查看全部赞赏

个人签名淘宝:https://viiot.taobao.com/Q群243090717
多年专业物联网行业经验,个人承接各类物联网外包项目
 
 
 

回复

104

帖子

1

TA的资源

一粒金砂(中级)

57
 
最近在调试电视机案子时,遇到HDCP 2.2 KEY识别不到的问题,现象及解决方法如下:

【现象】
   EDID检查正常,但接4K2K60HZ信号黑屏,HDCP 2.2 KEY一直认不到,且打印I/tvos    ( 1089): [MStarSDK] mapi_video: HDCP2_LoadKey failed.

【解决办法】
   最后将hdcp2.ini里改了HDCP_RX_KEY_PATH=/data/hdcp2_key.bin
   hdcp2.ini其实就是在libhdcp.tar.gz里面。所以最后让MStar更新
   develop/extra/target/arm-gnueabi/libhdcp.tar.gz
   tee/Apps/install/HDCP/libhdcpTA.a
   替换上去即可重新编译Supernova即可。

赞赏

1

查看全部赞赏

 
 
 

回复

104

帖子

1

TA的资源

一粒金砂(中级)

58
 
最近点LVDS单通道屏时遇到很奇怪的问题:

现象:1.点1280X800的屏,画面一直黑屏。
      2.点1360X768的屏实际画面分成4画面,即类似于用FHD屏参点1366的屏。

解决思路:前者试了0x3280、0x3294、0x3296的所有寄存器都没法看到画面,后者看实际屏的输出分辨率又是OK的。此问题困扰了很久,后来想出对策是人为强行把寄存器0x100B的0xA6(8位地址)寄存器的BIT3置0即可。通过实验发现,确实双通道的屏此BIT3为1,单通道为0. 所以,加了对策后,问题得以解决。

赞赏

1

查看全部赞赏

 
 
 

回复

1234

帖子

4

TA的资源

纯净的硅(高级)

59
 
bug?

底板 stm32f103vct6 时钟在初始化的时候选择是的外部时钟,也就是晶振,启振了,初始化成功,但时钟频率一时对一时不对,硬件仿真死活没有跳到异常里面去,开个硬件定时器,计算一秒灯闪一下,结果这个灯不按套路出牌,想怎么闪就怎么闪,CPU竟然还运行着,死活不进异常。

解决方法:换单片机

赞赏

1

查看全部赞赏

个人签名天地庄周马;江湖范蠡船。
个性签名还是放QQ号吧,2060347305,添加说明EEworld好友
 
 
 

回复

212

帖子

0

TA的资源

一粒金砂(中级)

60
 
我是搞物联网嵌入式技术的,最近在搞关于Contiki的教材研究和编写工作,想要编写一本关于Contiki的教材并不容易,因为Contiki的代码顺序很乱,代码很混乱,找一个代码来源要翻阅好几座山,才能找到,各种引用,有时候真要崩溃了。有一次写一个Rime多跳协议怎么也编译不出来,试过各种办法,每次尝试的结果都不相同,代码改了无数遍始终找不到根源,最后才发现是调用底层代码的时候,名词少了一个y字母,我也是醉了。。。做程序员每天要被bug折磨死。

赞赏

1

查看全部赞赏

 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表