惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Google DeepMind News
Google DeepMind News
H
Help Net Security
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
V
Vulnerabilities – Threatpost
MongoDB | Blog
MongoDB | Blog
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
A
Arctic Wolf
The GitHub Blog
The GitHub Blog
Security Latest
Security Latest
G
GRAHAM CLULEY
Cyberwarzone
Cyberwarzone
S
Schneier on Security
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
P
Privacy & Cybersecurity Law Blog
IT之家
IT之家
D
Darknet – Hacking Tools, Hacker News & Cyber Security
博客园 - 聂微东
T
Threat Research - Cisco Blogs
AWS News Blog
AWS News Blog
The Hacker News
The Hacker News
B
Blog RSS Feed
云风的 BLOG
云风的 BLOG
Scott Helme
Scott Helme
P
Proofpoint News Feed
T
The Exploit Database - CXSecurity.com
L
LangChain Blog
F
Full Disclosure
I
Intezer
V
V2EX
C
Cyber Attacks, Cyber Crime and Cyber Security
Cisco Talos Blog
Cisco Talos Blog
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Spread Privacy
Spread Privacy
美团技术团队
Engineering at Meta
Engineering at Meta
C
Cybersecurity and Infrastructure Security Agency CISA
罗磊的独立博客
T
Tenable Blog
D
DataBreaches.Net
M
MIT News - Artificial intelligence
S
Securelist
C
CERT Recently Published Vulnerability Notes
Recent Announcements
Recent Announcements
Microsoft Azure Blog
Microsoft Azure Blog
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
NISL@THU
NISL@THU
The Register - Security
The Register - Security
L
LINUX DO - 热门话题
P
Palo Alto Networks Blog

LinuxJedi's /dev/null

When an Amiga A570 Repair Took a Strange Turn When the Docs Fall Short: Investigating Claude Code’s Budget Cap AI Didn’t Destroy Your Company, Your Processes Did When PAL Goes Wrong: Repairing an Amiga CD32 Reviving a Roland SoundBrush: Floppy MIDI Playback Without the Computer A Socket 7 Upgrade: Moving Beyond the 486 Reviving an Amiga 600: From Dead Video to a Clean Boot The Amiga 1200 That Fought Back: The Faults I Missed the First Time Why Recapping Isn’t Always the Cure: And Amiga 1200 Repair Story
Ditching the Debug Probe: Using a Segger J-Link with a Raspberry Pi Pico
LinuxJedi · 2026-02-13 · via LinuxJedi's /dev/null

I was working on benchmarking some new code on a Raspberry Pi Pico today and needed to debug it. This proved to be more difficult than it should be, so I figured I would document how I did it.

The Problem

The Pi Pico has a readily available Debug Probe that uses a SWD connection to the Pico. I happen to have one that I bought years ago, unfortunately it was DoA when I bought it years ago, there is a dead buffer in it that I need to replace one day. I didn’t find this out until it was far too late to return it.

As an alternative, another Pi Pico can be used as a debugger, similar to the Debug Probe. Unfortunately, I didn’t have an RP2040 board with spare GPIO handy to do this. Time for an alternative method.

J-Link

A colleague pointed out that Segger J-Link supports the RP2040 MCU in the Pi Pico, so, I hooked it up. Segger has a page which outlines how to hook it up. I have a couple of genuine Segger J-Links, I grabbed my older v10 one first and wired everything up.

Once this was hooked up, I modified the standard OpenOCD command to connect via the J-Link, which turns it into:

openocd -f interface/jlink.cfg -f target/rp2040.cfg -c "adapter speed 5000"

I even tried different connection speeds, no joy. Time to try something else…

J-Link GUI

The J-Link has a bunch of GUI tools, one of which is to connect as a debugger, so I loaded this tool.

Once loaded I configured it for an RP2040 SWD connection.

When scrolling down, there is a button to connect, and…

Immediate connection! Excellent!

This is listening on port 2331 for a debug connection. So, we open a GDB connection by doing:

arm-none-eabi-gdb benchmark.elf

Note that you need to use the .elf here instead of the .uf2. Once loaded, you need to connect to the debugger. This is done by entering the following into gdb. This will make the GDB connection go green in the J-Link GUI:

target remote localhost:2331
monitor reset

You only need to do monitor reset if you want to restart the execution on RP2040. From here you can enter continue and the code execution will continue. You can’t use run like you would locally debugging.

Conclusion

Using this method, I was quickly able to debug the problem I was having (I made a dumb configuration error) and was able to continue. I think I’ll be using J-Link for RP2040 / RP2350 debugging from now on!