您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 公司方案 > ADS12_开发环境
实验六ADS1.2开发环境一、实验目的熟悉ADS1.2开发环境,学会ARM仿真器的使用。使用ADS编译、下载、调试并跟踪一段已有的程序,了解嵌入式开发的基本思想和过程。二、实验内容本次实验使用ADS集成开发环境。新建一个简单的工程文件,并编译这个工程文件。学习ARM仿真器的使用和开发环境的设置。下载已经编译好的文件到嵌入式控制器中运行。学会在程序中设置断点,观察系统内存和变量,为调试应用程序打下基础。三、预备知识C语言的基础知识、程序调试的基础知识和方法。四、实验设备及工具(包括软件调试工具)硬件:ARM嵌入式开发平台、PC机Pentium100以上、用于ARM920T的JTAG仿真器、串口线。软件:PC机操作系统Win2000或WinXP、ARMADS1.2集成开发环境、仿真器驱动程序、超级终端通讯程序。五、实验步骤0、安装ARMADS1.2集成开发环境(过程略)1、建立工程(1)运行ADS1.2集成开发环境(CodeWarriorforARMDeveloperSuite)。选择File|New…菜单,在对话框中选择Project,如图1B-1所示,新建一个工程文件。图中示例的工程名为Exp6.mcp。点set…按钮可为该工程选择路径如图2-1所示,选中CreatFolder选项后将以图2-1中的ProjectName或图2-2中的文件名为名创建目录,这样可以将所有与该工程相关的文件放到该工程目录下,便于管理工程。在图2-1中工程模板列表中选择ARMExecutableImage通用模板。项目名可随意取。图2-1新建工程图2-2保存工程(2)在新建的工程中,如图2-3所示,选择Debug版本,使用Edit|DebugSettings菜单对Debug版本进行参数设置。图2-3选择版本(3)在DebugSettings对话框中选择TargetSettings项,如图2-4所示。在Post-linker一栏中选择ARMfromELF。图2-4TargetSettings(4)在DebugSettings对话框中选择ARMLinker项,如图2-5。在Output选项卡的Simpleimage框中设置连接的Read-Only(只读)和Read-Write(读写)地址。地址0x30008000是开发板上SDRAM的真实地址,是由系统的硬件决定的;0x30200000指的是系统可读写的内存地址。也就是说,在0x300080000x30200000之间是只读区域,存放程序的代码段,在0x30200000开始是程序的数据段。(注:以下在模拟器上运行,ROBase地址选0X8000,如下图设置)图2-5设置连接地址范围图2-5所示的设置只是一种简单设置,(以下灰色字体暂时跳过)如果程序需要用到标准C库函数的话需要按图2-6进行连接地址的设置。标准C中如果使用malloc及其相关的函数,需要使用系统的堆(Heap)空间,可以通过scatter文件来描述系统HEAP段的位置。针对2410开发板,把程序的入口定位在0x30008000,并定义scatter文件为scat_ram.scf。在图2-6中选择LinkType为Scattered,输入scatter文件名scat_ram.scf;然后切换到Options选项卡在ImageEntryPoint框中输入0x30008000。也可以在图2-6的CommandLine框中直接输入-entry0x30008000-scatterscat_ram.scf进行上述设置。图2-6通过scatter文件设置连接地址提示:1)程序移植到ADS后,程序最开始首先执行用汇编写的初始化代码——包括中断向量和堆栈的初始化。在该段代码中使用IMPORT__main;注意main前面是两个下划线B__main进行系统内部的标准C函数初始化,然后调用用户在C中定义的main()函数(注意:两个main都是小写),并且在嵌入式应用中用户C的main函数中不能有参数(intmain(void))。2)不能有系统定义的软中断,在汇编中可以使用IMPORT__use_no_semihosting_swi来检测,在C中使用#pragmaimport(__use_no_semihosting_swi)//ensurenofunctionsthatusesemihosting3)scatter文件内容如下,创建了一个RAM_LOAD的程序和数据的装载区域,起始地址0x30008000。RAM_LOAD0x30008000{RAM_EXEC+0{startup.o(init,+First)*(+RO)}L0PAGETABLE0x30200000UNINIT;about2MByteoffsetSDRAM{pagetable.o(+ZI)}STACKS+0x100000UNINIT;64KByteunderL0pagetable{stack.o(+ZI)}RAM+0{*(+RW,+ZI)}HEAP+0UNINIT{heap.o(+ZI)}EXCEPTION_EXEC0OVERLAY;exceptionregion{exception.o(+RO)}}4)定义retarget.c函数,重新定位标准C库中stdio的一些相关函数。主要有:struct__FILE{inthandle;/*Addwhateveryouneedhere*/};FILE__stdout;//文件的定义intfputc(intch,FILE*f)//fputc函数intferror(FILE*f)//ferror函数void_sys_exit(intreturn_code)//系统退出函数int__raise(intsignal,intargument)__value_in_regsstruct__initial_stackheap__user_initial_stackheap(unsignedR0,unsignedSP,unsignedR2,unsignedSL)//用户的堆空间和栈空间函数具体定义,可以参考init/retarget.c(5)在第(4)步中如果不选择简单的连接地址设置,则需按图2-7所示设置C编译器。在DebugSettings对话框中选择ARMCCompiler项,在ATPCS选项卡中选择ARM/Thumpinterwork,或者在命令行中添加-apcs/interwork。图2-7设置ARMCCompiler(6)在第四步中如果选择简单的地址连接设置,在DebugSettings对话框中选择ARMLinker项,如图2-8。在Layout选项卡的Placeatbeginningofimage框中设置程序的入口模块。指定在生成的代码中,程序是从startup.s开始运行的。Object设为startup.o,section设为init。图2-8设置入口模块(7)在DebugSettings对话框中选择ARMfromELF项,如图2-9。在Outputfilename框中设置输出文件名为system.bin,这就是要下载到开发板的嵌入式应用程序文件。图2-9设置输出文件名(8)回到如图2-10所示的工程窗口中,选择Release版本,使用Edit|ReleaseSettings菜单对Release版本进行参数设置。(9)参照第(3)、(4)、(5)、(6)、(7)步在ReleaseSettings对话框中设置Release版本的Post-linker、连接地址范围、入口模块和输出文件。(10)回到如图2-3所示的工程窗口中,选择Targets选项卡,如图2-10所示。选中DebugRel版本,按Del键将其删除。DebugRel子树是一个折衷版本,通常用不到,所以在这里删除。图2-10删除DebugRel版本(11)设置完成后,可以将该新建的空工程文件作为模板保存以便以后使用。将工程文件名改为2410ARMExecutable.mcp。然后在ADS1.2软件安装目录下的Stationery目录下新建名为2410ARMExecutableImage的模板目录,再将刚设置完的2410ARMExecutable.mcp工程模板文件存放到该目录下即可。这样以后新建工程的时候如图2-1所示就能看到以2410ARMExecutableImage为名字的模板了。(12)添加文件的方法如下。单击ADS菜单命令FileNew,打开如图2.11所示的对话框,选择File选项卡,设置此文件的文件名和存储位置,然后在打开的编辑器中输入相应的程序。图2-11加入工程文件subrout.s文件添加如下内容:AREAsubrout,CODE,READONLY;namethisblockofcodeENTRY;markfirstinstruction;toexecutestartMOVr0,#10;SetupparametersMOVr1,#3BLdoadd;CallsubroutinestopMOVr0,#0x18;angel_SWIreason_ReportExceptionLDRr1,=0x20026;ADP_Stopped_ApplicationExitSWI0x123456;ARMsemihostingSWIdoaddADDr0,r0,r1;SubroutinecodeMOVpc,lr;Returnfromsubroutine.END;Markendoffile(13)在mcp项目管理界面中,双击图2-11中的subrout.s,打开该文件,可以查看程序的内容,这时也可运行程序。读者可以查看其他源文件的内容以对系统运行有所了解。可以发现ADS的文本编辑器已经有了很大的改善,文本按语法分颜色显示,读者可以根据喜好在Edit菜单下的Preferences窗口中进行设置。并可以很好的支持中文注释。2、AXD调试器介绍1)配置JTAG仿真器(1)添加驱动(暂时略过)首先安装UarmJtag2.0软件,默认安装路径:\ProgramFiles\UarmJtag\driver\LPTJtag.inf其次开始→控制面板→添加硬件→下一步→选-是我已经连接了此硬件→下一步→选中-添加新的硬件设备→下一步→选中安装我手动从列表选择的硬件→下一步→选择-显示所有设备→选择(过程比较长)→从磁盘安装-浏览,指定驱动为C:\ProgramFiles\UArmJtag\driver\LPTJtag文件,点击确定,然后点击下一步,安装好驱动。(以WindowsXP为例)注意:调试过程中,需要保持UarmJtag软件为开启状态,处理器选择arm9,否则AXD会提示出错。(2)AXD配置在AXD中,选择菜单Options\Configuretarget…如图2-12图2-12图2-13在弹出的对话框中选择ARMulate.dll,即选用模拟仿真器如上图2-13点击确定后,系统开始下载仿真程序。2)AXD调试器介绍打开一个ADS工程,启动Uarmjtag软件,选择arm9处理器然后最小化。在已打开ADS的工程中选择dubug如下图2-15图2-15后会弹出AXD对话框如图2-16图2-16如果载入.ses文件失败,重新对target进行配置。在AXD我们会看到所要查找的信息其显示为如图2-17图2-17(1)CPU寄存器窗口在AXD中选择processorRegisters,在其左边会显示一个窗口如图2-18图2-18(2)变量窗口在AXD中选择contextVariables,在其左边会显示出如图2-19信息图2-19(3)查看内存内容在AXD中选择Memory,在其下方会显示出如图2-20信息图2-20(4)设置断点在AXD中选择ToggleBreakpoint,显示信息如图2-21图2-213、ADS运行C语言程序在完成上述任务基础上,重新创建一个项目hello,并在项目内添加如下文件:hello.c#includestdio.hexternintadd(int,int);
本文标题:ADS12_开发环境
链接地址:https://www.777doc.com/doc-2896257 .html