无需单独安openocd/交叉编译环境(riscv-nuclei-elf-)/
.pip/pip.conf
[global]
#清华源
index-url = https://pypi.tuna.tsinghua.edu.cn/simple
#添加清华源为可信主机
trusted-host = pypi.tuna.tsinghua.edu.cn
#取消pip版本检查,排除每次都报最新的pip
disable-pip-version-check = true
timeout = 120
安装virtualenv 虚拟环境
sudo apt install virtualenv
pip3 install virtualenv
推荐
指定虚拟环境的python版本
virtualenv .platformio/penv --python=python3.6
不推荐不指定虚拟环境的python版本
virtualenv .platformio/penv
使用virtualenv 虚拟环境
source .platformio/penv/bin/activate
(penv)$ pip3 install -U platformio
vscode中安装platformio插件
如果加载不出pio home页,请注销或重启机器。
platformio.ini
[env:gd32vf103v-eval]
platform = gd32v
board = gd32vf103v-eval
framework = gd32vf103-sdk
debug_tool=jlink #rv-link
upload_protocol=jlink #rv-link
debug_svd_path=~/.platformio/platforms/gd32v/misc/svd/GD32VF103.svd
Jlink固件版本
Firmware:J-Link ARM V8 compiled Nov 25 2013 19:20:08
下载固件试试
.platformio/packages/tool-openocd-gd32v/share/openocd/scripts/target/gd32vf103.cfg
jtag newtap $_CHIPNAME cpu -irlen 5 -expected-id 0x1e200a6d .pio/build/gd32vf103v-eval/firmware.elf Open On-Chip Debugger 0.10.0+dev-00911-gcfbca74bd (2019-09-12-09:31) Licensed under GNU GPL v2 For bug reports, read http://openocd.org/doc/doxygen/bugs.html jtag Warn : Transport "jtag" was already selected jtag adapter speed: 1000 kHz Info : J-Link ARM V8 compiled Nov 25 2013 19:20:08 Info : Hardware version: 8.00 Info : VTarget = 3.313 V Info : clock speed 1000 kHz Info : JTAG tap: riscv.cpu tap/device found: 0x1000563d (mfg: 0x31e (Andes Technology Corporation), part: 0x0005, ver: 0x1) Warn : JTAG tap: riscv.cpu UNEXPECTED: 0x1000563d (mfg: 0x31e (Andes Technology Corporation), part: 0x0005, ver: 0x1) Error: JTAG tap: riscv.cpu expected 1 of 1:0x1e200a6d (mfg: 0x536 (Nuclei System Technology Co.,Ltd.), part: 0xe200, ver: 0x1) |
如何修改expected错误(不修改也可以正常使用只是老提示expected错误):
使用黄色位置的内容替换 gd32vf103.cfg 中的红色文本位置内容。
上述所有都设置,提示2秒超时错误,可能risc-v芯片内的程序钳制住jlink使用的相关引脚的电平,
可以在按住BOOT0按钮时再按RESET按时使板子进入DFU下载模式,刷入出厂固件后重新连接。
快速安装 arm-none-eabi-gdb |
---|
sudo apt install gdb-multiarch
sudo ln -s /usr/bin/gdb-multiarch /usr/bin/arm-none-eabi-gdb
取消编译器对某一个函数的优化 |
---|
void __attribute__((optimize("O0"))) foo(unsigned char data) {
// unmodifiable compiler code
}
同一文件中定义的所有函数 |
---|
#pragma GCC push_options
#pragma GCC optimize ("O0")
your code //作用于整个文件
#pragma GCC pop_options