2014年11月7日 星期五

單晶片與處理器(嵌入式系統)?!

以下最後一段文章是從大陸論壇擷取回來的。

所辯的也是我之前在許多文章裡也都有提過,但不管是單晶片或是嵌入式系統,

答案都是要寫程式的..套一句大家喜歡講的一句話:程式寫得好,要飯要到老。

不過呢?這些都是一些過來人的甘苦談,聽聽就好,我們還是回到實際面看吧。



底下我有連結一篇Atmel 公司寫的文章:說明MCU (Microtroller) 跟MPU (Microprocessor)

的差異,我覺得不錯,這樣的說明可以會比較客觀一點。

我想還是回到工程應用角度來看:如果您的系統真的需要長時間的維護,

或許,您需要的是嵌入式系統...不過呢?這樣子的說法,有時候又很牽強,

因為其實有許多公司的老闆或長官也不一定能懂得這個所謂需要維護的嵌入式系統,

美其名可能只是要凸顯自己公司是不同於其他公司....搞了老半天的嵌入式系統,

說穿了也是當一般單晶片的韌體程式在維護,一樣:人在程式在,人離職了呢?

而換個角度看:難道寫單晶片的人就沒有系統架構的觀念嗎?我也看過:

人家單晶片的韌體程式寫的也是媲美一般作業系統....當然啊~早期還有許多人

在一般單晶片的韌體架構上想努力實現嵌入式的作業系統...只是現在真的~

32 bits ARM 真的俗個大碗,所以,如果真的需要一個嵌入式系統的人,

可能就直接一棵ARM 直接架上去吧。而這樣子的趨勢與系統應用分野,

還是在於成本吧。要有嵌入式系統要的是記憶體:包括一般隨機記憶體(RAM)

 與程式記憶體(FLASH/ROM)。當然這個代價或是說優勢就是讓您的系統好維護。

----
不過呢?最後還是我們一直強調的是:工程師的角色扮演就變得很重要了。

講難聽一點:寫韌體程式嘛!最好不要搞死自己。不要以為程式是自己寫的,

就多偉大~改天不管是您不爽或老闆不爽,倒楣的就是另一個工程師。

所以呢?我自己比較務實一點的見解是:如果是要走嵌入式系統的話,

最好還是盡量用Open Source 的架構,這樣子資源多,相對風險也比較小。

當然對許多工程師們來說:好像會比較在乎這件事,因為會比較惶恐自己價值性。

但這幾年,您看許多比較受市場青睞的還都是越Open 的東西,賣得越好:

Google 的Andriod 或是Arduino 等等。...因為現在電子產品與技術,真的也沒啥多大

學問,而是要如何快速切入廣大應用市場比較重要。

那一天我就跟我鮭魚同學說:現在搞產品喔,最好就是自己也順便寫一篇開箱文:

讓您的客人隨著您的開箱文一步一步把東西組裝或架起來,然後馬上可以用最好。

因為現在電子產品千百種,真的沒有人有那麼多閒工夫研究您是單晶片還是

嵌入式系統?

那以工程師的角度來說呢?越是Open Source 的東西,資源就越多~畢竟我們幹工程師

的也都不是鐵打的身體或是有強壯的肝臟,而且科技日新月異,也不是一個人

可以涵蓋所有新科技或新知識...難免還是需要世界各地同好者的共襄盛舉,

或許初期您會有競爭優勢的疑慮,但畢竟長遠來說:還是比較務實的作法。

就拿我跟鮭魚同學常聊的UAV 無人機來說:我們有個學弟也在搞,據說:

那個FreeX 也是我們的一個學弟寫的程式,但我問我另一個學弟關於這架FreeX 與

國外 3DRobotics 的那架 IRIS+ 的比較性?我這位在UAV 界算是老鳥的學弟就很明確的

點出:3DRobotics 就是走Open Source ...答案您知道嗎?

很簡單,的確FreeX 比較便宜,3DRoboitcs 比較貴一點,這不就是我們台灣廠商

最喜歡玩的把戲嗎?好~您會說:我當然就買一個比較便宜的機器就好了啊,

夠我用就好。結果呢?萬一有一天我那個寫程式的學弟不作了?或是升官不搞程式了,

誰維護程式?當然啊~以老闆的角度來說:東西我就繼續賣就好了啊,有差嗎?

答案跟您說:就是有差!因為萬一有一天人家的模組升級,不管是軟體或硬體。

人家可以隨時加入世界各地同好的精心作品時,人家可以只是花少少的一點

預算就完成升級了。而您的老闆在面對這樣的產品升級與競爭時,您到底是要

重新再來一次呢?還是在找個新鮮的肝東拼西湊的去維護那個有如無字天書的程式?

這不就我們常常在我們許多科技公司所看到的最大問題嗎?

我知道,講到這裡又有人可能又要吐嘈我了~因為我們公司有一貫的政策,

而且規模也夠,所以我們老闆有決心推動屬我們公司專屬的嵌入式系統...

我們公司的產品都會採用這樣子的嵌入式系統,%︿$#@.....可以嗎?

Of course。

那最好~那我想:當這些東西搞好之後,您們老闆大概也不會想賣得太便宜,

但是呢?又不知道怎麼賣才可以賣得有價值?最後呢?還是業務說了算!

殺價最好賣~工程師的肝是論斤論"個"賣的!

---
所以啦~我常常講:寫程式的工程師們真的不要把自己看得太有價值,

這樣子只是害了自己而已。
---
那重點是什麼呢?我想最重要的還是屬於工程師內心那一份專注與追求成就感的

動機。什麼產品用什麼技術作,多看多想,懂得適時的調整自己,

簡單容易上手的~就用單晶片作,有些東西,一看就非得要龐大資源支持的,

就真的不要自恃甚高,懂得運用資源,懂得站在巨人肩膀上的人,

才會站著高,看得遠。

不要只是一味地認為好像非得要作什麼產品或什麼技術才是王道。

我常常講沒有這檔子的事。

對老闆來說:只要能一直賺錢的東西就是好東西。產品需要工程師著手開發維護,

但更重要的是:這種事最好是可以長長久久,而且我也不會被底下工程師給"刁"到!

講句難聽一點的話:您寫程式或搞技術,也都會有核心價值與競爭優勢的憂患意識,

難道老闆就沒有嗎?!您在防老闆,難道老闆就比您笨?不會防您?...(當然啊~

有些老闆會比較天真一點啦~)....所以啦~如果我的產品像是學弟所說的那一種

UAV 無人機的那一種東西,我或許真的會想採用Open Source 的東西....未來這個東西

還不知道還要再加入多少模組與擴充功能:等滿街都是UAV時,為了避免飛安問題。

搞不好人家國外給您出個法規或什麼要求外掛一個什麼法規東東的硬體時,

那不就又要死在哪裡一次?

---
最後結論呢?!不管是搞單晶片或嵌入式系統,我認為這本來都是因應市場需求所

出現的產品與技術市場的區隔,真的不要太過於嚴肅的面對他~而且如果您真的

對於類似的技術開發真的都有一股熱誠與興致的話,那都應該是很玩的事。

 工作上或產品開發上,我覺得單晶片有其優點與競爭優勢,我會用單晶片。

但是工作之餘,看看別人搞的東西或玩玩一些新玩意,我喜歡東摸摸西摸摸,

不用花太多心思把自己搞得要死,...能加入越多新玩意,又不用花太多錢去

更新或非得還要重新再購新機,我會比較喜歡Open Source 的玩意....因為,

萬一一陣子沒跟上也沒關係,因為畢竟東西一直在更新,我還是可以不用花太多預算,

我就又可以拿到最新的產品資訊與相關技術支援。...如果工作上剛好也可以

用得到,我也不排斥用這樣子的東西。畢竟這樣子的東西有全世界最優秀、最頂尖

最懂得創意的工程師們幫您完成。和樂而不為呢?

而您如果有興趣呢?何嘗不也加入呢?因為畢竟只要是好東西,別人也會給您機會的,

因為現在世界是平的。人人都有出頭的機會,只要您肯努力!

不是嗎?

----

http://www.atmel.com/Images/MCU_vs_MPU_Article.pdf

---
注:轉自互聯網網站,覺得不錯,拿來分享,希望也對大家有用

我在深圳一直搞單片機的開發,接的專案各種各樣,不計其數。很多朋友問我學習單片機有前途還是嵌入式系統有前途,毫無疑問的,當然是單片機有前途。

嵌入式系統現在炒得很火,滿街到處都是嵌入式系統的培訓。遇到很多剛入門的朋友,開口閉口都是嵌入式系統。好像覺得嵌入式系統就是武林秘訣,誰掌握了誰就是武林盟主。現在,我願意公開我的獨家心得跟大家分享,看了之後有收穫的朋友,也不要感激我,只要記得這個文章的原創是吳堅鴻就可以了。
 
目前的電子產品,用嵌入式系統的很少,大部分都是用單片機,因為單片機即時反應速度快,週邊電路簡單,價格便宜,開發週期短,這些都是嵌入式系統望塵莫及的,不要跟我說什麼手機,PDA等東西是嵌入式系統,這些東西你能獨立承接出來單幹嗎?大部分的朋友學了嵌入式系統後都無用武之地,空有屠龍之術。

即使有用武之地,那也要跟團隊一起開展工作,跟團隊開展工作,就意味著分工,一旦分工,就意味著流水線作業,單一,乏味,成就感有木有。學嵌入式的不一定比學單片機的厲害。
 
單片機簡單嗎?一點都不簡單。單片機的功夫在單片機之外。我搞這行那麼多年,我覺得單片機是我這一輩子都學不完的。單片機不帶作業系統,所以你寫單片機程式,本身就意味著你在開發作業系統。
 
嵌入式帶作業系統,所以你寫嵌入式程式,本身意味著你不用開發作業系統,只是在別人的系統上做一些應用開發。真正接觸底層的,是搞單片機的人。不要以為你花一個月的時間就能精通單片機,我花十年都不會覺得我精通單片機。裡面博大精深。
 
你要掌握常用的不同廠家單片機,要掌握各種常用週邊晶片,常用數位電路,類比電路。你要還掌握CPLD,DSP的程式設計,你要會電路板設計,你英文閱讀能力要好,你的學習能力要非常好,以上所有的都還不夠,你必須有幾年以上各種獨立的項目開發經驗。
 
最後談談大家最關心的問題,學習單片機賺錢還是學習嵌入式賺錢?
 
學習單片機,只要你技術過硬,一個筆記型電腦,再加一個農民房就可以在深圳單幹,我就是這樣過來的。學習嵌入式系統的,可能要依附大公司,如果你也出來單幹,估計半年沒接到一個單,即使接到單,如果開發週期三個月或者半年的,你要有充足的糧草儲備。
 
我覺得單片機開發是藝術,我做的每一個作品都讓我充滿成就感。
 
最後奉勸所有搞技術的年輕人,做一行愛一行,不要急功近利,做好每一天的的工作,沉下心來,時間越久,經驗越豐富,你就越牛。
---

10 則留言:

  1. 單片機(單晶片)=>永垂不朽, 萬歲! 萬歲! 萬萬歲!!!

    回覆刪除
  2. 來函轉貼:mac 已針對您的文章「單晶片與處理器(嵌入式系統)?!」留下新意見:

    我在單晶片很熟,封閉型嵌入式系統也做不少,現在要開發人工智慧,所以把兩個合在一起是在單晶片裡頭跑人工智慧是最快上手的途徑嗎?
    錯,當然不可以這樣搞...

    我常認為寫程式的是賦予電子零件他們的靈魂,而靈魂可以附身在各種硬體上面,如果我從單晶片搞起人工智慧,不就要全部自己來,未來還有解決不完的bug,真的想做的事卻一直被底層的蟲子給煩死,誰是兇手? 還不是自己造的孽...

    所以可以學習android,做出我要的創意,附在任何一支手機上就可達成,手機硬體越來越便宜,想做甚麼塞一支手機進去就行了,硬體與驅動馬上就有現成又穩定,還在想為了榮耀或成就而從頭搞起嗎? 別傻了,年輕人,等你搞懂...時間都過去了,青春有限,想知道更多單晶片的細節嗎? 等你老了無聊的時候再來搞懂也不遲,現在有創意就可以混飯吃了,真的~

    由 mac 於 2014年11月7日 上午3:19 張貼

    回覆刪除
    回覆
    1. 果然是兩個都摸過的過來人!!

      "我常認為寫程式的是賦予電子零件他們的靈魂,而靈魂可以附身在各種硬體上面,如果我從單晶片搞起人工智慧,不就要全部自己來,未來還有解決不完的bug,真的想做的事卻一直被底層的蟲子給煩死,誰是兇手? 還不是自己造的孽..."...哈~哈~

      刪除
  3. 來函轉貼:Goodspeed 已針對您的文章「單晶片與處理器(嵌入式系統)?!」留下新意見:

    不管是單晶片還是embedded system,還是要回歸到原點,就是要先找到市場,再來想要做什麼,需要什麼資源吧?

    如果我沒記錯的話,photoshop最早是一個攝影愛好者搞出來的,著名的RPG Ultima作者也只是從小喜愛奇幻文學與角色扮演

    104創辦人也是想到要做人力網站,年紀一大把才跑去學程式

    還有一個我忘記名子了,他也是覺得app還是什麼有利可圖,花很高的鐘點費請人教他

    嚴格說起來,這些人全都不是本科出身...但是都發展的不錯

    所以愛因斯坦說想像力比知識重要,真的是有道理



    由 Goodspeed 於 2014年11月7日 上午11:48 張貼

    回覆刪除
  4. 小弟有個疑問想請教一下
    小弟一直認為只要是韌體都算是嵌入式系統,因為都在Microcontroller上面運作不是嗎?
    就算是簡單的單晶片我也會寫個簡單的排程器阿,那用單晶片的就不算是嵌入式系統了嗎?
    還是說有完整的OS才能算是嵌入式系統阿?? 所以我在字義上面打轉(笑)??

    回覆刪除
    回覆
    1. 我想那一篇Atmel 的文章算是一種答案吧。

      單晶片要寫排程器 Of Course ,但他的資源與擴充性真的會比較受限。

      如果要用單晶片來寫個很好的作業系統平台,我想對於每個副程式,甚至中斷ISR來說,

      可能都要很精準的掌握Stack ,Memory Bank ...最後可能還要稍微模擬一下Machine Cycle。

      以確定往後每一個Task 加進來會不會破壞這一切?!等功能越來越多時,就越辛苦。

      以前沒有32 bit ARM 這一種MPU 可以用,所以大家就很辛苦在這些資源上擠啊~擠啊...

      就拿一個最簡單的例子來說:以前有沒有人用8051 或PIC 寫Ethernet 的TCP/IP ?!

      當然有啊...現在呢?!您覺得有必要這樣子嗎?!這已經不是什麼樣的OS 才算是嵌入式系統。

      而是產品或應用市場就是如此。

      所以啦~單晶片(單片機)萬歲,萬歲、萬萬歲....對啦。因為能作的事也不多了,

      反正也礙不著別人,就萬萬歲了囉!

      您以為 SOT-23-6 包裝的8 bit MCU 吃飽太閒嗎?省一點包裝(package)費用,

      況且晶圓Die 也可能會精簡到Pad Limit...還能怎麼搞?!

      套一句廣告名句:"要不然叫您阿嬤來囉~".....&^%#@$....哈~哈~

      刪除
    2. 補充一點:以前我搞MP3 SOC 時,拿8051 當Core 寫韌體。

      誰知道一個小小的MP3 播放器搞到最後還要支援Flash Card 的FAT32 Read/Write :

      播放(DOS FAT32 Read) 兼還要可以錄音(DOS FAT32 Write)...還要支援

      LCD 字幕歌詞顯示!我當初剛好找了一個清大資工系畢業的幫我在韌體上架構一個

      簡易型的 OS ? 應該算是人機介面的排程器吧!...算是有點先見之明,後來有大陸人

      既然拿這個改成字典語音學習機。就是有點像現在手機畫面上面有一大堆的ICON 應用程式。

      搞完這個案子後,我們內部檢討說:太辛苦了,所以大家一致認為應該要用32 bit MPU

      來寫uC-OS II 。...您說呢?!....我常講:人生做過一次有經驗就好!...哈~哈~

      PS : 這位清大資工系的傢伙幫我架完這個平台之後,就跟我說Bye-Bye 了,直到今年,

      他一空還是常打電話跟我哈拉~扯蛋...反正他也沒啥好產品可以作的。雖然他後來

      去了別的公司搞過Linux ,Android 等等。他說:他現在最想作的事是:務農!哈~哈~

      刪除
    3. 可以開發android務農機器人, 應該可以躺著賺...

      刪除
  5. 來函轉貼:匿名 已針對您的文章「單晶片與處理器(嵌入式系統)?!」留下新意見:

    7年前老闆要我開發一個濾水器的時候,
    我就建議老闆使用arm來做,
    老闆跟我之前都只用過8051跟pic,
    等於從頭學起,
    後來認為這個決定是對的,
    因為那個案子只是把arm拿來當8051在用,
    但是發現非常好用,
    成本只比用8051多出0.5美金不到,
    可是完全不用擔心速度不夠快,也不用擔心程式碼會爆掉XD



    由 匿名 於 2014年11月12日 上午1:07 張貼在

    回覆刪除
    回覆
    1. 依上述Atmel 文章來看:MPU 當 MCU 可不可以?!Of course 。

      只要您覺得產品價格可以,沒人說不可以。

      MPU 可以當MCU用 ,但是MCU 可不可以當MPU 用?!

      前面剛剛講過了,以前有很多前輩與先賢努力過~現在有必要嗎?

      這也就是MCU 市場最令人擔心的一點,您也剛好點出這一點現象。

      我相信人性:由簡入奢易,由奢入簡難!!...當越來越多人像您這樣子

      ARM 當單晶片用得很爽時,而人家又願意把ARM 的價格放給您,

      沒有人還會回頭想說:哪個單晶片(8051 ,PIC 、AVR ...)哪一個比較好?

      答案就是:ARM 嘛!...就勇敢用下去。

      單晶片萬歲、萬歲、萬萬歲。

      有沒有錯?!對滴!...因為人家把ARM 當單晶片,一樣萬歲,萬歲,萬萬歲。

      刪除