ads 调试Word文档下载推荐.docx

上传人:b****2 文档编号:5816919 上传时间:2023-05-05 格式:DOCX 页数:25 大小:630.02KB
下载 相关 举报
ads 调试Word文档下载推荐.docx_第1页
第1页 / 共25页
ads 调试Word文档下载推荐.docx_第2页
第2页 / 共25页
ads 调试Word文档下载推荐.docx_第3页
第3页 / 共25页
ads 调试Word文档下载推荐.docx_第4页
第4页 / 共25页
ads 调试Word文档下载推荐.docx_第5页
第5页 / 共25页
ads 调试Word文档下载推荐.docx_第6页
第6页 / 共25页
ads 调试Word文档下载推荐.docx_第7页
第7页 / 共25页
ads 调试Word文档下载推荐.docx_第8页
第8页 / 共25页
ads 调试Word文档下载推荐.docx_第9页
第9页 / 共25页
ads 调试Word文档下载推荐.docx_第10页
第10页 / 共25页
ads 调试Word文档下载推荐.docx_第11页
第11页 / 共25页
ads 调试Word文档下载推荐.docx_第12页
第12页 / 共25页
ads 调试Word文档下载推荐.docx_第13页
第13页 / 共25页
ads 调试Word文档下载推荐.docx_第14页
第14页 / 共25页
ads 调试Word文档下载推荐.docx_第15页
第15页 / 共25页
ads 调试Word文档下载推荐.docx_第16页
第16页 / 共25页
ads 调试Word文档下载推荐.docx_第17页
第17页 / 共25页
ads 调试Word文档下载推荐.docx_第18页
第18页 / 共25页
ads 调试Word文档下载推荐.docx_第19页
第19页 / 共25页
ads 调试Word文档下载推荐.docx_第20页
第20页 / 共25页
亲,该文档总共25页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

ads 调试Word文档下载推荐.docx

《ads 调试Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《ads 调试Word文档下载推荐.docx(25页珍藏版)》请在冰点文库上搜索。

ads 调试Word文档下载推荐.docx

(2)在新建的工程中,如图1-2所示,选中工程树的“根部”。

使用命令Project|ToolConfigurationforwork1.apj|<

asm>

=armasm|Set,对整个工程的汇编进行设置。

图1-1新建一个工程文件图1-2对整个工程的汇编进行设置

(3)因为开发板上的嵌入式处理器ARM7TDMI没有浮点处理器,所以,如图1-3所示,在弹出的对话框中设置FloatingPointProcessor为none,并保持其他的设置不变。

(4)选中工程树的“根部”,通过Project|ToolConfigurationforwork1.apj|asmlink|Set命令,对整个工程的连接方式进行设置。

(5)在弹出的对话框中,打开EntryandBase选项卡,如图1-4所示,设置连接的Read-Only(只读)和Read-Write(读写)地址。

地址0x0c080000是开发板上SDRAM的真实地址,是由系统的硬件决定的;

0x0c200000指的是系统可读写的内存地址。

也就是说,在0x0c080000~0x0c1fffff之间是只读区域,存放程序的代码段,从0x0c200000开始是程序的数据段。

图1-3设置FloatingPointProcessor为none图1-4设置连接的地址

提示:

用户可以修改这两个数值来决定程序存储区的大小和数据存储区的大小。

但应注意SDRAM为8MB,地址范围为0x0c000000~0x0c7fffff。

其中0x0c080000之前的空间是留给LCD显示缓存区的。

(6)打开LinkerConfiguration对话框中的ImageLayout选项卡,如图1-5所示,设置程序的入口模块。

指定在生成的代码中,程序是从44binit.s开始运行的,这里填写44binit.s对应的目标文件44binit.o,Init是该汇编文件中的代码段名字。

(7)选择Project|EditProjectTemplate命令,系统弹出ProjectTemplateEditor对话框。

在该对话框中可以看到一系列步骤名称。

SDT在处理工程文件时是按这些步骤完成的,每个步骤设定了对应的操作,以及该操作的输入、输出和命令行等。

读者可以选择已有的步骤,单击Edit按钮打开该步骤设置对话框,观察每个步骤所实现的功能。

例如:

步骤Compile是把.c和.h文件编译成.o文件的,而步骤Link则就是把.o文件和.alf文件连接生成.axf文件的。

在这些步骤中的设置建议保留默认值。

但这里缺少一个从.axf文件生成所需的.bin文件的步骤,所以使用New按钮,为编译器新建一个步骤,如图1-6所示,取名为RomImage。

图1-5设置程序的入口模块图1-6为编译器新建一个步骤

(8)按照如图1-7的内容设置步骤RomImage的内容。

使编译器编译的时候可以生成system.bin文件,这就是系统的可执行文件。

可以看出该操作的输入是当前工程的.axf文件,所在位置是Image,输出是system.bin,位置在Eprom,操作由fromelf组件完成,命令行是fromelf-nozeropad<

$projectname>

.axf-binsystem.bin。

这里的Image和Eprom可以在设置好后的工程窗口中看到。

步骤名称和输出位置名称并不要求一致。

在文本框中输入文字后必须单击Add按钮添加到上方列表框中,否则单击OK按钮后该设置信息丢失。

(9)选择Project|EditVariablesforwork1.apj命令,系统弹出EditVariablesforwork1.apj对话框。

列表框中是该工程的一些变量,读者也可以选择某个变量名,在Value文本框中可以看到其值。

$ProjectName变量设置的是工程名,可以和工程文件的文件名不一致,Image下的.axf文件将以此命名。

这里注意一下变量config$armlink的值,应该是-info.total#total-ro-base#0xc080000-rw-base#0xc200000-first#44binit.o(init),和前面对armlink的设置一致。

而变量config$asm的值是-fpu#none。

这里需要将build_target变量的值设为system.bin,编译器在生成此文件后步骤执行完毕,如图1-8所示。

选择某个变量并更改其值后,必须单击Apply按钮使其生效,如果更改完毕后又选择其他变量,则该设置将无效。

图1-7设置RomImage的内容图1-8设置build_target变量

(10)选中工程树中的DebugRel子树,按Delete键删除。

在系统工程树中Debug子树是应用程序的调试版本,在生成的目标代码中,包含了系统的调试信息。

Release子树是应用程序的发行版本,生成的代码中不包括调试信息,而且编译器还针对速度和代码的大小进行优化。

DebugRel子树是一个折衷版本,通常用不到,所以,在这里删除。

(11)回到ProjectTemplateEditor对话框中,单击EditDetail按钮,在弹出的对话框中可以重新命名模板,如图1-9所示。

重新命名模板后可以保存该工程,并把该空工程(还没有添加工程文件)复制到SDT安装路径下的Template目录下,下次新建工程时可以在NewProject对话框中的Type列表框中看到该模板,使用该模板无需重新设置工程参数。

(12)至此,工程文件设置完毕。

包括对armlink和armasm的参数设置,新建生成system.bin文件的编译步骤和对应变量。

建议将该设置后的工程文件作为模板保存,以方便日后使用。

同时注意上文关于操作的提示,以前多数用户建立模板失败的原因可能就在于操作上的失误。

(13)把光盘中SDT实验所在目录中的“1-开发环境实验”下的STARTUP目录复制到工程路径下。

如图1-10所示,选中工程树中Debug子树的Sources选项。

通过Project|AddFilestoSources命令,把STARTUP目录下的*.S和*.c文件加入到工程中。

图1-9重新命名模板图1-10加入工程的源文件

(14)选中工程树中Debug子树的IncludedFiles选项。

通过Project|AddFilestoIncludedFiles命令,把STARTUP目录下的所有*.h文件都加入工程中。

(15)在需要用到库文件的工程中,选中工程树中Debug子树的Libraries选项。

通过Project|AddFilestoLibraries命令,把*.ALF库文件加入工程中。

(16)双击工程树中Debug子树的Sources选项中的main.c,打开main.c文件。

下面是Main()函数中的内容,程序向LCD和串口输出字符串“Helloworld!

”。

intMain(intargc,char**argv)

{

ARMTargetInit();

LCD_Init();

LCD_ChangeMode(DspTxtMode);

//转换LCD显示模式为文本显示模式

LCD_Cls();

//文本模式下清屏命令

LCD_printf("

Helloworld!

\n"

);

//向液晶屏输出

Uart_Printf("

\nHelloworld!

//向串口输出

while

(1);

}

读者可以分别打开其他的源文件,了解该系统运行的基本知识。

这个程序没有用到操作系统,只是简单地说明工程的开发过程,带有操作系统的实验将在“μC/OS-II在ARM处理器上的移植及编译”实验之后出现。

2.进行程序的在线仿真、调试

(1)回到ARMProjectManager对话框,选中工程树中的Debug子树,通过Project|

Buildwork1.apj“Debug”命令(或者工具栏中的相应按钮)编译整个工程。

(2)把ARM的JTAG仿真器连接到PC机的并行口和开发板上,打开开发板的电源,运行仿真器的驱动程序UarmJTAG.exe。

(3)使用Project|Debugwork1.apj“Debug”命令(或者工具栏中的相应按钮)启动ARMDebugger软件调试程序。

(4)在ARMDebugger中,通过Options|ConfigureDebugger命令设置仿真器。

如图1-11所示,在弹出的对话框中,设置TargetEnvironment为Remote_A。

(5)单击Configure按钮,按照如图1-12所示,设置仿真器。

图1-11设置仿真器 

图1-12设置仿真器

(6)出现下面的提示信息以后,单击“是”按钮,ARMDebugger开始通过仿真器装载程序,如图1-13所示。

图1-13装载程序

注意:

第(4)、(5)步设置好后,以后再调试的时候直接进行到第(6)步,不需要再设置。

当不能进行第(6)步时,重复第(4)和第(5)步。

(7)装载完毕以后,通过Execute|Go命令(或者工具栏中的相应按钮)运行程序。

(8)当程序运行时,可以使用Execute|Stop命令(或者工具栏中的相应按钮)暂停程序的运行。

如图1-14所示,在Execute窗口中将显示出程序暂停的位置。

图1-14显示程序暂停的位置

(9)通过Execute|Step命令(或者工具栏中的相应按钮)可以单步运行程序。

也可以使用StepIn、StepOut命令进入或者跳出函数的调用。

(10)在程序停止运行的时候,选择View|SourceFiles命令,可以打开如图1-15所示的源程序列表窗口,双击列表中的文件名可以查看相应的源文件。

查看源文件时,有时可能会出现看不到自己的源文件的情况,这时要将工程重新强制编译一下。

(11)在源文件列表中打开main.c文件。

选择源文件中的某一行,单击鼠标右键,如图1-16所示,用ToggleBreakpoint命令可以设置断点,使程序运行到这里停下来。

(12)使用在View菜单下的Registers、Variables和Memory命令可以查看工作寄存器或者内存变量。

读者可以逐一地尝试,为以后调试程序打下基础。

图1-15查看源文件图1-16设置断点

1.2ADS1.2开发环境简介

熟悉ADS1.2开发环境,学会ARM仿真器的使用。

使用ADS编译、下载、调试并跟踪一段已有的程序,了解嵌入式开发的基本思想和过程。

本次实验配置ADS集成开发环境,新建一个简单的工程文件,并编译这个工程文件。

学习ARM仿真器的使用和开发环境的设置。

ARM嵌入式开发平台、用于ARM7TDMI的JTAG仿真器、Pentium100以上PC机、串口线。

PC机操作系统Windows98、Windows2000或WindowsXP,ARMSDT2.51或ADS1.2集成开发环境,仿真器驱动程序,超级终端通信程序。

1.配置ADS集成开发环境

(1)运行ADS1.2集成开发环境(CodeWarriorforARMDeveloperSuite)。

选择File|New命令,在对话框中选择Project选项卡,如图1-17所示,新建一个工程文件。

其中示例的工程名为Exp6.mcp。

单击Set按钮可为该工程选择路径,如图1-18所示,选中CreateFolder复选框后将以图1-17中的Projectname或图1-18中的文件名作为创建目录的名称,这样可以将所有与该工程相关的文件放到该工程目录下,便于管理工程。

在图1-17工程模板列表中选择ARMExecutableImage通用模板。

随后将一步一步地把它配置成针对ARM3000开发板的模板44B0ARMExecutableImage,并把它复制到ADS1.2安装目录下的Stationery目录中(所有的工程模板都在此目录下)。

以后新建工程时,在工程模板列表中直接选中44B0ARMExecutableImage模板选项即可,不必每次重新配置模板。

图1-17新建工程图1-18保存工程

(2)在新建的工程中,如图1-19所示,选择Debug版本,使用Edit|DebugSettings命令对Debug版本进行参数设置。

图1-19选择版本

(3)在DebugSettings对话框中选择TargetSettings选项,如图1-20所示。

在Post-linker列表框中选择ARMfromELF,单击右下角的Apply按钮使其有效。

图1-20选择TargetSettings

(4)在DebugSettings对话框中选择ARMLinker选项,如图1-21所示。

在Output选项卡的Linktype选项组中有3种类型的连接方式,常用的是Simple和Scattered两种。

Simple是一种简单设置,如果程序需要用到标准C库函数,则选中Scattered单选按钮进行连接地址的设置。

若用不到标准C库函数,则选中Simple单选按钮,并按照下面的第(5)、(8)、(9)步进行设置。

若用到标准C库函数,则选中Scattered单选按钮,并按照下面的第(6)、(7)、(9)步进行设置。

(5)选中Simple单选按钮,如图1-21所示。

在Simpleimage选项组中设置连接的ReadOnly(只读)和Read-Write(读写)地址。

也就是说,在0x0c080000~0x0c1fffff之间是只读区域,存放程序的代码段,在0x0c200000开始是程序的数据段。

图1-21设置连接地址范围

(6)选中Scattered单选按钮,如图1-22所示。

标准C库函数中如果使用malloc及其相关的函数,需要使用系统的堆(Heap)空间,可以通过scatter文件来描述系统Heap段的位置。

针对44B0开发板,把程序的入口定位在0xc080000,并定义Scatter文件为scat_ram.scf。

在图1-22中选中Linktype选项卡中的Scattered单选按钮,输入Scatter文件名scat_ram.scf;

然后切换到Options选项卡,在ImageEntryPoint文本框中输入0xc080000。

也可以在图1-22的EquivalentCommandLine文本框中直接输入-entry0xc080000-scatterscat_ram.scf进行上述设置。

图1-22通过scatter文件设置连接地址

①程序移植到ADS后,首先执行用汇编语言写的初始化代码,包括中断向量和内存空间的初始化。

在该段代码中使用

IMPORT__main;

(注意main前面是两个半字下划线)

B__main

进行系统内部的标准C函数初始化,然后调用用户在C语言中定义的main()函数(注意:

两个main都是小写),并且在嵌入式应用中用户在C语言中定义的main函数中不能有参数(intmain(void))。

②不能有系统定义的软中断,在汇编语言中可以使用

IMPORT__use_no_semihosting_swi

来检测,在C语言中使用

#pragmaimport(__use_no_semihosting_swi)//ensurenofunctionsthatusesemihosting

③scatter文件的内容如下,创建了一个RAM_LOAD的程序和数据的装载区域,起始地址0xc080000。

RAM_LOAD0xc080000

{RAM_EXEC0xc080000

{

44binit.o(init,+First)

*(+RO)

}

RAM0x0c200000

*(+RW,+ZI)

HEAP+0UNINIT

heap.o(+ZI)

STACKS0xc7ff000UNINIT

stack.o(+ZI)

ISR_STARTADDRESS0xc7fff00;

SDRAMbottom

isr_address.o(+ZI)

在图1-23中说明了这个装载区域的划分。

图1-23程序和数据装载区域的划分

④定义retarget.c函数,重新定位标准C库中stdio的一些相关函数。

主要有:

struct__FILE{inthandle;

/*Addwhateveryouneedhere*/};

FILE__stdout;

//文件的定义

intfputc(intch,FILE*f)//fputc函数

intferror(FILE*f)//ferror函数

void_sys_exit(intreturn_code)//系统退出函数

void_ttywrch(intch)

__value_in_regsstruct__initial_stackheap__user_initial_stackheap(unsignedR0,unsignedSP,unsignedR2,unsignedSL)//用户的堆空间和栈空间函数

具体定义,可以参考init/retarget.co

(7)接第(6)步,在第(4)步中如果不选择简单的连接地址设置,则需按图1-24所示设置C编译器。

在DebugSettings对话框中选择ARMCCompiler选项,在ATPCS选项卡中选择ARM/Thumbinterworki复选框,或者在命令行中添加-apcs/interwork。

图1-24设置ARMCCompiler

(8)接第(5)步,若在第(4)步中选择简单的地址连接设置,在DebugSettings对话框中选择ARMLinker选项,如图1-25所示。

单击FactorySettings按钮,出现Layout选项卡(在对Release版本进行设置时,不用单击FactorySettings按钮)。

在Layout选项卡的Placeatbeginningofimage选项组中设置程序的入口模块。

指定在生成的代码中,程序是从44binit.s开始运行的。

Object/Symbol/项设为44binit.o,Section项设为init。

(9)在DebugSettings对话框中选择ARMfromELF选项,如图1-26所示。

在Outputfilename框中设置输出文件名为system.bin,这就是要下载到开发板的嵌入式应用程序文件。

(10)回到如图1-19所示的工程窗口中,选择Release版本,使用Edit|ReleaseSettings命令对Release版本进行参数设置。

(11)参照第(3)~第(9)步在ReleaseSettings对话框中设置Release版本的Post-linker、连接地址范围、入口模块和输出文件。

图1-25设置入口模块

图1-26设置输出文件名

(12)回到如图1-19所示的工程窗口中,选择Targets选项卡,如图1-27所示。

选中DebugRel版本,按Del键将其删除。

(13)设置完成后,可以将该新建的空工程文件作为模板保存以便以后使用,将工程文件名改为44B0ARMExecutable.mcp。

然后在ADS1.2软件安装目录下的Stationery目录下新建名为44B0ARMExecutableImage的模板目录,再将刚设置完的44B0ARMExecutable.mcp工程模板文件存放到该目录下即可。

这样以后新建工程的时候,如图1-28所示,就能看到以44B0ARMExecutableImage为名字的模板了。

(1)建议用户直接将光盘ADS实验下的Template\ADS\Stationery目录中的44B0ARMExecutableImage子目录复制到ADS1.2安装目录下的Stationery目录中,这样也能在图1-17所示的新建工程对话框中看到这个模板,其中有已经设置好的针对本开发板的参数。

这个模板设置为Scattered版本。

(2)如果用户原来已安装了ARMSDT软件,再安装ADS1.2后可能导致ARMSDT不能正常使用,需要用户更改系统环境变量:

ARMINC设置为%ARMSDTPATH%\INCLUDE,ARMLIB设置为%ARMSDTPATH%\LIB,其中%ARMSDTPATH%指ARMSDT的安装目录。

图1-27删除DebugRel版本图1-28显示44B0ARM模板

2.建立工程文件

配置好ARMADS针对UP-ARM3000的开发环境后,可以执行Project|AddFiles命令把和工程相关的所有文件加入到工程中。

ADS1.2不能自动按文件类别对这些文件进行分类,若需要,可以执行Project|CreateGroup命令创建文件组,然后分别将不同类的文件加入到不同的组,以方便管理。

如图1-29所示。

更为简单的办法是,在新建工程时ADS创建了和工程同名的目录,在该目录下按类别创建子目录并存放工程文件。

选中所有目录拖动到任务栏上的A

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

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2