2023年10月6日 星期五

老工程師的技術生活(十八) --- 回顧自己的MCU 平台

來回顧一下自己在MCU 平台發展的軌跡,我不是資電科班出身的,但透過自學

及工作機會的歷練成長,也讓我在這一個領域裡,可以養家活口的把小孩養大自立,

也算是完成自己 在一個時代發展所應該扮演的角色,雖然稱不上甚麼精彩人生,

但我想也可以透過這樣的分享,也可以讓下一代的年輕人可以參考學習與借鏡的地方吧。

而在這個階段的時間點裡,我們也大概可以從市場發展的成熟度,也慢慢地看到各類MCU 

平台在不同應用領域裡,所扮演及所佔據的應用市場。以下就以個人自己的觀點稍微

整理一下這方面的經驗與資訊,但我想最重要的不是裡面所用的技術,而是你該如何

將這些技術與應用市場裡,找到你可以養家活口,甚至賺錢發展的機會吧。

首先我先自己整理了一張簡單的示意圖:


也算是一部分我自己曾經走過的技術歲月的脈絡吧。我剛接觸MCU 是從8051 開始的,

6502 一度也有機會,但工作上用不到,就給他Pass 掉了,其實那時候是在 IC 設計公司

裡工作,那時已經開始大量使用8051 為核心,除非是像傳統玩具之類的(需要比較低設計

成本架構),否則,6502 慢慢地已經被架構完善,開發平台較成熟的 8051 所取代了。

不過,我做的第一顆 8051 為核心的 SOC 晶片,還是使用ASM 組合語言開發的。

其中那個RISC 就是 8051 。(也只能說是: 1T/2T 的8051,說是RISC 有點牽強啦。它還是跟

傳統8051 一樣多的指令集啊...)

因為它的Code Buffer 只有 8K 而已,而應用還包含USB,所以也只能用組合語言來寫。

現在要我在小小的 8K Flash ROM 裡,寫出 USB 介面,我是不幹的啦。😂😂😂

就算寫得出來,也沒有人會誇獎你,給你案個讚,也沒啥價值意義的啦。

至於 PIC like 的MCU,我用的不多,但倒是參與了一顆多核心MCU 開發設計,也算是

摸過 PIC like MCU 吧。至於十六位元的 MCU ,原來IC 設計公司也有出一顆 16 MCU:

µ'nSP™ (SPCE061A) ,它的主要應用市場是在中國大陸,所以也沒玩到。在那個參與多核心

MCU的階段,市場就出現了 Arduino 這一種以平台架構的MCU 應用平台市場,也算是帶領

市場從基本的MCU 基礎應用市場走向系統開發應用市場:只要能快速地利用簡單的程式

語法(C語言),架設出單晶片應用就是一個好的設計開端。

此時我們這些寫MCU 韌體的工程師們就開始進入所謂天人交戰的階段了,到底該堅持過去

那種傳統的MCU 基礎系統開發呢?還是依據平台系統開發?老闆們當然還是將本求利的

以硬體成本來看市場獲利機會。而我們心裡也知道:這一種快速入門及平台將是工程師

未來的發展機會。

所以當ST 推出ARM 32位元時,就直接搭這股類似 Arduino 平台架構的方式。推出它的

32 位元 ARM MCU 開發驗證平台:Nucleo-32/64 平台。不管是哪一類、哪一等級的MCU,

就先直接支援Arduino 的載板平台:


當然此時的我,早就已經順應系統應用市場,已經轉換至 32位元的 ARM 平台。

有一部分的原因還是因為USB 應用系統的市場需求。真的沒有人還要你在少少的

16 K Bytes/32K Bytes 的 Flash ROM 裡寫這些程式韌體了啦。所以ST 一口氣就在這些

平台上一路從 M0/M3/M4/M7 甚至雙核心的平台。操作頻率也一路從 48/72 MHz 跑到

160MHz 甚至 480 MHz 了。最近我也花一點時間把這些基礎平台給整理起來了:

一般基礎的 MCU 應用系統平台,我個人認為此時已經達到一個等級上的極限了。

對於一些基礎小型的應用系統平台,這些方案就已經很完善的涵蓋至少八、九成市場

需求了。而在同樣的 Arduino 平台概念上:市場也推出另一等級的MCU 平台:

Raspberry Pi (樹莓派)。它是另一個ARM A級和新平台,以最新推出的第五代,就是

ARM A76 這一級的MCU,你說:他們未來會不會推出更高?乃至於多核心的版本?

答案也已經了然於胸了。不過呢,對我來說:也已經算是廉頗老矣。

這類的東西對我來說:真的咬不下去了。尤其人家的軟體平台動不動就是Linux +Python。

我怎麼玩啊?以前還一度想摸一下,結果寫了一篇文章,就交接給下一代了:

而他們呢?也就玩了一下,把它拿來架設手機撥放平台,就擱在一邊了:


其實,因為還有更重要的,而且有更現實的經濟收入問題。你不上班,沒有老闆願意花錢

請你做這個,你有薪水領來花嗎?😂😂😂

至於接下來還有一級:就是PC 平台,怎麼搞 PC 永遠就是一個很基礎的應用平台,也是

通用不缺市場機會的一個平台,而我也非常幸運地因為USB 系統開發平台應用,讓我很

早的接觸 PC 應用軟體開發平台,學那個Visual Studio 平台中的那些物件導向,繼承乃至於 

MFC 那些艱深一時難以入門的應用軟體平台。或許你現在看這些東西覺得落伍跟不上時代,

但對我這種年紀的老工程師來說:它還是有一定的剩餘價值,這一點連我學最新網路資訊,

最新軟體開發平台技術的兒子來說:一點也奈何不了我...哈~哈~哈~

我就是還有本事靠這些平台賺自己的老年年金與零用錢啊。你們年輕人就去賺你們認為

有未來潛力機會的核心技術。包括另一台路徑平台:雲端伺服器(Server)。

當然現在市場還有出現另一個聲音平台:RISC-V 。雖然他夾著較低,甚至免費的智權的

授權金,也有不少人看好他的機會,不過,還是得回歸到市場機制,它到底要切在哪一塊

應用領域?還能挖出多少市場機會?我們就拭目以待吧...不,應該說:年輕一代的你們。

我應該是玩不動了啦。就算要玩,也是玩票性質玩玩吧。

----

最終啊,講坦白現實一點的論點啦。

真的要學所有的MCU 或平台,雖然不像以前我們剛入門時的那麼辛苦,但現在也不像以前

只要學個8051 或PIC 就可以吃遍天下了,要學的東西也學不完,我想MCU 原廠也不想

把系統開發平台搞得太複雜,艱深難以入門的~而嚇跑一大堆客戶工程師們。

PS:不過,這或許是我們這些LKK 工程師的問題吧,我問我兒子說:你們都是甚麼

開發平台啊?他說:沒啊,他一直是使用 GCC ,用Makefile 在開發,就連基本的IDE 

都沒有。😮😮😮...怎麼回到跟我們早期那個寫 8051 組合語言的時代似的?兩代工程師

簡直活在兩條不同的時空平行線...難怪他都不跟我談有關系統開發技術問題,也好啦。

其實最重要的其實也都不是這些所謂的平台或技術的問題(Issue),而是該如何去創造屬於

自己的核心價值。

就像我小孩他們這一代所面臨高房價的問題,我常開玩笑的對他們說:房價再高,還是

有人願意出手買啊,尤其在新竹竹科這附近啊。重點不是房價多高?而是你有甚麼本事,

支付這些房價、貸款?我開玩笑地舉例說:如果你可以像人家 Jack 李先生,從永齡基金會

一個領五十萬元薪水時,那些房價對你來說:根本不是問題啊。

你就業初期可能沒機會,但慢慢的幾年的累積醞釀你的核心價值時,有一天你也可以不客氣

跟老闆或金主要求:一個月平均月薪五十萬啊。---這個在竹科世界裡也不是甚麼新鮮事啊。

重點還有一項更重要的事:真的不要過度沉迷相信技術,或過度的相信自己。在學習技術

領薪水的歲月裡,不妨真的多接觸技術以外的領域,譬如:財務規劃與管理。

這一點非常重要,領多少薪水?有多少收入,其實重要的還是要能做有效的財務管理。

這是我最近幾年看到的趨勢,也是年輕一代的新概念。因為畢竟薪水收入有限,技術

轉換獲利營收效益也未必及時有效,現在網路資訊發達,國內外投資管道多(我指的

是專業金融銀行管道)。只要稍做功課,其實績效都是不錯的。

我這種年紀階段的LKK 工程師是沒有機會與籌碼的啦,就只能領多少,算多少的,

你們年輕人不一樣,努力與機會都不可預測與限量的,只要更懂得技術與策略應用,

誰說一個月幾十萬的收入不可能呢?年輕人對人生未來充滿期望是很好的。

最近跟我那位搞馬達設計的大學同學聊了一下:自從他專注馬達設計生產製造之後,

這幾年的獲利,它幾乎都是拿來做財務上的有效管理,不再過度投入研發或技術開發,

他已經計畫未來幾年後要捧著投資獲利移民了。我說了:年過五十,人生要真的懂得

收斂,不要再整天想著技術或產品...靠著就是以前所打下的基礎,人生變現的迎接你

的人生下半場,活出屬於你自己的美好歲月啊

4 則留言:

  1. 其實20年前Linux就是用Makefile+gcc,一直到現在都沒太大變化,直到最近這一兩年才接受比較新的程式語言Rust,Linux缺少統一的Desktop GUI,大部分習慣文字界面(在Linux上用GUI那個會被內行人笑話,代表你對Linux不熟),其實到最近MCU開發有些也轉向到Linux,比方那個MTK投資的晶心科技,之前拿到的SDK就只能裝在Linux,我有些同事就哇哇叫,說這怎麼用(還好我老早就有經驗)

    在我以為只有晶心這麼幹時,我去年有面試一間做液晶螢幕產品的公司,他上機考就直接在Linux上考,我說我應徵的職位不是寫MCU嗎?他說對阿,因為現在聯詠給的開發工具就只給Linux版

    我猜這個問題其實就是Keil C要授權,gcc不用吧

    回覆刪除
    回覆
    1. 主要原因是:越是往底下做的系統平台是不需要作業系統(OS)的。
      以前搞那些8051 或是甚至有些STM32 也都還不一定需要架起OS。
      但到了 Linux 就是 一個OS 平台。
      只要有OS 在,其實有許多很基礎的平台都是由OS 接手了。
      一般系統應用開發者,只要專注於系統應用開發就好了。

      就像我自己寫PC APP 軟體(包括MFC),根本不需要管MFC 與作業系統
      之間的關聯性了,只要專心地把UI 介面跟系統需要的相關功能做出來就
      好了。不需要還要去研究鑽研 OS 平台。錢就留給別人去賺就好。

      差別在哪?就是系統平台的成本,不管是硬體或軟體。尤其是硬體:
      一個簡單的OS 往往她就是需要比較多一點的Flash Code 空間。
      及比較好的執行效率。
      但現在許多MCU 或系統平台支援的Flash Code Size 都有一定的大小。
      也讓許多平台有更大、更彈性的發展平台...以系統平台的提供者來說:
      也樂觀其成啊。

      所以你說:聯詠給的開發工具就只給 Linux 版,我一點也不意外啊。
      人家 Raspberry PI ,也是直接給你一個Linux 啊。難道這麼強的一個
      系統平台:還希望客戶開發者還在那邊像寫Bios 那樣從Boot 第一行的
      組合語言看起嗎?

      只要是越標準化的系統應用平台,往後就會走向作業系統平台化走。
      這是時勢所趨...寫MCU 最終也是會走到像你所說的:給個Linux 吧。
      人家 Keil C 也知道啊,所以人家也有提供一個 RTOS (RTX) 啊。
      只是要維護這種作業系統平台還是在與系統維護與擴充性...
      只有更專注的、更專業的公司才有辦法持續開發維護的。
      這也是一塊長期累積出來的成果啊。

      我就真的還能學多少?還有多少機會用?
      有個PC 平台就心滿意足了啊。

      刪除
    2. 您誤會了,這兩間公司給的開發工具,產生的機械碼不包含OS,最後也是在8051之類的MCU上跑而已(晶心則是類似STM32的東西),換個方式講,就是如同Linux版Keil C這樣,最終編譯的結果(obj,machine code)與Linux沒有任何關係

      刪除
    3. 了解。
      意思就是說:這兩家公司的工程師就只有支援Linux 平台而已。
      沒有Windows 版本。

      我以前學校畢業時,我在學校做論文時,都是在工作站上跑Unix 系統。
      也是非常類似的Linux 系統。都是沒有友善的使用者介面。
      如果大家都習慣GCC + makefile 那種開發環境的話,
      也就沒必要去搞那個 GUI 的開發IDE ...
      如果我是原廠的工程師(你說的晶心或聯詠...) 如果可以不用去搞那些GUI
      的東西,我也覺得很爽啊。事情簡單多了...
      產品推一些比較封閉客戶市場時,應該也沒問題。
      但要拿出來像人家Keil 或ST 原廠那一種STM32CubeIDE /STM32CubeMX
      那麼方便友善的使用者介面,對於產品推廣真的比較輕鬆簡單。
      ---
      這也凸顯了台灣公司還是喜歡專注硬體,不太喜歡投入太多軟體工作。
      就像我們當初搞那個多核心一樣,踏不出那一步,再過二、三十年,
      還是鴨子划水默默的在一些封閉客戶市場裡,浮浮沉沉的...
      沒有人說不行,而是你真的很難去找到與訓練或留住工程師...
      像我自己走過 8051/Keil 接上 STM32 之後,可以在就業或系統應用
      市場裡,不斷可以延伸自己的專業與創造生存機會。
      --- 想想如果你是做那個封閉應用市場平台,當你過了四十歲之後,
      你沒有中年職場焦慮感,我才覺得奇怪呢!

      刪除