




下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、ADSil成环境下应用程序开发过程1 .实验目的1.1 理解启动代码功能硬件初始化,引导 c代码特征通常用汇编语言编写,程序复位运行入口点,代码量非常小程序流程I、设置中断、异常入口n、关中断出、硬件寄存器初始化(GPIO配置、总线配置、PLL时钟)IV、初始化栈指针V、数据区初始化VI、C入口函数调用 BL Main1.2 掌握ADSft成环境下应用程序开发过程I、JTAG仿真器的应用n、应用程序功能出、硬件驱动IV、应用V、应用程序特征VI、通常用C语言或者嵌入式汇编语言编写口、程序较复杂,代码量较大2 .实验容2.1 安装ADSI、安装ADSn、安装 ARM License出、编译2.2
2、 用ADS&J建工程I、配置ADSn、添加文件、编写程序出、C或汇编程序2.3 编译I、配置编译、汇编和连接参数 n、编写连接脚本文件 出、编写连接脚本文件2.4 调试I、连接调试器 n、下载程序 出、运行、调试3 .实验过程3.1 ADS1.2开发环境的创建3.1.1 ADS1.2 概述由于嵌入式控制器收其本身资源的限制,其应用程序不能再其自身上开发。 因此开发其应用程序,还需要一台PC机,我们可以把这台 PC称为“宿主机”。在“宿 主机”上开发需要安装有集成开发环境。ADS就是ARM勺集成开发环境。 ADSi:称为 ARM Development Suit ,是ARM 司推出的新一
3、代 ARM1成开发工具。它主要包括编译器、器、调试器、C和C+保等,是ARM公司推出的新一代 ARM集成开发工具。其最新版本是 ADS1.2,该版本 支持包括 Windows和Linux在的多种操作环境。 ADS1.2的组成如下。1 .编译器AD限供多种编译器,以支持ARMF口 Thumb(在ARM系中数据和指令采用 16 位字长)指令的便宜,主要有armcc:是 ARM C译器 tcc :是Thumb C编译器 armcpp:是ARM C+编译器 tcpp :是Thumb C+斓译器 arm asm :是ARMF口 Thumb的汇编语言编译器2 .器armlink是ARM。该命令既可以将编译
4、得到的一个或多个多个目标文件 和相关的一个或多个库文件进行,生成一个可执行文件,也可以将多个目标文 件成一个目标文件,以供进一步。3 .符号调试器armsd是ARMM口 Thumb的符号调试器,能进行源码级的程序调试。用户可 以在用C或汇编语言编写的代码中进行单步调试、设置断点、查看变量值和存 单元的容。4 . FromELF将ELF格式的文件转换为各种格式的输出文件,包括 bin (二进制)格式 映像文件,Motorola 32为S格式映像文件、Intel 32位格式映像文件和 Verilog 十六进制文件。FromELF命令也能够为输入映像文件产生文本信息,例如代码 和数据长度。5 . a
5、rmarArmar是ARM库函数生成器,它将一系列ELF格式的目标文件以库函数的形式集合在一起。用户可以把一个库传递给一个器以代替几个ELF文件。6 . CodeWarriorCodeWarrior集成开发环境(IDE)为管理和开发项目提供了简单多样化 的图形用户界面,用户可以使用ADS的CodeWarriorIDE为ARMM Thumb处理器开发用C、C+或者ARM汇编语言编写的程序代码。一般来说我们会使用 CodeWarrior集成开发环境来开发我们的C语言程序。7 .调试器ADS中含有3个调试器,即 AXD Armsd和ADW/ADU在ARM体系中,可以选择多种调试方式,如 Multi-
6、ICE(Multi-processor In-Circuit Emulator) 、ARMulator 或 Angel。(1)Multi-ICE 是一个独立的产品,是ARM司自己的JTAG在线仿真器,而不是由ADS提供的。(2)ARMulator是一个ARM旨令仿真器,集成在 ARM的调t器AXD中,提供对 ARMBS器的指令集成的仿真,为ARMMn Thumb提供精确的模拟。用户可以再硬件尚未做好的情况下开发程序代码,利用模拟器方式进行调试。(3)Angel是AR必司常驻在目标机 Flash中的监控程序,只需通过RS232C串口与PC主机相连,就可以对基于ARM架构处理器的目标机进行监控器方
7、式的调试。8 . C和C+取ADS提供了 ANSI C库函数和C+库函数,支持被编译的C和C+弋码。用户可以把C库中的与目标相关的函数作为自己应用程序的一部分。重新进行 代码的实现。3.1.2 ADS1.2 的安装在YLE2440W用户光盘实用工具的目录下有一个嵌入式系统开发ADS1 2破解版.zip的文件,解压后运行 SETUP.EXE根据安装向导一步一步完成 ADS集成开发环境的安装。需要注意的是,如图 3-1所示,选择Intall License 。图3-1如图 3-2 所示,选择 Linseed File To Be Installed 。单机"Browse",选择
8、 CRACK 目录下的license.dat文件即可安装许可证。图3-2安装并注册成功后,CodeWarrior集成开发环境就可以使用了。如图 3-3所示。i anii or r lelaiwrC l:<ro»ft Office用 Mflbc Rckr X口 Ul TraE-liTVi svil C* $5icra9oft Visual SourceSafeHfewl * t -Pox:li.QxdHP31 innfgr aRI 0”二£ 叩tar青 License& On! i rw Rea-dle For AM Developer Suhe *1.2U S
9、etup for AJV Dewi oper Sui 1. 2簪;:后吐工印产上.可图3-33.2 ADS集成开发环境的使用3.2.1 建立一个新工程点击Windows操作系统的【开始】-【程序】-【ARMDeveloper Suite v1.2 -【CodeWarriorfor ARM Developer Suite 启动 Metrowerks CodeWarrior ,运 行后的界面如图3-4所示。图3-4选择File -【NeWI,出现如图3-5所示对话框。NewXProject Ipiia | Ubjaet |施痢 Obj e ct LifcrajryEmpty Project flg
10、Hakefile Importer Wizard 据Thumb ON Interw orki ng 5吨电 的 ThiJimh ExeetiLt abls 工m也g 修 H&Thiun'b Object Libr*rjrLo cation:|C: Do cunt ent 5 and Seftines, 9七Pr oj ec1!定 I 取消 I图3-5ADS为用户提供了 7个模板,分别是:I、ARMExecutable Image:用于由ARM旨令的代码生成一个 ELF格式的可执行映 像文件;n、ARMObject Library :用于由ARM旨令的代码生成一个 armar格式
11、的目标文件 库;出、Empty Project :用于创建一个不包含任何库或者源文件的工程;IV、Makefile Importer Wizard :用于将 VC 的 nmake 或者 GNU make文件转入到 Code Warrior IDE 工程文件;Thumb ARMExecutable Image :用于由ARM旨令和Thumb指令的混合代码生成 一个可执行的ELF格式的映像文件;Thumb ARMExecutable Image:用于由Thumb指令创建一个可执行的 ELF格式 的映像文件;ThumbObject Library :用于由Thumb指令的代码生成一个 armar格式
12、的目标 文件库。一般情况下均选择"ARMExecutable Image",然后在"Project name:"栏输 入工程的名称,在“ Location :"栏指定路径,在本例中工程名为 Expe1_LED ,存 储路彳仝为 E:ADSProject 。设置好后点击确定。这时候会出以工程名命名的 .mcp 对话框,如图3-6所示。图3-6有三个标签页,风别为Files , Link Order, Targets 。默认的是第一个 Files 。在该标签页下,在空白处点击鼠标右键,选中“ Add Files”可以把用到的源程 序添加到工程中。也
13、可以选择新建一个文件编辑源码。下面我们分别介绍这两种方法。首先我们说下添加源程序到工程中。如图3-6,在Files标签选项卡下单击鼠标右键,选中“ Add Files”要使用ADS新建一个文件编辑源码可以有两种方法,第一种是直接点击工具栏上按钮,在弹出的对话框中输入源码,也可以在菜单栏上点击【文件】 -【新建】, 然后选择File选项卡,如图3-8所示。在"File Name ”中输入文件的名字,点击确定。也可以勾上 Add to project 前面的复选按钮,然后在 Targets中勾上DebugRel,这样源码就添加到工程中了。 如果不勾上Add to project前面的复选
14、按钮,那么编辑好源码后,需要按照前面添加源码的方法把添加源码到工程中去了。在弹出的对话框中输入程序源码(见附录一),注意:ARM汇编语言程序源代码中允许有空行,可以在汇编程序中加上一个空白行,来增加程序的可阅读性。此外需要注意的是:指令, 指示符,伪指令前必'须加空格或者Tab制表符,这就是说指令,指示符,伪指令不可以从行的最左边开始书写,即不能顶格书写。在ARM匚编语言程序中,所有标号必须在一行的最左边的位置开始书写,标号的后面不要加“:”。指令,指示符,寄存器名可以用小写字母也可以用大写字母来 表示,但不能大小写字母相杂。当一行写不下时,可以用反斜线作为这一行最后的符号,然后另起一
15、行接下去写,这样汇编器会将这两行代码看作一行代码。需要注意的是,如果在被引号括住的字符串中使用反斜线,则反斜线不能起到续行的作用。每行的长度限制一般在128255个字符串之间。分号;除非在字符串常量中出现,否则它的出现就表示着注释的开始,此注释直至行尾结束。可以将注释单独列为一行。所有注释被汇编器忽略。编辑好源码并保存添加到工程后还不能编译和,还需要进行一些配置。在如图3-6所示的对话框上面有一些按钮和选项卡,我们把鼠标移到上面的时候会出现一些提示,如图所示? DebugRel Settings 工程设置,如地址设置、输出文件设置、编译选项等, 其中DebugRel为当前的生成目标 (targ
16、et system) 。? Synchronize Modification Dates同步修改日期,检查工程中每个文件的修改 日期,若发现有更新(如使用其它编辑器编辑源文件),则在Touch栏标记 ”? Make编译连接(快捷键为F7)。? Debug启动AXD进行调试(快捷键为F5)。? Run启动AXD进行调试,并直接运行程序。? Project Inspector工程检查,查看和配置工程中源文件的信息选择菜单栏【Edit -> DebugRel Setting 】出现如图所示的对话框1.Target设置选项Target Name文本框显示了当前的目标设置Linker选项供用户选择
17、要使用的器。在这里默认选择的是ARM Linker,使用该器,将使用armlink编译器和汇编器生成的工程中的文件相应的目标文件。在这个设置中海油两个可选项,None表示不适用任何器,如果使用None,则工程中的所有文件都不会被编译或汇编器处理。ARMLibrarian 表示将编译或汇编得到的目标文件转换为ARM文件。对于本例,使用默认的器ARM Linker。Pre-linker :目前 CodeWarriorlDE 不支持该选项Post-Linker :选择在完成后,还要对输出文件进行的操作。我们一般希望生 成一个可以烧写到 Flash中去的二进制代码,所以在这里选择ARMfromELF
18、,表示在生成映像文件后,再调用FromELF命令将含有调试信息的 ELF格式的映像文件转 换成其他格式的文件。设置好后如图所示2.Language Settings设置选项我们实验采用的汇编语言编写,因此要使用到汇编器。 选才L Language Settings下选择 ARM Assembler。如图所示在 Target选项卡下 Architecture or Processor 的下拉菜单中选择 ARM920T(CPU的类型)。在 Floating Point 选择 No floating point 。 Byte Order 中选择Little Endi o Initial State
19、中选择ARM如果使用 C语言编写程序,也 需要在Architecture or Processor的下拉菜单中选择 ARM920T设置好后如图所示3.Linker 设置单击ARMLinker ,在Output选项卡中设定程序的代码段地址,以及数据的地RW Base文本框中填写程址。在RO Base文本框中填写程序代码存放的起始地址,序数据存放的起始地址。注意:RW Base地址必须是SDRAM勺地址。如图所示加DebugRel Settings?区在Option选项卡中,Image entry point文本框填写程序代码的入口地址,其他保持不变,如果是在SDRA四运行,则可以再0x30000
20、0000x33ffffff中选值,这是64M SDRAMS地址,但是这里用的是起始地址,所以必须把用户的程序空间给留出来,并且还要留出足够的程序使用的数据空间,所以必须把用户的程序空间给而且还必须是4字节对齐的地为 0x30000000, RO_base 也为0x30000000。如图所示流出来。并且还要留出足够的程序使用的数据空间, 址(ARM状态)。通常入口点 Image entry point在Layout选项卡中,在 Place at beginning of image选项组里要填写项目的入口程序的目标文件名, 例如,在本例中整个工程项目的入口程序是asm_led.s ,那么应该在
21、Object/Symbol文本框中填写其目标文件名asm_led.o ,在Section文本框中填写程序入口的起始段标号。它的作用是通知编译器,整个项目的开始运行,是从该段开始的。单击 ARM fromELF选项卡,在 Output file name 文本框中设置输出文件名*.bin ,前缀名可以自己取,在 Output format 下拉列表中选择 Plain binary ,这是设置要下载到flash中的二进制文件。如图所示。?X1由DebugRel Settings到这里,设置就基本上完成了,可以对工程进行编译和了。可以点击CodeWarrior IDE 的菜单栏【Project -【
22、make】菜单,也可以直 接在.mcp对话框上点击按钮编译工程。在 Errors & Warnings 对话框中警告和错 误都为0Ei rcrs & WarningsIrror an4 wirnjnes f(r 裳*re1_LE0 mrrCedeHO tiaraM Data21 li ataT efarjig101010ssObject TotalsLibcaiy TotalsCedeRD DataRU BataII DataLULint 9 Col 203.2.2使用AXD!行代码仿真、调试项目建立并加入相应的文件后,“目标机”和“宿主机”通过JTAG仿真器进行连接,然后用A
23、XD进行代码仿真、调试。首先将使用并口电缆将计算机并口和 JTAG仿真小板连接起来,并把 JTAG仿 真小板和开发板的 JTAG接口用20芯排线连接到 SDTM座上。并按动将 JTAG小板 上的红色按钮,调制 Wiggler。(注:以下操作均在windowsXP下操作)在YLE2440W用户光盘实用工具目录下,解压 Arm Debug,复制 Arm Debug文件夹 GIVEIO.SYS拷贝到 C:WINDOWSsystem32drivers 目录下。运行 Arm Debug文件夹下“安装驱动.exe ” 就会弹出一个界面窗口,先点击“ remove”,再点击上面的“INSTALL”按键,出现
24、 提示信息“service is partially installed ”.然后在点击下面的"INSTALL”按 键,出现下面提示信息,如下图所示,说明安装成功。安装好后,重启下开发板。运行Arm Debug文件夹下 ARM9.exe,选择 Wiggler ,如果安装成功,并且连线正确,装会检测到 ARM920T如下图如示:不要关闭ARM调试代理,在Codewarrior IDE环境下,点击.mcp对话框上面 的Debug按钮,显示如图所示对话框。【Configure Target 】,弹出 Choose Target 对话点击菜单栏【Options ->框,如图所示,选择
25、Configure 。出现如图所示 Remote_A connection 对话框。Choose Target点击Select按钮,如图所示,选择 ARM Ethernet driver ,点击 OKAvailable connection在图选择 Configure ,出现如图所示对话框,输入 IP地址127.0.0.1 ,点击OKSetup ethernet con, . -? X工司get IP addreii: 127.0.0.1|-K | Cancel Hefc设置好后在 Remote_A connection 对话框点击 OK再在Choose Target对话 框点击OK出现如图所
26、示对话框。点击是如果目标系统正确了,会看到程序下载 的进度条显示。进度消息框消失后, 显示当前执行代码视窗,蓝色指针指向第一条执行的语句。如图所示。当工程编译连接通过后,也可以通过【开始】菜单启动AXD点击【File】选择【Load Image】加载 ELF格式的可执行文件,即*.axf 文件。说明:当工程 编译连接通过后,在“工程名工程名当前的生成目标”目录下就会生成一个*.axf 调试文件。比如工程 Expe1_LED,当前的生成目标 Debug,编译连接通过 后,贝U在一 Expe1_LEDExpe1_LED_DataDebugRel 目录下生成 Expe1_LED.axf 文 件。加载
27、调试文件(即*.axf文件),用户就可以操作 AXD1行调试工具条中的工具 按钮实现程序运行调试。 AXD1行调试工具条如图 1.13所示,调试观察窗口工具 条如图1.14所示,文件操作工具条如图 1.15所示。运行调试工具条全速运行(Go)停止运行(Stop)单步运行(Step In),与Step命令不同之处在于对函数调用语句,Step In 命令将进入该函数。单步运行(Step),每次执行一条语句,这时函数调用将被作为一条语句执行。单步运行(Step Out),执行完当前被调用的函数,停止在函数调用的下一条语句 运行到光标(Run To Cursor),运行程序直到当前光标所在行时停止。设
28、置断点(Toggle BreakPoint)打开寄存器窗口 (Processor Registers)打开观察窗 口 (Processor Watch)打开变量观察窗口 (Context Variable)打开存储器观察窗口 (Memory)打开反汇编窗口 (Disassembly)加载调试文件(Load Image)重新加载文件(Reload Current Image)。由于AXD没有复位命令,所以通常使用 Reload 实现复位(直接更改PC寄存器为零也能实现复位)。在AXD中点击'GO 图标,则程序开始全速运行,我们可以看到实验板上 D8D14不停的闪烁着。4.ARM汇编与C语
29、言混合编程实例此程序实现开发板上的LED灯实现流水灯的功能,先要新建一个工程名为asm_c,然后新建源文件init.s 和main.c,输入代码(源码见附录2),如下所示:二I叵区% M«i.r()wrtkii CinleWarr iqr- For ARM De;vlnj)&r Sui te v 1 - 2J11 e Edi t Vi ezl Ssarch. Pr eject Ite bug PinL.law Help后世按照前面调试的方法,调试程序。附录一实验一源码及其说明口 NTWPF4 N-raraPFS ElNT&GPFfl E1NT7/GFF7口 iftFr
30、一">"MT"MMa 肉£液-l-T>-rwsrr-7 rEKT4VF4i.i,: iwra;:、< -Fi M-Z -<CJKLKMTT &AWWItiT工DI 4曲T讪Ttil?IIM:昨UHPSJIBJE 匚禺TIB JH wntFisrj-o Cw2u.jT.jnW-.h- KI:同O*T2 毛 F.1 EMRMdgym .卜'"Wr M 1 .'I- JWiCT 心 SP上 rMQruicpji 匚fWiCDWOF ilH'lW上 .rnt+T liWHtfr甲第法瑞如dLVM*
31、 NFU WEVZUtMuGdragon «4*t<1.舁CMitkMPORT F CONTROL REGISTERS |GPFCON- GPFDAT)If GPF0-GPF7 will bu uhtd lor Wdke up sigi,dL ut puwyii dcvm rrmde Ilie putj v. M set ih interrupt nodeRq匕 t«rAddress知WDescriptionR-t ValueGFFCDN0x56000050RWCnnfiqiirfls thp 画产 讨 pxt F0x0GPFDM0x560D00S4RWFha U加
32、itjytslH foi purl Fui Kief.GPFUPQx5G0l>X.-bRWPull-up disable register fopert 卜UmUODRe56rvedMSfiOOOOSc一一GPFCONBitDAEtripticnGPF7115 I4OCi = Input 10 = ElNTp|-01 = Oirtpijt11 = RosarwadGPFO|13 12|00 = Input10 - FIN耐0 I = Output111 = RffljQfvodGPF5| IT l0|OC = IryiUt10 = ENT15)01 - Output ill = Rrvd
33、dGPF4G8|qo = infirt 10= FIN714!01 = OlLrtpLjt11- Reseived(5PF376|DO = ItVLtt10 - ENIP01 = Output111 = RfforvodGPF2|54|00 = Input10 = ElNT2|01 = Output11 - ReseiVEdAPF132|00 = Inrirt10 = FIN711I£i l - OirtpiX11 = RflSfwvedGPF010|OCi - inputID - blNTO|U 1 - OutputIl 1 - HeservedGPFDATBitDs6cripti
34、orGPF7 07/hftr tho pnrr A n-nnfigurAd as an nput pnrt thp armpordi即 hh rs the pin 与由原 When the port is 81刖川吧4 日s on QgM port pin st&te is Hie已5 ttw conespundinq bitWhen H咫 pon is txxifi9uied 比 山mum闽 pin. ihe 出心川足 vMul wii be readGPFUPBit口 ascriptionGPFS0roi0: The pun up hjnctKHi amriea io ihe co
35、rrespondinq pon pm is enetjied.1: The pull up function 由 disbloc!图4在开发板关盘YLE2440W用户光盘原理图原理图_PDF格式目录下YLE24xx_DEV_V2Q.pdf文件中我们可以找到如图1所示的 LED连接图。然后我们可以在YLE2440-CORE-V1.0.pdf文件中找到这几个 LED灯所连接的IO 口,如图2所示,因此我们可以 知道这四个LED灯连接在 MCU的F 口上。因此我们需要知道这几个口的地址。打开 YLE2440W 用户光盘芯片资料目录下 um_s3c2440a_rev10.pdf文件,在第九章I/O PORT外我们可以找到F 口对应的地址,如图 3,图4所示。 了解了 LED灯的连接之后,设计程序的思路就出来了,流程图如图5所示开始图5具体算法如下:;定义端口 E寄存器预定义rGPFCON EQU 0x56000050rGPFDAT EQU 0x5600005
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 腹外疝定义及护理措施
- 河北成人考试试题及答案
- 东莞电子面试题目及答案
- 浙江省德清县联考2024年八年级物理第一学期期末监测试题含解析
- 烟台南山学院《数据库原理及应用》2023-2024学年第一学期期末试卷
- 贵州化学考试题目及答案
- 乌兰察布医学高等专科学校《婚恋与法律》2023-2024学年第一学期期末试卷
- 2024年河北省保定莲池区六校联考九上数学期末检测试题含解析
- 二零二五年度环保产业采购合同环境指标要求
- 二零二五版材料供应链采购合同补充协议
- JJF 1076-2020数字式温湿度计校准规范
- 临床诊疗指南(急诊医学)
- GB/T 23329-2009纺织品织物悬垂性的测定
- GB/T 20864-2021水稻插秧机技术规范
- GB 2811-2007安全帽
- 语言学纲要(新)课件
- 高中物理必修一期中测试题及答案解析
- 风冷热泵机组调试方案
- 《园林主要病虫害防治一览表》
- 部编版语文五年级上册作文审题训练题目
- 李中莹心理创伤简快辅导技巧(课堂PPT)
评论
0/150
提交评论