1、第第9 9章章 集成开发环境集成开发环境ADSADS介绍及介绍及ARMARM汇编语言程序设计汇编语言程序设计 嵌入式系统设计嵌入式系统设计 嵌入式系统设计嵌入式系统设计 基于基于ARM9ARM9微处理器微处理器S3C2410AS3C2410A第第9 9章章 集成开发环境集成开发环境ADSADS介绍及介绍及ARMARM汇编语言程序设计汇编语言程序设计南阳师范学院南阳师范学院张帅张帅第第9 9章章 集成开发环境集成开发环境ADSADS介绍及介绍及ARMARM汇编语言程序设计汇编语言程序设计 嵌入式系统设计嵌入式系统设计 9.1 9.1 裸机开发环境裸机开发环境n 何谓“裸机”?裸机是指无操作系统下
2、的ARM系统开发 其特点是所有硬件资源均开放 可以把它理解为一个高级单片机的开发n 裸机开发的作用 更能深入地从底层去理解ARM CPU的操作过程及系统设计 为日后自行设计系统打下基础 为bootloader的编写打好基础第第9 9章章 集成开发环境集成开发环境ADSADS介绍及介绍及ARMARM汇编语言程序设计汇编语言程序设计 嵌入式系统设计嵌入式系统设计 开发环境的作用开发环境的作用第第9 9章章 集成开发环境集成开发环境ADSADS介绍及介绍及ARMARM汇编语言程序设计汇编语言程序设计 嵌入式系统设计嵌入式系统设计 9.2 ADS IDE9.2 ADS IDE(集成开发环境(集成开发环
3、境)ARM应用软件的开发工具根据功能的不同,可以分为编辑软件、编译软件、汇编软件、链接软件、调试软件、嵌入式实时操作系统、函数库、评估板,JTAG仿真器以及在线仿真器等。目前有多家公司可以提供以上不同类型的开发工具,用户采用ARM处理器进行嵌入式系统开发时,选择合适的开发工具可以加快开发进度,节省开发成本。第第9 9章章 集成开发环境集成开发环境ADSADS介绍及介绍及ARMARM汇编语言程序设计汇编语言程序设计 嵌入式系统设计嵌入式系统设计 9.2.19.2.1 ADSADS工具包的组成工具包的组成 ADS是ARM公司推出的集成开发工具包,是专门用于ARM相关应用开发和调试的综合性软件。目前
4、常用的版本是1.2,在功能和易用性上比早期的SDT都有提高,是一款功能强大又易于使用的开发工具。ARM ADS包含有编译器、链接器、CodeWarrior IDE、调试器、指令集模拟器、ARM开发包和应用库等部分,可以用ADS来开发、编译、调试采用包括C、C+和ARM汇编语言编写的程序。第第9 9章章 集成开发环境集成开发环境ADSADS介绍及介绍及ARMARM汇编语言程序设计汇编语言程序设计 嵌入式系统设计嵌入式系统设计 9.2.2 ADS9.2.2 ADS开发工具集开发工具集 1.1.命令行开发工具命令行开发工具 ANSI C 编译器-armcc and tcc ISO/Embedded
5、C+编译器 -armcpp and tcpp ARM/Thumb 汇编器 arms Linker-armlink 第第9 9章章 集成开发环境集成开发环境ADSADS介绍及介绍及ARMARM汇编语言程序设计汇编语言程序设计 嵌入式系统设计嵌入式系统设计 2.2.图形开发工具:图形开发工具:Windows 集成开发环境 CodeWarrior Debugger AXD(ARM eXtended Debugger)armsd ARM(符号调试器)可向前兼容3.3.库文件:库文件:C and C+库4.4.辅助工具辅助工具/支持软件:支持软件:格式转换器-fromelf 指令级仿真 ARMulato
6、r 库管理器 armar第第9 9章章 集成开发环境集成开发环境ADSADS介绍及介绍及ARMARM汇编语言程序设计汇编语言程序设计 嵌入式系统设计嵌入式系统设计 fromELFfromELF:ARM映像文件转换工具 该命令将ELF格式的文件作为输入文件,将该格式转换为各种输出格式的文件,包括plain binary(BIN格式映像文件),Motorola 32-bit S-record format(Motorola 32位S格式映像文件),Intel Hex 32 format(Intel 32位格式映像文件),和 Verilog-like hex format(Verilog 16进制文
7、件)ArmarArmar:ARM库函数生成器将一系列ELF格式的目标文件以库函数的形式集合在一起,用户可以把一个库传递给一个链接器以代替几个ELF文件。Flash downloaderFlash downloader:用于把二进制映像文件下载到ARM开发板上的Flash存储器的工具ARMulatorARMulator:ARM指令集仿真器,集成在ARM的调试器AXD中,它提供对ARM处理器的指令集的仿真,为ARM和Thumb提供精确的模拟,用户可以在硬件尚未做好的情况下,开发程序代码。第第9 9章章 集成开发环境集成开发环境ADSADS介绍及介绍及ARMARM汇编语言程序设计汇编语言程序设计 嵌
8、入式系统设计嵌入式系统设计 名称描述使用方式代码生成工具ARM汇编器ARM C/C+编译器Thumb C/C+编译器ARM 链接器由Code Warrior调用 集成开发环境Code Warrior工程管理,编译链接调试器AXD/ADW/ADU/armsd仿真调试指令模拟器ARMulator由AXD调用ARM开发包一些底层的例程,实用程序(如fromELF)由Code Warrior调用ARM应用库C/C+等函数库用户程序调用工具调用及流程第第9 9章章 集成开发环境集成开发环境ADSADS介绍及介绍及ARMARM汇编语言程序设计汇编语言程序设计 嵌入式系统设计嵌入式系统设计 9.2.3 9.
9、2.3 集成开发环境集成开发环境CodeWarriorCodeWarrior使用使用 CodeWarrior集成开发环境为管理和开发项目提供了简单、多样化的图形用户界面。用户可以使用ADS的CodeWarrior IDE为ARM处理器开发用C,C+,或ARM汇编语言的程序代码。全面的项目管理功能。可以在CodeWarrior IDE为ARM配置以上所介绍的各种命令工具,实现对工程代码的编译,汇编和链接。第第9 9章章 集成开发环境集成开发环境ADSADS介绍及介绍及ARMARM汇编语言程序设计汇编语言程序设计 嵌入式系统设计嵌入式系统设计 C/C+Browser C/C+SensitiveEd
10、itorProjectManager第第9 9章章 集成开发环境集成开发环境ADSADS介绍及介绍及ARMARM汇编语言程序设计汇编语言程序设计 嵌入式系统设计嵌入式系统设计 建立工程第第9 9章章 集成开发环境集成开发环境ADSADS介绍及介绍及ARMARM汇编语言程序设计汇编语言程序设计 嵌入式系统设计嵌入式系统设计 第第9 9章章 集成开发环境集成开发环境ADSADS介绍及介绍及ARMARM汇编语言程序设计汇编语言程序设计 嵌入式系统设计嵌入式系统设计 uARM Executable Image:用于由ARM指令的代码生成一个 ELF格式的可执行映像文件。uARM Object Libr
11、ary:用于由ARM指令的代码生成一个 armar 格式的目标文件库。uEmpty Project:用于创建一个不包含任何库或源文件的工程。uMakefile Importer Wizard:用于将 Visual C 的 nmake 或 GNU make 文件转入到CodeWarrior IDE 工程文件。uThumb ARM Interworking Image:用于由 ARM指令和 Thumb 指令的混和代码生成一个可执行的ELF格式的映像文件。uThumb Executable image:用于由 Thumb指令创建一个可执行的ELF格式的映像文件。uThumb Object Libra
12、ry:用于由Thumb指令的代码生成一个 armar 格式的目标文件库。第第9 9章章 集成开发环境集成开发环境ADSADS介绍及介绍及ARMARM汇编语言程序设计汇编语言程序设计 嵌入式系统设计嵌入式系统设计 新建文件第第9 9章章 集成开发环境集成开发环境ADSADS介绍及介绍及ARMARM汇编语言程序设计汇编语言程序设计 嵌入式系统设计嵌入式系统设计 添加文件到工程第第9 9章章 集成开发环境集成开发环境ADSADS介绍及介绍及ARMARM汇编语言程序设计汇编语言程序设计 嵌入式系统设计嵌入式系统设计 生成目标设置第第9 9章章 集成开发环境集成开发环境ADSADS介绍及介绍及ARMAR
13、M汇编语言程序设计汇编语言程序设计 嵌入式系统设计嵌入式系统设计 每个工程项目都有下面3种生成目标:uDebug:包含所有调试信息uDebugRel:包含部分调试信息uRelease:不包含调试信息注:若项目编译只是为了调试使用,则选择Debug或者DebugRel;若要生成最后可以运行的文件,则最好选择Release。第第9 9章章 集成开发环境集成开发环境ADSADS介绍及介绍及ARMARM汇编语言程序设计汇编语言程序设计 嵌入式系统设计嵌入式系统设计 编译链接进入编译链接设置:第第9 9章章 集成开发环境集成开发环境ADSADS介绍及介绍及ARMARM汇编语言程序设计汇编语言程序设计 嵌
14、入式系统设计嵌入式系统设计 设置窗口:第第9 9章章 集成开发环境集成开发环境ADSADS介绍及介绍及ARMARM汇编语言程序设计汇编语言程序设计 嵌入式系统设计嵌入式系统设计 目标设置:第第9 9章章 集成开发环境集成开发环境ADSADS介绍及介绍及ARMARM汇编语言程序设计汇编语言程序设计 嵌入式系统设计嵌入式系统设计 在Targets Settings选项组中,Post-Linker用于选择链接器输出文件的处理方式。用户可以选择的值如下:None:不进行连接的处理。ARM fromELF:使用ARM工具fromELF处理链接器输出的ELF格式文件,它可以将ELF格式的文件转换为各种二进
15、制文件格式。Batch File Runner:在连接完成后运行一个DOS格式的批处理文件。若用户在编译完成后只是用AXD来调试程序,建议选择None;若要生成最后的编程文件,建议选择ARM fromELF,该选项与Linker面板中的ARM fromELF选项结合来产生最终的编程文件。第第9 9章章 集成开发环境集成开发环境ADSADS介绍及介绍及ARMARM汇编语言程序设计汇编语言程序设计 嵌入式系统设计嵌入式系统设计 CPU设置:第第9 9章章 集成开发环境集成开发环境ADSADS介绍及介绍及ARMARM汇编语言程序设计汇编语言程序设计 嵌入式系统设计嵌入式系统设计 Linker设置:第
16、第9 9章章 集成开发环境集成开发环境ADSADS介绍及介绍及ARMARM汇编语言程序设计汇编语言程序设计 嵌入式系统设计嵌入式系统设计 在 Output format 下拉框中,为用户提供了多种可以转换的目标格式,这里选择 Plain binary,这是一个二进制格式的可执行文件,可以被烧写在目标板的 Flash中。在 Output file name 文本域输入期望生成的输出文件存放的路径,或通过点击 Choose.按钮从文件对话框中选择输出文件路径。如果在这个文本域不输入路径名,则生成的二进制文件存放在工程所在的目录下。第第9 9章章 集成开发环境集成开发环境ADSADS介绍及介绍及AR
17、MARM汇编语言程序设计汇编语言程序设计 嵌入式系统设计嵌入式系统设计 第第9 9章章 集成开发环境集成开发环境ADSADS介绍及介绍及ARMARM汇编语言程序设计汇编语言程序设计 嵌入式系统设计嵌入式系统设计 在标签页 Output 中,Linktype 中提供了 3 种链接方式:Partia:表示链接器只进行部分链接,经过部分链接生成的目标文件,可以作为以后进一步链接时的输入文件。Simple:默认的链接方式,也是使用最为频繁的链接方式,它链接生成简单的 ELF 格式的目标文件,使用的是链接器选项中指定的地址映射方式。Scattered:使得链接器要根据 scatter 格式文件中指定的地
18、址映射,生成复杂的 ELF 格式的映像文件。一般情况下这个选项使用不太多。第第9 9章章 集成开发环境集成开发环境ADSADS介绍及介绍及ARMARM汇编语言程序设计汇编语言程序设计 嵌入式系统设计嵌入式系统设计 在选中 Simple 方式后,就会出现 Simple image。R0 Base:这个文本框设置包含有 R0 段的加载域和运行域为同一个地址,默认是 0 x8000。这里用户要根据硬件的实际 SDRAM 的地址空间来修改这个地址,保证在这里填写的地址是程序运行时 SDRAM 地址空间所能覆盖的地址。RW Base:这个文本框设置包含 RW 和 ZI 输出段的运行域地址。如果选中 sp
19、lit 选项,链接器生成的映像文件将包含 2 个加载域和 2 个运行域,此时,在 RW Base 中所输入的地址为包含 RW 和 ZI 输出段的域设置了加载域和运行域地址。第第9 9章章 集成开发环境集成开发环境ADSADS介绍及介绍及ARMARM汇编语言程序设计汇编语言程序设计 嵌入式系统设计嵌入式系统设计 第第9 9章章 集成开发环境集成开发环境ADSADS介绍及介绍及ARMARM汇编语言程序设计汇编语言程序设计 嵌入式系统设计嵌入式系统设计 在 Options 选项中,需要注意的是 Image entry point 文本框。它指定映像文件的初始入口点地址值,当映像文件被加载程序加载时,
20、加载程序会跳转到该地址处执行。如果需要,用户可以在这个文本框中输入下面格式的入口点。入口点地址:这是一个数值,例如-entry 0 x0。符号:该选项指定映像文件的入口点为该符号所代表的地址处。比如:-entry int_handler。在此处指定的入口点用于设置 ELF 映像文件的入口地址。需要注意的是,这 里不可以用符号 main 作为入口点地址符号,否则将会出现“Image dose not have an entry point(Not specified or not set due to multiple choice)”的出错信息。第第9 9章章 集成开发环境集成开发环境ADSA
21、DS介绍及介绍及ARMARM汇编语言程序设计汇编语言程序设计 嵌入式系统设计嵌入式系统设计 Layout选项在连接方式为Simple时有效,用来安排一些输入段在映像文件中的位置。在上图中,Place at Beginning of Image选项用于指定某个输入段放置在它所在的运行时域的开头。第第9 9章章 集成开发环境集成开发环境ADSADS介绍及介绍及ARMARM汇编语言程序设计汇编语言程序设计 嵌入式系统设计嵌入式系统设计 编译链接:第第9 9章章 集成开发环境集成开发环境ADSADS介绍及介绍及ARMARM汇编语言程序设计汇编语言程序设计 嵌入式系统设计嵌入式系统设计 第第9 9章章
22、集成开发环境集成开发环境ADSADS介绍及介绍及ARMARM汇编语言程序设计汇编语言程序设计 嵌入式系统设计嵌入式系统设计 文件输出文件输出第第9 9章章 集成开发环境集成开发环境ADSADS介绍及介绍及ARMARM汇编语言程序设计汇编语言程序设计 嵌入式系统设计嵌入式系统设计 9.2.4 AXD9.2.4 AXD调试工具的使用调试工具的使用 在软件开发的最初阶段,可能还没有具体的硬件设备。如果要测试所开发的软件是否达到了预期的效果,这可以由软件仿真来完成。当然,也可以搭建一个PCB板,这个板上可以包含一个或多个处理器,在这个板上可以运行和调试应用软件。只有当通过硬件或者是软件仿真所得到的结果
23、达到了预期的效果,才算是完成了应用程序的编写工作。第第9 9章章 集成开发环境集成开发环境ADSADS介绍及介绍及ARMARM汇编语言程序设计汇编语言程序设计 嵌入式系统设计嵌入式系统设计 调试器能够发送以下指令:调试器能够发送以下指令:装载映像文件到目标内存;启动或停止程序的执行;显示内存,寄存器或变量的值;允许用户改变存储的变量值。第第9 9章章 集成开发环境集成开发环境ADSADS介绍及介绍及ARMARM汇编语言程序设计汇编语言程序设计 嵌入式系统设计嵌入式系统设计 进入进入AXDAXD调试工具调试工具第第9 9章章 集成开发环境集成开发环境ADSADS介绍及介绍及ARMARM汇编语言程
24、序设计汇编语言程序设计 嵌入式系统设计嵌入式系统设计 在菜单File中选择“Load image”选项,打开 Load Image对话框,找到要装载的.axf映像文件,点击“打开”按钮,就把映像文件装载到目标内存中了。第第9 9章章 集成开发环境集成开发环境ADSADS介绍及介绍及ARMARM汇编语言程序设计汇编语言程序设计 嵌入式系统设计嵌入式系统设计 Docking windowsDocking toolbarsRegistersSource/Disassembly Memory 第第9 9章章 集成开发环境集成开发环境ADSADS介绍及介绍及ARMARM汇编语言程序设计汇编语言程序设计
25、嵌入式系统设计嵌入式系统设计 选择调试目标:选择调试目标:点击ADX窗口菜单【Options】选择【Configure Target】,即弹出Choose Target 窗口,在没有添加其它仿真驱动程序前,Target 项中只有两项,分别为ADP(JTAG 硬件仿真)和ARMUL(软件仿真)。第第9 9章章 集成开发环境集成开发环境ADSADS介绍及介绍及ARMARM汇编语言程序设计汇编语言程序设计 嵌入式系统设计嵌入式系统设计 调试工具条,从左到右依次为:调试工具条,从左到右依次为:全速运行(Go)停止运行(Stop)单步运行(Step In),与Step 命令不同之处在于对函数调用语句,S
26、tep In 命令将进入该函数。单步运行(Step),每次执行一条语句,这时函数调用将被作为一条语句执行。单步运行(Step Out),执行完当前被调用的函数,停止在函数调用的下一条语句。运行到光标(Run To Cursor),运行程序直到当前光标所在行时停止。设置断点(Toggle BreakPoint)第第9 9章章 集成开发环境集成开发环境ADSADS介绍及介绍及ARMARM汇编语言程序设计汇编语言程序设计 嵌入式系统设计嵌入式系统设计 调试观察窗口工具条,从左到右依次为:打开寄存器窗口(Processor Registers)打开观察窗口(Processor Watch)打开变量观察
27、窗口(Context Variable)打开堆栈观察窗口(Back Trace)打开存储器观察窗口(Memory)打开反汇编窗口(Disassembly)第第9 9章章 集成开发环境集成开发环境ADSADS介绍及介绍及ARMARM汇编语言程序设计汇编语言程序设计 嵌入式系统设计嵌入式系统设计 处理器状态观察:处理器状态观察:包括:寄存器 变量 存储器第第9 9章章 集成开发环境集成开发环境ADSADS介绍及介绍及ARMARM汇编语言程序设计汇编语言程序设计 嵌入式系统设计嵌入式系统设计 存储器窗口:存储器窗口:包括:显示格式 修改操作第第9 9章章 集成开发环境集成开发环境ADSADS介绍及介
28、绍及ARMARM汇编语言程序设计汇编语言程序设计 嵌入式系统设计嵌入式系统设计 单步执行、断点:单步执行、断点:第第9 9章章 集成开发环境集成开发环境ADSADS介绍及介绍及ARMARM汇编语言程序设计汇编语言程序设计 嵌入式系统设计嵌入式系统设计 添加变量进行观察:添加变量进行观察:第第9 9章章 集成开发环境集成开发环境ADSADS介绍及介绍及ARMARM汇编语言程序设计汇编语言程序设计 嵌入式系统设计嵌入式系统设计 9.2.5 Wiggler JTAG 仿真器的安装与应用简介H-JTAG调试代理使用Wiggler JTAG Wiggler JTAG 仿真器第第9 9章章 集成开发环境集
29、成开发环境ADSADS介绍及介绍及ARMARM汇编语言程序设计汇编语言程序设计 嵌入式系统设计嵌入式系统设计 简介 MagicARM2410 实验箱配套的Wiggler JTAG 仿真器,支持ADS1.2 集成开发环境,支持单步、全速及断点等调试功能。仿真器采用ARM 公司提出的标准20 脚JTAG 仿真调试接口,与计算机连接采用标准25 针并口(即打印机口)。第第9 9章章 集成开发环境集成开发环境ADSADS介绍及介绍及ARMARM汇编语言程序设计汇编语言程序设计 嵌入式系统设计嵌入式系统设计 要使用Wiggler JTAG 仿真器来调试ARM 处理器,除了ADS1.2 集成开发环境外,还
30、需要安装一个ARM 调试代理软件;推荐使用H-JTAG 软件,H-JTAG 软件的特点如下:支持ARM7/ARM9,支持自动检测和手动指定内核;使用RDI 接口,支持SDT2.51、ADS1.2、REALVIEW 和IAR 集成开发环境;支持ARM/Thumb 模式;支持Little Endian&BIG Endian 模式;支持Wiggler、SDT JTAG 和自定义接口;H-JTAG调试代理第第9 9章章 集成开发环境集成开发环境ADSADS介绍及介绍及ARMARM汇编语言程序设计汇编语言程序设计 嵌入式系统设计嵌入式系统设计 使用Wiggler JTAG 仿真器双击桌面“H-JTAG”
31、快捷方式启动H-JTAG 会自动检测ARM 内核,如果JTAG 连接正确将会在H-JTAG 主窗口中显示S3C2410A 处理器的内核ARM920T在进行JTAG 仿真调试时,不要关闭H-JTAG 软件第第9 9章章 集成开发环境集成开发环境ADSADS介绍及介绍及ARMARM汇编语言程序设计汇编语言程序设计 嵌入式系统设计嵌入式系统设计 将计算机并口与Wiggler JTAG 仿真器连接;将仿真器JTAG口接头插入MagicARM2410实验箱主板的J29上;通过AXD 软件的设置即可进行JTAG仿真调试;第第9 9章章 集成开发环境集成开发环境ADSADS介绍及介绍及ARMARM汇编语言程
32、序设计汇编语言程序设计 嵌入式系统设计嵌入式系统设计 程序固化 在JTAG 仿真调试通过后,要将程序调试生成十六进制文件并下载到外部的NOR Flash(即固化程序),才可脱机运行。生成HEX HEX 文件。使用Flash Programmer Flash Programmer 烧写FlashFlash。第第9 9章章 集成开发环境集成开发环境ADSADS介绍及介绍及ARMARM汇编语言程序设计汇编语言程序设计 嵌入式系统设计嵌入式系统设计 生成HEX 文件 在当前工程窗口中选用Release 生成目标,打开工程的DebugRel Settings 窗口,在TargetSettings 项中设
33、置Post-linker 选取ARM fromELF。在ARM formELF 项中设置输出文件类型,如设置为Intel 32 bit Hex,然后设置输出文件名。生成文件默认存放在当前工程的xxx_DataRelease”目录中。重新编译连接工程即可生成 十六进制文件。第第9 9章章 集成开发环境集成开发环境ADSADS介绍及介绍及ARMARM汇编语言程序设计汇编语言程序设计 嵌入式系统设计嵌入式系统设计 使用Flash Programmer 烧写Flash 将MagicARM2410 MagicARM2410 实验箱主板上的JP8 JP8 跳线器断开,选用NOR Flash NOR Fla
34、sh 启动方式,按RST RST 键复位系统 将Wiggler JTAG 仿真器的25 针接口通过并口延长线与PC 机的并口LPT1 连接,将Wiggler JTAG 仿真器的20 针接口通过20 PIN 连接电缆接到MagicARM2410 实验箱主板的J29 上 将配置文件DeviceARM2410.ocd 复制D:目录下。启动Flash Programmer 点击Program按钮,下载程序至目标板的Flash 中 脱机运行第第9 9章章 集成开发环境集成开发环境ADSADS介绍及介绍及ARMARM汇编语言程序设计汇编语言程序设计 嵌入式系统设计嵌入式系统设计 9.3 ARM9.3 AR
35、M汇编伪指令汇编伪指令 在 ARM 汇编语言程序里,有一些特殊指令助记符,这些助记符与指令系统的助记符不同,没有相对应的操作码,也就是不会生成机器码,仅仅是在编译器软件中起着格式化的作用,通常称这些特殊指令助记符为伪指令。伪指令在源程序中的作用是为完成汇编程序作各种准备工作的,这些伪指令仅在汇编过程中起作用,一旦汇编结束,伪指令的使命就完成。在 ARM 的汇编程序中,有如下几种伪指令:数据常量定义伪指令、数据变量定义伪指令、内存分配伪指令及其他伪指令。第第9 9章章 集成开发环境集成开发环境ADSADS介绍及介绍及ARMARM汇编语言程序设计汇编语言程序设计 嵌入式系统设计嵌入式系统设计 9.
36、3.1 数据常量定义伪指令 数据常量定义伪指令EQU用于为程序中的常量、标号等定义一个等效的字符名称,类似于C语言中的#define。EQU语法格式:名称 EQU 表达式 ,类型 ;其中 EQU 可用“*”代替。名称为EQU伪指令定义的字符名称,当表达式为32 位的常量时,可以指定表达式的数据类型,可以有以下三种类型:CODE16、CODE32和DATA。第第9 9章章 集成开发环境集成开发环境ADSADS介绍及介绍及ARMARM汇编语言程序设计汇编语言程序设计 嵌入式系统设计嵌入式系统设计 9.3.4 汇编控制伪指令 汇编控制伪指令用于控制汇编程序的执行流程,常用的汇编控制伪指令包括以下几条
37、:(1 1)IFIF、ELSEELSE、ENDIFENDIF 语法格式:IF 逻辑表达式 指令序列 1 ELSE 指令序列 2 ENDIF (2 2)WHILEWHILE、WENDWEND 语法格式:WHILE 逻辑表达式 指令序列 WEND 第第9 9章章 集成开发环境集成开发环境ADSADS介绍及介绍及ARMARM汇编语言程序设计汇编语言程序设计 嵌入式系统设计嵌入式系统设计 9.3.5 其他常用的伪指令 还有一些其他的伪指令,在汇编程序中经常会被使用,主要包括AREA、ALIGN、CODE16、CODE32、ENTRY、END、EXPOR(或 GLOBAL)IMPORT、EXTERN、G
38、ET(或 INCLUDE)INCBIN、RN、ROUT等。第第9 9章章 集成开发环境集成开发环境ADSADS介绍及介绍及ARMARM汇编语言程序设计汇编语言程序设计 嵌入式系统设计嵌入式系统设计 (1 1)AREAAREA 语法格式:AREA 段名 属性 1,属性 2,AREA 伪指令用于定义一个代码段或数据段。其中,段名若以数字开头,则该段名需用“|”括起来,如|1_test|。属性字段表示该代码段(或数据段)的相关属性,多个属性用逗号分隔。第第9 9章章 集成开发环境集成开发环境ADSADS介绍及介绍及ARMARM汇编语言程序设计汇编语言程序设计 嵌入式系统设计嵌入式系统设计 (2 2)
39、ALIGNALIGN 语法格式:ALIGN 表达式 ,偏移量 (3 3)CODE16CODE16、CODE32CODE32 语法格式:CODE16(或 CODE32)(4 4)ENTRYENTRY 语法格式:ENTRY (5 5)ENDEND 语法格式:END(6 6)EXPORTEXPORT(或(或GLOBALGLOBAL)语法格式:EXPORT 标号 WEAK (7(7)IMPORTIMPORT 语法格式:IMPORT 标号 WEAK 第第9 9章章 集成开发环境集成开发环境ADSADS介绍及介绍及ARMARM汇编语言程序设计汇编语言程序设计 嵌入式系统设计嵌入式系统设计 (5 5)END
40、END 语法格式:END(6 6)EXPORTEXPORT(或(或GLOBALGLOBAL)语法格式:EXPORT 标号 WEAK(7(7)IMPORTIMPORT 语法格式:IMPORT 标号 WEAK (8 8)EXTERNEXTERN 语法格式:EXTERN 标号 WEAK(9 9)GETGET(或(或INCLUDEINCLUDE)语法格式:GET 文件名(1010)INCBININCBIN 语法格式:INCBIN 文件名(1111)RNRN 语法格式:名称 RN 表达式 第第9 9章章 集成开发环境集成开发环境ADSADS介绍及介绍及ARMARM汇编语言程序设计汇编语言程序设计 嵌入式
41、系统设计嵌入式系统设计 9.4 ARM9.4 ARM的汇编语言结构的汇编语言结构 在ARM(Thumb)汇编语言程序中,以相对独立的指令或数据序列的程序段为单位组织程序代码。段可以分为代码段和数据段,代码段的内容为执行代码,数据段存放代码运行时需要用到的数据。一个汇编程序至少应该有一个代码段,也可以分割为多个代码段和数据段,多个段在程序编译链接时最终形成一个可执行的映象文件。可执行映象文件通常由以下几部分构成:一个或多个代码段,代码段的属性为只读。零个或多个包含初始化数据的数据段,数据段的属性为可读写。零个或多个不包含初始化数据的数据段,数据段的属性为可读写。第第9 9章章 集成开发环境集成开
42、发环境ADSADS介绍及介绍及ARMARM汇编语言程序设计汇编语言程序设计 嵌入式系统设计嵌入式系统设计 9.4.1 ARM汇编语言的语句格式 1.1.基本语句格式基本语句格式ARM(Thumb)汇编语言的语句格式为:标号指令或伪指令;注释规则:如果一条语句太长,可将其分为若干行来书写,在行的末用续行符“”来标识下一行与本行为同一条语句。每一条指令的助记符可以全部用大写、或全部用小写,但不能在一条指令中大、小写混用。第第9 9章章 集成开发环境集成开发环境ADSADS介绍及介绍及ARMARM汇编语言程序设计汇编语言程序设计 嵌入式系统设计嵌入式系统设计 2.2.汇编语言程序中常用的符号汇编语言
43、程序中常用的符号 在汇编语言程序设计中,可以使用各种符号代替地址、变量和常量等,以增加程序的可读性。以下为符号命名的约定:符号名不应与指令或伪指令同名 符号在其作用范围内必须唯一。符号区分大小写,同名的大、小写符号被视为两个不同的符号。自定义的符号名不能与系统保留字相同。第第9 9章章 集成开发环境集成开发环境ADSADS介绍及介绍及ARMARM汇编语言程序设计汇编语言程序设计 嵌入式系统设计嵌入式系统设计 3.3.程序中的常量程序中的常量 程序中的常量是指其值在程序的运行过程中不能被改变的量。ARM(Thumb)汇编程序所支持的常量有逻辑常量、数字常量和字符串常量。数字常量一般为32位的整数
44、,无符号常量取值范围为0232-1,有符号常量取值范围为-231231-1。逻辑常量只有两种取值:真或假。字符串常量为一个固定的字符串,一般用来提示程序运行时的信息。第第9 9章章 集成开发环境集成开发环境ADSADS介绍及介绍及ARMARM汇编语言程序设计汇编语言程序设计 嵌入式系统设计嵌入式系统设计 4.4.汇编语言程序中的变量汇编语言程序中的变量 程序中的变量是指其值在程序的运行过程中可以改变的量。逻辑变量用于在程序的运行中保存逻辑值(真/假)。数字变量用于在程序的运行中保存数字值,但数字值的大小不应超出数字变量所能表示的范围。字符串变量用于在程序的运行中保存一个字符串,但字符串的长度不
45、应超出字符串变量所能表示的范围。第第9 9章章 集成开发环境集成开发环境ADSADS介绍及介绍及ARMARM汇编语言程序设计汇编语言程序设计 嵌入式系统设计嵌入式系统设计 5.5.程序中的变量代换程序中的变量代换 程序中的变量可通过代换操作取得一个常量。代换操作符为“$”。如果“$”在数字变量前面,编译器会将该数字变量的值转换为十六进制的字符串,并将该十六进制的字符串代换“$”后的数字变量。第第9 9章章 集成开发环境集成开发环境ADSADS介绍及介绍及ARMARM汇编语言程序设计汇编语言程序设计 嵌入式系统设计嵌入式系统设计 9.4.2 基于Windows下ADS的汇编语言程序结构 ADS环
46、境下的ARM汇编语言程序结构与其它环境下的汇编语言程序结构大体相同,整个程序也是以段为单元来组织代码。其语法规则总结如下:所有标号必须在一行的顶格书写,其后不要添加“:”号;所有的指令均不能顶格写;大小写敏感(可以全部大写或全部小写,但不能大小写混合使用);注释使用分号“;”。第第9 9章章 集成开发环境集成开发环境ADSADS介绍及介绍及ARMARM汇编语言程序设计汇编语言程序设计 嵌入式系统设计嵌入式系统设计 9.5 ARM9.5 ARM汇编语言程序调试汇编语言程序调试 无论进行嵌入式系统软件开发还是硬件电路设计,调试永远是不可缺少的、非常重要的一个环节。通常嵌入式系统的调试方法和类型有很
47、多种,最为常见的包括软件模拟调试、硬件仿真器在线调试、Wiggler线缆调试和Linux环境下的gdb程序调试。第第9 9章章 集成开发环境集成开发环境ADSADS介绍及介绍及ARMARM汇编语言程序设计汇编语言程序设计 嵌入式系统设计嵌入式系统设计 9.5.1 ADS软件模拟环境下的程序调试 ADS软件模拟调试是利用ARMUL.dll提供的一个软ARM内核,调试工具和待调试的嵌入式软件都在主机上运行,由主机提供一个模拟的目标运行环境,可以进行语法和逻辑上的调试。它的优点是简单方便,不需要嵌入式目标板,软件的调试功能较强;功能有限,不能进行实时联机调试。第第9 9章章 集成开发环境集成开发环境
48、ADSADS介绍及介绍及ARMARM汇编语言程序设计汇编语言程序设计 嵌入式系统设计嵌入式系统设计 9.5.2 ADS硬件仿真器环境下的程序调试 在ADS环境下利用JTAG硬件仿真器可以实现联机调试,即在线调试嵌入式设备的Flash中的程序或者SDRAM中的程序。由于仿真器自成体系,调试时既可以连接目标板,也可以不连接目标板,当然仿真器的价格也相对比较贵。一般在程序的前期开发,通常让程序只在SDRAM中调试运行,最后才下载到Flash中进行调试运行。第第9 9章章 集成开发环境集成开发环境ADSADS介绍及介绍及ARMARM汇编语言程序设计汇编语言程序设计 嵌入式系统设计嵌入式系统设计 ARM
49、仿真器是通过内部硬件实现PC并口协议到串行JTAG(Jiont Test Action Gruop)协议的转换。利用高速JTAG串行扫描链,通过调试通信通道(Debug Communications Channel,DCC)连接ARM核心内嵌的名为“Embedded-ICE”的调试逻辑,调试逻辑实时监测ARM核心的寄存器、数据总线和地址总线。第第9 9章章 集成开发环境集成开发环境ADSADS介绍及介绍及ARMARM汇编语言程序设计汇编语言程序设计 嵌入式系统设计嵌入式系统设计 配置配置ADSADS以支持以支持JTAGJTAG仿真器仿真器启动ADS的调试器AXD后,从菜单“Option”中选择
50、“Configure Target”,在弹出的窗口中,添加或选择H-JTAG.dll(如图所示)。第第9 9章章 集成开发环境集成开发环境ADSADS介绍及介绍及ARMARM汇编语言程序设计汇编语言程序设计 嵌入式系统设计嵌入式系统设计 9.6 ARM9.6 ARM汇编语言与汇编语言与C C语言混合编程语言混合编程 ARM体系结构支持C/C+以及汇编语言的混合编程,在一个完整的程序设计中,除了初始化部分用汇编完成以外,其主要的编程任务一般都用C/C+完成。汇编语言和C/C+的混合编程通常有以下几种方式:汇编程序中调用C程序 C程序中调用汇编程序 C程序中内嵌汇编语句 从汇编程序中访问C程序变量
侵权处理QQ:3464097650--上传资料QQ:3464097650
【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。