eefocus_4062187 发表于 2025-8-20 12:45:21

【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]
查看完整版本: 【RISC-V 全志-V821 PERF2B开发板评测试用试用体验】VS Code 开发

Baidu
map