嵌入式实验介绍

本文摘自:亚嵌技术论坛

嵌入式实验介绍
----- 软件平台介绍
实验环境ADS和Multi ICE
ADS是一个使用方便的集成开发环境,全称是"ARM Developer Suite v1.2 ",它是由ARM公司提供的专门用于ARM相关应用开发和调试的综合性软件.我们在本实验指导书中用到了"CodeWarrior for ARM Developer Suite"和"AXD Debugger"两个部件.
其中CodeWarrior for ARM Developer Suite用于生成和编译工程,AXD Debugger用于下载和调试工程项目.
一,ADSv1.2( ARM Developer Suite v1.2)
Multi-ICE Server是由ARM公司提供的Windows操作系统下ARM JTAG的配置程序.通过它可以使ARM JTAG与目标板建立通讯连接,并能够反馈目标板上ARM处理器的硬件信息.Multi-ICE Server可以适应大多数JTAG仿真器而不需要其它特别的驱动.
这个软件为主机(上位机)和实验板(下位机)之间打建了软件的桥梁(硬件的桥梁就是仿真器).在工程的下载,调试,单步运行中这个软件要始终打开.
二, Multi-ICE Server
ADS介绍
1,打开ADS
点击:桌面-开始-程序-ARM Developer Suite v1.2-CodeWarrior for ARM Developer Suite:
2,打开ADS IDE中的CodeWarrior 编译器,打开拷贝到硬盘的"/assemble"目录下的Assemble.mcp工程文件.
窗体上部1部分是项目类型,点击下箭头出现下面下拉菜单:
其中,Debug是调试类型,Release是发布类型,DebugRel是通用类型,我们选用DebugRel.
3,点击窗口中2按钮打开设置窗口:

设置Target Setting选项组

Linker用于选择使用的连接器,可能取值如下:
ARM Linker:选择ARM连接器armlink连接编译器和汇编器生成的目标文件
ARM Librarian:选择ARM的library工具,将编译器和连接器生成的文件转化为ARM库文件.
None:不使用任何连接器,这时工程项目中文件不会被汇编器和编译器处理.
Pre-Linker:CodeWarrior IDE for ARM当前没有使用本选项
Post-Linker:用于选择对连接器输出的文件的处理方式,可能的取值如下:
None:不进行连接后的处理
Arm fromELF: 使用ARM工具fromELF处理连接器输出的ELF格式的文件,它可以将ELF格式的文件转换成各种二进制文件
Batch File Runner:在连接完成后运行一个dos格式的批处理文件.
Output Directory:用于定义本工程项目的数据目录.工程项目的生成文件存放在该目录中,默认取值为{Project}.

设置Access Paths选项组

User Paths:用于指定用户路径,默认为{Project},是当前工程项目所在的路径.ADS中各种工具在用户路径中搜索以下内容:用户头文件,头文件对应的库文件以及用户的源文件.当用户将某个目录的源文件添加到项目时,该目录自动添加到User Paths中.
System Paths:用于指定系统路径,默认为{compiler}lib和{compiler}include. ADS中各种工具在系统路径中搜索以下内容:C++系统头文件和头文件对应的系统库文件.
Always Search User Paths:用于指定在用户路径下搜索系统头文件.

设置Build Extras选项组

Use modification date caching复选框:如果源文件在CodeWarrior IDE之外被修改, CodeWarrior IDE不检查该修改日期,可以节省编译时间.当使用第三方编译器或处于多用户环境时,不要选择本复选框.
Cache subprojects复选框:选择该复选框可以提高多工程项目时的更新和连接速度,不选择可以节省CodeWarrior IDE需要的存储空间.
Activate Browse复选框:可以产生CodeWarrior IDE需要的浏览器信息
User External debugger复选框:选中该复选框可使用第三方调试器.
Runtime Setting选项组:该选项组当前在CodeWarrior IDE for ARM里没有使用.
设置File Mapping选项组:用于指定特定文件扩展名称所对应的CodeWarrior IDE中内嵌的工具.比如:扩展名.c对应着ARM C语言汇编器.该选项组中的选项确定了CodeWarrior IDE认识哪些扩展名称的文件
设置Source Trees选项组:其中定义的路径名称可以被Access Paths等选项组中的选项使用.
设置ARM Target选项组:
Output Name:选择输出文件名,默认为工程名.
Output Type:选择输出文件种类,默认为ARM连接.

汇编器选项设置:设置ARM Assembler

Target 选项卡设置:
Architecture or Processor下拉列表框:用于选择目标系统中的ARM体系结构版本号或者处理器编号.
Floating Point下拉列表:用于选择系统中浮点部件的体系结构,设置本选项后将使得特定CPU型号所含的浮点部件的体系结构失效.可能取值如下:
FPA Formats and Instructions:选择使用浮点加速器(FPA).
VFPv1 Formats and Instructions:系统中包含硬件的向量浮点运算部件,如ARM10v0,该部件符合vfpv1标准.
VFPv2 Formats and Instructions:系统中包含硬件的向量浮点运算部件,如ARM10v0,该部件符合vfpv2标准.
Old-Style Mixed-Endian softfp:使用软件的浮点运算库,该浮点运算库支持混合的内存模式,可以同时包含big-endian和little-endian.
Pure-Endian softfp:使用软件的浮点运算库,该浮点运算库支持单一的内存模式,要么为big-endian格式,要么为little-endian格式.
VFP with softvfp calling standard:可以支持软件浮点运算库,也支持到硬件VFP的连接.适合在系统中存在Thumb指令,同时包含硬件VFP的场合.
No floating point:不支持浮点运算.
Initial State:决定运行用户程序时,系统的状态是ARM状态还是Thumb状态.设置该选项不能切换系统状态,程序中必须包含进行程序状态切换的代码.
字节单元A+3
字节单元A+2
字节单元A+1
字节单元A
字单元A
31
24 23
16 15
8 7
0
图1 Big-endian格式的存储系统
字节单元A
字节单元A+1
字节单元A+2
字节单元A+3
字单元A
31
24 23
16 15
8 7
0
图2 little-endian格式的存储系统
Byte Order:使用big-endian内存模式还是little-endian内存模式.
big-endian:地址为A的字单元包括字节单元A,A+1,A+2和A+3字节单元由 高位到低位字节顺序为A,A+1,A+2,A+3.
little-endian:地址为A的字单元包括字节单元A,A+1,A+2和A+3字节单元由高位到低位字节顺序为A+3,A+2,A+1,A.

ATPCS 选项卡设置:

设置合适的ATPCS选项可以使汇编器在生成的目标文件中包含相应的属性标识符,这些属性标识符可以供连接器使用
Calling Standard: 指定汇编程序代码是否遵守一定的ATPCS标准.
Predeclare Register Names : 指定汇编器是否认识ATPCS标准中预定义的寄存器名称.
ARM/Thumb interwork:选中,则指定源程序中有ARM和Thumb指令混合使用
ReadOnly Position Independent:选中,则指定源程序是ROPI(只读位置无关),ARMASM默认/noropi.
Read-Write Position Independent:选中,则指定源程序是RWPI(读写位置无关), ARMASM默认/norwpi
Software stack: 有三个单选按钮
On 指定源程序进行软件数据栈限制检查
Off 指定源程序不进行软件数据栈限制检查
Not Applicable 指定源程序既与进行软件数据栈限制检查的程序兼容,也与不进行软件数据栈限制检查的程序兼容

Options 选项卡设置:

Check Register Lists :选中则ARMASM检查指令RLIST,LDM等指令的寄存器列表,保证其按编号由小到大顺序排列,否则产生警告.
No Warning:选中ARMASM不产生警告
Source Line Debug:选中则ARMASM产生DRAWF2 格式的调试信息表
Keep Symbols:选中,则ARMASM将局部符号保留在目标文件的符号表中,供调试器进行调试使用.
Ignore C-Style escape characters : 选中则ARMASM忽略C风格的转义字符如"/n"
Fault long running Load and Store Multiples:选中,则如果指令LDM/STM中的寄存器个数超标, ARMASM将认为该指令错误
Predefines 选项卡设置:可以定义一个全局变量,并可以赋值.
Variable输入全局变量的名称;在Directive下拉列表中选择为该变量赋值的伪操作;Numeric为全局变量赋值
List of predefines 中可以选择已经定义的全局变量

List Control 选项卡设置:

Extras 选项卡设置:

可以设置一个via格式的配置文件,这样各汇编选项的值可以从该文件读入

编译器选项设置:有ARM C,ARM C++,Thumb C和Thumb C++四种编译器,这几种编译器设置方法相同,以ARM C为例介绍.
Target and Source选项卡设置:
Architecture or Processor下拉列表框:用于选择目标系统中的ARM体系结构版本号或者处理器编号.
Floating Point下拉列表:用于选择系统中浮点部件的体系结构,设置本选项后将使得特定CPU型号所含的浮点部件的体系结构失效.取值范围与前面汇编器介绍相同.
Byte Order:使用big-endian内存模式还是little-endian内存模式.
big-endian:地址为A的字单元包括字节单元A,A+1,A+2和A+3字节单元由高位到低位字节顺序为A,A+1,A+2,A+3.
little-endian:地址为A的字单元包括字节单元A,A+1,A+2和A+3字节单元由高位到低位字节顺序为A+3,A+2,A+1,A.
Source Language:确定源文件的类型,可能取值如下:
ANSI/ISO Standard C:指定源程序满足比较严格的ANSI C标准,这时删除了一些语言特性,扩展了一些细小的功能.
Strict ANSI/ISO Standard C:指定源程序满足严格的ANSI C标准.
对于C++编译器来说还有下面三个选项:
ISO/IEC Standard C++:基本满足ISO/IEC C++标准,扩展了一些细小的功能.
Strict ISO/IEC Standard C++:严格满足ISO/IEC C++标准.
Embedded C++:指定源程序满足工业C++标准,即Embedded C++标准. Embedded C++语言是标准C++语言的一个子集,它主要用于嵌入式应用环境,更注重代码执行效率.
连接器选项设置:包括5个选项卡,分别为Output,Option,Layout,Listings和Extras.

Output选项卡:用来控制连接器进行连接操作的类型,可以有三种类型的连接操作,如图为Partial,Simple和Scattered.

Output选项卡

Linktype选项组中的单选按钮确定使用的连接方式.
Partial:连接器执行部分连接操作,部分连接生成ELF格式的目标文件.这些文件可以在作为进行进一步连接时的输入文件,也可以作为armar工具的输入文件.
Simple:连接器根据连接器选项中指定的地址映射方式,生成简单的ELF格式的映像文件,所生成的映像文件关系比较简单.
Scattered:连接器根据scatter格式的文件中指定的地址映射方式,生成地址映射关系比较复杂的ELF格式的映像文件.

当选择Partial连接类型时,需要进行下列连接器选项设置:
Symbol:用于指定一个符号定义文件的名称.符号定义文件是一个文本文件,它的使用方法和使用普通的目标文件相同,将其作为ARM连接器的输入文件.ARM连接器从符号定义文件中提取需要的符号及相关信息,将这些信息加入到输出符号表中.
Symbol editing:用于指定一个符号编辑文件的名称.符号编辑文件是一个文本文件,用于修改输出文件中的输出符号表的内容.符号编辑文件中的命令可以完成隐藏全局符号的操作以及重命名全局符号的操作.

当选择Simple连接类型时,需要进行下列连接器选项设置:
RO Base:用于设置映像文件中RO属性输出段的加载时地址和运行时地址,地址值必须是字对齐的.
RW Base:映像文件中包含RW属性和ZI属性的输出段的运行时域的起始地址,地址是字对齐的.如果没有设置,则RW属性输出段和ZI属性输出段与RO属性输出段共享一个加载时域和一个运行时域.设置该选项后,映像文件包括两个运行时域,一个包含RO属性输出段,另一个包含RW属性输出段和ZI属性输出段.当指定了split选项时,映像文件包括两个加载时域,一个包含RO属性输出段,另一个包含RW属性输出段和ZI属性输出段.
Ropi:选中该复选框,映像文件中RO属性的加载时域和运行时域是位置无关的;如果没有选中,相应的域被标记为绝对的.
Rwpi:选中该复选框,映像文件中RW属性和ZI属性的输出段的加载时域和运行时域是位置无关的;如果没有选中,相应的域被标记为绝对的.
Split:选中该复选框,将包含RW属性和RO属性的输出段的加载时域分割成两个加载时域.
Symbol文本框和Symbol editing文本框:与选择Partial连接类型时相同.

当选择Scatter连接类型时,需要进行下列连接器选项设置:
Scatter文本框:用于指定ARM连接器使用的scatter格式的配置文件的名称.该配置文件是一个文本文件,用于指定映像文件地址映射方式,其中包含了各域及各段的分组和定位信息.
Symbol文本框和Symbol editing文本框:与选择Partial连接类型时相同.

Option选项卡:各选项含义及用法如下:
Remove unused sections:可以删除映像文件中没有使用的段.Read-only,Read-Write和Zero-initial分别表示可以删除的未使用的段的属性.
Include debugging information:选中该复选框,在输出文件中包含调试信息.这些调试信息包括调试信息输入段,符号表以及字符串表.
Search standard libraries:选中该复选框,ARM连接器扫描默认的C/C++运行时的库,以解析各目标文件中被引用的符号.
Use ARMLIB to find libraries :选中该复选框,连接器使用ARMLIB环境变量定义的路径搜索C运行时库,而不使用Target setting面板中的Access Paths选项组中定义的搜索路径.
Output local symbols :选中该复选框,ARM连接器在生成映像文件时,将局部符号也保存到输出符号表中.
Give progress information while linking :选中该复选框,ARM连接器在进行连接时显示进度信息.
Report might fail conditions as errors :选中该复选框,ARM汇编器将可能造成错误的条件作为错误信息,而不是警告信息
Image entry point:该选项组用于指定映像文件中的初始入口点的地址值.一个映像文件可以包括多个普通入口点,但是初始入口点只能有一个.当映像文件被一个加载程序加载时,加载程序将跳转到该初始入口点处执行.

Option选项卡如下:

Layout选项卡:在连接方式为Simple时有效,用来安排一些输入段在映像文件中的位置.
Place at beginning of image:指定将某个输入段放置在它所在的运行时域的开头.有下面两种方法来指定一个输入段:
在Object/Symbol文本框中指定一个符号名称.这时定义本符号的输入段被指定.
在Object/Symbol文本框中指定一个目标文件名称,在Section文本框中指定一个输入段名称,从而确定一个输入段作为指定的输入段.
Place at end of image:用于指定将某个输入段放置在它所在的执行时域的结尾.指定一个输入段的两种方法与Place at beginning of image选项组中相同.

Layout选项卡如下:

Listings选项卡:主要用于设置与输出连接器信息相关的选项.

Listings选项组:用于控制与输出连接器生成列表文件的情况.
Image map:选中该复选框,连接器产生一个关于映像文件的信息图,包括各运行时域,加载时域和映像文件中各输入段的起始地址和大小.
Symbols :选中该复选框,连接器列出连接过程中的局部和全局符号及其数值,包括连接器产生的符号
Mangled C++ :选中该复选框,连接器在诊断信息和连接选项-xref,-xreffrom,-xrefto,-symbol产生的列表中显示mangled的C++符号名称.
Section cross-reference: :选中该复选框,连接器列出所有输入段间的交叉引用.
List file:文本框用于指定列表文件名称及路径.
Static call graph:选中该复选框,连接器显示程序间的调用关系.
Give Information on选项组:用于控制连接器显示有关映像文件的信息.
Sizes :选中该复选框,连接器列出映像文件中各输入目标文件和使用到的库文件的大小.
Totals :选中该复选框,连接器列出映像文件中各输入目标文件和使用到的库文件的尺寸的总合.
Unused :选中该复选框,连接器列出被删除的没有被使用的输入段信息.
Veneers :选中该复选框,连接器列出生成的veneers的信息.

Layout选项卡如下:

Extras选项卡:可以设置一个via格式的配置文件,其他汇编选项可以从该配置文件中读入.还可以定义一个符号,用于替代其他所有未被定义的符号.
Make undefined symbols refer to:在该文本框输入一个已经定义的全局符号,用来代替映像文件中所有未定义的符号.ARM连接器在进行连接操作时,将所有未被解析的符号引用指向符号symbol.这种做法在自顶而下的设计中非常有用.在这种情况下使用本连接选项,可以连接部分实现的系统.
Via file name:在文本框中选择一个via格式的文件.Via格式的文件中包含了ARM连接器各命令行的选项,ARM连接器可以从该文件中读取相应的连接器命令行选项.这在限制命令行长度的操作系统中非常有用.
Extras选项卡如下:

fromELF工具的选项设置:可以将ARM连接器产生的ELF格式的映像文件转换成其他格式的文件.
Output format下拉列表框用于选择目标文件的格式.可能取值为:
Executable AIF:可执行的AIF格式的映像文件.
Non executable AIF:非可执行的AIF格式的映像文件.
Plain binary :BIN格式映像文件.
Intellec Hex :IHF格式映像文件.
Motorola 32 bit Hex: Motorola 32位S格式映像文件.
Intel 32 bit Hex: Intel 32位格式映像文件.
Verilog Hex: Verilog十六进制映像文件.
ELF格式
Text information文本信息
Output file name:设置fromELF工具的输出文件的名称.
Text format flags:用于置控制文本信息内容.
Verbose:连接器显示关于本次连接操作的详细信息.
Disassemble code:连接器显示反汇编代码.
Print contents of data sections:连接器显示数据段信息.
Print debug table:连接器显示调试表信息.
Print relocation information:连接器显示重定位信息.
Print symbol table:连接器显示符号表.
Print string table:连接器显示字符串表.
Print object sizes:连接器显示目标文件大小信息
.
窗口中按钮3是链接按钮,也可以直接点击下面窗口中源文件前的部分,将源文件与工程建立联系.一般应该全部选择.
按钮4是"生成"按钮,将弹出下面的窗口.其中左上角第一个圆内表示程序中的错误数,必须错误数为0才可以正确编译.第二个圆内表示警告,提示程序中可能存在的错误或不合理的问题.下面的窗口列出了具体错误的位置,类型和错误的可能原因,同时列出了项目的一些数据.将其修改并保存,从新编译直至没有错误为止.
 

更多详情咨询:www.akaedu.org

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值