2020年6月4日 星期四

車用電子漫談(七)-- 核心技術整合開發

這篇文章其實是一般系統開發經驗分享,尤其是新創公司或你想自己搞一些東西時,

所應該留意的觀念或想法。之前我有提到:人家蘋果電腦的 Steve Jobs 創業時,

人家也沒甚麼研發團隊的大陣仗,你覺得一間車庫可以擠進多少研發人員與研發設備?

人家有所謂光鮮亮麗的辦公室或一個穿得票漂亮亮的前檯小姐嗎?

撇開這些門面問題外,其實系統開發者,不管軟硬體工程師所要面臨的就是

產品開發與後續維護的系統平台,因為一開始公司大概也只能專注在一兩個產品,

甚至這些所謂的一兩個產品,嚴格講:也大概只有一個產品的核心技術而已。

那在系統開發上如何應對這些不管是產品規劃或是市場業務的需求,來達到最佳

工作效率,就變成新創公司"精兵政策"所需的必要條件了。我這篇文章會以韌體

或軟體的觀念與經驗來闡述它。

為什麼我不怎麼喜歡趕風潮的來寫一些關於 Arduino 的系列文章?或許當你看完

這篇文章之後,你大概也可以來思考一下吧。

關於這樣子的觀念,我很幸運的是:當我進入這個產業與領域時,我碰到一個很好

的前輩與長官,這是他所帶給我的啟發。以下是我剛進園區公司時,我們所開發的

掃描器SOC 晶片開發故事,我們是屬於系統平台開發者:這個團隊的系統韌體開發

就只有我們兩個人,其他的就是IC 設計者與驅動軟體開發人員。所以我們兩個就得

在韌體上去開發出我們所可能面對的客戶或不同產品規格的韌體程式。

當然啊,我們的產品核心主要還是在於掃描器的基本核心功能。這包括了:

Line Sensor 的設定、資料讀取、傳送,這其中還包括周邊介面的記憶體與Buffer 管理。

當然一部分就是USB 基本介面管理。但是除了這些以外,對於不同的客戶廠商:

我們才發現:原來市面上有很多不同品牌的 Line Sensor ,還有不同的步進馬達驅動

方式等等。那我們該如何用最少的、或最簡單的方式來應付這樣子的市場需求呢?

當然不可能針對每個客戶或不同的 Line Sensor 或步進馬達驅動方式都幫他們都

特別量身訂做的寫個韌體程式,然後還要不斷的維護與更新升級吧。

你要知道:我們那時候寫韌體程式,可不像現在有所謂的整合型的開發平台(IDE,

Integrated Development Environment),我們還是用最精簡的 8051 組合語言寫的。


這是我們最後整理出來的組譯程式的批次檔(Batch) ,現在可能有很多年輕工程師沒有

聽過或用過這個東西。沒關係,你只要知道這些觀念就好了。從上圖大家可以很簡單

的看到我們針對不同的客戶或不同需求,我們只要針對一個基本程式碼就可以了:


當然啊,這個所謂的基本程式碼中:他就分別去定義不同的客戶需求來引用不同的

設定檔案,這其中包括了不同廠牌的 Line Sensor:


而這個設定檔中:我們就可以針對不同的需求來定義不同的系統規格需求。

這樣子就可以達到一個用很基本的核心韌體平台,就可以很有效率地去管理不同

客戶市場的需求。所以才有我這一篇文章故事:電子自學學習心得回憶(二)

這樣子的系統平台,讓我們公司就光靠這樣子簡單的一個核心韌體系統平台,IC 出貨

就像是印鈔票的一樣的簡單。

然後接下來,我又緊接著另一個SOC 產品:MP3 播放晶片,就是讓這樣子的系統開發

平台灣觀念就更駕輕就熟了:因為這時是大公司,有很多東西就不用自己很辛苦的

建立了,當然這時候的IDE 平台就更方便了:


因為那時候 MP3  撥放器所搭配的儲存記憶裝置就包羅萬象了,所以我們就把不同的

儲存記憶裝置就成為我們系統開發的主要不同差異化。當然啊,如果當配不同的顯示

裝置,也是可以用同樣的方式處理。

所以當我後來自己一個人在搞LED 控制器時,我也是比照辦理:


所以,當我的客戶或市場需求越來越多時,我所整理準備的東西就越簡單明瞭。

只要我這個系統平台能支持的,我就一律如此處理,要不然說真的啦。

當你只有一個人,又有不同的客戶市場需求,你也不是一天到晚都有那個美國時間

可以坐在電腦前面整天寫程式的啦。有時候又要跑市場業務,有時候還要安排硬體

PCB 發包製造與出貨收款的....搞韌體程式這檔子的事,哪有那麼多時間維護啊。
=====

所以有時候,我真的搞不懂為什麼有些小公司或SOHO 族的系統開發者,哪來那麼多

時間一天到晚,天天在換MCU 或系統平台的?還真的當自己是學校老師、教授?

到底是在搞知名度的呢?還是人家MCU 代理商的代言人呢?賺這種錢真的就比較

輕鬆好賺的嗎?

以我自己待過園區IC 設計公司的經驗來說:為什麼以前我們在IC 設計公司為什麼會

那麼容易可以賺到錢?很簡單的道理:就是很複雜的東西,用最簡單的方式來獲利。

然後把他極大化。是啊,只要一個東西,你能用最簡單的系統開發維護與

生產製造成本處理,那個出貨簡直就像是在印鈔票一樣的。套一句我老同事常開玩笑

講的話:如果能只要燒錄程式出貨收錢的話,我晚上不睡覺我也幹啊。

你說:開公司搞系統開發賺錢哪有比這種事更簡單的啊?是不是啊?

所以當你現在看到像人家在賣MCU 時,也是用這一種系統平台在搞啊:


===
好了,現在就回來討論探討一個很嚴肅的話題了。

我們這些搞技術的工程師們,在新創或是想自己開發產品時,總是有一些迷思。

就像我們念航空畢業去當兵下部隊時,如果能去玩噴射戰鬥機時,就沒有人想去

螺推組運輸機隊的。如果搞車子如果能搞法拉利、藍寶堅尼等時,就沒有人想去

作 TOYOTA 的Yaris 、Collona 或CAMRY 等。玩機車當然就要搞HONDA CBR、

YAMAHA SMAX ,誰跟你玩光陽的豪邁、三陽迪爵的GY 6 引擎啊....

但事實上是:TOYOTA 的 Yaris 在市場上賣得嚇嚇叫、光陽GP125 三陽的GT125,

都是婆婆媽媽的買菜車。對車廠來說答案就是:就是很複雜的東西,用最簡單的

方式來獲利。然後把他極大化。這是商場上獲利的不變法則。

所以當你在搞產品開發時,真的不要陷入這一種過度追求卓越,太看得起自己的事。

是啊,人家市面上都在玩 32 bits MCU ,大家都在玩AI 大數據,網路雲端世界...

媒體都在吹捧,講得沒搞這些就落伍了...你要搞清楚,你手上只有多少資源?

Arduino 平台本身就是一個把就是很複雜的東西,用最簡單的方式來獲利。

然後把他極大化。但那是Arduino 平台本身,所以搞這塊Arduino 板子的人或許

還可以賺到一點錢,(我想到的應該是 Atmel 這家公司的MCU 而已)。

但如果你只是拿這個東西,今天貼個馬達控制應用,明天再用個 LED 跑馬燈,

搞得很有成就,那是不是只是個"聞豆油"的再簡單不過的事呢?

你會搞的東西,別人也可以。

相信我說的:新創公司搞產品,絕對不會是像朝三暮四的,今天搞這個,明天再去

接個甚麼風馬牛無關的東西。是啊~你可以標榜你技術卓越,甚麼東西你都搞過,

甚麼玩意兒技術你都會...但我要告訴你的:新竹有名的阿富魯肉飯、廟口鴨香飯。

他們都就只是賣這些招牌上的東西而已。就連我自己看過園區太多工程師了,

每個早早賺到錢退休去的,都是只靠那一兩個產品就夠了。像我師父:他們以前

就只靠光碟機就賺飽退休了,後來去搞甚麼?從此也沒就再聽說他們還靠甚麼賺錢的

,甚至還有可能因為有錢了,亂搞瞎搞的...還賠了不少錢。

所以啦,如果你真的相信自己在技術方面真的高人一等,或是自認為自己卓越非凡,

那你更應該要懂得如何把過去您曾經成功走過、看過或聽過的事,好好的再審視一下。

到底你缺的是這些明明高人一等的技術呢?還是有些你沒有真正認真想過的東西?

或許:你的下一步會更清楚明白的。






2 則留言:

  1. 寫得真好! 不過沒有玩到酷炫的科技就像人生online的DLC沒有玩到一樣...

    回覆刪除
    回覆
    1. 謝謝你的留言。

      甚麼是DLC ? Downloadable Content ?

      每一個世代,都有每一個世代所扮演的角色,個人認為只要你能養家活口,

      把工作與家庭都能照顧得好,自然就會有人承先啟後的傳承下去的。

      至於甚麼是:酷炫的科技?那也得看你用甚麼角度解讀了囉。

      就像以前我大學跑去航空一樣,可以去研究一架飛機設計、測試等,也是啊。

      前兩天看系上學長在系友會群組內,傳來新一代高教機的試飛影片。

      我也覺得很炫啊。...只不過,人生嘛! 有很多選擇的啦。

      刪除