2019年3月8日 星期五

USB 系統雜記(03/08/2019)

今年以來,突然想先靜一靜一陣子。剛好之前在熟悉新一顆USB MCU。

說真的~我們上了年紀,系統看多了,也摸多了。有甚麼東西會搞不清楚呢?

就只是要不要花時間而已。最主要還是來自於"想法"與"作法"。

因為也發現小孩子們長大了,他們在講課程東西,明明我也都多少聽得懂一些,

但甚麼也插不上嘴,Deep Learning ? AI ? Python ?...

看看人家比爾蓋茲的預言:

20 年後的科技未來,比爾蓋茲最新 10 大預測

這篇寫得落落長,也有比較條列式的說法:

---
但不管哪一個說法,看起來比較跟我們搞軟硬體有關的,都已經不是我所熟悉的技術

內容了。我當然也知道像上述的:Deep Learning ? AI ? Python ?.. 都已經大步的往前進了。

因為我們還有在搞技術,但在網路搜尋的東西,也都幾乎被這些所佔據了。

我們這一代所能做的就只是有限的殘餘價值而已。那就應該如何去貫徹"想法"與"作法"。

舉幾個例子來說:像我去年十一月寫的一篇文章:歸暝全頭路 天光無半步(台灣俗語)  

那個就是只有想法沒有作法。尤其看到許多媒體上或是年輕人也都喜歡許下甚麼新年

新願望,甚至滿腹的憧憬與抱負,雖然有些聽起來是有點不切實際,但有些煞有其事,

但真正做起來,是不是我們所想的那麼簡單容易?那又是一另回事了,尤其是每當看人家

報章媒體造神講得多好聽,但實際上一個人就一個頭腦,兩隻手,一天就二十四個小時,

當你一切回到原點時,你又要如何掌控一切呢?就以我們寫程式來說:對啊~反正現在

寫程式網路搜尋有一大堆參考程式原始碼,都簡單啊。但這就只是想法而已...

當你真正碰到問題點時,到底您能掌握多少解決處理能力?那有些人呢。

就只是覺得有事情做那就好啊。我哪需要管這麼多呢?這個就只是作法,而沒有想法

有沒有不對的地方?我舉一個簡單的例子,去年年底有個上市櫃的老闆找我聊了一個上午,

跟我聊關於車用電子產品與市場,其實他在N 年前也找我合作過,那時他都還沒有太多

這方面的產品與市場經驗,但過了幾年,他也的確涉獵了一些。其實之前我也有介紹相關

廠商給他認識,會談最後提到這件事,的確有些事情事值得我們思考一下:

他說:"這個廠商夫妻倆一年就只做個一億多... 他沒甚麼興趣。他對我的想法比較有興趣。"

這就是一些傳產給別人的印象:就是只有一般的作法,而沒有太多想法。

對啊~有生意做就好了啊。想那麼多幹甚麼?其實也不是他們沒有甚麼想法或作法。

我知道他們夫妻兩個也就只能做那些事而已啊。他們又不願意養RD ,也不太願意投資新

技術或也不知道如何管理新產品開發等...所以呢?有單純作法而沒有太多想法的人是讓

別人看不到未來的。

在回頭想想自己,以前也待過園區上市櫃大公司,也可以過個簡單只要有"作法"而不需要

有太多"想法"的事,日子應該也可以過得去。但如今我卻覺得目前這樣子我也覺得不錯啊。

因為以目前我經歷的事來說:只要我有一些想法,我就可以有明確的作法來解決問題。

而這樣子的日子可以讓我生活得愜意啊。譬如說:就一個簡單的DIY 或事幫朋友一些事時,

(譬如寫寫程式、韌體外加PCB 製作 Debug...) 好像也沒有太多困難之處。甚至有人想開發

一些相關產品技術,雖然那些Deep Learning ? AI ? Python ?..我是不懂啦,但至少以我的

觀點來說:也比較清楚如何去掌握開發的有利條件。

所以簡單來說:想法與作法之間,都有過與不及的問題。我想這是許多搞技術或許多職場

上有些人比較容易碰到的問題。當然啊~我覺得多看一些歷史書籍也有助於事情推演分析與

心態調整有很大的幫助,因為世上有很多事情不是你第一個碰到的,事情也往往不是我們

單純的想法或作法那麼簡單的,但只要我們抓到幾個原則,我想事情就沒有那麼容易讓

我們自己感到惶恐不安的。這是一件很重要的處世與做事的基本態度。
---
好吧,簡單的聊完八卦鳥事之後,就講講一些技術心得吧。

關於系統技術問題,現在對我來說:就真的就只是純粹作法的問題而已,因為現在網路

發達,有甚麼資料會查不到?學不到的呢?但真正的問題就是作法之下的"手法"問題。

我是覺得這跟我以前被IC 設計開發工作嚴格被訓練過有關,又待過大公司有組織、

有團隊開發的資源經驗。當然現在有很多過去這種大公司組織團隊資源一部分被網路

世界給取代了。譬如有甚麼技術問題,你可能只要打開Google 搜尋一下,馬上就有各種

答案供你參考。但答案不一定跟你所要的是一樣的,但至少可以馬上提供你參考。

但最重要的就是自己要有能力處理判斷與處理。這些都需要長時間磨練出來的。

有時候大公司待久了,反而會讓人有過度依賴的心態,反而很難培養出類似的經驗與能力。

(所以很多人都喜歡問:那到底是待在大公司好呢?還是小或新創公司好呢?我是覺得

各有利弊,最重要的還是自己的心態比較重要,事情還是要以正面的角度來看:

大公司有好的學習團隊合作的機會,可以站在巨人肩膀看世界、看事情。有很多小公司

沒有提供的環境;但小而新創公司,有著精實有效率的做事方法與條件。這些都可以提供

每個人學習成長的機會,就看每個人自己的心態。)

USB 的系統的東西,真的是需要韌體與軟體充分搭配開發的一項產品技術。偏偏這個看似

非常成熟的東西,但還是許多系統開發人員的一個"檻"。規格是死的。HOST 的東西又

已經非常成熟了,系統產品更是滿街都是,但還是讓許多系統廠商不知如何是好。

我也知道現在原廠也都盡量做到讓系統開發者不用花太多心思,就可以輕鬆上手。

但往往事情總是沒有大家想的那麼容易吧。正如電影《星際效應》裡講的"莫非定律"

(Murphy's Law):「凡是可能出錯的事,必定會出錯。

( If something can go wrong, it will.) 這是不管是搞技術或是許多經營管理問題都是

一樣的。歷史也是這樣子教育我們的。

以手上這個案例來說:其實就是很簡單的一個生產小工具:從 BarCode Reader 建

USB 生產序號。只是所有的裝置都是USB 介面的東西,BarCode Reader 走的是

現在非常常見的 Virtual COM 的東西。底下是完成的軟體雛型。這種東西比市面上的

APP 多很多,但都不會拿到市面上兜售的,而且他的產品壽命都超短的...搞不好玩

沒幾天就不用玩了。比程式開發時間還短...


對花錢的老闆來說:還是老問題,要找多少人?花多時間?(就是要花多少錢) 才合算?

還是前面說的鳥事:想法跟作法之間的掙扎。

就簡單的講出幾個技術重點:

1. 標準USB 裝置是 Plug and Play 。簡單。

2. 理論來說:Virtual COM 應該也是標準的USB 規範,但還是有點差異。因為COM 會亂跳。

3. 簡單容易上手,讓生產線上的人可以不用教一看就會操作。

4. 最好還是出每天生產報表...

...靠~想法很簡單啦那作法呢?以前我寫過很多USB AP 程式,這次碰到一下子兩個不同

USB 裝置在要同一支AP 跑,就得要用Multi- Thread 處理硬體介面... 其實這只要你有做過

應該都還算簡單的啦。我說了:現在這些基本技術都已經很成熟了。就看你如何兜起來

而已。還有如何整合USB 裝置一起搞。

當然問題還是回到USB 裝置系統韌體了。搞這件事我個人覺得最大亮點就是出在原廠

USB 底層的範例程式。這個老外原廠在USB MCU系列產品所採用的標準底層HAL 程式。

也就是你只要在原廠的開發平台上,隨便一拉 Code Generator 就劈哩趴啦建起來了。

大家都可以用得很爽。也根本不用學或懂USB  相關技術就可以輕鬆搞定。

但很不幸的是:在我這個應用哩,竟然被我抓到原廠這個底層程式的Bug ...

為什麼我說是一個 Bug ?因為我碰到了,看到了,我也解掉了。

那為什麼別人沒有發現?因為我的手比較賤啊...不是的~因為很多應用都有可能超出原廠

工程師的想像範圍,我個人覺得這也不應該怪原廠工程師,因為他們也有可能沒有真正

的碰到這樣子特殊應用?

其實我原來是在PC 端的程式裡塞了 Delay (Sleep(xxx);) 是可以避開這個問題。這也是許多

寫軟體在跟寫系統韌體工程師吵架之後的作法。每個工程師都有脾氣的嘛!皆大歡喜嘛!

誰要當壞人呢?但我說過了:我們過去所受過的工程訓練不是這樣子的。

生活就是如此嘛!你可以用一個敷衍的心態過每一天,但你也可以找出可讓自己覺得

充實又有成就感的生活感啊。因為你不是過完今天就好,你還要隨時面對未來而來的

每一天,何必讓這些既不愉快或那種虛無不真實感的心影響你的未來每一天呢?

所以這一篇文章真正要分享給大家或是年輕一輩的工程師們一句建言:

在你未來的研發或產品開發過程中,有些事情可能也就只是你在"想法"與"作法"之間的

要求或是心態調整而已。人生不是五年十年或是一兩個產品技術而已。世代交替是肯定

有些新產品技術東西我們是永遠學不完的。但有些東西卻也是世代交替所不可能會被

取代的東西。就是精實的訓練所磨練出來無形的心態與方法技巧。

最重要的還是一顆永遠謙卑學習的心。



8 則留言:

  1. https://www.st.com/en/embedded-software/x-cube-ai.html
    廠商已在整理MCU上的AI框架,仍是產生C語言。
    同時也有發現在計算力不足的問題,因為玩AI的人動不動就要很大的計算力。於是又出了MCU+CPU(運算補助)的新式MPU。MCU部分完全由XIP QSPI Flash取代internal Flash。
    AI我也不熟,但只要它轉到C來,就有機會弄清楚。

    回覆刪除
    回覆
    1. 這一點我也不意外啊。畢竟C 語言還是最通俗的,他也可大也可小。

      晶片廠一方面又要推新功能晶片,又擔心曲高和寡,當然搞這些東西還是盡量平易近人。

      畢竟現階段C 語言還是比較大宗一點,幹嘛一下子就拿石頭砸自己的腳呢?

      反正現在搞硬體也不難了,誠如所說的:效能不好,就再塞一顆 Co-Processor 給你啊。

      但這種東西也不是我懂得,因為這是我兒子他們在搞的。機會是他們的~幹嘛跟他們搶呢?

      真的~現在因為資訊發達,輔助工具又多。發展起來速度真的很快~他們也會抱怨學不完,

      也來不及。但我也跟他們說:沒辦法~因為你們現在資源比我們時代多了許多。

      本來所承受的挑戰也更大。(想想古代,只要能耕作種出東西就可以養家,種田的事可以慢慢學~

      但現在呢?當然差很多啊~相對來說:他們也比我們享受更多的生活的便利性啊。老天爺是公平的。


      刪除
    2. 謝謝你所提供的 MCU 廠所提供的AI 框架,說真的~這個東西我也真的沒辦法判斷這樣的技術亮點。

      我是有Pass 這個訊息給我小孩。這個東西大概也只有他們有機會去研究了吧。

      他有稍微看了一下,他說不是很了解這個東西的重點在哪?他們研究室裡也有學長在搞AI IP 的。

      或許也可以幫忙看一下。這到底是甚麼碗糕?

      所以我說:這個東西肯定不是我這一代的工程師可以搞得懂的。因為資源也不在我這啊。

      刪除
    3. 這個? 不就tensorflow為前端訓練,因為訓練結果可以產生精簡化的結果,再給目標使用,目標有一個簡化的Tensorflow Lite版本。STM32只是去接tensorflow lite的結果轉成C的資料及執行函式庫。
      原先的Tensorflow lite是browser側要去執行的,只是轉成MCU。
      STM32Cube AI只是一套中間轉換連接工具。

      刪除
  2. 根據目前學到的看過來。應該要先了解大數據,因為它是由統計學出發的。然後才有機器學習,後面也才發展出來其他AI。一下子跳上去,不管是誰都弄不清楚。
    一般先從應用來,所以就是用python。但個人覺得問題不在演算法,而是資料處理完了得到什麼?
    不要被表面技術給騙了。因為有用的資料(資料黃金)本質仍沒有改變。

    回覆刪除
    回覆
    1. 的確是的。你的認知很清楚。

      只是我們中國人以前都喜歡速成,不喜歡整理數據或報告...(這也就是我為什麼想寫文章)

      有很多過去所累積的經驗或數據都沒有留下。其實有很多東西最後都變成非常有用又有參考價值

      的大數據。以前跟老外合作過,他們在這方面就有很好的觀念與習慣。我在想是不是語言文字

      特性所造成的影響?(我們中文在還沒電腦出現前,大概就是書寫及排檔印刷而已...

      萬一寫字難看一點就完了,寫得難看怕羞於見人) 但老外在沒有電腦出現前,有一段很長的時間

      是可以用免吃電的打字機來整理數據報告的...這真的是一個演進過程所造成的差異。

      所以他們真的很習慣資料記錄處理,外加如何整理研究歸納...在他們看起來當然就不是一下子

      跳上來的。但其實真的是有脈絡可循的。

      所以有時候要跟上別人的科技技術,有時候還是要先懂了解一下科技以外的文化社會歷史背景。

      當然如果真的可以靠自己也可以...但真的要想清楚。我想這一點是中國大陸故意視而不見的吧!

      刪除
  3. "現在有很多過去這種大公司組織團隊資源一部分被網路世界給取代了..."

    這種事有好也有壞,在 internet + open source 尚未興起前,很多公司裡一些核心程式被某些老人把持,新人就只能拿來應用(call API),去求老人還要看人家今天心情如何

    對老人來說open source是壞事,原本可以吃到退休現在可能不行了,對新人來說是好事,可以不用求老人,順帶學習世界級的作品,變成一份可以帶著走的技能,對老闆來說也是好事,要找人容易多了

    John Carmack在1993年寫出3D game DOOM賺到法拉利,1997年就把source code釋出了,如果是台灣人,可能就想用這套吃一輩子買房屯房當包租公,可是他老兄認為世界不會因為自己停止進步,遲早會有人寫出類似的東西,所以乾脆就把code丟出來,當大家拿到code沾沾自喜時,他已經往更高更遠的地方前進了

    回覆刪除
    回覆
    1. 嘩! 可惜在這種部落格裡沒有按讚的地方?

      這個就是人家走Open Source 的環境下,怎麼越走越快的原因。

      以前搞FAE 時,客人總覺得沒給 Source Code 時,天天哇哇叫...

      但後來給了Code 之後,他們還是找不到、或也來不及讓工程師看得懂你的Source Code 之前。

      市場又出現新的產品,又有新的應用 Source Code 了...這下子老闆(工程師也是)又更慌了。

      那怎麼辦?沒有甚麼怎麼辦的...世界就是這樣子快速的改變著。

      人家全世界也不可能因你而等一下吧?

      重點就是最後的那一句話:"他已經往更高更遠的地方前進了"

      刪除