ST NucleoボードのST-LinkチップにDAPLinkファームウェアを書き込んでみた
STマイクロ製のNucleoボードのST-LinkをDAPLinkファームウェアに書き換えることができたので、作業手順を記載します。
注意
一度ファームウェアをDAPLinkに書き換えてしまうと、以後はST-Linkに戻すことはできません(STマイクロ社から提供されている書き換えツールから認識されなくなるため)。書き換えは十分に注意して行ってください。
今回使用した機材
- NUCLEO-L476RG
- ULINK-ME(MDK-ARMが対応しているデバッグアダプタであれば他の物でも可)
- Keil MDK v5.27.1(MDK-Essentialライセンス以上)
事前準備
NucleoボードのST-Linkデバッガのファームウェアを書き換えるために、STM32F103CB(ST-Linkのチップ)とデバッグアダプタを接続します。
- ボード上にST-LINKと記載されたショートピン2本を外します。
- ボード裏面のSB10, SB6のパッドに配線を接続します。
パッド | 信号名 |
---|---|
SB6 | SWCLK |
SB10 | SWDIO |
上記SWCLKとSWDIOをULINK-MEのJTAG-20ピンコネクタに接続します。また、ボード上のCN11またはCN12からGNDを引き出して接続します。
JTAG 20ピンコネクタの信号は以下のようになっていますので、参考にしてください。
これで、ハードウェアの事前準備は完了です。
DAPLinkファームウェアのビルドと書き込み
GitHubのDAPLinkリポジトリから最新のリリースをcloneします。
> git clone -b v0253 https://github.com/ARMmbed/DAPLink
> cd DAPLink
> pip install -r requirements.txt
> progen generate -t uvision
これで、uvision用のプロジェクトが DAPLink\projectfiles\uvision 配下に生成されます。
DAPLink bootloader のビルドと書き込み
以下のプロジェクトファイルをダブルクリックして開きます。
DAPLink\projectfiles\uvision\stm32f103xb_bl
開いたときにエラーが出るので、Migrate to Device Pack を選択します(必要に応じて、Device Packのインストールが始まります)。
プロジェクトが開いたら、Build ボタンを押してビルドを行います。エラーなどは特に出ないはずです。
Build started: Project: stm32f103xb_bl
*** Using Compiler 'V5.06 update 6 (build 750)', folder: 'C:\Keil_v5\ARM\ARMCC\Bin'
Build target 'stm32f103xb_bl'
Before Build - User command #1: ..\..\..\tools\pre_build_script.bat
C:\work\DAPLink\projectfiles\uvision\stm32f103xb_bl>python ..\..\..\tools\pre_build_script.py
#> Pre-build script start
#> Getting git SHA
#> Checking for local changes
#> Keeping git version file since it didn't need to change
#> Pre-build script completed written ..\..\..\source\daplink\version_git.h
compiling stm32f103xb_bl.c...
(中略)
compiling settings.c...
linking...
Program Size: Code=30270 RO-data=3962 RW-data=516 ZI-data=10868
After Build - User command #1: ..\..\..\tools\post_build_script.bat C:\work\DAPLink\projectfiles\uvision\stm32f103xb_bl\build\stm32f103xb_bl C:\Keil_v5\ARM
C:\work\DAPLink\projectfiles\uvision\stm32f103xb_bl>fromelf --bin C:\work\DAPLink\projectfiles\uvision\stm32f103xb_bl\build\stm32f103xb_bl.axf -o C:\work\DAPLink\projectfiles\uvision\stm32f103xb_bl\build\stm32f103xb_bl.bin
C:\work\DAPLink\projectfiles\uvision\stm32f103xb_bl>fromelf --i32 C:\work\DAPLink\projectfiles\uvision\stm32f103xb_bl\build\stm32f103xb_bl.axf -o C:\work\DAPLink\projectfiles\uvision\stm32f103xb_bl\build\stm32f103xb_bl.hex
C:\work\DAPLink\projectfiles\uvision\stm32f103xb_bl>python ..\..\..\tools\post_compute_crc.py C:\work\DAPLink\projectfiles\uvision\stm32f103xb_bl\build\stm32f103xb_bl.hex C:\work\DAPLink\projectfiles\uvision\stm32f103xb_bl\build\stm32f103xb_bl_crc
Start 0x8000000, Length 0xbc00, CRC32 0x90af67aa
".\build\stm32f103xb_bl.axf" - 0 Error(s), 0 Warning(s).
Build Time Elapsed: 00:00:19
ビルドが完了したので、STM32F103CBのフラッシュメモリに書き込みます。
メニューから [Project] - [Options for target 'stm32f103xb_bl'...] を選択します。
Debugタブから接続するデバッグアダプター(ULINK-ME)を指定します。Settingsボタンを押して、有効なデバイスが接続されているか確認します。
Flash Downloadタブを選択し、Addボタンを押します。STM32F10x Flash Options を追加し、OKボタンを押して設定ダイアログを閉じます。
メニュー [Flash] - [Erase] を押して、フラッシュメモリを全消去します。
そのあとに、メニュー [Flash] - [Download] を押して、ブートローダーを書き込みます。
DAPLink interfaceファームウェアのビルドと書き込み
ブートローダに続いて、DAPLink interfaceファームウェアを書き込みます。
以下のプロジェクトファイルをダブルクリックして開きます(今回は、Nucleo L476RGを使用しましたが、他にも対応しているターゲットがあります)。
DAPLink\projectfiles\uvision\stm32f103xb_stm32l476rg_if
開いたときにエラーが出るので、Migrate to Device Pack を選択します(必要に応じて、Device Packのインストールが始まります)。
プロジェクトが開いたら、Build ボタンを押してビルドを行います。エラーなどは特に出ないはずです。
Build started: Project: stm32f103xb_stm32l476rg_if
*** Using Compiler 'V5.06 update 6 (build 750)', folder: 'C:\Keil_v5\ARM\ARMCC\Bin'
Build target 'stm32f103xb_stm32l476rg_if'
Before Build - User command #1: ..\..\..\tools\pre_build_script.bat
C:\work\DAPLink\projectfiles\uvision\stm32f103xb_stm32l476rg_if>python ..\..\..\tools\pre_build_script.py
#> Pre-build script start
#> Getting git SHA
#> Checking for local changes
#> Keeping git version file since it didn't need to change
#> Pre-build script completed written ..\..\..\source\daplink\version_git.h
compiling stm32l476rg.c...
(中略)
compiling usbd_STM32F103.c...
linking...
Program Size: Code=45682 RO-data=5026 RW-data=748 ZI-data=11464
After Build - User command #1: ..\..\..\tools\post_build_script.bat C:\work\DAPLink\projectfiles\uvision\stm32f103xb_stm32l476rg_if\build\stm32f103xb_stm32l476rg_if C:\Keil_v5\ARM
C:\work\DAPLink\projectfiles\uvision\stm32f103xb_stm32l476rg_if>fromelf --bin C:\work\DAPLink\projectfiles\uvision\stm32f103xb_stm32l476rg_if\build\stm32f103xb_stm32l476rg_if.axf -o C:\work\DAPLink\projectfiles\uvision\stm32f103xb_stm32l476rg_if\build\stm32f103xb_stm32l476rg_if.bin
C:\work\DAPLink\projectfiles\uvision\stm32f103xb_stm32l476rg_if>fromelf --i32 C:\work\DAPLink\projectfiles\uvision\stm32f103xb_stm32l476rg_if\build\stm32f103xb_stm32l476rg_if.axf -o C:\work\DAPLink\projectfiles\uvision\stm32f103xb_stm32l476rg_if\build\stm32f103xb_stm32l476rg_if.hex
C:\work\DAPLink\projectfiles\uvision\stm32f103xb_stm32l476rg_if>python ..\..\..\tools\post_compute_crc.py C:\work\DAPLink\projectfiles\uvision\stm32f103xb_stm32l476rg_if\build\stm32f103xb_stm32l476rg_if.hex C:\work\DAPLink\projectfiles\uvision\stm32f103xb_stm32l476rg_if\build\stm32f103xb_stm32l476rg_if_crc
Start 0x800c000, Length 0x13c00, CRC32 0x4aa8eb79
".\build\stm32f103xb_stm32l476rg_if.axf" - 0 Error(s), 0 Warning(s).
Build Time Elapsed: 00:00:25
ビルドが完了したので、STM32F103CBのフラッシュメモリに書き込みます。
メニューから [Project] - [Options for target 'stm32f103xb_stm32l476rg_if'...] を選択します。
Debugタブから接続するデバッグアダプター(ULINK-ME)を指定します。Settingsボタンを押して、有効なデバイスが接続されているか確認します。
メニュー [Flash] - [Download] を押して、インタフェースファームウェアを書き込みます(ここでは、Eraseは選択しないでください)。
書き込み後、ULINK-MEをNucleoボードから取り外し、ショートピン2本を元の位置に戻します。NucleoのUSBケーブルを一度ホストPCから取り外し、再度接続するとDAPLinkとして認識されます。
PS C:\work\daplink> mbed detect
[mbed] Auto-installing missing Python modules...
[mbed] Detected NUCLEO_L476RG, port COM17, mounted D:, interface version 0253:
[mbed] Supported toolchains for NUCLEO_L476RG
| Target | mbed OS 2 | mbed OS 5 | uARM | IAR | ARM | GCC_ARM |
|---------------|-----------|-----------|-----------|-----------|-----------|-----------|
| NUCLEO_L476RG | Supported | Supported | Supported | Supported | Supported | Supported |
Supported targets: 1
Supported toolchains: 4
PS C:\work\daplink> mbedls
| platform_name | platform_name_unique | mount_point | serial_port | target_id | daplink_version |
|---------------|----------------------|-------------|-------------|--------------------------------------------------|-----------------|
| NUCLEO_L476RG | NUCLEO_L476RG[0] | D: | COM17 | 07650000066fff545253675187134109a5a5a5a597969908 | 0253 |
PS C:\work\daplink>
以上です。
Author And Source
この問題について(ST NucleoボードのST-LinkチップにDAPLinkファームウェアを書き込んでみた), 我々は、より多くの情報をここで見つけました https://qiita.com/toyowata/items/6fcae355cd2e257aac95著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .