2008年6月14日 星期六

學單晶片經驗談(一)

我想一定有許多剛學單晶片的朋友,又剛好很幸運的找到版主的相關網頁,

但是可能覺得很不好意思的想問版主說:我剛開始要如何入門單晶片呢?!

我還要玩所謂的線上模擬器(仿真器)-- ICE 嗎?....

當然一定對版主的當年的學習過程感到好奇的...

我就稍微回顧一下吧:

以我們這種門外漢也不是電子科班出身的,一開始也當然是到處問人家,

(我們本來就不會,才要問人家嘛...有什麼不好意思的呢!...頂多還是不會而已吧!)

當然還是要有一點厚臉皮啊...學海無涯,您怎麼可以怪人家都懂呢?!

反正,知之為知之,不知為不知,是知也!---這也是一種很好的學習態度。

到現在版主對於不懂的東西,也會裝可愛、裝無辜的請教人家...

-----
版主剛開始接觸單晶片時,誠如上一篇那個車用電子控制器所言,

是那個NEC 的單晶片,沒有ICE 也沒有學習版...就開始摸了。

就一次到位,連韌體及PC 端的通訊程式一起搞...不瞞您們說,

當初一開始也覺得VB 的RS232 還蠻好用的,UI (使用者介面)也很好寫,

您們知道嗎?!那最早文魁出版社所出的那一系列VB 與RS232 串列通訊的作者--范逸之先生,

也是所謂的『一支仔』大師...還是版主同一梯的老同事呢!!

不過,後來還是轉用C 來寫...還是Turbo C 呢!...

您們覺得這些不管是用VB 或是Turbo C 來說:學習最重要的是:要設定一個標的目標,

譬如說像一個引擎控制器..或是一個還蠻像樣的引擎儀表的PC 操作畫面等....

在心中把他當作是一個專案開發...您很專注的把他給完成!如此一來,

您就會從中學到許多基本功....

後來玩上癮了...人家就跟版主說:那您也應該試試看8051 ...所以,就換個8051 來玩玩!

不過,要玩8051 就不必這麼辛苦了...周邊的開發環境就比較完整了。

那時:同事與長官也覺得版主很投入,也有上進心...所以,也就支持版主了...

所以:就買進了生平第一台單晶片開發平台:8051 ICE了。

我想老一輩的應該都有看過一款8051 ICE吧。打開看還蠻有『份量』的,

至於他是哪一家作的...剛好版主後來真正踏入電子行業之後,也慢慢的有機會接觸這個業界,

也就多多少少就認識一些人...也對這家公司略知一二了...這家公司是在新竹市光復路上...

不過,至於,現在如何?!已經不重要了...

這種ICE主要還是綁一些特定的單晶片平台,如果,您還要轉別的單晶片就不行了...

為何我要如此說呢?!---因為他就不像 ROM 模擬器那般比較與單晶片無關!

所以,以未來學習各類微控器或微處理器來說...就沒有ROM模擬器那般長的使用壽命了。

這台ICE也是幾乎從此就靜靜的躺在那個小角落...就等我今天來給他拆解了...

這種ICE 最重要的是:他有一個要接到目標版的插座:來取代目標版上原本的單晶片。

----其實,這種ICE 還是需要一棵類似原廠的ICE 專用IC...因為他可以幫我們準確的攔截斷點(break),

或是可以讓我們讀取一些單晶片內的暫存器來供我們除錯...然後,剩下的就是與PC 端的連線功能了...

我們所謂斷點Break 指的就是所謂的Trap (也可以叫做陷阱)...這是一開始要執行前就要設定的...

而當MCU執行時,他的Program counter(PC值) 去踩到這個Trap 時,他就自動停下來...

(其實也就是讓MCU 的Program counter -- PC值停住!)

這個跟一般RESET不太一樣的...因為一般MCU 的Reset 是會做一些暫存器的清除動作,

而在ICE上就不能作這個動作,因為人家除錯程式要看這些暫存器的值的....

所以,這個版子上的這顆IC 應該就是這個功能了....

不過,後來許多MCU 就多多少少有一些類似JTAG 裡Boundary scan 的設計觀念之後。

這種設計方法就後來比較少見了,而類似的功能,在一般標準市售的MCU也可能直接做到了!

------

另外我們再來看:這個ICE 的控制器面....他是由兩塊上下版所構成的...裡面無非就是一堆

FPGA 及記憶體Buffer 的東西...一方面就是讓您的下載程式有擺放的地方...(可以隨時更新)。

還有一些基本的去設定ICE 專用IC 的斷點的通訊介面等等...還有與PC 端的通訊程式,

喔...看來他這一部份也是用一棵8051 寫個UART(RS2323)介面的...

---以上的功能純粹是版主的推演...我想應該就是如此了...因為版主也搞過類似的東西...

那個FxxA 第一代的ICE 也是版主"搞"過的,您們也可以看到那個FxxA ICE上用的USB Controller,

是哪家的...您們大概就知道了...所以,整個ICE 流程也略知一二,也應該相去不遠。

其實,大家也不必太訝異,這塊ICE的控制版這麼複雜...說真的...現在工程師都已經比較不會用TTL邏輯電路了,

而一般微控器也不一定剛好符合您的需求設計...所以,就可以用FPGA來作...

但用FPGA來作的最大缺點之一:就是體積問題...因為,只要您功能稍微複雜一點或是VHDL 的功力不夠...

您就只能挑大一點的FPGA....還有... FPGA 設計還有一個很討厭的地方...就是Clock 同步問題。

這會很容易造成您在模擬速度上的限制,所以,明明人家標準的MCU可以跑 24 MHz...

而在ICE模擬器上只能跑12 MHz 等諸如此類的問題,(就是跑起來怪怪的啦!)所以,

人家就直接會跟您說:ICE 要降頻跑...那這個模擬器要模擬什麼?!...還只是拿來學單晶片的呢?!

還是要拿來開發系統產品呢?!....您自個兒就看著辦。

-----------------------------
說真的,這台ICE 版主其實也沒玩幾次,就隨手丟在一旁了...真的很難玩...而且還真的一些在

Clock 的設定上感覺不是很穩...當然,還有那個PC端的使用環境...也寫得不怎麼樣...

這好像國內的廠商都有同樣的問題喔...(這是因為也養不了這麼多軟體工程師啊!)

要不然就學人家Silicon Lab 的8051 ...就直接跟Keil合作...

軟體開發平台就用8051 界裡世界第一的Keil uVision...多省事啊。

所以,往後就分成兩個方式:若只是想純粹學單晶片,就找一塊既便宜,又容易下載程式的小版子...

後來,版主就買了旗威科技林老師的那片 Flag-51 ,也就是因為如此,就跟林老師

建立起多年的情誼,當然,一則大家剛好是同鄉...二來,我們兩個站在一起,

人家還以為我們兩是兄弟呢....這是林師母說的....哈~哈~......
 
而至於作產品開發呢...就直接開幹...還可以磨練自己寫韌體與DEBUG功力...也不錯。

不過,現在這一部份就應該簡單多了,

因為一般MCU都有支援Flash 或ISP(in-system programming)功能 ,

可以反覆的Try 程式。一棵Flash 的MCU 還是比一塊ICE 或是學習版便宜多了吧....

---
大家順便可以從上圖照片的下方可以看到那顆 8751...就是8051 EPROM 版本的...

(還是Intel 原廠的耶!)

還包玻璃窗封裝可以讓大家透過紫外線清除程式的....不好意思,這種包裝技術已經被淘汰了!

而國內大部分的MCU 都號稱OTP (On-Time Programming),其實都是這一種的啦!

因為沒有可以讓您照紫外線,就只好說:OTP 了。

(這根所謂的MASK 又不同喔...Mask 是要改光罩投晶圓廠的啊!)

至於,國內這些不同於8051 族系的MCU 會不會出所謂Flash MCU...

以版主的觀點來說:應該可能性不大...因為說真的,台灣製的MCU還是被全世界定位成較低廉產品,

而且一般都只會鎖定架構簡單,便宜量大的產品...所以,要改Flash是比較難啊!

(況且越複雜的MCU 他們的開發平台軟體,也相對複雜...以國內輕軟體重硬體的觀念...呵~呵!)

如果這些廠商都覺得應該向上提昇本身的格調與世界地位的話,那您就要小心了...

因為原來同樣的產品與價位的東西與市場,就會被大陸給撿去作了...就得小心劃虎不成,反類犬!

搞得最後兩頭空...  這些就跟學單晶片無關話題了!

------------------
至於,現在要學習一般標準的8051 或是一些較普及單晶片的學習版...

說真的,個人覺得應該就不必花心思搞了,因為必須承認這一部份,大陸的市場與產品低廉多樣化,

可以讓您多一點選擇,反正只是學習過程,是自己的態度大過與實質的硬體價值。

一塊學習版您會想花多少錢買啊?!...而又如果您已經都會寫一種單晶片程式時,

當您碰到另一類的單晶片時,您真的還會花錢買入門學習版嗎?!...

其實,除了搞技術以外...許多商業考量就又是一回事了。對不對?!

供各位參考!...謝謝!


 





 

1 則留言:

  1. 我學習單晶片是從8051開始ㄉ~ :P

    畢業的專題製作是用Turbo C寫通訊,曲線資料顯示和8051連線控制
    對8051有著很熟悉的親切感... :)

    現在工作是以C++,PLC,GP為主~~

    回覆刪除