目次

J-Link

19pinから5Vの供給が可能.最大300mA
stm32F301でJ-Link RTT の動作確認

CLIから書き込み

JLink.exe(JLInkExe)には予めパスを通しておく.

基本的にid君のブログの記事にあるようにスクリプトファイル作ってそれを実行すれば良い.
といってもJ-Linkに引数渡せばよい,各種コマンドはSEGGERのWikiもしくはマニュアルに書いてある.
J-Link Commander
FAQ・テクニカルガイド J-Link Commander」ツール

RTT

Real Time Transfer

WSL上のVSCodeからWindowsのJ-Linkに接続、デバッグ

id君のブログを参考にした、この頃からJ-Linkのバージョンが上がった結果なのか、少し異なる方法で実現した。
WSL上のgdbからJ-Linkに接続する

J-Linkをインストールする

WSL2上のUbuntu(以下WSLと表記)にJ-Linkの環境一式をインストールする。.debパッケージをDLして

sudo apt install ./JLink_Linux_V788l_x86_64.deb

と入力してJ-Linkのソフト一式をインストールする

WindowsのJ-Linkの環境一式をインストールする。

Windows側のRemoteServerを起動

J-LinkRemoteServerを起動する。
初回起動時はファイヤーウォールの警告が出ると思うのでプライベートネットワークは許可する。
起動すると以下のような画面になる。

WSL上のJ-LinkGDBServerの動作確認

(WSLでの操作)LinkGDBServerの接続テスト。ipはRemote Serverを指定する
WSL側からホスト(Windows)にUSB接続されたJ-Linkへアクセス

表示クリック ⇲

非表示クリック ⇱

$ JLinkGDBServer -select ip=192.168.3.5 -if swd -device PAC5527
SEGGER J-Link GDB Server V7.88l Command Line Version
 
JLinkARM.dll V7.88l (DLL compiled Jul 14 2023 09:05:57)
 
Command line: -select ip=192.168.3.5 -if swd -device PAC5527
-----GDB Server start settings-----
GDBInit file:                  none
GDB Server Listening port:     2331
SWO raw output listening port: 2332
Terminal I/O port:             2333
Accept remote connection:      yes
Generate logfile:              off
Verify download:               off
Init regs on start:            off
Silent mode:                   off
Single run mode:               off
Target connection timeout:     0 ms
------J-Link related settings------
J-Link Host interface:         IP
J-Link script:                 none
J-Link settings file:          none
------Target related settings------
Target device:                 PAC5527
Target device parameters:      none
Target interface:              SWD
Target interface speed:        4000kHz
Target endian:                 little
 
Connecting to J-Link...
J-Link is connected.
Firmware: J-Link EDU Mini V1 compiled Jun  6 2023 10:50:57
Hardware: V1.00
S/N: 801022060
Feature(s): FlashBP, GDB
Checking target voltage...
Target voltage: 3.30 V
Listening on TCP/IP port 2331
Connecting to target...
Halting core...
Connected to target
Waiting for GDB connection...

正常に接続できるとRemote Serverの画面が以下のようになる

gdbの動作確認

WSL上のarm-none-eabi-gdbを実行しようとしたらエラーが出た

arm-none-eabi-gdb: error while loading shared libraries: libncurses.so.5: cannot open shared object file: No such file or directory

どうやらWSLでのパッケージ不足のようなので追加でインストールする

sudo apt-get install libncurses5

arm-none-eabi-gdbが起動するようになる

$ arm-none-eabi-gdb
GNU gdb (GNU Arm Embedded Toolchain 10.3-2021.10) 10.2.90.20210621-git
Copyright (C) 2021 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Type "show copying" and "show warranty" for details.
This GDB was configured as "--host=x86_64-linux-gnu --target=arm-none-eabi".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<https://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
<http://www.gnu.org/software/gdb/documentation/>.
 
For help, type "help".
Type "apropos word" to search for commands related to "word".
(gdb)

VSCodeでデバッグの準備

WSL上のVSCodeにCortex-debugをインストールする launch.jsonにデバッグ設定を記述する

{
    "name": "WSL2_Debug(J-Link)",
    "cwd": "${workspaceRoot}",
    "executable": "./build/PAC5527_Hello.elf",
    "serverpath": "/usr/bin/JLinkGDBServer",
    "armToolchainPath": "/opt/gcc-arm-none-eabi-10.3-2021.10/bin",
    "ipAddress": "192.168.3.5",
    "request": "launch",
    "type": "cortex-debug",
    "servertype": "jlink",
    "device": "PAC5527",
    "interface": "swd",
    "showDevDebugOutput": "parsed",
    "runToEntryPoint": "main",
    "svdFile": "PAC55XX.svd"
}

armToolchainPath→WSL上のARM用GCCツールチェインのパス
serverpath→WSL上のGDBSeverのパス
ipAddress→RemoteServerのipアドレス
これでデバッグを開始すると、RemoteServerが接続され、ホストにUSB接続されたJ-Linkを経由してターゲットのデバッグができる。

参考文献

超便利 最強デバッガ J-Link
TrueStudioでJ-Link RTTを使う
J-Link RTTでTera Termに出力したときの備忘録
RTTテクノロジー Real Time Transferテクノロジーについて
Unbricking a SEGGER J-Link v9 debug probe WSL