文档库 最新最全的文档下载
当前位置:文档库 › ARM串口实验报告.

ARM串口实验报告.

ARM串口实验报告.
ARM串口实验报告.

《 APM串口实验》

实验报告

课程名称:嵌入式微处理器技术

班级:电信 0901

姓名:

地点:嵌入式系统基础实训室

指导教师:王瑾

ARM的串行口实验

一、实验目的

◆ 1.掌握ARM 的串行口工作原理。

◆ 2.学习编程实现ARM 的UART 通讯。

◆ 3.掌握CPU 利用串口通讯的方法。

二、实验内容

学习串行通讯原理,了解串行通讯控制器,阅读ARM 芯片文档,掌握ARM 的UART 相关寄存器的功能,熟悉ARM 系统硬件的UART 相关接口。编程实现ARM 和计算机实现串行通讯:

ARM 监视串行口,将接收到的字符再发送给串口(计算机与开发平台是通过超级终端通讯的),即按PC 键盘通过超级终端发送数据,开发平台将接收到的数据再返送给PC,在

超级终端上显示。

三、预备知识

1、1.用ARM SDT 2.5或ADS1.2 集成开发环境,编写和调试程序的基本过程。

2、2.ARM 应用程序的框架结构。

3、3.了解串行总线

四、实验设备及工具

硬件:ARM嵌入式开发平台、用于ARM7TDMI 的JTAG 仿真器、PC机Pentium100 以上、串口线。

软件:PC 机操作系统win98、Win2000 或WinXP 、ARM SDT 2.51 或ADS1.2 集成开发环境、仿真器驱动程序、超级终端通讯程序。

五、实验原理及说明

1.异步串行I/O

异步串行方式是将传输数据的每个字符一位接一位(例如先低位、后高位地传送。数据的各不同位可以分时使用同一传输通道,因此串行I/O 可以减少信号连线,最少用一对线即可进行。接收方对于同一根线上一连串的数字信号,首先要分割成位,再按位组成字符。为了恢复发送的信息,双方必须协调工作。在微型计算机中大量使用异步串行I/O 方式,双方使用各自的时钟信号,而且允许时钟频率有一定误差,因此实现较容易。但是由于每个字符都要独立确定起始和结束(即每个字符都要重新同步,字符和字符间还可能有长度不定的空闲时间,因此效率较低。

图2-1 串行通信字符格式

图2-1 给出异步串行通信中一个字符的传送格式。开始前,线路处于空闲状态,送出连续“1”。传送开始时首先发一个“0” 作为起始位,然后出现在通信线上的是字符的二进

制编码数据。每个字符的数据位长可以约定为5 位、6 位、7 位或8 位,一般采用ASCII

编码。后面是奇偶校验位,根据约定,用奇偶校验位将所传字符中为“1”的位数凑成奇数个或偶数个。也可以约定不要奇偶校验,这样就取消奇偶校验位。最后是表示停止位的“1”

信号,这个停止位可以约定持续1 位、1.5位或2 位的时间宽度。至此一个字符传送完毕,线路又进入空闲,持续为“1”。经过一段随机的时间后,下一个字符开始传送才又发出起始位。

每一个数据位的宽度等于传送波特率的倒数。微机异步串行通信中,常用的波特率为50,

95,110,150,300,600,1200,2400,4800,9600,119200 等。接收方按约定的格式接收数据,并进行检查,可以查出以下三种错误: 1)奇偶错:在约定奇偶检查的情况下,接收到的字符奇偶状态和约定不符。 2)帧格式错:一个字符从起始位到停止位的总位数不对。3)溢出错:若先接收的字符尚未被微机读取,后面的字符又传送过来,则产生溢出错。

每一种错误都会给出相应的出错信息,提示用户处理。

2.串行接口的物理层标准

通用的串行I/O 接口有许多种,现仅就最常见的两种标准作简单介绍。 1)EIA RS—232C 这是

美国电子工业协会推荐的一种标准(Electronic industries Association

Recoil-mended Standard。它在一种25 针接插件(DB— 25上定义了串行通信的有关信号。这个标准后来被世界各国所接受并使用到计算机的I/O 接口中。

⑴ 信号连线

在实际异步串行通信中,并不要求用全部的RS—232C 信号,许多PC/XT 兼容机仅用15 针接插件(DB—15来引出其异步串行I/O 信号,而PC 中更是大量采用9 针接插件(DB—9来担当此任,因此这里也不打算就RS—232C 的全部信号作详细解释。图2-2 给出两台微机利用RS—232C 接口通信的联线(无M ODEM,我们按DB—25 的引脚号标注各个信号。

下面对图2-2 中几个主要信号作简要说明。

保护地:通信线两端所接设备的金属外壳通过此线相联。当通信电缆使用屏蔽线时,常利用其外皮金属屏蔽网来实现。由于各设备往往已通过电源线接通保护地,因此,通信线中不必重复接此地线(图中用虚线表示。例如使用9 针插头(DB—9的异步串行I/O 接口就没有引出保护

地信号。

TXD/RXD:是一对数据线,TXD称发送数据输出,RXD称接收数据输入。当两台微机以全双工方式直接通信(无MODEM 方式时,双方的这两根线应交叉联接(扭接。

信号地:所有的信号都要通过信号地线构成耦合回路。通信线有以上三条(TXD、RXD 和信号地就能工作了。其余信号主要用于双方设备通信过程中的联络(握手信号,而且有些信号仅用于和MODEM 的联络。若采取微型机对微型机直接通信,且双方可直接对异步串行通信电路芯片编程,若设置成不要任何联络信号,则其它线都可不接。有时在通信线的同一端将相关信号短接以“自握手”方式满足联络要求。这就是如图2-2(a所示的情况。

图2-2 实用RS-232C 连线

RTS/CTS:请求发送值号RTS 是发送器输出的准备好信号。接收方准备好后送回清除发送信号CTS 后,发送数据开始进行,在同一端将这两个信号短接就意味着只要发送器准备好即可

发送。

DCD:载波检测(又称接收线路信号检测。本意是MODEM 检测到线路中的载波信号后,通

知终端准备接收数据的信号,在没有接MODEM 的情况下,也可以和RTS、CTS短接。

相对于MODEM 而言,微型机和终端机一样被称为数据终端DTE(Data Terminal Equipment 而MODEM 被称为数据通信装置DCE(Data Communications Equipment,DTE 和DCE 之间的连

接不能像图2-2 中有“ 扭接” 现象,而应该是按接插件芯号,同名端对应相接。此处介绍

的RS—232C 的信号名称及信号流向都是对DTE 而言的。

DTR/DSR:数据终端准备好时发DTR 信号,在收到数据通信装置装备好DSR 信号后,方可通信。图2-2(a中将这一对信号以“自握手”方式短接。

R1:原意是在MODEM 接收到电话交换机有效的拨号时,使RI 有效,通知数据终端准备传送。

在无MODEM 时也可和DTR 相接。

图2 -2(b给出了无MODEM 情况下,DTE 对DTE 异步串行通信线路的完整连接,它不仅适用于微型机和微型机之间的通信,还适用于微型机和异步串行外部设备(如终端机、绘图仪、数字

化仪等的连接。

⑵信号电平规定 RS—232C 规定了双极性的信号逻辑电平: -3V 到-25V 之间的电平表示逻辑“1”。 +3V 到+25V 之间的电平表示逻辑“0”。因此这是一套负逻辑定义。以上

标准称为EIA 电平。PC/XT 系列使用的信号电平是-12V和+12V,符合EIA 标准,

但在计算机内部流动的信号都是TTL 电平,因此这中间需要用电平转换电路。常用芯片MCl488 或SN75150 将TTL 电平转换为EIA 电平,MCl489 或SN75154 将EIA 电平转换为TTL 电平。PC/XT 系列以这种方式进行串行通信时,在波特率不高于9600 的情况下,理论上通

信线的长度限制纽为15 米。

2)20mA 电流环 20mA 电流环并没有形成一套完整的标准,主要是将数字信号的表示方法不使用电子的高低,而改用20mA 电流的有无:“1” 信号在环路中产生20mA 电流;“0” 信号无电流产生。当然也需要有电路来实现TTL 电平和20mA 电流之间的转换。图2-3 是PC/XT 微机中使用的一种20mA 电流环接口。当发送方SOUT=1 时,便有20mA 电流灌入接收方的光耦合器,于是光耦合器导通,使S IN=1。反之当发送方SOUT=0 时环路电流为零,接收方光耦合器截止,SIN =0。显然,当要求双工方式通信时,双方都应各有收

发电路,通信联线至少要4 根。由于通信双方利用光耦合器实现电气上隔离,而且信号又是双端回路方式,故有很强的抗干扰性,可以传送远至1 千米的距离。

图2-3 20mA 电流环接口

“0”、“1” 信号的表示方法不同外,其他方面(如字符的传输格式常借用RS—232C 标准。因此PC/XT 微机中的异步串行信道接口往往将这两种标准做在一起,实际通过跨接线从二者中择一使用。

3.ARM 自带的串行口寄存器

ARM 自带两个串行口,各带有16 字节的F IFO(先入先出寄存器),最大波特率115.2K。每个UART 有7 种状态:溢出错误、校验错误、帧错误、暂停态、接收缓冲区准备好、发送缓冲区空、发送移位缓冲器空,这些状态可以由相应的UTRSTATn/UERSTATn 表示,并且与发送接收缓冲区相对应的有错误缓冲区。波特率的可以通过控制波特率寄存器(UBRDIVn )控制,

与UART 有关的寄存器主要有以下几个:

(1) UART 线性控制寄存器ULCONn,其地址和各位的意义参见表2-1:

表2-1 ULCONn 功能定义

ULCONn 位描述初始化状态

保留[7] 0

红外模式[6] 红外模式位决定是否使用红外模式:0—正常模式;1—红外

模式

奇偶校验模式[5:3] 奇偶校验模式指定当UART执行发送和接收操作时如何进行

奇偶校验的产生和检查: 0xx—无奇偶校验;100—奇校

验; 110 = 奇偶校验强制为1;111 = 奇偶校验强制为 0

000

停止位个数[2] 每帧停止位的个数:0—1位;1—两位。0

数据位长度[1:0] 字长位决定每帧发送或接收的数据位数:00—5位;01—6

位;10—7位;11—8位;

00

由上表可以看出,该寄存器的第 6 位决定是否使用红外摸式,位5~3 决定校验方式,位 2 决定停止位长度,位1 和0决定每帧的数据位数。

参考:普通模式,无奇偶校验,1位停止位,8为数据长度。

(2)UART 控制寄存器UCONn,该寄存器决定UART 的各种摸式。UART FIFO控制寄存器UFCONn,UART MODEM 控制寄存器,分别决定UART FIFO 和MODEM 的模式。其中UFCONn 的第0 位决定是否启用FIFO,UMCONn 的第0 位是请求发送位,对我们来说是比较重要的。控制寄存器UCONn 的功能定义如表2-2 所示。

表2-2 UCONn 功能定义

UCONn 位描述初始化状态

发送中断类型[9] 中断请求类型 0 = Pulse (在发放缓

冲区变空时立即引发中断 1 = Level

(在发送缓冲区为空进引发中断

接收中断类型[8] 中断请示类型 0= Pulse (接收缓冲区

接收到数据时立即引发中断 1=Level

(I接收缓冲区正在接收数据时引发中

接收超收中断使能[7] 在UART的FIFO使能的情况下,使能/

禁止接收超时中断 0 =禁止 1 = 使能

接收错误状态中断使能[6]

在接收操作时有跳变、帧错误、奇偶

校验错误和溢出错误时,使能UART产

生中断 0 = 不产生接收错误状态中断

1 = 产生接收错误状态中断t

回送模式 [5] 设置回送位为1, 使得UART 进入回送模式。这个模式只是为了检测。0=

标准操作 1=回送模式。 0

发送中止信号 [4] 设置这个位使得UART 在1 帧的时间里发送一个终止信号。在发送完终止信号后该位自动清零。0=标准传输 1=

发送终止信号。 0

传输模式 [3:2] 这两个位决定了目前哪个操作过程可以将Tx 数据写入到UART 传输保持寄存器。00= 不可以 01= 中断请求或查询模式10=BDMAO 请求(只对于

UART0) 11=BDMA1请求(只对于

UART1)。 00

接收模式 [1:0] 这两个位决定了目前哪个操作过程可以从UAR T 接收缓冲寄存器读取数据。00 =不可以 01= 中断请求或查询

模式 10=BDMAO 要求 11=BDMA1请求。 00

参考:Tx 电平触发,Rx 边沿触发,禁止接收超时中断,允许接收错误中断,发送和接受模式均为01。

(3) 读写状态寄存器UTRSTAT 以及错误状态寄存UERSTAT , 可以反映芯片目前的读写状态以及错误类型。FIFO 状态寄存器UFSTAT 和MODEM 状态寄存器UMSTAT , 通过前者可以读出目前FIFO 是否满以及其中的字节数;通过后者可以读出目前MODEM 的CTS 状态。UTRSTATn 和UERSTATn 的功能定义分别如表2-3、2-4 所示。

表2-3 UTRSTATn 功能定义

UTRSTATn 位 描述 初始化状态

传输移位器空[2] 当传输移位寄存器无有效数据去传输时,

该位自动设为1,传输移位寄存器为空。

0=非空 1=传输保持和移位寄存器空。

1

传输缓冲器空[1] 当传输FIFO/ 缓冲寄存器无有效值数据,

该位自动设置为1. 0=缓冲寄存器非空 1=

空。如果UART使用FIFO,使用者不用看

这位,只需检查UFSTAT寄存器的TxFIFO

计数位和Tx FIFO所有位

1

接收缓冲数据准备[0]

无论何时,当接收缓冲寄存器在RXDn端

口接收到有效值时,该位自动置为1。0=

全空 1=缓冲寄存器收到数据。1 字节

FIFO 16 字节/缓冲寄存器接收到数据。如

果UART 使用FIFO,使用者不需看这位,只要检查

UFSTAT寄存器的Rx FIFO计数位。

表2-4 UERSTATn 功能定义

UERSTATn 位描述初始化状态

中止检测[3] 该位自动设置为1表明接收到中止信号。0=

没有收到中止 1=收到中止

帧错误[2] 无论何时,在接收操作中发生帧错误时,该

位自动设置为1.0=在接收中无帧错误 1=帧

错误

奇偶错误[1] 无论何时,当接收操作中有奇偶发生时,该

位自动设置为1.0=在接收中无奇偶错误发生

1=奇偶错误

溢出错误[0] 无论何时,当接收操作中发生溢出错时,该

位自动设置为1.0=接收中无溢出错发生 1=

溢出错。

(4)发送寄存器UTXH 和接收寄存器URXH,这两个寄存器存放着发送和接收的数据,当然只有一个字节8位数据。需要注意的是在发生溢出错误的时候,接收的数据必须要被读出来,否则会引发下次溢出错误。

(5)最后是波特率引子寄存器UBRDIV。该寄存器为十六位,算法参见上页的部分。

计算公式如下:

UBRDIVn = (round_off(MCLK/(bps × 16 -1

其中MCLK 是系统频率,例如在40MHz 的情况下,当波特率取115200 时,

UBRDIVn = (int(40000000/(115200 × 16+0.5 -1

= (int(21.7+0.5 -1

= 22 -1 = 21

注意:由于ARM 工作时存在小端和大端两种工作模式,所以同样一个寄存器在不同模式时地址也不一样,需要加以区别。

六、实验步骤

1.新建工程,将“Exp2 ARM 串口实验”中的文件添加到工程中,这些是启动时所需要

的文件。

2.定义与UART 有关的各个寄存器地址和一些特殊的位命令。主要有以下各寄存器(44b.h):

/* UART 的全部功能寄存器 */

#define rULCON0 (*(volatile unsigned *0x1d00000

#define rULCON1 (*(volatile unsigned *0x1d04000

#define rUCON0 (*(volatile unsigned *0x1d00004

#define rUCON1 (*(volatile unsigned *0x1d04004

#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 (*(volatile unsigned *0x1d00028

#define rUBRDIV1 (*(volatile unsigned *0x1d04028

#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

#endif

3.编写串口驱动函数(MyUart.c):图2-4 为串口初始化的实现流程。

图2-4 串口初始化

4.在主函数中实现将从串口0 接收到的数据发送到串口0(Main.c):图2-7 为主函数流程图。

图2-7 主函数流程图

七、思考题

1. RS-232 串行通讯的数据格式是什么?

答:

2.串行通讯最少需要几根线,分别如何连接?

答:连接只需要使用三根线即可,即RXD(接收数据),TXD(发送数据)和GND(地线),连接方式见下图:

3.ARM 的串行口有几个,相应的寄存器是什么?

答:ARM 自带两个串行口,各带有16 字节的FIFO(先入先出寄存器)、UART 线性控制寄存器ULCONn、读写状态寄存器UTRSTAT 以及错误状态寄存UERSTAT、发送寄存器UTXH 和接收寄存器URXH、波特率引子寄存器UBRDIV

arm实验报告最终版

ARM与嵌入式技术 实验报告 专业班级:10通信工程1班 姓名:万洁 学号:100103011125 实验日期:2013年5月28日 指导老师:郑汉麟

1、 通过实验掌握ARM 指令的特点和寻址方式; 2、 掌握简单的ARM 汇编语言的程序设计; 3、 了解集成开发环境 Embest IDE 及其开发软件的应用; 、实验环境 Embest IDE 应用于嵌入式软件开发的新一代图形化的集成开发环境,它包括一套完备 的面向嵌入 式系统的开发和调试工具。其开发软件 Embest IDE for ARM 是集编辑器、编译 器、调试器、工程管理器( projectma nager )于一体的高度集成的窗口环境,用户可以在 Embest IDE 集成开发环境中创建工程、编辑文件、编译、链接、运行,以及调试嵌入式应 用程序。 三、实验步骤 1)新建工程: 运行Embest IDE 集成开发环境,选择菜单项 File 宀New Workspace ,如图一,系统弹 出一个对话框,键入文件名“ wj ”,如图二,点击 0K 按钮。将创建一个新工程,并同时创 建一个与工程名相同的工作区。此时在工作区窗口将打开该工作区和工程 .。 (老师提醒:不要放入Bin 文件夹中) ■ Emb?t QE Pre 亠 Educat 「販]£dii_Vww Buid frtbug D if** Qri+W 诊 Open-" Qrl*O 2)建立源文件: 点击菜单项 File T New ,如图三,系统弹出一个新的文本编辑窗,输入源文件代码。 编辑完后,保存文件“ wj.s ”后缀,如图三,四。 Hr* Open Workspace.? 图一 ■■ rflJO IUU rl jil rd f rfl,rl Clop : h Ho. .end 图 tut vUrl:

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汇编语言的最简程序结构,然后在代码段中实现两个寄存器值的加法运算,给出运算部分相应指令的注释。 ; 文件名: AREA XTF,CODE,READONLY 声明32位ARM指令 R0arm嵌入式实验报告完整版) ADD R0,R1,R2 3.列写出使用LDR、STR指令的汇编程序,并在关键语句后面给出相应的注释。 AREA XTF,CODE,READONLY ;声明代码段XTFENTRY ;标示程序入口CODE32 ;声明32位ARM 指令START LDR R0,=1 ;加载数据LDR R1,=2LDR R3,=ADDR_1;载符号地址 ADD R2,R0,R1;R2[R3] ;数据空间定义 AREA Data_1,DATA,ALIGN=2 ADDR_1 DCD 0 END ;结束 4.“使用多寄存器传送指令进行数据复制”汇编程序分析。 LDR R0,=SrcData ;

《嵌入式系统与开发》ARM汇编及接口设计-实验报告 - 答案

《ARM汇编与接口设计》 实验报告 学生姓名: 学号: 专业班级: 指导教师: 完成时间:

实验1 ARM汇编与S3C6410接口设计 一.实验目的 熟悉裸板开发环境构建,掌握利用ADS开发工具或arm-linux-gcc开发工具编写裸板系统下程序的基本步骤和方法,掌握裸板程序的基本架构,熟悉汇编设计的基本指令和伪指令的使用方法,掌握S3C6410接口开发基本方法和步骤,并编程设计LED流水灯和看门狗程序设计。深刻体会软件控制硬件工作的基本思路和方法。 二.实验内容 实验1.1 熟悉ADS开发工具或交叉编译器arm-linux-gcc的安装和基本使用 实验1.2 LED流水灯实验 实验1.3 看门狗实验 三.预备知识 C 语言、微机接口等 四.实验设备及工具(包括软件调试工具) 硬件:ARM 嵌入式开发平台、PC 机Pentium100 以上、串口线。 软件:WinXP或UBUNTU开发环境。 五.实验步骤 5.1 ADS开发工具安装和使用 步骤: 第一步,ADS工具安装在 平台 B.linux平台)下,按照类似于VC++ 第二步,利用ADS打开demo项目模板,查看ADS中配置中几个重要选项, 第三步,参照demo项目代码结构,编写裸板程序完成两整数加和两整数减函数,分别用C代码实现,写出完成汇编启动代码和C代码。 第四步 用ADS自带的ARM的汇编代码,b被编译器优化到寄存器中,函数返回汇编语句 。 5.2 arm-linux-gcc编译工具安装和使用

第一步:arm-linux-gcc(A. WINDOWS平台 B.linux平台)下,按照类似于gcc 第二步:参看相关实验样例,一般基于arm-linux-gcc编译的裸板程序通常包含汇编启动代码文件,C功能代码文件和make工具文件Makefile。 5.3 LED流水灯设计实验 本实验要求使用arm-linux-gcc编译。备注,控制LED1的GPIO口为GPM0 步骤1:编写代码 参看相关实验样例,编写LED1报警灯代码,实现LED1以1秒左右的时间进行闪烁,要求LED 驱动代码编写在leddrv.c中,功能代码编写在main.c文件中,启动代码文件和Makefile文件参照实验样例代码来设计。 则启动代码文件内容: 功能层main.c文件内容: 步骤2:编译 编译步骤为: 步骤3:加载到内存中运行

ARM实验报告

湖南科技学院ARM嵌入式设计实验报告题目:基于ARM嵌入式系统跑马灯的设计 专业:电子信息工程 班级:电信1102班 姓名:段相辉 学号:201106002232 指导教师:陈光辉 2014年11 月

目录 摘要............................................. 错误!未定义书签。ABSTRACT .......................................... Ⅰ错误!未定义书签。 1 题目要求 (1) 2 设计软件的安装 (2) 3 开发平台的搭建 (22) 4 项目设计 (23) 4.1 设计思路概述 (2) 4.1.1 设计层次介绍 (2) 4.1.2 设计模块介绍 (3) 5总结 (6) 致谢 (25) 参考文献 (26) 附录 (27)

引言 随着生活水平的提高和IT技术的进步,8位处理器的处理能力已经不能满足嵌入式系统的需要了;而16位处理器在性能和成本上都没有很大的突破。并且在8位机的开发中,大多使用汇编语言来编写用户程序。这使得程序的可维护性、易移植性等都受到了极大的挑战。正是基于此,ARM公司适时的推出了一系列的32位嵌入式微控制器。目前广泛使用的是ARM7和ARM9系列,ARM7TDMI内核的ARM7处理器广泛应用于工业控制、仪器仪表、汽车电子、通讯、消费电子等嵌入式设备。

1、题目要求 构建嵌入式Linux开发环境,熟悉linux的命令操作,并在嵌入式Linux 开发环境中设计跑马灯。 2、设计软件的安装 2.1 VMware Player简介 (a) VMware Workstation是一个“虚拟机”软件.它使用户可以在一台机 器上同时运行多个操作系统. (b) VMware Player是VMware Workstation的精简版,最初只是虚拟机的“播放机”, 但最新版本的已经具有创建虚拟机的功能.具有体积小,使用灵活,免费等特点. (c) 多个操作系统在主系统的平台上,可像Windows应用程序那样切换.而且每个操作系统都可以进行虚拟的分区、配置而不影响真实硬盘的数据. (d) 利VMware Player创建虚拟机

ARM实验报告--Thumb

XI`AN TECHNOLOGICAL UNIVERSITY 实验报告

西安工业大学实验报告 一丶实验目的 通过实验掌握ARM处理器16位Thumb汇编指令使用方法 二、实验内容 使用Thumb汇编语言,完成基本reg/men访问,以及简单的算术/逻辑运算。 使用Thumb汇编语言,完成较为复杂的程序分支,领会立即数大小的限制,并体会ARM与Thunb的区别。 三、实验原理 ARM 处理器共有两种工作状态: ARM:32 位,这种状态下执行字对准的ARM 指令; Thumb:16 位,这种状态下执行半字对准的Thumb 指令 在Thumb 状态下,程序计数器PC 使用位1 选择另一个半字。 注意: ARM 和Thumb 之间状态的切换不影响处理器的模式或寄存器的内容。ARM 处理器在两种工作状态之间可以切换。 1)进入Thumb 状态。当操作数寄存器的状态位0 为1 时,执行BX 指令进入Thumb 状态。如果处理器在Thumb 状态进入异常,则当异常处理(IRQ,FIQ,Undef,Abort 和SWI)返回时,自动切换到Thumb 状态。 2) 进入ARM 状态。当操作数寄存器的状态位0 为0 时,执行BX 指令进入ARM 状

态。处理器进行异常处理(IRQ,FIQ,Undef,Abort 和SWI)。在此情况下,把PC 方入异常模式链接寄存器中。从异常向量地址开始执行也可以进入ARM 状态。 四、实验过程 1)打开Embest IDE Pro软件,选择菜单项File-->New Workspace,系统弹出对话框,创建名为TEXT的新工程,并同时创建一个与工程名相同的工作区。此时在工作窗口将打开该工作区和工程。 2)建立源文件: 点击菜单项File-->New,系统弹出一个新的、没有标题的文本编辑窗,输入光标位玉窗口中第一行,将程序所需的源文件代码输入,编辑完后,进行保存,保存文件格式为_a.s文件。 3)添加源文件: 选择Project-->Add To Project-->File命令,弹出文件选择对话框,在工程目录下选择刚才建立的_a.s格式的源文件 4)基本配置: 选择菜单项Project-->Settings,弹出工程设置对话框,在工程设置对话框中,选择Processor设置对话框,选择ARM7对目标板所用处理器进行配置。

ARM实验报告

ARM嵌入式 实验报告 姓名:冯贤成 学号:120101021106 专业:电子信息工程 指导老师:郑汉麟

ARM嵌入式系统 一、实验目的 1、通过实验掌握ARM指令的特点和寻址方式; 2、掌握简单的ARM汇编语言的程序设计; 3、了解集成开发环境Embest IDE及其开发软件的应用; 二、实验平台 Windows 7系统下的Embest IDE嵌入式软件开发平台 三、实验内容 1.编写程序将R2的高8位传送到R3的低8位(不考虑R3的其它位) 程序如下: .global _start .text _start: MOV R2,#0x80000003 /*把第一个立即数送进R2*/ MOV R3,#0x40000013 /*把第二个立即数送进R3*/ AND R0,R2,#0xff000000 /*取R2高8位到R0*/ AND R3,R3,#0xffffff00 /*R3低8位清零*/ ORR R3,R3,R0,lsr #24 /*R0逻辑右移24位后与R3相或,结果送进R3*/ stop: b stop .end 调试结果: ①Download下载: ②把第一个立即数送进R2:

③把第二个立即数送进R3: ④取R2高8位到R0: ⑤R3低8位清零: ⑥R0逻辑右移24位后与R3相或,结果送进R3:

单步跟踪后的结果,存储器及寄存器的结果显示: 2.编程实现64位的加法运算,要求【R1:R0】+【R3:R2】结果放回【R1:R0】。

程序如下: .global _start .text _start: MOV R0,#12 /R0=12 MOV R1,#6 /R1=6 MOV R2,#8 /R2=8 MOV R3,#9 /R3=9 ADDS R0,R0,R2 /R0等于低32位相加,并影响标志位 ADC R1,R1,R3 /R1等于高32位相加,并加上低位进位stop: b stop .end 调试结果: ①Download下载: ②将12赋给R0 ③将6赋给R1

STM32-ARM-综合实验报告(南京航空航天大学)

南京航空航天大学研究生实验报告 项目名称:ARM嵌入式系统设计与应用技术 设计专题:综合实验二类:数据采集和显示系统 班级: 小组成员 (1)姓名:学号:学科:电话:Email:导师: (2)姓名:学号:学科:电话:Email:导师: (3)姓名:学号:学科:电话:Email:导师: 20XX年XX月XX日

一、本实验主要内容及要求 本次综合实验的主要内容是,利用ARM内部的A/D转换器进行数据采集和显示系统设计。实验要求如下: 1、采用STM32开发板上的12位A/D转换器(参考电压3.3V)采集电位器测 试点的电压值。电位器与A/D的输入通道14相连接。 2、当按下Key键之后任意旋转电位器,利用A/D转化器采样20组电压值(每 1ms采样一次,使用定时器TIM2计时),并在液晶屏幕上显示当前电压值,当再次按下Key键之后将20组电压值存入到FLASH中。 3、复位后按下Temper键将保存的20组电压值在液晶屏幕中央绘制出波形(要 求各点连接,每个点为5个像素,要有坐标系)。 1)横坐标为“1~20”,每个横坐标之间的间隔为8个像素点; 2)纵坐标为电压值“0V,1V,2V,3V,4V”,相邻坐标之间的为10个像素 点。 4、在液晶屏合适的位置显示组名、姓名、学号、开发日期等信息。可利用STM32 开发板的资源扩展其他自定义功能(如增加温度采集通道、当前采样频率显示和设置、采样率调节等)。 二、硬件框图 本次实验的硬件部分主要是计算机和STM32两个部分,对于计算机部分不做过多的介绍,下面着重介绍STM32中的与本实验相关模块。 1.1 ADC模块 12位ADC是一种逐次逼近型模拟数字转换器。它有多达18个通道,可测量16个外部和2个内部信号源。各通道的A/D转换可以单次、连续、扫描或间断模式执行。ADC的结果可以左对齐或右对齐方式存储在16位数据寄存器中。 模拟看门狗特性允许应用程序检测输入电压是否超出用户定义的高/低阀值。ADC的输入时钟不得超过14MHz,它是由PCLK2经分频产生。 STM32教学平台的电位器是信号是连接到STM32的PC4口的,PC4正好是A/D转换的通道14,STM32实验教学平台上也标注了ADC12_14(14通道),电位器硬件框图如图1所示,ADC硬件框图如图1所示。

北航ARM9实验报告:实验3uCOS-II实验

实验三UC-OS移植实验 一、实验目的 在内核移植了uCOS-II 的处理器上创建任务。 二、实验内容 1.运行实验十,在超级终端上观察四个任务的切换。 2. 任务1~3,每个控制“红”、“绿”、“蓝”一种颜色的显示,适当增加OSTimeDly()的时间,且优先级高的任务延时时间加长,以便看清三种颜色。 3.引入一个全局变量BOOLEAN ac_key,解决完整刷屏问题。 #define RdURXH0() 当键盘有输入时在超级终端上显示相应的字符。 三、实验设备 硬件:ARM嵌入式开发平台、用于ARM920T的JTAG仿真器、PC机Pentium100以上。 软件:PC机操作系统Win2000或WinXP、ARM ADS1.2集成开发环境、仿真器驱动程序、超级终端通讯程序。 四、实验原理 所谓移植,指的是一个操作系统可以在某个微处理器或者微控制器上运行。虽然uCOS-II的大部分源代码是用C语言写成的,仍需要用C语言和汇编语言完成一些与处理器相关的代码。比如:uCOS-II在读写处理器、寄存器时只能通过汇编语言来实现。因为uCOS-II在设计的时候就己经充分考虑了可移植性,所以,uCOS-II的移植还是比较容易的。 要使uCOS一工工可以正常工作,处理器必须满足以下要求: 1)处理器的C编译器能产生可重入代码。 2)在程序中可以打开或者关闭中断。 3)处理器支持中断,并A能产生定时中断(通常在10Hz}1000Hz之间)。 4)处理器支持能够容纳一定量数据的硬件堆栈。 5)处理器有将堆栈指针和其它CPU寄存器存储和读出到堆栈(或者内存)的指令。

uCOS-II进行任务调度的时候,会把当前任务的CPU寄存器存放到此任务的堆栈中,然后,再从另一个任务的堆栈中恢复原来的工作寄存器,继续运行另一个任务。所以,寄存器的入栈和出栈是uCOS一工工多任务调度的基础。 五、实验步骤 1 以实验十为模板,将实验六inc目录下的LCD320.H 和src目录下的LCD640.C 拷到模板下的相应目录,将LCD640.C加入工程中。 2包含以下头文件#include “inc/lcd320.h”。 3改LCD640.C 文件中包含头文件的路径。 #include "../inc/drv/reg2410.h" 4 声明引用的变量extern U32 LCDBufferII2[LCDHEIGHT][LCDWIDTH]; 六、源程序 #include"../ucos-ii/includes.h" /* uC/OS interface */ #include "../ucos-ii/add/osaddition.h" #include "../inc/drivers.h" #include "../inc/sys/lib.h" #include "../src/gui/gui.h" #include "../inc/lcd320.h" #include #include //#include "..inc/lcd320.h" //#pragma import(__use_no_semihosting_swi) // ensure no functions that use semihosting OS_EVENT *MboxSem; ///******************任务定义***************/// /*OS_STK SYS_Task_Stack[STACKSIZE]= {0, }; //system task刷新任务堆栈 #define SYS_Task_Prio 1 void SYS_Task(void *Id);*/ OS_STK task1_Stack[STACKSIZE]={0, }; //Main_Test_Task堆栈 void Task1(void *Id); //Main_Test_Task #define Task1_Prio 12 OS_STK task2_Stack[STACKSIZE]={0, }; //test_Test_Task堆栈 void Task2(void *Id); //test_Test_Task #define Task2_Prio 15 OS_STK task3_Stack[STACKSIZE]={0, }; //test_Test_Task堆栈 void Task3(void *Id); //test_Test_Task #define Task3_Prio 17 OS_STK task4_Stack[STACKSIZE]={0, }; //test_Test_Task堆栈 void Task4(void *Id); //test_Test_Task #define Task4_Prio 10

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_TOP MOV R0, #X /*X的值放入R0*/ STR R0, [SP] /*R0的值保存到堆栈*/ MOV R0, #Y /*Y的值放入R0*/ LDR R1, [SP] /*取堆栈中的数到R1*/

ADD R0, R0, R1 STR R0, [SP] STOP: B STOP /*程序结束,进入死循环*/ .END 2.使用ADD/SUB/LSL/LSR/AND/ORR等指令,完成基本数学/逻辑运算。具体实验程序如下:/* armasm1b.s */ .EQU X, 45 /*定义变量X,并赋值为45*/ .EQU Y, 64 /*定义变量Y,并赋值为64*/ .EQU Z, 87 /*定义变量Z,并赋值为87*/ .EQU STACK_TOP, 0X1000 /*定义栈顶0X1000*/ .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*/

arm实验报告

电子科技大学成都学院 实验报告册 课程名称:嵌入式系统开发实践 姓名:段定杰 学号:1140710726 院系:微电子技术系 专业:集成电路设计与集成系统(嵌入式)教师:李伟 2014 年6 月14 日

实验一:基于S3C2440 IIC控制 一、实验目的: 本次实验的目的是通过S3C2440的IIC接口,向EEPROM芯片AT24C02A写入8个数据,然后再将所写的数据读出,并显示在串口调试工具上。 二、实验原理和内容: IIC外接EEPROM的硬件原理图: 为了控制多主控 IIC 总线操作,必须写入值到以下寄存器中: –多主控IIC总线控制寄存器,IICCON –多主控IIC总线控制/状态寄存器,IICSTAT –多主控IIC总线 Tx/Rx 数据移位寄存器,IICDS –多主控IIC总线地址寄存器,IICADD 当释放了IIC总线时,SDA和SCL线应该都保持为高电平。一个高到低SDA 的变化可以启动一个起始条件。SCL稳定保持在高电平时的一个低到高SDA的变化可以启动一个停止条件。 起始和停止条件通常由主设备产生。第一个数据字节为7位地址值,其在启动起始条件后放到总线上,可以确定出主设备要选择的从设备。第8位是决定传输方向(读或写)。每个放到 SDA线上的字节都应该总共为8位。字节可以在总线传输操作期间无限制的发送或接收。数据通常从最高有效位(MSB)开始始发送,并且每个字节应该立即通过应答(ACK)位跟上。 实验内容:触摸屏的校准设计中通过IIC总线来存储校准参数到EEPROM,以便

以后校准时可以随时读出。 三:实验步骤: 1、首先在ADS上建立一个工程,工程名为IIC,然后选择一个合适的路径存放。 2、将光盘中TQ2440测试程序里面inc和src文件夹下的2440addr.h、2440lib.h、2440slib.h、def.h、Nand.h、Option.h、2440addr.inc、Memcfg.inc、Option.inc、2440init.s、2440slib.s、2440lib.c、nand.c这13个文件依次拷贝到刚才所建工程的文件夹下。 3、新建一个源文件,命名为IIC.c,存放到工程名为IIC的文件夹下。 4、在IIC.mcp下创建一个分组,取名为startcode,然后将前面拷贝的3个文件2440init.s、2440slib.s、nand.c依次添加到以startcode命名的文件夹下。 5、将IIC.c添加到工程里面去。 6、配置DebugRel Settings(参考实验一)。 7、在IIC.c里面进行程序的书写。 8、编译所写程序。 9、打开串口调试工具,将波特率设为115200。 10、将开发板、仿真器、串口线和电脑正确连接,打开Hjtag软件,调试程序。 四、实验数据和结果: 1.定义一个延迟函数: 2.IIC的写函数: void wr24c02(unsigned char worAddr,unsigned char *buffer,int date) { int i; flag=1; rIICDS=devaddr; rIICCON=~0x10; rIICSTAT=0xf0; while(flag==1) { delay(100); flag=1; rIICDS=worAddr;

湖南工业大学ARM实验报告

ARM嵌入式系统原理及应用开发 实验报告 学院:电气与信息工程学院 班级:电子信息1204 指导老师:谭会生 姓名: 学号: 实验一:ARM汇编指令使用实验——基本数学/逻辑运算一、实验目的 1.初步学会使用ARM ADS / Embest IDE for ARM 开发环境及ARM软件模拟器。 2.通过实验掌握数据传送和基本数学/逻辑运算的ARM汇编指令的使用方法。 二、实验设备 1.硬件:PC机。 2.软件:ADS 1.2 / Embest IDE 200X集成开发环境。 三、实验内容 熟悉ADS 1.2 / Embest IDE 200X开发环境的使用,使用LDR/STR和MOV等指令访问寄存器或存储单元,实现数据的加法运算。具体实验参考程序如下: 四.实验操作步骤 1.新建工程。先建立一个实验文件夹,如E\ARMSY\armasm1;然后运行Embest IDE集成开发环境,选择File→New Workspace菜单项,弹出一个对话框,输入工程名armasm1a/armasmlb等相关内容;最后单击OK按钮,将创建一个新工程,并同时创建一个与工程名相同的工作区。此时在工作区窗口将能打开该工作区和工程。 2.建立源文件。选择File→New菜单项,弹出一个新的、没有标题的文本编辑窗口,输入光标位于窗口中第一行,按照实验参考程序编辑输入源文件代码。编辑完后,保存文件armasmla. s。 1)armasmla. s源程序: /* armasm1a.s */ .EQU X, 45 /*定义变量X,并赋值为45*/ .EQU Y, 64 /*定义变量Y,并赋值为64*/ .EQU STACK_TOP, 0X1000 /*定义栈顶0X1000*/ .GLOBAL _START .TEXT

ARM实验报告.

ARM实验报告 一,程序功能。 该程序可以实现简单的音乐播放,通过蜂鸣器发出不同的音乐,播放的音乐为music[] 数组中的乐谱。每秒播放一个频率的音乐。播放完毕后重头开始播放。 二,播放的原理 在音乐中每个乐谱的频率值不一样,因此,我们可以改变驱动给蜂鸣器的频率值来使 蜂鸣器发出不同的声音,下面是频率对应表: 在本程序中,我们采用的是方波驱动,故只需要在IO口产生高低电平就可以了,对于不同的乐器,其频率值都是一样的,只是驱动蜂鸣器的波形不一样,这里由于是简单的音乐播放程序,故我们直接使用占空比为50%的方波作为蜂鸣器的驱动波形,改变占空比可以模拟不同的乐器发音。 三,程序流程图

四:主函数代码和相关注释. /**************************************************************************** * 文件名:main.c * 功能:使用定时器0实现1秒定时,控制蜂鸣器蜂鸣。(中断方式) * 说明:短接蜂鸣器跳线JP7。断开CF卡跳线JP13、GPIO接口J17。 ****************************************************************************/ #include "config.h" #define BEEPCON 1<<7 // P0.7引脚控制B1,低电平蜂鸣 int n,j; //全局变量见后面的详细解释。 int freq[]={0,523,578,659,698,784,880,988,1046,1174,1318,1397,1568,1760,1976};//1234567频率值int music[]={5,5,6,5,1,7,5,5,6,5,2,1,5,5,3,2,1,7,6,4,4,3,1,2,1};//播放的音乐数组 void frequecy_time(int f) { T0MR0 =(int)(110592/f) ; //产生特定频率时给T0MR0的初值 } /**************************************************************************** * 名称:IRQ_Time0() * 功能:定时器0中断服务程序,取反BEEPCON控制口。产生50%的占空比 * 入口参数:无 * 出口参数:无 ****************************************************************************/ void __irq IRQ_Time0(void) { if( (IO0SET&BEEPCON) == 0 ) { IO0SET = BEEPCON; //输出高电平 } else { IO0CLR = BEEPCON; //输出低电平 } if(n==freq[music[j]]) //到达1秒后 {T0PR = 99; // 设置定时器0分频为100分频,得110592Hz T0MCR = 0x03; // 匹配通道0匹配中断并复位T0TC frequecy_time(freq[music[j]*2]); //播放下一个频率值 T0TCR = 0x03; // 启动并复位T0TC T0TCR = 0x01; n=0; j++; if(j==25) j=0; //播放完毕后从新播放 /* 设置定时器0中断IRQ */ VICIntSelect = 0x00; // 所有中断通道设置为IRQ中断

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,READONL Y ENTRY MOV R0,#0 MOV R1,#1 REPEAT ADD R0,R0,R1

中北大学嵌入式系统实验报告

中北大学计算机与控制工程学院实验报告《嵌入式系统实验报告》 专业电气工程与智能控制 班级 14070541 学号 1407054103 姓名贾晨凌

实验一 ARM 处理器指令系统实验 一、实验目的 熟悉ARM指令系统,熟悉ARM SDT编辑编译连接,ARM Project Manager和ARM Debugger 的设置和使用 二、实验条件 Windows平台的ARM SDT 2.51软件:ARM Project Manager和ARM Debugger。 三、实验内容 学习使用ARM Project Manager建立项目文件,编辑汇编文件,并加入项目。学习ARM编译器和汇编器的设置。通过编程熟悉ARM指令,包括跳转指令,数据处理指令,状态寄存器传送指令,load/store指令,中断异常产生指令。学习ARM调试起的使用方法,包括程序的导入,单步执行,断点设置等。 四、实验要点 工程文件的建立,在ARM Project Manager中点击File->New,选择Project,点击确定。 链接器的设定,需要设置代码和数据段的起始地址。 点击图标,选择不进行远程调试,即可打开调试器。 五、实验结果 熟悉ARM指令系统 实验二p1口实验 一、实验目的 熟悉 ARM SDT 软件开发方法和技能;

学习和巩固 ARM 指令集; 学习和巩固汇编语言程序设计 二、实验条件 Windows 平台的 ARM SDT 2.51 软件:ARM Project Manager 和 ARM Debugger; DebugServer.exe ; EFLAG-ARM-S3C44B0 实验箱 三、实验内容 目录 ARM251\EXAMPLES\ASM 下的汇编程序, 学习和调试代码,分析所得结果。 在调试器上仿真软件的执行。 在实验箱上,调试软件,并观察软件的执行结果 四、实验要点 在调试软件目录中启动 DebugServer.exe 调试器服务程序。 启动 SDT 调试软件 ARM Debugger。 五、实验结果

2014完整ARM嵌入式系统实验报告

郑州航空工业管理学院 嵌入式系统实验报告 (修订版) 20 – 20第学期 赵成,张克新编著 院系: 姓名: 专业: 学号: 电子通信工程系 2014年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中建立类型的工程,工程目标配置为;接着,还需要对工程进行、及链接器设置;最后,配置仿真环境为仿真方式。 2.写出ARM汇编语言的最简程序结构,然后在代码段中实现两个寄存器值的加法运算,给出运算部分相应指令的注释。 ; 文件名:

第一次ARM实验报告

微机原理实验报告 实验名称:按键控制蜂鸣器实验院系:物理与机电工程学院专业班级:09电子信息工程2班学号:20090416 学生姓名: 指导教师:涂二生李建华 完成时间:2012年4月25日报告成绩:

实验一用按键控制蜂鸣器实验 一、实验目的 1、掌握ARM7——LPC2131的GPIO口的基本工作原理及相应功能; 2、掌握GPIO的特性和编程方法。 二、实验仪器 微型电子计算机(含软件H-JIAO V0.3.1 和ADSv1_2)、Easy ARM2131开发板、USB接口电源线和JTAG接口线以及部分跳线。 三、实验原理 (1)蜂鸣器控制电路 在Easy ARM2131开发板上,接有一个蜂鸣器,由P0.7控制,通过跳线JP11选择连接。蜂鸣器控制电路如图一所示。 电路说明: 如果跳线JP11选择蜂鸣器,当P0.7输出低电平时,蜂鸣器鸣叫,当P0.7输出高电平时,则蜂鸣器停止鸣叫。实验利用P0.7的输出功

能,控制蜂鸣器鸣叫。程序设置PINSEL0使P0.7连接GPIO,并通过IO0DIR将其设置为输出状态,然后通过IO0CLR和IO0SET清零和置位P0.7口,控制蜂鸣器。LPC2131中,具有I2C总线功能的I/O 口(P0.2-SCL0、P3.0-SDA0、P0.11-SCL1、P0.14-SDA1)为开漏输出,在用作I2C总线以及其他功能时,需要加1K~10K欧姆的上拉电阻。则此电路图在JP11前,加R22=10K的上拉电阻。(2)按键控制电路 如图4.2所示,当P0口连接GPIO且用于输入时,如用于检测按键的时候,由于P0口作GPIO输入时,内部无上拉内阻,所以需要加10K左右的上拉电阻,把I/O口拉到高电平。 当P0口用于GPIO输入时(如按键输入),内部无上拉电阻,需要加上拉电阻,电路如图4.14

ARM实验报告

ARM实验报告 朱银忠 1、实验目的 (1)熟悉LPC2378的结构功能和代码体系。 (2)熟悉LPC2378实验板的各个模块功能。 (3)掌握基本的硬件电路的连接和调试方法。 (4)利用按键模块,显示模块和主控CPU实现简单的功能。 2、实验步骤 (1)学习并熟悉电路图,理解掌握LPC2378及其各个模块的电路连接结构和工作方法。 (2)将LPC2378和其他外围原件焊接在实验板上。 (3)学习keil C的使用方法,建立一个工程。并利用keil C将所有的主程序和外围程序烧写到LPC2378中。 (4)上电测试各个模块是否正常工作,如果不正常工作则找到原因并解决故障。(5)通过keil C 编写一个小程序,在LPC 2378实验板上实现一定的功能。3、硬件调试结果 (1)上电后经万用表测试,电压转换电路工作正常,芯片供电电压为3.3V,部分外围元件为5V。 (2)在keil C 中建立工程后,通过进行合适的配置成功的将程序下载进了LPC2378。 (3)将串口模块通过串口线和计算机连接后。利用串口调试助手软件测试串口模块工作正常。 (4)通过对SD卡的读写操作测试证明SD卡模块工作正常。 (5)通过对键值的读取证明按键模块工作正常。 (6)液晶模块在插上排线后没有反应,经检查,发现接口和封装并不匹配。将接口调换位置后重新插上排线,再通过调节电位器到合适的位置,液晶可以正常工作。

4、程序功能和实现思路 该程序通过LPC2378对液晶模块和按键模块的联合控制,实现了一个“推箱子”游戏的功能。 该程序基本实现思路为,通过按键函数读取键值得到上、下、左、右四个方向的命令。根据命令控制“人”的位置和“箱子”的位置。在屏幕上显示“人”的位置和“箱子”的位置,最终当“人”将“箱子”推到预定地点后,游戏结束。 5、程序清单 #include "LPC23XX.h" #include "CONFIG.h" #include "GPIO.h" #include "LCD.h" #include "IRQ.h" #include "RTC.h" #include "TIMER.h" #include "KEY.h" #include "I2C.h" #include "UART.h" #include "MOTOR.h" #include "RS485.h" #include "stdio.h" #include "stdlib.h" #define UP 0x34 #define DOWN 0x63 #define LEFT 0x32 #define RIGHT 0x36 unsigned int i,j; unsigned char deslocatex[]={13,14}; unsigned char deslocatey[]={13,14}; unsigned char flag0=0,flag1=0; unsigned char temp; unsigned char ss[]; unsigned int sc=0; unsigned long time=100000; static int step=0; unsigned int cant=0 ; struct BOX { unsigned int x; unsigned int y; }Box1,Box2,Box3,Box0;

相关文档