对国民技术一直有所耳闻,接着这次的活动机会申请了一把,顺利过关。
经过漫长的筹备上架,以及疫情阻隔快递,终于收到了。
一、开箱
打开箱子,看到华秋很贴心的还送了数据线:
N32G457XVL-STB开发板是经典的蓝色板子:
板子上,引脚不少,还有5个按键,板子上的LED序号到了D7,不过只有D1、D2、D3是可以控制的。
板子背面很简洁,没啥:
放大了,仔细瞅瞅中间的主芯片,是N32G457VEL7:
第二个芯片,是N32G452CCL7,用作板载DAPLink,方便调试:
板子上有两个金晃晃的Mini USB接口:
这是非常值得吐槽的点,都2202年了,居然还用的是Mini USB,为啥不用Type-C呢?想不通!!!
我平时都是使用的macOS和Linux,之前在GD32、MM32上,都顺利的搭建了开发编译烧录调试环境,参考之前的经验,以及官方提供的资料,也顺利搭建成功了。搭建过程中,感谢大佬许思维老师的指点。
二、官方资料下载:
国民技术官方很贴心的把资料做了分类打包,并提供ftp,方便大家一揽子下载,具体可以参考下面的文档:
*附件:国民技术产品资料获取方式及使用指引.pdf
N32G457XVL-STB下载的资料如下:
三、macOS、Linux-VSCode开编烧调环境搭建
在下载的资料之中,有一个应用案例:【AN_N32G45x_N32G4FR_N32WB452_N32G43x_N32L43x_N32L40x_GCC开发环境应用笔记_V3.0.pdf】,在上面的资料列表中,也可以看到。
参考这个例子,就能轻松的搭建macOS/Linux-VSCode环境。
- arm-none-eabi-gcc安装:
macOS下面,直接用brew install arm-none-eabi-gcc即可。
Ubuntu下面,直接用apt安装,命令如下:
sudo add-apt-repository ppa:team-gcc-arm-embedded/ppa
sudo apt-get update
sudo apt-get install gcc-arm-embedded
arm-none-eabi-gcc -v
其他的Linux发行版本,就参考对应版本的安装指令吧。
确保最后的 arm-none-eabi-gcc -v 能够输出版本信息即可。
- 编译测试代码:
到下载的资料中,找到 【7-应用笔记(Application Note)/AN_N32G45x_N32G4FR_N32WB452_GCC Development Environment Application Note_V3.0/Nationstech.N32G45x_Library.2.0.0/projects/n32g45x_EVAL/examples/GPIO/LedBlink/GCC】,这个里面的Makefile就是Windows下面的gcc编译配置,但是在macOS/Linux环境一样通用,直接make直接通过。
cd GCC
make
编译完成后,结果如下:
查看一下输出的文件:
可以看到,贴心的把elf、bin、hex都生成了。
-
烧录代码:
烧录代码,需要使用到pyocd,安装就成。
macOS:brew install pyocd
Ubuntu:sudo apt install pyocd
其他Linux发行版请使用对应包管理指令安装。
安装pyocd后,默认还不能对接咱们的板子,需要使用上官方的Keil的pack包才行。
可以在GCC下面,放一个pyocd.yaml,内容如下:
probes:
0001A0000002:
target_override: n32g457vel7
test_binary: ./build/output.bin
pack:
- ~/N32_work/Nationstech.N32G45x_DFP.1.0.5.pack
其中,Nationstech.N32G45x_DFP.1.0.5.pack来自于:
设置好了以后,执行下面的命令检查:
pyocd list --targets | grep n32g457
返回结果如下:
最后一个,就是咱们这块板子的核心了。
pyocd能够识别后,就可以开始烧录了。
把板子的DEBUG USB口用数据线连接到电脑,然后用下面的命令:
pyocd flash ./build/output.bin
烧录结果如下:
当然,没有上面的pyocd.yaml文件,也可以烧录,指定参数即可:
pyocd flash --target n32g457vel7 --pack ~/N32_work/Nationstech.N32G45x_DFP.1.0.5.pack ./build/output.bin
- VSCode配置:
使用pyocd烧录成功后,就能够配置VSCode进行调试了。
配置其实比较简单,重点在于下面两个文件:(.vscode放在GCC同级目录,不是在GCC目录中)
.vscode/tasks.json
{
"version": "2.0.0",
"options": {
"env": {
"ARMGCC_DIR": "/usr/local",
"PATH": "/usr/local/bin:${env:PATH}"
}
},
"tasks": [
{
"label": "_makebuildfolder",
"type": "shell",
"command": "mkdir",
"args": [
"-p",
"\"${workspaceFolder}/GCC\""
],
"problemMatcher": [],
"group": "none"
},
{
"label": "env",
"type": "shell",
"command": "env",
"args": [],
"options": {
"cwd": "${workspaceFolder}/GCC"
},
"problemMatcher": []
},
{
"label": "clean",
"type": "shell",
"command": "make",
"args": [
"clean"
],
"options": {
"cwd": "${workspaceFolder}/GCC"
},
"problemMatcher": []
},
{
"label": "make",
"type": "shell",
"command": "make",
"args": [
"-j4"
],
"options": {
"cwd": "${workspaceFolder}/GCC"
},
"problemMatcher": []
},
{
"label": "flash",
"type": "shell",
"command": "pyocd",
"args": [
"flash",
"--target",
"n32g457vel7",
"--pack",
"~/N32_work/Nationstech.N32G45x_DFP.1.0.5.pack",
"./build/output.elf"
],
"options": {
"cwd": "${workspaceFolder}/GCC"
},
"problemMatcher": []
},
{
"label": "Build",
"dependsOrder": "sequence",
"dependsOn": [
"_makebuildfolder",
"env",
"make"
],
"problemMatcher": []
},
]
}
在该文件中,配置了make和flash相关的指令,主要就是把命令行的操作,设置到了VSCode中来了。
.vscode/launch.json:
{
"version": "0.2.0",
"configurations": [
{
"name": "N32 Debug with PyOCD",
"cwd": "${workspaceRoot}",
"executable": "./GCC/build/output.elf",
"request": "launch",
"type": "cortex-debug",
"runToEntryPoint": "main",
"servertype": "pyocd",
"targetId":"n32g457vel7",
"armToolchainPath": "/usr/local/bin/",
"svdFile": "~/N32_work/N32G457.svd",
"showDevDebugOutput": "both",
"preLaunchTask": "Build",
"cmsisPack": "~/N32_work/Nationstech.N32G45x_DFP.1.0.5.pack",
}
]
}
其中的svd文件,来自于Nationstech.N32G45x_DFP.1.0.5.pack解压后的:
上述两个文件配置好了以后,就可以开心的在VSCode里面玩耍了:
通过终端菜单,可以运行配置在task.json中的任务,点Build_Flash,就能自动编译,并进行烧录了:
通过VSCode的调试面板,就可以进行调试了:
四、点灯:
这个演示的代码,在咱们得板子上,烧录后,是达不到预期结果的,需要做一些调整,主要为两个方面:
-
LED的配置:
-
Makefile编译优化选项:
如果你对gcc的优化不是非常了解,那么建议这里用-O0,否则可能会出现奇妙的结果。
-
SysTick
在后面分享的工程中,还开启了SysTick中断,使用SysTick来进行延时的处理。
-
LED2的引脚PB4:
PB4还连了板载SWD接口的RST引脚,如果你用了它,就可能导致SWD RST失败,导致pyocd下载失败。这可真是一个悲情引脚啊。
所以,虽然三颗都可以点亮。但一般情况下,不用LED2吧。
最终,我的测试代码,就只用了LED1、LED3:
最终效果如下:
五、工程分享:
具体的工程和演示代码,我都放到了码云上,地址为:
N32G457XVL-STB开发板 VSCode工程模版https://gitee.com/honestqiao/N32G457XVL-STB_Template_VSCode
总的来说,国民技术的板子,以及资料,都是做的非常不错的。
特别是资料,全面丰富,让人上手非常快,值得好好学习研究。