嵌入式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机、数字多媒体播放设备等等,具有低价格、低功耗、高性能等特点。
嵌入式家园培训JLINK实验手册---ADS篇一 uart 串口实验实验内容:使用JLINK+ADS,跳线设置此时从NandFlash启动,使用AXD将程序下载到NandFlash 0x0地址,,实现在线调试。
实验步骤:1.先不要接上硬件2.安装JLink驱动:windows\Setup_JLinkARM_V402.exe是JLink的驱动安装程序程序,直接运行即可;3.硬件连接,上电。
4.安装USB转串口驱动:5.“windows\CDM 2.04.14”里是USB转串口的驱动程序,检测到"USB Serial Port"新硬件时,指定驱动程序的查找路径为这个目录即可。
6.配置AXD:1)点击 Options->Configure Interface…2) AXD下需要加载一个SDRAM初始化文件。
AXD下-->Option->Config Interface->session file->run configuration script。
点击“浏览”,找到SDRAM初始化配置文件,我在这里制作了adsconfigfile.txt,读者也可以自行制作初始化文件。
3)点击AXD下-->Option->Config Target…4)点击Add,添加 C:\Program Files\SEGGER\JLinkARM_V402\JLinkRDI.dll并点中JLinkRDI.dll(注意一定要用鼠标点击下JLinkRDI.dll),接着点击OK5)点击AXD下-->Option->Config Processor…6)去掉Semihosting前面的小勾,然后单击OK7、点击AXD下-->File>Load Image…,加载编译成功的axf映像文件:uart.axf8、运行调试,这样这样,就可以在超级终端,任意输入一个字母,而在超级终端上显示的为:输入字母的后面一个字母。
嵌入式系统原理及应用实验指导书平顶山学院计科系目录实验一ADS 1.2集成开发环境实验 (1)实验二汇编指令实验 (6)实验三C语言调用汇编实验 (9)实验四外部中断与GPIO输出控制实验 (11)实验五PWM输出实验 (14)实验六定时器实验 (17)实验七µC/OS-Ⅱ移植实验 (19)实验八基于µC/OS-Ⅱ的键盘与数码管显示实验 (29)实验一ADS 1.2集成开发环境实验一、实验目的1.了解ADS 1.2 集成开发环境的使用方法二、实验仪器设备、材料1.硬件:PC 机一台2.软件:Windows98/XP/2000 系统,ADS集成开发环境三、实验内容1.建立一个新的工程。
2.建立一个C 源文件,并添加到工程中。
3.设置文本编辑器支持中文。
4.设置编译链接控制选项。
5.编译链接工程。
6.调试工程。
四、实验步骤(1)启动ADS1.2 IDE 集成开发环境,选择【File】->【New…】,使用ARM Executable Image 工程模板建立一个工程,工程名称为ADS,见图1.1。
图1.1 建立ARM 指令代码的工程(2)选择【File】->【New…】建立一个新的文件TEST1.S,设置直接添加到项目中,见图1.2。
输入如程序清单1.1 所示的代码,并保存,见图1.3。
图1.2 新建文件TEST1.S图1.3 添加了TEST1.S 的工程管理窗口程序清单1.1 TEST1.S 文件代码(3)由于ADS 安装以后默认字体是Courier New,对于中文支持不完善,因此建议修改字体。
选择【Edit】->【Perferences…】,可以看见以下对话框,如图1.4所示。
在Font 选项设置字体是Fixedsys,Script 是CHINESE_GB2312 。
由于Tab 在不同文本编辑器解释不同,建议在Tab Inserts Spaces 前打勾,使Tab 键插入的是多个空格。
嵌入式系统实验指导书襄樊学院物理与电子工程学院实验要求 (1)实验预习报告内容及格式 (1)实验报告内容及格式 (1)实验1 Keil C51的使用(汇编语言) (2)实验2 十六进制与十进制的转换 (7)实验3 8段LED显示器动态显示 (8)实验4 矩阵键盘的使用 (13)实验5 A/D转换 (17)实验6 D/A转换 (19)附录试验箱原理图 (22)实验要求1.进入实验室前完成的部分1)认真阅读实验指导书,弄懂实验原理和实验内容。
2)编写实验所要用到的程序,将其放在U盘上。
3)写出预习报告(预习报告只交电子文档)。
2. 进入实验室后完成的部分1)建立工程,加入已准备好的程序文件。
2)对程序进行调试,修改错误,获得要求的结果。
3)保存调试后的程序。
3.实验结束后的部分对实验结果进行分析、总结,写出实验报告(实验报告需交电子文档和打印文档)。
实验预习报告内容及格式1.实验目的2.实验设备3.实验原理及环境4.实验内容只做文字叙述,程序部分放在程序清单中。
流程图也可不画。
5.程序清单本实验使用的完整程序。
如果使用了本实验或前面实验中完全相同的子程序,可不列写,只做注明即可。
6.实验步骤实验报告内容及格式1.实验目的2.实验设备3.实验原理及环境4.实验内容只做文字叙述,程序部分放在程序清单中。
流程图也可不画。
5.程序清单本实验使用的完整程序。
如果使用了本实验或前面实验中完全相同的子程序,可不列写,只做注明即可。
6.实验步骤7.实验总结主要包括对实验结果、调试过程、错误及产生的原因的分析,以及本次实验的重要收获等。
此项为实验成绩评定的重要依据。
实验1 Keil C51的使用(汇编语言)实验目的:初步掌握Keil C51(汇编语言)和ZY15MCU12BD型综合单片机实验箱的操作和使用,能够输入和运行简单的程序。
实验设备:ZY15MCU12BD型综合单片机实验箱一台、具有一个RS232串行口并安装Keil C51的计算机一台。
嵌入式微处理器结构与应用实验指导书大连民族学院信息与通信工程学院目录第一章嵌入式实验箱资源介绍 (2)第二章基于ARM系统资源的实验 (17)实验一 ARM ADS1.2开发环境创建与简要介绍 (21)实验二 ARM的汇编语言程序设计 (30)实验三 ARM的I/O接口实验 (32)实验四串行通信程序设计 (36)实验五 ARM的中断实验................................... 错误!未定义书签。
第一章嵌入式实验箱资源介绍1.1 2440核心板规格◆ CPU处理器- Samsung S3C2440AL,主频400MHz,最高533MHz。
◆ SDRAM内存-板载64MBSDRAM- 32bit数据总线- SDRAM时钟频率高达100MHz◆ Flash存储器-板载256MB Nand Flash,掉电非易失-板载2MB Nor Flash◆专业1.25V核心电压供电,完美解决CPU发热现象◆ 3个用户LED灯1.2 2440实验箱底板规格◆大电流5V供电,提供更加优质的供电,防止一切因为电源而引起的BUG;◆ LCD显示-板上LCD接口集成4线电阻式触摸屏接口,可以直接连接4线电阻式触摸屏,-支持黑白、4级灰度、16级灰度、256色、4096色STN液晶屏,尺寸从3.5寸到12.1寸,屏幕分辨率可以达到1024X768象素-支持黑白、4级灰度、16级灰度、256色、64K色、真彩色TFT液晶屏,尺寸从3.5寸到12.1寸,屏幕分辨率可以达到1024×768象素- 2440实验箱的标准配置为SHARP 8英寸分辨率为640x480的TFT真彩液晶屏,自带触摸屏◆ 1个100M以太网RJ-45接口◆ 3个串行接口,其中两个为RS3232电平,以DB9接口引出,另一个是TTL电平,以扩展模块接口引出◆ 4个USB Host A型接口(支持USB1.1协议)◆ 1个USB Slave B型接口(支持USB1.1协议)◆ 1个SD卡存储接口◆ 1路立体声音频输出接口,1路音频输入接口◆ 1个2.54mm的20针Jtag接口,可以使用它进行软件仿真和单步调试以及下载u-boot ◆4x4的User Buttons◆板载AD转换测试◆板载PWM功能测试(控制直流电机调速)◆板载44Pin IDE接口◆板载实时时钟电池◆系统复位开关和指示灯◆ CAN总线接口◆多功能扩展接口◆两路DA◆开关量若干个◆ 8个数码管◆ 1个蜂鸣器◆ 8个LED灯◆ 1个VGA接口◆ 1个直流电机◆ 1个步进电机◆ 1个扩展FPGA模块的专用接口1.3 硬件资源分配◆地址空间分配和片选信号定义S3C2440芯片支持两种启动模式:一种是从Nand Flash启动;另一种是从Nor Flash 启动。
实验一、ADS开发环境使用,测试程序一、实验目的a)ads安装使用b)arm在ads中的配置c)掌握 S3C2440A 的 I/O 控制寄存器的配置d)掌握ARM 汇编语法指令、c语言编程实验二、实验设备a)PC 机、实验箱、串口线、usb线、ads开发软件三、实验内容a)熟悉ARM 开发裸机环境的建立b)使用ARM 汇编指令设置GPIO 口的相应寄存器,编写跑马灯程序四、实验原理a)ARM ADS全称为ARM Developer Suite。
是ARM公司在2001年推出的ARM集成开发工具。
ADS 由命令行开发工具,ARM运行时库,GUI开发环境(Code Warrior和AXD),实用程序和支持软件组成。
使用ADS,用户就可以为ARM系列的RISC处理器编写和调试自己的开发应用程序了。
下面就详细介绍一下ADS的各个组成部分b)命令行开发工具这些工具完成将源代码编译,链接成可执行代码的功能。
ADS提供下面的命令行开发工具:armccarmcc是ARM C编译器。
这个编译器通过了Plum Hall C Validation Suite为ANSI C的一致性测试。
armcc用于将用ANSI C编写的程序编译成32位ARM指令代码。
armcpparmcpp是ARM C++编译器。
它将ISO C++ 或EC++ 编译成32位ARM指令代码。
tcctcc是Thumb C 编译器。
该编译器通过了Plum Hall C Validation Suite为ANSI 一致性的测试。
tcc将ANSI C源代码编译成16位的Thumb指令代码。
tcpptcpp是Thumb C++ 编译器。
它将ISO C++ 和EC++ 源码编译成16位Thumb指令代码。
armasmarmasm是ARM和Thumb的汇编器. 它对用ARM 汇编语言和Thumb 汇编语言写的源代码进行汇编。
armlinkarmlink是ARM连接器。
实验一:开发环境实验实验学时:2实验类型:验证+设计实验要求:必做一、实验目的熟悉ADS1.2开发环境,掌握ARM汇编语言,能编写汇编程序实现一定功能,学会ARM仿真器的使用,使用ADS编译、下载、调试并跟踪一段已有的程序,了解嵌入式开发的基本思想和过程。
二、实验设备计算机;博创UP-3000实验箱三、实验步骤1.打开ADS软件,新建工程,编写汇编程序,在数据段sourcedata中给定10个数字,实现数字排序功能,将结果存储在finaldata中,在ADS仿真环境下观察寄存器内容的变化。
2.打开ADS软件,按照《博创实验指导书》建立工程模板,了解各参数含义。
3.打开超级终端,与实验箱连接,以步骤2中的模板新建工程,导入“..\3000的ADS实验\Exp1开发环境实验”目录下所有文件,编译、下载、调试并跟踪程序运行,在超级终端中观察程序运行结果。
4.熟悉实验箱BIOS指令。
5.记录和整理实验报告四、实验报告内容1.画汇编程序流程图,附汇编程序源代码,并加注释及程序运行结果(截屏)。
2.简述通过ADS编译、下载、调试并跟踪程序的过程。
3.回答思考题。
五、思考题1.超级终端的作用是什么?2.ADS工程文件的Debug和Release版本有何不同,各有什么作用?实验二:串行口实验实验学时:2实验类型:设计实验要求:必做一、实验目的1.掌握ARM的串行口工作原理。
2.学习编程实现ARM的UART通讯。
3.掌握CPU利用串口通讯的方法。
二、实验设备计算机;博创UP-3000实验箱三、实验步骤1.新建工程,将“\3000的ADS实验\Exp2串行口实验”中的文件添加到工程中,这些是启动时所需要的文件。
2.查找S3C44B0工作手册,定义与UART有关的各个寄存器地址和一些特殊的位命令。
主要有以下各寄存器(44b.h):/* UART的全部功能寄存器 */#define rULCON0#define rULCON1#define rUCON0#define rUCON1#define rUFCON0 (*(volatile unsigned *)0x1d00008)#define rUFCON1 (*(volatile unsigned *)0x1d04008)#define rUMCON0 (*(volatile unsigned *)0x1d0000c)#define rUMCON1 (*(volatile unsigned *)0x1d0400c)#define rUTRSTAT0 (*(volatile unsigned *)0x1d00010)#define rUTRSTAT1 (*(volatile unsigned *)0x1d04010)#define rUERSTAT0 (*(volatile unsigned *)0x1d00014)#define rUERSTAT1 (*(volatile unsigned *)0x1d04014)#define rUFSTAT0 (*(volatile unsigned *)0x1d00018)#define rUFSTAT1 (*(volatile unsigned *)0x1d04018)#define rUMSTAT0 (*(volatile unsigned *)0x1d0001c)#define rUMSTAT1 (*(volatile unsigned *)0x1d0401c)#define rUBRDIV0#define rUBRDIV1#ifdef __BIG_ENDIAN //大端摸式#define rUTXH0 (*(volatile unsigned char *)0x1d00023)#define rUTXH1 (*(volatile unsigned char *)0x1d04023)#define rURXH0 (*(volatile unsigned char *)0x1d00027)#define rURXH1 (*(volatile unsigned char *)0x1d04027)#define WrUTXH0(ch) (*(volatile unsigned char *)(0x1d00023))=(unsigned char)(ch)#define WrUTXH1(ch) (*(volatile unsigned char *)(0x1d04023))=(unsigned char)(ch)#define RdURXH0() (*(volatile unsigned char *)(0x1d00027))#define RdURXH1() (*(volatile unsigned char *)(0x1d04027))#define UTXH0 (0x1d00020+3) //byte_access address by BDMA#define UTXH1 (0x1d04020+3)#define URXH0 (0x1d00024+3)#define URXH1 (0x1d04024+3)#else //小端摸式#define rUTXH0 (*(volatile unsigned char *)0x1d00020)#define rUTXH1 (*(volatile unsigned char *)0x1d04020)#define rURXH0 (*(volatile unsigned char *)0x1d00024)#define rURXH1 (*(volatile unsigned char *)0x1d04024)#define WrUTXH0(ch) (*(volatile unsigned char *)0x1d00020)=(unsigned char)(ch)#define WrUTXH1(ch) (*(volatile unsigned char *)0x1d04020)=(unsigned char)(ch)#define RdURXH0() (*(volatile unsigned char *)0x1d00024)#define RdURXH1() (*(volatile unsigned char *)0x1d04024)#define UTXH0 (0x1d00020) //byte_access address by BDMA#define UTXH1 (0x1d04020)#define URXH0 (0x1d00024)#define URXH1 (0x1d04024)#endif3.编写串口驱动函数(MyUart.c):图2-1为串口初始化的实现流程,图2-2为发送数据的流程,图2-3为接收数据的流程。
实验一嵌入式微处理器系统的开发环境一、实验环境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实验预作关键过程及结果图:单步运行观看寄存器和存储器的变化:具体指令讲解见指令手册。