作者ykjiang (York)
看板Soft_Job
標題Re: [討論] 程式設計師,好吃技術的職業喔!
時間Sun Dec 28 12:58:40 2008
我剛好也是搞 Embedded Systems 的, 8 bit MCU ,不過我比較好運,
現在只要搞消費級的就行了,不像 kerickuo 要搞醫療級的 ^___^
手邊有款產品,只有 8K 的 SRAM ,卻要在其中塞進所有的 code 及 data
變數,雖然有外掛一顆 SPI 介面的 NOR flash,但很明顯的,不能直接在
它上面跑程式。
首先,我寫程式不但會設法避免用 else ,連 if 我都用得不大情願。
那要如何確保程式正確?
我覺得最重要的當然是作完善的思考及邏輯分析,當然,就如 luciferii
所說的,人都會難免有恍神的時候,要避免恍神時犯的錯,我採用以下幾
個方法:
1. 即使程式簡單到睡夢中都能寫出來,寫的時候也盡量不要睡覺 :)
2. 盡量簡化邏輯,少用 if 及特例
3. 對重要的部份作完善的單元測試
4. 複雜的數值運算先用 compiler 廠提供的 simulator 驗證過
5. 重要的邏輯區塊先在 PC 上用其他 C compiler 驗證過
6. 盡量不用 global 變數
7. 以 assert 防呆
8. 瞭解 compiler 的記憶體配置方式,適時檢查 map 檔
9. 其他防呆技巧...
最後,我很好奇 kerickuo 的開發平台是什麼?
怎麼有提供 stack overflow 的檢查機制?
如果有這個機制可用,我也會把它用在可疑的地方,用來 debug
※ 引述《kerickuo (紅框獨居帥老人傳說)》之銘言:
:
: 例如在下搞一個很冷門的 Embedded System (為了省空間幾乎只有基本的簡單kernel.. ),
: 而搞 Embedded System ,其實常常發生 overflow 的問題,
: 畢竟常常有東西是 8 bits 或 16 bits 的,
: 於是我就漸漸養成一定會去檢查溢位的習慣。
: 常常被溢位搞到於是自然很重視這個檢查,
: 要不然以前覺得只是個加減還加什麼溢位檢查,根本是嗤之以鼻^-(oo)-^。
: 推 luciferii:不管是註解、debug message、else和所有垃圾除錯碼 12/28 12:11
: → luciferii:出發重點就是在於不要相信「人」的能力 12/28 12:12
: → luciferii:不一定會派上用場,只是種保險作法。我不認為這是「好程 12/28 12:13
: → luciferii:式所要避免」的,再熟練的人類高手,也有恍神的時候。 12/28 12:14
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.59.19.115
推 kerickuo:Sun 的一個 for mips 的詭異的平台,剛好有提供 ^^" 12/28 13:37
→ kerickuo:不過那function只是回傳某個reg的值而且一發生印完就cras 12/28 13:41
→ kerickuo:crash, 所以檢查出來還是要在前面就先處理掉 orz 12/28 13:42
推 ledia:單兵作戰 ? 12/28 13:51
推 kerickuo:而且跟8K的SRAM比起來,我可以用的RAM大小很奢侈...orz 12/28 14:14