【前言】
【灵动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,再就是注意启动汇编的后缀文件。还有就是编译文件里面的注释需要更新一下。