第9章 ARM汇编语言程序设计基础(87).ppt
《第9章 ARM汇编语言程序设计基础(87).ppt》由会员分享,可在线阅读,更多相关《第9章 ARM汇编语言程序设计基础(87).ppt(88页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
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调试器调试
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第9章 ARM汇编语言程序设计基础87 ARM 汇编语言 程序设计 基础 87
限制150内