在wsl2 ubunut上使用j-link调试openvela操作系统

openvela是小米共公司基于Apache NuttX构建的开源AIot操作系统 ,这个被称为 “Tiny Linux” 的系统为 openvela 提供了高标准的 POSIX 兼容性。

开源地址:openvela: openvela 操作系统专为 AIoT 领域量身定制,以轻量化、标准兼容、安全性和高度可扩展性为核心特点。https://gitee.com/open-vela在线调试步骤;

1、在win11上安装j-link驱动

        这个不多废话,直接选择到SEGGER的官网去下载这个驱动,下载完成安装时注意选择安装驱动,安装完成,把j-link插入电脑,能正常识别到设备,就是安装成功了。下载地址: SEGGER - The Embedded Experts - Downloads - J-Link / J-Tracehttps://www.segger.com/downloads/jlink/

2、从win11共享j-link到wsl2:Ubuntu中去

这里直接参考微软官方的文章,里面介绍很详细,地址:连接 USB 设备 | Microsoft Learnhttps://learn.microsoft.com/zh-cn/windows/wsl/connect-usb

3、在ubuntu上安装j-link软件

上述步骤完成后,就需要安装j-flash软件到ubuntu上了,直接在SEGGER官网下载.deb的安装文件。安装命令 sudo dpkg -i JLink_Linux_V824_x86_64.deb

上述步骤操作成功过后,就可以在ubuntu里看到jlink设备了。

4、配置vscode,实现直接在vscode上使用按钮操作编译、烧录固件

编写j-link固件下载的脚本jflash.sh

#!/bin/bash
# 使用j-link下载代码的脚本
JlinkScript="./flash.jlink"
ROOTDIR=$(pwd)

if [ -f $JlinkScript ]; then
    rm $JlinkScript
fi
touch $JlinkScript
echo h > $JlinkScript
echo loadfile ${ROOTDIR}/nuttx/nuttx.elf >> $JlinkScript
echo r >> $JlinkScript
echo g >> $JlinkScript
echo exit >> $JlinkScript

JLinkExe -device GD32F470II -autoconnect 1 -if SWD -speed 12000 -CommanderScript $JlinkScript

echo loadfile ${ROOTDIR}/nuttx/nuttx.elf >> $JlinkScript:命令是下载固件的,需要按照实际的情况修改。

JLinkExe -device GD32F470II -autoconnect 1 -if SWD -speed 12000 -CommanderScript $JlinkScript:这句是最终调用j-link的命令,芯片型号,下载速度按照实际情况下载。

在/.vscode文件夹路径下创建tasks.json文件

{
    "version": "2.0.0",
    "tasks": [
        {
            "label": "Build",
            "type": "shell",
            "command": "./build.sh vendor/sinway/boards/gd32f470ii/sadsc_ha5_v1/configs/nsh -j8",
            "problemMatcher": [],
            "group": {
                "kind": "build",
                "isDefault": true
            }
        },
        {
            "label": "Download",
            "type": "shell",
            "command": "./flash.sh",
            "problemMatcher": [],
            "group": {
                "isDefault": false
            }
        }
    ]
}

在这个文件里创建了两个任务,分别是Build和Download,Build任务是用于代码编译,执行的命令为:./build.sh vendor/sinway/boards/gd32f470ii/sadsc_ha5_v1/configs/nsh -j8;Download用于烧录,执行的命令为:./flash.sh。

任务创建完成后,点击vscode的终端菜单,运行生成任务对应的为Build任务,点击运行任务,在弹出的选择框里选择Download实现固件烧录

5、配置cortex-debug

安装GDB调试器

在openvela的SDK里面,包含了编译工具链,但是没有GDB调试器,所以只能自己去下载gdb,下载地址:https://armkeil.blob.core.windows.net/developer/Files/downloads/gnu/13.2.rel1/binrel/arm-gnu-toolchain-13.2.rel1-x86_64-arm-none-eabi.tar.xz

这里有点需要注意,13.2这个版本的gdb需要python的支持,具体查看各个版本的Release Note

安装插件Cortex-Debug

在 VSCode 扩展窗口搜索安装 Cortex-Debug插件

这里注意,需要安装在ubuntu的vscode上面

配置Cortex-Debug

配置调试工具路径

"cortex-debug.JLinkGDBServerPath": "/opt/SEGGER/JLink/JLinkGDBServer",
"cortex-debug.armToolchainPath": "/home/xxxxxx/vela-opensource/prebuilts/gcc/linux/arm/bin",

 cortex-debug.JLinkGDBServerPath配置的是JLinkGDBServer的路径,这个根据安装的路劲实际修改

cortex-debug.armToolchainPath配置的是arm-none-eabi-gdb的文件夹路径

在 Run and Debug 窗口点击 create a launch.json file ,弹出窗口选择 Cortex Debug 。将创建一个默认的配置文件。

修改默认配置

按照实际使用的芯片配置文件及代码的路径

{
    "version": "0.2.0",
    "configurations": [
        {
            "type": "cortex-debug",
            "request": "launch",
            "name": "Debug (J-Link)",
            "cwd": "${workspaceRoot}",
            "executable": "${workspaceFolder}/nuttx/nuttx.elf",
            "servertype": "jlink",
            "device": "GD32F470II",
            "interface": "swd",
            "preLaunchTask": "Download",
  "svdFile":"${workspaceFolder}/vendor/sinway/boards/gd32f470ii/sadsc_ha5_v1/GD32F4xx.svd",
            "rtos": "NuttX",
            "breakAfterReset": true,
            "showDevDebugOutput": "raw"
        }
    ]
}

启动调试

完成配置后, Run and Debug 窗口将显示调试配置名称,点击绿色三角形 StartDebugging 按钮启动调试,如图所示:

愉快调试

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值