|
古老的嵌入式系統
十多年前, 我跟學長去幫忙進行一個古老的嵌入式系統....
% L9 m# c7 k- u8 x6 L9 C在一片大約 3 張 A4 的普通面積的 IC 板上, 配置了六顆 MCU (8031, z80, 6502 三種系列),
8 \4 }- C! W; k. p: ], q: l連當時最高檔華邦 FM music chip 都有, 嵌入一堆處理器和記憶體及傳輸裝置, 目的是 ---* J$ P; ]3 `( p) n F& M, J/ Y) ]
串連很多台小蜜蜂或是小鋼珠, 獲得並控制中獎機率, 幫老闆賺錢 !!1 ^' X1 C1 v' {6 \/ g2 z& t A% g% ]
後來, 用 C 寫的程式太大, 漸漸精簡成組合語言的方式, 並減少 CPU 數量,* t" Q9 P1 ^* l ~- Y2 y
最後還衍生出警民連線聯防系統... 不過此時我已經畢業去醫院實習了..." t$ q1 U; Z I
經驗: 以前用 C 寫的程式很難除錯, 我還是慣用組合語言,+ S ~0 j3 u8 J6 v7 v% d
尤其在 debug 中, 居然發現, C 的 compiler 常會有誤設目地資料大小的問題,1 Q9 q* \! h( V. e* {: m
也就是你可能只想寫入 1 個 byte 的 00, 但 compiler 雞婆的給你送 16-bit 的 00002 X _$ ~9 U! Z9 r4 d0 `/ h& ^
即使你已宣告是 BYTE 的大小, 很扯的是, 那時公司�兩位年輕的設計師,! m+ Z& @, b0 `( R4 r, z# I
連續兩週一直無法抓到此 bug, 壓力過大之餘, 只好走人... # ~2 h6 ^6 B0 C7 C9 [
----
2 P5 S8 G0 w0 G3 g- {( h, e9 L幾年前, 我用 GNU CPP 去設計 PS2 的程式, 居然發現全世界很知名的某個外國人,
7 j% A o( F1 E9 m4 j+ H# ]$ r+ Y k$ G# r他所 release 出來的 source code, 也好像故意在幾個地方偷改 size modifier,
; o2 E/ ^) T1 s9 Q3 K讓我們用他的部份程式碼來寫自己的計劃時, 會在某些特定的時機當死, 且很難除錯 !!
1 z9 ]7 m1 \6 i+ C! z(相同的 C 程式碼就能在我的 PC 上用自己設計的 PS2 模擬器 Run 的好好的, 只是少了那幾個有 bug 的程式,
7 g* ]0 B5 Y& i8 H; P, z於是才讓我去仔細把 MIPS R5900 的機器碼對照回 c source code, 才發現不對, 並證明此等釋出"有害"程式的不良行徑)% ]6 p* l) O0 z$ n# w5 o
這也是直到我的除錯功力大增之後, 才發現的... (抓這幾個錯也豁出了好幾週不眠不休的日子 !)
, T6 y/ W! e2 g" b) |% T) \所以, 不管是哪種嵌入式系統, 都可能有除錯不易的問題 !!
& s: R4 I5 {: N--> 在下不才, 提供給大家看看笑笑就好.. |
評分
-
查看全部評分
|