2012年10月2日 星期二

8 bits MCU for Ethernet


這是我所收藏的兩片關於傳統 8 bits MCU 所作的 Ethernet 版子。

其中那一片用PIC 寫的Daughter Board 好像是一位大學老師送我的...

這兩片Ethernet 版所用的網路晶片都是螃蟹的 RTL 8019AS。

以傳統8051 來作的話,因為系統擴充與資源問題,您就得再外掛SRAM...

那顆SRAM 看LOGO 應該是宇慶的~這家公司不知倒了多久了?!

(當然以現在一般大一點容量的變種的8051 也不用這麼麻煩了啦!)

-----

以下這一片就是用PIC 寫作的...他只是載版,他還需要外接一片Mother Board 。

----

我相信這樣子的作法沒有不對,當然也有他的市場所在...不過呢,大部分都是希望做到

一個簡單的觀念:遠端監控...

從硬體的眼光來看這樣子的應用,您覺得硬體問題大不大?!我覺得還好。

但是我相信軟體Effort 應該不小。尤其是用8 bits MCU 來寫的話...

所以啦,在韌體與軟體端就必須有一些限制:譬如您就搞清楚您要做到TCP/IP 或是要支援

UDP 或是balala....一大堆的...相信寫過的人都應該比我還清楚。以前搞網路晶片的

也都是這樣子熬過來的,只不過,我所認識這些人好像都已經死得死,逃得逃了...

您還記得以前有一家叫 F3 的嗎?!不是偶像團體F4 喔!!...

老闆現在已經轉行改作小系統成品了。(其實他應該是可以退休了吧!)

------

但我相信:現在如果還這麼做的話,應該就找不到工程師來維護這樣子的系統了,

這樣子的故事應該就像您也很難找到單晶片工程師願意寫 6502 程式的道理是一樣的。

所以我才說:不是我們就非得要用  32 bits MCU 不可,這也就是一般傳統 8 bits MCU ,

所碰到系統應用端的問題:簡單的東西,也沒有您值得搞的,難一點的應用您就得

東擠擠,西壓壓的硬是要搞出一個平台,厲不厲害?!

當然厲害啊~我還給您拍拍手啊。............... 但然後呢?!

就像我手上還有那個用8051 組合語言寫的水果盤程式。連那個彈珠台對我小孩子

來說:已經沒有ipad 上的那個水果忍者好玩吧!更不用說什麼憤怒鳥了。

-----

我們就來檢視一般傳統 8 bits MCU 的系統應用問題:

8051 已經使用超過  20 年以上了,學校會教,也有一大堆工程師都會用。

當然的也知道他該用在哪一種系統上。(當然啊,也應該知道什麼東西就不要去硬搞了!)

相容性的供應商一大堆...但對您來說:也就只有那一家而已吧!

然後在大家的努力下,也有很多東西都已經達到他的使用極限了,不管您要用

哪一種變種方法。因為他架構就是長成那樣子了:Code + Data/idata + Xdata。

您的Stack 的深度就也只能在內部SRAM 裡跑來跑去...這一點真的對於要寫一個像樣的

RTOS 真的要很用力寫,還要很小心安排。....如果再不行呢?!大家都一樣:

開始切Bank ...Code 切Bank ,讓您可以玩到 1MBytes ,XData 也可以...就連

Stack Pointer 也可以,只要您硬體上可以保證中斷跳來跳去不打架就可以了。

(Silicon Labs 新版一棵 C8051F 39x/37x 就是標榜加值不加價,硬給您塞了

一大堆周邊,塞到  5 組Timer,又有SPI/I2C/ADC/PWM....但控制上就是需要

定義 Control Register...8051 內部架構就是那個data/idata 加一加就那麼多(256 bytes)。

支援的中斷多~那您的Stack 就得要夠深...怎麼辦?!就開始長的奇奇怪怪了!

他裡面的 Stack 就是用硬體幫您切Bank ...厲害吧...我也只能說:還真辛苦啦!)

---

除了硬體,就回到我們文中所提的,那軟體平台呢?!...以前還有所謂的組合語言的世界。

我們老人家就不要再倚老賣老的扯這一種 "想當年啦...balala....."。

人家就直接跟您說了:您用的開發平台應該就會開始停留在所謂 Keil uVision 3.xx

已經夠用得嚇嚇叫了啦,人家那個 4.xx 是留給  32 bits ARM 的~人家還一天到晚

持續一直在增加支援IC 型號,又開始整合 RTOS 一大堆有的沒有的...

還有的用就要偷笑了啦。您還想跟人家玩那個所謂物件導向的C++?!

人家直接點出一句話: Assembly language skills not common in 21 st Century。

---

講這些,其實講來也讓我們這些LKK 工程師很辛酸,我們何嘗不想多抓住一些機會呢?

但是:真的~在新產品系統需求與開發上,8 bits MCU 真的很難找實際應用市場了。

我講的是那一種Stand alone 的純MCU 系統應用市場...反而就只剩下其他幫人抬轎的

系統應用市場:譬如人家一棵 RF IC 就直接Embedded 一棵 8051 給您用。

(這樣子講起來好像這一種東西,也好像是8051 比較多 PIC Like 比較少喔~...)

或是另外 BlueTooth 4.0 的~也直接奉送一棵 8051 給您。

不過,這樣子講起來~現在就連賣這一種 RF IC 或特殊功能SOC 的~不Embedded

一棵 8051 也不好賣的樣子?!那賣RF IC 不好賣,就連搭配的 Stand alone 的MCU

也不好推了.....

----

下圖是一棵Sub 1GHz RF SOC ... 隨隨便便就跟一般Stand Alone 的8051 還好用。

(就跟我最上那一張8051 + SRAM 的Ethernet 版的8051來比?!)

------

而以下是自從 iPhone 4S 以後支援的 BlueTooth 4.0 (BLE) SOC 。

這應該是一個會很火紅的系統應用標準...

您說TI 沒有自己的MSP430 MCU 嗎?!那他為什麼還要用 8051 呢?!

不好意思~他的程式容量是 128 KBytes...SRAM 是8KBytes!

您現在要特地去找一棵支援128 KBytes 的8051 還不容易耶。(因為還要切BANK...)

(TI 官方網站的牌價是:US$: 1.95~2.25/1K )。還有 256 KBytes 版.......

----

您覺得台灣這些廠商可不可以做?!...答案最大的挑戰還是在於開發平台吧!

因為台灣這些MCU 廠在ISP 或是系統開發平台整合上,過去都喜歡用最便宜、最簡單,

甚至想用偷雞的方法搞...就連那個 JTAG Debug 回路的Gate Count (邏輯閘)數也想省啊。

唉~...您還能說什麼呢?!....
 

=====

補記: 如果您現在要個TCP/IP 層應用的話,也可以直接引用網路上標準的

程式平台, Based on ARM 的:http://www.keil.com/rl-arm/rl-tcpnet.asp

 

10 則留言:

  1. 這種用8051跑TCP/IP的作法小弟之前也玩過...不需要OS,用的是這個瑞典老外寫的uIP:

    http://dunkels.com/adam/

    不過說實話...功能非常有限,最多只能跑1,2條TCP connection,作作簡單的RS232TCP/IP大概就是他的極限了

    從這個連結可以看到,uIP已經變成RTOS contiki的一部分,小弟猜想大概也是覺得沒有OS作這種東西實在太痛苦了... :))

    回覆刪除
  2. 但是呢,Keil 這軟體貴了點,我目前都用 Gnu C 系列來作開發

    回覆刪除
    回覆
    1. 下回跟老闆講...東省西省,最後還不是得付出代價的啦。
      以前我也看過工程師用Gnu C 表演整個開發流程給我看...
      是啊~沒錯啊,不需要華麗的GUI 介面,看起來很效率似的,
      結果就是整個團隊就在那邊不斷的Try And Error 反覆的搞。
      大家都很忙啊...最後表演說明給我看這位工程師今年換工作了,
      他說:他寧願去寫寫 8051 算了。 :)) ...

      刪除
  3. 我看GNU C用的很行的人...要不就是學生時代就開始接觸,要不就是研究單位出來...或者天縱英才這種的,不然這對一般工程師來說門檻很高的,光GNU C的版本就讓人眼花撩亂,而且不是光學GNU C就好了,makefile要不要學?而且他還有一堆週邊tool(如autotool, awk, cmake,perl, ruby, python, shell script...),如果您的code有用到這些東西搞不好多少都要學一下

    如果想不開自己去build toolchain...那大概今天就不用做事了

    如果我是業餘人士或是學生,我當然可以慢慢摸,但是對第一線工程師來說壓力就很大了,因為真正的產品還沒開始作就先被這些tool給搞到累垮,而台灣老闆又特喜歡壓schedule

    Keil C跟GNU C我都有用過,我想我講這些話還算公道

    如果我讓我選擇的話,我搞不好還是會選8051,要不然選cortex M0,因為很簡單...team work開發軟韌體不是那麼簡單的事,要不團隊裡面每個都是學歷比高經歷比嚇人的,您要這些人聽你的指揮!?要不就是很爛訓練起來痛苦萬分...(簡單來說台灣人在團隊開發軟體這件事上至少落後國外10年以上)

    但是讓我一個人單幹的話,我起碼可以在自己的範圍內做好自己的事,也不用在那邊協調來協調過去~ :))

    回覆刪除
    回覆
    1. 唉~所以說嘛!...以前會搞這些Script file 時,都以為自己
      應該多厲害~多專業啊。但是呢?!要真正分析系統效能時?!
      反而常常搞不清楚。您說現在大家只是拼功能而已嗎?!
      有很多產品基本上,只要大家多看幾次之後,大概您會,我也會了。
      那差別在哪?!當然就是拼效能或效率。
      您看人家現在IDE Tool 已經整合到什麼地步了:

      東西搞到會動,誰不會啊,這一點連大陸都比您搞得更像一回事似的。
      只是人家的東西用個幾十年也沒啥大問題,而我們的呢?!
      過沒多久就開始自己很心虛的怕這個出包,明天要哪裡要出包?
      -----
      至於軟體要搞Team Work 的?!我看在國內是很難的啦,
      誠如小老弟您常說的:軟體工程師在許多科技公司(大部分都是以賣
      硬體為主!),幾乎都是二等公民似的,有時還被當MIS 工程師用。
      所以啦~您說的沒錯,可以一個人自己搞定,就一個搞定吧!
      至於萬一這一個人離職了後呢?!.....那是老闆自己要擔心的,
      新接手工程師更要擔心的。至於我們自己呢?!爽啊! :)) ...

      刪除
  4. 現在韌體工程師動不動都要求碩士以上, 想當年我們以前公司裡高工夜校生就要上陣了 :P

    回覆刪除
    回覆
    1. 那您就知道現在我們研究所畢業的素質與程度到哪裡了吧!

      :)) ... :)) ... :)) ...
      我們就不要只怪經濟或政治,有時也要關心一下我們的教育問題。

      刪除
  5. happosai、賈老師的真老公兩位前輩,小弟資淺算不上什麼經驗豐富的開發人員。的確如兩位所說的,Gcc 系列的確使用上不容易,而我是使用Code Sourcery 內的 CS-make 與 Newlib 搭配自己寫的makefile和Loader Script 來作,撰寫Cortex-M3的程式。但是我抱持的心態是想要脫離商用軟體的掌控而作的,而我的老闆也能夠接受這點。商用軟體固然好,但是用久了是不是會陷入DRAM廠那種「反正別人的設備這麼棒,我只要買來就可以賺錢了」這種心態呢?

    回覆刪除
    回覆
    1. 我想許多事情也不一定誠如您所說的。當然啊~每一個產業或行業
      也不一定就得要拿像DRAM 慘業那一種模式來比較。
      我最近有遇到一位園區附近的老闆,他跟我說:他以前也曾經
      相信過,只要我們自己肯努力用功,我們也可以做出跟國外的東西一樣好。
      (他指的是某一種商用IC ...)結果他前前後後為了配合這些Local 廠商
      方案的產品開發。他說幾乎賠了上千萬元是跑不掉的。
      所以他現在都很實實在在的抓著我的手說:Chamber ...真的~
      聽我的建議,重要的IC 您還是用一線或國外品牌東西,寧願少賺一點,
      但至少不會有太多風險啊。
      ----
      您們還記得我最近一兩篇文章中有Show 出一張商業企畫書嗎?!
      最後一頁是什麼?一年產品完成設計,兩年量產,三年IPO 前置作業,
      四年完成IPO....代表什麼?!這些公司技術團隊只想開公司四年而已。
      ...四年後呢?!...大家可以去查一查我們很多高科技公司,尤其是
      那一種很小公司出身的,搞了幾年,IPO之後,現在都不知道他們還
      在幹什麼?!一大堆啊。
      當滿街都是這樣子的人一大堆時,您就別奢望會有以前科技新貴
      那麼好康的事,會掉到我身上啊! :))

      刪除
  6. 有句話是這麼說的「除了核心競爭力之外其餘都可以外包」,那貴公司的核心競爭力總不會是工具的使用吧?再說怕被商業軟體綁死,那我這麼說好了,您用的那顆cortex-m3也是會phase-out啊,就算找到一顆pin-to-pin的放上去,您能確保一行code都不用改,100%可以正常工作? :))

    回覆刪除