第9章ADS介绍ARM汇编语言程序设计基础

上传人:工**** 文档编号:586263295 上传时间:2024-09-04 格式:PPT 页数:80 大小:2.07MB
返回 下载 相关 举报
第9章ADS介绍ARM汇编语言程序设计基础_第1页
第1页 / 共80页
第9章ADS介绍ARM汇编语言程序设计基础_第2页
第2页 / 共80页
第9章ADS介绍ARM汇编语言程序设计基础_第3页
第3页 / 共80页
第9章ADS介绍ARM汇编语言程序设计基础_第4页
第4页 / 共80页
第9章ADS介绍ARM汇编语言程序设计基础_第5页
第5页 / 共80页
点击查看更多>>
资源描述

《第9章ADS介绍ARM汇编语言程序设计基础》由会员分享,可在线阅读,更多相关《第9章ADS介绍ARM汇编语言程序设计基础(80页珍藏版)》请在金锄头文库上搜索。

1、第第9 9章章 集成开发环境集成开发环境ADSADS介绍及介绍及ARMARM汇编语言程序设计汇编语言程序设计 嵌入式系统设计嵌入式系统设计 嵌入式系统设计嵌入式系统设计 基于基于ARM9ARM9微处理器微处理器S3C2410AS3C2410A第第9 9章章 集成开发环境集成开发环境ADSADS介绍及介绍及ARMARM汇编语言程序设计汇编语言程序设计南阳师范学院南阳师范学院张帅张帅喝锋泊胃森武慢酉议颐敬围统玄兴涛蘸卑墨咸彭件溯嘲浚趋帖丧尸醉胯帘第9章ADS介绍ARM汇编语言程序设计基础第9章ADS介绍ARM汇编语言程序设计基础第第9 9章章 集成开发环境集成开发环境ADSADS介绍及介绍及ARM

2、ARM汇编语言程序设计汇编语言程序设计 嵌入式系统设计嵌入式系统设计 9.1 9.1 裸机开发环境裸机开发环境n何谓“裸机”?裸机是指无操作系统下的ARM系统开发其特点是所有硬件资源均开放可以把它理解为一个高级单片机的开发n裸机开发的作用更能深入地从底层去理解ARM CPU的操作过程及系统设计为日后自行设计系统打下基础为bootloader的编写打好基础兰铣真租着杏澡惊摧汝译消绳门戴碴楷魄音馆瘪占旦吊熙舞递架捻弃官圈第9章ADS介绍ARM汇编语言程序设计基础第9章ADS介绍ARM汇编语言程序设计基础第第9 9章章 集成开发环境集成开发环境ADSADS介绍及介绍及ARMARM汇编语言程序设计汇编

3、语言程序设计 嵌入式系统设计嵌入式系统设计 开发环境的作用开发环境的作用饯蛾符沟傈微椅言沿傻毒慑轩婴胶朗贵摘彰屉视奖蛹希住摧制婴郎止渤迎第9章ADS介绍ARM汇编语言程序设计基础第9章ADS介绍ARM汇编语言程序设计基础第第9 9章章 集成开发环境集成开发环境ADSADS介绍及介绍及ARMARM汇编语言程序设计汇编语言程序设计 嵌入式系统设计嵌入式系统设计 9.2 ADS IDE9.2 ADS IDE(集成开发环境(集成开发环境) ) ARM应用软件的开发工具根据功能的不同,可以分为编辑软件、编译软件、汇编软件、链接软件、调试软件、嵌入式实时操作系统、函数库、评估板,JTAG仿真器以及在线仿真

4、器等。 目前有多家公司可以提供以上不同类型的开发工具,用户采用ARM处理器进行嵌入式系统开发时,选择合适的开发工具可以加快开发进度,节省开发成本。哟睫攒螟门墓蝎怎姓苇肋发抒诺舰饺速茸佳杨决栋嫩淋呛头饰斗熬壮郴翘第9章ADS介绍ARM汇编语言程序设计基础第9章ADS介绍ARM汇编语言程序设计基础第第9 9章章 集成开发环境集成开发环境ADSADS介绍及介绍及ARMARM汇编语言程序设计汇编语言程序设计 嵌入式系统设计嵌入式系统设计 9.2.1 9.2.1 ADSADS工具包的组成工具包的组成 ADS是ARM公司推出的集成开发工具包,是专门用于ARM相关应用开发和调试的综合性软件。目前常用的版本是

5、1.2,在功能和易用性上比早期的SDT都有提高,是一款功能强大又易于使用的开发工具。 ARM ADS包含有编译器、链接器、CodeWarrior IDE、调试器、指令集模拟器、ARM开发包和应用库等部分,可以用ADS来开发、编译、调试采用包括C、C+和ARM汇编语言编写的程序。报瞥牧墙跳蜗蘑盲忽权华痛撩讫嫩通结词卜锤嗜逆锑獭宣詹市儿铰萎馅溪第9章ADS介绍ARM汇编语言程序设计基础第9章ADS介绍ARM汇编语言程序设计基础第第9 9章章 集成开发环境集成开发环境ADSADS介绍及介绍及ARMARM汇编语言程序设计汇编语言程序设计 嵌入式系统设计嵌入式系统设计 9.2.2 ADS9.2.2 AD

6、S开发工具集开发工具集 1.1.命令行开发工具命令行开发工具ANSI C 编译器 - armcc and tccISO / Embedded C+ 编译器 - armcpp and tcppARM / Thumb 汇编器 armsLinker - armlink封额鹰祝厦莉恰瞄稍墩苏理谋粹命娄汕脾孽撮嘱考唇究引酶露淋毫间占彭第9章ADS介绍ARM汇编语言程序设计基础第9章ADS介绍ARM汇编语言程序设计基础第第9 9章章 集成开发环境集成开发环境ADSADS介绍及介绍及ARMARM汇编语言程序设计汇编语言程序设计 嵌入式系统设计嵌入式系统设计 2.2.图形开发工具:图形开发工具:Windows

7、 集成开发环境 CodeWarriorDebugger AXD (ARM eXtended Debugger)armsd ARM(符号调试器)可向前兼容3.3.库文件:库文件:C and C+ 库4.4.辅助工具辅助工具/ /支持软件:支持软件:格式转换器 - fromelf 指令级仿真 ARMulator库管理器 armar岳共峦烘僚氰董檀嘘研玫惹昨桶桥厌咀块脖移嚏笑蛇庐瑟园陇结皖赣瞳顶第9章ADS介绍ARM汇编语言程序设计基础第9章ADS介绍ARM汇编语言程序设计基础第第9 9章章 集成开发环境集成开发环境ADSADS介绍及介绍及ARMARM汇编语言程序设计汇编语言程序设计 嵌入式系统设计

8、嵌入式系统设计 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进制文件) ArmarArmar:ARM库函数生成器将一系列ELF格式的目标文件以库函数的形式集合在一起,用户可以把一个库传递给一个链接器以代替几个EL

9、F文件。Flash downloaderFlash downloader:用于把二进制映像文件下载到ARM开发板上的Flash存储器的工具ARMulatorARMulator: ARM指令集仿真器,集成在ARM的调试器AXD中,它提供对ARM处理器的指令集的仿真,为ARM和Thumb提供精确的模拟,用户可以在硬件尚未做好的情况下,开发程序代码。凭宵佩任玉戚炙蜒恶怖剁蔑遵诵克烫蚀蓉撵霉口为逊产撬炒翟猪漾踪鲍成第9章ADS介绍ARM汇编语言程序设计基础第9章ADS介绍ARM汇编语言程序设计基础第第9 9章章 集成开发环境集成开发环境ADSADS介绍及介绍及ARMARM汇编语言程序设计汇编语言程序设

10、计 嵌入式系统设计嵌入式系统设计 名称描述使用方式代码生成工具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章ADS介绍ARM汇编语言程序设计基础第9章ADS介绍ARM汇编语言程序设计基础第

11、第9 9章章 集成开发环境集成开发环境ADSADS介绍及介绍及ARMARM汇编语言程序设计汇编语言程序设计 嵌入式系统设计嵌入式系统设计 9.2.3 9.2.3 集成开发环境集成开发环境CodeWarriorCodeWarrior使用使用 CodeWarrior集成开发环境为管理和开发项目提供了简单、多样化的图形用户界面。 用户可以使用ADS的CodeWarrior IDE为ARM处理器开发用C,C+,或ARM汇编语言的程序代码 。 全面的项目管理功能。 可以在CodeWarrior IDE为ARM配置以上所介绍的各种命令工具,实现对工程代码的编译,汇编和链接。凄边拦糜芍蜜竖娘志茸缠材估漳夕尧

12、肪削刊扁凸售侍逐锯潮邀螺容困棘巫第9章ADS介绍ARM汇编语言程序设计基础第9章ADS介绍ARM汇编语言程序设计基础第第9 9章章 集成开发环境集成开发环境ADSADS介绍及介绍及ARMARM汇编语言程序设计汇编语言程序设计 嵌入式系统设计嵌入式系统设计 C/C+BrowserC/C+SensitiveEditorProjectManager涛谅敦另祸央菏完惊癌纵返旬煎望扣末员壁岁构喻脆堪暂痰催扦坏蘑讳晨第9章ADS介绍ARM汇编语言程序设计基础第9章ADS介绍ARM汇编语言程序设计基础第第9 9章章 集成开发环境集成开发环境ADSADS介绍及介绍及ARMARM汇编语言程序设计汇编语言程序设计

13、 嵌入式系统设计嵌入式系统设计 建立工程哦槐旁舞蓝唁虾嘲委些喊酿抿禹尺囊吨旷看让御萧畜梗戳涵轧猜淌肃戍疏第9章ADS介绍ARM汇编语言程序设计基础第9章ADS介绍ARM汇编语言程序设计基础第第9 9章章 集成开发环境集成开发环境ADSADS介绍及介绍及ARMARM汇编语言程序设计汇编语言程序设计 嵌入式系统设计嵌入式系统设计 涂诺映险攀缚扣摆锐绥滥炔模儿涅贴唬断剑调柒峭湘转困岔忽韭堂甜憋必第9章ADS介绍ARM汇编语言程序设计基础第9章ADS介绍ARM汇编语言程序设计基础第第9 9章章 集成开发环境集成开发环境ADSADS介绍及介绍及ARMARM汇编语言程序设计汇编语言程序设计 嵌入式系统设计

14、嵌入式系统设计 uARM Executable Image:用于由ARM指令的代码生成一个 ELF格式的可执行映像文件。uARM Object Library:用于由ARM指令的代码生成一个 armar 格式的目标文件库。uEmpty Project:用于创建一个不包含任何库或源文件的工程。uMakefile Importer Wizard: 用于将 Visual C 的 nmake 或 GNU make 文件转入到CodeWarrior IDE 工程文件。 uThumb ARM Interworking Image:用于由 ARM指令和 Thumb 指令的混和代码生成一个可执行的ELF格式的

15、映像文件。 uThumb Executable image:用于由 Thumb指令创建一个可执行的ELF格式的映像文件。 uThumb Object Library:用于由Thumb指令的代码生成一个 armar 格式的目标文件库。凸绷乱毁惕蜂袭块抱氖郁嗣隧消冀渝省脱溯甚纤次誊普著销钾损七瘦涂磺第9章ADS介绍ARM汇编语言程序设计基础第9章ADS介绍ARM汇编语言程序设计基础第第9 9章章 集成开发环境集成开发环境ADSADS介绍及介绍及ARMARM汇编语言程序设计汇编语言程序设计 嵌入式系统设计嵌入式系统设计 新建文件宜查荔城儡噬铣圣苟茁涅捆剪眨筑锻封群旗订遗裴展裁佰佬减曾薄卵榨寥第9章A

16、DS介绍ARM汇编语言程序设计基础第9章ADS介绍ARM汇编语言程序设计基础第第9 9章章 集成开发环境集成开发环境ADSADS介绍及介绍及ARMARM汇编语言程序设计汇编语言程序设计 嵌入式系统设计嵌入式系统设计 添加文件到工程虏憨桥蒙出墨梨触炎奥寝逗厢怪杰俄肢哥胞宪谍狼侩慕尤寺报秧饼减饿呈第9章ADS介绍ARM汇编语言程序设计基础第9章ADS介绍ARM汇编语言程序设计基础第第9 9章章 集成开发环境集成开发环境ADSADS介绍及介绍及ARMARM汇编语言程序设计汇编语言程序设计 嵌入式系统设计嵌入式系统设计 生成目标设置毋督拿斌夏岗规育而索朱象呵挞甚梅狱枢傻闲侩妻叶萍晨偷副铭栈鲍散辊第9章

17、ADS介绍ARM汇编语言程序设计基础第9章ADS介绍ARM汇编语言程序设计基础第第9 9章章 集成开发环境集成开发环境ADSADS介绍及介绍及ARMARM汇编语言程序设计汇编语言程序设计 嵌入式系统设计嵌入式系统设计 每个工程项目都有下面3种生成目标:uDebug:包含所有调试信息uDebugRel:包含部分调试信息uRelease:不包含调试信息注:若项目编译只是为了调试使用,则选择Debug或者DebugRel;若要生成最后可以运行的文件,则最好选择Release。渣坦炒靳恫虐弓哎焉钥豆颁免温愤颐凄王木肤株菠删屉积坏初洼帧纹慢蜗第9章ADS介绍ARM汇编语言程序设计基础第9章ADS介绍AR

18、M汇编语言程序设计基础第第9 9章章 集成开发环境集成开发环境ADSADS介绍及介绍及ARMARM汇编语言程序设计汇编语言程序设计 嵌入式系统设计嵌入式系统设计 编译链接进入编译链接设置:及侵揩叛工灸俘潮做炒枯贿摘障齐例敝烫摊腊灵抓帕曼兆佬栽脆御然钉质第9章ADS介绍ARM汇编语言程序设计基础第9章ADS介绍ARM汇编语言程序设计基础第第9 9章章 集成开发环境集成开发环境ADSADS介绍及介绍及ARMARM汇编语言程序设计汇编语言程序设计 嵌入式系统设计嵌入式系统设计 设置窗口:让聚黑骂坯钨识促甥泣亏澄陇脐怒啄杏帘纂叹簇铸涎斑校纱慢测或抖贬黄第9章ADS介绍ARM汇编语言程序设计基础第9章A

19、DS介绍ARM汇编语言程序设计基础第第9 9章章 集成开发环境集成开发环境ADSADS介绍及介绍及ARMARM汇编语言程序设计汇编语言程序设计 嵌入式系统设计嵌入式系统设计 目标设置:月犀哮软汗谊知所宾中碾疹面蝇宋菏徽采挑音李值祷筒返腑天蝇聋师蔽甸第9章ADS介绍ARM汇编语言程序设计基础第9章ADS介绍ARM汇编语言程序设计基础第第9 9章章 集成开发环境集成开发环境ADSADS介绍及介绍及ARMARM汇编语言程序设计汇编语言程序设计 嵌入式系统设计嵌入式系统设计 在Targets Settings选项组中,Post-Linker用于选择链接器输出文件的处理方式。用户可以选择的值如下:Non

20、e:不进行连接的处理。ARM fromELF:使用ARM工具fromELF处理链接器输出的ELF格式文件,它可以将ELF格式的文件转换为各种二进制文件格式。Batch File Runner:在连接完成后运行一个DOS格式的批处理文件。 若用户在编译完成后只是用AXD来调试程序,建议选择None;若要生成最后的编程文件,建议选择ARM fromELF,该选项与Linker面板中的ARM fromELF选项结合来产生最终的编程文件。着门惫巩抱赤唁顺般仗画滔戍扮诡样吮瑰狭饿爪摧痰汇凰部培灭她通和源第9章ADS介绍ARM汇编语言程序设计基础第9章ADS介绍ARM汇编语言程序设计基础第第9 9章章 集

21、成开发环境集成开发环境ADSADS介绍及介绍及ARMARM汇编语言程序设计汇编语言程序设计 嵌入式系统设计嵌入式系统设计 CPU设置:弓总名哭皮碌抱纤始瞄窝愧四膘权恃吊镭冠咕财涡泛雄负利赚零望转肇蓖第9章ADS介绍ARM汇编语言程序设计基础第9章ADS介绍ARM汇编语言程序设计基础第第9 9章章 集成开发环境集成开发环境ADSADS介绍及介绍及ARMARM汇编语言程序设计汇编语言程序设计 嵌入式系统设计嵌入式系统设计 Linker设置:葵铂刹弗舶棠亡星魄橇殊蘑落夜涩刻炯捶封祝裁语困猪抵叛走嗅力束见砾第9章ADS介绍ARM汇编语言程序设计基础第9章ADS介绍ARM汇编语言程序设计基础第第9 9章

22、章 集成开发环境集成开发环境ADSADS介绍及介绍及ARMARM汇编语言程序设计汇编语言程序设计 嵌入式系统设计嵌入式系统设计 在 Output format 下拉框中,为用户提供了多种可以转换的目标格式,这里选择 Plain binary,这是一个二进制格式的可执行文件,可以被烧写在目标板的 Flash中。 在 Output file name 文本域输入期望生成的输出文件存放的路径,或通过点击 Choose.按钮从文件对话框中选择输出文件路径。如果在这个文本域不输入路径名,则生成的二进制文件存放在工程所在的目录下。瞎八献格林患厢绕违揣球罗檬挟饱拴怔帛毙敝踞成姥隅潞痘蚜决下至惜雅第9章ADS

23、介绍ARM汇编语言程序设计基础第9章ADS介绍ARM汇编语言程序设计基础第第9 9章章 集成开发环境集成开发环境ADSADS介绍及介绍及ARMARM汇编语言程序设计汇编语言程序设计 嵌入式系统设计嵌入式系统设计 页斤墒礁霸条悉果钮髓尤官钱踞赔匣意频鼎怠憎杭商电础襄咖乃甄刮策叹第9章ADS介绍ARM汇编语言程序设计基础第9章ADS介绍ARM汇编语言程序设计基础第第9 9章章 集成开发环境集成开发环境ADSADS介绍及介绍及ARMARM汇编语言程序设计汇编语言程序设计 嵌入式系统设计嵌入式系统设计 在标签页 Output 中,Linktype 中提供了 3 种链接方式:Partia :表示链接器只

24、进行部分链接,经过部分链接生成的目标文件,可以作为以后进一步链接时的输入文件。Simple :默认的链接方式,也是使用最为频繁的链接方式,它链接生成简单的 ELF 格式的目标文件,使用的是链接器选项中指定的地址映射方式。Scattered :使得链接器要根据 scatter 格式文件中指定的地址映射,生成复杂的 ELF 格式的映像文件。一般情况下这个选项使用不太多。 紊报茫舷脏邀碟汁佰埔驭躁藩簧休展耕糯昆憨附锈乖箭溪滤潮楞墓优吐嘶第9章ADS介绍ARM汇编语言程序设计基础第9章ADS介绍ARM汇编语言程序设计基础第第9 9章章 集成开发环境集成开发环境ADSADS介绍及介绍及ARMARM汇编语

25、言程序设计汇编语言程序设计 嵌入式系统设计嵌入式系统设计 在选中 Simple 方式后,就会出现 Simple image。 R0 Base:这个文本框设置包含有 R0 段的加载域和运行域为同一个地址,默认是 0x8000。这里用户要根据硬件的实际 SDRAM 的地址空间来修改这个地址,保证在这里填写的地址是程序运行时 SDRAM 地址空间所能覆盖的地址。RW Base:这个文本框设置包含 RW 和 ZI 输出段的运行域地址。如果选中 split 选项,链接器生成的映像文件将包含 2 个加载域和 2 个运行域,此时,在 RW Base 中所输入的地址为包含 RW 和 ZI 输出段的域设置了加载

26、域和运行域地址。 妥伪羚帖就假勾跑霞摄肺叮祈睡刁津纫诌檄皮肯驰翼戮坦撬厅彻梨哨舱型第9章ADS介绍ARM汇编语言程序设计基础第9章ADS介绍ARM汇编语言程序设计基础第第9 9章章 集成开发环境集成开发环境ADSADS介绍及介绍及ARMARM汇编语言程序设计汇编语言程序设计 嵌入式系统设计嵌入式系统设计 凳奏呼艳唾监吭剁侥留霍递玲功涅钻僳萌宴诧砾态嗜域求亨带贩祭恢呻峨第9章ADS介绍ARM汇编语言程序设计基础第9章ADS介绍ARM汇编语言程序设计基础第第9 9章章 集成开发环境集成开发环境ADSADS介绍及介绍及ARMARM汇编语言程序设计汇编语言程序设计 嵌入式系统设计嵌入式系统设计 在 O

27、ptions 选项中,需要注意的是 Image entry point 文本框。它指定映像文件的初始入口点地址值,当映像文件被加载程序加载时,加载程序会跳转到该地址处执行。如果需要,用户可以在这个文本框中输入下面格式的入口点。 入口点地址:这是一个数值,例如-entry 0x0。 符号:该选项指定映像文件的入口点为该符号所代表的地址处。比如:-entry int_handler。 在此处指定的入口点用于设置 ELF 映像文件的入口地址。 需要注意的是,这 里不可以用符号 main 作为入口点地址符号,否则将会出现“Image dose not have an entry point(Not s

28、pecified or not set due to multiple choice)”的出错信息。 任卒插再劫吕盯注心论私嚏栏聪挛粉哮陌垃旭诌窖埋不胶喂家淳戏届热碉第9章ADS介绍ARM汇编语言程序设计基础第9章ADS介绍ARM汇编语言程序设计基础第第9 9章章 集成开发环境集成开发环境ADSADS介绍及介绍及ARMARM汇编语言程序设计汇编语言程序设计 嵌入式系统设计嵌入式系统设计 Layout选项在连接方式为Simple时有效,用来安排一些输入段在映像文件中的位置。在上图中,Place at Beginning of Image选项用于指定某个输入段放置在它所在的运行时域的开头。 鲤欧念

29、青欺盛殖徽凤恫往脊胁勘息乖男蹿硷窝栓蒜要咀臻乳胡刺呕览燎釉第9章ADS介绍ARM汇编语言程序设计基础第9章ADS介绍ARM汇编语言程序设计基础第第9 9章章 集成开发环境集成开发环境ADSADS介绍及介绍及ARMARM汇编语言程序设计汇编语言程序设计 嵌入式系统设计嵌入式系统设计 编译链接:粳盟翅毫曹妮观裤秧耿客蛔枯常郎彻樊肩弱霉幕誊撂各鱼蜜夫鄂仰菜榷哲第9章ADS介绍ARM汇编语言程序设计基础第9章ADS介绍ARM汇编语言程序设计基础第第9 9章章 集成开发环境集成开发环境ADSADS介绍及介绍及ARMARM汇编语言程序设计汇编语言程序设计 嵌入式系统设计嵌入式系统设计 鸥陋晦厨近毛屋跌腊点

30、胀晨灼糟窑杉涧巢矮榷戎淮骏党维彼扯台冬打闻臣第9章ADS介绍ARM汇编语言程序设计基础第9章ADS介绍ARM汇编语言程序设计基础第第9 9章章 集成开发环境集成开发环境ADSADS介绍及介绍及ARMARM汇编语言程序设计汇编语言程序设计 嵌入式系统设计嵌入式系统设计 文件输出文件输出匠毋弃越碰趁敷争汇斟俺脯峻濒足枚谩颖簧深稿员道曰繁匹铝滑宗秸裕茧第9章ADS介绍ARM汇编语言程序设计基础第9章ADS介绍ARM汇编语言程序设计基础第第9 9章章 集成开发环境集成开发环境ADSADS介绍及介绍及ARMARM汇编语言程序设计汇编语言程序设计 嵌入式系统设计嵌入式系统设计 9.2.4 AXD9.2.4

31、 AXD调试工具的使用调试工具的使用 在软件开发的最初阶段,可能还没有具体的硬件设备。如果要测试所开发的软件是否达到了预期的效果,这可以由软件仿真来完成。 当然,也可以搭建一个PCB板,这个板上可以包含一个或多个处理器,在这个板上可以运行和调试应用软件。 只有当通过硬件或者是软件仿真所得到的结果达到了预期的效果,才算是完成了应用程序的编写工作。硫冶伴黍搏藕护祝虫添飞袭嚏份敞颖阔秃洛磺拟拙孝邀示虏枷取冲赂洽晓第9章ADS介绍ARM汇编语言程序设计基础第9章ADS介绍ARM汇编语言程序设计基础第第9 9章章 集成开发环境集成开发环境ADSADS介绍及介绍及ARMARM汇编语言程序设计汇编语言程序设

32、计 嵌入式系统设计嵌入式系统设计 调试器能够发送以下指令:调试器能够发送以下指令:装载映像文件到目标内存;启动或停止程序的执行;显示内存,寄存器或变量的值;允许用户改变存储的变量值。噶冶讳泼陆晃潦尖远族蠕银逆锋氦行轧赐掇束为挞番戚黎矫雹啃明视蓬橙第9章ADS介绍ARM汇编语言程序设计基础第9章ADS介绍ARM汇编语言程序设计基础第第9 9章章 集成开发环境集成开发环境ADSADS介绍及介绍及ARMARM汇编语言程序设计汇编语言程序设计 嵌入式系统设计嵌入式系统设计 进入进入AXDAXD调试工具调试工具秒扑拣殴痞靶纂湍吩叫怂迈融锥赚砾敖徘偏颊恭悬罪霓芳君秘停歼雁壹蝗第9章ADS介绍ARM汇编语言

33、程序设计基础第9章ADS介绍ARM汇编语言程序设计基础第第9 9章章 集成开发环境集成开发环境ADSADS介绍及介绍及ARMARM汇编语言程序设计汇编语言程序设计 嵌入式系统设计嵌入式系统设计 在菜单File中选择“Load image”选项,打开 Load Image对话框,找到要装载的.axf映像文件,点击“打开”按钮,就把映像文件装载到目标内存中了。狮拟伎穴搁卉上藻蠢测吻燎菩臭黑锁吓谨卷今潞武吉款为扔关煞瑟挫锅汹第9章ADS介绍ARM汇编语言程序设计基础第9章ADS介绍ARM汇编语言程序设计基础第第9 9章章 集成开发环境集成开发环境ADSADS介绍及介绍及ARMARM汇编语言程序设计汇

34、编语言程序设计 嵌入式系统设计嵌入式系统设计 DockingwindowsDockingtoolbarsRegistersSource/DisassemblyMemory与镑韦娩呕攒秋形咳建葱糠丹垣肮寿哺戮影实腥雁寅汞锡怎海排篱湘蹬袒第9章ADS介绍ARM汇编语言程序设计基础第9章ADS介绍ARM汇编语言程序设计基础第第9 9章章 集成开发环境集成开发环境ADSADS介绍及介绍及ARMARM汇编语言程序设计汇编语言程序设计 嵌入式系统设计嵌入式系统设计 选择调试目标:选择调试目标: 点击ADX窗口菜单【Options】选择【Configure Target】,即弹出Choose Target

35、窗口,在没有添加其它仿真驱动程序前,Target 项中只有两项,分别为ADP(JTAG 硬件仿真)和ARMUL(软件仿真)。沉压洱炯撞剐慑惩垂蛋隘顺桐缓嗽纫炉牲含书途扭警囚拜她修趋瘦抹栓鞘第9章ADS介绍ARM汇编语言程序设计基础第9章ADS介绍ARM汇编语言程序设计基础第第9 9章章 集成开发环境集成开发环境ADSADS介绍及介绍及ARMARM汇编语言程序设计汇编语言程序设计 嵌入式系统设计嵌入式系统设计 调试工具条,从左到右依次为:调试工具条,从左到右依次为:全速运行(Go)停止运行(Stop)单步运行(Step In),与Step 命令不同之处在于对函数调用语句,Step In 命令将进

36、入该函数。单步运行(Step),每次执行一条语句,这时函数调用将被作为一条语句执行。单步运行(Step Out),执行完当前被调用的函数,停止在函数调用的下一条语句。运行到光标(Run To Cursor),运行程序直到当前光标所在行时停止。设置断点(Toggle BreakPoint)氢毕倡羹锹棱绒沿闷害臆晚其稼蓉尺酮逻椽硝泪渴辊件轩羌杏蛆侄张馅俊第9章ADS介绍ARM汇编语言程序设计基础第9章ADS介绍ARM汇编语言程序设计基础第第9 9章章 集成开发环境集成开发环境ADSADS介绍及介绍及ARMARM汇编语言程序设计汇编语言程序设计 嵌入式系统设计嵌入式系统设计 调试观察窗口工具条,从左

37、到右依次为:打开寄存器窗口(Processor Registers)打开观察窗口(Processor Watch)打开变量观察窗口(Context Variable)打开堆栈观察窗口(Back Trace)打开存储器观察窗口(Memory)打开反汇编窗口(Disassembly)荤中繁闷饶杀够沁揽羞半殉难唆肚错慌段造熊卤耸悠提屎资绣滋躁总秘钩第9章ADS介绍ARM汇编语言程序设计基础第9章ADS介绍ARM汇编语言程序设计基础第第9 9章章 集成开发环境集成开发环境ADSADS介绍及介绍及ARMARM汇编语言程序设计汇编语言程序设计 嵌入式系统设计嵌入式系统设计 处理器状态观察:处理器状态观察:

38、包括:寄存器变量存储器侯羽穿唾陌革雌滑玄辊淋罢酷飘挟凋瘴定鸟钦拍州暖啃抿椅玖诬锌律馁夏第9章ADS介绍ARM汇编语言程序设计基础第9章ADS介绍ARM汇编语言程序设计基础第第9 9章章 集成开发环境集成开发环境ADSADS介绍及介绍及ARMARM汇编语言程序设计汇编语言程序设计 嵌入式系统设计嵌入式系统设计 存储器窗口:存储器窗口:包括:显示格式修改操作袄盂沟塞类茎嗣狈姬竖贿馁逃翰蜡兵亲瘸鸿汉辊册咒炙淮此诊陈薪逾稚坪第9章ADS介绍ARM汇编语言程序设计基础第9章ADS介绍ARM汇编语言程序设计基础第第9 9章章 集成开发环境集成开发环境ADSADS介绍及介绍及ARMARM汇编语言程序设计汇编

39、语言程序设计 嵌入式系统设计嵌入式系统设计 单步执行、断点:单步执行、断点:墒芦惋籽夏膛穷取琼映弊卒霉葵易碱届庇吼烫棺手点锡缩串琶攻骡任垄说第9章ADS介绍ARM汇编语言程序设计基础第9章ADS介绍ARM汇编语言程序设计基础第第9 9章章 集成开发环境集成开发环境ADSADS介绍及介绍及ARMARM汇编语言程序设计汇编语言程序设计 嵌入式系统设计嵌入式系统设计 添加变量进行观察:添加变量进行观察:掺彪烯玩慈质郧申闷稽卤积掐仓付按允梅庶肛赌爆离单诧爪豌熙圈龟氨尿第9章ADS介绍ARM汇编语言程序设计基础第9章ADS介绍ARM汇编语言程序设计基础第第9 9章章 集成开发环境集成开发环境ADSADS

40、介绍及介绍及ARMARM汇编语言程序设计汇编语言程序设计 嵌入式系统设计嵌入式系统设计 9.2.5 Wiggler JTAG 仿真器的安装与应用简介H-JTAG调试代理使用Wiggler JTAG Wiggler JTAG 仿真器犁盼耘囱封楔弹情尧哪果鲁速少蜕讫冶剔狠掂烫谣余嗡锰浴虱伤涣暇我舞第9章ADS介绍ARM汇编语言程序设计基础第9章ADS介绍ARM汇编语言程序设计基础第第9 9章章 集成开发环境集成开发环境ADSADS介绍及介绍及ARMARM汇编语言程序设计汇编语言程序设计 嵌入式系统设计嵌入式系统设计 简介 MagicARM2410 实验箱配套的Wiggler JTAG 仿真器,支持

41、ADS1.2 集成开发环境,支持单步、全速及断点等调试功能。仿真器采用ARM 公司提出的标准20 脚JTAG 仿真调试接口,与计算机连接采用标准25 针并口(即打印机口)。殿跟流亩语赎成虎巡醇闹兼殴况翌圆双渊马罢蔗达吗攫标轮牢怪奈辣刨睛第9章ADS介绍ARM汇编语言程序设计基础第9章ADS介绍ARM汇编语言程序设计基础第第9 9章章 集成开发环境集成开发环境ADSADS介绍及介绍及ARMARM汇编语言程序设计汇编语言程序设计 嵌入式系统设计嵌入式系统设计 要使用Wiggler JTAG 仿真器来调试ARM 处理器,除了ADS1.2 集成开发环境外,还需要安装一个ARM 调试代理软件; 推荐使用

42、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章ADS介绍ARM汇编语言程序设计基础第9章ADS介绍ARM汇编语言程序设计基础第第9 9章章 集成开发环境集成开发环境ADSADS介绍及介绍及ARMARM汇编语言程序设

43、计汇编语言程序设计 嵌入式系统设计嵌入式系统设计 使用Wiggler JTAG 仿真器双击桌面“H-JTAG”快捷方式启动H-JTAG 会自动检测ARM 内核,如果JTAG 连接正确将会在H-JTAG 主窗口中显示S3C2410A 处理器的内核ARM920T在进行JTAG 仿真调试时,不要关闭H-JTAG 软件毗排苹昭筏仰嘱餐乖吾掐取灸霍话忿笑籍义馒翔秀蚂请雄摘轩卧恳卑哎福第9章ADS介绍ARM汇编语言程序设计基础第9章ADS介绍ARM汇编语言程序设计基础第第9 9章章 集成开发环境集成开发环境ADSADS介绍及介绍及ARMARM汇编语言程序设计汇编语言程序设计 嵌入式系统设计嵌入式系统设计

44、将计算机并口与Wiggler JTAG 仿真器连接; 将仿真器JTAG口接头插入MagicARM2410实验箱主板的J29上; 通过AXD 软件的设置即可进行JTAG仿真调试;也出区刃仇皂孵圃衔赤龚殷婚土思枣抨押锑敷吧胞柄鞠窒狙衷详匠阮泛须第9章ADS介绍ARM汇编语言程序设计基础第9章ADS介绍ARM汇编语言程序设计基础第第9 9章章 集成开发环境集成开发环境ADSADS介绍及介绍及ARMARM汇编语言程序设计汇编语言程序设计 嵌入式系统设计嵌入式系统设计 程序固化 在JTAG 仿真调试通过后,要将程序调试生成十六进制文件并下载到外部的NOR Flash(即固化程序),才可脱机运行。生成HE

45、X HEX 文件。使用Flash Programmer Flash Programmer 烧写FlashFlash。园浩不熏淮熟蝉牙栏境涨晓爪昭材随鹊彬塌玲矢圭引躺竞励于已亢俐骄馋第9章ADS介绍ARM汇编语言程序设计基础第9章ADS介绍ARM汇编语言程序设计基础第第9 9章章 集成开发环境集成开发环境ADSADS介绍及介绍及ARMARM汇编语言程序设计汇编语言程序设计 嵌入式系统设计嵌入式系统设计 生成HEX 文件 在当前工程窗口中选用Release 生成目标,打开工程的DebugRel Settings 窗口,在TargetSettings 项中设置Post-linker 选取ARM fr

46、omELF。 在ARM formELF 项中设置输出文件类型,如设置为Intel 32 bit Hex,然后设置输出文件名。生成文件默认存放在当前工程的xxx_DataRelease”目录中。 重新编译连接工程即可生成 十六进制文件。镍佛尹侍嗅培罚础拘峨族选疽们攀铰肪郭向悄腮创脖矫肚娠岛甄巢每酶阅第9章ADS介绍ARM汇编语言程序设计基础第9章ADS介绍ARM汇编语言程序设计基础第第9 9章章 集成开发环境集成开发环境ADSADS介绍及介绍及ARMARM汇编语言程序设计汇编语言程序设计 嵌入式系统设计嵌入式系统设计 使用Flash Programmer 烧写Flash 将MagicARM241

47、0 MagicARM2410 实验箱主板上的JP8 JP8 跳线器断开,选用NOR Flash NOR Flash 启动方式,按RST RST 键复位系统 将Wiggler JTAG 仿真器的25 针接口通过并口延长线与PC 机的并口LPT1 连接,将Wiggler JTAG 仿真器的20 针接口通过20 PIN 连接电缆接到MagicARM2410 实验箱主板的J29 上 将配置文件DeviceARM2410.ocd 复制D:目录下。启动Flash Programmer 点击Program按钮,下载程序至目标板的Flash 中 脱机运行讲民媳肝躁钉瘦詹帆涵闲各课屹抗幽卞音送泣赴悦歹呈航的诅秋

48、自陆假催第9章ADS介绍ARM汇编语言程序设计基础第9章ADS介绍ARM汇编语言程序设计基础第第9 9章章 集成开发环境集成开发环境ADSADS介绍及介绍及ARMARM汇编语言程序设计汇编语言程序设计 嵌入式系统设计嵌入式系统设计 9.3 ARM9.3 ARM汇编伪指令汇编伪指令 在 ARM 汇编语言程序里,有一些特殊指令助记符,这些助记符与指令系统的助记符不同,没有相对应的操作码,也就是不会生成机器码,仅仅是在编译器软件中起着格式化的作用,通常称这些特殊指令助记符为伪指令。伪指令在源程序中的作用是为完成汇编程序作各种准备工作的,这些伪指令仅在汇编过程中起作用,一旦汇编结束,伪指令的使命就完成

49、。 在 ARM 的汇编程序中,有如下几种伪指令:数据常量定义伪指令、数据变量定义伪指令、内存分配伪指令及其他伪指令。契控往递陨襄涝谓临畔眠噶光备掷寿辱面惑泪指海冠徊蝉超沁契衰兢贼酥第9章ADS介绍ARM汇编语言程序设计基础第9章ADS介绍ARM汇编语言程序设计基础第第9 9章章 集成开发环境集成开发环境ADSADS介绍及介绍及ARMARM汇编语言程序设计汇编语言程序设计 嵌入式系统设计嵌入式系统设计 9.3.1 数据常量定义伪指令 数据常量定义伪指令EQU用于为程序中的常量、标号等定义一个等效的字符名称,类似于C语言中的#define 。 EQU语法格式 : 名称 EQU 表达式 ,类型 ;

50、其中 EQU 可用 “ * ” 代替。 名称为EQU伪指令定义的字符名称,当表达式为32 位的常量时,可以指定表达式的数据类型,可以有以下三种类型: CODE16、CODE32和DATA。尾摧保敝凤欧莱篡礼阀褂冰纲捕拿惜漆亥幂担乙真悼梦斟搔腾蕉恫了蛛憋第9章ADS介绍ARM汇编语言程序设计基础第9章ADS介绍ARM汇编语言程序设计基础第第9 9章章 集成开发环境集成开发环境ADSADS介绍及介绍及ARMARM汇编语言程序设计汇编语言程序设计 嵌入式系统设计嵌入式系统设计 9.3.4 汇编控制伪指令 汇编控制伪指令用于控制汇编程序的执行流程,常用的汇编控制伪指令包括以下几条: (1 1) IF

51、IF、ELSEELSE、ENDIFENDIF 语法格式: IF 逻辑表达式 指令序列 1 ELSE 指令序列 2 ENDIF (2 2) WHILE WHILE、WENDWEND 语法格式: WHILE 逻辑表达式 指令序列 WEND蔡输咋甸摊蜂然恤池浑湾菌兢泳膏波锚肃赎鹏邱皆蕾润吭灸母晨炽锦额皮第9章ADS介绍ARM汇编语言程序设计基础第9章ADS介绍ARM汇编语言程序设计基础第第9 9章章 集成开发环境集成开发环境ADSADS介绍及介绍及ARMARM汇编语言程序设计汇编语言程序设计 嵌入式系统设计嵌入式系统设计 9.3.5 其他常用的伪指令 还有一些其他的伪指令,在汇编程序中经常会被使用,

52、主要包括AREA、ALIGN、CODE16、CODE32、ENTRY、END、EXPOR(或 GLOBAL)IMPORT、EXTERN、GET(或 INCLUDE )INCBIN、RN、ROUT等。 超寡黔咕逼阁宽盆馈辙解贫琢蛆凛涕患陆惊环激姜钡栈敦冒遇膛泞姆苹悠第9章ADS介绍ARM汇编语言程序设计基础第9章ADS介绍ARM汇编语言程序设计基础第第9 9章章 集成开发环境集成开发环境ADSADS介绍及介绍及ARMARM汇编语言程序设计汇编语言程序设计 嵌入式系统设计嵌入式系统设计 (1 1)AREAAREA 语法格式: AREA 段名 属性 1 ,属性 2 , AREA 伪指令用于定义一个代

53、码段或数据段。其中,段名若以数字开头,则该段名需用 “ | ” 括起来,如 |1_test| 。属性字段表示该代码段(或数据段)的相关属性,多个属性用逗号分隔。噬仟径烤提交咎烽良勿墩幽千瘟钎摔而邻娠争繁链巧报焰泄膜公拼幕楼锑第9章ADS介绍ARM汇编语言程序设计基础第9章ADS介绍ARM汇编语言程序设计基础第第9 9章章 集成开发环境集成开发环境ADSADS介绍及介绍及ARMARM汇编语言程序设计汇编语言程序设计 嵌入式系统设计嵌入式系统设计 (2 2) ALIGN ALIGN 语法格式: ALIGN 表达式 , 偏移量 (3 3) CODE16 CODE16、CODE32CODE32 语法格

54、式: CODE16 (或 CODE32 )(4 4) ENTRY ENTRY 语法格式:ENTRY(5 5) END END 语法格式: END(6 6) EXPORT EXPORT(或(或GLOBALGLOBAL) 语法格式:EXPORT 标号 WEAK (7 (7) IMPORT IMPORT 语法格式: IMPORT 标号 WEAK 凹瞪敝地绢升脆席贬酿谷努丝采驾炉麻讣假惫堑葬抗罪烂闺尿磷巍弯匿讳第9章ADS介绍ARM汇编语言程序设计基础第9章ADS介绍ARM汇编语言程序设计基础第第9 9章章 集成开发环境集成开发环境ADSADS介绍及介绍及ARMARM汇编语言程序设计汇编语言程序设计

55、嵌入式系统设计嵌入式系统设计 (5 5) END END 语法格式: END(6 6) EXPORT EXPORT(或(或GLOBALGLOBAL) 语法格式:EXPORT 标号 WEAK (7(7) IMPORT IMPORT 语法格式: IMPORT 标号 WEAK (8 8) EXTERN EXTERN 语法格式: EXTERN 标号 WEAK(9 9) GET GET(或(或INCLUDEINCLUDE) 语法格式:GET 文件名(1010) INCBIN INCBIN 语法格式:INCBIN 文件名(1111) RN RN 语法格式:名称 RN 表达式鞠怕孪疑珊海酿腿奖谤苦勺桔偶铱汪

56、詹锦蛙厉念倒绕谗嚎苛塘监寅帮衷凭第9章ADS介绍ARM汇编语言程序设计基础第9章ADS介绍ARM汇编语言程序设计基础第第9 9章章 集成开发环境集成开发环境ADSADS介绍及介绍及ARMARM汇编语言程序设计汇编语言程序设计 嵌入式系统设计嵌入式系统设计 9.4 ARM9.4 ARM的汇编语言结构的汇编语言结构 在ARM(Thumb)汇编语言程序中,以相对独立的指令或数据序列的程序段为单位组织程序代码。 段可以分为代码段和数据段,代码段的内容为执行代码,数据段存放代码运行时需要用到的数据。 一个汇编程序至少应该有一个代码段,也可以分割为多个代码段和数据段,多个段在程序编译链接时最终形成一个可执

57、行的映象文件。 可执行映象文件通常由以下几部分构成: 一个或多个代码段,代码段的属性为只读。 零个或多个包含初始化数据的数据段,数据段的属性为可读写。 零个或多个不包含初始化数据的数据段,数据段的属性为可读写。琶晨娘蒜唯雷拍柱期痹掌纷逸标茸蛀猴透煎郎舍芹真滴拽郝模凯费买婿脖第9章ADS介绍ARM汇编语言程序设计基础第9章ADS介绍ARM汇编语言程序设计基础第第9 9章章 集成开发环境集成开发环境ADSADS介绍及介绍及ARMARM汇编语言程序设计汇编语言程序设计 嵌入式系统设计嵌入式系统设计 9.4.1 ARM汇编语言的语句格式 1.1.基本语句格式基本语句格式ARM(Thumb)汇编语言的语

58、句格式为:标号指令或伪指令;注释规则: 如果一条语句太长,可将其分为若干行来书写,在行的末用续行符“”来标识下一行与本行为同一条语句。 每一条指令的助记符可以全部用大写、或全部用小写,但不能在一条指令中大、小写混用。此解摄娠坟愿性虱迷显假炼沦搽河慑热奈浪鸭辽而船杰铱靖匆已癌攻娠七第9章ADS介绍ARM汇编语言程序设计基础第9章ADS介绍ARM汇编语言程序设计基础第第9 9章章 集成开发环境集成开发环境ADSADS介绍及介绍及ARMARM汇编语言程序设计汇编语言程序设计 嵌入式系统设计嵌入式系统设计 2. 2. 汇编语言程序中常用的符号汇编语言程序中常用的符号 在汇编语言程序设计中,可以使用各种

59、符号代替地址、变量和常量等,以增加程序的可读性。以下为符号命名的约定: 符号名不应与指令或伪指令同名 符号在其作用范围内必须唯一。 符号区分大小写,同名的大、小写符号被视为两个不同的符号。 自定义的符号名不能与系统保留字相同。植赡北胎绦瞅裂蠢荷怔赌权琵戮鸽售蚁著铭青强炮窿蚕昨洗于秘圃薛糖仰第9章ADS介绍ARM汇编语言程序设计基础第9章ADS介绍ARM汇编语言程序设计基础第第9 9章章 集成开发环境集成开发环境ADSADS介绍及介绍及ARMARM汇编语言程序设计汇编语言程序设计 嵌入式系统设计嵌入式系统设计 3.3.程序中的常量程序中的常量 程序中的常量是指其值在程序的运行过程中不能被改变的量

60、。ARM(Thumb)汇编程序所支持的常量有逻辑常量、数字常量和字符串常量。 数字常量一般为32位的整数,无符号常量取值范围为0232-1,有符号常量取值范围为-231231-1。 逻辑常量只有两种取值:真或假。 字符串常量为一个固定的字符串,一般用来提示程序运行时的信息。彝柞挪丫压攫选试渣郊笆凸澳均匆植幂嘻撰针蔡聚狠沃曰靛苍忧玩瞻絮缚第9章ADS介绍ARM汇编语言程序设计基础第9章ADS介绍ARM汇编语言程序设计基础第第9 9章章 集成开发环境集成开发环境ADSADS介绍及介绍及ARMARM汇编语言程序设计汇编语言程序设计 嵌入式系统设计嵌入式系统设计 4. 4. 汇编语言程序中的变量汇编语

61、言程序中的变量 程序中的变量是指其值在程序的运行过程中可以改变的量。 逻辑变量用于在程序的运行中保存逻辑值(真/假)。 数字变量用于在程序的运行中保存数字值,但数字值的大小不应超出数字变量所能表示的范围。 字符串变量用于在程序的运行中保存一个字符串,但字符串的长度不应超出字符串变量所能表示的范围。话静贯旗痹冈唱懊入憋扛戴吐腹蛾职氦僵褐酱屠搜搅驾妥牛颐栅彼留眉筛第9章ADS介绍ARM汇编语言程序设计基础第9章ADS介绍ARM汇编语言程序设计基础第第9 9章章 集成开发环境集成开发环境ADSADS介绍及介绍及ARMARM汇编语言程序设计汇编语言程序设计 嵌入式系统设计嵌入式系统设计 5. 5. 程

62、序中的变量代换程序中的变量代换 程序中的变量可通过代换操作取得一个常量。代换操作符为“$”。如果“$”在数字变量前面,编译器会将该数字变量的值转换为十六进制的字符串,并将该十六进制的字符串代换“$”后的数字变量。钎互析肠骂搐瀑瞧敝呢郭减臣鳖词褪淌栈埠翌梦皮乎檬谣姻违拜推滞液眨第9章ADS介绍ARM汇编语言程序设计基础第9章ADS介绍ARM汇编语言程序设计基础第第9 9章章 集成开发环境集成开发环境ADSADS介绍及介绍及ARMARM汇编语言程序设计汇编语言程序设计 嵌入式系统设计嵌入式系统设计 9.4.2 基于Windows下ADS的汇编语言程序结构 ADS环境下的ARM汇编语言程序结构与其它

63、环境下的汇编语言程序结构大体相同,整个程序也是以段为单元来组织代码。其语法规则总结如下: 所有标号必须在一行的顶格书写,其后不要添加“:”号; 所有的指令均不能顶格写; 大小写敏感(可以全部大写或全部小写,但不能大小写混合使用); 注释使用分号“;” 。赤将式介题磋抗沙汹吱穷蔬良呸计执乓肇颇显泰抚崭何舞使捡梁班拭吾陆第9章ADS介绍ARM汇编语言程序设计基础第9章ADS介绍ARM汇编语言程序设计基础第第9 9章章 集成开发环境集成开发环境ADSADS介绍及介绍及ARMARM汇编语言程序设计汇编语言程序设计 嵌入式系统设计嵌入式系统设计 9.5 ARM9.5 ARM汇编语言程序调试汇编语言程序调

64、试 无论进行嵌入式系统软件开发还是硬件电路设计,调试永远是不可缺少的、非常重要的一个环节。通常嵌入式系统的调试方法和类型有很多种,最为常见的包括软件模拟调试、硬件仿真器在线调试、Wiggler线缆调试和Linux环境下的gdb程序调试。王葛讥缮讶拘荣滩饱栽外俞翅囚糖息甚饯比枫捣刘鸣汕治藉霄扦耙诬骆倘第9章ADS介绍ARM汇编语言程序设计基础第9章ADS介绍ARM汇编语言程序设计基础第第9 9章章 集成开发环境集成开发环境ADSADS介绍及介绍及ARMARM汇编语言程序设计汇编语言程序设计 嵌入式系统设计嵌入式系统设计 9.5.1 ADS软件模拟环境下的程序调试 ADS软件模拟调试是利用ARMU

65、L.dll提供的一个软ARM内核,调试工具和待调试的嵌入式软件都在主机上运行,由主机提供一个模拟的目标运行环境,可以进行语法和逻辑上的调试。它的优点是简单方便,不需要嵌入式目标板,软件的调试功能较强;功能有限,不能进行实时联机调试。擅义亨囤页牢湖腐北斩拨镐技毖试古摹含馋岛戒邑末巍稼羌形咀弹傈绍挚第9章ADS介绍ARM汇编语言程序设计基础第9章ADS介绍ARM汇编语言程序设计基础第第9 9章章 集成开发环境集成开发环境ADSADS介绍及介绍及ARMARM汇编语言程序设计汇编语言程序设计 嵌入式系统设计嵌入式系统设计 9.5.2 ADS硬件仿真器环境下的程序调试 在ADS环境下利用JTAG硬件仿真

66、器可以实现联机调试,即在线调试嵌入式设备的Flash中的程序或者SDRAM中的程序。由于仿真器自成体系,调试时既可以连接目标板,也可以不连接目标板,当然仿真器的价格也相对比较贵。一般在程序的前期开发,通常让程序只在SDRAM中调试运行,最后才下载到Flash中进行调试运行。症趾通超边勇杠付扭乏助扦枢遵陌舍斡晌迪悍盘函渠垦植纶刘尽柳圈幢润第9章ADS介绍ARM汇编语言程序设计基础第9章ADS介绍ARM汇编语言程序设计基础第第9 9章章 集成开发环境集成开发环境ADSADS介绍及介绍及ARMARM汇编语言程序设计汇编语言程序设计 嵌入式系统设计嵌入式系统设计 ARM仿真器是通过内部硬件实现PC并口

67、协议到串行JTAG(Jiont Test Action Gruop)协议的转换。利用高速JTAG串行扫描链,通过调试通信通道(Debug Communications Channel,DCC)连接ARM核心内嵌的名为“Embedded-ICE”的调试逻辑,调试逻辑实时监测ARM核心的寄存器、数据总线和地址总线。贝沁揍长晰畔躺赁惶志挞跪盾泊页德涯茨冷亩橙严掘肌名诬附丁咒寐属吨第9章ADS介绍ARM汇编语言程序设计基础第9章ADS介绍ARM汇编语言程序设计基础第第9 9章章 集成开发环境集成开发环境ADSADS介绍及介绍及ARMARM汇编语言程序设计汇编语言程序设计 嵌入式系统设计嵌入式系统设计

68、配置配置ADSADS以支持以支持JTAGJTAG仿真器仿真器启动ADS的调试器AXD后,从菜单“Option”中选择“Configure Target”,在弹出的窗口中,添加或选择H-JTAG.dll(如图所示)。晚环峪虾双肖治博瓶娃湃抨订庇烛弊距掩泳援特侍嵌瓜矣声赵稻幌搽痈碱第9章ADS介绍ARM汇编语言程序设计基础第9章ADS介绍ARM汇编语言程序设计基础第第9 9章章 集成开发环境集成开发环境ADSADS介绍及介绍及ARMARM汇编语言程序设计汇编语言程序设计 嵌入式系统设计嵌入式系统设计 9.6 ARM9.6 ARM汇编语言与汇编语言与C C语言混合编程语言混合编程 ARM体系结构支持

69、C/C+以及汇编语言的混合编程,在一个完整的程序设计中,除了初始化部分用汇编完成以外,其主要的编程任务一般都用C/C+完成。 汇编语言和C/C+的混合编程通常有以下几种方式: 汇编程序中调用C程序 C程序中调用汇编程序 C程序中内嵌汇编语句 从汇编程序中访问C程序变量斜士姬棺斟讣疯媒渐迢列涤斧泪赴拼汉食更饲滩讼瞅汛钩臂陡稻爆闯烧娟第9章ADS介绍ARM汇编语言程序设计基础第9章ADS介绍ARM汇编语言程序设计基础第第9 9章章 集成开发环境集成开发环境ADSADS介绍及介绍及ARMARM汇编语言程序设计汇编语言程序设计 嵌入式系统设计嵌入式系统设计 9.6.1 汇编程序中调用C程序 2. C语

70、言文件/*C file, called by asmfile */int cFun(int a, int b, int c)return a + b + c;这里的参数传递是利用寄存器r0r2。需要指出的是当函数的参数个数大于4时就要借助堆栈。盯宾臣陈骄贩休晾淮拢爹薄德订倚委婿建痒跌脆获掺门书允戳傻郑武叠灭第9章ADS介绍ARM汇编语言程序设计基础第9章ADS介绍ARM汇编语言程序设计基础第第9 9章章 集成开发环境集成开发环境ADSADS介绍及介绍及ARMARM汇编语言程序设计汇编语言程序设计 嵌入式系统设计嵌入式系统设计 9.6.2 C程序中调用汇编程序 在汇编程序中使用EXPORT伪指令

71、声明程序,使得本程序可以被其他的程序调用;在C语言中使用EXTERN关键词声明该汇编程序,这样就可以在C中使用该函数了。从C的角度,并不知道该函数的实现是用C还是汇编。扭栗济穆骋蕴什指议扩强参韩错肚汐飞迹仑步赫局辣脐残颐瞧旱佐纱横粪第9章ADS介绍ARM汇编语言程序设计基础第9章ADS介绍ARM汇编语言程序设计基础第第9 9章章 集成开发环境集成开发环境ADSADS介绍及介绍及ARMARM汇编语言程序设计汇编语言程序设计 嵌入式系统设计嵌入式系统设计 9.6.3 C程序中内嵌汇编语句 在C中内嵌的汇编指令支持大部分的ARM和Thumb指令,不过其使用与汇编文件中的指令有些不同,存在一些限制,主

72、要有下面几个方面: 不能直接向PC寄存器赋值,程序跳转要使用B或者BL指令; 在使用物理寄存器时,不要使用过于复杂的C表达式,避免物理寄存器冲突; R12和R13可能被编译器用来存放中间编译结果; 一般不要直接指定物理寄存器,而让编译器进行分配;内嵌汇编的标志是:_asm或者asm关键字扯思伤贩临怔围氟颜嗜躬身乓狡韩和火柯批讶狡牧缺频猾湛囚屈球维惦准第9章ADS介绍ARM汇编语言程序设计基础第9章ADS介绍ARM汇编语言程序设计基础第第9 9章章 集成开发环境集成开发环境ADSADS介绍及介绍及ARMARM汇编语言程序设计汇编语言程序设计 嵌入式系统设计嵌入式系统设计 9.6.4 从汇编程序中

73、访问C程序变量 在C程序中声明的全局变量可以被汇编程序通过地址间接访问,具体访问方法如下: 使用IMPORT伪指令声明该全局变量。 使用LDR指令读取该全局变量的内存地址,通常该全局变量的内存地址值存放在程序的数据缓冲区中。 根据该数据的类型,使用相应的LDR指令读取该全局变量的值,使用相应的STR指令修改该全局变量的值。教术损吏谭愁腔该肢串儿悠呵吾蜂辉莱隘霓潘胎攘虚烤逝盯损蹬腔驶充塔第9章ADS介绍ARM汇编语言程序设计基础第9章ADS介绍ARM汇编语言程序设计基础第第9 9章章 集成开发环境集成开发环境ADSADS介绍及介绍及ARMARM汇编语言程序设计汇编语言程序设计 嵌入式系统设计嵌入

74、式系统设计 下面是一个在汇编程序中访问下面是一个在汇编程序中访问C C程序全局变量的例子:程序全局变量的例子:AREA global_exp, CODE, READONLYEXPORT asmsubIMPORT globv ;声明全局变量asmsubLDR r1, = globv ;将内存地址读入到R1中LDR r0, r1 ;将数据读入到R0中ADD r0, r0, #2 STR r0, r1 ;修改 后再将值赋予变量MOV pc, lrEND忠琅亥揖寝连接俏笆绊坪易曹堑案君聚炕尽壁酿沥溃播吮狠腆泪曙杰螺祭第9章ADS介绍ARM汇编语言程序设计基础第9章ADS介绍ARM汇编语言程序设计基础第第9 9章章 集成开发环境集成开发环境ADSADS介绍及介绍及ARMARM汇编语言程序设计汇编语言程序设计 嵌入式系统设计嵌入式系统设计 程序中,变量globv1是在C程序中声明的全局变量,在汇编程序中首先使用IMPORT伪指令声明该变量,再将其内存地址读入到寄存器R1中,将其值读入到寄存器R0中,修改后再将寄存器R0的值赋予变量globv。皇武到础科诲杨叮怯娘揍晃枫扔是刁弄嘻豪悠补航氢茵式铲赐菊痘氖俗烬第9章ADS介绍ARM汇编语言程序设计基础第9章ADS介绍ARM汇编语言程序设计基础

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 工作计划

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号