TaterLi's LazyBlog

自言自语,不喜绕路,科学上网,远离天国.

@TaterLi3周前

04/10
16:38
技术控

树莓派作为MCU的调试器(无线远程调试)

首先有一个树莓派,然后烧写一个系统,已经在2017-03-03和52Pi的64位系统上测试通过.性能差不多,估计受限于MCU端.下面截图来自2017-03-03镜像.(这次实现的功能呢得益于一些系统和openocd的更新,不要使用旧镜像)

远程调试有两种方法,第一个是远程的通过JLink等工具,第二种是树莓派GPIO做一个JTAG调试.

首先刷新一下软件列表:

安装一些必要软件.

sudo apt-get install git autoconf libtool make pkg-config libusb-1.0-0 libusb-1.0-0-dev

然后到这里是源码镜像,把代码clone下来.

git clone https://github.com/ntfreak/openocd

然后cd进去后执行bootstrap.途中还会下载东西,这时候你可以去做点不可描述.

配置让他支持GPIO调试,具体为什么可以实现,因为有驱动(相关代码src/jtag/drivers/bcm2835gpio.c)

./configure --enable-sysfsgpio --enable-bcm2835gpio

执行后如图.(失败情况可能是你系统太老,环境不全,没有update都查一下.)

然后执行make,sudo make install两步曲.当然编译画的时间比较多,刚开始特别快都来不及截图,到后面就大概卡这个位置,然后慢慢下去.

具体JTAG技术细节可以参考我之前文章.JTAG实现 我们关心PI3/PI2应该接在什么地方(文件统一是PI2)

可见SWCLK = 25 SWDIO = 24,RST = 18这里指的是BCM号.少部分MCU RST可不接,一般都要接.

然后我用GPIO连接了一下F4.并在任意位置执行了.

  sudo openocd -f interface/raspberrypi2-native.cfg -c "transport select swd; set WORKAREASIZE 0; adapter_nsrst_delay 100; adapter_nsrst_assert_width 100; source [find target/stm32f4x.cfg]" -c "init"

远程机器telnet 4444端口连接上去.

现在是2002kHz频率.

支持4061kHz频率.(然而知道JTAG原理这都是浮云.)

然后dump一下镜像.(这个dump在Pi上的.)

还可以重新烧写回去.不过速度就堪忧了.

通过JLink什么方法其实也大同小异.

树莓派作为MCU的调试器(无线远程调试)