CH32V103 VScode及公版GCC配置(抛弃臃肿的MRS)
本帖最后由 obit 于 2022-6-17 00:59 编辑#申请原创#
一:下载以下软件
1.mingw64
x86_64-8.1.0-release-posix-seh-rt_v6-rev0.7z
https://nchc.dl.sourceforge.net/project/mingw-w64/Toolchains%20targetting%20Win64/Personal%20Builds/mingw-builds/8.1.0/threads-posix/seh/x86_64-8.1.0-release-posix-seh-rt_v6-rev0.7z
将bin目录下的mingw32-make.exe改名成make.exe
2.msys64
msys2-x86_64-latest.tar.xz
https://mirrors.tuna.tsinghua.edu.cn/msys2/distrib/msys2-x86_64-latest.tar.xz
这里的make命令不支持中文路径,改名成任意名字
3.xPack GNU GCC 最新公版
xpack-riscv-none-elf-gcc
https://github.com/xpack-dev-tools/riscv-none-elf-gcc-xpack/releases/download/v12.1.0-2/xpack-riscv-none-elf-gcc-12.1.0-2-win32-x64.zip
4.OpenOCD
从MRS安装目录提取,linux用户可直接从http://file.mounriver.com/tools/MRS_Toolchain_Linux_x64_V1.40.tar.xz下载
二:分别解压上述软件到指定目录,并在系统环境变量添加上述软件bin目录
此电脑->属性->高级系统设置->环境变量->Path
三:编写Makefile
四:VScode安装Shortcut Menu Bar扩展
在"配置->扩展->Shortcut Menu Bar configuration"中为VScode增加四个Button,
执行命令分别为
workbench.action.tasks.build
workbench.action.tasks.runTask | clean
workbench.action.tasks.runTask | download
workbench.action.debug.start
依次是构建、清除、下载、调试
五:配置VScode json文件,相关文件路径请改为自己的安装目录
tasks.json
{
"tasks": [
{
"type": "shell",
"label": "build",
"command": "make -j",
"problemMatcher":"$gcc",
"group": {
"kind": "build",
"isDefault": true
},
"detail": "调试器生成任务。"
},
{
"type": "shell",
"label": "clean",
"command": "make purge",
"group": {
"kind": "build"
},
"detail": "清除所有生成文件"
},
{
"type": "shell",
"label": "erase",
"command": "openocd",
"args": [
"-c",
"adapter driver wlink;wlink_set;jtag newtap riscv cpu -irlen 5 -expected-id 0x00001;target create riscv.cpu.0 riscv -chain-position riscv.cpu;riscv.cpu.0 configure-work-area-phys 0x80000000 -work-area-size 10000 -work-area-backup 1;flash bank riscv.flash wch_riscv 0x00000000 0 0 0 riscv.cpu.0",
"-c",
"init;halt;flash erase_sector wch_riscv 0 last",
"-c",
"exit"
]
},
{
"type": "shell",
"label": "program",
"command": "openocd",
"args": [
"-c",
"adapter driver wlink;wlink_set;jtag newtap riscv cpu -irlen 5 -expected-id 0x00001;target create riscv.cpu.0 riscv -chain-position riscv.cpu;riscv.cpu.0 configure-work-area-phys 0x80000000 -work-area-size 10000 -work-area-backup 1;flash bank riscv.flash wch_riscv 0x00000000 0 0 0 riscv.cpu.0",
"-c",
"init;halt;program build/output.hex verify;wlink_reset_resume;exit"
]
},
{
"label": "download",
"dependsOrder": "sequence",
"dependsOn": [
"erase",
"program"
]
},
{
"label": "start-openocd",
"type": "shell",
"command": "openocd",
"args": [
"-c",
"adapter driver wlink;wlink_set;jtag newtap riscv cpu -irlen 5 -expected-id 0x00001;target create riscv.cpu.0 riscv -chain-position riscv.cpu;riscv.cpu.0 configure-work-area-phys 0x80000000 -work-area-size 10000 -work-area-backup 1;flash bank riscv.flash wch_riscv 0x00000000 0 0 0 riscv.cpu.0",
],
"isBackground": true,
"problemMatcher": [
{
"pattern": [
{
"regexp": ".",
"file": 1,
"location": 2,
"message": 3
}
],
"background": {
"activeOnStart": true,
"beginsPattern": ".",
"endsPattern": ".",
}
}
],
"detail": "执行openocd后台"
},
{
"label": "stop-openocd",
"command": "echo ${input:terminate}",
"type": "shell"
}
],
"inputs": [
{
"id": "terminate",
"type": "command",
"command": "workbench.action.tasks.terminate",
"args": "terminateAll"
}
],
"version": "2.0.0"
}
launch.json
{
"configurations": [
{
"name": "C/C++: riscv-none-elf-gcc.exe 生成和调试活动文件",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceFolder}/build/output.elf",
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"miDebuggerPath": "riscv-none-elf-gdb.exe",
"setupCommands": [
{
"description": "设置MCU架构",
"text": "set architecture riscv:rv32",
"ignoreFailures": false
},
{
"description": "指定调试目标文件",
"text": "file C:/Users/hys/Desktop/CH32V103/build/output.elf",
"ignoreFailures": false
},
{
"description": "连接GDB Server",
"text": "target extended-remote :3333",
"ignoreFailures": false
},
{
"description": "加载到MCU",
"text": "load",
"ignoreFailures": false
},
{
"text": "break main"
}
],
"preLaunchTask": "start-openocd",
"postDebugTask": "stop-openocd",
// "launchCompleteCommand": "None",
}
],
"version": "2.0.0"
}
六:注意
代码中所有__attribute__((interrupt("WCH-Interrupt-fast"))),需改为__attribute__((interrupt()))。参见http://m.**/bbs_thread-1155567-1-1.html
CFLAGS -march=rv32imac要改为-march=rv32imac_zicsr_zifencei
LDFLAGS 要增加-gdwarf-4,默认是dwarf-5调试有问题
GDB必须先执行命令set architecture riscv:rv32,否则连接Target会报错
Linux用户就不用下载mingw64和msys64了,只要设置好环境变量,gcc下载for linux的,其他基本一致
官方的MRS_Toolchain_Linux包里有gcc呀,为何用公版。官方跟公版应该有点不一样。 哦,是windows用户才要用公版。
不过话说,在2022年如果觉得eclipse类的IDE“臃肿”,那就应该是所使用电脑配置低了。我2019年就新配了16核心CPU、32G内存、2T固态硬盘的机器,eclipse之类的IDE装了好多个,一点也不觉得“臃肿”。
会用eclipse的话,其功能还是要比VS Code强点。 ufbycd 发表于 2022-6-17 22:04
哦,是windows用户才要用公版。
不过话说,在2022年如果觉得eclipse类的IDE“臃肿”,那就应该是所使用电脑 ...
java类的东西都是解释执行,效率上总是差了点,一直很反感这东西,一点洁癖吧,应该有不少人同感。
笔记本的配置会低不少,除非很高端的 ufbycd 发表于 2022-6-17 21:51
官方的MRS_Toolchain_Linux包里有gcc呀,为何用公版。官方跟公版应该有点不一样。 ...
官方的gcc是32位,公版是64位,而且编译出来的代码大约能小个200字节,算是升级了吧 我有这功夫下make工具,下公版GCC,还有“第三步自己写Makefile”,第四步做按钮,写配置。
请问我去下个插件不香么?? obit 发表于 2022-6-17 23:25
java类的东西都是解释执行,效率上总是差了点,一直很反感这东西,一点洁癖吧,应该有不少人同感。
笔记 ...
哦我的CPU说错了,实际是8核16线程。其实稍微新点的电脑跑java都没什么问题。
像我的机器也不是很高端,但使用并行编译时,完整编译包含约50个C文件的工程耗时从来不会超过2秒。 ufbycd 发表于 2022-6-21 02:50
哦我的CPU说错了,实际是8核16线程。其实稍微新点的电脑跑java都没什么问题。
像我的机器也不是很高端, ...
编译时是调用gcc,这个是原生的win32程序,并非解释执行。
看看启动速度吧,从点击图标到进入ide要几秒时间 本帖最后由 ufbycd 于 2022-6-21 13:05 编辑
obit 发表于 2022-6-21 10:18
编译时是调用gcc,这个是原生的win32程序,并非解释执行。
看看启动速度吧,从点击图标到进入ide要几秒时 ...
开发工具都是一样开着的,我的台式机也很少关机,都是休眠或待机,看启动速度有何意义?
即使是启动速度我也测了下:mounriver-studio耗时5秒左右,VS Code则是3秒左右。两者其实差不了多少。
事实上,VS Code是基于web技术的,相当于浏览器,其实并不轻量。
真正轻量的是本地化的编辑器,如我常用Linux KDE桌面环境的kate编辑器,功能跟原生VS Code差不多(Code的可视化滚动条就抄kate的),只不过只为只支持Linux没什么插件,其启动速度才是秒开的。
真的在意这些的话,还不如升级下自己谋生的工具来得实在。
补充下,以前要想在Windows上用kate不得不把KDE也装上,而现在kate已经能够和KDE分离了,Windows下也可以单独安装使用,甚至已经进入了微软的官方应用商店。
感兴趣的可以去了解下:https://kate-editor.org/zh-cn/ ufbycd 发表于 2022-6-21 12:57
开发工具都是一样开着的,我的台式机也很少关机,都是休眠或待机,看启动速度有何意义?
即使是启动速度我 ...
一个5秒,一个3秒,差了快一倍还不够吗
看来我2019配的4核8线程,16G内存,2.5T SSD笔记本要升级了 说真的,VS Code内置了chromium,本质上主是个浏览器,一样是臃肿。不如用kate这种秒开的本地化的软件,它也跟VS Code一样可以使用clangd作语言服务器后端,一样支持语法分析,输入时的动态语法检测、自动补全,编译输出的警告错误的源码定位等。 ufbycd 发表于 2022-6-21 23:35
说真的,VS Code内置了chromium,本质上主是个浏览器,一样是臃肿。不如用kate这种秒开的本地化的软件,它也 ...
用kate还不如用Sublime Text,整个安装包才十几兆,还少了那些花哨的功能 obit 发表于 2022-6-22 13:09
用kate还不如用Sublime Text,整个安装包才十几兆,还少了那些花哨的功能
付费软件…… ufbycd 发表于 2022-6-22 14:35
付费软件……
不知道我国国情吗 obit 发表于 2022-6-22 20:23
不知道我国国情吗
谋生工具都名不正言不顺。结贴吧,多说无益。 我挺讨厌java的 学习了,谢谢分享经验。 本帖最后由 zhifeng 于 2022-7-7 18:23 编辑
俺这只需要 像keil 样就行了 一定都不臃肿。 c++ 写的
risc-v环境这么复杂吗
页:
[1]
2