作者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
1F:推 kerickuo:Sun 的一个 for mips 的诡异的平台,刚好有提供 ^^" 12/28 13:37
2F:→ kerickuo:不过那function只是回传某个reg的值而且一发生印完就cras 12/28 13:41
3F:→ kerickuo:crash, 所以检查出来还是要在前面就先处理掉 orz 12/28 13:42
4F:推 ledia:单兵作战 ? 12/28 13:51
5F:推 kerickuo:而且跟8K的SRAM比起来,我可以用的RAM大小很奢侈...orz 12/28 14:14