DS-5中将项目从Arm编译器5迁移到Arm编译器6

准备:

  • 下载并安装DS-5软件并且需要有DS-5 Ultimate的授权

链接:https://pan.baidu.com/s/1G6hP4P5hy1ns5Y09609SiQ 
提取码:bt7u 

一、功能验证操作步骤

  1. 打开DS-5软件

DS-5中将项目从Arm编译器5迁移到Arm编译器6

    2. 如果显示的是Welcome窗口将它关闭。然后点击Windows >> Show View >> Project Explorer将Project Explorer窗口打开。

DS-5中将项目从Arm编译器5迁移到Arm编译器6

3.  点击File >> Import导入工程例程

DS-5中将项目从Arm编译器5迁移到Arm编译器6

DS-5中将项目从Arm编译器5迁移到Arm编译器6

4. 选择fireworks A9-FVP_AC5例程

DS-5中将项目从Arm编译器5迁移到Arm编译器6

5. 在Project Explorer窗口中选中fireworks A9-FVP_AC5工程。单击右键选择Build Project对例程进行编译以查看例程是否有错误。

DS-5中将项目从Arm编译器5迁移到Arm编译器6

6. 因为此例程中自带了makefile文件,所以我们需要取消勾选工程属性中“Generate Makefiles automatically”,并删除Build directory栏中“/Debug”。

DS-5中将项目从Arm编译器5迁移到Arm编译器6

7. 点击OK保存设置,并重新编译工程

  • 在Project Exporer窗口中点开fireworks A9-FVP_AC5工程目录可以看到3个.launch文件。这3个文件是FVP的加载文件描述了所使用的FVP的类型(内核类型、内核数量)等信息,这些设置可以通过Debug Configurations窗口来完成。
  • 选中其中一个.launch文件右键选择Debug As >> firework_AC5-Cortex-A9x1-FVP

DS-5中将项目从Arm编译器5迁移到Arm编译器6

8. 稍等片刻,DS-5会加载相关的FVP,程序会在main函数开头处停止。然后会出现如下界面

DS-5中将项目从Arm编译器5迁移到Arm编译器6

9. 点击Continue按钮运行程序

DS-5中将项目从Arm编译器5迁移到Arm编译器6

10. 效果如下:

DS-5中将项目从Arm编译器5迁移到Arm编译器6

二、切换编译器

  1. 在Project Exporer窗口中选中firework_A9-FVP_AC5工程,右键选择Properties。在打开的窗口中选择C/C++ Build >> Tool Chain Editor。然后在Current toolchain中选择Arm Compiler 6

DS-5中将项目从Arm编译器5迁移到Arm编译器6

2. 重新编译工程会出现如下错误,这是因为我们的工程用的是makefile文件进行编译,我们刚才只是修改了编译器而没有对makefile文件进行修改。

DS-5中将项目从Arm编译器5迁移到Arm编译器6

3. 双击工程中的makefile文件打开并按照以下修改它

  • 修改编译器:将CC = armcc CC = armclang
  • 修改编译选项:

将以下内容:

DEPEND_FLAGS = [email protected] --depend_format=unix_escaped

CFLAGS = --cpu=$(CPU) $(DEBUG_FLAGS) --$(CODE_TYPE) -O$(OPT_LEVEL) -O$(OPT_FOR) $(DEFINES) $(INCLUDES) $(DEPEND_FLAGS) --no_depend_system_headers $(SUPPRESS)

AFLAGS = --cpu=$(CPU) $(DEBUG_FLAGS) --apcs=/interwork $(DEPEND_FLAGS) $(SUPPRESS)

修改为:

DEPEND_CFLAGS = -MF [email protected]

DEPEND_AFLAGS = [email protected] --depend_format=unix_escaped

CFLAGS = --target=arm-arm-none-eabi -m$(CODE_TYPE) $(DEBUG_FLAGS) -O$(OPT_LEVEL) -mcpu=$(CPU) $(DEFINES) $(INCLUDES) $(DEPEND_CFLAGS) -MMD $(SUPPRESS)

AFLAGS = --cpu=$(CPU) $(DEBUG_FLAGS) --apcs=/interwork $(DEPEND_AFLAGS) $(SUPPRESS)                         

DS-5中将项目从Arm编译器5迁移到Arm编译器6

4. 修改代码

  • 修改main.c文件中的main函数。将main函数前面的void改为int。在main.c文件开头添加arm_compat.h头文件

DS-5中将项目从Arm编译器5迁移到Arm编译器6

DS-5中将项目从Arm编译器5迁移到Arm编译器6

5. 修改retarget.c文件将

#pragma import(__use_no_semihosting)

替换为:

asm(".global __use_no_semihosting");

6. 保存修改过的文件,然后重新编译工程

DS-5中将项目从Arm编译器5迁移到Arm编译器6

7. 运行程序查看效果:

DS-5中将项目从Arm编译器5迁移到Arm编译器6