项目ADS开发环境入门指南.docx

上传人:b****7 文档编号:23382806 上传时间:2023-05-16 格式:DOCX 页数:14 大小:304.72KB
下载 相关 举报
项目ADS开发环境入门指南.docx_第1页
第1页 / 共14页
项目ADS开发环境入门指南.docx_第2页
第2页 / 共14页
项目ADS开发环境入门指南.docx_第3页
第3页 / 共14页
项目ADS开发环境入门指南.docx_第4页
第4页 / 共14页
项目ADS开发环境入门指南.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

项目ADS开发环境入门指南.docx

《项目ADS开发环境入门指南.docx》由会员分享,可在线阅读,更多相关《项目ADS开发环境入门指南.docx(14页珍藏版)》请在冰豆网上搜索。

项目ADS开发环境入门指南.docx

项目ADS开发环境入门指南

615项目ADS开发环境入门指南

所属项目

615项目

编写时间

2013.06.21

版本号

V1.0

审核时间

编写者

蒋永刚

批准时间

一、ADS简介

ADS是ARM公司官方发布的开发环境,目前已经停止更新,最新支持ARM11内核。

ADS相对其他第三方开发环境,代码优化和稳定性比更好,支持比较多的仿真工具,但是不支持gcc格式的汇编语言。

二、新建工程

点击菜单File->New,出现新建对话框。

新建对话框中可以选择新建工程、文件和其他对象。

在新建工程页面中,第一项表示工程最终生成一个可执行的文件,第二项表示生成的是静态库,一般来说使用最多的是前两项。

ADS也可以导入makefile类型的工程(典型的如gcc工程),使用第四项选项进行导入,但导入之后,需要修改makefile,使用ADS的编译工具链代替原先的编译工具。

同时,正如第一章所说,导入gcc工程之后,所有的汇编语言文件需要进行修改才能在ADS下进行编译。

具体移植的方法,见附录。

在右方输入projectname,就可以在指定目录下建立工程目录。

接下来就是往工程中添加文件了。

三、添加文件

新建工程后,主页面里有三个选项卡:

Files,LinkOrder和Targets。

在Filet选项卡空白处右键,会弹出菜单

第一个菜单项用来加入已经存在的源代码文件,可以一次加入多个文件;第二个菜单项用于建立目录,在工程文件比较多的时候,使用不同的目录可以方便管理。

另外,还可以用点击左上角“新建”快捷按钮

直接新建一个空白文档,并编写代码保存在工程目录下,然后使用上面的方式添加到工程中。

四、配置工程属性

将主选项卡切换到Tatgets页。

ADS默认的工程有三个Targets配置可选,Release是发布版本,不包含调试信息,生成的程序文件较小;Debug是调试版本,包含很多调试信息,生成的程序文件较大;DebugRel则是比较灵活的方式。

三个Targets图标前面的黑色→表示这是目前编译和生成的配置。

要切换Tatgets,在选项卡上方的下拉列表框中进行操作。

选择了Tatgets的之后,需要对它进行配置。

双击想要配置的Tatgets,弹出配置对话框。

对话框里左边列表中有很多配置选项,但并不是所有都需要配置,一般来说,ARMAssembler、ARMCCompiler、ARMC++Complier、ARMLinker、ARMDebugger都是要配置的,而TatgetSettings、ARMfromELF这两个会根据需要进行配置。

4.1TargetSettings

一般不需要修改,如果需要生成bin文件或者elf文件时,将Post-linker下拉列表选为ARMfromELF。

4.2ARMfromELF

和4.1相对应的,一般情况下不需要修改,如果需要生成bin文件或者elf文件时,在OutputFormat中选择相应的格式,在Outputfilename中填写文件名。

4.3ARMAssembler/ARMCCompiler/ARMC++Complier

这三个配置比较相似,以ARMCCompiler为例说明。

配置页面有多个选项卡,一般需要配置的是TatgetandSource、Debug/Opt两个选项卡。

在TatgetandSource选项卡下,ArchitectureorProcessor指定ARM核心版本,FloatingPoint选择浮点类型;在Debug/Opt选项卡下,Optimizationlevel指定优化级别,Minimum选项不进行优化,在调试时的代码可读性最强;All选项进行最大程度优化,一般调试时就没办法根据源代码来调了;Most是两者均衡。

我建议调试时使用Minimum,待发布时再改用All。

它旁边的选项,用于决定是对空间还是时间加以优化,根据需求选择吧。

4.4ARMlinker

ARMlinker配置对话框,用于配置可执行文件的链接,如果生成的是静态库的话就不用配置。

它也有多个选项卡,一般要修改的是Output和Listings两个。

Output选项卡是配置链接选项。

Linktype选择链接的类型,Partie是分段链接,Simple是最简单的链接方式,即所有段都放到一块;Scattered是根据scf脚本文件进行链接。

一般来说,简单的工程,如所有代码都加载到SRAM,并且只用到SRAM地址空间的,可以选择simple,设置好ROBase,即可执行文件的起始地址,RWBase,即数据段的起始地址即可。

而稍微复杂点的工程,推荐使用scf脚本文件。

Listings选项卡中是选择符号列表,即显示链接时变量、数据结构、函数等的链接地址信息,各个段的信息等。

4.5ARMDebugger

ARMDebugger配置对话框用于配置调试时的选项。

一般来说,这里只需要修改一个地方:

EquivalentCommandLine。

在这里,将启动调试时的命令行代码变成axd-nologo-script..\..\DebugSetting.txt,这样每次启动调试,都会运行名为DebugSetting.txt的调试脚本。

这个脚本可以在程序运行之前,对下位机平台做一些初始化的动作,比如初始化时钟、SDRAM等。

对于调试脚本的详细介绍见本文第六节。

五、链接脚本

ADS的链接脚本是scf后缀的文本文件,名字叫scatter,意思是分散加载描述文件。

一个简单的scf的例子如下:

ROM_LOAD0xE0000004

{

ROM_EXEC0xE0000004

{

init.o(STARTUP,+FIRST)

*(+RO)

}

IRAM_DATA0x08000000

{

*(+RW)

}

IRAM_ZI+0

{

*(+ZI)

}

}

Scatter脚本文件由区组成,主要分为三种区:

加载区、执行区和输入区。

一般scatter文件中只用到加载区和执行区。

每个区由一对“{}”包起来,一个区的简单定义如下:

名称地址长度

{

内容

}

在scatter文件最外层的区是加载区,执行区一般包含在加载区内部。

加载区的地址是本区内所有执行区的加载地址,执行区的地址是该区的执行地址。

名称是用户自定义的字符串符号,这个符号可以在程序中引用。

例如对于名称为IRAM_DATA的执行区,经过ADS编译后,会产生一些变量,依次表示IRAM_DATA区的加载地址、运行地址和长度。

在汇编语言里,这三个变量名为|Load$$IRAM_DATA$$Base|、|Image$$IRAM_DATA$$Base|和|Image$$IRAM_DATA$$Limit|,可以用以下方法加以引用:

IMPORT|Load$$IRAM_DATA$$Base|

LDRr0,=|Load$$IRAM_DATA$$Base|

在C语言里,这三个变量名为|oad$$IRAM_DATA$$Base、Image$$IRAM_DATA$$Base、Image$$IRAM_DATA$$Limit,可以用以下方法加以引用:

externunsignedcharImage$$ROM_EXEC$$Base;

unsignedint*dst=(unsignedint*)&Image$$IRAM$$Base;

注:

使用变量时,要对变量取地址,而不是直接取值。

执行区地址+0表示地址紧接着上面的段。

长度如果不加以指定,则以实际链接时为准。

内容是指定哪些段(伪指令section,AREA定义)该放到这个执行区中。

一般来讲,代码段(包括代码和const型变量)用*(+RO)表示,数据段(包含所有定义了初始值的变量)用*(+RW)表示,末初始化变量段用*(+ZI)表示。

六、调试脚本

ADS的调试脚本是一个文本文件,下面以一个简单的调试脚本为例,解析脚本文件的简单应用。

Setmem0x400280100x4000000032

Setmem0x400280040x4000000432

Setmem0x4002802c0x0000002832

memory0x8000c000

Ldkickstart_nor_boot_nand.axf

这是一个简单的脚本文件例子,整个脚本只有三种语句:

Setmem,memory和ld。

Setmem是写地址,memory是读地址,ld是开始执行调试镜像。

Setmem的语法是setmem地址值字长。

地址和值都是16进制数,字长是指写入的位数,32指32位,即4个字节。

Memory的语法是memory地址,用于将该地址的值显示出来。

Ld的语法是ld文件名,用于启动需要调试的镜像,这个镜像是ADS编译后产生的axd调试文件。

七、仿真器安装配置

周立功的AK100仿真器是ARM平台在线仿真器,最高支持ARM11核心,支持ADSAXD仿真协议。

要使用ADS+AK100进行在线调试,需要经过两个步骤:

仿真器驱动安装和AXD目标配置。

7.1仿真器程驱动安装

运行TKScopeSetup_ARM.EXE和vcredist_x86_cn_XP.exe,这两个是AK100的主程序。

安装之后,记住安装路径,在这里记为TKSCOPE。

将AK100仿真器通过USB连接到PC,此时跳出找到新硬件的对话框,选择手动安装,并且指定搜索目录。

将搜索目录定位到TKSCOPE\TKScope\Driver\AK100Driver\WinXP,然后系统会自动安装好AK100仿真器的USB驱动。

7.2AXD目标配置

AK100的驱动安装完成之后,点击快捷按键中的Debug

,ADS会调用AXD进行在线调试。

AXD初次运行会弹出错误提示:

这时候选择Configure,弹出仿真驱动对话框:

点击Add按钮,选择TKSCOPE\TKScope目录下的TKSCP_DRV_for_RDI.dll

然后点击Configure按键,弹出配置目标对话框:

先点击硬件选择,往下拉,选择NXP->LPC2387->AK100;再点击硬件自检,如果自检都通过,则说明配置成功,点击确定返回,再次点击确定,然后关闭AXD,重新在ADS里启动调试就可以开始正常调试了。

八、AXD调试工具

AXD是ADS配套的在线调试工具,界面比较简陋,但是功能还是非常强大的。

AXD的主界面如上图所示。

AXD初始显示的界面是上图是不一样的,但可以通过配置来自定义界面的元素。

这些是AXD常用的快捷按键。

是显示寄存器,

是查看特定变量值,

是查看当前堆栈下的变量和全局变量,

是查看函数调用栈,

是显示内存,

是显示工程中的文件,

是显示Log,

是命令行,

是添加和删除断点,

是调试动作,分别表示直接运行,暂停,单步进入,单步跳过,跳到函数外,执行到当前位置。

在上图的右键菜单中有一项InterleaveDisassembly,是在代码中显示汇编语言,即源代码每行编译的结果,一般可以去掉不看。

附:

GCC汇编向ARM汇编移植入门

1.注释的修改,gcc格式和c语言习惯一样,而ARM汇编则是用;来实现的,需要全部变掉。

2.段的定义,gcc中使用.code,.section等定义,而在ARM的定义方式如下:

CODE32

GLOBAL_start

AREAvectors,CODE,READONLY

ENTRY

3.代码标志,在gcc中是类似

_armboot_start:

这样的代码,但是在ARM汇编中变成了

_ARMBOOT

这样的,去掉了冒号,注意没有缩进。

一般代码是有缩进的。

4.一些伪代码,比如变量定义,gcc中是.word,而ARM汇编里是DCD,宏定义在gcc中是#define,而ARM汇编中则用EQU代替,声明外部变量,gcc是.globle,ARM汇编中使用GLOBAL,或者IMPORT关键字。

5.gcc汇编中使用#include可以包含C语言格式的头文件,虽然arm汇编中也有类似关键字GET,但是它是不兼容C语言格式的变量和宏定义的,因此需要修改相应的定义方式。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工作范文 > 行政公文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1