2021年10月22日 星期五

USB_DIY :Cypress USB MCU (一) 簡介

我們來講一個在 USB MCU 應用領域裡的老大哥,長青樹: Cypress USB MCU。

其實我早在十幾年前就有稍微介紹過 Cypress 的開發平台。只是:那時候也覺得

Cypess 的USB MCU 跟我第一顆參與的USB SOC 架構很像,而我自己也覺得我自己

用原來的USB SOC 也順順的...所以後來也沒花太多心思鑽研這家公司的產品,

當時也有很多學校老師、或書籍也都有介紹,也覺得應該沒差吧。只是,你從來也

不知道市場未來是怎麼變化的啦,尤其是這種拿IC 來搞教育或推廣市場,到底

是不是一門好生意啊?學校老師可能沒差多一點吧,反正,不管如何,總有薪水可以拿,

那怕是找學生幫忙,一來學生不需要付太多薪水,二來就算生意不成,情意猶在嘛。

而既然我後來也已經講了那麼多USB MCU 之後,現在我為什麼還要回頭講這個呢?

很好玩的一件事:只要你是搞軟體的,寫驅動程式的...你就又會碰到這一顆,因為

微軟官方網站所演示的驅動程式範例,都是用這一顆USB MCU 當平台的。所以如果

你覺得你要搞USB,要從硬體到韌體...甚至也要搞一點Host 端的驅動程式的話,

那你就有可能會碰到,所以為了我貫徹 USB DIY 一路走來的技術完整性的話, 

那也就不得不來講一下這一顆 USB MCU 了。

我們先來說:為什麼人家微軟會挑這一顆USB MCU 當範例程式的標準開發平台呢?

其實從他MCU 的架構來看那不難理解了啊:


因為這一顆 USB MCU 是用它內部的 SRAM 當作程式碼執行區間,這個東西有個好處就是

搞軟體的人可以不用太懂得硬體或韌體開發,就可以不斷反覆的更新USB 裝置端的程式碼,

達到他們可以簡單又專注的驅動程式開發。這是一個很簡單的隔行如隔山的思維。

尤其在USB 系統開發時,因為牽涉到硬體、韌體、軟體甚至到底層驅動程式,真的沒有人

有那麼多精力可以搞定這麼多東西,就算領薪水上班,領一份薪水,你也不會把自己搞得

那麼累啊。是不是啊。但你說要學USB 到底要切入哪一點啊?那又碰到問題跟誰學?

去哪裡找這麼完整的東西啊?所以我才想把這部分也簡單解說帶一下了囉。

我們先來比較我自己之前那一顆 USB SOC 的架構:




都是利用 IC 內部的SRAM 當 Code Bank,也都是 8051 Based 的。其實 Cypress FX2 早期也

是只有 8 KBytes Code size,後來才改成 16 KBytes 的。(這部分好像 Cypress 有申請專利)


但不管如何,你說這樣子的IC 架構有甚麼好處?其實,就我稍早有提過:因為程式碼

可以透過USB Host 來不斷的更新程式碼,這對於專門搞軟體的人來說:真的很方便,

尤其是那些搞USB 開發工具的人說:就可以放心大膽的開發系統,程式碼測試有問題,

沒關係,隨時可以改的...你要想一下:當年有Flash Based,又要支援IAP/ISP 智能升級的

USB MCU 不多啊,反正USB 的東西就是要掛著 Host 才能工作,那乾脆系統的應用程式

我就掛在 Host PC端的軟體裡,當USB device 插入Host 之後,我再下載 USB 應用韌體

就好了啊。這種作法最有名的產品就是:






是的,市場賣到價格爛得很的簡易版邏輯分析儀。這個也是這一種程式架構產品的最大

殺傷力:太容易拷貝複製了啦。我只要買到MCU,PCB 搞一下,連韌體都不用撰寫燒錄

馬上就可以出貨換現金了。多簡單啊....但對寫軟體的人來說他沒差啊。

這是一個東西方文化與技術價格觀定義不同的差異。你自己評估與判斷吧。

我用一個簡單的系統應用範例來說明一下這樣子的系統韌體更新的優點給大家看:



這個USB DMX 512的系統,之所以可以跑那麼多不同的 LED 節目,其實我就是

利用SRAM 內的 Code Bank, 切成一塊(譬如 4KBytes) 來專門跑LED 節目,當PC Host 

要跑甚麼節目時,把這一段"罐頭節目"的程式碼透過USB 下載下來,就可以馬上更新

節目了,這樣子是不是很簡單容易?所以雖然它內部的SRAM Code Bank 只有 8K或 16K,

其實透過這樣子的USB 應用,他的節目程式碼是可以大到你所無法想像的。因為這些

罐頭節目程式碼都是存在Host PC 端的硬碟裡的啦。
--------------------------------------------------------------------
那對於這樣子的架構USB MCU 還有甚麼市場競爭優勢?客戶寫的東西是不是沒有保障?

對 Cypress 這一種IC  原廠來說:也真的沒差了。不過,他後來也被 Infineon 併購了。

至於你還要不要學這一種USB MCU 呢?你就自己判斷了囉。不過呢?微軟還是用這一顆

USB MCU 來進行驅動程式的示範教學...所以我猜:應該還有吧...

而傳統那一種大大一片的開發平台版,也不符合時代潮流了,他們後來也出了一款

小而美的開發 EV 版了:

但我說了:這一種只要我買得到 IC 又不用撰寫韌體及軟體就可以做買賣生意的...

誰不搶著做呢?你IC 原廠還賣這麼貴?(其實也不貴啊...但管銷費用就是高啊)

市面上就有一堆類似的產品了:


但我說真的啦,這個東西你買回來也沒那麼簡單就可以上手啊,

中國大陸或網路賣家這些東西給你,也不會有任何客戶服務的啦。東西會不會用?

怎麼用?碰到問題怎麼辦?那都秉持一貫的生意原則:貨到付款、不退不還

好吧,我就先來交代一下幾項注意事項

第一:買這個東西,賣家給你的沒有多少值得參考的工程資料,你還是得要到 Infineon 官方

網站找原來那個正版的資料,包括開發工具與參考程式碼的。但原廠找資料時,你最好是

找前一代的開發版:CY3684,而不是這一類似的CY3689 版的。這一版太精簡了。資料

不完全。連開發下載工具軟體都沒有...

第二:買來的開發版沒有附上任何程式碼。包括:外掛那一顆 IIC (24C128) ,他裡面是

完全空白的...。插入電腦跑的是官方標準的 Bootloader 那個 code ,所以你還是要去官方

網站找驅動程式安裝的。

第三:這塊開發版的硬體電路跟原廠的還是有點差異不同的:

這是你一般所買到開發版的電路圖:


而這是原廠開發版的電路圖:


主要就是在於外掛的 IIC 的Jumper 設定。

原廠的設計是:Jumper open 跑 Bootloader ,但原廠開發工具軟體不能燒錄IIC。

                           你要 Close 才能燒錄 IIC ,然後自動跑更新程式碼。

你買到的是:Jumper close 才能跑Bootloader,但原廠開發工具軟體也不能燒錄IIC。

                            你要 Open 才能燒錄 IIC,然後要手動的重新插拔才可以跑更新程式碼。

第四、網路賣家可能有提供那個精簡版邏輯分析儀的IIC 碼給你,你不要以為你只要燒錄

那個IIC 碼之後,你就免費多賺到一台精簡版邏輯分析儀。這個東西已經很便宜了,

不要再貪這個了啦:



裝置管理員是認到這個東西沒錯,但當他要更新他的應用軟體時,是肯定還有檢查

硬體的差異的啦,我相信:你有科學精神去查,是可以查得出來的,但我相信你之所以

會買這一塊 USB 開發版,不是為了這一台邏輯分析儀的啦。不要再浪費那個生命了啦。
---
弄這塊USB 開發版本來就是為了搞 USB 開發學習的....尤其就是為了微軟官方標準的

驅動程式開發平台的。但這一片也不完全符合微軟原來的那一片開發平台版。

微軟那一片標準開發版稱為 OSR USB FX2。


原來是這麼鳥鳥的一片像 DIY 的電路板,後來他們也有改版:


但我跟你說:這片板子已經絕版了,很簡單,我說了這是針對搞軟體的人的一塊PCB 版,

你認為寫軟體的人會去幫你搞 PCB 嗎?你又去弄這塊PCB 給軟體工程師買,

你覺得可以賣幾片才合算?所以就不要再想有沒有機會賺到錢了啦。

我跟你說:就連原來OSR 官方說法都一副很屌跟你說:

Q: Will you guys send me the source code to the firmware on the device? 

A: No. It’s not very different from the FX2 BULKLOOP sample in the Cypress Development Kit. It’s not that we’re trying to be difficult, but we just didn’t write the code for external consumption, and we’d have to take all the bad words out of it first. 

Q: PLEASE? 
A: Sorry. No, we will not accept money (a rare statement from anyone here at OSR). 

Q: Will you guys send me the schematic for the device or explain the pin-outs from the chip? It’s perfect for what I need, except for mumble. 

A: No. We didn’t create this device as a cheap alternative to the Cypress USB-FX2 Development Kit. We created it as a cheap way for folks to learn how to write Windows drivers. Anyhow, if you can’t figure out what pints connect to what from looking at a twosided board and reading the chip spec sheet, you really don’t have any business building your own hardware.  

你要就自己想辦法吧。

那你覺得這個是一門好生意嗎?你不做,中國大陸肯定搶著做。

是的,多聰明啊,馬上變個手法,寫書來順便賣個 PCB 電路板吧。張先生在網路

寫電腦驅動程式的書,台灣也有賣他所寫的繁體中文版的書。兩岸一起賣應該

很好賺吧?答案是:一樣陣亡啦。你也有錢一樣買不到了

所以我跟你說:在這個技術領域裡,你真的不要以為透過這種方式,就是想賺錢又想

賺名聲:要人家尊稱你一下老師或大師的...你還是早點睡吧。尤其是在老中的世界裡。

你還真的不如接案子幫客戶多搞幾個量產的大案子還比較實際吧。

所以我們就秉持著一貫的DIY 方式處理:




用洞洞板,花一個晚上手工的作一片擴充版比較快了。

至於 OSR USB FX2不給原始韌體碼。這個有甚麼難的...人家也都跟你講得很明白了。

不屑搞這些鳥事啊。

Q: Will you guys send me the source code to the firmware on the device? 

A: No. It’s not very different from the FX2 BULKLOOP sample in the Cypress Development Kit. It’s not that we’re trying to be difficult, but we just didn’t write the code for external consumption, and we’d have to take all the bad words out of it first. 

是啊,我們就靠自己啊,是啊~這有甚麼難的呢?
---
因為這一代的Cypress USB MCU 會同時支援 USB 1.1 的 Full Speed 及USB 2.0 的High Speed。

完全取決於你 Host 端的 USB Hub 晶片來自動判斷,為了驗證這件事:你說USB 2.0 的

USB Hub 還好找,你去哪邊弄一個古早的 USB 1.1 的 USB Hub 呢?

幸好,我這個老人家還蠻惜福的,還特地留了一台,現在才可以示範給各位看結果:

依照 OSR USB Fx2 的說明:他的七段顯示器會在USB 插入 USB Hub 會顯示答案:

這是插入古早版的 USB 1.1 hub 的結果。


這是插入現在版(直接接NB 的USB) High Speed USB 的結果。


好了,我們也搞定了啊。幹嘛給寫軟體的屌我們呢?哈~哈~

----
結語:簡介一開始也沒想到拉拉喳喳的又寫了一大串。但也算是一個輕鬆自在的

開場白了。其實,從這些使用說明解說,要告訴各位的是:從事技術開發工作,

只要你有心,專心一門技術或學問都不難,只要把時間拉長就可以了。

但是從這些技術的學習與養成過程中,不會背離你的是這些硬梆梆的技術學問,

而是在這些學習過程中,你還可以旁敲側擊的了解技術以外的產品或市場的東西。

就像我文中所提到的技術教育市場,其實這些都是這些人用他的生命與時間所帶給

你的經驗,讓你在學習成長過程中更懂得如何將技術轉換成有真正市場價值的東西。

其實,以我們USB 的系統開發的角度來說:不用這一塊Cypress USB MCU ,

用 STM32 的 Blue pill 可不可以做到一樣的微軟的驅動程式演示開發版?當然可以。

但怎樣的生意才是我們這些搞技術的人才能真正 approach 的?這才是我們必須

所學習的。不一定是自己關起門來自己搞,多想想市場或通路合作機會吧。

再強調一次:技術在產品創造中,只是一個手段,不是全部,商品要銷售成功還需要

全面的資源整合與投入,而技術的價值往往在這個過程中,是要不斷的被重新鑑價的...

謝謝 。 

(待續 )

沒有留言:

張貼留言