|
我是老溫,一名熱愛學(xué)習(xí)的嵌入式工程師
5 B4 s( }5 N. O, D B0 h* y% o關(guān)注我,一起變得更加優(yōu)秀!
; p/ ]! h0 G! |2 k' ]最近遇到了一件糟心的事情,交付給客戶現(xiàn)場(chǎng)運(yùn)行了不到一個(gè)月的硬件定制產(chǎn)品,開始出現(xiàn)無規(guī)律的停機(jī)現(xiàn)象,已經(jīng)影響到客戶的生產(chǎn)線運(yùn)作,客戶已經(jīng)開始炸毛了。
; r5 O& U, o- j% Q
k2osnhxxrie64059727823.jpg (193.28 KB, 下載次數(shù): 0)
下載附件
保存到相冊(cè)
k2osnhxxrie64059727823.jpg
2024-12-3 23:07 上傳
7 A# y6 E" g5 ~8 R; s7 ]在跟客戶進(jìn)行了一通“友好”的電話溝通之后,我和嵌入式軟件工程師李工,馬上訂機(jī)票飛往客戶現(xiàn)場(chǎng),一方面是為了安撫好客戶情緒(現(xiàn)場(chǎng)挨批),另一方面是為了了解現(xiàn)場(chǎng)機(jī)器的運(yùn)行情況。- Q) F, Z; n4 u1 L5 u# E" w' ?
根據(jù)停機(jī)現(xiàn)象,我們懷疑是設(shè)備在運(yùn)行一段時(shí)間后,程序出現(xiàn)了偶發(fā)性卡死,然后外部看門狗會(huì)對(duì)機(jī)器進(jìn)行強(qiáng)制復(fù)位,復(fù)位后的設(shè)備雖然能重啟進(jìn)入界面,但機(jī)械結(jié)構(gòu)會(huì)從運(yùn)行態(tài)切換為停止態(tài)。
8 \4 S! G3 g, t! i. L; @(有些工業(yè)設(shè)備不允許上電就直接運(yùn)行,需要重新人工開機(jī))1 n) [4 U' Z. d0 Z/ a
為了找出程序跑飛時(shí)的棧調(diào)用情況,李工啟用了 cm_backtrace 組件,然后結(jié)合 addr2line 對(duì)程序跑飛時(shí)的棧調(diào)用情況進(jìn)行了分析。
. Q; z. I0 I: l U9 y因?yàn)橥C(jī)無規(guī)律出現(xiàn)(后來發(fā)現(xiàn),電機(jī)啟動(dòng)一瞬間出現(xiàn)的概率高一點(diǎn)),很不容易地抓取到兩三次停機(jī)之后,我們發(fā)現(xiàn)程序有時(shí)候出現(xiàn) HardFault,有時(shí)候出現(xiàn) BusFault,并且跑飛的位置不固定。
9 w- A; k6 I/ G, r& d. c1 Z根據(jù)李工的經(jīng)驗(yàn),他懷疑是硬件設(shè)計(jì)的問題,于是打電話給第三方的硬件工程師陳工。。。$ U0 m: g, Q! \+ j
我:“李工,你跟陳工描述一下調(diào)試情況。”
, v2 ^9 [! k. l6 N5 A8 K X軟件李工:“ 陳工,我們現(xiàn)場(chǎng)排查了,程序跑飛的位置不固定,這種情況可能是某個(gè)硬件的可靠性或者是信號(hào)干擾影響導(dǎo)致的~”。 R. u ^( [3 A- t# \2 _
硬件陳工反駁道:“這完全不可能,硬件出廠時(shí)都是經(jīng)過測(cè)試的,測(cè)試時(shí)都沒出過岔子,是不是你軟件內(nèi)存溢出或者邏輯處理得不好?”
, J2 N( y, G9 O* I8 a軟件李工開始不耐煩:“我已經(jīng)把內(nèi)存可能溢出的地方處理了,不是軟件的原因啊,~”
; }: d$ g r# k* j- U硬件陳工急了:“這個(gè)硬件原理,我們以前也用過啊,也沒出現(xiàn)過這種情況,你再找找軟件原因!
/ o2 @; `4 k! f; w- f。。。。。。(兩人你一言我一語(yǔ)地爭(zhēng)論起來,互不相讓,反正都不承認(rèn)各自的原因。)
( T% U- E5 A6 A* ^* V我:“這樣,吵下去也無濟(jì)于事,我先安撫好客戶,回公司后我們馬上復(fù)刻現(xiàn)場(chǎng)進(jìn)行重新測(cè)試驗(yàn)證!”
+ e. _# ]$ S7 v
1gllhlimlva64059727923.jpg (154.17 KB, 下載次數(shù): 0)
下載附件
保存到相冊(cè)
1gllhlimlva64059727923.jpg
2024-12-3 23:07 上傳
2 y/ }, p6 ]4 V& a/ m
(從客戶現(xiàn)場(chǎng)回到公司后。。。)
, f% {3 x+ v$ A2 \# n, d' O現(xiàn)場(chǎng)出現(xiàn)問題的是一款工業(yè)三相電機(jī)控制器設(shè)備,采用 AC-220V 供電,里面有 AC 轉(zhuǎn) DC 電源模塊,帶有顯示屏和聯(lián)網(wǎng)功能,支持繼電器輸出和隔離光耦輸入,支持 RS485 和 CAN 通信功能,設(shè)計(jì)框圖如下。
; D2 ~7 s4 _* k) i7 J
jn4jrmww0kr64059728023.png (46.64 KB, 下載次數(shù): 0)
下載附件
保存到相冊(cè)
jn4jrmww0kr64059728023.png
2024-12-3 23:07 上傳
3 m, ? m3 o+ U; V& o# z* ^由于考慮到工業(yè)信號(hào)的實(shí)時(shí)性和多任務(wù)并發(fā)處理,李工設(shè)計(jì)嵌入式軟件時(shí),采用了 FreeRTOS 操作系統(tǒng)進(jìn)行任務(wù)調(diào)度,而且還在外部SDRAM開啟 Framebuffer 緩沖區(qū),用來給GUI進(jìn)行刷屏。
- g4 J! u& a5 ?. p2 }& D3 S為了減少內(nèi)存溢出的風(fēng)險(xiǎn),李工對(duì)各個(gè)數(shù)據(jù)緩沖區(qū)數(shù)組進(jìn)行了優(yōu)化,采用靜態(tài)方式進(jìn)行管理,并且每次寫緩沖區(qū)時(shí)都進(jìn)行數(shù)組范圍判斷,防止內(nèi)存申請(qǐng)失敗或者寫緩沖區(qū)時(shí)出現(xiàn)數(shù)組越界操作。% l. {" H% x5 z' X3 X5 p
我們從倉(cāng)庫(kù)里面領(lǐng)取了新的硬件設(shè)備做測(cè)試,一開始怎么也沒辦法復(fù)現(xiàn)出現(xiàn)場(chǎng)的停機(jī)現(xiàn)象,驗(yàn)證過程一度陷入了停滯。。。" Y2 r9 \; G5 H! l1 M7 |5 c; u
ijwbfsmpwhjHurt59728123.png (4.37 KB, 下載次數(shù): 0)
下載附件
保存到相冊(cè)
ijwbfsmpwhjHurt59728123.png
2024-12-3 23:07 上傳
8 Z# B/ u9 Z+ m f( v
但是,在設(shè)備連續(xù)不斷電運(yùn)行了差不多240個(gè)小時(shí)之后,事情似乎出現(xiàn)了轉(zhuǎn)機(jī),設(shè)備開始出現(xiàn)偶爾的看門狗復(fù)位重啟,并且隨著設(shè)備運(yùn)行時(shí)間越長(zhǎng),出現(xiàn)得越來越頻繁。(電機(jī)啟動(dòng)或者電磁閥吸合瞬間,特別容易出現(xiàn))( T; t9 X( i% Y0 x p
查找方向開始轉(zhuǎn)到硬件設(shè)計(jì)上。。。
) M, s ?" Y- h8 ^# m3 I這款產(chǎn)品為了方便取電,陳工在硬件內(nèi)部集成了開關(guān)電源,用隔離變壓器和整流橋進(jìn)行 AC 轉(zhuǎn) DC 處理,PCB 整體布局和布線,據(jù)說已經(jīng)充分考慮 emc 和 EMI 。
& p6 Y8 F8 D) Y# e* w我們重新檢測(cè)這臺(tái)運(yùn)行了“很久”的設(shè)備的各個(gè)電源回路,發(fā)現(xiàn)當(dāng)設(shè)備運(yùn)行了一段時(shí)間之后,3.3V 的電源回路上就會(huì)出現(xiàn)一些噪聲,紋波忽高忽低,特別是在電機(jī)啟動(dòng)或者電磁閥吸合瞬間,電源噪聲可能達(dá)到 2~3V 以上。(不是每次噪聲都會(huì)導(dǎo)致MCU復(fù)位,說明這款MCU還是挺“扛噪”的。)
2 I3 M2 R1 p, J
amr0ttr4w3464059728224.png (768.54 KB, 下載次數(shù): 0)
下載附件
保存到相冊(cè)
amr0ttr4w3464059728224.png
2024-12-3 23:07 上傳
9 S7 N. G1 a* h% r( k/ d2 }. E7 Z% o2 D4 p0 k! q5 u6 n
5b4eydsrosu64059728325.png (876.58 KB, 下載次數(shù): 0)
下載附件
保存到相冊(cè)
5b4eydsrosu64059728325.png
2024-12-3 23:07 上傳
: Z3 H& @0 z/ Z3 [
這對(duì)于 3.3V 供電的芯片來說可能是致命的,電源噪聲很容易造成MCU和內(nèi)存芯片的數(shù)據(jù)錯(cuò)亂,造成程序莫名其妙地跑飛~( {, p3 m" \7 S
有見及此,陳工馬上開始對(duì)硬件進(jìn)行整改,優(yōu)化硬件的各路電源環(huán)路設(shè)計(jì),將輸入回路、輔助繞組回路和輸出回路的環(huán)路面積做到最小,以增強(qiáng)抗干擾能力和減少對(duì)外的干擾。" e. `) ]' W& D1 o; F! ~/ g
為了更好的信號(hào)完整性和降低電磁干擾(EMI)和減少層間耦合噪聲,陳工決定改用 6 層板對(duì) PCB 進(jìn)行重新 layout,我們?cè)?strong>嘉立創(chuàng)領(lǐng)取了打樣券,現(xiàn)在樣品也能用沉金工藝了,而且免費(fèi)增加至2u"厚度,盤中孔工藝也可以免費(fèi)使用,并且不限制BGA封裝。
, N! Z- D$ m P+ r8 w9 h0 f9 h7 v
oab3jnow2oa64059728425.png (349.62 KB, 下載次數(shù): 0)
下載附件
保存到相冊(cè)
oab3jnow2oa64059728425.png
2024-12-3 23:07 上傳
) h# r% p( D" V T2 O4 w
以前打個(gè) 6 層板的樣品,打樣費(fèi)也是一筆不小的研發(fā)成本開銷,現(xiàn)在嘉立創(chuàng)對(duì)于 6 層以上 PCB 的打樣政策,工程費(fèi)可以大降50%,對(duì)不少中小企業(yè)是非常大的利好。
3 ?' X: W: f" ^+ k; I
qwtktntmvxb64059728525.png (286.64 KB, 下載次數(shù): 0)
下載附件
保存到相冊(cè)
qwtktntmvxb64059728525.png
2024-12-3 23:07 上傳
8 N% ^4 l7 L6 _2 C2 W在關(guān)鍵的電源和存儲(chǔ)器芯片上面,也替換為進(jìn)口方案(貴就貴點(diǎn),但勝在夠穩(wěn)),這幾天布線完之后,應(yīng)該會(huì)發(fā)出去打樣,等樣品回來之后我們?cè)僮屑?xì)進(jìn)行驗(yàn)證。7 H7 {, i0 R0 Z- h: J9 Y; ~
(事情雖然還沒有結(jié)束,但總算看到了一點(diǎn)希望~3 O( J9 v/ G7 ?9 j4 A0 g7 x
00cc1tcghy3Expression_77@2x59728625.png (4.9 KB, 下載次數(shù): 0)
下載附件
保存到相冊(cè)
00cc1tcghy3Expression_77@2x59728625.png
2024-12-3 23:07 上傳
7 x4 `# c% S; d/ I
)
) E$ y% Y" w$ b G9 h! ?在開發(fā)過程中,客戶一直摳成本,產(chǎn)品做出來之后,客戶又急著在生產(chǎn)線上面使用,只是經(jīng)過了基本的功能邏輯測(cè)試就交付了(沒經(jīng)過疲勞和可靠性測(cè)試),沒想到,最后在客戶現(xiàn)場(chǎng)還是出現(xiàn)了問題~; M/ w0 f- G1 c3 ]
整個(gè)過程,有幾點(diǎn)是需要值得我去反思的:4 U/ K& X* I1 c9 n5 ~5 I
1、產(chǎn)品在客戶現(xiàn)場(chǎng)出現(xiàn)了問題,電話和信息無法解決的時(shí)候,該到現(xiàn)場(chǎng)(挨批)還是要到,一方面為了降低客戶損失,另一方面也為了安撫和挽留客戶。) A" G1 p( U$ I9 j4 r
2、處理好成員沖突,盡可能地不要讓團(tuán)隊(duì)成員在客戶現(xiàn)場(chǎng)發(fā)生矛盾,以解決問題為主要目的,團(tuán)隊(duì)成員才是解決現(xiàn)場(chǎng)問題的關(guān)鍵要素。
3 m, J0 D. Q. G- B7 B- H5 I/ p3、不能為了降低成本而忽略了產(chǎn)品的穩(wěn)定性,哪怕客戶一直要求降低成本,也要管理好客戶的預(yù)期,明確告知客戶降本的風(fēng)險(xiǎn)。
, q& b. V/ Z% `5 H! O4、做硬件產(chǎn)品研發(fā)還是得堅(jiān)守原則,該遵循的流程還是要遵循,該做的測(cè)試還是要做(哪怕后補(bǔ),也要有測(cè)試數(shù)據(jù)),EMC和EMI,可靠性測(cè)試,疲勞測(cè)試,耐久度測(cè)試,等等。* Z' ~ R6 ^; m5 | n* G
5、事情的進(jìn)展,有時(shí)候看上去似乎停滯不前,但也不要馬上停下來,(就好比,讓設(shè)備空轉(zhuǎn)運(yùn)行也得讓它轉(zhuǎn)),沒準(zhǔn)過一段時(shí)間就會(huì)迎來轉(zhuǎn)機(jī)~% ]. R; L, G" _
最后,希望這次改版能行,生活又給我上了一課!~
& c' u! h! y; }/ Y9 m
0 n/ h7 ^* k1 U/ @: Z4 ?* X
2 L* b6 L$ ~, [6 }; S# X% p
jtqggdtdwqf64059728726.png (665.93 KB, 下載次數(shù): 0)
下載附件
保存到相冊(cè)
jtqggdtdwqf64059728726.png
2024-12-3 23:07 上傳
% O9 f1 u w1 ~. ]5 H9 u▲ @幕后硬漢:隨手上傳“創(chuàng)新背后的故事”,瓜分100000+大獎(jiǎng)!$ {: n$ Q: b/ m5 ~0 q
-END-" m( T& c2 H# V. L
往期推薦:點(diǎn)擊圖片即可跳轉(zhuǎn)閱讀7 Q* i1 N; t0 G0 _* r6 D
) m4 a/ D5 E( B! c/ n) f, K/ U8 Y% e
& @1 T- V/ v6 x6 r
; I* A8 H6 M$ J r( n: b( i, ]) S0 ^ 6 C( i' b9 J, D2 x. n' A5 y
) Y% D& Q; H: _$ y
egdtzu2dfq564059728826.jpg (117.64 KB, 下載次數(shù): 0)
下載附件
保存到相冊(cè)
egdtzu2dfq564059728826.jpg
2024-12-3 23:07 上傳
6 _9 G* J0 ]3 ^; P2 D) A0 e
m) k+ ?; h& D2 |% ?/ T% o 硬件都做出來了,客戶說想改一下,結(jié)果,全部推倒重做!
8 }2 Y. R) ^6 g9 X
& Z, `1 { C2 B% o# p 8 U' d! Z( Q4 e6 Y9 J
$ i+ r" M9 ~* q6 c
/ W e# u$ F, c! t. V2 ]
miesxw3r4g464059728926.jpg (258.6 KB, 下載次數(shù): 0)
下載附件
保存到相冊(cè)
miesxw3r4g464059728926.jpg
2024-12-3 23:07 上傳
- z0 U8 i# d, X0 c/ C. N 0 B! E6 m5 X6 |! w/ R9 |
不想讓嵌入式核心板吃灰,于是,我準(zhǔn)備對(duì)它下手了!
" r6 O+ t8 P& z( h! @ : f! ^. A% d- ?! ? w5 D
1 n6 H3 @/ m9 }! H& n2 d8 t6 i
# J6 z# {1 o1 a7 y0 J2 T) O
iwfuvc35qri64059729026.jpg (226.54 KB, 下載次數(shù): 0)
下載附件
保存到相冊(cè)
iwfuvc35qri64059729026.jpg
2024-12-3 23:07 上傳
' i+ c$ {6 e1 N2 `0 n
i3 Q% e) W& K 這些嵌入式主板,確實(shí)驚艷到我了!. J* u) Y# H2 I7 m& e3 E9 H
: r& j3 x/ N3 {2 w9 z3 A, P
" l8 N6 v" P6 |
9 n& Z4 |2 f+ Q% c* {$ a7 V 我是老溫,一名熱愛學(xué)習(xí)的嵌入式工程師
" ^4 E+ a* D3 p, A( W關(guān)注我,一起變得更加優(yōu)秀! |
|