ADS12集成开发环境使用手记精.docx
- 文档编号:12072321
- 上传时间:2023-04-16
- 格式:DOCX
- 页数:8
- 大小:20.10KB
ADS12集成开发环境使用手记精.docx
《ADS12集成开发环境使用手记精.docx》由会员分享,可在线阅读,更多相关《ADS12集成开发环境使用手记精.docx(8页珍藏版)》请在冰豆网上搜索。
ADS12集成开发环境使用手记精
ADS1.2集成开发环境使用手记收藏
集成环境:
-ADS1.2
(下载地址:
三、正文。
本节通过一个简单的具体实例,介绍如何使用ADS集成开发环境。
包括如何创建一个
新的工程,如何配置编译选项,并编译生成可以直接烧写到Flash中的bin格式二进制可执
行文件和用于JLINK仿真调试的axf文件。
1.建立一个工程
在ADS集成开发环境中,点File->New,打开如图所示窗口:
[attachment=492]
可以看到有7种工程类型可以选择:
ARMExcuteableImage:
用于由ARM指令的代码生成一个ELF格式的可以执行映象文件。
ARMObjectLibrary:
用于由ARM指令的代码生成一个armar格式的目标文件库。
EmptyProject:
用于创建一个不包含任何库或者源文件的工程。
MakefileImporterWizard:
用于将VisualC的nmake或者GNUmake文件转入到CodeWarrior
IDE工程文件。
ThumbARMExcutableImage:
用于由ARM指令和Thumb指令的混和代码生成一个可执行
的ELF格式的映象文件。
ThumbExcutableimage:
用于由Thumb指令创建一个可执行的ELF格式的映象文件。
ThumbObjectLibrary:
用于由Thumb指令的代码生成一个armar格式的目标文件库。
我们在这里选择ARMExecutableImage,在“Projectname:
”中输入工程文件名,本例为“test”,点击“Location:
”文本框的“Set”按钮,浏览选择想要保存该工程的路径(本
例为“D:
\test”,将这些设置好之后,点击“确定”,即可创建一个新的名为test的工程。
这个时候会出现test.mcp窗口,如图所示,同时会在“D:
\Backup\我的文档\MCU\ARM9\STUDY\点灯_汇编\学习\”目录下创
建一个工程目录test,而test.mcp会出现在“D:
\test\test”目录中。
[attachment=494]
[attachment=494]
2.添加代码。
这里我们就不编写源代码了,我选择了开发板测试用的源代码。
该源代
码已经被拷贝到本文档附带的文件夹里。
分别是inc、LCD、src、usb四个文件夹。
如下图:
[attachment=495]
然后在test.mcp项目窗口中,点鼠标右键或者ADS菜单Project->AddFiles…,如图开始
添加该项目索需要的源代码。
[attachment=496]
你也可以直接把文件夹拖进test.mcp项目窗口中(建议。
如果在点鼠标右键或者ADS菜单Project->AddFiles…添加代码过程中,如果出现一个错误对话框,可以不用理会,原因是你添加了一个不需要添加的代码,在这里不讨论代码,就不详细解释原因了,直接拖拽文件夹不会有这个错误,所以建议大家还是直接拖拽文件夹比较好。
错误对话框如图:
[attachment=497]
在添加完代码之后,会弹出这个对话框:
[attachment=525]
这里请注意,我们在新建一个工程时,ADS默认的target时DebugRel,另外还有两个可用
的target,分别为Realse和Debug,它们的含义分别为:
DebugRel:
使用该目标选项,在生成目标的时候,会为每一个源文件生成调试信息。
Debug:
使用该目标选项,在生成目标的时候,会为每一个源代码生成最完整的调试信息。
Release:
使用该目标选项,在生成目标的时候,不会生成任何调试信息。
在本例中,我们使用默认的DebugRel选项。
点去Realse和Debug两个选项。
如图:
[attachment=498]
完成添加代码后如图所示:
[attachment=499]
[attachment=500]
[attachment=501]
[attachment=502]
[attachment=503]
到目前为止,一个完整的工程就已经建立了,下面我们开始对该工程进行编译和链接的配置3.配置。
在进行编译和链接之前,首先需要对生成的目标进行配置,点Edit菜单,选择“DebugRelSetting…”(注意:
这个选项会因为用户选择的不同目标而有所不同,出现如图:
[attachment=504]
所示的设置窗口。
这里的设置有很多,我们主要介绍最常用的一些选项。
·TargetSetting
TargetName:
文本框显示了当前的目标设置。
Linker:
选项为用户提供了要使用的链接器,在这里选择默认的ARMLinker,使用该链接器,
将使用armlink链接编译器和汇编器生成相应的工程目标文件。
在Linker设置中,还有两个
可选项,None代表不对生成的各个源代码目标文件进行链接,ARMLibrarian表示将编译
或者汇编得到的目标文件转换为ARM库文件,对于本例,使用默认的链接器ARMLinker。
Pre-Linker:
目前ADS并不支持该选项。
Post-Linker:
选择在链接完成后,还要对输出文件进行的操作。
因为在本例中,希望生成一
个可以烧写到Flash中去的二进制代码,所以在此选择ARMfromELF,表示在链接生成映象
文件后,再调用fromELF命令将含有调试信息的ELF格式的映象文件转换为其他格式的文
件。
TargetSetting选择最后设置如图所示:
[attachment=505]
·LanguageSettings
因为在本例中包含汇编代码,所有要用到汇编器,点接选择ARMAssembler,在右侧出
现相应的设置选项,在ADS集成开发环境中用的汇编器是armasm,默认的ARM体系结构
是ARM7TDMI,在此要改为ARM920T(不同的CPU,这个选项是不同的,字节顺序默认
是小端模式,其他设置,采用默认值即可,如图所示:
本例中还包含了C语言代码,因此还需要设置ARMCCompiler选项,点接选择ARMCCompiler,在右侧出现相应的设置选项,在ADS集成开发环境中用的汇编器是armcc,默认
的ARM体系结构是ARM7TDMI,在此要改为ARM920T(不同的CPU,这个选项是不同的,
字节顺序默认是小端模式,其他设置,采用默认值即可,如图所示:
[attachment=526]
细心的读者可能会注意到,在设置框的右下脚,当对某项设置进行了修改,该行中的某个选项就会发生相应的改动,实际上,这行文字显示的就是相应的编译或者链接选项,由于有了CodeWarrior,开发人员可以不用再去产科繁多的命令行选项,只要在界面中选择或者撤销某个选项,软件就会自动生成相应的代码,该命令框为习惯在DOS下键入命令行的用户提供了极大的方便。
·Linker设置
提示:
如果您对ADS设置不熟悉,直接跳过说明,按照图片设置即可,以下部分仅供参考。
点接选择ARMLinker,在右侧出现相应的设置选项,我们在此详细介绍这些设置框,
因为这些选项对最终生成的文件有着直接的影响。
在标签Output中,Linktype中提供了三种链接方式。
Partial方式表示链接器只进行部分链接,经过部分链接生成的目标文件,可以作为以后进一步链接时的输入文件。
Simple方式是默认的链接方式,也是最为频繁使用的链接方式,它链接生成简单的ELF格式的目标文件,使用的是链接器中指定的地址映象方式。
Scattered方式使得链接器要根据scatter格式文件指定的地址映象,生成复杂的ELF格式
的
映象文件,这个选项一般很少用到。
[attachment=527]
[attachment=528]
在本例中,我们选择使用Simple方式,这里有一些设置:
ROBase:
这个文本框设置包含RO段的加载域和运行域为同一个地址,默认是0x8000。
这里用户要根据自己的硬件实际SDRAM地址空间来修改这个地址,保证这里填写的地址,
是程序运行时,SDRAM地址空间所能到达的范围,针对本目标板,SDRAM的空间范围
是0x3000000-0x34000000,因此这里设置为0x30000000。
RWBase:
这个文本框设置了包含RW和ZI输出段的运行域地址。
如果选中split选项,链接器生成的映象文件将包含两个加载域和两个运行域,此时在RWBase中所输入的地址为包含RW和ZI输出段的域设置了加载域和运行域地址(这里很关键,在以后的文档中会说明的。
Ropi:
选中这个设置将告诉链接器使包含有RO输出段的运行域位置无关。
使用这个选项,链接器将保证下面的操作:
检查各段时间的重寻址是否有效;确保任何由armlink自身生成的代码是只读位置无关的。
Rwpi:
选中该选项将会告诉链接器使包含RW和ZI输出段的运行域无关。
如果这个选项没有被选中,域就标识为绝对。
每一个可写的输入段必须是和读写位置无关的。
如果这个选项被选中,链接器将进行下面的操作:
检查可读/写属性的运行域的输入段是否设置了位置无关属性;
检查在各段之间的重地址是否有效;
在Region$$Table和ZISection$$Table中添加基于静态存储器sb的选项。
该选项要求RWBase有值,如果没有给他指定数值的话,默认为0。
SplitImage:
选择这个选项把包含RO和RW的输出段的加载域分成2各加载域,一个是包含RO输出段的域,一个是包含RW输出段的域。
这个选项要求RWBase有值,如果没有给RWBase选项的值,则默认是0。
Relocatable:
选择这个选项保留了映像文件的重寻址偏移量。
这些偏移量为程序加载器
提供了有用信息。
在Options选项中,需要读者引起主义的是Imageentrypoint文本框。
它指定映像文件的初始入口点地址值,当映像文件被加载程序加载时,加载程序会跳转到该地址处执行。
如果需要,用户可以在这个文本框中输入下面格式的入口点:
入口点地址:
这是一个数值,例如-entry0x0
符号:
该选项指定映像文件的入口点为该符号所代表的地址处,比如:
-entry
int_handler,如果该符号有多处定义存在,armlink将产生出错信息。
offset+object(section:
该选项指定在某个目标文件的段的内部的某个偏移量处为映像
文件的入口地址,例如:
-entry8+startup(startuoseg在此处指定的入口点用于设置ELF映像
文件的入口地址。
需要引起注意的是,这里不可以用符号main作为入口点地址符号,否则将会出现类似“Imagedosenothaveanentrypoint(Notspecifiedornotsetduetomultiplechoice”的错误信息。
在Layout选项中,需要设置asm.o目标文件中的Init为整个文件的入口点。
这里关于layout选项卡的选择对于新手有些难度,也容易忽略,我们在设置时,很容易把Object/Symbol选项,和Section选择忘记填写,或者我们不知道填写哪什么内容。
这里Object/Symbol是程序的入口点,在你代码初始化程序进入的那个点,这里我们查看src文件夹里的2440init.s文件,找到如图的位置:
可以看到ENTRU,那就是程序的入口,我们在Object/Symbol里填写文件名2440init.o,Section一栏里我们填写Init。
这步很重要,负责你的程序就会运行不了!
!
!
至于为什么,这里不讲了。
关于ARMLinker的设置还很多,对于想进一步深入了解的读者,可以查看帮助文件,
都有很详细的介绍。
该选项在本例子中的配置:
[attachment=530]
在Linker下还有一个ARMfromELF:
fromELF是一个实用工具,它实现将链接器,编译器和汇编器的输出代码进行格式转换的功能。
例如,将ELF格式的可执行映像文件转换成可以烧写到ROM的二进制格式文件;对输出文件进行反汇编,从而提取出有关目标文件的大小,符号和字符串表以及重寻址等信息。
只有在Target设置中选择了Post-linker,才可以使用该选项。
在Outputformat下拉框中,为用户提供了多种可以转换的目标格式,本例选择Plainbinary,这是一个二进制格式的可执行文件,可以被烧写到目标板的Flash中。
在Outputfilename文本域输入期望生成的输出文件存放的路径,或通过点击Choose...按钮从文件对话框中选择输出文件。
如果在这个文本域不输入路径名,则生成的二进制文件存放在工程所在的目录下。
进行好这些相关的设置后,以后在对工程进行make的时候,CodeWarriorIDE就会在链接完成后调用fromELF来处理生成的映像文件。
对于本例的工程而言,到此,就完成了make之前的设置工作了。
点击“OK”后,我们回到了CodeWarriorIDE界面:
4.编译和链接。
点击CodeWarriorIDE的菜单Project下的make菜单,就可以对工程进行编译和链接了。
最后在“D:
\test\test\test_Data\DebugRel”目录下生成test.bin,同时还有test.axf文件,它是用于调试的,如图:
本文来自CSDN博客,转载请标明出处:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ADS12 集成 开发 环境 使用手记
![提示](https://static.bdocx.com/images/bang_tan.gif)