国民技术
直播中

HonestQiao

8年用户 519经验值
擅长:嵌入式技术
私信 关注

【国民技术N32项目移植】N32G457XVL-STB项目移植之开箱+macOS/Linux-VSCode开编烧调环境搭建

对国民技术一直有所耳闻,接着这次的活动机会申请了一把,顺利过关。

经过漫长的筹备上架,以及疫情阻隔快递,终于收到了。

一、开箱

打开箱子,看到华秋很贴心的还送了数据线:

image.png

N32G457XVL-STB开发板是经典的蓝色板子:

image.png

板子上,引脚不少,还有5个按键,板子上的LED序号到了D7,不过只有D1、D2、D3是可以控制的。

板子背面很简洁,没啥:

image.png

放大了,仔细瞅瞅中间的主芯片,是N32G457VEL7:

image.png

第二个芯片,是N32G452CCL7,用作板载DAPLink,方便调试:

image.png

板子上有两个金晃晃的Mini USB接口:

image.png

这是非常值得吐槽的点,都2202年了,居然还用的是Mini USB,为啥不用Type-C呢?想不通!!!

我平时都是使用的macOS和Linux,之前在GD32、MM32上,都顺利的搭建了开发编译烧录调试环境,参考之前的经验,以及官方提供的资料,也顺利搭建成功了。搭建过程中,感谢大佬许思维老师的指点。

二、官方资料下载:

国民技术官方很贴心的把资料做了分类打包,并提供ftp,方便大家一揽子下载,具体可以参考下面的文档:

*附件:国民技术产品资料获取方式及使用指引.pdf

N32G457XVL-STB下载的资料如下:

image.png

三、macOS、Linux-VSCode开编烧调环境搭建

在下载的资料之中,有一个应用案例:【AN_N32G45x_N32G4FR_N32WB452_N32G43x_N32L43x_N32L40x_GCC开发环境应用笔记_V3.0.pdf】,在上面的资料列表中,也可以看到。

参考这个例子,就能轻松的搭建macOS/Linux-VSCode环境。

  1. 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 能够输出版本信息即可。

  1. 编译测试代码:
    到下载的资料中,找到 【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
    

编译完成后,结果如下:

image.png

查看一下输出的文件:

image.png

可以看到,贴心的把elf、bin、hex都生成了。

  1. 烧录代码:
    烧录代码,需要使用到pyocd,安装就成。
    macOS:brew install pyocd
    Ubuntu:sudo apt install pyocd
    其他Linux发行版请使用对应包管理指令安装。

    安装pyocd后,默认还不能对接咱们的板子,需要使用上官方的Keil的pack包才行。
    可以在GCC下面,放一个pyocd.yaml,内容如下:

probes:
   0001A0000002: # Probe's unique ID.
     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来自于:

image.png

设置好了以后,执行下面的命令检查:

pyocd list --targets | grep n32g457

返回结果如下:

image.png

最后一个,就是咱们这块板子的核心了。

pyocd能够识别后,就可以开始烧录了。

把板子的DEBUG USB口用数据线连接到电脑,然后用下面的命令:

pyocd flash ./build/output.bin

烧录结果如下:

image.png

当然,没有上面的pyocd.yaml文件,也可以烧录,指定参数即可:

pyocd flash --target n32g457vel7 --pack ~/N32_work/Nationstech.N32G45x_DFP.1.0.5.pack ./build/output.bin
  1. 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",
                // "--erase",
                // "chip",
                "--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:

{
    // Use IntelliSense to learn about possible attributes.
    // Hover to view descriptions of existing attributes.
    // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
    "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解压后的:

image.png

上述两个文件配置好了以后,就可以开心的在VSCode里面玩耍了:

image.png

通过终端菜单,可以运行配置在task.json中的任务,点Build_Flash,就能自动编译,并进行烧录了:

image.png

通过VSCode的调试面板,就可以进行调试了:

image.png

四、点灯:

这个演示的代码,在咱们得板子上,烧录后,是达不到预期结果的,需要做一些调整,主要为两个方面:

  1. LED的配置:

    image.png

image.png

  1. Makefile编译优化选项:

    image.png

如果你对gcc的优化不是非常了解,那么建议这里用-O0,否则可能会出现奇妙的结果。

  1. SysTick

    在后面分享的工程中,还开启了SysTick中断,使用SysTick来进行延时的处理。

    image.png

  2. LED2的引脚PB4:

image.png

PB4还连了板载SWD接口的RST引脚,如果你用了它,就可能导致SWD RST失败,导致pyocd下载失败。这可真是一个悲情引脚啊。

所以,虽然三颗都可以点亮。但一般情况下,不用LED2吧。

image.png

最终,我的测试代码,就只用了LED1、LED3:
image.png

最终效果如下:

image.png

image.png

五、工程分享:

具体的工程和演示代码,我都放到了码云上,地址为:

N32G457XVL-STB开发板 VSCode工程模版https://gitee.com/honestqiao/N32G457XVL-STB_Template_VSCode

总的来说,国民技术的板子,以及资料,都是做的非常不错的。

特别是资料,全面丰富,让人上手非常快,值得好好学习研究。

回帖(1)

jf_54025787

2022-12-10 00:59:30
大妈的这开箱+环境 好厉害啊
举报

更多回帖

发帖
×
20
完善资料,
赚取积分