本帖最后由 kai迪皮 于 2022-11-28 17:55 编辑
#申请原创#
@21小跑堂
前言
上次分享了《基于VScode 的APM32F1开发环境配置》https://bbs.21ic.com/icview-3262442-1-1.html,再接再厉玩一下APM32F4的VSCode开发,在这里记录一下开发APM32F4的过程。
1 环境搭建及VSCode环境配置
本节的环境搭建可以参考《基于VScode 的APM32F1开发环境配置》的章节2及4,但这里需要注意的是,xpack编译的OpenOCD是不支持APM32F4的,这里我也准备了一个支持APM32F4的一个OpenOCD的包
openocd-v0.12.0-rc2-2022-11-22-1713.zip
(9.96 MB)
,基于最新的OpenOCD源码(这是它的官网Open On-Chip Debugger,https://openocd.org/)添加APM32系列MCU(后续有感兴趣的小伙伴我们再单独开贴讨论)。
这里需要注意把Embedded IDE插件的OpenOCD的路径更改至新的路径。
2 启动文件及连接脚本编写
2.1 启动文件
GCC环境下,芯片的启动文件一般是完成芯片的内核,中断向量号的声明,以及一些数据段的初始化操作,最终在Reset_Handler函数中调用相应的系统时钟初始化函数(“SystemInit”函数)然后执行“main”函数。
我们新建一个文件“startup_apm32f40x.S”,其代码和我们之提到的F1的代码类似,可以参考得到(主要修改是中断函数的声明),这里需要注意的是F4是M4内核的,需要把启动文件里面的内核声明改为M4:
.syntax unified
.cpu cortex-m4
.fpu softvfp
.thumb
简单总结就是:
- 改内核声明
- 改中断声明与APM32F4的头文件“apm32f4xx.h”保持一致即可。
具体代码,大家可以看附件文件中的源码,这里就不在赘述。
2.2 链接脚本文件
链接脚本文件一般为芯片的主要存储空间信息以及一些程序段保存位置信息,在了解其编写规范后编写也比较简单的将其写出。
我们这里新建一个文件“APM32F4xxxE_FLASH.ld”,其内容为与前面的F1的文件类似。但是值得注意的是F4有一个单独的RAM,仅供内核使用,大小是64KB。这里需要单独分配声明。
APM32F407xE的内存分配下:
/* Specify the memory areas */
MEMORY
{
RAM (xrw) : ORIGIN = 0x20000000, LENGTH = 128K
CCMRAM (xrw) : ORIGIN = 0x10000000, LENGTH = 64K
FLASH (rx) : ORIGIN = 0x8000000, LENGTH = 512K
}
具体代码,大家可以看附件文件中的源码,这里就不在赘述。
3 工程创建及编译仿真
该章节比较简单,大家可以参考F1环境搭建的相应章节,但是大家需要注意把启动文件和链接脚本文件,以及OpenOCD(使用Geehy-Link等CMSIS-DAP血统的仿真器时)的配置更改如下:
配置完相应的宏定义,头文件包含等工作后我们就可以编译及下载仿真啦。
APM32F4xx_SDK_VSCode_v0.1.zip
(7.35 MB)
这里我把工程下的.pack文件夹删除了,大家使用例程的时候注意程序导入Pack。欢迎大家在评论区一起讨论使用VSCode开发遇到的趣事~
|