Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
risc-v_RISCV
vscode
【开发环境】通过VSCode远程调试RISC-V(基于平头哥C906)
20.00
发布于 2022-09-17 21:03:33 浏览:3340
订阅该版
[tocm] ## 前言 最近从一个老司机那里搞来一块[Lichee D1 Dock Pro](https://occ.t-head.cn/vendor/detail/index?id=4030046623349878784)开发板,由于其板载 jtag 功能,加上现在深圳动不动就封个几天,因此,想尝试一下远程对RISC-V CPU Debug 的可行性。 废话不多说,直接上干货! ## DebugServer安装 ```shell curl -s https://occ-oss-prod.oss-cn-hangzhou.aliyuncs.com/resource//1657868508115/T-Head-DebugServer-linux-x86_64-V5.16.2-20220708.sh.tar.gz | tar xzf - sudo chmod 777 ./T-Head-DebugServer-linux-x86_64-V5.16.2-20220708.sh -R sudo ./T-Head-DebugServer-linux-x86_64-V5.16.2-20220708.sh -i DebugServerConsole -setclk 8 -port 1025 ``` 如果出现以下日志,则说明已经安装成功了 ```shell +--- ---+ | T-Head Debugger Server (Build: Jul 8 2022) | User Layer Version : 5.16.02 Target Layer version : 2.0 | Copyright (C) 2022 T-HEAD Semiconductor Co.,Ltd. | +--- ---+ T-HEAD: CKLink_Lite_V2, App_ver unknown, Bit_ver null, Clock 2526.316KHz, 5-wire, With DDC, Cache Flush On, SN CKLink_Lite_Vendor-rog 199C8A. +-- Debug Arch is CKHAD. --+ +-- CPU 0 --+ T-HEAD Xuan Tie CPU Info: WORD[0]: 0x0910090d WORD[1]: 0x11002000 WORD[2]: 0x260c0001 WORD[3]: 0x30030066 WORD[4]: 0x42180000 WORD[5]: 0x50000000 WORD[6]: 0x60000853 MISA : 0x8000000000b4112d Target Chip Info: CPU Type is C906FDV, Endian=Little, Vlen=128, Version is R1S0P2. DCache size is 32K, 4-Way Set Associative, Line Size is 64Bytes, with no ECC. ICache size is 32K, 2-Way Set Associative, Line Size is 64Bytes, with no ECC. Target is 1 core. MMU has 256 JTLB items. PMP zone num is 8. HWBKPT number is 2, HWWP number is 2. MISA: (RV64IMAFDCVX, Imp M-mode, S-mode, U-mode) GDB connection command for CPUs(CPU0): target remote 127.0.0.1:1025 target remote 192.168.64.128:1025 target remote 172.17.0.1:1025 **************** DebuggerServer Commands List ************** help/h Show help informations. ************************************************************* ``` 如果出现以下日志,插拔几次,复位板子多试试。 ```shell +--- ---+ | T-Head Debugger Server (Build: Jul 8 2022) | User Layer Version : 5.16.02 Target Layer version : 2.0 | Copyright (C) 2022 T-HEAD Semiconductor Co.,Ltd. | +--- ---+ ERROR: Fail to write to CKLINK. ERROR: Fail to write to CKLINK. ERROR: Fail to write to CKLINK. ``` ## 工具链安装 我这里直接用柿饼 M7 的开发环境,柿饼 M7 的开发环境可以参考[Persim-M7 Ubuntu环境搭建(Docker)](https://club.rt-thread.org/ask/article/a3ab09a63aaf5f23.html): 执行以下命令,看看 gdb 是否能够正常运行 ```shell /opt/Xuantie-900-gcc-elf-newlib-x86_64-V2.2.6/bin/riscv64-unknown-elf-gdb -v ``` 我的环境是 ubuntu 20.04,他报了依赖错误,其他平台需要自己解决错误: ```shell /opt/Xuantie-900-gcc-elf-newlib-x86_64-V2.2.6/bin/riscv64-unknown-elf-gdb: error while loading shared libraries: libncursesw.so.5: cannot open shared object file: No such file or directory ``` 创建个链接就解决了 ```shell sudo ln -s /lib/x86_64-linux-gnu/libncursesw.so.6 /lib/x86_64-linux-gnu/libncursesw.so.5 ``` ## VSCode远程开发 通过VSCode远程到ubuntu中,这里可以参考[Window SSH 远程开发环境搭建](https://club.rt-thread.org/ask/article/9ac1c18956fefb4c.html),将模式设为 debug 模式 ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20220917/db20724f044b89ab422eb1684cdf2907.png.webp) 按下快捷键【 **Ctrl+Shift+`** 】新建一个终端,执行命令【 **get_persim_m7** 】获取 m7 的开发环境变量 ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20220917/dae8080934f1652c276ca44d24951ad0.png) 随后执行【 `scons --target=vsc` 】,创建 VSCode 配置文件 ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20220917/487cd1abd18595893a52c67ccb8e9712.png.webp) 创建 launch.json 文件 ```json { "version": "0.2.0", "configurations": [ { "name": "riscv-debug", "type": "cppdbg", "request": "launch", "miDebuggerPath": "/opt/Xuantie-900-gcc-elf-newlib-x86_64-V2.2.6/bin/riscv64-unknown-elf-gdb", "program": "${workspaceRoot}/rtthread.elf", "setupCommands": [ { "description": "为 gdb 启用整齐打印", "text": "-enable-pretty-printing", "ignoreFailures": true }, { "text": "target remote localhost:1025" }, { "text": "restore ${workspaceFolder}/rtthread.elf" }, { "text": "set $pc=0x41000000" }, ], "launchCompleteCommand": "None", "cwd": "${workspaceFolder}" } ] } ``` 其中启动方式为附着方式,即芯片原有程序依然在 Flash 运行,并开启了 JTAG 与 初始化了 DDR,加载 elf 文件后手动调整 PC 指针至 0x41000000 启动 ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20220917/0655755aff36e782d0695337dbe78db6.png.webp) ## 开始调试 在终端中执行命令【 DebugServerConsole -setclk 8 -port 1025 】启动 DebugServer ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20220917/6f9d8090c0468faee16e10981a8e76a7.png.webp) 点击随便下几个断点,并进入调试模式观察 ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20220917/5f38337a61478c2e4edcc4ffb981c840.png.webp) 可以看到,已经可以正常调试了(全部都是远程哦) ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20220917/d2e9cb042e632fdf905fd55641da6f0f.png.webp) ## 裸机调试 裸机开发需要开启 jtag,并初始化 ddr, 我们可以借助 xfel 工具执行以下命令 ```shell xfel version xfel jtag xfel ddr ``` 此后再进行调试即可。
4
条评论
默认排序
按发布时间排序
登录
注册新账号
关于作者
小权一句两句
似此星辰非昨夜,为谁风露立中宵
文章
5
回答
11
被采纳
2
关注TA
发私信
相关文章
1
studio能否支持risc-v的工程,包括调试。
2
移植rt-nano至risc-v时,无法在main函数创建用户线程
3
risc-v移植rtthread,程序莫名跳转到异常Exception
4
GD32VF103出现to free a bad data block:错误
5
rtt os riscv Store address misaligned异常
6
仅实现机器模式的芯片是否可以移植RT-THREAD系统
7
nano版本移植finsh(基于risc-v)
8
C++在多核下cout打印引起崩溃
9
RT-SMART求助
10
RT-Thread在RISC-V架构的芯片上有成熟的市场项目吗?
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
USB
DMA
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
FAL
rt-smart
ESP8266
I2C_IIC
UART
WIZnet_W5500
ota在线升级
freemodbus
PWM
flash
cubemx
packages_软件包
BSP
潘多拉开发板_Pandora
定时器
ADC
GD32
flashDB
socket
中断
编译报错
Debug
rt_mq_消息队列_msg_queue
SFUD
msh
keil_MDK
ulog
C++_cpp
MicroPython
本月问答贡献
踩姑娘的小蘑菇
4
个答案
1
次被采纳
红枫
4
个答案
1
次被采纳
张世争
4
个答案
1
次被采纳
Ryan_CW
4
个答案
1
次被采纳
xiaorui
1
个答案
1
次被采纳
本月文章贡献
catcatbing
3
篇文章
5
次点赞
qq1078249029
2
篇文章
2
次点赞
xnosky
2
篇文章
1
次点赞
Woshizhapuren
1
篇文章
5
次点赞
YZRD
1
篇文章
2
次点赞
回到
顶部
发布
问题
投诉
建议
回到
底部