12下一页
返回列表 发新帖我要提问本帖赏金: 50.00元(功能说明)

[APM32F4] Eclipse 下开发APM32F4过程分享

[复制链接]
2975|33
 楼主| kai迪皮 发表于 2022-11-28 18:16 | 显示全部楼层 |阅读模式
本帖最后由 kai迪皮 于 2022-11-28 18:16 编辑

#申请原创# @21小跑堂

前言
前段时间整了一下VSCode 开发APM32F4的过程,想着还有一个老牌的IDE——“Eclipse”。想着哥俩齐,也去玩一下Eclipse看看怎么开发APM32F4,下面就简单记录一下整个过程。

1 开发环境
- 开发板: APM32F407IG MINI 开发板
- 调试器: J-Link V9/V10 或 Geehy-Link
- 操作系统: WIN10 64-bit OS
- IDE:Eclipse IDE for Embedded C/C++ Developers Version: 2022-12 (https://ftp.yz.yamagata-u.ac.jp/pub/eclipse//technology/epp/downloads/release/2022-12/M2/eclipse-embedcpp-2022-12-M2-win32-x86_64.zip)直接下载全量包解压即可。
- 交叉编译链: xpack-arm-none-eabi-gcc-10.2.1-1.1-win32-x64(记得添加Path)
- 编译工具: gnu-mcu-eclipse-windows-build-tools-2.12-20190422-1053-win64(记得添加Path)
- GDB服务器: OpenOCD(请使用我分享的版本哟 openocd-v0.12.0-rc2-2022-11-22-1713.zip (9.96 MB, 下载次数: 88) ) / J-Link GDB Server CL V7.62c(最新版支持APM32F4了)

开发环境的配置配置这里就不在赘述啦,相信大家都会的。下面我们直接进入正文。

2 工程开发

2.1 新建工程

在工程目录下新建一个“Eclipse”文件夹(注意,要全英文路径哦)保存我们的工程文件,并把上次我们用VSCode开发中使用到的启动文件(startup_apm32f40x.S)及链接脚本文件(APM32F4xxxG_FLASH.ld)复制到里面。

打开Eclipse。 在“File->New”下可选择新建C/C++ Project,选择C Managed Build。  

image-20221128164048413.png

image-20221128164125877.png

输入 Project name,配置工程类型,为了方便建议将工程放到Project目录下。编译链选择为 ARM Cross GCC。  

image-20221128164440399.png

若Eclipse IDE已正确设置了ARM Toolchains Path,这里将会自动选择路径。若Eclipse IDE未设置ARM Toolchains Path,也可在这里选择到ARM Toolchains绝对路径。  

image-20221128164614015.png

点击”Finish”, 至此, 完成Project的建立。  

2.2. 新建工程文件夹并添加文件

2.2.1 手动建立文件夹及添加文件

image-20221128164759979.png

建立虚拟文件夹Application。  

image-20221128165021050.png

同样方法建立CMSIS、 Board、 StdPeriphDriver文件夹。  

image-20221128165428327.png

右击Application,选择Import选项, 可导入文件。  

image-20221128165629483.png

Import选择File System。选择需要导入的文件的路径,勾选需要导入的文件。  

image-20221128170224210.png

同理,将所需文件导入CMSIS、 Board、 StdPeriphDriver文件夹。

image-20221128170347838.png

2.3 工程配置

右击工程,选择工程属性Properties选项打开。  

image-20221128170452713.png

2.3.1 Target Processor 配置

在“C/C++ Build->Settings->Tool Settings->Target Processor”下配置如下:可以根据目标芯片的内核, 选择cortex-m3、 cortex-m4、 cortex-m23或cortex-m33。 在这里我们选择“cortex-m4”。  

image-20221128170558857.png

2.3.2 Optimization 配置

在“C/C++ Build->Settings->Tool Settings->Optimization”选项中配置优化等级, 可选-O0、 -O1、-O2、 -O3、 -Os、 -Ofast、 -Og。  

image-20221128170726043.png

2.3.3 GNU Arm Cross C Compiler 配置

在“C/C++ Build->Settings->Tool Settings->GNU Arm Cross C Compiler”选项中配置Cross C编译选项。
本例中, 在‘’Preprocessor->Defined symbols”选项中添加APM32F10X_HD和APM32F103_MINI预编译宏。  

image-20221128171055220.png

在”includes->Include paths”选项中添加工程所需的头文件路径。在本例中添加:
  1. "${ProjDirPath}/../../Include"
  2. "${ProjDirPath}/../../../../../Boards"
  3. "${ProjDirPath}/../../../../../Libraries/APM32F4xx_StdPeriphDriver/inc"
  4. "${ProjDirPath}/../../../../../Libraries/CMSIS/Include"
  5. "${ProjDirPath}/../../../../../Libraries/Device/Geehy/APM32F4xx/Include"

注意: 本例中添加的头文件路径为相对路径。 这里也可以直接添加绝对路径  

image-20221128171407284.png

2.3.4 GNU Arm Cross C Linker 配置

在“C/C++ Build->Settings->Tool Settings->GNU Arm Cross C Linker”配置Cross C链接选项。在“General ->Script files”选项中添加:
"${workspace_loc:/${ProjName}/APM32F4xxxG_FLASH.ld}"链接脚本负责告诉链接器,编译完成的可执行文件如何配置内存。

image-20221128171522159.png

在Miscellaneous选项中,勾选Use newlib-nano及Do not use syscalls。(可优化代码大小)  

image-20221128171703791.png

2.3.5 Build Steps 配置-生成 bin 文件

在“C/C++ Build->Settings-> Build Steps”可添加命令, 生成bin/hex文件。

本例中添加:
  1. arm-none-eabi-objcopy -O binary "Template.elf" "Template.bin"; arm-none-eabi-objdump -D "Template.elf" > "Template.dump"

image-20221128171812580.png
最后我们点击“Apply and Close”按钮,保存我们的配置。

2.4 编译工程

选择Project->Build Project可编译当前工程。
注意: Build Project是编译当前工程, Build All是编译当前workspace所有工程。  

注意: 每次编译之前需先保存当前工程再编译,否则编译的是上一次的工程。修改后,为了确保
正确,请先clean工程后再build。
编译完成后,可见已生成对应的elf、 hex及bin文件。  

image-20221128172321833.png

2.5 使用 Geehy-Link 下载及调试工程

2.5.1 Debug 配置界面

在菜单栏中,点击Run->Debug Configurations,进入Debug配置界面。  

使用OpenOCD作为GDB Server,使用GCC工具链中的GDB工具作为GDB Client。 双击GDB OpenOCD Debugging,新建一套OpenOCD的配置选项。  

2.5.2 Main 选项卡

image-20221128172544034.png

在Main选项卡中,选择当前工程,一般会自动添加当前工程下的elf文件。如果没有,可以点击Browse,手动添加elf文件。
注意: 如果之前编译了多个型号,需要选择对应的可执行文件.elf。为了方便, 也可以对每个型号都新建一套Debug的配置。  

2.5.3 Debugger 选项卡

若在搭建Eclipse环境时已正确配置OpenOCD路径,这里将自动识别。如果之前没有正确配置,也可在Executable path栏,选中OpenOCD的绝对路径。在Config options栏中,填写使用的cfg文件。 本例中为:
-f interface/cmsis-dap.cfg -f target/apm32f4x.cfg
OpenOCD的cfg文件提供了调试器、 调试协议、目标芯片识别及目标芯片烧写算法选择等信息。  

image-20221128174033751.png

2.5.4 SVD Path 选项卡

image-20221128173309975.png

2.6 Debug 界面

Debug Configurations配置完成后,点击Debug,进入Debug视图。

image-20221128174058544.png

image-20221128175141236.png


以上就是搭建Eclipse开发APM32F4的开发过程啦。相关源码请看这里 APM32F4xx_SDK_Eclipse_v0.1.zip (7.46 MB, 下载次数: 13)

打赏榜单

21小跑堂 打赏了 50.00 元 2022-11-30
理由:恭喜通过原创审核!期待您更多的原创作品~

评论

@21小跑堂 :感谢,感谢。  发表于 2022-12-1 09:59
在eclipse环境下搭建APM32开发,文章结构清晰,内容充实,整个搭建过程详细合理,继续加油。  发表于 2022-11-30 15:19
两只袜子 发表于 2022-12-1 14:54 来自手机 | 显示全部楼层
整个开发过程写得很细致到位啊,牛
burgessmaggie 发表于 2022-12-1 17:40 | 显示全部楼层
这个直接使用stm32的程序替代不好用吗?
wengh2016 发表于 2022-12-1 17:48 | 显示全部楼层
本帖最后由 wengh2016 于 2022-12-4 22:42 编辑

感觉还是keil简单许多。              

评论

@wengh2016 :是的。毕竟商业用途,也是Keil赚钱的主要途径。  发表于 2022-12-5 23:39
@kai迪皮 :个人的话**可以,公司的就得花钱了。  发表于 2022-12-4 22:43
毕竟keil 是花钱的  发表于 2022-12-4 14:30
houjiakai 发表于 2022-12-4 20:51 | 显示全部楼层
这个不习惯使用Eclipse ?
rosemoore 发表于 2022-12-5 21:16 | 显示全部楼层
是不是也可以搭建apm的其他芯片?

评论

可以的,以此类推喔  发表于 2022-12-5 23:36
cashrwood 发表于 2022-12-5 23:18 | 显示全部楼层
这个可以运行keil生成的库文件吗?

评论

.a类型的库文件吗?可以的。  发表于 2022-12-5 23:38
tabmone 发表于 2022-12-6 13:06 | 显示全部楼层
可以使用keil开发的。              
uiint 发表于 2022-12-6 14:07 | 显示全部楼层
APM32F4对编译器还有要求的吗
hearstnorman323 发表于 2022-12-6 14:48 | 显示全部楼层
这个也需要gcc的吗?              
hilahope 发表于 2022-12-6 15:49 | 显示全部楼层
这个写的确实非常详细了。
              
chenci2013 发表于 2022-12-6 16:33 | 显示全部楼层
Eclipse 编译太慢是怎么个问题?
modesty3jonah 发表于 2022-12-6 17:17 | 显示全部楼层
感觉Eclipse 太复杂了,不如直接使用keil简单。
weifeng90 发表于 2022-12-6 19:13 来自手机 | 显示全部楼层
我还是喜欢用eclipse搞编程

评论

哈哈,萝卜青菜。适合自己就好。  发表于 2022-12-7 11:36
yangxiaor520 发表于 2022-12-12 19:50 来自手机 | 显示全部楼层
eclipse可以安装IAR插件,使用方便。
Undshing 发表于 2023-1-3 15:27 | 显示全部楼层
还是keil简单
febgxu 发表于 2023-1-5 13:45 | 显示全部楼层
感觉eclipse编译好慢。              
mattlincoln 发表于 2023-1-6 14:04 | 显示全部楼层
怎么设置才能只编译一个工程的代码?
sdlls 发表于 2023-1-6 17:13 | 显示全部楼层
为什么不使用keil?              
louliana 发表于 2023-1-6 18:40 | 显示全部楼层
这个学习一下,是否可以开发其他的芯片?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

43

主题

292

帖子

11

粉丝
快速回复 在线客服 返回列表 返回顶部