《第9章 ARM汇编语言程序设计基础(87).ppt》由会员分享,可在线阅读,更多相关《第9章 ARM汇编语言程序设计基础(87).ppt(88页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、AFSlide1ARM9ARM9嵌入式系统设计基础教程嵌入式系统设计基础教程江苏大学计算机科学与通信工程学院江苏大学计算机科学与通信工程学院通通 信信 工工 程程 系系陈祖爵陈祖爵E-mail:E-mail: TEL:13775360008TEL:137753600082023/1/151AFSlide2课程理论教学内容安排第第1 1章章 嵌入式系统基础知识嵌入式系统基础知识第第2 2章章 ARM ARM体系结构体系结构第第3 3章章 32 Bit RISC32 Bit RISC微处理器微处理器S3C2410AS3C2410A第第4 4章章 嵌入式系统的存储器系统嵌入式系统的存储器系统第第5
2、5章章 嵌入式系统输入嵌入式系统输入/输出设备接口输出设备接口第第6 6章章 嵌入式系统总线接口嵌入式系统总线接口第第7 7章章 嵌入式系统网络接口嵌入式系统网络接口第第8 8章章 嵌入式系统嵌入式系统软件及操作系统基础软件及操作系统基础软件及操作系统基础软件及操作系统基础第第9 9章章 ARMARM汇编语言程序设计基础汇编语言程序设计基础第第1010章章 BootloaderBootloader设计基础设计基础第第1111章章 LinuxLinux操作系统基础操作系统基础第第1212章章 嵌入式嵌入式LinuxLinux软件设计软件设计第第1313章章 图形用户接口(图形用户接口(GUIGU
3、I)2023/1/152AFSlide3第第9章章ARM汇编语言程序设计基础汇编语言程序设计基础9.1ADS集成开发环境4-329.2ARM汇编伪指令33-499.3ARM的汇编语言结构50-609.4ARM汇编语言程序调试61-749.5ARM汇编语言与C语言混合编程 75-872023/1/153AFSlide49.19.1ADSADS集成开发环境集成开发环境 ARM ARM应用软件的应用软件的开发工具开发工具根据功能的不同,可以分为根据功能的不同,可以分为编辑软编辑软件件、编译软件编译软件、汇编软件汇编软件、链接软件链接软件、调试软件调试软件、嵌入式实时、嵌入式实时操作系统操作系统、函数
4、库函数库、评估板评估板,JTAGJTAG仿真器仿真器以及以及在线仿真器在线仿真器等。等。目前有多家公司可以提供以上不同类型的开发工具,用户采用目前有多家公司可以提供以上不同类型的开发工具,用户采用ARMARM处理器进行嵌入式系统开发时,选择处理器进行嵌入式系统开发时,选择合适的开发工具合适的开发工具可以加可以加快开发快开发进度进度,节省开发,节省开发成本成本。通常将编辑软件、编译软件、汇。通常将编辑软件、编译软件、汇编软件、链接软件、调试软件、工程管理及函数库等都包含在编软件、链接软件、调试软件、工程管理及函数库等都包含在一起的一起的集成开发环境集成开发环境(IDEIDE)较为常见,也是进行嵌
5、入式系统开发较为常见,也是进行嵌入式系统开发时必不可少的。时必不可少的。目前,典型的目前,典型的ARM IDEARM IDE有有STDSTD(Software Development kiT)(Software Development kiT)、ADSADS(ARM Developer Suite)(ARM Developer Suite)、MultiMulti 2000 2000、EmbestEmbest、HitoolHitool for for ARMARM等。等。2023/1/154AFSlide59.1.19.1.1ADSADS工具包的组成工具包的组成 ADSADS是是ARMARM公司
6、推出公司推出的集成开发工具包,专用于的集成开发工具包,专用于ARMARM应用开发和应用开发和调试的综合性软件。目前常用的调试的综合性软件。目前常用的版本版本是是1.21.2,在,在功能功能和和易用性易用性上上比比早期的早期的SDTSDT都有都有提高提高,是一款功能强大又易于使用的开发工具。,是一款功能强大又易于使用的开发工具。ARM ADSARM ADS包含有包含有编译器编译器、链接器链接器、CodeWarrior CodeWarrior IDEIDE、调试器调试器、指令集模拟器指令集模拟器、ARMARM开发包开发包和和应用库应用库等部分,可以用等部分,可以用ADSADS开发、开发、编译、调试
7、采用包括编译、调试采用包括C C、C+C+和和ARMARM汇编语言编写的程序。汇编语言编写的程序。1.1.编译器编译器 ADS ADS提供多种编译器提供多种编译器,以支持以支持ARMARM和和ThumbThumb指令的编译指令的编译,包含有包含有armcc(ARM Carmcc(ARM C编译器编译器)、tcc(Thumb Ctcc(Thumb C编译器编译器)、armcpp(ARM C+armcpp(ARM C+编译器编译器)tcpp(Thumb C+tcpp(Thumb C+编译器编译器)和和armasm(ARMarmasm(ARM和和ThumbThumb汇编器汇编器).2023/1/15
8、5AFSlide62.2.链接器链接器 ArmlinkArmlink(ARMARM链链接接器器)可可以以将将编编译译得得到到的的一一个个或或多多个个目目标标文文件件和和相相关关的的一一个个或或多多个个库库文文件件进进行行链链接接,生生成成一一个个可可执执行行文文件件,也也可可以以将将多多个个目目标标文文件件部部分分链链接接成成一一个个目目标标文文件件,以以供供进进一一步步的链接。的链接。采用有采用有ARMARM公司的公司的源程序编辑源程序编辑、汇编汇编及及链接工具链接工具,针对,针对ARMARM系系列的每一种结构都进行了专门的优化处理,其代码生成工具最列的每一种结构都进行了专门的优化处理,其代
9、码生成工具最终生成的可执行终生成的可执行文件最小文件最小,可以比其他公司工具套件生成的文,可以比其他公司工具套件生成的文件件小小20%20%。2023/1/156AFSlide73.3.CodeWarrior IDECodeWarrior IDE CodeWarrior CodeWarrior IDEIDE(集集成成开开发发环环境境)包包括括工工程程管管理理器器、代代码码生生成成接接口口、语语法法敏敏感感编编辑辑器器、源源文文件件和和类类浏浏览览器器、源源代代码码版版本本控控制制系系统统接接口口以以及及文文本本搜搜索索引引擎擎等等。ADSADS仅仅在在其其PCPC机机版版本本中中集集成成了该了
10、该IDEIDE。CodeWarrior IDE CodeWarrior IDE为为管理管理和和开发项目提供开发项目提供了简单多样化的了简单多样化的图图形用户界面形用户界面,用户可以使用,用户可以使用ADSADS的的CodeWarrior IDECodeWarrior IDE为为ARMARM和和ThumbThumb处理器开发用处理器开发用C C、C+C+或者或者ARMARM汇编语言编写的程序代码。汇编语言编写的程序代码。2023/1/157AFSlide84.4.调试器调试器 (1 1)调试器类型)调试器类型 ADSADS中中包包含含有有3 3个个调调试试器器,分分别别是是ARMARM扩扩展展调
11、调试试器器AXDAXD,向向下下兼兼容容的的ADW(ARM ADW(ARM debugger debugger for for windowswindows)、ADUADU(ARM(ARM Debugger Debugger for for UNIXUNIX)和和ARMARM符符号号调调试试器器armsdarmsd。ArmsdArmsd是是命命令令调调试试工工具具,用用于于辅辅助助调调试试,或或者者用用于于其其他他操操作作系系统统平平台台上上,能能进进行行源源码码级级的的程程序序调调试试。用用户户可可以以用用C C语语言言或或汇汇编编语语言言编编写写的的代代码码中中进行单步调试,设置断点,查看
12、量值和内存单元的内容。进行单步调试,设置断点,查看量值和内存单元的内容。(2 2)调试方式)调试方式 在在 ARMARM体体 系系 中中,可可 以以 选选 择择 Multi-ICEMulti-ICE(Multi-processor Multi-processor in-circuit in-circuit emulatoremulator)ARMulatorARMulator或或AngelAngel多种调试方式。多种调试方式。Multi-ICEMulti-ICE是是ARMARM公司自己的公司自己的JTAGJTAG在线仿真器在线仿真器产品产品,不是由不是由ADSADS提供的。提供的。ARMula
13、torARMulator是是ARMARM指指令令集集模模拟拟器器,集集成成在在ARMARM调调试试器器AXDAXD中中,提提供供对对ARMARM处处理理器器的的指指令令集集的的仿仿真真,为为ARMARM和和ThumbThumb提提供供精精确确模模拟拟。在在硬硬件件尚尚未未做做好好的的情情况况下下,在在PCPC机上开发程序代码,利用模拟器方式调试,实现部分调试工作。机上开发程序代码,利用模拟器方式调试,实现部分调试工作。AngelAngel是是ARMARM常驻在常驻在目标机目标机FlashFlash中的监控程序中的监控程序,通过,通过RS-232CRS-232C与与PCPC机相连,机相连,就可以
14、在就可以在PCPC机上对基于机上对基于ARMARM架构处理器的目标机进行监控器方式的调试。架构处理器的目标机进行监控器方式的调试。2023/1/158AFSlide95.5.ARMARM开发包和函数库开发包和函数库 ARMARM开开发发包包由由一一些些底底层层的的例例程程和和库库组组成成,用用户户可可快快速速开开发发ARMARM的应用程序和操作系统。的应用程序和操作系统。ADSADS的的ARMARM应应用用库库完完善善并并增增强强了了SDTSDT中中的的函函数数库库,还还包包括括有有用用的的源源码码例例程程。使使用用ARMADSARMADS开开发发应应用用程程序序与与使使用用ARM ARM S
15、DTSDT完完全全相相同同,可可选选择择使使用用AngleAngle驻驻留留模模块块或或JTAGJTAG仿仿真真器器。目目前前大大部部分分JTAGJTAG仿仿真真器都支持器都支持ARM ADSARM ADS。ADS ADS提供提供ANSI CANSI C函数库函数库和和C+C+函数库函数库,支持被编译的,支持被编译的C C和和C+C+代代码。用户可把码。用户可把C C函数库中的与目标相关的函数作为应用程序中的函数库中的与目标相关的函数作为应用程序中的一部分,重新进行代码的实现。在一部分,重新进行代码的实现。在C C函数库中很多函数是独立于函数库中很多函数是独立于其他函数,并与目标硬件没任何依赖
16、关系。用户可根据应用程其他函数,并与目标硬件没任何依赖关系。用户可根据应用程序的要求,对与目标无关的序的要求,对与目标无关的库函数库函数进行进行适当适当的的裁剪裁剪和和利用利用。2023/1/159AFSlide10 TypicalTypical安装模式后的安装模式后的ADSADS工具包工具包 下图是采用下图是采用TypicalTypical安装模式后,在程序栏里看到的安装模式后,在程序栏里看到的ADSADS工具工具包包组成,其中主要就是组成,其中主要就是CodeWarriorCodeWarrior编译器编译器和和AXDAXD调试器调试器这两个这两个图形界面开发工具。图形界面开发工具。2023
17、/1/1510AFSlide119.1.29.1.2ADSADS开发工具集开发工具集1.1.命令行开发工具命令行开发工具 命命令令行行开开发发工工具具在在实实际际应应用用中中相相对对比比较较广广泛泛,使使用用它它最最大大的的好好处处就就是是可可以以将将许许多多编编译译命命令令写写在在一一个个脚脚本本文文件件中中,然然后后只只执执行行该该脚脚本本文文件件就就可可以以让让工工具自动地完成所有的编译工作命令行中常用的命令如下:具自动地完成所有的编译工作命令行中常用的命令如下:(1 1)armcc:armcc:armccarmcc是是ARM ARM C C编编译译器器。编编译译器器通通过过了了Plum
18、 Plum Hall Hall C C Validation Validation SuiteSuite为为ANSI ANSI C C的的一一致致性性测测试试。armccarmcc将将ANSI ANSI C C编编写写的的程程序序编编译译成成3232位位ARMARM指指令代码令代码;在在命命令令控控制制台台环环境境下下,输输人人命命令令“C:armcc-helpC:armcc-help”可可以以查查看看armccarmcc的的语语法格式以及最法格式以及最常用常用的一些的一些操作选项操作选项。(2 2)armcpp:armcpp:armcpparmcpp是是ARMARM C+C+编编译译器器。它
19、它将将ISO ISO C+C+或或EC+EC+源源码码编编译译成成3232位位ARMARM指令代码指令代码;(3 3)tcc:tcctcc:tcc是是Thumb CThumb C编译器编译器。编译器通过了。编译器通过了Plum Hall C Validation Plum Hall C Validation SuiteSuite为为ANSIANSI一致性测试。一致性测试。tcctcc将将ANSICANSIC源代码编译源代码编译成成1616位的位的ThumbThumb指令代码指令代码。2023/1/1511AFSlide12命令行开发工具命令行开发工具(4 4)tcpp:tcpptcpp:tcp
20、p是是Thumb C+Thumb C+编译器编译器。它将。它将ISO C+ISO C+或或EC+EC+源码编译源码编译成成1616位位ThumbThumb指令代码指令代码;armcpparmcpp、tcctcc和和tcpptcpp的命令行格式与的命令行格式与armccarmcc相同。相同。(5 5)armsm:armsmarmsm:armsm是是ARMARM和和ThumbThumb的的汇编器汇编器.它对用它对用ARMARM汇编语言汇编语言和和ThumbThumb汇编汇编语言语言写的源代码进行写的源代码进行汇编汇编;(6 6)armlink:armlinkarmlink:armlink是是ARM
21、ARM连接器连接器。该命令即可以将编译得到的一个或多。该命令即可以将编译得到的一个或多个个目标文件目标文件和相关的一个或多个和相关的一个或多个库文件库文件进行进行链接链接,生成一个,生成一个可执行文件可执行文件,也,也可以将多个目标文件部分链接成一个目标文件,以供进一步的链接。可以将多个目标文件部分链接成一个目标文件,以供进一步的链接。ARMARM链链接器生成的是接器生成的是ELFELF格式的可执行映像文件格式的可执行映像文件;(7 7)armsd:armsdarmsd:armsd是是ARMARM和和ThumbThumb的的符号调试器符号调试器。它能够进行。它能够进行源码级源码级的的程序程序调
22、试调试。用户可以在用。用户可以在用C C语言或汇编语言写的代码中进行语言或汇编语言写的代码中进行单步调试单步调试,设置,设置断点断点,查看查看变量变量值和值和内存内存单元的单元的内容内容。2023/1/1512AFSlide132.GUI2.GUI开发环境开发环境 图形用户界面图形用户界面(graphic user interface,(graphic user interface,简称简称gui)gui)的大量使用很好的方的大量使用很好的方便了非专业用户的使用。便了非专业用户的使用。guigui应用程序的设计是嵌入式系统设计的一个关键应用程序的设计是嵌入式系统设计的一个关键技术,能极大地提高
23、技术,能极大地提高人机交互人机交互的效率。的效率。ADS GUI ADS GUI开发环境主要包含开发环境主要包含Code WarriorCode Warrior和和AXDAXD,其中,其中Code WarriorCode Warrior是用是用于于编译编译和和链接链接的的集成开发工具集成开发工具,而,而AXDAXD则是支持则是支持单步执行单步执行、断点设置断点设置等功能等功能的的集成调试工具集成调试工具。(1 1)Code WarriorCode Warrior Code Warrior for ARM Code Warrior for ARM是一套完整的是一套完整的集成开发工具集成开发工具,
24、充分发挥了,充分发挥了ARM ARM RISCRISC指令系统的优势指令系统的优势,可加速并简化开发过程的环节,只用集成软件开发环可加速并简化开发过程的环节,只用集成软件开发环境就能研制出境就能研制出ARMARM产品。在开发过程中无需离产品。在开发过程中无需离Code WarriorCode Warrior开发环境,可节开发环境,可节省开发时间省开发时间,将精力投入到代码编写上。将精力投入到代码编写上。Code Warrior IDECode Warrior IDE为管理和开发项为管理和开发项目提供了简单、多样化的图形用户界面。用户可以使用目提供了简单、多样化的图形用户界面。用户可以使用ADS
25、ADS的的Code Warrior Code Warrior IDEIDE为为ARMARM处理器开发处理器开发使用使用C C、C+C+或或ARMARM汇编语言汇编语言的程序的程序代码代码。Code Warrior Code Warrior IDEIDE缩短缩短了用户了用户开发项目代码开发项目代码的的周期周期,主要基于两点,主要基于两点:一是全面的一是全面的项目管理项目管理功功能能;二是二是子函数子函数的代码的代码导航功能导航功能,使得用户迅速找到程序中的子函数。,使得用户迅速找到程序中的子函数。2023/1/1513AFSlide14GUIGUI开发环境开发环境(2 2)AXDAXD调试器调试
26、器 AXD AXD调试器调试器本身是一个软件,用户通过这个软件可以对包含本身是一个软件,用户通过这个软件可以对包含有调试信息的、正在运行的可执行代码进行有调试信息的、正在运行的可执行代码进行变量变量的的查看查看、断点断点的的设置设置、单步执行单步执行等调试操作。在等调试操作。在ARMARM体系中,它有体系中,它有Multi-ICEMulti-ICE、ARMulatorARMulator和和AngelAngel等几种方式。等几种方式。AXDAXD可以在可以在WindowsWindows和和UNIXUNIX下下进行程序的进行程序的调试调试,它为用,它为用C C、C+C+和汇编语言的和汇编语言的源代
27、码提供源代码提供了一了一个全面的个全面的WindowsWindows和和UNIXUNIX环境环境。2023/1/1514AFSlide153.3.实用程序实用程序 ADSADS提供实用工具来配合前面介绍的提供实用工具来配合前面介绍的命令行开发工具命令行开发工具使用。使用。(1 1)fromELFfromELF是是ARMARM映像映像文件转换工具文件转换工具。该工具可以将。该工具可以将ELFELF格式文件转换为格式文件转换为各种输出格式的文件,包括各种输出格式的文件,包括Plain Binary(BINPlain Binary(BIN格式映像文件格式映像文件)、Free scale Free s
28、cale 32 bit S-record format(Frees-cale 3232 bit S-record format(Frees-cale 32位位S S格式映像文件格式映像文件)、Intel Hex 32 Intel Hex 32 format(Intel 32format(Intel 32位格式映像文件位格式映像文件)和和Verilog-like hex format(VerilogVerilog-like hex format(Verilog十十六进制文件六进制文件)。它也能够为输入映像文件产生代码和数据长度等文本信息。它也能够为输入映像文件产生代码和数据长度等文本信息。(2
29、2)armararmar是是ARMARM库库函数生成器函数生成器,它将一系列,它将一系列ELFELF格式的格式的目标文件目标文件以以库函数库函数的的形式集合形式集合在一起,用户可以把一个库传递给一个链接器,以代替几个在一起,用户可以把一个库传递给一个链接器,以代替几个ELFELF文文件。这个工具可用于开发库文件,以提供给应用程序员做二次开发。件。这个工具可用于开发库文件,以提供给应用程序员做二次开发。(3 3)FlashFlash downloaderdownloader用于把二进制映像文件用于把二进制映像文件下载下载到到ARMARM嵌入式设备上嵌入式设备上的的 FlashFlash存储器中。
30、存储器中。2023/1/1515AFSlide169.1.39.1.3CodeCodeWarriorWarriorIDEIDE的创建的创建 Code Code Warrior Warrior IDEIDE提提供供了了一一个个简简单单的的图图形形化化用用户户界界面面用用于于管管理理软软件件项项目目,支持支持C C、C+C+和和ARMARM的开发。通过的开发。通过实例实例讲述讲述Code Warrior IDECode Warrior IDE的的具体使用具体使用。1.1.创建项目工程创建项目工程(1 1)新建工程)新建工程 “开开始始”菜菜单单中中选选择择ARM ARM Developer Dev
31、eloper Suite Suite v1.2v1.2Code Code Warrior Warrior for for ARM ARM DevelopeDevelope:SuiteSuite,运运行行ADS1.2ADS1.2集集成成开开发发环环境境(Code Code Warrior Warrior for for ARM ARM Developer Developer Suite)Suite),选选择择FileFileNewNew项项,在在NewNew对对话话框框中中,选选择择ProjectProject选选项项卡卡,ARM ARM Executable Executable lmagel
32、mage,在在Project Project namename文文本本框框中中输输入入项项目目的的名名称称,在在LocationLocation中输入其存放的位置中输入其存放的位置(见图见图9.1.2)9.1.2)。注意:注意:ADSl.2ADSl.2不支持中文的目录名字,所以新建工程的文件夹向上一直不支持中文的目录名字,所以新建工程的文件夹向上一直到根目录的所有文件夹的名字都要英文。到根目录的所有文件夹的名字都要英文。2023/1/1516AFSlide17新建工程新建工程 在新建工程对话框中为用户提供了在新建工程对话框中为用户提供了7 7种可选择的工程类型:种可选择的工程类型:(1)(1)
33、ARM Executable lmage ARM Executable lmage 由由ARMARM指令代码生成指令代码生成ELFELF格式可执行映像文件。格式可执行映像文件。(2)(2)ARM Object Library ARM Object Library 由由ARMARM指令的代码生成指令的代码生成armararmar格式的目标文件库。格式的目标文件库。(3)(3)Empty Project Empty Project 用于创建一个不包含任何库或源文件的工程。用于创建一个不包含任何库或源文件的工程。(4)(4)Makefile Makefile lmporter lmporter Wi
34、zardWizard将将Visual Visual C C语语言言的的nmakenmake或或GNU GNU makemake文文件件转转入到入到Code Warrior IDECode Warrior IDE工程文件。工程文件。(5)(5)Thumb Thumb ARM ARM Interworking Interworking lmagelmage用用于于由由ARMARM指指令令和和ThumbThumb指指令令的的混混和和代代码码生成一个可执行的生成一个可执行的ELFELF格式的映像文件。格式的映像文件。(6)(6)Thumb Executable Image Thumb Executab
35、le Image 由由ThumbThumb指令创建一个指令创建一个ELFELF格式的映像文件。格式的映像文件。(7)(7)Thumb Object LibraryThumb Object Library由由ThumbThumb指令代码生成指令代码生成armararmar格式的目标文件库。格式的目标文件库。2023/1/1517AFSlide18(2)(2)选择选择DebugDebug版本版本 在新建的工程中在新建的工程中,选择选择DebugDebug版本,生成目录选项版本,生成目录选项 每个工程目录都有每个工程目录都有3 3种种生成目标生成目标:Debug Debug 包含包含所有所有的的调试
36、信息调试信息。DebugRel DebugRel 包含包含部分部分调试调试信息信息。Release Release 不包含不包含调试调试信息信息的发行版本。的发行版本。2023/1/1518AFSlide19(3)Post-Linker(3)Post-Linker选项选项 从从EditEdit下拉菜单中选择下拉菜单中选择Debug SettingDebug Setting,弹出图所示对话框,选中,弹出图所示对话框,选中Target Target SettingsSettings项,在项,在Post-linkerPost-linker列表框中选中列表框中选中ARM fromELFARM from
37、ELF项,单击项,单击OKOK按钮。这按钮。这是为是为生成可执行的代码生成可执行的代码的的初始开关初始开关。2023/1/1519AFSlide20(4)(4)选择要编译的选择要编译的CPUCPU核核 如下图所示,单击如下图所示,单击ARM AssemblerARM Assembler,在,在Architecture or ProcessorArchitecture or Processor列表列表框中框中选择选择要编译的要编译的CPUCPU核。此处以核。此处以ARM920TARM920T为例。为例。2023/1/1520AFSlide21ARM C CompilerARM C Compile
38、r选项选项 如下图,单击如下图,单击ARM C CompilerARM C Compiler,在,在Architecture or ProcessorArchitecture or Processor列表框中列表框中选择选择ARM920TARM920T。这是要。这是要编译的编译的CPUCPU核核。2023/1/1521AFSlide22(5)(5)设定起始地址设定起始地址 如下图,单击如下图,单击ARMLinkerARMLinker,在,在OutputOutput选项卡中选项卡中设定程序的代码段地址设定程序的代码段地址,以,以及及数据使用的地址数据使用的地址。在图。在图9.1.79.1.7中的
39、中的ROBaseROBase文本框中填写文本框中填写程序代码程序代码存放的起存放的起始始地址地址,一般为,一般为FlashFlash的起始地址;的起始地址;RW BaseRW Base文本框中填写文本框中填写数据存放数据存放的起始地的起始地址,一般为址,一般为SDRAMSDRAM的起始地址。的起始地址。2023/1/1522AFSlide23(6)(6)设置设置ARM from ELFARM from ELF选项选项 如下图,即在如下图,即在Debug SettingsDebug Settings对话框中单击左栏的对话框中单击左栏的ARM from ELFARM from ELF项,在项,在O
40、ut-put file nameOut-put file name框中设置框中设置输出文件名输出文件名*.bin.bin,前缀名可以自己取;在,前缀名可以自己取;在Output formatOutput format列表框中选择列表框中选择Plain binaryPlain binary,这是设置要下载到,这是设置要下载到F1ashF1ash中的中的二二进制文件进制文件。下图选择的是。下图选择的是test.bintest.bin。2023/1/1523AFSlide24(7)(7)保存新建的项目文件保存新建的项目文件 ADSl.2ADSl.2中的基本设置中的基本设置完成后完成后,可以将该新建的
41、空项目文件作,可以将该新建的空项目文件作为为模板保存模板保存。首先,要将该项目工程文件改一个。首先,要将该项目工程文件改一个合适的名字合适的名字,如如S3C2410 ARM.mcpS3C2410 ARM.mcp等;然后,在等;然后,在ADSl.2ADSl.2软件安装的目录下的软件安装的目录下的StationaryStationary目录下目录下新建新建一个合适的一个合适的模板目录名模板目录名,如,如S3C2410 ARM S3C2410 ARM Executable lmageExecutable lmage;再将刚刚设置完的;再将刚刚设置完的S3C2410 ARM.mcpS3C2410 AR
42、M.mcp项目文项目文件件存放存放到该到该目录下目录下即可。这样,就能在图即可。这样,就能在图9.1.89.1.8中看到该模板。中看到该模板。接下来就可以编写接下来就可以编写C C语言或者汇编语言程序语言或者汇编语言程序(后缀为后缀为.s).s),并添加,并添加到这个工程中来。到这个工程中来。2023/1/1524AFSlide252.2.对工程进行编译和链接对工程进行编译和链接 对前面创建的工程进行编译、链接。可以打开对前面创建的工程进行编译、链接。可以打开ADSADS自带的自带的ExampleExample进行学进行学习习,例如打开示例,例如打开示例C:Program FilesARMAD
43、Svl_2ExamplesasmC:Program FilesARMADSvl_2Examplesasm下的下的armex.mcparmex.mcp工程文件,如下图。工程文件,如下图。2023/1/1525AFSlide26对工程进行编译和链接对工程进行编译和链接 选选择择菜菜单单ProjectMakeProjectMake项项对对工工程程进进行行编编译译和和链链接接,MakeMake的的行行为为包包括括以以下下过程过程:编译编译和和汇编源程序汇编源程序文件,文件,产生产生*.*.o o对象文件;对象文件;链接链接对象文件和库产生对象文件和库产生可执行映像文件可执行映像文件;产生产生二进制代码
44、二进制代码。MakeMake之之后后将将弹弹出出Errors Errors&WarningsWarnings对对话话框框,报报告告出出错错和和警警告告情情况况。编编译译成功后的显示如图成功后的显示如图9.1.109.1.10所示。所示。注意:左上方表示的错误和警告数目都是注意:左上方表示的错误和警告数目都是0 0。2023/1/1526AFSlide27编译和链接后的结果编译和链接后的结果 MakeMake结束后产生了结束后产生了可执行映像文件可执行映像文件(axfaxf文件文件)。这个文件可以载人。这个文件可以载人AXDAXD进进行行仿真调试仿真调试,也可以采用,也可以采用fromELFfr
45、omELF工具将其转换为工具将其转换为二进制格式二进制格式文件,以文件,以烧录烧录到嵌人式设备的到嵌人式设备的FlashROMFlashROM中,或者中,或者下载下载到嵌入式设备的内存中到嵌入式设备的内存中调试运行调试运行。2023/1/1527AFSlide289.1.49.1.4AXDAXD调试器的使用调试器的使用 AXDAXD是是ADSADS套套件件中中的的IDEIDE调调试试器器,打打开开AXDAXD软软件件,默默认认打打开开的的目目标标是是ARMulatorARMulator方方式式。这这里里以以ARMulatorARMulator模模拟拟器器方方式式为为例例,介介绍绍在在AXDAX
46、D中进行中进行代码调试代码调试的的方法方法和和过程过程。1.1.启动启动AXDAXD,配置配置CPUCPU环境环境 有有两种方式两种方式可以可以启动启动AXDAXD:一种是在一种是在Code WarriorCode Warrior中编译、中编译、链接成功后,选择链接成功后,选择ProjectProject菜单菜单下的下的DebugDebug就可以自动启动就可以自动启动AXDAXD,并同时会将并同时会将axfaxf映像文件映像文件装载装载到到模拟器模拟器中;另一种方式就是从中;另一种方式就是从“开始开始”菜单中单击菜单中单击AXD AXD DebuggerDebugger项启动项启动。2023/
47、1/1528AFSlide292.2.装入映像文件装入映像文件 在菜单在菜单FileFile中选择中选择Load lmageLoad lmage选项,打开选项,打开Load lmageLoad lmage对话框,对话框,找到要找到要装载装载的的axfaxf映像文件映像文件,单击,单击“打开打开”按钮,把映像文件装按钮,把映像文件装载到目标内存中。在映像文件中有个蓝色的箭头指示当前执行载到目标内存中。在映像文件中有个蓝色的箭头指示当前执行的位置。比如对于的位置。比如对于armex.mcparmex.mcp,打开映像文件后的界面如下图。打开映像文件后的界面如下图。2023/1/1529AFSlid
48、e30装入映像文件装入映像文件 如如果果不不能能自自动动装装载载映映像像文文件件,窗窗口口是是空空白白的的,则则说说明明在在AXDAXD软软件件中中还还没没加加载载CPUCPU内内核核,需需手手动动将将CPUCPU内内核核加加载载。选选择择菜菜单单项项OptionConfigure OptionConfigure TargetTarget,对对调调试试目目标标进进行行配配置置,如如图图9.1.129.1.12所示。所示。从从图图9.1.129.1.12可可看看出出,这这里里的的软软件件模模拟拟器器用用的的是是ARMUL.dllARMUL.dll驱驱动动程程序序。选选择择ConfigureCon
49、figure,弹弹出出ARMulator ARMulator ConfigurationConfiguration对对话话框框,如如图图9.1.139.1.13所所示示。在在此此对对话话框框加加入入目目标标CPUCPU内内核核,并并且且选选择择数据存储模式数据存储模式(小端模式或大端模式小端模式或大端模式)。配置结束,再通过配置结束,再通过FileLoad lmageFileLoad lmage命令装入命令装入AXDAXD映像文件映像文件即可。即可。2023/1/1530AFSlide313.3.程序的调试程序的调试 通过菜单通过菜单ExcuteExcute来进行来进行单步单步执行、执行、断点
50、断点设置等操作,也可以设置等操作,也可以通过菜单通过菜单Processor ViewsProcessor Views来来观测观测CPUCPU的的寄存器寄存器、程序中的、程序中的变量变量、内存内存等值变换情况。等值变换情况。2023/1/1531AFSlide32 ARMulator ConfigurationARMulator Configuration对话框对话框 2023/1/1532AFSlide339.29.2ARMARM汇编伪指令汇编伪指令 9.2.19.2.1数据常量定义伪指令数据常量定义伪指令9.2.29.2.2数据变量定义伪指令数据变量定义伪指令9.2.39.2.3内存分配伪指