JLink 软件包提供 JLinkRemoteServer,通过监听 19020 端口,为其他调试客户端提供网络远程调试功能,同时官方提供 tunnel 服务,实现跨局域网调试。如果自己有外网服务器,也可以非常简单地通过 FRP 自建 JLink 中转服务。
JLink Docker 镜像
根据运行 Jlink的环境不同,从官方网站下载对应 deb 安装包,譬如 JLink_Linux_V698e_arm64.deb, JLink_Linux_V698e_x86_64.deb,然后在同一目录编写 Dockerfile :
FROM debian:bookworm-slim
COPY JLink_Linux_V698e_x86_64.deb /tmp
RUN dpkg -i /tmp/JLink_Linux_V698e_x86_64.deb \
&& rm /tmp/JLink_Linux_V698e_x86_64.deb
EXPOSE 19020
CMD ["/usr/bin/JLinkRemoteServer"]
打包 Docker 镜像 ,建议直接在连接 JLink 的机器上打包。
docker build -t jlink .
FRP 服务器配置
外网 Linux 服务器创建文件 frp/frps.toml
bindAddr = "0.0.0.0"
bindPort = 7000
tls.force = false
auth.method = "token"
auth.token = "N8pUECXOSrXXxS54dRUkXo4KEfjzyluFZzHLwCzq8wU33eM5UdJKwlVD75C6rm78"
然后 Docker 运行
docker run --network host -d -v ./frp:/etc/frp --restart=always snowdreamtech/frps:0.52.3
远程 JLink Linux 机器配置
远程 JLink 通常运行在一些小型的 Linux 主机上,USB 外接 JLink 设备。创建 compose.yaml
services:
jlink:
image: jlink:latest
ports:
- "19020:19020"
privileged: true
devices:
- /dev/bus/usb:/dev/bus/usb
frpc:
image: snowdreamtech/frpc:0.52.3
volumes:
- ./frp:/etc/frp
创建 frp/frpc.toml
serverAddr = "x.x.x.x"
serverPort = 7000
loginFailExit = true
auth.method = "token"
auth.token = "N8pUECXOSrXXxS54dRUkXo4KEfjzyluFZzHLwCzq8wU33eM5UdJKwlVD75C6rm78"
transport.tls.enable = false
[[proxies]]
name = "jlink"
type = "tcp"
localIP = "jlink"
localPort = 19020
remotePort = 19020
然后使用docker compose运行
docker compose up
远程调试
本地 JLinkExe 通过 FRP 服务器连接远程 JLink 进行调试:
JLinkExe -if SWD -device EFR32MG21AXXXF768 -speed 1000 -autoconnect 1 -ip x.x.x.x:19020