ARM_DS 工程创建教程
Last updated on May 20, 2023 pm
注:本文主要内容参考了 “Arm® Development Studio Getting Started Guide” chapter 9,如有疏漏欢迎指正。
前言
首先来看官方手册对 ARM_DS 是定义:
Arm® Development Studio是一种专业的软件开发解决方案,适用于裸机嵌入式系统和基于Linux的系统。它涵盖了从引导代码和内核移植到应用程序和裸机调试的所有开发阶段,包括性能分析。
它包括以下内容:
Arm Compiler for Embedded 6 工具链。
构建嵌入式和裸机嵌入式应用程序。
Arm Debugger
一款支持Arm处理器和Fixed Virtual Platform (FVP)目标上的软件开发的图形化调试器。
Fixed Virtual Platform (FVP)目标
针对Armv6-M、Armv7-A/R/M和Armv8-A/R/M架构的单核和多核模拟模型。这些模型使您能够在没有任何硬件的情况下开发软件。
Arm Streamline
一款图形化性能分析工具,可以将抽样数据和系统跟踪转换为报告,以可视化和统计的形式呈现数据。
Graphics Analyzer
Graphics Analyzer允许图形开发人员跟踪其应用程序中的OpenGL ES、Vulkan和OpenCL API调用。
简单来说 ARM_DS 就是 ARM 自己推出的 IDE 工具,和 CCS / IAR 类似,同样也是基于 Eclipse 所开发。
工程创建
环境: Windows 版本:ADS IDE 2022.1
以创建 C/C++ 工程为例,建议工程先在 Visual Studio 中测试代码是否能正常运行。
导入源码
File > Import > Project from Folder or Archive
Directory > select your C project archived file
导入 VS 源码之后,便可以在左侧边框栏看到你刚刚导入的 VS 工程文件
工程配置
导入代码之后,我们需要对项目进行相关设置,将 VS 工程设置为 ADS 工程,这样才能使工程跑起来。
右键创建的工程 > Properties
里面的所有设置根据你的需求设置即可。
如果设置完成之后,最后编译不通过,那可能是你没有对头文件进行设置(如果你的 VS 工程使用的是绝对路径)。那么这时你需要在 “Includes” 中修改相应的头文件路径,注意“Arm C Compiler 6” 和 “ARM Assembler 6” 都需进行修改。
Debug session 配置
In Arm® Development Studio, you confifigure a debug session with the New Debug Connection wizard. This wizard enables you to connect to your target.
在编译通过之后,我们还需配置链接模型(Model Connection)。这一步是最关键的一部, Fixed Virtual Platform (FVP)
下文将引导配置一个裸机模型连接,连接到一个 Cortex®-A35 固定虚拟平台 (FVP),前面创建的项目。这一步的目的是在 Arm Development Studio 中配置连接到 FVP 的调试会话,以便进行裸机应用程序调试。
- 创建一个 .ds 脚本文件,让 Fixed Virtual Platform (FVP) 处理半主机(semihosting),而不是让 Arm Debugger 处理。在 Arm Development Studio 中,可以使用以下步骤创建这样一个脚本文件:
- 从主菜单中选择 “File > New > Other…”;
- 在 “New” 对话框中,选择 “Arm Debugger > Arm Debugger Script”,然后点击 “Next”;
- 点击 “Workspace…”,选择 “HelloWorld” 项目作为这个脚本文件的位置,然后点击 “OK”;
- 在 “File Name” 字段中,命名这个脚本文件为 “use_model_semihosting”,然后点击 “Finish” 按钮。这将打开一个空的编辑器窗口。
- 在编辑器窗口中添加以下代码,并按 “Ctrl + S” 保存:
1 |
|
从主菜单,select File > New > Model Connection
在 “Model Connection” 对话框中,指定连接的详细信息:
为调试连接输入一个名称,例如 “HelloWorld_FVP”;
选择 “Associate debug connection with an existing project”,并选择在上一节 “Build your project” 中创建和构建的项目。
点击 “Next” 按钮。
在 “Target Selection” 对话窗口中,指定 tagert
选择 Arm FVP (Installed with Arm DS) > Base_A53x1;
点击 “Finish”
- 在 “Edit Configuration” 对话框中,确保选择了正确的目标设备,指定了适当的应用程序文件,并且调试器知道从哪里开始进行调试:
- 在 “Connection” 选项卡下,确保选择了 “Arm FVP (Installed with Arm DS) > Base_A53x1 > Bare Metal Debug > Cortex-A53”;
- 在 “Bare Metal Debug” 中,在 “Model parameters” 字段中添加以下参数:
1 |
|
这个参数的作用是禁用安全内存保护,以便在调试过程中能够访问内存。
选择“Target Configuration > Application on host to download > Workspace”;
点击并展开“HelloWorld”项目,在“Debug”文件夹中选择“HelloWorld.axf”,然后点击“OK”按钮;
选择 “Debug from symbol”;
启用 “Run target initialization debugger script (.ds/.py)” 选项,并点击 “Workspace…”按钮。;
选择 “use_model_semihosting.ds” 脚本文件,然后点击“OK”按钮。
这些操作将指定在开始调试会话时运行的脚本文件,并确保 FVP 处理半主机操作。
- 点击“Debug”按钮,将应用程序加载到目标设备上,并将调试信息加载到调试器中。这将启动调试会话,并将您带入调试器的界面中。在调试器中,可以通过设置断点、单步执行和查看变量等操作来调试应用程序。
以下是调试器的相关说明:
Trace 调式工具
在 ADS 中,同样有相当丰富的调试工具供我们使用。在 debug session 中可以通过 Trace 查看所有被执行的指令情况。
在使用 Trace 跟踪程序之前,我们需要先进行相关配置以开启 Trace。
开启过程如下图:
至此,我们边成功开启了 Trace,愉快地 debug 吧。
套壳创建工程
在 ADS 工程配置过程中,稍有不慎都会导致整个工程无法正常编译运行。如果在排除所有配置之后工程仍然无法正常运行,那么我们可以采取套壳的方法进行工程创建。
所谓套壳,这里的壳就是 ADS 中的例程工程。例程毋庸置疑是能够正常运行,所有我们需要做的就是将壳内的程序替换为我们的代码即可。
套壳的原则:选择我们需要的内核例程,不要例程中的删除启动文件。
以下是一个套壳的流程:
- Import 例程;
导入例程之后,删除例程中不需要的应用层源码(也可以不删除,注释掉程序入口函数就行);
导入我们的工程源码;
- 上述操作完毕后,请进行编译测试。
建立工程间的代码连接
对于一份源码,我们常常需要建立 VS 工程(验证程序正确性),IAR工程(看 Profile)和 ADS(对 arm有更好的支持)工程。在这种情况下,如果对于工程源码很大的情况下,拷贝相同的代码来创建工程这就会变得十分冗余,且各工程间的修改并不同步。
所以在 ADS 中,我们就需要使用下面的方法来避免上述情况。
这一步是发生在导入文件的过程中,在导入源码文件时我们需要点击下方的 “Create links in workspace”,以此来建立 ADS 工程对源码的链接。如此之后,ADS 共在其 workspace 中创建与源码相同的源码文件目录,但其中并无文件。因为 “Create links in workspace” 已将代码连接到我们原始代码文件夹中。
这样我们既减小了由于创建多个工程造成的代码冗余,又避免了多个工程中的代码不同步的情况。
可以看到下图中的目录为,源码工程文件夹下的目录文件。同时其中包含了 IAR、VS、ADS 等工程文件。