也總是希望從裡面可以觀察或研究出別人的作法,這應該也是許多開放平台興起
的另一個重要原因吧。我相信搞技術的人,以前會去常翻雜誌或買書回來看,
只是現在網路發達,多多少少有空就會想從網路搜尋找起,但有些東西只是光看
外觀或是碰到沒有人貼文的話,關於產品的硬體或內部的東西就不容易了解的。
有機會我們就來試試看市面上的這些東西到底是怎麼一回事,也順便提供給各位
從產品本身的技術內涵,來推演一些市場現象或是市場趨勢與未來吧。
首先我們來看一個現在很普遍的DIY 市場,就是許多產品的開發工具,
上回我們有貼過一篇關於 STM32 的 ST-link 2 的開發工具,有時候您真的很難想像
這些市面上的低價複製品,到底是誰把原廠的東西給"流出來"的?是不小心的呢?
還是原廠某種程度的"刻意釋出"的?這些東西明明也都沒有原始碼,但燒錄檔有可能
給了工廠,或給了代理商的FAE?然後就"不小心"給流出來了。
但很明顯的是:只要市場暢銷,有很多人用的東西,那肯定就有市場,不管你
原廠標準品售價多少,市場上的複製品肯定會砍到見骨的,至於能不能用的問題,
你就不用太替它擔心,市場的自然生存法則會教他們的。
這一次我們來看另一個MCU 的USB 開發工具:Silicons Labs 的 USB Debug Adapter:
我說過了,反正只要是暢銷品,有市場需求,尤其原廠賣得很貴,(為什麼要賣貴?
因為反正有人在賣低價的複製品,我原廠殺價也沒意義,乾脆我就保持貴貴的賣...
沒差啦,反正它的成本大家也都可以推估出來,對原廠來說:買MCU 時,順便
送你一套也沒差啦。這就一種產品的市場訂價規則。說穿了沒啥。)
我手上當然也有一個原廠的:
我們可以打開裡面看一下:
既然要賣貴貴的,成本的考量就不是什麼重點,也順便照顧一下其他IC 零組件,
它的板號是:EC-3 REV 004。說真的。我怎麼查就發現該原廠就只有出到 EC-3 而已,
後面的 EC-5 ? EC-6 ?就真的查不到。更好玩的是:它這個東西從它們早期搞 8 bits
MCU 時就有了,到了現在原廠也繼續支持他們現在 32 bits ARM MCU,這個東西還是
可以用,所以啦~這個東西重點真的不是在硬體設計上,而是在軟體支持上的擴展。
好了:那市面上的複製品呢?
它就叫 EC-6 。你有沒有覺得這個東西的外盒有像有點眼熟啊?
是的,它就市面上另一個暢銷開發工具:Saleae 邏輯分析儀的外盒是一模一樣的:
你看:這一種低價產品的成本極低化是搞到什麼程度,就連一個塑膠外盒也是盡量
共用的,頂多就多做一張貼紙而已罷了。
那你看人家原廠PCB 版上那麼東西(電子零組件),這麼小的盒子哪裝得下呢?
這個你就不用替他們操心了,肯定也是降低成本版啊。只是他們還是用原廠
的MCU ,對原廠來說:他們沒差,一樣可以賣MCU 賺錢,至於其他零組件廠商
來說:那就抱歉了,真的不是我原廠願意的...這真的沒辦法啊。
(其實據我所知:以前代理商手上也有另一個陽春版的類似的東西,但我覺得
應該沒差了,反正代理商要靠這個東西"賺錢"?真的不容易啊...)
----
那我們看完硬體之後,再來看看裡面的一些跟軟體有關的東西吧。
既然是USB 介面的開發工具,那他們是一定會有USB 裝置宣告的東西,
我們就來看看吧:(以下我是以原廠 EC-3 的東西為主)
我說過了:它這個東西早在很早 USB 1.1 時就有了,那你說USB 未來發展會不會有
歷史包袱的問題?那肯定是有的,又不能破壞到這一部分的相容性,又想增加系統發展
效能,那就得考量系統規格制訂與發展者的睿智了吧。
產品定義的公司(VID) 為 Cygnal。可能有一些較年輕的工程師可能沒聽過,
其實 Silicon Labs 的 MCU 產品線是合併這一家Cygnal 公司來的。
而這一家公司原本是一家搞軍用MCU 起家的公司,也是很早就開發出 1T 8051 的公司。
在這裡就不用再爭論這一種 1T 8051 的技術或市場問題了。
一般這一種開發工具都是屬於 Bus Power 的,電流量的需求都不大。
而它走的USB 驅動程式是來自於 Vendor HID Class ,也就是免裝驅動程式的。
不過,有些時候它的應用軟體也會要求使用者加裝他們公司的USB 軟體的DLL,
這些是指一些比較特殊應用的:譬如要使用原廠提供的軟體開放程式的話。
另外我們也發現它的 USB HID class Report Descriptor 長度有 0x317 這麼長,我之前
文章中也有提過,我想這是一個一開始就考慮到未來保留給許多應用所使用的,
也不一定是我們一般使用者,或許他們原廠在許多產品開發測試上也會用得到的。
好了,這個字串宣告就是一個重點了,因為它應該是配合他這一代產品的硬體版本
宣告,所以我們真的也看到與硬體上PCB 的版號類似的字串:EC300242B87。
如果你有用過這家公司原廠所提供的USB 範例程式,你應該也知道他們保留了,
一個 unsigned long 變數給它的字串滾碼(Rolling Code)用,所以這個字串長度就
可想而知了。這一點也可以供大家在這一方面的需求考量吧。
接下來就是那個"落落長"的 USB HID class report Descriptor 了:
真的太長了,我只好擷取前後部分供大家參考:
可以看得到出來,反正一個 USB 的 data Packets 大小就是 0x40 (64 bytes),USB 1.1 的
規格啦。它乾脆就從 1 到 64 就全宣告了,反正以後用得到?或用不到?軟體以後
再說吧。既然要用HID Class 了,那也就配合每一個長度資料,配上每一個固定的
Report ID,而每一個都支持 Interrupt IN/OUT。
不過呢?原廠也不是笨蛋啦。(所以我常常開玩笑說:有時候看到人家搞的東西
也真的不用笑人家,尤其人家是國際大廠時,人家做事情也不會像我們這些
小眼睛小鼻子的公司的這一種搞法啊,這也是我們從這些產品的分析與探討中
可以看到的內容。)
它在最一組宣告中,尤其是保留一組支持 Feature 的介面,這個就可以拿來做為
Interrupt IN/OUT 以外,還可以支持 Endpoint 0 中的 Set Report/Get Report 的內容。
所以在原廠的程式中,它沒有支持長度大於 64 bytes 的傳輸內容。這樣子其實是可以
簡化USB 韌體的複雜度,效能可能差一點,但系統與軟體維護上就比較穩定單純
多了。(如果你有搞過USB 系統的話,就應該能體會到我這一種觀察與說法。)
以下就是一個明顯的範例了:
看到沒:上圖就是一個針對 Report ID 為 0x40 的 Set Report 之資料傳輸。
而緊接的下面是一個 Report ID 為 0x01 的 Interrupt IN。及一個 Report ID 為 0x03
的 Interrupt OUT。所以大家可以看得出來,只要你如何懂得 USB 基本宣告與
軟體與韌體之間的交互操作,其實在系統使用上,真的蠻得心應手與方便性的。
這一點真的不是以前那一種 串列 RS232 或並列 Printer Port 那一種方式,而這一點
也不是那個 RS232 轉 USB (CDC)那一種作法。
好了,我們基本上已經看完原廠的東西了。
至於那個低價複製品呢?大致上跟上述的內容差不多,就有一項不一樣:
就是產品序號定義不同:EC600MCU123 。可能就是這個序號他們才稱它為 EC-6 版本。
但原廠真的找不到這個版本啊。
我想可能是這個序號可能是複製者自己改的吧。它可能也不知道原廠滾動碼(Rolling
Code)的含意,就乾脆一個固定序號搞定。所以我猜啦:市面上所有的低價複製品
應該全部用同一個產品序號。那這樣子有沒有其他延伸問題?
答案是:那這樣子就不能同時插在同一台PC 端上了,因為一般PC 軟體看到同一個
USB 的 VID/PID 時,它也會同時抓到,只是在打開USB裝置時,你就搞不清楚:
是選到哪一個埠(PORT) 了。
而上圖是EC-6 的內容,那至於實際軟體運行下的資料內容是什麼?我想這只有
上層的應用軟體才有辦法解讀內容了,這一點我真的也沒興趣研究了。
反正人家在網路上賣這個東西時,那肯定在絕大多數的應用場合都可以用的,
否則也不會一直在販賣的,至於以原廠來看:也懶得去管它了,反正對他們來說:
複製品用的也是他們自己公司家裡的MCU,而他們原廠的EC-3 還是賣貴貴的。
我原廠賣一台賺得贏過你們賣好幾台,他們也覺得沒差啦。市場上還總是會有人
會堅持買原廠的,尤其是以正統的公司來說。至於一般玩家呢?要省這個錢,
也就沒有必要還要提供什麼FAE 或技術支援的。所以這個東西就會存在於
市場之中的。最主要的還是在於會使用這些工具的人多不多?是比較重要的。
用得多:那代表著他們公司自己的MCU 產品線使用的人口或工程師多,
那也很好啊,有人願意複製這個東西,那也不錯啊,那又何必去管他們呢?
---
所以啦~有很多東西或許換個技術以外的角度來看的話,那也許有著不同的
見解吧。也供給大家參考一下。
謝謝你的閱讀。下回見。
hihi, 超久沒來來閱讀您的blog了. EC3是小白, EC5應該是tool-stick的debug小板, 印象中只支援c2介面吧. 很EC6, 我也沒印象. 久很久以前就在大陸論壇上找到bin file, 自己也做了一批debug + evb(F340), 不過沒對外販售, 自己使用或是送給朋友玩.
回覆刪除哇~真的好久沒聽到你的消息了。你還是兩地奔波工作嗎?
刪除我認識貴司的人早在N 年前就已經轉換公司,而且還不只轉換一次而已。加油喔。
---
非常謝謝你所提供的相關資訊,@柚子以前就是該原廠的通路商工程師。
以前那一種作法以現在市場分為來說:根本是小巫見大巫了,
一來大陸市場與玩家大量興起,二來網路開放平台比比皆是,
再加上網路銷售平台普及(淘寶、露天等),這一類產品生意已經算是俯拾即是了。
---
昨天深圳老友跟我通微信(因為他根本無法出門的關在住處)。也跟我說:
現在在大陸搞MCU 就根本就是買了版子或MCU,然後從大陸CSDN 抓範例程序。
搞一搞就交差了事,所以搞MCU 就看網路開放源的資源來決定了。
還跟我說:現在一顆 STM32F103 一顆就 4.~RMB,就算大陸的GD32 也只便宜不到幾毛錢。
這個市場已經打到這一種地步了。從市場角度來說:也已經幾乎沒有技術討論空間了。
這是很現實的市場問題。
--- 當這些老外公司(尤其是IDM廠)也懂得殺價競爭時,趨勢你也無法擋啊。
我找到webUSB api,看來它未來發展不錯
回覆刪除https://kknews.cc/zh-tw/code/9map99l.html
然後又找到了使用網頁做firmware的範例
https://devanlai.github.io/webdfu/dfu-util/
因為手邊工具有限,沒有測試。但PC上可以用的話,手機可能也有機會用。
這樣下去,USB裝置有可能不用寫驅動程式? 不知我的理解是否對?
我想從Arduino 這些所謂的 Open Source 平台大量出現後,
刪除一切就想走向簡單套用的模式,就像Python 搞USB也是,
都有現成的模組可以讓你套用,只要你底層掛上他們為你搞定的一切就可以了。
這沒有不對,對許多人來說:也不用花心思去學這麼多Detail 的東西。
但相對的就是包袱大,風險問題...這就跟搞毒品一樣,可以讓你一下子可以忘卻
所有的煩惱。但如果:真的如果產品需要一個比較精簡高效率的東西時,
那就又考驗著許多人的基本功力了。
老外搞這些,肯定是沒多大問題,反正他們只要把大原則,一個想法實現就好了。
至於未來還要精簡或 Down Cost 的事,那就在丟給你們老中就好了。
如果我們這些老中公司,不管是接代工或產品開發,不要一天到晚想削價競爭的話,
我想這些做法也都可以的。但偏偏事實上卻很難如此"比照辦理"。
到頭來,老闆還是希望你用比較精簡,可以大大降低成本的做法。
這些文章或作法,只會讓老闆胡思亂想,一天到晚跟你說:人家不是這麼簡單的做法嗎?
你們怎麼會搞這麼久呢?那又為什麼又要加硬體、又要搞甚麼後台?雲端的呢?...
最後只會玩死自己,而偷偷在背後笑的:還是這些檯面上的國際大企業。