电子产业一站式赋能平台

PCB联盟网

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

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

[复制链接]

493

主题

493

帖子

1868

积分

三级会员

Rank: 3Rank: 3

积分
1868
发表于 2024-12-2 11:50:00 | 显示全部楼层 |阅读模式
我是老温,一名热爱学习的嵌入式工程师9 E8 T6 b+ z" |4 H) G0 D
关注我,一起变得更加优秀!
; i1 Y! b6 \$ f( f最近遇到了一件糟心的事情,交付给客户现场运行了不到一个月的硬件定制产品,开始出现无规律的停机现象,已经影响到客户的生产线运作,客户已经开始炸毛了。
1 l5 c/ x( z# C" S

k2osnhxxrie64059727823.jpg

k2osnhxxrie64059727823.jpg

- X# C: r5 w8 \; B在跟客户进行了一通“友好”的电话沟通之后,我和嵌入式软件工程师李工,马上订机票飞往客户现场,一方面是为了安抚好客户情绪(现场挨批),另一方面是为了了解现场机器的运行情况。
: `3 ^+ |) p- E' R* K根据停机现象,我们怀疑是设备在运行一段时间后,程序出现了偶发性卡死,然后外部看门狗会对机器进行强制复位,复位后的设备虽然能重启进入界面,但机械结构会从运行态切换为停止态。7 [5 F' O6 a  y' k# ^# ?. y' {
(有些工业设备不允许上电就直接运行,需要重新人工开机)
/ M( D2 L& X1 A, D+ b为了找出程序跑飞时的栈调用情况,李工启用了 cm_backtrace 组件,然后结合 addr2line 对程序跑飞时的栈调用情况进行了分析。
. P; q" L3 I8 B( z" g# T8 f9 k! M因为停机无规律出现(后来发现,电机启动一瞬间出现的概率高一点),很不容易地抓取到两三次停机之后,我们发现程序有时候出现 HardFault,有时候出现 BusFault,并且跑飞的位置不固定。
( ^5 o, r/ S+ A根据李工的经验,他怀疑是硬件设计的问题,于是打电话给第三方的硬件工程师陈工。。。
$ m; y# v9 ]! V1 C. w我:“李工,你跟陈工描述一下调试情况。”! Z. L0 A- c3 h+ q- L/ D8 R. A
软件李工:“ 陈工,我们现场排查了,程序跑飞的位置不固定,这种情况可能是某个硬件的可靠性或者是信号干扰影响导致的~”。. b. _1 u+ y) M2 ^
硬件陈工反驳道:“这完全不可能,硬件出厂时都是经过测试的,测试时都没出过岔子,是不是你软件内存溢出或者逻辑处理得不好?”+ `0 |2 V8 s) ]
软件李工开始不耐烦:“我已经把内存可能溢出的地方处理了,不是软件的原因啊,~”& `& j* R/ Y. l9 J' x5 m9 F. u% H
硬件陈工急了:“这个硬件原理,我们以前也用过啊,也没出现过这种情况,你再找找软件原因。”
1 ?+ s. J1 ~0 j' O/ n$ a" ?。。。。。。(两人你一言我一语地争论起来,互不相让,反正都不承认各自的原因。)" N( v( m; [% i
我:“这样,吵下去也无济于事,我先安抚好客户,回公司后我们马上复刻现场进行重新测试验证!”
' G! L! _4 j+ b- v2 z* v; y

1gllhlimlva64059727923.jpg

1gllhlimlva64059727923.jpg
8 t! P- q. ~2 V
(从客户现场回到公司后。。。)
) o! ]3 P$ l! k" f" G* h9 ~现场出现问题的是一款工业三相电机控制器设备,采用 AC-220V 供电,里面有 AC 转 DC 电源模块,带有显示屏和联网功能,支持继电器输出和隔离光耦输入,支持 RS485 和 CAN 通信功能,设计框图如下。
4 E- _' I) A8 S- F! A' z

jn4jrmww0kr64059728023.png

jn4jrmww0kr64059728023.png

* n! i" O4 }/ r' P3 d2 t: P由于考虑到工业信号的实时性和多任务并发处理,李工设计嵌入式软件时,采用了 FreeRTOS 操作系统进行任务调度,而且还在外部SDRAM开启 Framebuffer 缓冲区,用来给GUI进行刷屏。
2 A" e2 h* }, ]5 v7 P为了减少内存溢出的风险,李工对各个数据缓冲区数组进行了优化,采用静态方式进行管理,并且每次写缓冲区时都进行数组范围判断,防止内存申请失败或者写缓冲区时出现数组越界操作。
* i: T8 L, s2 w/ N1 w! X我们从仓库里面领取了新的硬件设备做测试,一开始怎么也没办法复现出现场的停机现象,验证过程一度陷入了停滞。。。6 Y" X( T5 o; q; T! [+ g

ijwbfsmpwhjHurt59728123.png

ijwbfsmpwhjHurt59728123.png
6 v6 v7 z2 c1 @5 {1 n+ T& _/ T4 ~0 x
但是,在设备连续不断电运行了差不多240个小时之后,事情似乎出现了转机,设备开始出现偶尔的看门狗复位重启,并且随着设备运行时间越长,出现得越来越频繁。(电机启动或者电磁阀吸合瞬间,特别容易出现)
, p$ q. Z( Q! o" c查找方向开始转到硬件设计上。。。
% d! ?' e. i: ^- h8 @3 g8 T这款产品为了方便取电,陈工在硬件内部集成了开关电源,用隔离变压器和整流桥进行 AC 转 DC 处理,PCB 整体布局和布线,据说已经充分考虑 emc 和 EMI 。" B% u# p3 W# v2 C
我们重新检测这台运行了“很久”的设备的各个电源回路,发现当设备运行了一段时间之后,3.3V 的电源回路上就会出现一些噪声,纹波忽高忽低,特别是在电机启动或者电磁阀吸合瞬间,电源噪声可能达到 2~3V 以上。(不是每次噪声都会导致MCU复位,说明这款MCU还是挺“扛噪”的。)
# Z5 e4 `3 D6 T

amr0ttr4w3464059728224.png

amr0ttr4w3464059728224.png

2 Z+ W, i) h+ ^7 p; O
* S  @3 |: c- U( ^1 ~9 z3 B+ l  ^

5b4eydsrosu64059728325.png

5b4eydsrosu64059728325.png

: }4 O% x% F. F这对于 3.3V 供电的芯片来说可能是致命的,电源噪声很容易造成MCU和内存芯片的数据错乱,造成程序莫名其妙地跑飞~4 i& k1 V9 y; p8 p# D
有见及此,陈工马上开始对硬件进行整改,优化硬件的各路电源环路设计,将输入回路、辅助绕组回路和输出回路的环路面积做到最小,以增强抗干扰能力和减少对外的干扰。
( P2 j9 I2 n) Q为了更好的信号完整性和降低电磁干扰(EMI)和减少层间耦合噪声,陈工决定改用 6 层板对 PCB 进行重新 layout,我们在嘉立创领取了打样券,现在样品也能用沉金工艺了,而且免费增加至2u"厚度,盘中孔工艺也可以免费使用,并且不限制BGA封装, {6 `% g/ b) m- P& U

oab3jnow2oa64059728425.png

oab3jnow2oa64059728425.png
1 k2 G& T( G- ]" n: o
以前打个 6 层板的样品,打样费也是一笔不小的研发成本开销,现在嘉立创对于 6 层以上 PCB 的打样政策,工程费可以大降50%,对不少中小企业是非常大的利好。
( g" M% }0 P& N& f( _& p

qwtktntmvxb64059728525.png

qwtktntmvxb64059728525.png

0 \7 U9 G. |4 |$ ]0 m: W8 I* N/ d在关键的电源和存储器芯片上面,也替换为进口方案(贵就贵点,但胜在够稳),这几天布线完之后,应该会发出去打样,等样品回来之后我们再仔细进行验证。$ @  K& e% y; f. t9 a. H2 F
(事情虽然还没有结束,但总算看到了一点希望~
/ C: s! j0 ^$ E

00cc1tcghy3Expression_77@2x59728625.png

00cc1tcghy3Expression_77@2x59728625.png
8 N5 T6 i- i. \
8 A$ d; N. o$ O  w
在开发过程中,客户一直抠成本,产品做出来之后,客户又急着在生产线上面使用,只是经过了基本的功能逻辑测试就交付了(没经过疲劳和可靠性测试),没想到,最后在客户现场还是出现了问题~
- l% @2 Y) o. z( W整个过程,有几点是需要值得我去反思的:
. q( E: P& d9 j$ v' O2 g9 F% x% Z3 T. K1、产品在客户现场出现了问题,电话和信息无法解决的时候,该到现场(挨批)还是要到,一方面为了降低客户损失,另一方面也为了安抚和挽留客户。/ g3 q* q! T, @* f! b  A  B8 Q
2、处理好成员冲突,尽可能地不要让团队成员在客户现场发生矛盾,以解决问题为主要目的,团队成员才是解决现场问题的关键要素。' ~  `5 h, ?  r+ L/ I
3、不能为了降低成本而忽略了产品的稳定性,哪怕客户一直要求降低成本,也要管理好客户的预期,明确告知客户降本的风险。& W' N) n3 H8 _6 T0 T" l; j# R
4、做硬件产品研发还是得坚守原则,该遵循的流程还是要遵循,该做的测试还是要做(哪怕后补,也要有测试数据),EMC和EMI,可靠性测试,疲劳测试,耐久度测试,等等。
& s, f* p( X7 f0 Y: }* h. y5、事情的进展,有时候看上去似乎停滞不前,但也不要马上停下来,(就好比,让设备空转运行也得让它转),没准过一段时间就会迎来转机~) T- q" e, T% c6 I/ O
最后,希望这次改版能行,生活又给我上了一课!~% k# U- q% j) A
. E0 [- s" k9 y# @. Q

2 j6 ]/ W7 K2 X5 M3 R

jtqggdtdwqf64059728726.png

jtqggdtdwqf64059728726.png
6 h0 Q1 @2 ]- U& q
▲ @幕后硬汉:随手上传“创新背后的故事”,瓜分100000+大奖!. |) I0 ^- _6 ^$ o' o0 Z
-END-
) Q7 I; y& J6 ^" f往期推荐:点击图片即可跳转阅读3 W* _+ X8 ^3 o6 _
; ]! }- |; \& {2 b( S) C
                                                        1 v. l0 l0 X/ @4 K% C
                                                               
) s. b/ k9 d( B3 J: R8 Z7 z                                                                        ! w" G9 }$ ]0 k9 y% u, a" G( B+ `
                                                                               
' {* T+ E4 R0 @

egdtzu2dfq564059728826.jpg

egdtzu2dfq564059728826.jpg
$ @- O! P* B% k4 x: n- x
                                                                               
( [, c$ D: J8 F                                                                                        硬件都做出来了,客户说想改一下,结果,全部推倒重做!
8 B; }6 U. ^* W3 i                                                        % W' n2 C5 F' O3 `
                                                                6 G3 ]- u+ m) |* O, _
                                                                       
. F# j; ~8 r) j9 h% k# w7 M' t. N% X$ c                                                                               
' I4 A) c/ }, h' |) y- t0 d

miesxw3r4g464059728926.jpg

miesxw3r4g464059728926.jpg

& `! ~5 T" z# m) z2 g! N, D                                                                               
- r* ?2 C& F% S                                                                                        不想让嵌入式核心板吃灰,于是,我准备对它下手了!
+ {) q. s( s$ s$ p/ W0 E6 m  Q                                                                ' ~6 s4 R4 y7 \! y
                                                                        & I, t: d4 X+ x# X+ z. ^
                                                                                4 B+ Z! H) p  K( L0 X2 x8 E% g

iwfuvc35qri64059729026.jpg

iwfuvc35qri64059729026.jpg

! l' t; R" f9 u) B                                                                                % @) z) C4 M1 A" S& F1 \
                                                                                        这些嵌入式主板,确实惊艳到我了!
( H) ]7 }! b$ l- U! V$ k" d% q6 S' j                                                                                * J' n: }( a2 Z6 b* v3 i
                                                                        6 j9 L) D0 Y4 j6 s/ L
                                                               
; Z, W0 s1 `. R4 N6 v+ [' {2 z                                                        我是老温,一名热爱学习的嵌入式工程师
+ N3 b% \' K: F( R1 {) x0 c关注我,一起变得更加优秀!
回复

使用道具 举报

发表回复

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

本版积分规则


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