SDCC移植 – 前言

小型裝置的 C Compiler (Small Device C Compiler)
有些小型的 MCU,因為 ROM 及 RAM 的關係,其實寫組合語言比較好控制開發的使用量,可以用到非常的極限
但為什麼還是要開發 C 語言?
因為現在會寫組合語言的人愈來愈少了
針對 MCU 來說,C 語言還是比較好上手的一個語言,網路資源也多

個人見解,當拿到一個別人家開發的 C 語言專案,直接改改程式內 MCU 暫存器的設定及寫法
程式的邏輯架構甚至都不用什麼改動,就可以直接從 A 家的 MCU 換到 B 家的 MCU 上,組語就只能重刻
產品開發的時間就差距很大了

只不過用 C 語言的缺點就是 ROM 及 RAM 的消耗會比寫組合語言來的多
畢竟高階語言要考慮的點太多了,只能用一個比較全面的寫法去兜出組合語言出來
同樣的一個動作,會寫組語的人可能用幾行就可以寫出來,但 C 轉出來的可能會是數十行

相對的來說,同樣大小的 ROM
老闆要求十項功能,寫組語的人可能可以自己最佳化出最好的寫法然後壓在有限大小的 ROM 內
而且十項功能都可以做出來

但用 C 的話,可能只能完成七、八項功能就差不多滿了,要完成十項功能,可能就是要換大一顆的 ROM
對老闆來說就是成本變高

但是你說成本高一點 vs 開發產品的速度,老闆會選擇哪一個
小孩子才做選擇,老闆當然是希望成本低,開發又可以很快的東西 XD
最好是連開發都丟給公司的 FAE 會更好,他們連人都不用養

SDCC 是一個開源的 C Compiler,像 GCC, LLVM 一樣
站在巨人的肩膀上,我們只需要負責後端轉換的部份即可,不需要去考慮 C 語言的部份

當然你說為什麼要選擇 SDCC,當然是因為剛好有對象可以把架構拿來移植啊
指令集及 MCU 特性相近的拿來移植可以省去不少時間
而且 SDCC 針對小型 MCU 做設計,所以相較於那種 GCC、LLVM來說,轉出來的指令碼或許會更適合也說不定
不過有機會還是可以拿 LLVM 來移植小型的 MCU 看看 (如果可以的話)

下篇就先講怎麼架環境吧
要移植,當然是要先把玩境架起來,原始碼能正確的 Build 起啊
不然一切都是空談

發佈留言