• 【我是学生,可以送我么】搭建树莓派4bJTAG调试平台jlink平替版


    在这里插入图片描述

    前言

    最近在学习ARM64体系结构的相关知识,主要是根据笨叔的《ARM64体系结构编程与实践》,最先需要进行的就是搭建基础的环境,这种底层的体系结构学习一定要有配套的开发板,刚好手头有一个树莓派4b可以作为很好的学习平台,但是根据已有的资料来看,大部分的仿真平台都使用的是jlink,这个仿真器可以去淘宝看一下,价格基本上都在100+,作为学生,我买不起,所以研究了一下平替方案。特此记录一下。当然我是使用的win+wsl进行的调试,如果使用纯Linux环境需要一些调整,但是也不会太大。



    平替方案

    树莓派4b采用的是jtag作为调试端口的,那么按照arm官网所说,只要是带有jtag端口的都可以对其进行调试,一番搜索下来发现了一个国人开源方案就是nanodap开源地址(需要科学上网)。
    在这里插入图片描述
    经过研究开源地址发现,它采用了最简单的stm32f103c8t6作为主控,所以价格相对不高,并且是基于arm开源项目cmsis-dap,所以不是像jlink ob那样提示盗版,最关键的是大多数ob版jlink不会引出jtag调试口,并且这个自带串口,连一个ch340的钱也省了。反正蛮好用的。但是因为大多数资料基于jlink,需要做一些修改。


    环境搭建

    1. 硬件连接

    nandap树莓派
    TMS13
    TCK22
    TDI37
    TDO18
    nRST15
    TX10
    RX08
    GNDGND

    注意上面的TX和RX是有交叉的,另外就是GND连接到任意的GND上

    在这里插入图片描述

    2.软件下载

    这次模拟主要用到的是openocd,可以从这里下载github,注意对应系统,我是win里面运行这个所以直接下载了win版本。
    在这里插入图片描述
    然后将其解压到任意目录,然后win需要将解压文件的bin文件加入到环境变量,也就是
    在这里插入图片描述
    当然我看了一下linux的,相对来说没有那么麻烦,只要进入解压好的位置,输入下面的指令就好了

    sudo ln -s ./bin/openocd /usr/local/bin/openocd
    
    • 1

    无论win还是linux里,在终端里输入openocd有以下反应证明安装成功。
    在这里插入图片描述


    配置修改

    daplink配置修改

    我们使用的默认的配置文件为./interface/cmsis-dap.cfg,直接打开可以看到如下的代码

    adapter driver cmsis-dap
    
    • 1

    这只是帮助我们连接了dap,没有进行配置,比如选择jtag口之类的。所以我们添加两行:

    # 选择jtag作为调试口
    transport select jtag	
    # 绑定到任意ip,可以支持远程连接
    bindto 0.0.0.0			
    
    • 1
    • 2
    • 3
    • 4

    树莓派配置修改

    其实最新版的openocd带有bcm2711的配置文件,为了和书上一样,我们只用改一个小部分就行了

    #for { set _core 0 } { $_core < $_cores } { incr _core } { 注释掉原来的
    for { set _core 0 } { $_core < 1 } { incr _core } { #改成只对cpu0调试
    
    • 1
    • 2

    其实这个地方就是只调试0号cpu,毕竟启动的时候只有0号cpu在运行。


    开始调试

    进入调试模式

    只要在终端里进入openocd文件夹输入以下指令就好了

    openocd -f ./interface/cmsis-dap.cfg -f ./target/bcm2711.cfg
    
    • 1

    然后看到下图就算是成功进入调试模式可以进行其他操作了:
    在这里插入图片描述

    wsl连接

    因为wsl2默认不支持串口,如果将usb设备映射过去过于麻烦,所以我直接用win运行openocd,wsl那边通过网络直接进行连接就好了。关于wsl网络不通的原因可以看我这篇文章
    然后就gdb连接和telnet链接的时候输入win的ip就好了。


    后记

    最近开始学习ARM64相关的知识,如果遇到和书上不一样的地方会在这个专辑里面进行记录,大家如果也在学习相关方面的知识可以跟我一起交流哦。

  • 相关阅读:
    Python学习记录 模块
    rk平台调试:failed to find backlight: -517
    单片机嵌入式物联网教程
    树之二叉排序树(二叉搜索树)
    677. 键值映射-字符树算法应用
    面对外部攻击威胁,怎样确保API安全
    为什么Redis使用单线程 性能会优于多线程?
    Android: HttpURLConnection获取JSON数据
    五、XML&Tomcat&Http协议
    Java小技能:利用反射获取整个项目的枚举字典
  • 原文地址:https://blog.csdn.net/qq_17593855/article/details/126452607