1.概要
前回書いた通り安価なBluePillポードにはSTM32F103のクローンチップが実装されています
このチップについていくつかボードを購入してあるので調べつつ使ってみようと思います
2.クローンチップの状況
よくまとめられているページがあるのでリンクを貼ります
STM32F103のクローンについては例えば
さらに魔改造されたチップもあったりしてこちらは購入して調査中です
3.オリジナルチップとの違い
ハードの特性については適切な測定機器がないので解析できませんがソフト的な違いについて少々調べてみました
上のリンク内にもあるようにIDCODEとか異なりますがコードはフルコンパチのようです
4. IDCODE関連調査
1)IDCODE関連調査アイテム
STM32F103(Cortex-M3)はコード実行中にメモリーを見れたりとか優れたデバッグ環境が売りのようでこれが使えます
(1)ハード:MINI ST-LINK V2
・ネットでは 中華ST-LINK と呼ばれていてSTマイクロ社製品のクローンらしい
・名称は基板にシルク印刷されていた MINI ST-LINK V2 にしました
・USBメモリー用のパーツを流用してコンパクトに作られていてこれも相当安価で100円台で買えます
・チップもSTM32F103のクローンが実装されていますがこちらはそのままファームウエアのアップデートもできて問題なく動いています
・別途詳細書く予定
(2)ソフト:openOCD
・Open On-Chip Debugger
2)MINI ST-LINK V2 接続
・USB パソコンに接続
・SWD 3.3V,GND,SWCLK,SWDIO 合計4本をBluePillポードのSWDヘッダーへ接続
3)openOCD準備
(1)Homebrew インストール
・Homebrew のページにあるコマンドラインをターミナルに貼り付けて実行する
・インストール後にPATHを通す(インストール完了メッセージ内に書かれている)
(2)OpenOCD インストール
・Homebrew でインストールする
(3)各ファイルの場所
(4)cfgファイル修正 今回は stm32f1x.cfg をコピーして新たに stm32f11.cfg を作成
CPUTAPID を変更 0x1ba01477 -> 0x2ba01477
4)IDCODE等読込コマンド
ターミナルで openOCD 実行 DBGMCU_IDCODE:0xE0042000 の内容を表示した例
・IDCODEはエコーバック中程に表示される
Info : SWD DPIDR 0x2ba01477
スクリプトにすると
スクリプト実行結果(クローンチップ)
5.IDCODE等一覧
1)コード一覧
アドレス |
名称 |
bit |
内容 |
STM32F103CBT |
SWD CMD=0xA5 |
SWD IDCODE |
32 |
SW-DP tap ID |
0x1BA01477 |
0xE000ED00 |
CPUID |
32 |
CPUコアID等 |
0x411FC231 |
0xE0042000 |
DBGMCU_IDCODE |
32 |
DBGMCU_IDCODE |
user mode:0 debug mode:0x20036410 |
0x1FFFF7E0 |
Flash memory size |
16/32 |
メモリーサイズ=下位16bit[Kbytes] |
0x0080->128Kbytes |
0xE00FFFD0 0xE00FFFE0 0xE00FFFE4 0xE00FFFE8 |
Peripheral ID4 Peripheral ID0 Peripheral ID1 Peripheral ID2 |
ー |
JEP 106 continuation code [3:0] Part Number [7:0] JEP 106 ID code [3:0] - Part Number [11:8] Revision - JEP 106 ID code [6:4] |
0x00 0x10 0x04 0x0A |
2)購入品チップのコード
Address/Code |
純正(We Act実装) STM32F103CBT |
MINI ST-Link V2 APM32F103CBT6 |
捺印フェイク STM32F103C8T |
SWD IDCODE |
0x1BA01477 |
0x2BA01477 |
← × |
0x1FFFF7E0 |
0x0080 |
← |
← × |
0xE00FFFD0 |
0x04 |
← |
← |
0xE00FFFE0 |
0x10 |
0xC3 |
← × |
0xE00FFFE4 |
0x04 |
0xB4 |
← × |
0xE00FFFE8 |
0x0A |
0x0B |
← × |
4KB count |
0x00 |
← |
← |
JEP 106 continue |
0x00 |
0x04 |
← × |
Part Number |
0x410 |
0x4C3 |
← × |
JEP 106 ID |
0x20 |
0x3B |
← × |
Revision |
0x00 |
← |
← |
捺印フェイククローンはMINI ST-Link V2に実装されていたチップと同じ
メモリーが多かったり色々おかしいけど動く