安裝過程

這類教程在網上能搜到很多,基本上都是使用 Free Software Initiative of Japan 維護的 Gnuk 搭配 STM32 方案,大同小異,無非編譯完了再用 ST-LINK V2 刷到 ST-LINK V2 里我刷我自己,運氣好的話能一次通關,當然我運氣向來不好,所以踩過不少坑,才有了這篇拾遺,以供大家參考。

這個方法能夠成型,主要是因為意法半導體生產 STM32F103C8T6 時直接用 128kb Flash 代替了 64kb Flash 。不知道是福利還是廠商失誤而可巧 STM32 的燒錄器 ST-LINK V2 就是採用 STM32F103C8T6 並且已經制成 USB Dongle ,省去了不少步驟,還有成本也很低,貨源也很充足,淘寶一搜出一堆,然後第一個坑就是在這個地方。

淘寶上一個 ST-LINK V2 大約 12 RMB - 35 RMB 不等,理論上來說 ST-LINK V2 應該是 STM32F103C8T6 ,但是山寨板用什麼型號的都有,而且就算是同一家店里也不能保證所有的板子都採用同一型號的 MCU ,概率相當隨機,比如我就在同一家店里買過八個,結果只有頭兩個是 STM32F103C8T6 后面六個都是 CKS32F103CBT6 ,而且是 64kb Flash ,最新版本的 Gnuk 是沒有辦法安裝的。但是后來又在別家店買到過 128kb Flash 的 CKS32F103CBT6 ,也曾買到過 64kb Flash 的 STM32F103CBT6 ,能看出這個概率非常玄學,而且根本沒法從外觀來判斷。當然不排除只有我這麼背

不論如何,如果你不幸買到了 64kb Flash 的 ST-LINK V2 而又不想放著吃灰,可以參照御坂網路司令塔的這篇1。主要思路就是將 Gnuk 降到 1.1.3 版本,當然這裡面編譯也有一些問題,有需要可以去參照原文里的方法。

兩種 Layout 兩種插針方式

這裡有兩個坑,有的 ST-LINK V2 拆開來後在 MCU 左側有四個針孔,即 SWCLK 、 SWDIO 、VCC 和 GND。要命的是,這個針孔的順序,也是隨機的。我在這裡是這麼處理的,可以仔細觀察針孔引出的線路,如果線路通往旁邊的 MCU ,那麼就是 SWCLK 或 SWDIO ;如果直接向板子尾部走,那麼就是 VCC 或 GND 。VCC 和 GND 不能弄反,據說會把板子燒掉,可以直接從尾部的針腳走電源。區分 SWCLK 和 SWDIO 就有些麻煩了,不過可以參考 CANARY WORKSHOP 這篇里面的線路圖2,參考起來會比較方便。

那麼還有一種板子拆開來之後會發現根本不提供调试的針孔,就會有些麻煩,需要用手按著線,同樣也要參考上面提到的線路圖。

還有少部分板子不提供針孔,只提供焊盤,那麼你就有兩個選擇:要么自己把線焊上去;要么淘寶上買一個四針的調試夾子。山寨板子還真就什麼都有

Flash 兩種刷寫方式

一般來說有兩種,OpenOCD3 或者 stlink4 ,可以去參考文章末尾的鏈接。這裡不再贅述。

外殼選購

如果你對自己的 Gnuk Token 的外觀有些要求的話,可以去淘寶上搜一些 U 盤外殼,這裡也有一處需要注意。淘寶上有一種 U 盤的 DIY 外殼的型號叫 G2 ,咋一看挺合適,其實根本裝不下板子,也不要買金屬的,不方便改造。可以買那種山寨大廠 U 盤的外殼,比如 Sony 、 TOSHIBA ,這種大小剛剛好,里面有一些硌著的塑料卡子和塑料柱什麼的,隨便去畫材店買把木刻刀,推掉就好。

總結

隨著用 ST-LINK V2 刷 Gnuk 的人越來越多,能夠刷最新版的 Gnuk 的板子可能越來越少了,如果不介意外殼的選配的話,可以買那種沒有外殼只用熱縮管包裝的 ST-LINK V2 比較能看清楚,最起碼能看明白有沒有四個調試針孔。

還有一處順嘴提一下,對於非專業人士來說,針腳解焊最方便的就是吸焊器,可以把焊錫全部弄干凈。

下面這些文章56雖然沒有直接幫到我,但是也或多或少地對我有些啟發,在此表示感謝。

這篇文章7介紹的是另一種板子,可以在淘寶上買到類似的,有興趣的可以折騰一下。

有絕對安全這種追求的可以忽視這篇文章,參見這裡的討論8

參考