欢迎光临
我们一直在努力

GD32vw53h 开发板(Uart功能)测评 - 完整版

文章目录

  • 1. 开发环境搭建
    • 1.1. 软件下载链接
    • 1.2. 环境配置
      • 1.2.1 RT-Thread ENV工具配置 <BR>
      • 1.2.2 GD32编译链环境搭建
    • 1.3 固件烧录(直接按照git中完成)
    • 1.4. 测评结论
  • 2. 调试
    • 2.1. 调试环境搭建
    • 2.2. 调试环境测试
    • 2.3. 测评结论
  • 3. 芯片资源 – Uart
    • 3.1. Uart分布
    • 3.2. 存储
    • 3.3. USART 模块内部框图
  • 4. UART功能调试

1. 开发环境搭建

1.1. 软件下载链接

  • RTThread 环境:https://github.com/RT-Thread/rt-thread/tree/master/bsp/gd32/risc-v/gd32vw553h-eval 1.1. 方案一:可以使用git工具直接拉取RT-Thread整包:git clone https://github.com/RT-Thread/rt-thread.git 1.2. 方案二:可以直接从git界面下载zip整包,本地解压; 在这里插入图片描述

  • RT-Thread ENV工具:https://www.rt-thread.org/download.html#download-rt-thread-env-tool 在这里插入图片描述

  • 编译器工具链:https://www.gigadevice.com.cn/product/mcu/mcus-product-selector/gd32vw553hmq6 在这里插入图片描述

  • 固件烧录工具GD32AllInOneProgrammer:https://www.gd32mcu.com/cn/download?kw=GD32+All-In-One+Programmer&lan=cn 在这里插入图片描述

  • 1.2. 环境配置

    1.2.1 RT-Thread ENV工具配置

  • 将1.1->第3小节:链接中下载的文件拷贝至工作文件夹(此处为笔者习惯,仅供参考,可跳过); 在这里插入图片描述

  • 打开路径中的exe文件运行RT-Thread ENV工具,此时该文件会自动配置Windows下的环境变量; 在这里插入图片描述

  • 此处需要注意输出文件中包含的环境变量的设置,当我们解压并使用后,再次移动软件位置时,记得将环境变量同步更改,否则可能会报错,无法找到pkgs指令;若是不会修改环境变量,最简单的解决方案就是删除当前的ENV整包,然后在需要安装的位置重新解压,并运行即可;

  • 当软件环境配置完成后,分别运行pkgs –upgrade、pkgs –update,此时观察仓库可以发现仓库中增加了packages文件夹,里面包含了gd32的lib库; 在这里插入图片描述 在这里插入图片描述
  • 1.2.2 GD32编译链环境搭建

  • 对于任意一款芯片的编译肯定都需要适配交叉编译工具链,一般这部分厂商都有提供,本次需要将交叉编译工具集成到RT-Thread的环境中;
  • 由于在第一章1.1已经下载好了编译器工具链,首先需要选择一个自己想要放置编译链的地方解压工具链;
  • 然后在RT ENV环境下运行下面命令,注意:PTAH=后面跟着的路径需要改为自己的路径,下方指令不可直接复制粘贴使用!下方指令不可直接复制粘贴使用!下方指令不可直接复制粘贴使用!
  • set RTT_EXEC_PATH=E:\\GD32\\GD32VW5\\GD32EmbeddedBuilder_v1.5.4_Rel\\Tools\\RISC-V Embedded GCC\\8.2.0-2.2-20190521-0004\\bin

  • 运行完成后,在gd32vw553h-eval的目录下直接执行scons -j128编译即可;
  • 记得一定要在\\rt-thread-master\\bsp\\gd32\\risc-v\\gd32vw553h-eval,这个目录下执行,其中j后面跟着的数字是指使用几个核进行编译,可根据自己的电脑实际性能调整;

  • 编译完成后既可以看到文件夹中多了rtthread.bin文件,该文件就是后面需要下载到板卡的二进制文件;
  • 1.3 固件烧录(直接按照git中完成)

  • 固件烧录需要使用上述的第一章1.1中下载的GD32AllInOneProgrammer软件,烧录说明位于烧录软件下的Doc文件夹,或在线搜索使用方法,下述是烧录的示例: 在这里插入图片描述
  • 需要注意的是使用上述软件烧录时需要将boot1置为高电平,烧录结束后重新设置为低电平,手动调整板载的boot跳线帽。

  • 运行结果:烧录完毕后,使用串口连接自己的串口终端软件,即可通过串口与开发板交互;
  • 1.4. 测评结论

    GD32这款板子在环境搭建上相对还是比较简单的,基本可以无脑跟着Git中的指引一步步完成开发环境的搭建,无需开发者到处寻找资料;同时搭建开发环境所需的软件包也比较集中,且容易获取;

    2. 调试

    2.1. 调试环境搭建

  • 配置VSCode调试环境,首先在第一章中已经下载好了《GD32EmbeddedBuilder》,调试环境配置时需要用到该文件夹中的Tools; 在这里插入图片描述

  • 其次在BSP根目录下执行下述命令,生成VSCode工程所需文件。

  • scons –target=vs

  • 在VSCode安装扩展插件Cortex-Debug,版本v1.4.4。

  • 完成上述工作后,点击运行和调试选项,创建一个launch.json配置文件,配置文件示例如下:

  • {
    "version": "0.2.0",
    "configurations":
    [
    {
    "name": "Cortex Debug",
    "cwd": "${workspaceFolder}",
    "executable": "${workspaceFolder}/rtthread.elf",
    "request": "launch",
    "type": "cortex-debug",
    "servertype": "openocd",
    "serverpath": "E:/GD32/GD32VW5/Tools/GD32EmbeddedBuilder_v1.5.2.30854/Tools/OpenOCD/xpack-openocd-0.11.0-3/bin/openocd",
    "configFiles":
    [
    "${workspaceFolder}/openocd_gdlink.cfg"
    ],
    "runToEntryPoint": "main",
    "showDevDebugOutput": "raw",
    "toolchainPrefix": "E:/GD32/GD32VW5/Tools/GD32EmbeddedBuilder_v1.5.2.30854/Tools/RISC-V Embedded GCC/8.2.0-2.2-20190521-0004/bin/riscv-none-embed"
    }
    ]
    }

    这里需要注意如果你的

    w

    o

    r

    k

    s

    p

    a

    c

    e

    F

    o

    l

    d

    e

    r

    工作空间不是当前的路径,可以自行将

    {workspaceFolder}工作空间不是当前的路径,可以自行将

    workspaceFolder工作空间不是当前的路径,可以自行将{workspaceFolder}相关的路径改为自己launch.json的绝对路径/相对路径使用;

    上述文件中的部分字段需要根据用户环境进行修改,格式需与示例一致:

    "serverpath”:该字段需要改为用户的openocd所在路径,openocd工具位于GD32EmbeddedBuilder工具包中。 “toolchainPrefix”:该字段需修改为用户的工具链所在路径,工具链位于GD32EmbeddedBuilder工具包中。

  • 完成上述配置后即可点击调试选项进行调试,调试时boot管脚均置为低电平即可,调试时同样会进行固件下载。
  • 2.2. 调试环境测试

  • 在工程界面点击Cortex Debug,即可进入调节界面; 在这里插入图片描述

  • 在调试界面可以查看变量值、暂停后可以查看当前任务的调用栈情况,同时也支持在vscode界面进行断点操作、单步调试、Reset等; 在这里插入图片描述

  • 2.3. 测评结论

    整体来说调试环境搭建非常简单,但是调试界面相对于keil、esp-idf、劳德巴赫等其他环境较为简陋,不过功能完全足够开发者使用;

    3. 芯片资源 – Uart

    芯片采用RISC-V架构处理器,适用于低能耗、小面积的嵌入式应用,具有简单的动态分支预测、指令预取缓冲区和I-cache等多种高效微架构特点。

    3.1. Uart分布

    在这里插入图片描述

    根据芯片架构示意图可以看到,芯片共有三路串口,其中UART2挂载在APB2总线上,USART0和UART1挂载在APB1上;这里需要注意我们在使用不同Uart时,需要初始化对应的总线时钟;

    3.2. 存储

    RISC-V处理器采用哈弗架构,可以使用单独的总线来提取指令和加载/存储数据。程序存储器,数据存储器,寄存器和I/O端口组织在同一线性4GB(32位芯片)地址空间内。具体的存储器映射表可以查看《GD32VW55x_用户手册_Rev1.4.pdf》第1.3节;

    Uart地址空间 USART0:0x4000 4800 – 0x4000 4BFF UART1:0x4000 4400 – 0x4000 47FF UART2:0x4001 1000 – 0x4001 13FF

    Ram段 在这里插入图片描述

    代码段 在这里插入图片描述 在这里插入图片描述

  • 其中我们主要关注和使用较多的就是主存储0x0800 0000 – 0x083F FFFF和0x0BF4 0000 – 0x0BF7 FFFF ROM区间;
  • 根据芯片的引导配置章节可以看出,该芯片将Bootload、secure boot分别放在了ROM段0x0BF40000、0x0BF46000作为起始地址,本地代码一般放在了起始地址0x08000000的主存储区;
  • 3.3. USART 模块内部框图

    在这里插入图片描述

  • 从模块内部框图可以看出,Uart的读写操作主要都是在读/写缓冲区完成,用户可以通过CPU在串口传输完成后直接读取读缓冲区的内容,或像写缓冲区写入数据,配置控制/状态寄存器及中断完成Uart的读写操作;

  • 从图中同样可以看到该芯片Uart支持DMA直接将缓冲区数据搬入/出;

  • 读写缓冲区分别对应Uart的数据接受/发送寄存器,同时FIFO的控制/状态获取,主要依赖于FIFO控制和状态寄存器;

  • 同时芯片支持硬件流控功能,可通过nCTS和nRTS引脚来实现。通过将USART_CTL2寄存器中RTSEN位置1来使能RTS流控,将USART_CTL2寄存器中CTSEN位置1来使能CTS流控。 在这里插入图片描述

  • GD32vw553 引脚映射关系 在这里插入图片描述

  • 测试阶段暂时将PA2/3作为UART1的收发引脚,PA6/7作为UART2的收发引脚;

    4. UART功能调试

  • Demo中仅使能了UART0一路串口,首先需要测试3路串口是否均可时钟,可以在RTT的menuconfig中将UART1/2使能;

  • 使能后会出现宏定义相关的报错,此时需要修改drv_usart.c文件,由于GD32vw55x的另外两路都是UART,drv中写死的USART宏并不适用,临时改为UART1/UART2,重新编译可成功编译; 在这里插入图片描述

  • 单步调试查看调用栈,可以发现在程序启动后会首先调用board.c中的rt_hw_board_init,另外在rt_hw_board_init中已经初始化了board.c UART数组中的所有串口,我们可以在后续直接测试UART1/2的功能; 在这里插入图片描述

  • RTT中main其实只是一个Task,并不像裸机开发那样时start.s跳转出的首个函数; 在这里插入图片描述

  • 我们可以在main task中调用uart API发送/接收数据; 在这里插入图片描述

  • 赞(0)
    未经允许不得转载:171主机测评 » GD32vw53h 开发板(Uart功能)测评 - 完整版
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址