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 按钮启动调试,如图所示:
愉快调试