2020年1月4日 星期六

USB DIY --- USB Host 端的軟體開發(二) --- 小小感想

這一系列文章雖然稱為 USB DIY ,但我寫這些文章時,可不是用一般時下所謂

"開箱文"方式的寫法,因為大家有機會去網路搜尋一下相關技術文章,往往都是

"汶豆油"(沾醬油) 的方式給你簡單的介紹一下,譬如從別的網路找到一兩個範例

原始碼,然後在自己的平台上,驗證跑一下,證明是沒問題的。然後就可以贏得

許多點閱率與按讚數。寫這種文章,我也可以,你也可以...但這要證明甚麼?

其實,如果大家都上過班,搞過產品量產上市,都知道:產品開發設計與生產,

絕對不是像這些開箱文這麼簡單的...否則,大家寫完這些文章或看完這些文章之後,

那是不是大家都可以開公司搞產品了?或許,你也會"噹"我說:幹嘛那麼認真呢?

大家也只不過是興趣,閒暇之餘,DIY 樂趣嘛 ! 是啊。如果只是消磨時間的樂趣的話,

那我想那這一種樂趣開個玩笑說,去買個上萬元的自行車運動,哪個比較有益健康?

以前我們一些園區退休朋友,也常說:今後我要每天騎車、打高爾夫球...

然後呢?除了買幾萬元自行車,還添購周邊全套頂級的裝備或是整套名牌高爾夫球具...

幾個月後,就沒下文了...當然啊,人家要促進市場經濟,個人是沒意見啦。

但這一種真的是興趣嗎?當你發現一些"開箱技術文"的背後是要不斷的添購材料或

設備時,當你堆著滿間的材料設備之後(尤其是在寸土寸金市區房價之內),或許有一天

你也會覺得:我是在幹嘛?尤其開箱入門容易,但真正要搞到"真正好玩的成就感"時,

你才發現:原來事情沒有想像的那麼容易了。

幾塊PCB 公版還算經濟實惠。(當然啊~你也會發現現在高級一點的板卡也動不動

上千元的),搞完這些公版之後,會不會想搞個自己的PCB ?結果發現:不會 PCB

Layout ?還要發包生產?這錢你花得下去嗎?那不花這些錢去走完"最後一哩路"

那是否又覺得很可惜啊?其實,除了去真正搞一塊自己的PCB 版外,真正能貼近

一點有產品概念的,又不用花太多錢的作法,大概就是往上搞個應用軟體吧。

因為不管產品如何?現在許多IT 產品動不動還是需要一些應用軟體,不管是產品本身

所附屬的應用軟體外,其他的不外乎就是協助生產與檢測的治具軟體,再沒有的話,

你也得要有個燒錄程式的應用軟體吧。用原廠的?有時候就是不喜歡讓客人或工廠端

知道你的平台為何?或是也擔心量產燒錄碼外漏...此時最需要的就是一支專屬的

應用軟體了。

所以啦~再回頭想想:如果只是搞個公版,從網路下載個範例程式,再弄個開箱文,

那到底為了甚麼?以下也是我從網路找到的一個範例產品:



這個東西就是所謂的兩輪平衡車,也曾經一度是西方國家號稱賣得很好的聖誕節禮物。

結果:你看人家大陸人把資料收集整理得多好啊?就連一般基礎的韌體程式及硬體外,

就連未來量產所需的各項周邊的資料也都整理給你了,還包括最原始國外的工程技術

資料都有,他們不需要 Github 啊...直接全部整理給你:


你說:搞這種產品開公司有甚麼難的?像這樣類似的工程資料,在大陸浩瀚的網路世界裡,

甚麼都有,也難怪朋友常常開玩笑說:現在去大陸到底要搞甚麼才能賺到錢啊?

就連上一篇有網友留言提到的 emWin 的東西,你也不用特別跟原廠交涉甚麼?

就去淘寶網買個公版,他們也會附個百度網的雲端連結資料給你,隨便你下載:


所以說真的啦,如果只是去網路下載個程式資料碼,弄個開箱文,你認為真的很難嗎?
--------

回到一個真正嚴肅的話題是:網路上各項產品或基本技術理論的東西,真的滿街都是,

俯拾即是,那到底我們要怎麼消化這些東西呢?其實真的與其整天在這些許多"免費"

的技術資料與原始碼的移植中,能真正落實到一個扎實的技術開發歷練,個人還是覺得

應該要好好的靜下心來,專注的走完一個產品開發概念。而在這開發過程中,伴隨著

應用軟體的開發就成了一個非常重要的關鍵,尤其當你是一個人在DIY 過程中。

因為你可能沒有團隊,你也沒有多少資源可以協助你做對應的檢測與除錯時,

換個以軟體整合角度,回頭再一次檢視自己在系統韌體開發中,有沒有遺漏了

甚麼原本該注意的關鍵事項?就變成另一個重要助手。

我們常常可以看到許多DIY 或是創客討論平台上,很多人提出許多原本應該從

很簡單的開源程式庫裡移植過來的東西,怎麼會出現一些難以置信的錯誤呢?

就非常希望旁邊的人可以協助除錯,但殊不知系統除錯本身就是系統開發者一項

非常重要的技能,如果沒辦法或沒有效率的除錯,也稱不上是一位非常稱職的

工程師,這也是成就一位傑出工程師的重要歷程。

以下我就以個人的一些在系統開發過程中,如何利用應用軟體開發,尤其是 USB DIY

中,常用到的USB 硬體介面搭配一些基本的通訊協定,完成不管是產品系統本身的

開發或是後續的導入量產、乃至於協助產品銷售與客戶服務方面,所扮演的重要角色。

第一個當然就是我曾經在世貿國際參展中的獲獎作品


這個產品之所以得獎,我記得我只是跟評審委員說:這個東西我是用系統最有彈性的

設計理念來完成最傳統,而非常依賴客製化規格的產品設計。因為車子保修的東西不但

分車款還分年分,諸多小小差異的東西往往會造成生產與銷售通路的庫存。

我就一個系統平台的觀念解決這個問題。這個系統的MCU 沒有支援USB ,但我還是

以USB 介面來支援產品在系統應用方面的需求。因為在那個行業裡,是不可能還要

教客人如何在電腦操作過程中,還要去選 COMx 的。

第二個是一個也是非常簡單的系統開發,所使用的MCU 也是沒有USB 的,但這個東西

也有一個很討厭的地方:那就是可能隨時需要作韌體更新或升級,那怎麼辦?所有的

DIY 平台都只會教你基本的系統開發,而不會教你如何做到產品量產與後續維修支持的

工程技術:


一樣的,同樣以USB 來完成系統所需的任務,當然在這個小系統中,也不太可能讓你

掛個 Hyperterminal 或是大陸的甚麼串口上機軟件給你或客人用,所以你就得自己生一個

出來。記得當我拿出這樣的系統應用軟體Demo 給客人看時,客人只問了一句:

"喇?! 原來現在要接設計案,也要搞應用軟體哦?" 我開玩笑的回答說:這是老中可憐

的地方,賣你硬體就得送個軟體,明明不需要的應用軟體工具,就得要生一個給你。

還不能額外收錢,否則,一般只是搞個版卡或公板給客人,客人就很容易拿這個東西

秤斤秤兩的計價...你叫我怎麼辦?搞這個我又不能額外再花錢雇用幾個軟體工程師來

寫AP 應用程式,那也只能DIY 一下了囉。這個東西還算簡單的...


這個案子就更麻煩了,明明用的就是帶USB 介面的MCU ,但他老兄除了USB 本身

功能外,還要你多搞一個利用一般市面上的條碼掃描器來讀取產品序號,寫入產品

當作USB 插拔時的serial Number。考你吧...所以這個東西的畫面就不用太花俏...

因為是要給產線用的...只要簡單的Show 條碼與最後轉換後的USB Serial Number。

這還沒完。你還要同時要記錄與出一份報表供產線稽核用的檔案:


所以這一隻系統應用軟體就得要同時支援USB 與 Virtual COM port 的功能:


所以你可以看到有一隻USB HID ,及一隻一般的COM 轉USB 的東西。

軟體就得要同時判斷與讀取:


搞USB 系統夠可憐了吧?

---
所以啦,你不要以為只是一些簡單的USB DIY 的東西,真的搞起來,系統最後最需要的

東西,都不是網路上那些開放原始碼或是那些免費的資料或文檔。雖然這些東西我也

都是參考這些網路上的東西,但最重要的還是在於你自己本身系統應用經驗的累積,

尤其是在於產品開發整個流程的掌握與關鍵核心。
---
當然啊...這些東西在大公司裡,或許不需要你一個人來搞定,沒人或沒空搞,可以請老闆

或長官再讓你多雇用幾個人進來供你使喚啊...不會?那也沒關係,去大陸的各個網路搜尋

努力的找,搞不好還可以讓你找到類似的原始碼或系統應用文檔...下載回來再慢慢研究啊。

喔~不是你研究啦,教這些菜鳥工程師研究啊。只是現在市場、老闆或客人是很精明的...

能花最少錢的,他們就不會想額外花錢的...或是最好就是買硬體看能不能順便送個應用

軟體啊?所以我才說:老中搞IT 產品很可憐的。

---
最後結語:其實我過去一直在講一些USB DIY 的東西,大家或許都比較有興趣或期望

我的USB DIY 文章,能不能像那些網路"開箱文"的做法,搞一搞就公布你的原始碼,

最好讓大家可以直接下載移植之後,馬上就可以交差了事。但其實我知道:搞USB 系統

的東西,不比像 Arduino 的東西那麼容易簡單說明,尤其當每個人的系統應用不同,

他的差異性也蠻大的,另外一個重點是:USB 系統除錯不容易,尤其是牽涉到系統韌體

與上機應用軟體之間的溝通互動。如果我公開了這些做法,肯定會有一大堆人

上來留言,天天要我幫忙除錯、看問題出在哪?我不把我自己搞死才怪。

還記得我上一篇:USB Host 端的軟體開發(一):提到原廠最後的做法嗎?

是啊。人家最後為什麼乾脆把它包成 library 給你們?因為也怕這些網路需求聲浪給

淹沒啊。人家國際大公司會怕,那你說:我一個小小的部落格主,能怎樣?

最後再一次的強調:搞這個USB Host 應用軟體,一方面是為了協助本身在系統檢測與

除錯方面,提供另一個檢視角度,一般來說:只要透過這應用軟體與系統韌體之間

不斷而反覆的資料傳輸,可以很快的驗證與解決你在系統開發過程中所遇到的盲點。

雖然哪是一個簡單的USB DIY,最後他所成就的可不是一般網路開箱文的東西,

尤其當你未來的系統需求越來越複雜時....

這就是我隨著USB DIY 所接觸到越來越多不同的市場、客人需求時,所感受到的

一個小小感想啦。大家不妨參考看看吧。

(待續)











沒有留言:

張貼留言