RISC-V篇-VSCode远程开发环境配置

本文发布于微信公众号:Linux底层小工,欢迎关注,获取更多原创技术文章!

“大多数情况下,我都是在虚拟机中使用Ubuntu等Linux操作系统,而在虚拟机中安装VSCode看代码时总感觉没那么流畅,所以才有了使用VSCode的远程开发的需求,本文就是记录一下远程开发环境的配置步骤。当然,第一步必须要在宿主机上安装VSCode,本文假设已经安装好了VSCode。”

01 安装Remote Development插件

第一步就是要在VSCode中安装Remote Development插件,在插件中心搜索remote,点击安装Remote Development即可:

安装完成后,会出现远程开发的图标:

图片

02 设置Remote Development

点击远程开发的图标,并选择Remotes (Tunnels/SSH),如下图:

图片

之后点击SSH后面的设置按钮,并选择用户目录下的.ssh/config:

图片

在config文件中填入如下内容,每一项的含义后面有解释,改成你自己的即可

Host 192.168.2.129  HostName 192.168.2.129  User jl  IdentityFile "/Users/jianglei/.ssh/id_rsa"

如下图:

图片

解释:

其中的ip地址为虚拟机的ip地址,可以在虚拟中使用如下命令查看ip地址:

ifconfig

例如,我的虚拟机的ip如下:

图片

User就是虚拟机的用户名

IdentityFile用于免密验证的,不填这一项,每次连接都要输入密码,太麻烦了,这一项设置的是宿主机的ssh私钥文件id_rsa的路径,可以通过如下命令生成:

ssh-keygen

执行该命令,简单点,一路回车即可,如下图:

图片

图片

之后,将id_rsa文件中的内容,拷贝到虚拟机的~/.ssh/authorized_keys文件中:

图片

03 虚拟机中安装ssh server

在虚拟机中安装ssh server:

sudo apt install ssh

确保ssh服务运行:

service sshd status

图片

04 连接虚拟机进行远程开发

配置完成后,在VSCode的ssh下出现了添加的虚拟机,点击后面的箭头在当前窗口进行连接,如下图:

图片

连接过程中,会自动在虚拟机中安装vscode server,工作原理如下:

图片

由于我们配置了免密,所以等待一小会儿,就会显示连接成功,(中间可能会出现弹窗,选择continue即可)如下图:

图片

之后就可以在VSCode中打开虚拟机中的文件、目录进行开发了

下面,我们以打开OpenSBI源码为例,首先选择VSCode的file菜单,然后选择Open Folder,如下图所示:

图片

选择OpenSBI的路径,点击OK:

图片

点击trust:

图片

到这里,就可以浏览代码,修改代码等操作了:

图片

甚至可以直接打开远程终端,打开终端快捷键:ctrl + `

图片

到此,远程开发环境已经设置好了,如果需要查看虚拟机上其他代码只需要重新选择其他目录即可。

最后,推荐安装一个插件,用于risc-v汇编语法高亮的:

图片

如果你觉得本文对你有帮助,请点赞关注哦~

本文发布于微信公众号:Linux底层小工,欢迎关注,获取更多原创技术文章!

### 配置 VSCode 使用 QEMU 和 GDB 调试 RISC-V 程序 #### 安装必要的工具链和软件包 为了能够在 Visual Studio Code (VSCode) 中调试 RISC-V 程序,需要先安装一些基础组件。这包括但不限于 RISC-V 工具链、QEMU 模拟器以及 GDB 调试器。 确保已正确安装 `riscv64-unknown-elf-gcc` 编译器套件用于编译目标程序,并且也已经安装了支持 RISC-V 架构的版本的 QEMU[^1]。 #### 设置 VSCode 开发环境VSCode 中进行有效的 C/C++ 项目开发及调试前,需完成如下几项工作: ##### 插件安装 通过扩展市场下载并安装由 Microsoft 提供的官方 **C/C++** 扩展插件,该插件提供了 IntelliSense 功能以及其他有助于编写高质量代码的功能特性[^4]。 ##### 创建 launch.json 文件 创建 `.vscode/launch.json` 文件来定义启动配置文件,以便能够顺利连接到远程调试会话。下面是一个适用于 RISC-V 的基本模板: ```json { "version": "0.2.0", "configurations": [ { "name": "(gdb) Launch", "type": "cppdbg", "request": "launch", "program": "${workspaceFolder}/build/my_program.x", // 替换成实际路径 "miDebuggerPath": "/path/to/riscv64-unknown-elf-gdb", // 替换为真实的GDB路径 "setupCommands": [ { "description": "Enable pretty-printing for gdb", "text": "-enable-pretty-printing" } ], "args": [], "stopAtEntry": false, "cwd": "${workspaceFolder}", "environment": [], "externalConsole": true, "MIMode": "gdb", "preLaunchTask": "Build Program", "targetArchitecture": "riscv64", "serverLaunchTimeout": 30000, // 增加超时时间以适应较慢网络条件下的仿真加载过程 "pipeTransport": { "pipeProgram": "qemu-system-riscv64", "pipeArgs": ["-nographic", "-machine", "virt", "-bios", "", "-device", "loader,file=${workspaceFolder}/build/my_program.bin"], "debuggerPath": "/usr/bin/gdb-multiarch" // 如果使用的是多架构版GDB则指定此参数;否则忽略它 }, "logging": {"trace":true,"traceResponse":true} } ] } ``` 请注意调整上述 JSON 片段中的具体字段值以匹配个人项目的实际情况,特别是 `program`, `miDebuggerPath` 及其他涉及本地文件系统的部分。 #### 运行与调试 当一切准备就绪之后,在终端窗口执行命令启动 QEMU 并监听特定端口等待来自 GDB 的连接请求: ```bash qemu-system-riscv64 -nographic -machine virt \ -bios /path/to/opensbi/firmware/fw_payload.bin \ -device loader,file=/path/to/kernel Image,-t=kernel8.img \ -append 'rootwait console=ttyS0 rw' \ -netdev user,id=mynet0 -device virtio-net-device,netdev=mynet0 \ -drive file=rootfs.ext4,if=none,format=raw,id=mydrive \ -device virtio-blk-device,drive=mydrive,bus=virtio-s` 参数指示开启 GDB stub,默认情况下会在 TCP 端口 1234 上提供服务;而 `-S` 则会让虚拟机暂停直到收到继续指令为止。接着回到 VSCode 内部按下 F5 或者点击绿色播放按钮触发断点命中从而进入交互式的调试模式[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Linux底层小工

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值