嵌入式ADS实验指导书
- 格式:doc
- 大小:1.52 MB
- 文档页数:37
ADS使用指南1. 打开Codewarrior,file->new建立文件,用汇编语言编写的后缀为.s,用C语言编写的后缀为.c;2. 编写代码;3. file->new建立工程;4. 在工程页面中,右键->add files将需要的文件加入此工程;注意选中文件后,下面框中三个勾全部勾上;出现界面:5. 点击调试(DEBUG),自动连接AXD。
如程序编译出错,则先要修改,再进行调试;编译报错:编译出错请先检查下列情况:◆如果编译的是单独的一个汇编代码,则代码中必须有ENTRY;◆如果编译的是混合代码,汇编程序作为主程序的,则代码中必须有ENTRY;◆如果编译的是混合代码,C程序作为主程序的(即代码里有main函数的),则作为子程序的汇编代码中不能有ENTRY;◆使用立即数时,请注意立即数必须是合法的;◆程序中使用的逗号和分号不要漏掉,且要特别注意它们不能是中文字符的,必须是英文字符的;◆汇编程序中的指令、伪指令和伪操作不能顶格写,标号要顶格写;编译通过,自动连接至AXD:特别注意:如遇到点debug后打开的AXD里面是空白的,则点击AXD里面的options->configure target->选中ARMUL->点OK,然后关闭AXD,再从codewarrior中点debug再次连接AXD。
◆查看寄存器:processor views->registers->current;地址后回车,注意memory中数据存储是小端方式;◆查看输入输出值:processor views->console;◆查看变量:processor views->variables;查看指令所在地址:processor views->disassembly。
嵌入式系统ADS实验大纲《嵌入式系统ADS》实验大纲学分:3学时:64适用专业:电子信息、通信技术、应用电子前导课程:电路分析基础、模拟电路、数字电路、高频电路、单片机原理、C语言一、课程的性质和任务本课程围绕目前流行的32位ARM处理器和嵌入操作系统,讲述嵌入式系统的概念、软硬件组成、开发过程以及嵌入式应用程序和驱动程序的开发设计方法。
《嵌入式系统》是培养学生具有嵌入式系统的应用知识、嵌入式系统的初步分析能力和具有使用RTOS(实时操作系统)构成嵌入式系统的应用能力等方面的学科,是电子信息与计算机类或相关工科专业的一门专业课。
二、课程的教学基本要求本课程是一门综合性、实践性、应用性很强的专业课。
课程教学所要达到的目的是:使学生掌握嵌入式系统体系结构,嵌入式处理器结构(ARM架构为主),异常处理、系统控制过程、存储处理、ARM内部资源、各种I/O接口;嵌入式系统开发应用方法;实时多任务操作系统。
本课程将为学生今后从事嵌入式系统研究与开发打下坚实的基础。
三、实验安排本实验课程18学时,共9次实验,每次2学时。
实验1 嵌入式系统软件开发环境认识1.熟悉ADS1.2开发环境的使用方法,熟悉针对实验台的嵌入式系统软件设计方法和流程,通过实验掌握嵌入式系统的编辑、编译、调试、下载及运行过程。
实验2 基于ARM的汇编语言设计11.掌握基本汇编语句的编辑、编译、调试、下载及运行过程。
2.进一步熟悉ADS1.2的编辑、编译、连接和运行的过程。
实验3 LPC2106程序设计与电路仿真实验:输入/输出端口GPIO 编程与仿真1.掌握ARM 中I/O 接口的使用,以实现对外围设备开关量的控制。
2.使用P0.9的输出功能来控制一个LED闪烁。
采用灌电流的方式驱动LED,即输出低电平时LED点亮。
首先进行引脚功能选择寄存器(PINSEL0和PINSEL1)配置,然后进行IODIR 寄存器设置,设置P0.9为输出模式,通过对IOSET和IOCLR寄存器进行置1或置0控制LED闪烁。
实训内容一基本信息1 时间:校历24周(1周)0908040301 上午 8:10 - 11:30 0908040302 上午 13:00 - 16:202 地点:实08223 分组:两同学一组当天需要确定:组员,工位4 考核成绩评定:平时50%考勤10%,每次考勤2分。
阶段性验收40% 。
ADS环境配置10%ADS环境使用10%利用自建工程文件完成工程范例的下载,运行20% 期末考核:50%系统验收40% 。
功能验收30%问题10%报告10%(以组为单位,提交一份电子版即可)个性化发挥:10%(加分项)。
总评成绩= 平时(50%)+期末考核成绩(50%)+个性化发挥(10%)。
5 教师职责:记考勤阶段性验收(每个组分别验收)功能验收(每个组分别验收)解释系统任务基本需求协助查找相关资料软件环境问题的讨论6 时间分配星期3 阶段性验收。
星期4 系统验收星期5 系统验收,提交报告。
二任务要求任务名称:嵌入式控制系统编程及实现实训环境:PC机+ ARM9嵌入式实验箱。
任务内容简介:使用PC机和嵌入式实验箱组建控制系统硬件测试环境,应用层数据通过串口连接完成传输,调试环境数据通过并口连接完成传输。
在PC机上借助ADS环境利用C语言编写嵌入式系统(ARM9 S3C2410)应用程序,编译无误后需要通过并口下载到实验箱上,再借助ADS环境运行和测试该程序。
该程序主要功能是完成串行数据的接收,所接收到数据的解析,嵌入式实验箱上发光二极管亮灭的控制。
PC机上使用sscom32.exe程序,通过串口向嵌入式实验箱发送数据,通信模式收发双方采用8、N、1、115200,通信协议可自定义。
任务要求:PC机发命令字,点亮或熄灭嵌入式实验箱上的指示灯。
任务分解:1 熟悉ADS环境,组建工程文件2 完成所提供的3个工程范例的下载,运行,观测结果3 编程实现系统功能要求三资料ADS资料ARM实验指导书工程范例S3C24101芯片件手册注意事项:1 ADS环境中的JTAG接口配置方法见ARM实验指导书2工程范例中的工程文件应该不含有中文字符并且需要复制到的D盘根目录如:\学生用\工程范例\实验1 嵌入式系统ADS集成开发环境实验(工程的建立)\zy2410 zy2410为工程文件的目录名,需要将zy2410目录整体复制到D盘根目录。
实验(一) ADS使用与汇编指令实验1.实验目的(1)了解ADS的用途;(2)学习ADS的安装(3)掌握ADS的基本使用方法(4)掌握ARM汇编语言常用指令2.实验器件PC一台3.实验步骤1)加载/存储及移位指令实验(1)打开ADS集成开发环境,新建一个工程项目文件,(2)新建一个.文件,输入以下汇编代码。
注意:根据编译器的规定,除了标号以外,所有的指令都需要在前面加上空格,否则程序会在编译时报错,这里建议使用Tab键对齐指令。
AREA LDR_STR_LSL_LSR,CODE,READONLYENTRY;******************************************************************** ********; 加载/存储指令以及移位指令;******************************************************************** ********startPRO1LDR R0,=0x0000LDR R1,=0x0004LDR R0,[R1];将存储器地址为R1的字数据读入寄存器R0LDR R0,=0x0000LDR R1,=0x0004LDR R2,=0x0008LDR R0,[R1,R2] ;将存储器地址为R1+R2的字数据读入寄存器R0LDR R0,=0x0000LDR R1,=0x0004LDR R2,=0x0008LDR R0,[R1],R2 ;将存储器地址为R1的字数据读入寄存器R0,并将新地址R1+R2写入R1LDR R0,=0x0000LDR R1,=0x0004LDR R0,[R1,#8] ;将存储器地址为R1+8的字数据读入寄存器R0AND R0,R0,#0 ;保持R0的0位,其于位清0LDR R1,=0X0004LDR R0,[R1,#8]! ;将存储器地址为R1+8的字数据读入寄存器R0,并将新地址R1+8写入R1LDR R0,=0x0000LDR R1,=0x0004LDR R0,[R1],#8 ;将存储器地址为R1的字数据读入寄存器R0,并将新地址R1+8写入R1LDR R0,=0x0000LDR R1,=0x0004LDR R2,=0x0008LDR R0,[R1,R2,LSL#2]! ;将存储器地址为R1+R2×4的字数据读入寄存器R0,并将新地址R1+R2×4写入R1LDR R0,=0x0000LDR R1,=0x0004LDR R2,=0x0008LDR R0,[R1],R2,LSR#2 ;将存储器地址为R1的字数据读入寄存器R0,并将新地址;R1+R2/4写入R1PRO2LDR R0,=0x0000LDR R1,=0x0004STR R0,[R1],#8 ;将R0中的字数据写入以R1为地址的存储器中, 并将新地址R1+8写入R1STR R0,[R1,#8] ;将R0中的字数据写入以R1+8为地址的存储器中B PRO1END(3)编写完毕,保存并添加到已建立的工程项目文件中。
嵌入式ADS试验参考指导书实验一嵌入式微处理器系统的开发环境一、实验环境PC机一台软件:ADS 一套二、实验目的;三、实验内容、基本配置四、实验步骤(1)在D:\新建一个目录,目录名为experiment。
(2)点击 WINDOWS 操作系统的“开始|程序|ARM Developer Suite |Code Warrior forARM Developer Suite”启动Metrowerks Code Warrior,或双击“ADS ”快捷方式启动。
启动ADS 如图1-1所示:(3) 在CodeWarrior 中新建一个工程的方法有两种,可以在工具栏中单击“New”按钮,也可以在“File”菜单中选择“New…”菜单。
这样就会打开一个如图1-2 所示的对话框。
选择【File】->【New…】,使用ARM Executable Image工程模板建立一个工程,名称为ADS,目录为D:\experiment。
图1-2 新建文件在这个对话框中为用户提供了7 种可选择的工程类型:1)ARM Executabl Image:用于由ARM 指令的代码生成一个ELF 格式的可执行映像文件;2)ARM Object Library:用于由ARM 指令的代码生成一个armar 格式的目标文件库;3)Empty Project:用于创建一个不包含任何库或源文件的工程;4)Makefile Importer Wizard:用于将Visual C 的nmake 或GNU make 文件转入到CodeWarrior IDE 工程文件;5)Thumb ARM Executable Image:用于由ARM 指令和Thumb 指令的混和代码生成一个可执行的ELF 格式的映像文件;6)Thumb Executable image:用于由Thumb 指令创建一个可执行的ELF 格式的映像文件;7)Thumb Object Library:用于由Thumb 指令的代码生成一个armar 格式的目标文件库。
实验1 ADS1.2 开发环境使用1、实验目的熟悉 ADS1.2 开发环境,使用 ADS 编译、调试并跟踪一段已有的程序了解嵌入式开发的基本思想和过程2、实验内容本次实验学习使用ADS集成开发环境。
新建一个简单的工程文件,并编译这个工程文件。
ARM仿真器的使用和开发环境的设置。
学会在程序中设置断点,观察系统内存和变量,为高调试应用程序打下基础。
3、预备知识所需的预备知识为:C语言的基础知识、程序调试的基础知识和方法。
4、实验设备及工具硬件:PC机软件:Windows 操作系统、ADS1.2集成开发环境5、实验原理5.1交叉开发环境概述嵌入式系统通常是一个资源受限的系统,因此直接在嵌入式系统的硬件平台上编写软件比较困难,有时候甚至是不可能的。
目前一般采用的解决办法是首先在通用计算机上编写程序,然后通过交叉编译生成目标平台上可以运行的二进制代码格式,最后再下载到目标平台上的特定位置上运行。
需要交叉开发环境(Cross Development Environment)的支持是嵌入式应用软件开发时的一个显著特点,交叉开发环境是指编译、链接和调试嵌入式应用软件的环境,它与运行嵌入式应用软件的环境有所不同,通常采用宿主机/目标机模式,如图1所示。
图 1 交叉开发环境交叉开发环境的组成要素:宿主机(Host)是一台通用计算机(如 PC 机或者工作站),它通过串口或者以太网接口与目标机通信。
宿主机的软硬件资源比较丰富,不但包括功能强大的操作系统(如Windows和Linux),而且还有各种各样优秀的开发工具(如 WindRiver的Tornado、Microsoft 的Embedded Visual C++等),能够大大提高嵌入式应用软件的开发速度和效率。
目标机(Target)一般在嵌入式应用软件开发期间使用,用来区别与嵌入式系统通信的宿主机,它可以是嵌入式应用软件的实际运行环境,也可以是能够替代实际运行环境的仿真系统,但软硬件资源通常都比较有限。
实验一嵌入式系统ARM驱动编程一、实验目的1.熟悉ARM环境,学会ARM 仿真器的使用。
使用ADS 编译、下载、调试并跟踪一段已有的程序,了解嵌入式开发的基本思想和过程。
2.掌握非嵌入式操作系统模式下的ARM编程。
3.了解LCD 基本概念与原理,熟悉用ARM 内置的LCD 控制器驱动LCD,掌握延时函数的使用方法,可以设计动态ARM程序。
二、实验内容(2学时)1.本次实验使用ADS集成开发环境。
学习ARM 仿真器的使用和开发环境的设置。
下载已经编译好的文件到嵌入式控制器中运行。
学会在程序中设置断点,观察系统内存和变量,为调试应用程序打下基础。
2.学习LCD 显示器的基本原理,理解其驱动控制方法。
掌握两种LCD 驱动方式的基本原理和方法。
并用编程实现控制LCD显示的ARM程序。
三、预备知识C 语言的基础知识、程序调试的基础知识和方法。
四、实验设备及工具硬件:ARM 嵌入式开发平台、用于ARM7TDMI 的JTAG 仿真器、PC 机。
软件:PC 机操作系统Win2000、ARM ADS1.2 集成开发环境、仿真器驱动程序、超级终端通讯程序五、实验原理1.ARM程序的在线仿真与调试ADS1.2可以进行ARM程序的编写和调试。
打开ADS1.2的编辑界面后,可以以工程的方式编写和组织源代码。
执行菜单Project | Make 可对工程进行编译连接。
在出现的错误/警告窗口中选择某错误/警告信息,ADS 会自动打开相应源文件并用箭头指向出错的文本行。
如果某个源文件被修改,重新编译时ADS 会自动同步各文件的日期信息。
ARM程序调试步骤如下:(1)在ADS 中执行菜单Project | Debug 启动ADS1.2 的调试工具AXD。
(2)在AXD 中执行菜单Options | Configure Target 对AXD 进行设置。
如图1B-13 所示。
选择ADP 即远程调试,点Configure 按钮进一步设置具体参数,如图1B-14 所示。
实验一 ADS1.2开发环境创建与简要介绍一、实验目的1. 熟悉ADS1.2开发环境,正确使用仿真调试电缆进行编译、下载、调试。
二、实验内容1. 学习ADS1.2开发环境三、实验设备1. EL-ARM-830教学实验箱,PentiumII以上的PC机,仿真调试电缆。
2.PC操作系统WIN98或WIN2000或WINXP,ADS1.2集成开发环境,仿真调试电缆驱动程序四、实验步骤1.ADS1.2下建立工程1.运行ADS1.2集成开发环境(CodeWarrior for ARM Developer Suite),点击File|New,在New对话框中,选择Project栏,其中共有7项,ARM Executable Image是ARM的通用模板。
选中它即可生成ARM的执行文件。
同时,如图2-1-1图2-1-1还要在,Project name栏中输入项目的名称,以及在Location中输入其存放的位置。
按确定保存项目。
2.在新建的工程中,选择Debug版本,如图2-1-2,使用Edit|Debug Settings菜单对Debug版本进行参数设置。
图2-1-23.在如图2-1-3中,点击Debug Setting 按钮,弹出2-1-4图,选中Target Setting图2-1-3图2-1-4项,在Post-linker栏中选中ARM fromELF项。
按OK确定。
这是为生成可执行的代码的初始开关。
4. 在如图2-1-5中,点击ARM Assembler ,在Architecture or Processer图2-1-5栏中选ARM920T。
这是要编译的CPU核。
5.在如图2-1-6中,点击ARM C Compliler ,在Architecture or Processer栏中选ARM920T。
这是要编译的CPU核。
图2-1-66. 在如图2-1-7中,点击ARM linker ,在outpur栏中设定程序的代码段地址,以及数据使用的地址。
实验一嵌入式微处理器系统的开发环境一、实验环境PC机一台软件: ADS 1.2集成开发环境一套二、实验目的1.了解嵌入式系统及其特点;2.熟悉嵌入式系统的开发环境和基本配置并能编写简单的汇编程序三、实验内容1.嵌入式系统的开发环境、基本配置2.使用汇编指令完成简单的加法实验四、实验步骤(1)在D:\新建一个目录,目录名为experiment。
(2)点击 WINDOWS 操作系统的“开始|程序|ARM Developer Suite v1.2 |Code Warrior for ARM Developer Suite”启动Metrowerks Code Warrior,或双击“ADS 1.2”快捷方式启动。
启动ADS 1.2 如图1-1所示:图1-1启动ADS1.2(3) 在CodeWarrior 中新建一个工程的方法有两种,可以在工具栏中单击“New”按钮,也可以在“File”菜单中选择“New…”菜单。
这样就会打开一个如图1-2 所示的对话框。
选择【File】->【New…】,使用ARM Executable Image工程模板建立一个工程,名称为ADS,目录为D:\experiment。
图1-2 新建文件在这个对话框中为用户提供了7 种可选择的工程类型:1)ARM Executabl Image:用于由ARM 指令的代码生成一个ELF 格式的可执行映像文件;2)ARM Object Library:用于由ARM 指令的代码生成一个armar 格式的目标文件库;3)Empty Project:用于创建一个不包含任何库或源文件的工程;4)Make Wizard:用于将Visual C 的nmake 或GNU make 文件转入到CodeWarrior IDE 工程文件;5)Thumb ARM Executable Image:用于由ARM 指令和Thumb 指令的混和代码生成一个可执行的ELF 格式的映像文件;6)Thumb Executable image:用于由Thumb 指令创建一个可执行的ELF 格式的映像文件;7)Thumb Object Library:用于由Thumb 指令的代码生成一个armar 格式的目标文件库。
嵌入式系统原理与应用实验指导书南航金城学院2013.2目录目录 (1)第一部分试验箱硬件结构 (2)第二部分实验 (11)实验一ADS1.2集成开发环境练习 (11)实验二汇编指令实验1 (17)实验三汇编指令实验2 (20)实验四汇编指令实验3 (23)实验五ARM微控制器工作模式实验 (28)实验六 C语言程序实验 (33)实验七 C语言调用汇编程序实验 (36)实验八GPIO输出控制实验 (39)实验九GPIO输入实验 (46)实验十外部中断实验 (50)实验十一UART通讯实验 (56)实验十二I2C接口实验 (64)实验十三定时器实验 (75)实验十四PWM DAC实验 (81)实验十五ADC实验 (87)实验十六RTC实验 (94)实验十七步进电机控制实验 (101)实验十八直流电机控制实验 (105)附录1 DeviceARM2410 专用工程模板 ..................................................... 错误!未定义书签。
第一部分试验箱硬件结构MagicARM2410教学实验开发平台是一款可使用μC/OS-II、Linux和WinCE操作系统、支持QT、MiniGUI图形系统、集众多功能于一身的ARM9教学实验开发平台。
采用Samsung公司的ARM920T内核的S3C2410A微处理器,扩展有充足的存储资源和众多典型的嵌入式系统接口。
MagicARM2410实验箱参考如图1.1所示。
图1.1 MagicARM2410实验箱外观图MagicARM2410实验箱功能框图如图1.2所示。
图1.2 MagicARM2410实验箱功能框图1.1 S3C2410A芯片简介S3C2410A是Samsung公司推出的16/32位RISC处理器(ARM920T内核),适用于手持设备、POS机、数字多媒体播放设备等等,具有低价格、低功耗、高性能等特点。
实验一嵌入式微处理器系统的开发环境一、实验环境PC机一台软件: ADS 1.2集成开发环境一套二、实验目的1.了解嵌入式系统及其特点;2.熟悉嵌入式系统的开发环境和基本配置并能编写简单的汇编程序三、实验容1.嵌入式系统的开发环境、基本配置2.使用汇编指令完成简单的加法实验四、实验步骤(1)在D:\新建一个目录,目录名为experiment。
(2)点击 WINDOWS 操作系统的“开始|程序|ARM Developer Suite v1.2 |Code Warrior for ARM Developer Suite”启动Metrowerks Code Warrior,或双击“ADS 1.2”快捷方式启动。
启动ADS 1.2 如图1-1所示:图1-1启动ADS1.2(3) 在CodeWarrior 中新建一个工程的方法有两种,可以在工具栏中单击“New”按钮,也可以在“File”菜单中选择“New…”菜单。
这样就会打开一个如图1-2 所示的对话框。
选择【File】->【New…】,使用ARM Executable Image工程模板建立一个工程,名称为ADS,目录为D:\experiment。
图1-2 新建文件在这个对话框中为用户提供了7 种可选择的工程类型:1)ARM Executabl Image:用于由ARM 指令的代码生成一个ELF 格式的可执行映像文件;2)ARM Object Library:用于由ARM 指令的代码生成一个armar 格式的目标文件库;3)Empty Project:用于创建一个不包含任何库或源文件的工程;4)Makefile Importer Wizard:用于将Visual C 的nmake 或GNU make 文件转入到CodeWarrior IDE 工程文件;5)Thumb ARM Executable Image:用于由ARM 指令和Thumb 指令的混和代码生成一个可执行的ELF 格式的映像文件;6)Thumb Executable image:用于由Thumb 指令创建一个可执行的ELF 格式的映像文件;7)Thumb Object Library:用于由Thumb 指令的代码生成一个armar 格式的目标文件库。
(4)选择【File】->【New…】建立一个新的文件TEST1.S,设置直接添加到项目中。
输入如程序代码,并保存,此时在工程窗口中可以看到TEST1.S文件。
图1-3 新建test1.s(5) 选择【Edit】->【Perferences…】,在Font选项设置字体是Fixedsys,Script是CHINESE_GB2312。
图1-4 设置字体(6) 选择【Edit】->【DebugRel Settings…】,在DebugRel Settings对话框的左边选择ARM Linker项,设置地址。
点击“DebugRel Settings…”图标按钮,即可进行工程的地址设置、输出文件设置、编译选项等,如图1-5所示。
在“ARM Linker”对话框设置连接地址,在“Language Settings”中设置各编译器的编译选项。
对于简单的软件调试,可以不进行连接地址的设置,直接点击工程窗口的“Make”图标按钮,即可完成编译连接。
若编译出错,会有相应的出错提示,双击出错提示行信息,编辑窗即会使用光标指出当前出错的源代码行,编译连接输出窗口如图1-6所示。
同样,您可以在【Project】菜单中找到相应的命令。
图1-5连接器选项设置图1-6 output选项卡OUTPUT 选项卡:该选项卡用来控制连接器进行连接操作的类型。
其中Linktype 选项组中的单选按钮确定使用的连接方式。
这里选择Simple,连接器将根据连接器选项中指定的地址映射方式,生成简单的ELF 格式的映像文件,所生成的映像文件中的地址映射关系比较简单.当选择Simple 连接类型时,需要设置下列的连接器选项,如图1-5所示。
RO Base 文本框中填入0x40000000。
地址0x40000000 是开发板上SDRAM 的真实地址,是由系统的硬件决定的;RW Base 文本框中填入0x40003000 指的是系统可读写存的地址。
也就是说,在0x40000000-0x40003000 之间是只读区域,存放程序的代码段,从0x40003000 开始是程序的数据段。
Layout 选项卡:该选项卡在连接方式位Simple 时有效,它用来安排一些输入段在映像文件中的位置。
Place at beginning of image 选项组用于指定将某个输入段放置在它所在的运行时域的开头。
包含复位异常中断处理程序的输入段通常放置在运行时域的开头。
这里,在Object/Symbol 文本框中指定目标文件的名称init.o,在Section 文本框中指定输入段的名称init,从而确定了init.s 源文件中的init 输入段位指定的输入段。
如图1-7所示。
图 1-7 Layout 选项卡中连接器选项(6) 选择【Project】->【Make】,或者按下快捷键F7,将编译整个工程。
如图 1-8所示为工程窗口中的图标按钮,通过这些图标按钮,可以快速的进行工程设置,编译连接,启动调试等等.它们从左到右分别为图1-8 工程窗口中的图标按钮A)DebugRel Settings… 工程设置;B)Synchronize Modification Dates 同步修改日期;C)Make 编译连接;D)Debug 启动ADX 进行调试;E)Run 启动ADX 调试,并直接运行;F)Project Inspector 工程检查,查看和配置工程中源文件的信息;对于简单的软件调试,直接点击工程窗口的”Make”图标按钮,即可完成编译.编译连接输出窗口如图1-9所示。
图1-9编译连接输出窗口(7) 选择【Project】->【Debug】,或者按下快捷键F5。
IDE环境就会启动AXD调试软件,接着可以执行单步、全速运行调试。
图1-10 AXD调试窗口注意:本实验使用软件仿真,所以要在AXD中选择【Options】->【Configure Target…】菜单,然后在 Choose Target窗口中选用ARMUL软件仿真。
图1-11 目标环境选择五思考题1.工程模板有何作用?2.如何强行重新编译工程的所有文件?(提示:选择【Project】->【Remove Object Code…】删除工程中的*.obj文件)六参考程序AREA Example1,CODE,READONLY ; 声明代码段Example1ENTRY ; 标识程序入口CODE32 ; 声明32位ARM指令START MOV R0,#15 ; 设置参数MOV R1,#8ADDS R0,R0,R1 ; R0 = R0 + R1B STARTEND实验预作关键过程及结果图:实验二汇编指令实验一、实验环境PC机一台ADS 1.2集成开发环境一套二、实验目的1.了解ADS 1.2集成开发环境及ARMulator软件仿真方法;2. 掌握ARM7TDMI汇编指令的用法,并能编写简单的汇编程序;3.掌握指令的条件执行和使用LDR/STR指令完成存储器的访问。
三、实验容1.使用LDR/STR指令完成存储器的访问。
2.使用数据处理指令实现数据传送和算术和逻辑运算。
3.使用ADS 1.2软件仿真,单步、全速运行程序,设置断点,打开寄存器窗口(ProcessorRegisters)监视寄存器的值,打开存储器观察窗口(Memory) 监视存储器的值。
根据以上要求完成该操作:使用LDR指令读取0x40003100上的数据,将数据加1,若结果小于10则使用STR指令把结果写回原地址,若结果大于等于10,则把0写回原地址……周而复此循环;使用ADS 1.2软件仿真,单步、全速运行程序,设置断点,打开寄存器窗口(Processor Registers)监视R0、R1的值,打开存储器观察窗口(Memory) 监视0x40003100上的值。
四、实验步骤(1) 启动ADS 1.2,使用ARM Executable Image工程模板建立一个工程Instruction1。
(2) 建立汇编源文件TEST2.S,编写实验程序,然后添加到工程中。
(3) 设置工程地址RO Base为0x40000000,RW Base为0x40003000。
设置调试入口地址Image entry point为0x40000000。
(4) 编译工程,选择【Project】->【Debug】,启动AXD进行软件仿真调试。
(5) 打开寄存器窗口(Processor Registers),选择Current 项监视R0,R1 的值。
打开存储器观察窗口(Memory),设置观察地址为0x40003100,显示方式Size 为32Bit,监视0x40003100 地址上的值。
图2-1 Memory 窗口显示格式设置寄存器显示格式与之类似。
使用鼠标左键选择某一个寄存器,然后点击鼠标右键,Format项中选择显示格式Hex,Decimal 等等。
如图2-2 所示。
图2-2设置寄存器显示格式(6)单步运行程序,可以设置/取消断点,或者全速运行程序,停止程序运行,调试时观察寄存器和0x40003100地址上的值。
图2-3 调试程序窗口六、思考题1.LDR伪指令与LDR加载指令的功能和应用有何区别,举例说明?2.LDR/STR指令的前索引偏移指令如何编写?指令是怎样操作的?3.在AXD调试时如何复位程序?(提示:选择【File】->【Reload Current Image】重新加载映象文件) 七、参考程序COUNT EQU 0x40003100 ; 定义一个变量,地址为0x40003100AREA Example2,CODE,READONLY ; 声明代码段Example2ENTRY ; 标识程序入口CODE32 ; 声明32位ARM指令START LDR R1,=COUNT ; R1 <= COUNTMOV R0,#0 ; R0 <= 0STR R0,[R1] ; [R1] <= R0,即设置COUNT为0LOOP LDR R1,=COUNTLDR R0,[R1] ; R0 <= [R1]ADD R0,R0,#1 ; R0 <= R0 + 1CMP R0,#10 ; R0与10比较,影响条件码标志MOVHS R0,#0 ; 若R0大于等于10,则此指令执行,R0 <= 0STR R0,[R1] ; [R1] <= R0,即保存COUNTB LOOPEND实验预作关键过程及结果图:单步运行观看寄存器和存储器的变化:具体指令讲解见指令手册。