ARM实验三
ARM设计实验报告
目录一,实验目的二,实验软件, 硬件三,实验题目及要求(设计要求)四,软件时钟设计总体方案五,软件时钟的电路原理图六,程序流程图及C程序(软件部分)七,Proteus仿真图(硬件部分)一实验目的。
1,应用所学的ARM知识设计一个实时时钟掌握LPC2106中断处理, RTC的使用。
二实验软件, 硬件。
软件:proteus6.9仿真软件, ARM开发环境ADS.硬件: WINDOW 2000/XP PC机一台。
三实验题目及要求(设计要求)。
题目: 带报警功能并且可以调节时间的实时时钟。
要求: 1, 实时时间可通过按键选择调节。
2, 可以通过按键设定报警时间。
3, 当达到报警时间时, 蜂鸣器响一下, LED灯点亮。
4, 报警时间和实时时间通过液晶模块LCD1602显示四软件时钟设计总体方案本实验是基于LPC2106ARM处理器而设计的实时时钟, 综合性较强, 涉及到RTC外部中断, 引脚的GPIO功能, C语言编程等知识。
首先要定义P0口为基本I\O功能, 然后通过引脚功能选择寄存器PINSEL0及PINSEL1定义输入输出外部中断口所在的位, 另外还要对外部中断进行初始化, 其中有规定他们的优先级, 中断触发方式, 中断地址分配, 本实验采用液晶模块LCD1602同时显示实时时间和报警时间, 同样要对他们进行初始化, 包括检查总线忙与闲, 传送地址, 传送数据及显示函数的编程、1,LPC2106微控制器自带有一个实时时钟RTC带日历和时钟功能, 要使用它也要进行一下的基本操作:2,设置RTC基准时钟分频器3,初始化RTC的时钟值如, YEAR,MONTH,HOUR等4,启动RTC即CCR的CLKEN位职位5,读取完整时间寄存器值或等待中断。
陈述完以上的模块初始化后, 下面简要说明一下程序的流程先调用以上各个模块的初始化函数lcd_int(),RTCint()然后开启RTC时钟, 并调用LCD显示函数SendTimetRtc(),如果没用中断发生就判断实时时间是否与以设定的报警时间相同, 如果相同就马上接通蜂鸣器报警并且点亮LED灯。
ARM实训报告汇总
实训一、绘出STM32开发板的MCU外围硬件连接图学生:吴磊郑黄庆阿不力孜指导老师:王宜结电子工程学院电子信息工程一、实训目的1.握STM32开发板的封装和引脚2.能够测量开发板外围器件与STM32芯片的实际连接,并画出电路图二、实训内容1.画出开发板上MCU与发光二极管DS0、DS1的连接示意图2.画出开发板上MCU与按键KEY0、KEY1、KRY2、KEYM的连接示意图3.画出开发板上MCU与24C02芯片的连接示意图4.画出开发板上MCU与W25X16芯片的连接示意图5.画出开发板上MCU与温度传感器18B20的连接示意图6.画出开发板上MCU与2.8寸液晶的连接示意图7.画出开发板上MCU与红外接收头的连接示意图8.画出开发板上MCU与PL2302芯片的连接示意图三、实训过程1、MCU图1图1中上部的BOOT1用于设置STM32的启动方式,其对应启动模式如下表所示:表1我们用串口下载代码,则配置BOOT0为1,BOOT1为0即可,如果想让STM32一按复位键就开始跑代码,则需要配置BOOT0为0,BOOT1随便设置都可以。
2、LED图2其中PWR是系统电源指示灯,为蓝色。
LED0和LED1分别接在PA8和PD2上,PA8还可以通过TIM1的通道1的PWM输出来控制DS0的亮度。
为了方便大家判断,我们选择了DS0为红色,DS1为绿色的LED灯。
3、按键图3KEY0、KEY1和KEY2用作普通按键输入,分别连接在PA13、PA15和PA14上。
WK_UP 按键连接到PA0(STM32的WKUP引脚),它除了可以用作普通输入按键外,还可以用作STM32的唤醒输入。
4、EEPROMALIENTEK MiniSTM32自带了24C02的EEPROM芯片,该芯片的容量为2Kbit,也就是256个字节。
图4这里我们把A0~A2均接地,对24C02来说也就是把地址位设置成了0了。
5、SPI FLASHALIENTEK MiniSTM32开发板载有SPI FLASH芯片W25X16,该芯片的容量为2M字节。
北航ARM9实验报告:实验3uCOS-II实验
北航ARM9实验报告:实验3uCOS-II实验北航 ARM9 实验报告:实验 3uCOSII 实验一、实验目的本次实验的主要目的是深入了解和掌握 uCOSII 实时操作系统在ARM9 平台上的移植和应用。
通过实际操作,熟悉 uCOSII 的任务管理、内存管理、中断处理等核心机制,提高对实时操作系统的理解和应用能力,为后续的嵌入式系统开发打下坚实的基础。
二、实验环境1、硬件环境:ARM9 开发板、PC 机。
2、软件环境:Keil MDK 集成开发环境、uCOSII 源代码。
三、实验原理uCOSII 是一个可裁剪、可剥夺型的多任务实时内核,具有执行效率高、占用空间小、实时性能优良和可扩展性强等特点。
其基本原理包括任务管理、任务调度、时间管理、内存管理和中断管理等。
任务管理:uCOSII 中的任务是一个独立的执行流,每个任务都有自己的堆栈空间和任务控制块(TCB)。
任务可以处于就绪、运行、等待、挂起等状态。
任务调度:采用基于优先级的抢占式调度算法,始终让优先级最高的就绪任务运行。
时间管理:通过系统时钟节拍来实现任务的延时和定时功能。
内存管理:提供了简单的内存分区管理和内存块管理机制。
中断管理:支持中断嵌套,在中断服务程序中可以进行任务切换。
四、实验步骤1、建立工程在 Keil MDK 中创建一个新的工程,选择对应的 ARM9 芯片型号,并配置相关的编译选项。
2、导入 uCOSII 源代码将 uCOSII 的源代码导入到工程中,并对相关的文件进行配置,如设置任务堆栈大小、系统时钟节拍频率等。
3、编写任务函数根据实验要求,编写多个任务函数,每个任务实现不同的功能。
4、创建任务在主函数中使用 uCOSII 提供的 API 函数创建任务,并设置任务的优先级。
5、启动操作系统调用 uCOSII 的启动函数,使操作系统开始运行,进行任务调度。
6、调试与测试通过单步调试、查看变量值和输出信息等方式,对系统的运行情况进行调试和测试,确保任务的执行符合预期。
ARM嵌入式实验报告
实验一ARM 汇编指令使用实验——基本数学/ 逻辑运算一、实验目的1. 初步学会使用ARM ADS / Embest IDE for ARM 开发环境及ARM 软件模拟器。
2. 通过实验掌握数据传送和基本数学/ 逻辑运算的ARM 汇编指令的使用方法。
二、实验设备1. 硬件:PC机。
2. 软件:ADS 1.2 / Embest IDE 200X 集成开发环境。
三、实验内容1 .熟悉ADS 1.2 / Embest IDE 200X 开发环境的使用,使用LDR/STR和MOV等指令访问寄存器或存储单元,实现数据的加法运算。
具体实验程序如下:/* armasm1a.s */• EQU X, 45 /*定义变量X,并赋值为45*/.EQU Y, 64 /*定义变量Y,并赋值为64*/.EQU STACK_TOP, 0X1000 /* 定义栈顶0X1000*/.GLOBAL _START.TEXT_START: /* 程序代码开始标志*/MOV SP, #STACK_TOPMOV R0, #X/*X 的值放入R0*/STR R0, [SP]/*R0 的值保存到堆栈*/MOV R0, #Y/*Y 的值放入R0*/LDR R1, [SP]/* 取堆栈中的数到R1*/STRR0, [SP] STOP: B STOP/* 程序结束,进入死循环 */.END等指令,完成基本数学 / 逻辑运算。
具体实验程序如下:/* armasm1b.s */ .EQU X, 45 /*定义变量X ,并赋值为45*/ .EQU Y, 64 /*定义变量Y ,并赋值为64*/ .EQU 乙87/*定义变量Z ,并赋值为87*/.GLOBAL _START .TEXT_START: /* 程序代码开始标志 */MOV R0, #X/*X 的值放入 R0*/MOV R0, R0, LSL #8 /*R0 的值乘以 2 的 8 次方 */ MOV R1, #Y/*Y 的值放入 R1*/ADD R2, R0, R1, LSR #1 /*R1 的值除以 2 再加上 R0 后的值放入 R2*/MOV SP, #0X1000 STR R2, [SP] MOV R0, #Z/*Z 的值放入 R0*/ AND R0, R0, #0XFF /* 取 R0 的低八位 */ MOV R1, #Y/*Y 的值放入 R1*/ADD R2, R0, R1, LSR #1 /*R1 的值除以 2 再加上 R0 后的值放入 R2*/ADDR0, R0, R1 2.使用 ADD/SUB/LSL/LSR/AND/ORR .EQU STACK_TOP, 0X1000 /* 定义栈顶 0X1000*/1.新建工程。
ARM培训实验指导书(第一版)
NXP 大学计划指定民大实验教材ARM与嵌入式技术版本:2008年1月第一版目录实验一熟悉Embest IDE集成开发环境 (1)实验二ARM汇编指令实验(1) (4)实验三ARM汇编指令实验(2) (9)实验三存储器实验.................................................................................... 错误!未定义书签。
实验四I/O接口实验............................................................................... 错误!未定义书签。
实验五中断实验........................................................................................ 错误!未定义书签。
实验六串口通信实验................................................................................ 错误!未定义书签。
实验七数码管(LED)显示实验 ............................................................ 错误!未定义书签。
实验八RTC及数码管显示实验(设计性实验).................................... 错误!未定义书签。
实验九液晶显示实验................................................................................ 错误!未定义书签。
实验十键盘控制实验................................................................................ 错误!未定义书签。
嵌入式系统ARM实验报告
南京邮电大学通信与信息工程学院实验报告实验名称:实验一基于ADS开发环境的设计实验二嵌入式Linux交叉开发环境的建立实验三嵌入式Linux环境下的程序设计课程名称嵌入式系统B班级学号B********姓名马俊民开课时间2015/2016学年第1学期实验一基于ADS开发环境的程序设计一、实验目的1、学习ADS开发环境的使用;2、学习和掌握ADS环境下的汇编语言及C语言程序设计;3、学习和掌握汇编语言及C语言的混合编程方法。
二、实验内容1、编写和调试汇编语言程序;2、编写和调试C语言程序;3、编写和调试汇编语言及C语言的混合程序;4、编写程序测试多寄存器传送指令的用法。
三、实验原理ADS全称为ARM Developer Suite,是ARM公司推出的新一代ARM集成开发工具。
现在常用的ADS版本是ADS1.2,它取代了早期的ADS1.1和ADS1.0。
ADS用于无操作系统的ARM系统开发,是对裸机(可理解成一个高级单片机)的开发。
ADS具有极佳的测试环境和良好的侦错功能,它可使硬件开发工作者更深入地从底层去理解ARM处理器的工作原理和操作方法,为日后自行设计打基础,为BootLoader的编写和调试打基础。
1.ADS软件的组成ADS由命令行开发工具、ARM运行时库、GUI开发环境(CodeWarrior和AXD)、实用程序、支持软件等组成。
2.GUI开发环境ADS GUI开发环境包含CodeWarrior和AXD两种,其中Code Warrior是集成开发工具,而AXD是调试工具。
使用汇编语言进行编程简单、方便,适用于初始化硬件代码、启动代码等。
汇编语言具有一些相同的基本特征:1.一条指令一行。
2.使用标号(label)给内存单元提供名称,从第一列开始书写。
3.指令必须从第二列或能区分标号的地方开始书写。
4.注释必须跟在指定的注释字符后面,一直书写到行尾。
在ARM汇编程序中,每个段必须以AREA作为段的开始,以碰到下一个AREA 作为该段的结束,段名必须唯一。
5_ARM实验报告
5_ARM实验报告[实验报告]实验名称:5_ARM实验实验目的:1.了解ARM架构的特点和基本原理;2.掌握ARM指令集和编程模式;3.学会使用ARM开发工具进行编程和调试;4.实现一个简单的ARM程序并运行。
实验器材:1.ARM开发板;2.电脑;B数据线。
实验步骤:1.搭建开发环境根据实验指导书的步骤,将开发板与电脑连接,安装开发工具和驱动程序。
2.学习ARM指令集和编程模式通过阅读教材和参考资料,了解ARM指令集的基本原理和常用指令。
同时,学习ARM的编程模式,包括程序的加载、运行和调试等。
3.编写ARM程序根据实验要求,编写一个简单的ARM程序。
这个程序可以是一个简单的计算器,或者是一个LED灯的控制程序等。
编写程序时需要注意使用合适的指令和编程模式。
4.编译和烧录程序使用ARM开发工具,将编写好的程序进行编译和烧录。
编译过程会生成一个可执行的二进制文件,烧录过程会将这个二进制文件加载到开发板上。
5.调试并运行程序通过ARM开发工具进行调试,检查程序中可能存在的错误,并进行修正。
调试过程中需要注意程序的执行流程和变量的值等。
调试完成后,运行程序并观察其运行结果。
实验结果与分析:在实验中,我成功地搭建了ARM的开发环境,学习了ARM指令集和编程模式,并编写了一个简单的ARM程序。
经过编译和烧录,我成功地将程序加载到开发板上,并通过调试和运行,验证了程序的正确性。
实验中遇到的问题和解决方法:在编写程序的过程中,我遇到了一些语法错误和逻辑问题。
通过阅读资料、查找文档和与同学的讨论,我解决了这些问题。
在调试的过程中,我还遇到了一些程序运行速度过慢的问题。
通过优化代码和使用合适的编译选项,我解决了这个问题。
实验总结:通过这次实验,我对ARM架构有了更深入的了解,掌握了ARM指令集和编程模式的基本原理和使用方法。
通过编写和调试一个简单的ARM程序,我提高了自己的编程能力和解决问题的能力。
实验还让我明白了实际应用中ARM的重要性,以及它对于现代计算机系统的作用。
arm程序设计实验报告
arm程序设计实验报告ARM程序设计实验报告一、引言ARM(Advanced RISC Machine)是一种精简指令集计算机(RISC)架构。
在本次实验中,我们将学习和实践ARM程序设计的基本知识和技巧。
本报告将介绍实验的目标、步骤和结果,并对所学内容进行总结和思考。
二、实验目标本次实验的主要目标是通过编写ARM汇编程序,实现简单的功能。
具体来说,我们将学习如何使用ARM汇编语言编写程序,了解寄存器、指令和内存的基本概念,以及如何进行程序的调试和优化。
三、实验步骤1. 环境准备:安装ARM开发工具链,并配置开发环境。
2. 编写程序:根据实验要求,编写ARM汇编程序,实现指定的功能。
3. 调试与测试:使用模拟器或硬件平台,调试和测试编写的程序,确保程序的正确性和稳定性。
4. 优化改进:根据实验结果和性能要求,对程序进行优化改进,提高程序的效率和可靠性。
四、实验结果在本次实验中,我们成功完成了以下任务:1. 实现了一个简单的计算器程序,可以进行加减乘除运算,并输出结果。
2. 编写了一个字符串反转程序,可以将输入的字符串逆序输出。
3. 设计了一个简单的游戏程序,用户需要通过按键控制角色移动,避开障碍物。
通过以上实验,我们掌握了ARM汇编语言的基本语法和指令,了解了寄存器和内存的使用方法,以及如何进行程序的调试和优化。
同时,我们还学习了如何与外部设备进行交互,实现更复杂的功能。
五、实验总结通过本次实验,我们深入了解了ARM程序设计的基本原理和技巧。
ARM架构的精简指令集使得程序设计更加高效和灵活,适用于各种嵌入式系统和移动设备。
同时,ARM处理器的低功耗特性也使得其在无线通信、物联网等领域有着广泛的应用前景。
然而,ARM程序设计也存在一些挑战和难点。
首先,由于ARM汇编语言与高级语言相比,语法更为底层和复杂,需要更加深入地理解计算机硬件结构。
其次,ARM处理器的架构和指令集不同于传统的x86架构,需要重新学习和适应。
北航ARM9嵌入式系统实验实验三uCOS-II实验
北航ARM9嵌⼊式系统实验实验三uCOS-II实验实验三 uCOS-II实验⼀、实验⽬的在内核移植了uCOS-II 的处理器上创建任务。
⼆、实验内容1)运⾏实验⼗,在超级终端上观察四个任务的切换。
2)任务1~3,每个控制“红”、“绿”、“蓝”⼀种颜⾊的显⽰,适当增加OSTimeDly()的时间,且优先级⾼的任务延时时间加长,以便看清三种颜⾊。
3)引⼊⼀个全局变量BOOLEAN ac_key,解决完整刷屏问题。
4)任务4管理键盘和超级终端,当键盘有输⼊时在超级终端上显⽰相应的字符。
三、预备知识1)掌握在EWARM 集成开发环境中编写和调试程序的基本过程。
2)了解ARM920T 处理器的结构。
3)了解uCOS-II 系统结构。
四、实验设备及⼯具1)2410s教学实验箱2)ARM ADS1.2集成开发环境3)⽤于ARM920T的JTAG仿真器4)串⼝连接线五、实验原理及说明所谓移植,指的是⼀个操作系统可以在某个微处理器或者微控制器上运⾏。
虽然uCOS-II的⼤部分源代码是⽤C语⾔写成的,仍需要⽤C语⾔和汇编语⾔完成⼀些与处理器相关的代码。
⽐如:uCOS-II在读写处理器、寄存器时只能通过汇编语⾔来实现。
因为uCOS-II 在设计的时候就已经充分考虑了可移植性,所以,uCOS-II的移植还是⽐较容易的。
要使uCOS-II可以正常⼯作,处理器必须满⾜以下要求:(1)处理器的C编译器能产⽣可重⼊代码可重⼊的代码指的是⼀段代码(如⼀个函数)可以被多个任务同时调⽤,⽽不必担⼼会破坏数据。
也就是说,可重⼊型函数在任何时候都可以被中断执⾏,过⼀段时间以后⼜可以继续运⾏,⽽不会因为在函数中断的时候被其他的任务重新调⽤,影响函数中的数据。
(2)在程序中可以打开或者关闭中断在uCOS-II中,可以通过OS_ENTER_CRITICAL()或者OS_EXIT_CRITICAL()宏来控制系统关闭或者打开中断。
这需要处理器的⽀持,在ARM920T的处理器上,可以设置相应的寄存器来关闭或者打开系统的所有中断。
大学ARM嵌入式实验报告范文
大学ARM嵌入式实验报告范文《嵌入式系统》实验报告姓名:学号:班级:2022年4月实验一ARM汇编指令实验1一、实验目的1.初步学会使用ADS1.2开发环境及ARM软件模拟器;2.通过实验掌握简单ARM汇编指令的使用方法。
二.实验设备1.硬件:PC机;2.软件:ADS1.2集成开发环境。
Window98/2000/NT/某P。
三.实验内容1.熟悉开发环境的使用,并使用LDR/STR和MOV等指令访问寄存器或存储单元。
2.使用ADD/SUB/LSL/LSR/AND/ORR等指令,完成基本数学/逻辑运算。
四.实验原理ARM处理器共有37个寄存器:31个通用寄存器,包括程序计数器(PC),这些寄存器都是32位;6个状态寄存器,这些寄存器也是32位,但只使用了其中的12位。
1.ARM通用寄存器通用寄存器(R0~R15)可分为3类,即不分组寄存器R0~R7.分组寄存器R8~R14.程序计数器R15。
2.存储器格式ARM体系结构将存储器看作是从零地址开始的字节的线性组合。
字节0~3存放第一个字,字节4~7存放第2个字,以此类推。
ARM体系结构可以用两种方法存储字数据,分别称为大端格式和小端格式。
五.实验程序1.实验A参考程序某EQU45:定义变量某,并赋值为45YEQU64:定义变量y,并赋值为64STACK_TOPEQU0某1000:定义栈顶0某1000AREAE某ample,CODE,READONLY:声明代码段ENTRY:标识入口STARTMOVSP,#STACK_TOPMOVR0,#某:某的值放入R0STRR0,[SP]:R0的值保存到堆栈MOVR0,#Y:y的值放入R0LDRR1,[SP]:取堆栈中的数到R1ADDR0,R0,R1STRR0,[p]STOPBSTOP:死循环END:结束2.实验B参考程序某EQU45:定义变量某,并赋值为45YEQU64:定义变量y,并赋值为64ZEQU87:定义变量z,并赋值为87STACK_TOPEQU0某1000:定义堆栈顶0某1000AREAHU某IANG,CODE,READONLY:声明代码段,只读ENTRY:标识入口STARTMOVR0,#某:某的值放入R0MOVR0,R0,LSL#8:R0的值乘以2的8次方MOVR1,#Y:y的值放入R1ADDR2,R0,R1,LSR#1:R1的值除以2加上r0的值放入R2MOVSP,#0某1000STRR2,[SP]MOVR0,#Z:z的值放入R0ANDR0,R0,#0某FF:取R0的低八位MOVR1,#Y:y的值放入R1ADDR2,R0,R1,LSR#1:R1的值除以2加上r0的值放入R2LDRR0,[SP]:y的值放入R1MOVR1,#0某01ORRR0,R0,R1MOVR1,R2:y的值放入R1ADDR2,R0,R1,LSR#1:R1的值除以2加上r0的值放入R2STOPBSTOP:死循环END:结束六.实验结果及分析1.程序A的实验结果截图如下:实验分析;本实验使用LDR、STR、MOV等指令访问寄存器和存储单元,使用堆栈和寄存器R0,R1存储变量。
第三章(arm实验报告)
实验三3.1 实验目的初步学会使用Embest IDE for ARM 开发环境及ARM 软件模拟器;通过实验掌握简单ARM 汇编指令的使用方法。
实验内容熟悉开发环境的使用并使用ldr/str,mov 等指令访问寄存器或存储单元。
使用add/sub/lsl/lsr/and/orr 等指令,完成基本数学/逻辑运算。
3.2实验目的通过实验掌握使用ldm/stm,b,bl 等指令完成较为复杂的存储区访问和程序分支,学习使用条件码,加强对CPSR 的认识。
实验内容熟悉开发环境的使用并完成一块存储区的拷贝;完成分支程序设计,要求判断参数,根据不同参数,调用不同的子程序。
3.3 实验目的通过实验掌握ARM 处理器16 位Thumb 汇编指令的使用方法。
实验内容使用THUMB 汇编语言,完成基本的reg/mem 访问,以及简单的算术/逻辑运算;使用THUMB 汇编语言,完成较为复杂的程序分支,push/pop,领会立即数大小的限制,并体会ARM 与THUMB 的区别。
3.4实验目的通过实验掌握学会使用msr/mrs 指令实现ARM 处理器工作模式的切换,观察不同模式下的寄存器,加深对CPU 结构的理解;通过实验掌握ld 中如何使用命令行指定代码段起始地址。
实验内容通过ARM 汇编指令,在各种处理器模式下切换并观察各种模式下寄存器的区别;掌握ARM 不同模式的进入与退出。
3.5 实验目的学会使用Embest IDE 编写简单的C 语言程序并进行调试;学会编写和使用命令脚本文件;掌握通过memory/register/watch/variable 窗口分析判断运行结果。
实验内容利用命令脚本初始化栈指针,并使用c 语言完成延时函数。
3.6 实验目的掌握建立基本完整的ARM 工程,包含启动代码,连接脚本等;了解ARM7 启动过程,学会使用Embest IDE 编写简单的C 语言程序和汇编启动代码并进行调试;掌握链接脚本的作用;掌握如何指定代码入口地址与入口点;掌握通过memory/register/watch/variable 窗口分析判断结果。
arm实验3 定时器实验
实验3 定时器实验一、实验目的:1、掌握定时器初始化的步骤;2、掌握定时器控制寄存器(TCR)的含义和使用;3、掌握定时器工作原理,学习定时器中断的设计方法,掌握1S间隔的定时器的处理。
4、熟悉ARM的中断原理,并产生中断。
二、实验设备:1.硬件PC机2.软件ADS1.2、PROTUES三、实验内容及原理:实验内容:本实验要求编写一个简单的定时器中断程序,设置一定的周期控制(1S)与某一个引脚(P0.0)相连的LED指示灯。
当定时器中断产生时可以观察到LED周期性闪烁。
实验原理:定时器控制(中断方式)。
采用11.0592MHz晶振,使用PLL部件,cclk=Fosc*4=11.0592MHz*4=442368MHz,外围时钟使用复位默认的Fpclk=fcclk/4=44.2368MHz/4=11.0592MHz,定时器0进行100分频(即PR=99,MR0=110592),实现1S定时控制LED点亮或熄灭。
另外,使用VIC的向量IRQ功能。
首先设置定时器为向量IRQ中断,分配优先级并使能向量,然后设置相关向量地址寄存器VICVectAddr0及中断使能,在中断服务程序里完成LED的亮灭,在处理完毕后写向量地址寄存器为0,通知VIC中断处理结束。
四、实验步骤1、在PROTUES里搭建好硬件电路平台,处理器采用LPC2106,如下图所示。
2、打开ADS1.2的CodeWarrior编译环境,新建一个工程(ARM Executable Image)工程,工程名为Time0。
在新建一个文件Time0.c,添加到工程里。
3、在工程空白处右击,添加工程所需的文件(config.h, target.h, LPC2106.h, Startup.s, IRQ.s, target.c)。
如下图所示。
4、编写Time0.c,实现定时器1s定时,LED灯闪烁。
5、配置DebugRel Seteings , 打开Target Settings ,设置如下图所示。
[理学]ARM工作原理实验指导书
嵌入式系统原理实验指导书目录实验一ARM集成开发工具——ADS练习 (5)1.1 实验目的 (5)1.2 实验设备 (5)1.3 实验内容 (5)1.4 实验预习要求 (5)1.5 实验步骤 (5)1.6 思考 (19)实验二汇编指令实验1 (20)2.1 实验目的 (20)2.2 实验设备 (20)2.3 实验内容 (20)2.4 实验预习要求 (20)2.5 实验步骤 (21)2.6 实验参考程序 (23)2.7 思考 (24)实验三汇编指令实验2 (25)3.1 实验目的 (25)3.2 实验设备 (25)3.3 实验内容 (25)3.4 实验预习要求 (25)3.5 实验步骤 (26)3.6 实验参考程序 (27)3.7 思考 (30)实验四GPIO控制实验 (32)4.1 实验目的 (41)4.2 实验设备 (41)4.3 实验内容 (41)4.4 实验原理 (41)4.5 实验硬件原理图 (43)4.6 实验预习 (44)4.7 实验过程 (44)4.8 实验参考程序 (44)4.9 思考 (45)实验五UART通信实验 (48)5.1 实验目的 (48)5.2 实验设备 (48)5.3 实验内容 (48)5.4 实验原理 (49)5.5 实验硬件原理图 (49)5.6 实验预习 (50)5.7 实验过程 (50)5.8 实验参考程序 (51)5.9 思考 (61)实验六中断实验 (62)6.1 实验目的 (62)6.2 实验设备 (62)6.3 实验内容 (62)6.4 实验原理 (63)6.5 实验硬件原理图 (63)6.6 实验预习 (63)6.7 实验过程 (63)6.8 实验参考程序 (63)6.9 思考 (66)总论本实验包含两部分,前面三个实验是ARM 7指令系统指令实验,使用ADS 的编译器和调试器进行仿真调试,主要目的是掌握ARM7的指令系统和开发工具的使用,理解ARM CPU的工作过程。
ARM实验三 基于ARM的汇编编程实验
实验三基于ARM的汇编编程实验一,实验目的1.熟悉ADS1.2软件开发环境;2.掌握ARM7TDMI汇编指令的用法,并能编写简单的汇编程序;3.掌握指令的条件执行和使用LDR/STR指令完成存储器的访问。
4.掌握ARM乘法指令的使用方法;5.了解子程序编写及调用。
二,实验设备硬件:PC机一台。
软件:Windows98/XP/2000系统,ADS1.2集成开发环境。
三,实验内容实验内容一:1.使用LDR指令读取0x30003100上的数据,将数据加1,若结果小于10,则使用STR指令把结果写回原地址,若结果大于等于10,则把0写回原地址。
2.使用ADS1.2软件仿真,单步,全速运行程序,设置断点,打开寄存器窗口(Processor Registers)监视R0,R1的值,打开存储器观察窗口(Memory)监视0x30003100上的值。
实验内容二:1.使用STMFD/LDMFD,MUL指令编写一个整数乘方的子程序,然后使用BL 指令调用子程序计算X n的值。
2.X n= X*X*X …… *X,其中相乘的X的个数为n个。
先将X的值装入R0和R1,使用寄存器R2进行计数,循环n-1次R0=R0*R1,运算结果就保存在R0中。
(不考虑溢出问题)3.注意:若n=0,则运算结果直接赋1;若n=1,则运算结果直接赋X。
四,实验步骤实验内容一的步骤:1.启动ADS1.2,使用ARM Executable Image工程模板建立一个工程arm1.mcp。
如图5.1所示。
图5.1 新建工程对话框2.建立汇编源文件arm1.s,编写实验程序,然后添加到工程中。
如图5.2所示。
图5.2 新建汇编文件对话框3.设置工程连接地址RO Base为0x30000000,RW Base为0x30003000,设置调试口地址Image entry point为0x30000000。
图5.3 DebugRel Settings对话框4.编译连接工程,选择Project|Debug,启动AXD进行软件仿真调试。
ARM实验报告
南京邮电大学通达学院嵌入式系统B实验报告班级 100023专业通信工程(嵌入式系统开发)学号 10002304姓名陆海霞实验项目:1、ADS下简单ARM汇编程序2、熟悉LINUX开发环境3、多线程应用程序设计指导教师范山岗实验一 ADS下简单ARM汇编程序实验目的:1、熟悉ADS1.2下进行汇编语言程序设计的基本流程;2、熟悉在ADS中创建工程及编写、编译和运行汇编语言程序的方法;3、熟悉AXD中各种调试功能。
实验环境:1、硬件:PC机。
2、软件ADS1.2。
实验内容:1、在ADS中新建工程,并设置开发环境。
2、在Code Warrior 环境中编辑、编译和链接汇编语言程序,并生成可执行文件。
3、在AXD中调试汇编程序;4、使用命令行界面编辑、编译和链接汇编程序。
实验步骤:本实验要求在ADS环境下,编写一个汇编程序,计算S=1+2+3……+n的累加值。
把累加结果S存入到存储器的指定位置;在AXD中调试该程序,使用ARMulator模拟目标机。
1、新建工程。
打开Code Warrior,选择File->New(project)选项,使用ARM Executable Image模版新建一个工程。
2、设置编译和链接选项。
由于我们使用的是模拟机,设置汇编语言编译器的模拟处理器架构为Xscale;在ARM Linker中,选择output选项卡并选择Linktype为Simple类型,确认RO Base为0x8000,修改RW Base为0x9000,3、为当前工程添加源程序文件。
ARM汇编程序源文件后缀名为S大小写均可。
确保添加入当前工程复选框选上。
4、编辑源程序代码。
参考程序add.s :;armadd源程序N EQU 7 ;累加次数;定义名为Adding的代码段AREA Adding,CODE,READONLYENTRYMOV R0,#0MOV R1,#1REPEAT ADD R0,R0,R1ADD R1,R1,#1CMP R1,#NBLE REPEATLDR R2,=RESULTSTR R0,[R2]HERE B HERE定义名为Dataspace的数据段AREA Dataspace,DATA,READWRITERESULT DCD 0END实验中程序编写如下图所示:5、编译汇编源代码文件。
ARM实验3
实验3 ADS集成开发环境应用实例1. 实验目标◆掌握ADS集成开发环境CodeWarrior IDE和调试工具AXD的使用◆掌握ARM汇编程序的编辑与调试的基本操作2. 考核点◆CodeWarrior IDE集成编辑环境和调试工具AXD的应用◆ARM汇编程序的编辑、调试方法3. 实验环境(1)硬件环境◆CPU:Intel Pentium III 500MHz或以上;◆RAM:256MB或以上;◆硬盘:至少有6GB或以上的空余磁盘空间。
(2)软件环境装有ADS12.集成开发环境的PC机4. 实验要求(1)启动ADS 1.2集成开发环境CodeWarrior IDE,单击【开始】→【程序】→【ARM Developer Suite v1.2】→【CodeWarrior for ARM Developer Suite】,启动Metrowerks CodeWarrior,使用ARM Executable Image 工程模板建立一个工程Test1。
如图3-1所示。
图3-1 新建工程对话框(2)从Location处选择好新建工程的存储路径后,单击【确定】按钮()确认,然后在新建的工程里面建立一个新文件(汇编程序),添加一个汇编语言的程序,添加到我们这个新建工程中。
添加命令如图3-2所示,添加对话框如图3-3所示。
图3-2 在新建的工程中添加文件图3-3 添加文件对话框(3)执行完文件的添加后,我们就可以对汇编程序进行编译和链接了。
在编译程序之前首先要对工程进行相应的设置,对于一般的简单程序而言,我们直接可以对程序进行编译了,而对复杂的程序,可能需要对连接地址进行相应的设置。
如图3-4默认的连接地址是从0x8000开始的,这是相对于存储设备的起始地址而言,假如系统的起始地址为0x80000000,程序实际的运行的起始地址为0x80008000。
下图为工程设置对话框:图3-4 DebugRel设置对话框(4)设置完工程参数后,就可以进行编译连接了,单击工程窗口上的Make按钮,完成程序的编译连接。
arm实验三
unsigned char data; //定义全局变量
voidMain(void)
{
Target_Init(); //目标板初始化,定义串口的硬件初始化在
//target.c中定义
Delay(10); //延时
data = 0x55; //给全局变量赋值
江西师范大学物理与通信电子学院
实验报告
专业年月日
实验名称
指导老师
姓名
年级
学号
成绩
一、预习部分
1.实验目的
2.实验原理
3.实验器材(含必要的元器件、工具)
二、实验操作
1.实验数据、表格及数据处理
2.实验步骤
3.结论
五、实验步骤
1.本实验仅使用实验教学系统的CPU板,串口。在进行本实验时,LCD电源开关、音频的左右声道开关、AD通道选择开关、触摸屏中断选择开关等均应处在关闭状态。
while(1)
{
Uart_Printf("%x ",data); //串口0输出
ta = 0x55;语句中的0x55,换成其他8位数,重新编译,下载,串口工具上输出内容
三、实验效果分析(仪器设备使用效果、误差等)
教师评语
指导老师年月日
2.在PC机并口和实验箱的CPU板上的JTAG接口之间,连接仿真调试电缆,以及串口间连接公/母接头串口线。
3.检查连接是否可靠,可靠后,接入电源线,系统上电。
4.打开ADS1.2开发环境,从里面打开\实验程序\HARDWARE\ADS\实验三\C.mcp项目文件,进行编译。
5.编译通过后,进入ADS1.2调试界面,加载\实验程序\HARDWARE\ADS\实验三\C_Data\Debug中的映象文件程序映像C.axf。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
教师评阅意见:
签名:年月日实验成绩:
一.实验目的
通过实验了解使用ADS 1.2 编写C 语言程序,并进行调试。
二.实验设备
(1)硬件:PC 机一台
(2)软件:Windows98/XP/2000 系统,ADS 1.2 集成开发环境
三.实验内容
编写一个汇编程序文件和一个C 程序文件。
汇编程序的功能是初始化堆栈指针和初始化C 程序的运行环境,然后调跳转到C 程序运行,这就是一个简单的启动程序。
C 程序使用加法运算来计算1+2+3+...+(N-1)+N 的值(N>0)。
四.实验预习要求
(1)仔细阅读参考文献[1]第4 章ARM 指令系统的内容。
(2)仔细阅读产品光盘附带文档《ADS 集成开发环境及仿真器应用》或其它相关资料,了解ADS 工程编辑和AXD 调试的内容。
(本实验使用软件仿真)。
五.实验步骤
(1)启动ADS 1.2,使用ARM Executable Image 工程模板建立一个工程ProgramC。
(2)建立源文件Startup.S 和Test.c,编写实验程序,然后添加到工程中。
(3)设置工程链接地址RO Base 为0x40000000,RW Base 为0x40003000。
设置调试入口地址Image entry point 为0x40000000。
(4)设置位于开始位置的起始代码段,如图2.14 所示。
(5)编译链接工程,选择【Project】->【Debug】,启动AXD 进行软件仿真调试。
(6)在Startup.S 的“B Main”处设置断点,然后全速动行程序。
(7)程序在断点处停止。
单步运行程序,判断程序是否跳转到C 程序中运行。
(8)选择【Processor Views】->【Variables】)打开变量观察窗口,观察全局变量的值,
单步/全速运行程序,判断程序的运算结果是否正确。
六.实验参考程序
C 语言实验的参考程序见程序清单2.8。
汇编启动代码见程序清单2.6。
程序清单2.8 C 语言实验参考程序
#define uint8 unsigned char
#define uint32 unsigned int
#define N 100
uint32 sum;
// 使用加法运算来计算1+2+3+...+(N-1)+N 的值。
(N>0)
void Main(void)
{ uint32 i;
sum = 0;
for(i=0; i<=N; i++)
{ sum += i;
}
while(1);
}
程序清单2.9 简单的启动代码
; 启动文件。
初始化C 程序的运行环境,然后进入C 程序代码。
IMPORT |Image$$RO$$Limit|
IMPORT |Image$$RW$$Base|
IMPORT |Image$$ZI$$Base|
IMPORT |Image$$ZI$$Limit|
IMPORT Main ; 声明C 程序中的Main()函数
AREA Start,CODE,READONLY ; 声明代码段Start
ENTRY ; 标识程序入口
CODE32 ; 声明32 位ARM 指令
Reset LDR SP,=0x40003F00
; 初始化C 程序的运行环境
LDR R0,=|Image$$RO$$Limit|
LDR R1,=|Image$$RW$$Base|
LDR R3,=|Image$$ZI$$Base|
CMP R0,R1
BEQ LOOP1
LOOP0 CMP R1,R3
LDRCC R2,[R0],#4
STRCC R2,[R1],#4
BCC LOOP0
LOOP1 LDR R1,=|Image$$ZI$$Limit|
MOV R2,#0
LOOP2 CMP R3,R1
STRCC R2,[R3],#4
BCC LOOP2
B Main ; 跳转到
C 程序代码Main()函数
END
七.思考
(1)在实验参考程序中,Startup.S 文件的作用是什么?如果没有Startup.S 文件,C 程序会运行出错吗?
答:Startup.S文件的作用是为上述的汇编语句提供编译的环境。
如果没有这个文件,则C语言程序的运行不会出错,因为C语言程序的运行是独立的。
(2)实验程序中的Main()函数名是否可以更改为其它名字?(提示:Main 只是一个标号)
答:可以,因为Main只是一个标号,不过在程序中的每一处有关Main()的地方都必须改过来,否则就会出现错误。
八.心得体会。