2023年12月16日 星期六

老工程師的技術生活(二十一) ---MCU 開發工具(二) STLink-V3MODS

這是繼續上一篇關於 STLink-V3 開發工具的話題之技術分享。我這個LKK 工程師

看能不能用時下年輕工程師們常用的 Github 分享平台來作為技術開發平台。 

年紀大了,能學能做的東西也不可能一直持續下去,所以與其講一些五四三的東西,

倒不如儘量能不能多留下一些東西來分享一下。

首先還是先補充一下上一回提到關於 STLink-V3 版本中的一些比較差異。

因為第一代的 STLink-V3MINI 與STLink-V3MODS 外觀極為相似,後來才將

STLink-V3MINI 改版,改稱為 STLink-V3MINIE :


(若查看此圖不夠清楚的話,可以點選此圖在另一分頁查看,以下依此類推)

主要STLink-V3MODS 有一些額外的橋接(Bridge) 介面可以供使用者自行透過寫寫

PC 上APP 軟體方式規畫使用,這也是我這一系列文章的重點。就是只要寫寫APP 軟體

你就可以透過STLink-V3 來對外部 debug 電路做一些額外的應用開發:譬如你的STM32

開發需要一些外部的GPIO 、SPI或 I2C 的訊號來觸發你開發版上的一些周邊應用。

畢竟PC 平台目前大概也是最通俗、最簡易而且資源也豐富:透過很成熟的USB 介面,

沒有軟體程式碼的限制、記憶體容量也大,運算能力也高,要做出簡易的人機操作

介面也容易等...當然啊,你就得要熟悉PC 端的應用軟體的撰寫,你也不一定要跟

我一樣用 Visual studio 中的 MFC 啊,年輕人喜歡的 python 也可以啊。

在STLink-V3 工具中,具有同樣橋接功能的板子還有有一塊就是:STLink-V3SET ,

只是這片板子就不便宜了。



關於新舊版本的:STLink-V3MINI 及 STLink-V3MINIE 主要差別就是板子變長了,而且

USB接頭也改成Type-C 了。當然不同的開發工具版,在USB 的設定中也是不同的:


這部分後續我們也可以從實際的操作中可以知道的,當然如果你想先一步了解,也是可以

從原廠所提供的安裝驅動程式的 INF 檔中可以查到的。(如果你想進一步了解關於 USB 

驅動程式的INF 內容,也可以翻查一下我以前寫過的 USB DIY 系列文章吧。)

從上圖可以看到原廠提供在這片STLink 工具裡支援了不少的USB 介面。 這點我們

後面還可以看到的。



這是兩個 INF 檔內所揭櫫的USB 安裝時的VID/PID 所對應的傳輸介面功能。 

當然也沒多少人有興趣研究。除非就像我這種LKK 工程師一路從USB 早期開發就

開始接觸這些東西,才會念念不忘這些東西。現在這些東西都很成熟了,就像ST

這麼大的公司也是用 WINUSB 啊~不像以前我們還想自己寫底層驅動程式的。

我自己本身的經驗感想:我覺得寫程式(或韌體)或做系統開發,最幸運的是:有機會

能自學地把PC 端的 APP 應用軟體開發給學會了。畢竟不管你一路學:8051、PIC 或

Arduino 至現在的 ARM 、Embedded system 等等...永遠學不完的系統平台還真的

不如 PC 端應用軟體還受用,因為就是這套東西歷久不衰,還可以讓我這把年紀,不但

可以寫寫韌體系統外,還可以整合PC 平台系統,讓我還可以混口飯吃、細水長流的。

等你在職場裡待得夠久的話,你就會懂這個現實問題的啦,不管是創業或就業領薪水。

---

首先我先簡單搭配一下上述的一些資訊來說明一下關於稍後軟體開發時所碰到的

資訊:(以下都是從USB 分析儀查看到的資訊,你不懂沒關係...看看就好,我是玩這個

東西已經超過二十幾年了啦。不用羨慕或心急...想學這種東西就只能靠職場的條件環境

與機會的啦。因為都是要錢要資源的~沒有老闆付你薪水、給你額外時間的話,就算了啦。)


首先我們可以知道我手上這片 STLink-V3MODS 的USB 資訊:VID/PID= 0x0483/0x374F 。

符合原廠所提供的資料文件說明的。


此一USB 裝置宣告的 Interface 達到五個 。代表它的傳輸介面功能有多種方式。USB

規格也好像沒有限制你USB 只有一種 Interface ,只是要同時要把這麼多種Interface 同時

建在一個USB 裝置中,在USB 韌體開發上真的要花很多時間,不只是寫韌體,還要相關

驗證測試與跨平台的兼容性。我只能說:這只有待在這一種大公司裡才玩得起啊。

(又要人,又要有時間與資源啊。--- 老生常談的老話題啊。)


你看光這些裝置的文字描述就落落長的,所以當你透過電腦作業系統中的"裝置管理員"裡,

就可以查看到這麼多的裝置描述...最重要的還是最後那個產品序號,這是出廠時,每一台

USB 裝置都應該擁有唯一的序號。這些待會兒我們在APP 開發時,都會碰到的。

另外我們也可以透過原廠自己提供的APP 來查看我手上這片 STLink-V3 的版本:


這樣子,我們就已經完成做功課前,技術資料的收集與分析了,這樣子就非常有益於

我們在PC 端上驗證我們所要開發的應用程式功能了。

----

這一開始我也不想把程式給一行一行的解析說明了,我就直接把它擺在 Github 平台上了:

Chamberplus STLink-V3 Github 。各位就自行參閱吧。當然我也會隨著計劃進行,慢慢地

更新修正的。我想有機會也順便交代一些關於USB 裝置如何在PC 端應用軟體的開發。

截至今日為止,我先把最簡單的 GPIO 應用先貼上。至少我的VS2017 平台是OK 了啦。

直接看程式初步執行的結果吧:


我們可以透過程式執行後。所獲得的STLink-V3 的USB 相關資訊:

包括:USB 的VID/PID 及產品序號。然後所抓取的STLink-V3 的韌體版本與

ST 原廠提供的應用程式所抓取的韌體版本是一致的。

---

然後呢。我們就可以透過一個簡單的按鍵來啟動STLink-V3 板上的 GPIO 腳位來

對外部產生I/O 控制 Set/Reset 功能了:以下影片是我簡單的以每隔一秒的方式,

來 Toggle GPIO 腳位訊號。(可以觀察示波器上面的訊號變化。)


好了,簡單的程式示範結束了。

能不能看得懂甚麼?就看你對這樣的平台與對程式的瞭解而定了。

-----

簡單結語:

1. 關於 USB 橋接(Bridge) 功能的開發平台。市面上很多,譬如:Cypress 、FTDI 等,

但ST 公司出的這一款的最大市場優勢就是:他本身也是STM32 MCU 開發平台的

Debug 與下載更新的工具平台,透過支援PC 端APP 應用軟體搭配開發,可以協助你

在許多STM32 系統開發平台上有更多的資源與擴充功能的啦

2. 關於 STLink-V3 的Bridge 的應用 (包括:STLink-V3MODES 及 STLink-V3SET) ,原廠

也有提供相關的應用程式的相關工程資料。不過,這些都是很簡單的 console command

line 方式的範例。我的經驗裡:要給其他客人或操作者可以輕易上手的,還是以UI 人機

介面的視窗操作畫面比較親民一點,所以我都很堅持把他們寫成Windows 視窗操作環境,

只是要如何將一般 command line 的程式換成視窗操作程式,往往就是這些範例程式

轉換的第一步驟要務了,之前我提到的:OpenCV 的開發經驗也是

3. 其實 USB 裝置在系統規格上是要做到 Hot Plug and play 的。所以在PC 端的應用軟體

都是要做到能自動偵測到USB 裝置的插拔,而不會影響到你原本正常的APP 應用軟體

操作運行的。這一部分往後我也會陸續補充的。

4. 最後老人家還是要嘴幾句話的。做工程師的,在現實生活裡,無非就是要靠自己本身

的專業技能(我說的是技能,是不是一門技術?見仁見智啦) 換一口飯吃,當然如果你的

專業能夠有別於別人可以做到的,你就多一份機會,也多一份賺錢升官發財的機會。

但如果沒有的話,等你年紀越來越大時,自然就會造成你在職場上的憂患意識:

要嘛就是要不斷的學習成長、吸收新知,趕上時下科技技術潮流;要嘛就得要早點

斜槓或轉換跑道的另謀生計,甚至發財機會。否則,隨著每年畢業的投入的年輕工程師

都擁有比你更新的知識與充分的學習時間與"新鮮的肝"...你雙拳真的難抵群猴圍攻的啦。

該怎麼做?該如何早做準備?永遠是你在工作職場上,每年看著新一代工程師投入職場

時,你都得要面臨思考的課題。這些經驗與看法我也都在過去的文章中,不斷的提供

各位思考角度。一個人一輩子能做的事真的不多...凡是事先多想一下,往下做,

不斷的修正與調整,永遠都是個人與企業公司經營的最大法則啊。

4 則留言:

  1. 感謝分享, 我也是LKK 工程師也用MFC 換口飯吃, 優點大概剩編出來檔案小執行速度快, Python產出來的超大一包, 不過現在PC應該都不在乎這點容量, 會比較在意好不好寫, 多快產出, 正確否? 雙拳真的難抵群猴圍攻, 現在又多個AI猴(群), 現在要寫個程式不管是Windows、Linux或是Embedded 的, 資源都相當的多, 最近還看到有人用VBA 在開發工控的東西, 工具只有適不適合而已。

    回覆刪除
    回覆
    1. 我很早以前就在想手機是不是能做工控?因為它沒有動件,又耐摔。又有鏡頭,可以做影像。只要USB-C上的裝置做出來可以高速通信給外部不是就解決了?

      刪除
    2. @samuel 不管是PC 的軟體或是Linux/Embedded 的,最大的問題
      還是在於維護的問題。如果軟體搭配硬體的產品,一次到位然後
      老闆/業務又覺得可以賣得長長久久的~也不需要升級改版。
      那很好~大家都落得輕鬆。但最怕的就是還要改版升級或是不小心被
      發現小問題要除錯的...你痛苦~老闆業務也痛苦。

      所以啦~要用VBA 寫,我們也沒意見,只是以後想到維護就頭疼。
      會用VBA 寫程式的,應該也有一點年紀了,為了自己的健康著想,
      就不要相害老闆與年輕人了啦。

      這是我個人的小小觀點。

      刪除
    3. @Bee 透過手機做工控應該不難吧,現在應該也有一大堆透過手機
      平台做監視(控?)的。只是要不要做到即時工控?
      這個就跟車用平台一樣:如何做到防呆與安全防護機制?就是一大考驗。
      我也相信世上也有很多人在搞,但這些東西肯定要先架起一大堆:
      測試驗證平台,與許多模擬情景環境。都是需要時間與金錢的。

      (這個就像一大堆人標榜智慧家電,但如果是我的話,肯定不敢說:
      人沒在家,透過遠端啟動電鍋、烤箱這些高功率的東西,萬一出事了,
      到底是自己倒楣?還是系統開發者要負責?這些技術理論可不可行?
      當然沒問題啊。弄個簡單的功能展示有甚麼困難的呢?)

      只要沒賺錢或拿別人投資的錢來玩。都是沒辦法走到讓客戶相信與
      市場接受的。我常說:現在在技術開發上,都沒甚麼不能做的,
      最難的還是如何燒錢做完,還可以存活下來?
      包括做到多完善?有沒有別人跟你一樣做到最後,然後一口價的
      搞得大家都沒飯吃? --- 比甚麼?當然就是整體的產品與市場策略。
      也就是你說的:經濟理論上的可行性啊。

      刪除