电子产业一站式赋能平台

PCB联盟网

搜索
查看: 180|回复: 0
收起左侧

嵌入式软件和硬件在互相扯皮,项目进行不下去了!

[复制链接]

568

主题

568

帖子

4219

积分

四级会员

Rank: 4

积分
4219
发表于 2024-12-2 11:50:00 | 显示全部楼层 |阅读模式
我是老温,一名热爱学习的嵌入式工程师
. V$ R: [: `" N5 m关注我,一起变得更加优秀!
8 d0 g5 |$ j2 Q' Q最近遇到了一件糟心的事情,交付给客户现场运行了不到一个月的硬件定制产品,开始出现无规律的停机现象,已经影响到客户的生产线运作,客户已经开始炸毛了。7 F. a9 L, D* Z4 }2 w, g$ A; @: L

k2osnhxxrie64059727823.jpg

k2osnhxxrie64059727823.jpg

' v/ j, I. O0 K$ [: j9 h, U在跟客户进行了一通“友好”的电话沟通之后,我和嵌入式软件工程师李工,马上订机票飞往客户现场,一方面是为了安抚好客户情绪(现场挨批),另一方面是为了了解现场机器的运行情况。$ k" b# K- d' b; p' g
根据停机现象,我们怀疑是设备在运行一段时间后,程序出现了偶发性卡死,然后外部看门狗会对机器进行强制复位,复位后的设备虽然能重启进入界面,但机械结构会从运行态切换为停止态。
: {, E: D/ B) t/ y8 [(有些工业设备不允许上电就直接运行,需要重新人工开机)
4 y; n$ o6 a5 G1 C+ x7 s- o/ O) x为了找出程序跑飞时的栈调用情况,李工启用了 cm_backtrace 组件,然后结合 addr2line 对程序跑飞时的栈调用情况进行了分析。3 x  P' q! v% e* x/ N
因为停机无规律出现(后来发现,电机启动一瞬间出现的概率高一点),很不容易地抓取到两三次停机之后,我们发现程序有时候出现 HardFault,有时候出现 BusFault,并且跑飞的位置不固定。0 O& f! m, t) L3 ?* j! y  e9 t
根据李工的经验,他怀疑是硬件设计的问题,于是打电话给第三方的硬件工程师陈工。。。
+ g4 |6 g3 U* |8 c) x: B" p5 `- [我:“李工,你跟陈工描述一下调试情况。”
' r) Q( x1 c+ H+ x9 I2 B' \软件李工:“ 陈工,我们现场排查了,程序跑飞的位置不固定,这种情况可能是某个硬件的可靠性或者是信号干扰影响导致的~”。
8 j5 n& i" D9 F1 n( s8 f硬件陈工反驳道:“这完全不可能,硬件出厂时都是经过测试的,测试时都没出过岔子,是不是你软件内存溢出或者逻辑处理得不好?”: s: a4 Q! i) _0 J
软件李工开始不耐烦:“我已经把内存可能溢出的地方处理了,不是软件的原因啊,~”, j# d; B+ h6 S0 J4 U- d2 |
硬件陈工急了:“这个硬件原理,我们以前也用过啊,也没出现过这种情况,你再找找软件原因。”
, ]4 C' ~- X+ E3 B3 A& O。。。。。。(两人你一言我一语地争论起来,互不相让,反正都不承认各自的原因。); T, A2 }( a* _/ ?6 e2 ]( _% W
我:“这样,吵下去也无济于事,我先安抚好客户,回公司后我们马上复刻现场进行重新测试验证!”' u: b$ R6 A( N1 H. {# [* |# T

1gllhlimlva64059727923.jpg

1gllhlimlva64059727923.jpg

2 G; V5 t  b& i(从客户现场回到公司后。。。)
! G% I7 Q# \5 `6 \" M) @$ ^现场出现问题的是一款工业三相电机控制器设备,采用 AC-220V 供电,里面有 AC 转 DC 电源模块,带有显示屏和联网功能,支持继电器输出和隔离光耦输入,支持 RS485 和 CAN 通信功能,设计框图如下。# {" D, z. L+ r, i2 t: |6 ~/ j

jn4jrmww0kr64059728023.png

jn4jrmww0kr64059728023.png

/ q- ~2 |7 |# J2 v2 W; U由于考虑到工业信号的实时性和多任务并发处理,李工设计嵌入式软件时,采用了 FreeRTOS 操作系统进行任务调度,而且还在外部SDRAM开启 Framebuffer 缓冲区,用来给GUI进行刷屏。4 M' T6 z3 m; g' Q4 Z3 k; W
为了减少内存溢出的风险,李工对各个数据缓冲区数组进行了优化,采用静态方式进行管理,并且每次写缓冲区时都进行数组范围判断,防止内存申请失败或者写缓冲区时出现数组越界操作。5 {# b! f5 @7 |' `3 C
我们从仓库里面领取了新的硬件设备做测试,一开始怎么也没办法复现出现场的停机现象,验证过程一度陷入了停滞。。。
2 t$ v3 ~5 t# A- p4 K: {

ijwbfsmpwhjHurt59728123.png

ijwbfsmpwhjHurt59728123.png
* c4 ]5 n7 ?& ]+ T$ q" [" T( {( M# {
但是,在设备连续不断电运行了差不多240个小时之后,事情似乎出现了转机,设备开始出现偶尔的看门狗复位重启,并且随着设备运行时间越长,出现得越来越频繁。(电机启动或者电磁阀吸合瞬间,特别容易出现)
  P$ B4 b- b. s* B查找方向开始转到硬件设计上。。。
3 A( x3 `/ m5 v, q1 h这款产品为了方便取电,陈工在硬件内部集成了开关电源,用隔离变压器和整流桥进行 AC 转 DC 处理,PCB 整体布局和布线,据说已经充分考虑 emc 和 EMI 。
, F: \! n9 I2 \3 C我们重新检测这台运行了“很久”的设备的各个电源回路,发现当设备运行了一段时间之后,3.3V 的电源回路上就会出现一些噪声,纹波忽高忽低,特别是在电机启动或者电磁阀吸合瞬间,电源噪声可能达到 2~3V 以上。(不是每次噪声都会导致MCU复位,说明这款MCU还是挺“扛噪”的。)
& V$ m. b: S2 o8 K" `: S9 ?9 p0 W

amr0ttr4w3464059728224.png

amr0ttr4w3464059728224.png

5 ~7 M% b2 P; _; V+ I  G3 u2 L4 l1 o/ D! v2 V9 c* i5 W4 `0 G9 K

5b4eydsrosu64059728325.png

5b4eydsrosu64059728325.png
) B3 u4 K- k7 Y( v- c2 D
这对于 3.3V 供电的芯片来说可能是致命的,电源噪声很容易造成MCU和内存芯片的数据错乱,造成程序莫名其妙地跑飞~
& U1 W% n3 h; n$ I有见及此,陈工马上开始对硬件进行整改,优化硬件的各路电源环路设计,将输入回路、辅助绕组回路和输出回路的环路面积做到最小,以增强抗干扰能力和减少对外的干扰。+ U! k0 O+ `2 d! W: N8 i5 g8 t" X- H
为了更好的信号完整性和降低电磁干扰(EMI)和减少层间耦合噪声,陈工决定改用 6 层板对 PCB 进行重新 layout,我们在嘉立创领取了打样券,现在样品也能用沉金工艺了,而且免费增加至2u"厚度,盘中孔工艺也可以免费使用,并且不限制BGA封装6 C( v; c$ P  T8 a- q$ d

oab3jnow2oa64059728425.png

oab3jnow2oa64059728425.png

  k6 s1 d2 d* r! n以前打个 6 层板的样品,打样费也是一笔不小的研发成本开销,现在嘉立创对于 6 层以上 PCB 的打样政策,工程费可以大降50%,对不少中小企业是非常大的利好。$ H% D; i, X  o/ Y% M

qwtktntmvxb64059728525.png

qwtktntmvxb64059728525.png
7 L; M+ M$ n6 H; ?. ?' a) r* Z( ?
在关键的电源和存储器芯片上面,也替换为进口方案(贵就贵点,但胜在够稳),这几天布线完之后,应该会发出去打样,等样品回来之后我们再仔细进行验证。* h8 x/ ~7 H7 Z/ x  Z; |
(事情虽然还没有结束,但总算看到了一点希望~
$ F) K: ?' T0 D1 T; Y7 U

00cc1tcghy3Expression_77@2x59728625.png

00cc1tcghy3Expression_77@2x59728625.png

% K( I+ a, t0 R- f) D9 _
% ^8 z' e1 Q7 Y( T1 K在开发过程中,客户一直抠成本,产品做出来之后,客户又急着在生产线上面使用,只是经过了基本的功能逻辑测试就交付了(没经过疲劳和可靠性测试),没想到,最后在客户现场还是出现了问题~5 A8 l* F+ Z' D* S  b
整个过程,有几点是需要值得我去反思的:
7 x1 B6 q0 \7 a1、产品在客户现场出现了问题,电话和信息无法解决的时候,该到现场(挨批)还是要到,一方面为了降低客户损失,另一方面也为了安抚和挽留客户。% \& `4 z6 Z) i) F; m
2、处理好成员冲突,尽可能地不要让团队成员在客户现场发生矛盾,以解决问题为主要目的,团队成员才是解决现场问题的关键要素。. Z8 \5 A, G3 m3 H, |2 l: V
3、不能为了降低成本而忽略了产品的稳定性,哪怕客户一直要求降低成本,也要管理好客户的预期,明确告知客户降本的风险。
1 O: e: E' P0 w1 _2 L4、做硬件产品研发还是得坚守原则,该遵循的流程还是要遵循,该做的测试还是要做(哪怕后补,也要有测试数据),EMC和EMI,可靠性测试,疲劳测试,耐久度测试,等等。
$ ~/ o8 _( k0 ~2 q9 K& |' b5、事情的进展,有时候看上去似乎停滞不前,但也不要马上停下来,(就好比,让设备空转运行也得让它转),没准过一段时间就会迎来转机~% p/ S( s  h2 Q4 k, F  B* H
最后,希望这次改版能行,生活又给我上了一课!~3 K! \+ l7 v$ l9 i, ?& B6 Z
8 P- u- Z9 `5 j# {
8 C. M$ c- K0 c" ?

jtqggdtdwqf64059728726.png

jtqggdtdwqf64059728726.png

! X! n9 |  s! P- Q) ]8 z0 X▲ @幕后硬汉:随手上传“创新背后的故事”,瓜分100000+大奖!* f; c! u. u$ h; s
-END-
1 U" a9 L9 }  O! p) b  F往期推荐:点击图片即可跳转阅读
) D$ ]  a- r( B3 o. x
2 }8 C5 ?3 z9 n( e) O/ k7 _2 D! \
                                                        ! M4 z$ D3 p7 ]+ [) d
                                                                4 @5 F: G1 o* Z! X. A7 t
                                                                       
9 O1 e% {; n2 B1 i                                                                               
, ~( w1 L" P5 [

egdtzu2dfq564059728826.jpg

egdtzu2dfq564059728826.jpg

; s$ t' f" B* x                                                                                ( s2 E/ X% I: F* Q4 M# x8 A# f: a  I
                                                                                        硬件都做出来了,客户说想改一下,结果,全部推倒重做!; d& E& p  x- T0 \, c
                                                        # L. C  w" e4 X
                                                                ; P# U' f: `5 c  f9 f% W
                                                                        3 S( q" u* ~+ n: @
                                                                               
; J! v- a" A% l! P4 V

miesxw3r4g464059728926.jpg

miesxw3r4g464059728926.jpg
; a- ~; N& b; `- h+ o
                                                                                  B6 N7 O1 `( J/ O  j
                                                                                        不想让嵌入式核心板吃灰,于是,我准备对它下手了!
% Z; E( x6 z- u+ N! ]; e                                                               
9 @& ?. m0 X0 r8 C& R2 j                                                                       
+ C$ Z& L+ a! c" V/ _                                                                                9 |" U2 ^5 r; @% v2 p

iwfuvc35qri64059729026.jpg

iwfuvc35qri64059729026.jpg
1 F9 {' v2 W) d( [; M4 H
                                                                                / d2 G  u* S* k
                                                                                        这些嵌入式主板,确实惊艳到我了!+ y0 Z. p. s, s; r( I4 ~6 O
                                                                                9 K' W0 I8 a3 k9 S
                                                                        0 r- t" @( a+ S
                                                                ! U5 j4 h/ |8 W) {* Q
                                                        我是老温,一名热爱学习的嵌入式工程师
2 w% M6 `) ?& M/ v关注我,一起变得更加优秀!
回复

使用道具 举报

发表回复

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

本版积分规则


联系客服 关注微信 下载APP 返回顶部 返回列表