当前位置: 首页 > ops >正文

【灵动Mini-F5265-OB】vscode+gcc工程创建、下载、调试

【前言】
【灵动Mini-F5265-OB】在官方的例程中提供了mdk、IAR的开发环境,使用起来非常方便。有位大佬也提供了一个gcc的示例,但是我使用vscode的keil插件进行工程创建,但是提示pack是对不上的。所以我决定重新创建我的vscode来创建开发环境。
【工程创建】
首先创建文件夹gcc_template文件夹,下面创建Devcie文件夹,存放驱动等文件,下面创建CMSIS和MM32F5260分别用于存放系统头文件与驱动。
复制官方库的HAL_LIb、Source、Include到MM32F5260文件夹下,最后其目录如下:
在这里插入图片描述

在Soucre目录下, 复制官方给出的GCC_StartAsm到文目录下面,提供启动的汇编文件。
同时复制mm32f5260_flash.ld到该目录下面,提供连接算法文件。
在工程的根目录再创建Core目录,下面创建app目录用于存入用户的代码文件,其结构如下:
在这里插入图片描述

在工程的根目录下面创建Debug目录,复制.pack包与寄存器文件MM32F5260.svd。
在这里插入图片描述
到此工程的文件准备完毕。
【makefile的编写】
1、Makefile我采用分块的书写,首先在device目录下面创建Device.mk,内容如下:

# 模块名_DIR 是上一层传递下来的参数,
# 是从工程根目录到该模块文件夹的路径# 向 C_SOURCES 中添加需要编译的源文件
C_SOURCES += $(wildcard $(Device_DIR)/MM32F5260/HAL_Lib/Src/*.c)
C_SOURCES += $(wildcard $(Device_DIR)/MM32F5260/Source/system_mm32f5260.c)# 向 C_INCLUDES 中添加头文件路径
C_INCLUDES += -I$(Device_DIR)/CMSIS/Core/Include
C_INCLUDES += -I$(Device_DIR)/MM32F5260/Include
C_INCLUDES += -I$(Device_DIR)/MM32F5260/HAL_Lib/Inc# 向 LIBDIR 中添加静态库文件路径
# LIBDIR += -L$(Libraries_DIR)/Lib
# 向 LIBS 中添加需要链接的静态库
# LIBS += -lxxxx# link script
LDSCRIPT = $(Device_DIR)/MM32F5260/Source/mm32f5260_flash.ld# 汇编文件宏定义c
AS_DEFS += # 汇编头文件目录
AS_INCLUDES += # 汇编源文件(starup)
ASM_SOURCES += $(Device_DIR)/MM32F5260/Source/GCC_StartAsm/startup_mm32f5260.S

在Makefile中,大部分与其他的工程都是一样的下面主要讲一下修改的地方
1、就是CPU的信息,由于MM32F5260是兼容cortex-m33的,所这我指定了CPU 为cortex-33。
2、就是指定汇编文件编译时要与提供的后缀一样,需要修改为.S(大写的S),我在前面执行make时是报错,最后查找出原因是后缀的原因:
$(BUILD_DIR)/%.o: %.S Makefile | $(BUILD_DIR)
@echo "[AS] < " @ <" @ <"@(AS) -c $(CFLAGS) $< -o $@
修改好这些后就可以执行make了
在这里插入图片描述
顺利的生成了固件。
【下载】
在根目录下面创建pyocd.yaml文件:

pack: ./Debug/MindMotion.MM32F5260_DFP.0.2.0.pack
target_override: MM32F5265E8PV
frequency: 24000000

首先要指定pack存放的路径,再指定MCU的型号
然后执行make flash就可以把固件烧写进开发板里面了:
在这里插入图片描述
【调试】
首先要安装Cortex-Debug插件
然后创建launch.json:

{// 使用 IntelliSense 了解相关属性。 // 悬停以查看现有属性的描述。// 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387"version": "0.2.0","configurations": [{"name": "Cortex Debug","cwd": "${workspaceFolder}","executable": "./build_exec/template.elf","request": "launch","type": "cortex-debug","targetId": "MM32F5265E8PV","runToEntryPoint": "main","servertype": "pyocd","svdFile": "./Debug/MM32F5260.svd","postRestartCommands": ["monitor reset"],}]
}

最后执行调试任务就可以:
在这里插入图片描述
到此基VSCODE的工程创建就结束了。
【经验】
就是编写makefile,再就是注意启动汇编的后缀文件。还有就是编译文件里面的注释需要更新一下。

http://www.xdnf.cn/news/10765.html

相关文章:

  • Unity——QFramework框架 内置工具
  • 强制卸载openssl-libs导致系统异常的修复方法
  • 无人机智能识别交通目标,AI视觉赋能城市交通治理新高度
  • 【OCCT+ImGUI系列】012-Geom2d_AxisPlacement
  • EPSON差分晶振X1G005331000100,SG7050VEN晶振6G无线应用
  • JVM简介
  • 二叉树(二)
  • 深入理解前端DOM:现代Web开发的基石
  • Ansys Zemax | 手机镜头设计 - 第 4 部分:用 LS-DYNA 进行冲击性能分析
  • Android Native 内存泄漏检测全解析:从原理到工具的深度实践
  • 提取 PDF 文件中的文字以及图片中的文字
  • 从 iPhone 备份照片: 保存iPhone图片的5种方法
  • 计算机基础知识(第三篇)
  • 如何监测光伏系统中的电能质量问题?分布式光伏电能质量解决方案
  • [Java 基础]运算符,将盒子套起来
  • 如何提高工作效率
  • 企业即时通讯平台,助力企业数字化转型的即时通讯工具
  • 【AI Study】第三天,Python基础 - NumPy(1)
  • 【设计模式-4.7】行为型——备忘录模式
  • 欢乐熊大话蓝牙知识14:用 STM32 或 EFR32 实现 BLE 通信模块:从0到蓝牙,你也能搞!
  • 机器人现可完全破解验证码:未来安全技术何去何从?
  • 【JAVA版】意象CRM客户关系管理系统+uniapp全开源
  • GoFrame框架深度解析:从gset模块看高效Go开发的实战之道
  • Java复习Day26
  • 2025年微信小程序开发:AR/VR与电商的最新案例
  • windows修改跃点数调整网络优先级
  • Leetcode - 周赛 452
  • 帝可得- 人员管理
  • vue+cesium示例:地形开挖(附源码下载)
  • 进程——环境变量及程序地址空间