2024年8月3日 星期六

老工程師的技術生活(三十二) --- 簡單DIY 複製一套ST-Link V2-1

老工程師再來玩玩 DIY 。這次來玩 ST-Link V2-1。

我之前已經有提到過 ST-Link V3 版了。這一類的開發工具總共分成四代:

ST-Link V1 :這個我真的就沒接觸過,或許真的年代久遠了。

後來就有出了 ST-Link V2 :這個應該就是市場主流,滿街都是的東西。我在之前文章

也有稍作解釋說明。而這個 ST-Link V2 我還真的買過原廠的:


就是上面照片中中央那一套,你看:我還保留原廠的盒子。只是後來都被市面上:

照片中中央下方那個小USB 裝置所取代....當然原廠也有出了一版 ST-Link V2-1 版。

這一版就是全部附在原廠各個 Nucleo 或 Discovery 開發板上面的那套開發下載工具:


如上圖左邊 Nucleo-64 開發驗證板上方那一部分。雖然原廠也跟你說:你可以把這片

ST-Link V2-1 給切割(簡易的折斷)下來,當作獨立的 ST-Link V2-1 工具使用。

但我想一般人除非真的有那麼強烈的需求,才會幹這件事吧。否則可能就像我一樣

找一片最小的 Nucleo/Discovery 開發版的 ST-Link V2-1 版來用吧:(上上照片中)


就像這片一樣:簡單地把開發版上的MCU 載版拆下,自行接上轉接線就可以了:



這片 ST-Link V2-1 有甚麼特別之處?他除了簡單ST-Link V2 一般功能之外,就是多了

一組虛擬串列接埠(Virtual COM Port) ,也就是我們一般常用的UART 轉USB 的功能

因為我們一般在系統開發上常常會把系統的一些除錯訊息藉由 UART 給同步顯示出來

(printf指令)。所以如果你是採用 ST-Link V2 的話,你可能還需要外接一組 UART 轉USB

的接頭來達到這個功能。但 ST-Link V2-1 就可以輕易地幫你完成了。也可以讓你的工作

桌面上簡潔乾淨多了。(還可以省去一組電腦USB 占用接頭。 )

------

不過,這片 ST-Link V2-1 在市面上就真的比較難買得到一片獨立的開發工具版了

老工程師呢?就是喜歡動動手來DIY 一下,找一點樂子來做做,我想:反正就是一顆

STM32F1 系列的MCU 所作工作嘛!我首先想到的就是市面上最常見的 STM32 Blue Pill 

那一片板子吧:


但問題是:因為ST-Link V2-1 所燒錄的程式超過 64KB ,他已經不是原來 Blue Pill 上面

所採用的 STM32C8T6,而是STM32CBT6 。所以就買幾顆回來玩玩吧:

(其實你如果去研究一下 ST-Link V2-1 的 燒錄檔的話,你也可以發現:原廠是故意把程式

塞爆 64KB 的,128 KB 容量其實後面都是空白的,而且還故意在 128 KB 最後擺幾個

Bytes 內容來撐大容量的。)


我剛收到這幾顆 STM32CBT6 時,我看到上面那個較為模糊的雷射標示,我還真的

一度以為我買到假貨呢.....其實,市面上有些 STM32 Blue Pill 上面的MCU 還比較多假貨

山寨品。😁😂😄😂😁😀    不過,也是實際要上了版子試試才知道啊。


你看我DIY 置換這種LQFP IC 功力還可以吧?

在社群網路上,充斥很多PCB 焊接或替換 IC 相關類似 DIY 影片,拍起來都會讓你覺得

很羨慕地按讚的拍拍手。其實,這些有些看似職人工作技巧,都只是時間與經驗的

累積而已。大部分的人都可以透過這樣的經驗與時間的累積達到這個境界的。

像我自己創業時,一開始還不是甚麼事情都是自己來:PCB layout,零件上件除錯等,

這些苦差事都做過啊。只要有工具,多練習幾次就可以了,你之所以現在在大公司

上班沒有機會做?那是因為公司分工細、責任重,還有很多固定工作進度報告會議要開,

只要自己獨立創業時,這些時間省下來,當然也夠你好好練習了,並像以前我上大學前,

跟著我老爸學冷作西工,工地捆鋼筋等,我相信我現在那個電弧焊、車床或是捆鋼筋的

技巧應該還是可以混口飯吃的。但我現在也不會拿這些玩意兒出來現寶的要大家

給我按讚的說我好棒棒的~年紀大了,歲月與經驗的累積本來就是一種成就,有甚麼

好愛現的呢?能真正地為你自己默默地帶來輕鬆自在的老年生活比較重要吧。

要賺這種錢都是有嚴酷的年齡限制的啦。人老了就得要認命吧!

然後呢?我們就依照原廠所提供的 ST-Link V2-1 電路圖,把一些應有的周邊電路給補上:





其中最麻煩的就是照片中那一條 USB Re-numeration 控制線:這條線主要應就是拿來

讓ST-Link V2-1 可以用軟體做到USB 插拔重置的功能:主要應該包括了韌體升級功能。


原來 STM32 Blue Pill 版上的 USB 是直接可以直接上USB 而沒有任何軟體插拔功能。

所以我們就得稍微修改與跳線一下:(照片中就是原廠電路圖)


這樣子在硬體方面就完成了,接下來就是 ST-Link V2-1 韌體燒錄了。

網路上只有比較早期的韌體,我們必須先燒錄舊版的,然後再用韌體更新軟體升級。

以下就是一些簡單的操作說明:

第一:還是需要用到舊版的 ST-Link V2 工具燒錄:


第二打開 ST-Link Utility Tools 軟體:


我們可以看到一顆 STM32CBT6 (128KB) 的MCU 了。


然後就可以把網路上找到的較舊版 ST-Link V2-1 韌體(V2.J31M21)給燒錄進去。

哪裡找得到?我文章最後會提供我所整理的相關電路圖與這個舊版韌體燒錄檔。

然後我們實際把這片我們初步完成的 ST-Link V2-1 插入電腦:


在電腦的裝置管理員裡,就真的出現 ST-Link Debug (V2-1) 及一組 VCP 串列埠,

同時也是支援Udisk 。其實這是提供DFU (Development Firmware Upgrade)功能用的。

----

接下來就要升級韌體到最新版本了:這一部分我試了幾次,發現真的要找一片實際的

STM32 開發平台才可以完成的:


然後打開原廠所提供的 STM32CubeProgrammer 工具軟體:

這裡有個很好玩的系統設計概念:我們首先來看一下我原先使用的STM32C0116-DK

上面的 ST-Link V2-1 :


其實原廠真的知道這套 ST-Link V2-1 是來自於哪套開發板上面的,不管韌體更新後,

還是保持這個訊息:可見他韌體更新是不會去動到這個硬體訊息的。

這個做法很簡單:其實就是在韌體某個固定位址擺入這個硬體的簽章(Signature ),

然後韌體更新都不會去更新它的Signature 內容,只是在生產管理上:針對每個

開發版上的 ST-Link V2-1 版本,去控管它的獨立的簽章就可以了。

(從上圖我們也發現 ST-Link V2-1 的最新版本是 V2J45M30 版)

---

然後我們再插入我們DIY 的 ST-Link V2-1 板子:


我們也可以發現網路上的這舊版韌體是沒有綁任何開發平台板子的。

(也順便記得我們DIY 的 ST-Link V2-1 板子的序號:066BFF323447523043254458。)

然後就可以進行韌體的更新升級了:



(左邊的 Firmware upgrade 功能)


升級完成後,它也會自動的重新插拔 USB,(還記得稍早提到的那一條 USB Re-Numeration

控制線的功能了吧?所以我們就可以看到新的Udisk 檔案內所附的文字檔說明。已經是

新版(V2J45M30) 的韌體了。


升級完成後,我們也可以發現它的硬體還是呈現空白的。所以它的硬體簽章沒動到。

接下來我們可以實際回到開發平台來使用確認一下:


我們可以透過 Keil 的開發平台所抓取我們的 ST-Link V2-1 的設定內容:序號與版本。


這樣子,就完全大功告成了。

--------------------------------------

好了,來個總結吧。

1.  這個東西不難,那你說可不可以拿來開店做生意?見仁見智,我過去文章也講了

很多關於技術與商業模式的許多故事與例子,大家可以參考評估看看。

2.  看到別人搞這種DIY 的東西,也真的不用過於讚賞與羨慕,引用一句歷史用詞:

不讀歴史的人,看什麼都是前所未見的!

只要你肯做,也像我從年輕至今累積一些相關工程經驗就可以了。只是凡事有所得,

必有所失,因為我曾經放棄園區IC 設計公司既舒服又收入不錯的職位,為了分擔家庭教育

而選擇另一條自力更生的技術生活:日子裡沒有固定繁縟的例行週會報告,當然就可以有

很多屬於自己的時間來磨練自己,完善自己的技術領域與經驗。

3. 我的貼文都是從工作中去累積許多既實際又好用的技術經驗,沒有高大尚的內容,但卻是

許多工程實務。就像因為我待過 MCU IC 設計公司,對於MCU 開發工具有一定的實務經驗

與感知能力,當然也是有所助益的。只是有些事情就真的要懂得評估,做一次是一種成就。

做第二次之後,那是一種責任與包袱了。(過去的經驗分享) 就得要評估後續的經濟效益了。

尤其是在社群網站上,看到別人貼文內容,都覺得既好玩又新鮮。但是不是每項都值得你

花時間與精力去走一遍?還真的要評估自己投入與後續的價值,尤其當你慢慢上了年紀之後。

4. 大家畢竟都是平凡的工程師。就算你可以在工作上出類拔萃,最終也會回歸到非常現實

的面相:你必須要有一定的類比對照基準:有同事,有同業競爭對手等才能去凸顯你的

"出類拔萃"。但環境會一直改變你原先所擁有的優勢條件。(技術與市場會不斷的改變更新)

你也會逐漸面對歲月的挑戰...這是沒有人可以逃過的自然法則。

最後,你也可以選擇一條屬於你自己的小確幸生活方式,來完善豐滿你工程師的技術人生。

這是我最誠摯的感想。分享給您。

----

文章內容的相關電路與韌體資料內容:連結。最重要的就是MCU 上面那個 PC13/PC14

應該就是硬體拿來初步辨識ST-Link V2-1 在哪塊開發版上的,這一文章內的是將兩組

PC13/PC14 接 10 K 電阻到GND 就可以了。

沒有留言:

張貼留言