电子产业一站式赋能平台

PCB联盟网

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

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

[复制链接]

568

主题

568

帖子

4219

积分

四级会员

Rank: 4

积分
4219
发表于 2024-12-2 11:50:00 | 显示全部楼层 |阅读模式
我是老温,一名热爱学习的嵌入式工程师% o4 v5 T1 }" N# e4 n
关注我,一起变得更加优秀!# `/ j9 l7 R3 p+ H! l+ ~
最近遇到了一件糟心的事情,交付给客户现场运行了不到一个月的硬件定制产品,开始出现无规律的停机现象,已经影响到客户的生产线运作,客户已经开始炸毛了。2 u& M  {. t- C3 [2 ]# L

k2osnhxxrie64059727823.jpg

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

1gllhlimlva64059727923.jpg

1gllhlimlva64059727923.jpg
$ y) _0 b6 p( H, O* g
(从客户现场回到公司后。。。)
' q) D* H+ u0 H( u- C现场出现问题的是一款工业三相电机控制器设备,采用 AC-220V 供电,里面有 AC 转 DC 电源模块,带有显示屏和联网功能,支持继电器输出和隔离光耦输入,支持 RS485 和 CAN 通信功能,设计框图如下。) {# T. C& s8 U1 e7 A

jn4jrmww0kr64059728023.png

jn4jrmww0kr64059728023.png

* g! h5 E7 c* s由于考虑到工业信号的实时性和多任务并发处理,李工设计嵌入式软件时,采用了 FreeRTOS 操作系统进行任务调度,而且还在外部SDRAM开启 Framebuffer 缓冲区,用来给GUI进行刷屏。, S, ]- D/ S4 a* d' `% b
为了减少内存溢出的风险,李工对各个数据缓冲区数组进行了优化,采用静态方式进行管理,并且每次写缓冲区时都进行数组范围判断,防止内存申请失败或者写缓冲区时出现数组越界操作。( `4 ^; O0 h) H; }$ C; `" y2 v
我们从仓库里面领取了新的硬件设备做测试,一开始怎么也没办法复现出现场的停机现象,验证过程一度陷入了停滞。。。
* a6 S% b: i6 H, Z$ d# k  @& i+ K& m0 L

ijwbfsmpwhjHurt59728123.png

ijwbfsmpwhjHurt59728123.png
- I, ~2 ]" j6 R1 {
但是,在设备连续不断电运行了差不多240个小时之后,事情似乎出现了转机,设备开始出现偶尔的看门狗复位重启,并且随着设备运行时间越长,出现得越来越频繁。(电机启动或者电磁阀吸合瞬间,特别容易出现)
8 l/ B# s  k  `3 R查找方向开始转到硬件设计上。。。  u, A  i# ~! N+ b
这款产品为了方便取电,陈工在硬件内部集成了开关电源,用隔离变压器和整流桥进行 AC 转 DC 处理,PCB 整体布局和布线,据说已经充分考虑 emc 和 EMI 。
6 x0 M, }8 j/ M: s. j1 _我们重新检测这台运行了“很久”的设备的各个电源回路,发现当设备运行了一段时间之后,3.3V 的电源回路上就会出现一些噪声,纹波忽高忽低,特别是在电机启动或者电磁阀吸合瞬间,电源噪声可能达到 2~3V 以上。(不是每次噪声都会导致MCU复位,说明这款MCU还是挺“扛噪”的。)
% V. C, g$ b. t3 C: e& {7 E0 G

amr0ttr4w3464059728224.png

amr0ttr4w3464059728224.png
' Z6 c5 _8 p2 p
- r) |' \  D( r; Z* v

5b4eydsrosu64059728325.png

5b4eydsrosu64059728325.png

( Z) r, G/ z" Y" _1 C: r; [" U6 r这对于 3.3V 供电的芯片来说可能是致命的,电源噪声很容易造成MCU和内存芯片的数据错乱,造成程序莫名其妙地跑飞~) K7 @* L2 g; ?, ]( ]9 o
有见及此,陈工马上开始对硬件进行整改,优化硬件的各路电源环路设计,将输入回路、辅助绕组回路和输出回路的环路面积做到最小,以增强抗干扰能力和减少对外的干扰。
' [+ \8 L* C! |为了更好的信号完整性和降低电磁干扰(EMI)和减少层间耦合噪声,陈工决定改用 6 层板对 PCB 进行重新 layout,我们在嘉立创领取了打样券,现在样品也能用沉金工艺了,而且免费增加至2u"厚度,盘中孔工艺也可以免费使用,并且不限制BGA封装
/ V2 E' P1 X/ }  c, Q% D

oab3jnow2oa64059728425.png

oab3jnow2oa64059728425.png

4 Z; n; @/ c: P3 D. \0 B6 D以前打个 6 层板的样品,打样费也是一笔不小的研发成本开销,现在嘉立创对于 6 层以上 PCB 的打样政策,工程费可以大降50%,对不少中小企业是非常大的利好。
% e0 I: o- z7 a0 G* _

qwtktntmvxb64059728525.png

qwtktntmvxb64059728525.png
5 ^- A$ y4 G& J
在关键的电源和存储器芯片上面,也替换为进口方案(贵就贵点,但胜在够稳),这几天布线完之后,应该会发出去打样,等样品回来之后我们再仔细进行验证。
2 X0 }$ S4 n/ p. h( P/ a) M/ @(事情虽然还没有结束,但总算看到了一点希望~
  Q; g: }, T+ }! q+ i" _8 h

00cc1tcghy3Expression_77@2x59728625.png

00cc1tcghy3Expression_77@2x59728625.png
. F$ a7 G1 j1 S% Q
" `4 d4 T7 K, `& |9 _
在开发过程中,客户一直抠成本,产品做出来之后,客户又急着在生产线上面使用,只是经过了基本的功能逻辑测试就交付了(没经过疲劳和可靠性测试),没想到,最后在客户现场还是出现了问题~2 G1 i8 P2 ^7 r8 a
整个过程,有几点是需要值得我去反思的:
$ l) a8 n% Y7 M8 }7 Y# v1、产品在客户现场出现了问题,电话和信息无法解决的时候,该到现场(挨批)还是要到,一方面为了降低客户损失,另一方面也为了安抚和挽留客户。9 W9 f/ x* |( j7 X2 D6 ^6 Z
2、处理好成员冲突,尽可能地不要让团队成员在客户现场发生矛盾,以解决问题为主要目的,团队成员才是解决现场问题的关键要素。
  H, G8 ^0 T; _4 w! I' s3、不能为了降低成本而忽略了产品的稳定性,哪怕客户一直要求降低成本,也要管理好客户的预期,明确告知客户降本的风险。7 D9 ^$ m0 s3 d7 _( E, h
4、做硬件产品研发还是得坚守原则,该遵循的流程还是要遵循,该做的测试还是要做(哪怕后补,也要有测试数据),EMC和EMI,可靠性测试,疲劳测试,耐久度测试,等等。. m' h: W! F  Z5 V2 D( ~$ v
5、事情的进展,有时候看上去似乎停滞不前,但也不要马上停下来,(就好比,让设备空转运行也得让它转),没准过一段时间就会迎来转机~
1 o4 Y- y% l& E7 p+ y& l! Z最后,希望这次改版能行,生活又给我上了一课!~
! r4 U# S5 G9 M* _2 M0 |# t
* _. L7 k) G2 @) f; i+ Z) c% W; i7 }% }; Z, z- ?  S* g+ _$ s0 n- p

jtqggdtdwqf64059728726.png

jtqggdtdwqf64059728726.png
. z7 k1 N# A1 c7 r1 m7 `+ [
▲ @幕后硬汉:随手上传“创新背后的故事”,瓜分100000+大奖!5 D" K" `1 ~, p4 ]: e* {4 }0 n) Y
-END-
' a  r& p# |9 L: [0 [往期推荐:点击图片即可跳转阅读. q/ [5 X% E6 [% L1 v

# L; u) o$ i# Z% ~: d                                                       
9 o+ S: l; e- E. g                                                               
7 `4 d- }( V3 w) ?0 a: }) U                                                                       
  w9 X2 a9 z- I4 N                                                                                8 l) }8 B! ?' F. s2 V

egdtzu2dfq564059728826.jpg

egdtzu2dfq564059728826.jpg

: D% H& c0 L) Y7 K% d                                                                               
# h+ b$ }, y$ E* q. J( I* x                                                                                        硬件都做出来了,客户说想改一下,结果,全部推倒重做!
: k1 G* J" J  u                                                       
$ x, j$ C4 o, t* B- A                                                                " V2 F) V8 t* Y3 k
                                                                        2 i- ?3 E8 r9 H* S8 Z+ Z
                                                                               
: |9 y" V4 P. r: J

miesxw3r4g464059728926.jpg

miesxw3r4g464059728926.jpg
" r8 y  c( S( V6 K) P1 E  x
                                                                               
+ @" I# G& A9 }: S3 u                                                                                        不想让嵌入式核心板吃灰,于是,我准备对它下手了!. k/ e3 _; u* u3 A) G: |0 a) P, [
                                                               
7 I, n5 B+ o8 U# P: t: F/ K+ s                                                                        ) M* }  O$ g, [( p# I9 L. Z7 `
                                                                                , |+ h" d7 i7 L+ f( C9 M! I; D

iwfuvc35qri64059729026.jpg

iwfuvc35qri64059729026.jpg

* [3 O; }+ J$ h+ J5 R                                                                                1 x, K# i% I) ?, L) R! N
                                                                                        这些嵌入式主板,确实惊艳到我了!
' d; \- A2 j4 T! H1 H# K                                                                                / T: D2 g9 }& I+ @. x( A, E/ v
                                                                        : S+ Y. A3 n8 a: W
                                                               
% S6 b2 H* @2 P! O- h0 p  B                                                        我是老温,一名热爱学习的嵌入式工程师" L# ?  n+ S1 h4 {' v$ r, T- j
关注我,一起变得更加优秀!
回复

使用道具 举报

发表回复

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

本版积分规则


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