目录
1. 准备工作
1.1 Eclipse下载与安装
Eclipse下载地址:https://www.eclipse.org/downloads/
打开网站后,如下图所示。切不可直接点击 “Download x86_64
” ,因为这样下载的版本并不是我们所需要的嵌入式开发版本,应点击 “DownLoad Packages
”。
点击 "DownLoad Packages
"之后进入如下界面,可以看出这里有很多的Eclipse版本,如下:
- Eclipse IDE for Enterprise Java and Web Developers
- Eclipse IDE for Java Developers
- Eclipse IDE for C/C++ Developers
- Eclipse IDE for Eclipse Committers
- Eclipse IDE for PHP Developers
- Eclipse IDE for Java and DSL Developers
Eclipse IDE for Embedded C/C++ Developers
- Eclipse IDE for RCP and RAP Developers
- Eclipse Modeling Tools
- Eclipse IDE for Scout Developers
选择“Windows x86_64
”,进入如下界面,我们可以更换其他的镜像点,但是都是国外的,换不换的都没有太大的意义,这里我们直接点“Download
”即可进入文件的下载过程。
下载完成之后,将其复制到某个文件夹中(按照自己的意愿存放即可),解压后如下图所示,Eclipse为免安装版本直接点击“eclipse.exe
”即可打开开发环境。
至此,Eclipse集成开发环境的准备工作到此结束,关于工作空间、项目的创建等,在后面的章节中再进行详细的说明。
1.2 交叉编译工具链
下载地址:https://developer.arm.com/downloads/-/gnu-rm
gcc-arm-none-eabi-10.3-2021.10-win32.exe
:适用于Windows平台的32位架构的安装包(win10及更高的版本可以使用)- gcc-arm-none-eabi-10.3-2021.10-win32.zip:适用于Windows平台的32位架构的压缩包,是一个免安装的压缩包
- gcc-arm-none-eabi-10.3-2021.10-x86_64-linux.tar.bz2:适用于Linux平台x86_64架构的压缩包
- gcc-arm-none-eabi-10.3-2021.10-aarch64-linux.tar.bz2 :适用于Linux平台aarch64架构的压缩包
- gcc-arm-none-eabi-10.3-2021.10-mac.tar.bz2 :适用于mac平台的压缩包
- gcc-arm-none-eabi-10.3-2021.10-mac.pkg :适用于mac平台的安装包
- gcc-arm-none-eabi-10.3-2021.10-src.tar.bz2
选择“gcc-arm-none-eabi-10.3-2021.10-win32.exe
”,下载并安装。我的安装目录是:D:\Program Files (x86),这目录可自行选择。
待安装完成之后,在目录D:\Program Files (x86)\GNU Arm Embedded Toolchain\10 2021.10\bin
中出现我们需要的工具链(比如:gcc、ld等),为了便于调用这些exe文件,我们需要将该文件目录放置到windows系统的环境变量中去。
查找系统环境变量的方式一般为:在“此电脑”上鼠标右键,选择“属性”,打开如下界面,选择“高级系统设置”,然后选择“环境变量”,然后添加我们的安装目录到环境变量中即可。
将安装路径添加到环境变量中后,重启电脑,环境变量就立即生效了。至此,交叉编译工具链准备就绪。
1.3 Builder工具
既然有交叉编译工具链,那就得需要有一个工具去调用它,make
工具就扮演了这一角色。Eclipse本身也自带了构建工程的 make 工具,但是其存在部分局限及BUG(比如反汇编时无法生成文件等),这里我们可以使用外部的make工具进行代码的编译等,因此我们首先准备好这些工具。
下载地址:https://xpack.github.io/
下载完成之后,解压,并将make.exe所在的目录添加到环境变量中去。
至此,构建工具准备完成。
2. 创建工作空间
初次启动Eclipse时,第一步就是创建一个工作空间(workspace)。
点击“Launch”后,就在F盘根目录下创建了一个名为eclipse-workspace的文件夹,该文件夹就是Eclipse的工作空间。至此工作空间创建完成。随之进入如下界面。
3. 新建工程
Step1:打开Eclipse找到“C/C++ Project
”进行工程创建(File → New → C/C++ Project
),如下图所示:
Step2:选择创建C工程,如下图所示:
Step3:工程的名字为“HC32F4A0_LED_Demo
”(这里使用华大的HC32F4A0开发板构建demo工程),工程类型为“Empty Project
”,即创建一个空工程,工具链选择“Cross ARM GCC
”,如下图所示:
Step4:选择交叉编译工具链和对应的路径,如下图所示:
点“Finish”完成工程的创建,该空白工程只有一些工具链的包含信息,剩下的还需要自己去完善,如下图所示:
Step5:完成工程创建之后,工程的目录架构可能不符合我们的需求,此时可以自己创建一个完整的工程目录(文件夹)架构,然后将新创建的工程文件复制到目标文件夹下即可,如下:
Step6:导入已有的工程,选择“File → Open Projects from File System
,如下图所示:
点击“Directory”选择需要打开的工程(选到.project所在的文件即可
),然后“Finish”,如下图所示:
至此,工程打开完成。
4. 完善工程
当我们新建一个空白工程时,工程内仅包含了一些“工具链的包含信息”,其他的文件还需要我们手动去完善。
两个重要的文件分别是:
.S文件(启动文件)和.ld文件(链接脚本文件)
,这两个文件必须是基于Eclipse平台下能够使用的,需要根据自己当前使用的芯片去查找,我们使用的华大的芯片,可以通过华大提供的SDK开发包中进行查找。
4.1 添加相关文件
- 在工程目录下创建“文件夹”(如下图所示):
- 文件可以创建多层;
- 文件夹是.project下的文件夹,与源文件的文件夹没有任何关系,创建文件时应创建“虚拟文件夹”。
- 将源文件导入到相应的文件夹中:
- 导入文件时,要勾选创建“软链接”,而非直接将源文件夹导入到工程中来。
4.2 修改配置信息
进入工程属性对话框,如下图所示:
- 确定内核信息是否匹配,如果不匹配根据自己当前情况进行修改,如下图所示:
- 代码优化等级,如下图所示:
- 勾选必要的告警信息,如下图所示
- 修改调试等级,如下图所示:
- 增加与芯片库有关的宏定义,如下图所示:
- 增加头文件路径(这里是相对.project工程文件的相对路径),如下图所示:
- 添加链接脚本(对应ARMCC的分散加载文件xxx.sct),如下图所示:
- 打开默认生成bin文件,如下图所示:
- 选择make工具的来源:
- 勾选“Create extended listing”,这样编译代码的时候自动生成汇编文件,如下图所示:
至此,主要的配置工作已经完成,此时可以编译工程了。
5. 编译工程
编译工程的方式可以有如下几种:
- 选中待编译的工程,鼠标右键,选中“
Build Project
”,如下图所示; - 选中待编译的工程,选择
Project → Build Project
,即可编译当前工程; - 选择
Project → Build All
,即可编译当前打开的所有工程;
6. 调试工程
在程序的开发阶段,工程调试是必须的。下面就介绍一下通过JLink进行在线调试的的方法。
Step1:选中待调试的工程,选中“绿色调试按钮(小虫子形状)”按钮,选则“Debug Configurations…”,“HC32F4A0_LED_Demo → Debug(绿色小虫子) → Debug Configurations…”,如下图所示:
Step2:双击“GDB SEGGER J-Link Debugging
”就可自动出现“HC32F4A0_LED_Demo Debug
” 调试文件,如下图所示。工程的名字一般不需要修改(如果想修改,也可以)。这里主要配置”Main
“、‘”Debugger
“、”Startup
“ 这三个界面。
- Main界面
- Project:自动选中了待调试的工程,不需要修改;
- C/C++ Application:待调试的应用程序,需为elf文件,这个是自动选中的,不需要修改;
- Debugger界面
- Device name:选择待调试的芯片型号,因为这里是通过JLink调试工程,所以这里必须与JLink驱动中的芯片型号名字完全一致才行,我这里选择的是华大的
HC32F4A0开发板
,所以这里选择的芯片型号为”HC32F4A0_2M
“; - Endianness:大小端模式选择(一般为小端模式);
- Connection:连接方式选择,通过Jlink调试时,选择的时USB连接;
- Interface:根据实际情况自行选择;
- Initial speed:通信速率,这个也根据自身情况选择即可;
- 其他参数:保持不变即可;
- Device name:选择待调试的芯片型号,因为这里是通过JLink调试工程,所以这里必须与JLink驱动中的芯片型号名字完全一致才行,我这里选择的是华大的
- Startup界面
- Set breakpoint at:调试时,断点处,这里Debug之后在main入口停住;
- 其他参数:保持不变即可;
完成以上配置之后,点”Debug“,直接进入调试状态,如下图所示,程序在main入口停住了,此时我们就可以自由的调试了。
7. 在线调试策略
当终端在现场运行过程中出现问题时,我们可以使用不打断终端正常运行的情况下,通过JLink跟进终端中,查看终端的运行状态。不打断程序运行直接在线调试需要抱证如下几点:
- 待调试的终端程序必须与eclipse选中的xxx.elf文件完全一致;
- 调试界面,必须进行如下选择: