ARM实验报告

合集下载

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嵌入式实验报告完整版

arm嵌入式实验报告完整版

arm嵌入式实验报告完整版篇一:ARM嵌入式系统实验报告1郑州航空工业管理学院嵌入式系统实验报告第赵成,张克新院姓专学系:名:业:号:电子通信工程系周振宇物联网工程 121309140电子通信工程系XX年3月制实验一 ARM体系结构与编程方法一、实验目的了解ARM9 S3C2410A嵌入式微处理器芯片的体系结构,熟悉ARM微处理器的工作模式、指令状态、寄存器组及异常中断的概念,掌握ARM指令系统,能在ADS1.2 IDE中进行ARM汇编语言程序设计。

二、实验内容1.ADS1.2 IDE的安装、环境配置及工程项目的建立;2.ARM汇编语言程序设计(参考附录A):(1)两个寄存器值相加;(2)LDR、STR指令操作;(3)使用多寄存器传送指令进行数据复制;(4)使用查表法实现程序跳转;(5)使用BX指令切换处理器状态;(6)微处理器工作模式切换;三、预备知识了解ARM嵌入式微处理器芯片的体系结构及指令体系;熟悉汇编语言及可编程微处理器的程序设计方法。

四、实验设备 1. 硬件环境配置计算机:Intel(R) Pentium(R) 及以上;内存:1GB及以上;实验设备:UP-NETARM2410-S嵌入式开发平台,J-Link V8仿真器; 2. 软件环境配置操作系统:Microsoft Windows XP Professional Service Pack 2;集成开发环境:ARM Developer Suite (ADS)1.2。

五、实验分析1.安装的ADS1.2 IDE中包括两个软件组件。

在ADS1.2中建立 ARM Executable Image(ARM可执行映像)类型的工程,工程目标配置为 Debug;接着,还需要对工程进行目标设置、语言设置及链接器设置;最后,配置仿真环境为ARMUL仿真方式。

2.写出ARM汇编语言的最简程序结构,然后在代码段中实现两个寄存器值的加法运算,给出运算部分相应指令的注释。

arm实训总结

arm实训总结

arm实训总结标题:ARM实验实训总结报告一、前言本次ARM实验实训是我对嵌入式系统设计与开发的一次深度实践。

通过这次实训,我对ARM微处理器的结构原理、指令集以及基于ARM架构的嵌入式系统开发流程有了更为直观和深入的理解。

二、实训内容回顾在实训过程中,我们主要围绕ARM Cortex-M系列处理器进行学习和实践。

首先,从理论层面,我们系统地学习了ARM体系结构、工作模式、存储器管理、异常处理等基础知识;其次,在实践环节,我们使用Keil MDK等开发工具进行了汇编和C语言编程,完成了中断服务程序设计、定时器应用、串口通信等多个实战项目。

三、实训过程及收获1. 硬件操作与调试:通过对ARM开发板的实际操作,我亲身体验了硬件连接、程序下载、在线调试等环节,对硬件底层的工作原理有了更清晰的认识,也锻炼了我的动手能力和问题解决能力。

2. 软件编程与实现:通过编写和调试ARM汇编和C语言代码,我对ARM的指令集、寄存器配置、中断处理机制等有了深入理解,同时也提升了我的编程技能和逻辑思维能力。

3. 团队协作与交流:在完成复杂项目的过程中,我们分工合作,共同探讨解决方案,这不仅提高了我在团队环境下的工作效率,也锻炼了我与他人沟通协调的能力。

四、实训反思与展望尽管在实训过程中取得了一定的进步,但我也意识到自身在某些方面还有待提升,如对实时操作系统RTOS的理解与应用、硬件驱动程序的设计与优化等。

未来的学习中,我将深化对这些领域的研究,努力提升自己在嵌入式系统开发方面的综合能力。

总结,此次ARM实训是一次宝贵的实践经历,它使我对嵌入式系统的软硬件协同设计有了更深层次的认知,并为我后续从事相关领域的工作或研究打下了坚实的基础。

五、结语ARM实训不仅是对我现有知识的检验,更是对未来专业技能的磨砺。

我会珍视这份实践经验,以此为契机,持续探索并深化对嵌入式系统尤其是ARM架构技术的研究,为我国的科技创新事业贡献自己的力量。

ARM实验报告

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实验报告_百度文库.

ARM实验报告_百度文库.

ARM实验报告专业:计算机科学与技术班级: 080613学号: 080613309姓名:周之平实验一 ARM汇编指令一实验目的1、初步学会使用 Embest IDE for ARM 开发环境及 ARM软件模拟器;2、通过实验掌握简单 ARM汇编指令的使用方法。

二实验设备1、硬件:PC机2、软件:Embest IDE Pro 2004集成开发环境,Windows 98/2000/NT/XP。

三实验内容1、熟悉开发环境的使用,并使用ldr/str,mov等指令访问寄存器或存储单元;2、使用 add/sub/lsl/lsr/and/orr等指令,完成基本数学/逻辑运算。

四实验原理ARM处理器共有 37个寄存器:1、31个通用寄存器,包括程序计数器(PC。

这些寄存器都是 32位的。

2、6个状态寄存器。

这些寄存器也是32位的,但是只是使用了其中的12位。

4.1 ARM通用寄存器通用寄存器(R0~R15)可分为 3类:o 不分组寄存器 R0~R7;o 分组寄存器 R8~R14;o 程序计数器 R15;4.2 存储器格式ARM体系结构将存储器看作是从零地址开始的字节的线性组合。

字节零到字节三放置第一个字(WORD),字节四到字节七存储第二个字,以此类推。

ARM体系结构可以用两种方法存储字数据,分别称为大端格式和小端格式。

4.3 GNU基础知识Embest IDE集成了 GNU 汇编器 as,编译器 gcc,链接器 ld。

因此,我们写程序要符合 GNU 的语法和规则。

1 程序默认入口点为“_start”,代码段默认起始地址为 0x80002 as常用伪操作符.equ.equ伪操作为数字常量、基于寄存器的值和程序中的标号定义一个字符名称。

语法格式.equ symbol,expr其中,expr为基于寄存器的地址值、程序中的标号,32位的地址常量或者32位的常量。

Symbol为.equ伪操作为 expr定义的字符名称。

ARM实验报告

ARM实验报告

ARM 实验报告学院:计算机科学与工程学院班级: 070603 学号: 070603115 姓名:张鑫实验一:工程配置一、处理器配置选择菜单项Project > Settings…或快捷键Alt+F7,弹出工程设置对话框。

在工程设置对话框中,选择Processor设置对话框,如下图,可进行目标板所用处理器的配置。

图1 处理器配置对话框用户选择对应的工程文件名进行相应的配置。

图中各项设置定义如下:处理器模块(CPU Module)选择当前所使用的处理器模块,不同的处理器模块将支持不同的处理器系列,目前Embest IDE for ARM 支持ARM7、ARM9核系列处理器。

处理器系列(CPU Family)选择用户使用的处理器所属处理器系列。

处理器成员(CPU Member)设置处理器系列中具体的处理器成员。

字节排列方式(Endian)设置该处理器当前所支持的存储区字节排列方式是大字节结尾(Big Endian)还是小字节结尾方式(Little Endian)。

处理器制造商(Peripheral Maker)选择处理器生产厂家。

处理器型号(Peripheral Chip)选择相应的处理器型号。

编译工具(Build Tools)设置该处理器对应的编译链接器。

Embest IDE for ARM 支持ARM核系列处理器。

开发ARM7核系列处理器,按照图5-11中设置;开发ARM9核系列处理器,可依照图5-11设置作相应的改变。

二、仿真器配置选择菜单项Project>Settings…,弹出工程设置对话框。

在工程设置对话框中,选择Remote设置对话框,如下图,可进行仿真器的连接配置。

图2 仿真器的连接配置在该对话框中,有两项设置:远程连接设备(Remote device)设置连接的调试设备,例如Embest IDE for ARM支持英蓓特公司的Embest Emulator for ARM和Embest PowerICE for ARM。

arm实验报告

arm实验报告

arm实验报告ARM实验报告引言:ARM(Advanced RISC Machines)是一种基于精简指令集计算机(RISC)架构的微处理器系列,广泛应用于移动设备、嵌入式系统和智能家居等领域。

本实验报告旨在介绍ARM架构的基本原理、应用领域以及在实验中的应用。

一、ARM架构的基本原理ARM架构采用精简指令集计算机(RISC)的设计理念,注重指令的简洁性和执行效率。

相较于复杂指令集计算机(CISC),ARM架构的指令集更为简单,指令长度固定,执行速度更快,能够提高处理器的性能和能效比。

ARM架构的核心特点包括:1. 简洁指令集:ARM指令集采用三地址指令格式,指令长度为32位,操作码和寄存器字段清晰明了,易于编程和优化。

2. 统一寄存器:ARM架构中的寄存器集合统一,包括13个通用寄存器、程序计数器(PC)和状态寄存器(CPSR),简化了编程和寄存器间的数据传输。

3. 流水线技术:ARM处理器采用流水线技术,将指令的执行过程分为多个阶段,使得多条指令可以同时执行,提高了处理器的吞吐量。

4. 片上缓存:ARM架构支持片上缓存(Cache),能够提高数据的访问速度和处理器的效率。

二、ARM架构的应用领域1. 移动设备:由于ARM处理器具有低功耗和高性能的特点,广泛应用于智能手机、平板电脑和可穿戴设备等移动设备中。

ARM处理器能够提供流畅的用户体验和长时间的电池续航能力。

2. 嵌入式系统:ARM架构适用于嵌入式系统,如智能家居、工业自动化和车载电子等。

ARM处理器的小尺寸、低功耗和高性能使其成为嵌入式系统的首选。

3. 服务器和云计算:ARM架构逐渐在服务器和云计算领域崭露头角。

ARM服务器具有低能耗和高并发处理的特点,能够满足云计算和大数据处理的需求。

三、ARM实验应用在本次实验中,我们使用ARM开发板进行了一系列实验,包括LED控制、按键输入和串口通信等。

1. LED控制实验:通过编写ARM汇编语言程序,实现对开发板上的LED灯进行控制。

ARM9实验报告(一)

ARM9实验报告(一)

实验一ARM串行口实验一、实验目的1.掌握ARM的串行口工作原理2.学习编程实现ARM的UART通讯3.掌握S3C2410寄存器配置方法。

二、预备知识1.了解EWARM集成开发环境的基本功能2.学习串口通讯的基本知识3.熟悉S3C2410串口有关的寄存器三、实验设备1.2410s教学实验箱2.ARM920T的JTAG仿真器3.ARM EWARM5.3集成开发环境4.串口连接线四、实验内容1.熟悉打开已有工程的步骤,掌握仿真调试的方法。

2.建立一个新工程,熟练掌握编译器和链接器的设置方法。

3.从串口输入字符串,将0~9数字在超级终端上连续显示,“Enter”键换行。

4.将第三步得到的字符转换成BCD码,限制在0~1023,用于控制直流电机。

五、实验步骤1.创建新工程(1)在D盘根目录创建一个newproj的目录,将ARM串口实验的5个文件夹和2个文件拷入,如上图所示,这5个文件夹是:inc(库文件)、init(初始化文件)、src(源文件)、startup(启动文件)和uhal(串口文件),这2个文件是:s3c2410_ram.icf和上从410_ram.mac(2)运行IAR Embedded Workbench,执行file>new>workspace,工程名newproj1.ewp,保存在d:\newproj下,保存Workspace,和工程名一样,存在同一目录。

此时编译,出现错误。

(3)有3个头文件做以下修改:#include “../inc/macro.h”,#include“../inc/drivers.h“,#include ”../uhal/isr.h“ General Option>Library configuration选Full,C/C++ Compiler>Code>Processor mode选ARM,编译通过。

(4)选CPU,选仿真器RDI、“Run to Main”打勾、选mac文件s3c2410_ram.mac,选链接器配置文件s3c2410_ram.icf,配置仿真器的动态链接库H-JTAG.dll,IAR 生成的out文件供RDI等仿真器使用,通过输出转换可生成bin文件,供vivi 烧写Flash使用。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
A R M与嵌入式技术




1、编写程序将R2的高8位传送到R3的低8位(不考虑R3的其他位)
⑴、程序代码:
.global _start
_start:
将立即数存储到R2中
;将存储在R3中
mov R2,R2,ROR #24;循环移位24位,使R2中的高八位移到第八位
and R2,R2,#0x000000ff;屏蔽掉R2的高24位,
可以看出实验结果和计算出来的结果一致,所以实验成功!
4、编写程序将地址1000H~1030H的数据全部搬移到2000H~2030H中,并将原数据区清零
⑴、程序代码:
.global _start
_start:
ldr R0,=0x1000;将地址1000H送到R0中存储
ldr R1,=0x2000;将地址2000H送到R1中存储
屏蔽掉R3中的低8位,使使用或命令是能将R2的低8位移到R3的低8位
将R2中的高8位”12”移到R3的低8位而不影响R3中的其他的24位
2、实现64位的加法运算,要求【R1:R0】+【R3:R2】,结果放回【R1:R0】中
⑴、程序代码:
.global _start
_start:
;将立即数存储在R0中
⑶、结果分析
注:以下分析均为16进制计算
【R1 : R0】+【R3 : R2】=【R1 : R0】
【8989eeee:】+【8949556f:504ed99d】=【12d3445d:97a71f05】
首先低32位相加::8+d=5,C=1;6+9+1=0,C=1;5+9+1=f,C=0;
4+d=1,C=1;8+e+1=7,C=1;5+4+1=a,C=0;
bne copy;如果没有移完则跳转到子程序入口继续移
stop:
b stop
.end
⑵、实验内容:
⑶、结果分析
由单步调试可以看出,没执行一次,则程序计数器PC就增加4,源地址首段地址为1000H,增加30H(3x16+0=48)则末段地址为1030H,之间有30H个空间,目的地址首段地址为2000H,增加30H(3x16+0=48)则末段地址为2030H,之间有30H个空间,然后使用strb指令将8位字节数据传输到指定的内存(此字节数据为元寄存器中的低8位)。由PC值可以看出试验成功。
mov R2,#48 ;将立即数48送到R2中
mov R4,#0;初始化R4,将0存储到R4中
copy: ldrb R3,[R0];标记子程序入口
strb R4,[R0],#1;将寄存器R0中的内容移到R4中
strb R3,[R1],#1;将寄存器R1中的内容移到R3中
subs R2,R2,#1;判断是否移完
7+0=7,C=0;4+5=9,C=0。
相加后的结果为:,可以看出低32位相加得出的结果和实验得出的结果一样。
再是高32位相加:8989eeee+8949556f:e+f=d,C=1;e+6+1=5,C=1;e+5+1=4,C=1;
e+5+1=4,C=1;9+9+1=3,C=1;8+4+1=d,C=0;
and R3,R3,#0xffffff00;屏蔽掉R2的低8位
orr R3,R3,R2;用取或将R2的低8位移到R3得低8位
stop:
b stop
.end
⑵、实验内容:
将存储在R2中
将存储在R3中
将R2中的高8位“12”移到R2的低8位,原来的数“”变为“”
屏蔽掉R2中的高24位,采用或命令时使其不影响R3中高24位的数值
stop:
b stop
.end
⑵、实验内容:
跟踪10次后的答案是:0x375f00
⑶、结果分析:
10!=10x9x8x7x6x5x4x3x2x1=3638800,转化为16进制为375f00(3x165+7x164+5x163+15x162+0x161+0x160=3145728+458752+20480+3840=3628800)
ldr R1,=0x8989eeee;将立即数8989eeee存储在R1中
ldr R2,=0x504ed99d;将立即数504ed99d存储在R2中
ldr r3,=0x8949556f;将立即数8949556f存储在R3中
adds r0,r0,r2;使用带标志位的加法指令将R2),r3;使用带进位的加法指令将R3+R1的值存到R1中,如果R0+R2产生了进位,则C=1,此时将R1+1
stop:
b stop
.end
⑵、实验内容:
将立即数存储在R0中
将立即数8989eeee存储在R1中
将立即数504ed99d存储在R2中
将立即数8949556f存储在R3中
使用带标志位的加法指令将R2+R0中的值存到R0
使用带进位的加法指令将R3+R1的值存到R1中,如果R0+R2产生了进位,则C=1,此时将R1+1
9+9+0=2,C=1;8+8+1=1,C=1。
相加后的结果为:8989eeee+8949556f =12d3445d,可以看出高32位相加得出的结果和实验得出的结果一样。
所以由结果可以看出实验成功!
3、编写一段程序计算10!
⑴、程序代码:
.global _start
_start:
mov R0,#10;将立即数10存储在R0中
mov R1,#10;将立即数10存到R1中,作为循环次数的限
minus : sub R1,R1,#1;标记一个minus子函数,每执行一次R1自减1
mul R0,R1,R0;R1自减后与R0相乘,积放在R0中
cmp R1,#0;判断R1是不是减到1了,如果没有则继续调用子程序
bne minus;如果Z不等于1,那么跳转到子程序标记处
相关文档
最新文档