Re: [問題] 請問有沒有專門討論關於韌體程式的版?
常用的副程式或是module可以寫成副程式的方式
但是假使使用call的方式 可能要把一些暫存器push/pop 會影響效能
不用call的方式 直接執行該段程式 聽起來很白木 免了push/pop卻佔rom size
但是執行起來卻是效能比較快 有時候這本身就是需要取捨
就如同使用c/asm寫一些51的code一樣 可讀性高不代表效能好
這也是有取捨的 有時候為了擠出一點效能卻得犧牲可讀性
除非到高階的CPU 所謂的OO的概念才能有所發揮
不然很多低階的CPU用OO不見得能達到最大的投資報酬率
※ 引述《w0717.bbs@ptt.cc (愛笑的蚵仔煎加蛋)》之銘言:
> : 哇... 有人在提有趣的東西了:P
> : 小弟平時是做韌體方面的比較多 但大學以前主要是接觸軟體方面
> : 也和別人一起接過要用上四個design pattern的較大型的軟體專案
> : 坦白說 在目前韌體上 小弟認為要用到OOA/OOD還太早
> 是這樣沒有錯,可是我總是常常在想,
> 就算沒有OO的compile,
> 可是程式的寫法跟意境,其實還是可以放在裡面的
> 有人說過OO只是ㄧ種概念,甚至也可以用再組合語言
> 對這個我深信不疑,但我還不會
> 所以才想提昇自己功力
> : 可能小弟用的都是low level的CPU吧
> : 一方面不是所有CPU的complier都支援C++支援得很好
> : 另一方面CPU的速度不夠快到可以奢侈地寫漂亮的code
> : 另一方面記憶體更是少得可憐
> 對對,我也有遇到過一樣的情形,
> 我師父跟我說:ㄧ樣功能的程式有三種寫法
> 節省ROM SIZE,節省RAM SIZE,效能考量
> 當初我開發是再ROM快到極限的情形下寫程式
> total ROM SIZE 有64K,可是已經用掉了60K
> 所以有時候要犧牲效能,或犧牲RAM
> : 您提到mp3 player, 之前小弟自己做了mp3 player來玩
> : 在FAT32的部分 就不可能把code寫得太漂亮
> 這我也有切身之痛喔
> 可是每次只要拿到原廠給的程式
> 程式架構和軟體技巧有夠華麗的
> 就會覺得自己寫的東西真像屎
> : 簡單的說 你不可能用recursive去解folder下的folder
> : 因為解一次可能就是0.5K的memory size
> : 可是完成這個工作只需要1K以下的memory(目前小弟做到1K而已)
> : 另一個方面 在embeeded system上 CPU換來換去
> : 要做到hardware abstraction layer不難
> : 但小弟每每都將code寫成chip dependency或I/O dependency
> : 因為每次k spec的時間太長 若code不寫成呆呆的樣子
> : 會把跟spec的部分寫不單純 拿出來看很難一頁就能從code反譯成spec
> : 我同意寫韌體要盡量做硬體/韌體/軟體的切割
> : 但是基於以上小弟的一些想法 其實小弟的firmware code總常會有一種
> : 寫漂亮不是最重要的想法 去抗拒我寫太好看XD
> 這樣講也很道理,不過我一直在想這算不算是瓶頸呢?
> 應該有兩全其美的方法,只是我不知道而已
> : 小弟認為目前object based還有可能 object-oriented似乎還太早
> : 而且因為不是每個complier都是有C++支援 CPU常常是換來換去的
> : 所以.......:P
> : 小弟對這方面也很有興趣 拋磚引玉一下
> : 上面的想法多半是個人經驗罷了 歡迎高手指正一下:)
> 用c寫出OO概念的程式一直是我的夢想
> 降子就沒有complier的問題了吧^^
> 感謝您的分享喔
--
夫兵者不祥之器物或惡之故有道者不處君子居則貴左用兵則貴右兵者不祥之器非君子
之器不得已而用之恬淡為上勝而不美而美之者是樂殺人夫樂殺人者則不可得志於天下
矣吉事尚左凶事尚右偏將軍居左上將軍居右言以喪禮處之殺人之眾以哀悲泣之戰勝以
喪禮處之道常無名樸雖小天下莫能臣侯王若能守之萬物將自賓天地相合以降甘露民莫
之令而自均始制有名名亦既有夫亦將知止知止可以不殆譬道之在天下203.69.97.52海
討論串 (同標題文章)
以下文章回應了本文:
完整討論串 (本文為第 4 之 5 篇):