【RISC-V 全志-V821 PERF2B开发板评测试用试用体验】VS Code 开发
# 【RISC-V 全志-V821 PERF2B开发板评测试用试用体验】VS Code 开发本文介绍了 RISC-V 全志-V821 PERF2B 开发板 WiFi 配置、VS Code 开发调试、GDB 配置、调试过程等流程。
## VS Code 开发调试
Visual Studio Code (VSCode) 是一款轻量级、功能强大的开源代码编辑器,支持多种编程语言、插件扩展,并提供智能代码补全、调试、版本控制等开发功能,VSCode 提供强大的 C++ 调试功能,支持断点、变量监视、调用栈查看和步进调试。
## 网络配置
开发板连接网络
开发板连接上串口,输入命令搜索网络
```bash
wifi -s
```
搜索到网络之后,使用命令连接网络
```bash
wifi -c <SSID> <PASSWORD>
```
连接完成后,使用 `ifconfig` 命令查看 IP 地址
!(//m.qjumbo.com/forum/data/attachment/forum/202508/20/124207jqacnkn58cbd5cz5.jpg)
### 配置开发环境
安装完成 VSCode 后,打开 SDK 目录创建开发环境。
> 这里使用远程 SSH 环境。
通过 PC 运行 VSCode,VS Code 通过 SSH 连接编译服务器;
远程编译服务器上的开发环境,编译服务器控制 GDB;
GDB 通过 SSH Tunnel 和 ADB Forward 与开发板上的 GDB Server 通讯。
!(//m.qjumbo.com/forum/data/attachment/forum/202508/20/124222wvhdb5vm05vzhewg.jpg)
打开工作区,可看到 SDK 界面
!(//m.qjumbo.com/forum/data/attachment/forum/202508/20/124234suxn3n2tetsnxlln.jpg)
点击扩展,在 Server 安装 `C/C++` 扩展:https://marketplace.visualstudio.com/items?itemName=ms-vscode.cpptools
!(//m.qjumbo.com/forum/data/attachment/forum/202508/20/124246zn6nw4aza1dwadhh.jpg)
### 编写 launch.json
点击调试,选择创建 `launch.json` 文件
!(//m.qjumbo.com/forum/data/attachment/forum/202508/20/124300ne227w215ekaa5da.jpg)
选择调试器
!(//m.qjumbo.com/forum/data/attachment/forum/202508/20/124313i06dw4p5pyee64as.jpg)
写入以下内容,这里以调试 PERF2 开发板,sample_virvi 为例
```c
{
"version": "1.0.0",
"configurations": [
{
"name": "(gdb) Launch sample_virvi",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceFolder}/platform/allwinner/eyesee-mpp/middleware/sun300iw1/sample/sample_virvi/sample_virvi",
"args": [
"-path",
"/mnt/extsd/sample_virvi.conf"
],
"symbolLoadInfo": {
"loadAll": true,
"exceptionList": ""
},
"additionalSOLibSearchPath": "${workspaceFolder}/out/v821/perf2/openwrt/staging_dir/target/root-v821-perf2;${workspaceFolder}/out/v821/perf2/openwrt/staging_dir/target/root-v821-perf2/usr/lib",
"stopAtEntry": true,
"cwd": "${fileDirname}",
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"miDebuggerPath": "${workspaceFolder}/prebuilt/rootfsbuilt/riscv/nds32le-linux-musl-v5d/bin/riscv32-linux-musl-gdb",
"miDebuggerServerAddress": "localhost:2241",
"useExtendedRemote": true,
"postRemoteConnectCommands": [
{
"description": "Set remotetimeout for gdb",
"text": "set remotetimeout 20",
"ignoreFailures": true
},
{
"description": "Set remote exec-file for gdb",
"text": "set remote exec-file /mnt/extsd/sample_virvi",
"ignoreFailures": false
},
{
"description": "Set sysroot for gdb",
"text": "set sysroot ${workspaceFolder}/out/v821/perf2/openwrt/staging_dir/target/root-v821-perf2",
"ignoreFailures": false
},
{
"description": "Set solib-search-path for gdb",
"text": "set solib-search-path ${workspaceFolder}/out/v821/perf2/openwrt/staging_dir/target/root-v821-perf2/usr/lib",
"ignoreFailures": false
}
],
"setupCommands": [
{
"description": "Enable pretty-printing for GDB",
"text": "-enable-pretty-printing",
"ignoreFailures": true
},
{
"description": "Set disassembly-flavor to Intel",
"text": "-gdb-set disassembly-flavor intel",
"ignoreFailures": true
}
]
}
]
}
```
效果
!(//m.qjumbo.com/forum/data/attachment/forum/202508/20/124327lpbfqh7eqmxqjd6h.jpg)
### Sample 配置调试信息
前往 `openwrt/package/allwinner/eyesee-mpp/middleware/Makefile` ,在FLASG中增加调试信息。如果之前编译过SDK,需要 `cleanmpp && mkmpp` 重新编译MPP才会带有调试信息。
```text
CFLAGS="-I -fstack-protector $(TARGET_CFLAGS) -g" \
CXXFLAGS="-I -fstack-protector $(TARGET_CXXFLAGS) -g" \
CPPFLAGS="-I -fstack-protector $(TARGET_CPPFLAGS) -g" \
```
效果
!(//m.qjumbo.com/forum/data/attachment/forum/202508/20/124341w78lbp987b6y4y9***)
配置完成后,使用命令重新编译 mpp
```text
cleanmpp && mkmpp
```
## 配置GDB
在开发过程中,经常需要使用 GDB 进行调试,但是由于嵌入式平台可用内存与核心较少,无法把整个 GDB 都在板端搭建起来。这里就需要使用 GDB Server 在板端建立调试服务,之后使用远程连接方法连接调试。
**使用远程 GDB 辅助调试**
前往 `openwrt/package/allwinner/eyesee-mpp/middleware/Makefile` ,在FLASG中增加调试信息。如果之前编译过SDK,需要 `cleanmpp && mkmpp` 重新编译MPP才会带有调试信息。
```bash
CFLAGS="-I -fstack-protector $(TARGET_CFLAGS) -g" \
CXXFLAGS="-I -fstack-protector $(TARGET_CXXFLAGS) -g" \
CPPFLAGS="-I -fstack-protector $(TARGET_CPPFLAGS) -g" \
```
配置完成,使用命令重新编译 mpp
```bash
cleanmpp && mkmpp
```
**配置 GDB Server**
进入 `menuconfig` 勾选 `gdbserver`
```bash
Development--->
<*> gdbserver................................. Remote server for GNU Debugger
```
**配置 GDB Server**
在板端使用命令 `gdbserver` 启用 GDB Server,配置端口为 2241,之后通过 ADB 转发,SSH Tunnel 将 2241 端口转发到 GDB 实际调试程序端口。
!(//m.qjumbo.com/forum/data/attachment/forum/202508/20/124405f6i1pkb66zbaa2k2.jpg)
```bash
gdbserver --multi 0:2241 &
```
**启动 GDB**
使用命令运行 GDB 程序
```bash
./riscv32-linux-musl-gdb
```
连接开发板的 GDB Server
```bash
(gdb) target extended-remote :2241
```
如果出现 `Remote connection closed `请检查目标开发板上的 `gdbserver` 是否工作正常,各级端口转发是否正确。
### 准备调试
- 将需要调试的可执行文件推送到开发板
这里同样推送到 `/mnt/extsd` 文件夹内,
```text
adb push sample_virvi /mnt/extsd
adb push sample_virvi.conf /mnt/extsd
```
- 修改 launch.json 的配置
针对调试不同的程序,需要不同的配置,需要修改的点如下图高亮部分所示,请修改为对应的板级,对应的可执行文件。
!(//m.qjumbo.com/forum/data/attachment/forum/202508/20/124422quzmmdqqubhul5au.jpg)
## 开始调试
找到需要调试的程序源码,点击添加断点
!(//m.qjumbo.com/forum/data/attachment/forum/202508/20/124435ctmmmuxnspnfcoyw.jpg)
切换到调试窗口,点击开始调试
!(//m.qjumbo.com/forum/data/attachment/forum/202508/20/124451m53heqqq3k8hac58.jpg)
便可开始调试,在断点处停下
!(//m.qjumbo.com/forum/data/attachment/forum/202508/20/124504wb12lx9bclr829kj.jpg)
可以看到调用堆栈,线程,监视,变量,寄存器等多种参数
!(//m.qjumbo.com/forum/data/attachment/forum/202508/20/124515wrgtjzq8jzvqzze7.jpg)
## 总结
本文介绍了 RISC-V 全志-V821 PERF2B 开发板 WiFi 配置、VS Code 开发调试、GDB 配置、调试过程等流程,为全志 V821 系列产品的开发设计和快速应用提供了参考。
页:
[1]