【GD32F427开发板试用】macOS/Linux系统开发环境搭建(开发、编译、烧录、调试)

news2024/9/23 2:17:50

本篇文章来自极术社区与兆易创新组织的GD32F427开发板评测活动,更多开发板试用活动请关注极术社区网站。作者:HonestQiao

我日常的工作环境使用的是macOS系统或者Linux系统,万不得已才使用Windows。
GD32官方提供了Keil MDK-ARM和IAR两款工具的支持,但是没有提供对ARM-GCC的支持配置文件。而Keil MDK-ARM和IAR,又绑死在了Windows系统,这个真是一个悲伤的故事呀!

经过查阅资料,请教大佬,一番学习研究之后,顺利搞定了macOS环境中的开遍烧调。处理过程,Linux环境同样适用。

学习研究过程中,主要参考了三位大佬的如下文章,深表感谢:

  • 【GD32F310开发板试用】MAC开发&调试环境搭建
  • 1-VSCode搭建GD32开发环境
  • 【GD32F427开发板试用】RT-THREAD标准版 移植使用

下面为搭建的步骤:

  1. 下载官方提供的开发库:
    1. 地址:https://aijishu.com/a/1060000…
    2. 开发板源码套件:GD32F4xx_Demo_Suites,并解压,具体目录如下:

      1. 其中我们需要的是:
        1. GD32F4xx_Firmware_Library为GD32F4xx标准固件库。适用于GD32F4xx系列MCU,与Cortex-M微控制器软件接口标准(CMSIS)兼容。固件库包括程序、数据结构和宏定义,覆盖所有集成外设的特征,并包括了全部相关驱动和示例程序。
        2. GD32427V_START_Demo_Suites为GD32F427V_START开发板套件演示代码
      1. 开发环境的源码库配置,是按照 GD32F4xx_Demo_Suites 的结构进行配置的,在自己的环境中,可以根据实际需要修改。
  1. 下载我已经打包好的模板工程:

    1. 地址:https://gitee.com/honestqiao/…
    2. 下载后,将该模板工程目录放置到 01_GPIO_Running_LED 同级目录

    1. 说明:
      1. 该工程的基础文件,来自 01_GPIO_Running_LED
      2. 支持文件,放置在 support_files 中
        1. toMakefile.py:用于生成Makefile文件
        2. Makefile.template:Makefile模版
        3. startup_gd32f4xx.s:从RTT中提取并根据GD32F427V修改
        4. GD32F427VK_FLASH.ld:参考RTT中并根据GD32F427V修改
        5. GD32F4xx.svd:从GD32F4xx的Keil5 Pack中提取并修改
        6. dot_vscode:vscode配置文件,本项目根目录中.vscode为该目录拷贝改名过去的
      1. 如果是自己的工程,则将 support_files 目录拷贝过去,将 dot_vscode 拷贝为.vscode即可
  1. pyocd 环境检查:

    1. 安装pycode:pip3 install pyocd
    2. 安装GD32F427VK支持包:
      1. pyocd pack find gd32f427v

      1. 从Keil工程中的工程属性可以得知,GD32F427V_START为GD32F427VK
      2. 安装支持包:pyocd pack install GD32F427VK
    1. 检查设备连接
      1. 将设备的GD-Link口,与电脑连接
      2. 检查是否识别:pyocd list

    1. 修改pack包:
      1. 默认的pack包,提供的svd文件,有一点点小问题,导致在flash或者debug的时候,会出现如下的问题:

        1. 在github和google寻找过该问题,目前无解:
          1. Exception in thread load-svd when flash app.bin to target. #1181
          2. Pyocd flash error for GD32F350G8 - Memory transfer fault @ 0x08000000-0x0800001f #1396
      1. 不过该问题,并不会影响实际的flash和debug,但是看着就不爽,经过研究,使用如下的方法解决:
        1. 找到对应目录:find /usr -name "cmsis-pack-manager"
        2. 然后处理:
          1. # 进入GD32F4xx_DFP目录 cd /path/to/cmsis-pack-manager/GigaDevice/GD32F4xx_DFP # 查看当前的pack文件,后面的命令,请使用此时看到的 ls *.pack # 修改为备份 mv 3.0.3.pack 3.0.3.pack.bak # 解压 unzip 3.0.3.pack.bak # 查看首行 head -1 SVD/GD32F4xx.svd | hexdump | head -1 # 如果显示:0000000 20 20 3c 开头的信息,则需要使用sed处理;关键是20 20 # 如果显示:0000000 3c 开头的信息,则不需要使用sed处理 # 使用sed处理20 20 # macOS sed -i “” ‘1s/^ *//gp’ SVD/GD32F4xx.svd # Linux sed -i ‘1s/^ *//gp’ SVD/GD32F4xx.svd # 查看处理结果 head -1 SVD/GD32F4xx.svd | hexdump | head -1 # 应返回:0000000 3c 开头的信息 # 打包 zip -r 3.0.3.pack Device Flash GigaDevice.GD32F4xx_DFP.pdsc SVD # 删除不用的文件 rm -rf Device Flash GigaDevice.GD32F4xx_DFP.pdsc SVD
  1. arm gcc 环境检查:

    1. 安装arm gcc:下载地址:https://developer.arm.com/downloads/-/arm-gnu-toolchain-downloads
    2. 检查安装情况:/usr/local/bin/arm-none-eabi-gdb -v,如果安装在其他路径,请更换为实际的路径。

  1. 使用VSCode打开工程配置arm gcc路径:
    1. support_files/Makefile.template:

    1. vscode配置:.vscode/launch.json、.vscode/tasks.json

  1. 开始进行开发、编译、烧录、调试:
    1. 了解该环境系统的任务命令:
      从菜单 - 终端 -运行任务,或者从命令面板中执行:

命令列表说明:

      • _makebuildfolder: 创建编译目录
      • env:设置环境
      • clean: 清理
      • create_Makefile: 生成Makefile文件
      • make: 编译
      • Build:自动执行_makebuildfolder、env、make
      • flash:烧录
    1. 生成Makefile文件:
      首次打开工程,需要调用 create_Makefile 来生成Makefile文件;
      如果增减了文件,也需要调用一次;
      其他时候,则无需调用。
      具体调用结果如下:

    1. 编译代码:
      通常,只需要调用 Build 任务即可。
      执行后,会生成elf文件:

    1. 烧录elf文件:
      调用flash命令即可,执行结果如下:

    1. 调试:
      先从左则面板中,进入扩展,安装cortex-debug:

再到代码中合适的位置,先打上断点,然后从左则面板,启动调试:

启动后,将会在main的入口处停住,点击右上角的调试操作面板中的||>,继续运行,将会在合适的断点处停留。

经过上述步骤,现在就可以在macOS/Linux系统中,愉快的进行开发、编译、烧录、调试了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/171679.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

如何使用Dx命令将jar打包成Dex,需要使用D8命令

使用dx打包的完整命令,将D:\ssh1.0.jar打包成MyClass.dex,MyClass.dex将会输出在当前CMD命令窗口的目录下。dx --dex --no-strict --min-sdk-version26 --outputMyClass.dex D:\ssh1.0.jar运行结果:不要使用dx命令,打出来的dex可以…

NestJS 项目实战 技术选型 (文末附视频)

前言 通过上一章的学习,我们了解了网关系统,并且针对要做的功能做了项目架构设计与需求拆解。 那在一个项目正式开发之前,我们还需要做一个技术调研,从开发框架、使用的工具、数据库等等进行一系列的预研,避免在业务…

嘿~ 基于分布式架构的技术交流社区(WhiteHoleV0.7)即将竣工!

文章目录前言项目介绍WhiteHole期望立项作者功能/模块简介用户模块问答模块社区模块博文模块Next前言 拖更,拖延了这么久,耗时超过3个月的项目,WhiteHoleV0.7 版本即将迎来最后的收尾工作。当然考虑到服务成本,和开发进度&#x…

【以太网硬件十九】SGMII到底能不能直接出光模块?

SGMII接口到底能不能直接出光模块?先说结论:我认为可以,但是有限制,此时的光口只支持强制模式,不支持自协商。如果对端是1000base-X接口,对端也需要把自协商关闭才能与SGMII直出的光口建立连接。为什么SGMI…

你是真的“C”——C语言详解求素数n种境界~

详解C语言函数模块知识(下篇)😎前言🙌必备小知识~😘C语言详解《试除法》求解素数🙌试除法第一层境界~ 😊试除法境界2~😊试除法境界3~😊试除法境界4~😊C语言详解《筛选法》…

为何限制英伟达出售GPU芯片?中国的AI技术领先,让美国怕了

2022年下半年美国突然要求GPU芯片领军者NVIDIA停止对中国出售高端GPU芯片,此举让人疑惑不解,近期日本媒体《日本经济新闻》与荷兰的一家学术信息巨头的分析给出了答案,中国在AI技术上已领先于美国,而NVIDIA的高端GPU芯片有助于中国…

Web端即时通信技术-WebSocket

最近在做项目的时候,遇到了一个前端页面需要实时刷新的功能,一种方法是我们通过短轮询的方式,但这种方式虽然简单,但是无用的请求过多,占用资源,并且如果是对数据要求高较高的场景,就不适用了。…

汽车ECU软件开发之应用层软件与底层软件

随着汽车产品日渐趋向电子化,人们对各类先进的安全系统、高级驾驶辅助系统的接受程度日益提升。而原本昂贵的盲点检测、自动紧急制动等功能的成本下滑,使其快速获得了市场青睐。富士奇美拉研究所(Fuji Chimera Research Institute&#xff09…

MySQL算术/比较/逻辑/位/运算符与正则全解

文章目录1. 算术运算符加法与减法运算符乘法与除法运算符求模(求余)运算符2. 比较运算符等号运算符安全等于运算符不等于运算符非符号类型的运算符空运算符非空运算符最小值运算符最大值运算符BETWEEN AND运算符IN运算符NOT IN运算符LIKE运算符ESCAPEREG…

〖金融帝国实验室〗(Capitalism Lab)v8.2.00官方重大版本更新(2023.01.17正式发布)

〖金融帝国实验室〗(CapLab)v8.2.00正式发布! ————————————— ※v8.2.00更新内容摘要: 1.新增生活服务业:快餐店、比萨店、蛋糕店和咖啡店。 2.可以通过在农场周围购买土地并耕耘来实现产能扩容。 3.…

九龙证券|重磅会议召开,工信部强调推进民爆行业高质量发展

工信部强调推动民爆职业高质量开展,民爆概念股午后拉升。 工业和信息化部举行 民爆职业安全出产视频会议 据工信部网站,1月17日,工业和信息化部举行民爆职业安全出产视频会议。 工业和信息化部副部长徐晓兰表明,部党组对安全出…

【Linux操作系统】环境变量和命令行参数

文章目录一.环境变量1.什么是环境变量?2.windows下配置PATH环境变量的原理3.一览常见的环境变量4.指令方式如何查看环境变量5.PATH-存放系统默认搜索路径的环境变量6.两种方法使运行我们写的可执行程序不带路径二.环境变量和本地变量三.和环境变量相关的命令1.echo:…

元组的操作

1 元组的定义: 元组就是用一对小括号括起来的多个元素的有序集合,个元素之间用逗号隔开。 2 元组的创建: 2.1 使用()创建元组对象。例:lt(12,34,"one") 2.2 使用内置方法tuple创建元组对象。…

mysql 为什么说加上了索引,查询速度就快了呢?(文末附视频)

一天,老板跟我们提出说网站访问的速度太慢,要求我们尽快优化一下。我赶快去查询了一下,发现有几条 SQL 查询的时间异常,我相信这个时候很多小伙伴的大脑里浮现出来的第一个解决办法就是:加索引。 那么到底什么是索引呢…

字符加密-C语言实现

任务描述 请编写程序将一串5个字符组成的英文字符串译成密码,规则为:例如,将“China”译成密码,密码规律是:用原来的字母后面第4个字母代替原来的字母。例如,字母A后面第4个字母是“E”,用“E”…

虚拟电厂负荷控制系统三维可视化监控 | 数字孪生

随着国家“双碳”及“构建以新能源为主体的新型电力系统”等目标的提出,清洁化、数字化越来越成为电力系统面临的迫切需求,负控系统的发展对电力营销现代化建设具有重要的意义。负控管理系统是一个着眼于全面加强电力信息管理的,集负荷控制、…

FMC子卡设计方案原理图:FMC550-基于ADRV9002双窄带宽带射频收发器FMC子卡

FMC550-基于ADRV9002双窄带宽带射频收发器FMC子卡一、产品概述 ADRV9002 是一款高性能、高线性度、高动态范围收发器,旨在针对性能与功耗系统进行优化。该设备是可配置的,非常适合要求苛刻、低功耗、便携式和电池供电的设备。ADRV9002 的工作频率为 …

我的2022年度总结

今天是腊月廿七,又到了写年度总结的时候了,这是写年度总结的第七个年头,希望可以一直坚持写下去。今年是新冠疫情的第三年,疫情管控结束了,同时疫情流行也开始了。我在北京刚全面放开的时候就阳了。用了差不多一周多的…

Go 语言就是在“面向未来”学习(文末附视频)

你好,欢迎学习 Go 语言! 我们知道,Go 程序设计语言是由 Robert Griesemer、Rob Pike、Ken Thompson 主持,于 2007 年末开始开发的全新高级编程语言。在 2009 年 11 月开源,并于 2012 年发布了第一个稳定版本&#xff…

基于OpenCv的人脸识别,翻车了居然识别错误。

前言 我们身边的人脸识别有车站检票,监控人脸,无人超市,支付宝人脸支付,上班打卡,人脸解锁手机。 人脸检测是人脸识别系统组成的关键部分之一,其目的是检测出任意给定图片中的包含的一个或多个人脸&#xf…