我從來沒有想過,我會因為有人浪費了 10 bytes 的記憶體空間而捉狂,也不知道自己會為了省下 0.1K 的 code size 而放下身段在 C 裡使用 goto....
寫了四年多了 ODD firmware,我第一次覺得我在做 embedded system。
真要說要怪誰,就怪之前的 chip/solution vendor 太奢侈了吧!誰叫他們在光碟機的控制晶片中塞了一顆 32-bit 的 MIPS CPU,32-bit 的 address lines(所以 addressing space 可以到 4GB),還有一套功能強大的 compiler,以及嚴謹到嚇死人的 firmware structure.....雖然偶爾也會遇到 code size 或是 efficiency 的問題,但至少寫起程式來不會綁手綁腳的。
但正是因為他們太奢侈,價格也壓不下來,讓我們不得不換用比較廉價的 solution。但代價就是:CPU 從 32-bit MIPS 變成 8-bit 的 8051;addressing space 變成 64K(所以會遇上 bank switching 的問題);DRAM access 必須透過 DSP 的 registers,所以一般程式內的變數只能使用 256 + 4096 bytes 的空間;處理 32-bit 的變數時,assembler 還會呼叫 library 去處理,所以為了效率,不是太複雜的 double word 運算最好手動拆成四個 bytes 來處理;原本的 source code 打扮得像是要去選美一樣,現在變成一隻只求會捉老鼠的貓........
當然好處也是沒有。正因為它原始,正因為它低階,才能讓我更清楚地去了解最低層動作的每一個細節,讓我驗證以前所學到的知識(雖然這不是現在該做的事),激發我的動力,讓我更仔細地去思考在處理 embedded system 時該思考、解決的問題。
反正,總之,工作還是得做。就當作是成長的機會吧!(不然還能怎麼辦咧?) 🙂

By closer

4 thoughts on “Programming an 8-bit CPU in 21st Centry”
  1. 嘻嘻,光碟机8051也能胜任吗?其实8-bit chip用的好的话性价比不错,但是我挺讨厌8051的,觉得满落后的

  2. 其實我也不喜歡 8051….
    不過台灣的廠商好像很喜歡它。
    便宜的關係吧? :p
    之前還看到某家廠商的 IC,
    內嵌了一顆時脈 100+MHz 的 8501….(倒)
    還真是發揮得淋漓盡致啊!(無言)

  3. 原來你這幾年在搞這些事情啊,我印象中的你還停留在重慶南路和平東路那棟大樓那邊呢。

發表迴響