当前位置:文档之家› ARM实验

ARM实验

ARM实验
ARM实验

实验一、ARM开发环境的建立

一、实验目的

学会安装ADS集成环境及连接仿真硬件平台。

二、实验设备

硬件:嵌入式实验平台一套、仿真器一个、PC机一台。

软件:Windows 98/2000/NT/XP操作系统、仿真器驱动程序、ADS开发软件一套。

三、实验内容

正确安装完全版ARM ADS1.2集成环境,并了解JTAG硬件仿真环境的一些设置和工作方法。

四、实验原理

ARM ADS (ARM DEVELOPER SUITE )是ARM平台集成开发环境,它包括两个部分:CodeWarrior for ARM Developer Suite 和AXD debugger 。

AXD调试通过Windows驱动程序及中间件软件与JTAG接口连接,并通过JTAG接口与硬件平台连接

本实验使用ARMJtagDebugFinal中间件软件通过LPT1并行接口经JTAG协议转换连接ARM目标板。

五、实验操作步骤

1、安装ADS1.2集成开发环境, 把ADS1.2_Licence.rar中的license.dat文件copy到“C:\Program Files\ARM\ADSv1_2\licenses”路径中,覆盖原来的license.dat,若安装目录设置为其他目录,必须copy到相应目录中。

2、启动CodeWarrior for ARM Developer Suite集成开发环境,设置许可证文件指向最新license.dat文件。

3、首次使用时,若ARM CPU为S3C44B0X,安装ARMJtagDebugFinal版本的Jtag驱动程序,若ARM-CPU为LPC-2000系列,安装HJTAG 驱动程序。HJTAG驱动安装方法参见光盘说明,ARMJtagDebugFinal的安装方法如下:

①把文件夹ARMJtagDebugFinal.rar中的文件copy到“C:\Program Files\ARM\ADSv1_2\ARMJtagDebugFinal”目录中或其他安装目录;

②先安装ARMJtagDebugFinal驱动软件(以后不用再安装),即执行文件夹中的“安装驱动.exe”程序,并点击安装按钮,分别安装“并口驱动”和“OCX”;

③在桌面建立Arm7Agent和Arm9Agent两给快捷连接,分别指向ARMJtagDebugFinal目录中的Arm9.exe, Arm7.exe ;

4 安装完毕驱动后,每次调试前,必须先启动运行Arm7Agent、Arm9Agent或HJTAG调试代理软件(中间件),调试过程始终不要关闭调试代理程序,启动并正确连接硬件目标系统之后,既可以开始调试ARM7系统或ARM9系统;

5、如果在以后的使用过程中发现程序无法启动,重新安装JTAG接口驱动即可;

6、使用ARMJtagDebugFinal驱动程序时,在ADW(SDT)/AXD(ADS)的调试配置选项里选择remote_a.dll,使用HJTAG驱动时选用HJTAG.DLL

7、在ADW/AXD的调试配置里IP地址必须填写:127.0.0.1

8、具体的调试使用可以参考光盘中JTAG的使用方法

六、常见问题

1、THUMB/ARM混合编程时断点设置要素当CPU处于一种CPU模式时(THUMB或ARM) 断点只可以设置在当前模式下的指令处不可以设置在另一种模式下的指令解决方案设置一个断点在CPU模式切换指令处(如BX) 当程序运行到此指令并停下来后然后通过单步执行(Step)进入另一种状态这时候就可以在当前模式下任意设置断点了;

2、THUMB/ARM混合编程时因为ADW/AXD启动时默任的CPU模式为ARM模式如果你启动调试前你的ARM CPU 正在执行Thumb模式指令那么将会导致调试错误解决方案按一下你的板子的复位键,然后再启动ADW/AXD即可;

3、为了加快软件影响单步执行速度现在暂时屏蔽了semihosting 功能如果你需要此功能可以EMAIL索取;

4、如果出现无法逼使CPU进入调试的提示只需要复位你的板子,重新启动软件即可;

5、如果发现软件没有任何动作把它关了再启动;

6、如果发现软件根本无法运行看不到其运行界面那么执行“安装驱动.exe”,重新驱动OCX即可;

7、如果出现打开并口失败,那么执行安装驱动.exe , 重新并口驱动即可;

8、如果提示检测不到ARM核如果你的CPU没坏供电正常那么就一定是你的JTAG板子问题了,应该参考常用的那种"SDT"或"Wiggler"接线然后在JTAG调试软件选择对应的选项SDT或wiggler或自定义;

9、排除这些如果出现其他的调试错误,那么就是你设置ADW/AXD或你的板子问题了

10、一些常见问题请参考https://www.doczj.com/doc/9112212976.html,、周立功公司网站;

实验二、ADS 1.2 集成开发环境练习

ARM ADS(ARM Developer Suite V1.2 )是ARM公司,为开发ARM内核处理机而提供的集成开发环境(IDE)和集成调试环境(ICE)。本书涉及的实验均以ADS为默认开发、调试环境。

一、实验目的

学会ADS集成环境。

二、实验设备

硬件:嵌入式实验平台一套、仿真器一个、PC机一台。

软件:Windows 98/2000/NT/XP操作系统、仿真器驱动程序、ADS开发软件一套。

三、实验内容

正确安装完全版ARM ADS1.2集成环境,并了解整个仿真环境的一些设置和工作方法。

四、实验原理

ARM ADS (ARM DEVELOPER SUITE )是ARM平台集成开发环境,它包括两个部分,

CodeWarrior for ARM Developer Suite 和AXD debugger ,前者具有编辑,编译,链接等功能并可生成二进制文件(.bin)和可执行的映象文件(.axf)以及各源文件的目标代码(.o);

后者可以装载映象文件或二进制文件到ARM平台,并可实现跟踪调试。

五、实验操作步骤

1. 启动CodeWarrior for ARM Developer Suite(ADS 集成开发环境),点击开始菜单/ 程序/ARM Developer Suite v1.2/CodeWarrior for ARM Developer Suite 会出现如下界面:

2.点击【File】菜单中的【NEW】,在打开的菜单中选择PROJECT,在窗口中定义路径、名称以及工程项目的属性(ARM EXECUTABLE IMAGE)然后点击“确定”。

3. 生成的项目默认目标有DEBUG(调试版)、RELEASE(发行版)和DEBUGREL(带部分调试信息的发行版)。在【TARGET】中可以看到,此时的项目是个没有内容的空项目,需要加入文件【FILES】。

4. 点击【FILES】后,加入文件的方法有两种,从工具栏PROJECT下拉菜单中选择ADD FILES (CREATE GROUP文件组)或在空白区域内点击鼠标右键弹出菜单,加入FILE(GROUP)。

5. 将先前编辑好的文件test.s添加到该项目中来。

6. 文件添加完毕之后,可以打开其中的一个或多个文件进行修改和编辑。与文本编辑相关的操作主要在工具栏【EDIT】菜

单中,主要有删除、拷贝、剪切、粘贴、恢复等操作。

查找、替换等需要在多个文件间切换的功能菜单在【SEARCH】工具栏菜单中。

7. 修改完毕后保存好新建的项目。

8. 根据目标板的具体情况进行一些必要的设置工作。在CodeWarrior for ARM Developer

Suite中点击Edit\DebugRel Settings….. 按钮。将Linker\ARM Linker 中的RO Base 和RW Base 值改为目标板的ROM,RAM 地址,然后点击OK 按钮。对项目进行完设置后,点击Project\Make 按钮或按快捷键F7,对项目文件进行编译。

9. 在对项目进行了编译之后如果没有编译错误,就可以进行仿真了。点击Project\Debug

按钮或按快捷键F5,启动AXD,用仿真器进行仿真。

六、练习题

1. 仿真环境包括哪些内容?

2. 仿真手段除了介绍的方式外还有哪些?

实验三、CODE32/CODE16汇编指令与状态切换实验

一、实验目的

掌握ARM7TMDI 汇编指令的用法,并能编写简单的汇编程序;

学习ARM 微控制器的16 位Thumb 汇编指令的使用方法掌握指令的条件执行;

二、实验设备

硬件:嵌入式实验平台一套、仿真器一个、PC机一台。

软件:Windows 98/2000/NT/XP 操作系统、仿真器驱动程序、ADS开发软件一套。

三、实验内容

分别使用ARM、Thumb指令ADD,MOV,CMP,B 计算1+2+3+…+N 的值。

四、实验原理

ARM 处理器共有两种工作状态:

ARM 32 位,这种状态下执行字对准的ARM 指令。

Thumb 16 位,这种状态下执行半字对准的Thumb 指令。

注意: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 状态。Thumb ]\状态下的寄存器集是ARM 状态下寄存器集的子集。程序员可以直接访问8 个通用寄存器(R0-R7)、PC、SP、LR 和CPSP。每一种特权模式都有一组SP、LR 和SPSR。Thumb 状态的R0-R7 与ARM 状态的R0-R7 一致。Thumb 状态的CPSR 和SPSR 与ARM 状态下的CPSR和SPSR 一致。

Thumb 状态的SP 映射到ARM 状态的R13。

Thumb 状态的LR 映射到ARM 状态的R14。

Thumb 状态的PC 映射到ARM 状态的PC(R15)。

本程序使用R0 保存结果,所以一开始就要初始化为0;循环执行R0=R0+R1,R1 为循环计数器,从1 开始计数,每一次循环R1 加1;当循环计数器R1 的值到达N 时,运算结束。

五、实验操作步骤

1.启动ADS1.2,使用ARM Execuatable Image 工程模板建立一个工程ASM_Project。2.建立源文件test2.s,编写实验程序,然后添加到工程中(ARM指令和Thumb 指令实验的test2.s 程序源码分别见下清单) 。

3.设置工程链接地址RO Base 为0x8000

4.编译链接工程,选择【Project】->【Debug】,启动AXD进行调试。

5.打开寄存器窗口(Processor Registers),选择Current 项监视各寄存器的值。

6.单步运行程序,注意执行BX R0指令前后CPSR寄存器的T位。说明:在寄存器窗口的CPSR 寄存器,大写字母的位表示该位为1,小写字母的位表示

该位为0(比如“T”表示T 位为1,“t”表示T 位为0)。

7.理解并掌握本实验原理及程序,完成练习题。

六、实验参考程序

Thumb 汇编指令实验的参考程序代码清单

;文件名:test.s

;功能:计算1+2+3+…+N 的值

N EQU 50 ; 定义N 的值为50

AREA testcode, CODE, READONLY ;声明代码段testcode

ENTRY ;标识程序入口

CODE32 ; 声明32 位ARM 指令

ARM_CODE

LDR SP, =0x40003F00 ;设置堆栈指针

ADR R0,THUMB_CODE+1

BX R0 ;跳转并切换处理器状态

LTORG ;声明文字池

CODE16 ;声明16 位Thumb 指令

THUMB_CODE

LDR R0,=N ;设置子程序SUM_N 的入口参数

BL SUM_N ;调用子程序SUM_N

B THUMB_CODE

;名称:SUM_N

;功能:计算1+2+3+…+N 的值

;入口参数:R0(N 的值)

;出口参数:R0(运算结果)

SUM_N

PUSH {R1-R7,LR} ;寄存器入栈保护

MOVS R2,R0 ;将N 的值复制到R2,并影响条件码标志

BEQ SUM_END ;若N的值为0,则返回。

CMP R2,#1

BEQ SUM_END ;若N的值为1,则返回。

MOV R1,#1 ;初始化计算器R1=1

MOV R0, #0 ;初始化结果寄存器R0=0

SUM_L1 ADD R0,R1 ; R0=R0+R1

BCS SUM_ERR ;结果溢出,跳转到SUM_ERR

CMP R1,R2 ;将计算器的值与N 比较

BHS SUM_END ;若计数器的值≥N,则运算结束

ADD R1,#1

B SUM_L1

SUM_ERR MOV R0, #0

SUM_END POP {R1-R7,PC} ;寄存器出栈,返回

END

;ARM 汇编指令实验的参考程序代码清单

;文件名:add.s

;功能:计算1+2+3+…+N 的值

N EQU 5;

AREA Example,CODE,READONLY

ENTRY

CODE32

START

LDR R0,=N

MOV R2,R0 ;R2 充当计数器

MOV R0,#0

MOV R1,#0

LOOP

CMP R1,R2

BHI ADD_END

ADD R0,R0,R1

ADD R1,R1,#1

B LOOP

ADD_END

B START

END

七、练习题

1.如何切换处理器状态

2.在Thumb 指令只有哪一条指令具有条件执行功能?

3.如何判断运算结果溢出?

实验四、ARM 微处理器工作模式实验

一、实验目的

通过实验掌握学会使用MSR/MRS 指令实现ARM 处理器工作模式的切换,观察

不同模式下的寄存器,加深对CPU 结构的理解。

二、实验设备

硬件:嵌入式实验平台一套、仿真器一个、PC机一台。

软件:Windows 98/2000/NT/XP 操作系统、仿真器驱动程序、ADS 开发软件一套。

三、实验内容

通过ARM 汇编指令,在各种处理器模式下切换并观察各种模式下寄存器的区别;掌握

ARM 不同模式的进入与退出。

四、实验原理

1.ARM 处理器模式

ARM 体系结构支持表1-所示的7 种处理器模式。

处理器模式说明:

用户usr 正常程序执行模式

FIQ fiq 支持告诉数据传送或通道处理

IRQ Irq 用于通用中断处理

管理svc 操作系统保护模式

中止abt 实现虚拟存储器和/或存储器保护

未定义und 支持硬件协处理器的软件仿真

系统sys 运行特权操作系统任务

在软件控制下也可以改变模式,外部中断或异常处理也可以引起模式发生改变。大多数应用程序在用户模式下执行。当处理器工作在用户模式时,正在执行的程序不能访问某些被保护的系统资源,也不能改变模式,除非异常发生。这允许适当编写操作系统来控制系统资源的使用。

除用户模式外的其他模式成为特权模式。它们可以自由地访问系统资源和改变模式。其

中5 种称为异常模式,即:

FIQ(Fast Interrupt Request);

IRQ(Interrupt Request);

管理(Supervisor);

中止(Abort);

为定义(Undefined) 。

当特定的异常出现时,进入相应的模式。每种模式都有某些附加的寄存器,以避免异常出现时用户模式的状态不可靠。

剩下的模式是系统模式。仅ARM 体系结构V4 以及以上的版本有该模式。不能由于任

何异常而进入该模式。它与用户模式有相同的寄存器,但它是特权模式,不受用户模式的限

制。它供需要访问系统资源的操作系统任务使用,但希望避免使用与异常模式有关的附加寄

存器。避免使用附加寄存器保证了当任何异常出现时,都不会使任务的状态不可靠。

2.程序状态寄存器

在所有处理模式下,都可以访问当前程序状态寄存器CPSR。CPSR包含条件码标志、中断禁止位、当前处理器模式以及其他状态和控制信息。每种异常模式都有一个程序状态保存寄存器SPSR。当异常出现时,SPSR用于保存CPSR的状态。

CPSR 和SPSR 的格式如下:

31 30 29 28 27 26 8 7 6 5 4 3 2 1 0

N Z C V Q DNM(RAZ) I F T MMMM M

(1)条件码标志

N、Z、C、V:大多数指令可以检测这些条码标志,以决定程序指令如何执行。

(2)控制位

最低8 位I、F、T 和M 位用作控制位。当异常出现时改变控制位。当处理器在特权模式下时也可以由软件改变。

中断禁止位:I置1 则禁止IRQ 中断;F 置1 则禁止FIQ 中断。

T 位:T=0 指示ARM 执行;T=1指示Thumb 执行。在这些体系结构的系统中,可自由地使用能在ARM 和Thumb 状态之间切换的指令。

模式位:M0、M1、M2、M3 和M 4(M[4:0])是模式位。这些位决定处理器的工作模

式,如表1- 所列:

M[4:0] 模式可访问的寄存器

0b10000 用户PC,R14~R0, CPSR

0b10001 FIQ PC,R14_fiq~R8_fiq, R7~R0, CPSR, SPSR_fiq

0b10010 IRQ PC,R14_irq~R13_irq, R12~R0, CPSR, SPSR_irq

0b10011 管理PC ,R14_svc~R13_svc, R12~R0, CPSR, SPSR_svc

0b10111 中止PC,R14_abt~R13_abt, R12~R0, CPSR, SPSR_abt

0b11011 为定义PC,R14_und~R13_und,R12~R0, CPSR, SPSR_und

0b11111 系统PC,R14~R0,CPSR

(3)其他位

程序状态寄存器的其他位保留,用作以后扩展。

五、实验操作步骤

1.启动ADS1.2 ,建立一个新的工程和源文件,编译、连接,并启动AXD 进行调试;

2.观察当前模式下每个寄存器的值;

3.单步运行程序,注意观察CPSR、SPSR 以及R0 寄存器值得变化。

说明:CPSR 寄存器显示方式分为两部分,一部分是各个标志位,另一部分是工作模式。

标志位NZCVQ 为条件码标志N、Z、C、V、Q,显示为大写字母,表示该位为1;显示为小写字母,表示该位为0。Q标志在ARM 体系结构v5 及以上版本的E 变量中才有效。

标志位IFT 为IRQ 中断禁止位I、FIQ中断禁止位F、ARM微控制器状态位T,显示为

大写字母,表示该位为1;显示为小写字母,表示该位为0。T 标志在ARM 体系结构v4 及以上版本的T变量中才有效。

4.理解并掌握本实验原理及程序,完成练习题

5.记录每种模式堆栈位置,编译环境中更改目标项目的RO程序段和RW数据段起始地址,从新编译连接,调试运行,观察堆栈位置变化,记录堆栈所处位置。

六、实验参考程序

;ARM 微控制器工作模式实验的参考程序如下:

;定义堆栈的大小

USR_STACK_LEGTH EQU 64

SVC_STACK_LEGTH EQU 0

FIQ_STACK_LEGTH EQU 16

IRQ_STACK_LEGTH EQU 64

ABT_STACK_LEGTH EQU 0

UND_STACK_LEGTH EQU 0

AREA Example3,CODE,READONLY ;声明代码段Example3

ENTRY ;标识程序入口

CODE32 ;声明32 位ARM 指令

START MOV R0,#0

MOV R1,#1

MOV R2,#2

MOV R3,#3

MOV R4,#4

MOV R5,#5

MOV R6,#6

MOV R7,#7

MOV R8,#8

MOV R9,#9

MOV R10,#10

MOV R11,#11

MOV R12,#12

BL InitStack ;初始化各模式下的堆栈指针

;打开IRQ 中断(将CPSR 寄存器的1 位清零)MRS R0,CPSR ;R0 <-CPSR

BIC R0,R0,#0X80

MSR CPSR_cxsf,R0 ;CPSR <-R0

;切换到用户模式

MSR CPSR_c,#0xd0

MRS R0,CPSR

;切换到管理模式

MSR CPSR_c,#0xd0

MRS R0,CPSR

HALT B HALT

;名称:InitStack

;功能:堆栈初始化,即初始化各模式下下的堆栈指针。

;入口参数:无

;出口参数:无

;说明:在特权模式下调用此子程序,比如复位后的管理模式

InitStack

MOV R0,LR ;R0 <-LR ,因为各种模式下R0 是相同的

;设置管理模式堆栈

MSR CPSR_c,#0xd3

LDR SP,StackSvc

;设置中断模式堆栈

MSR CPSR_c,#0xd2

LDR SP,StackIrq

;设置快速中断模式堆栈

MSR CPSR_c,#0xd1

LDR SP,StackFiq

;设置中止模式堆栈

MSR CPSR_c,#0xd7

LDR SP,StackAbt

;设置为定义模式堆栈

MSR CPSR_c,#0xdb

LDR SP,StackUnd

;设置系统模式堆栈

MSR CPSR_c,#0xdf

LDR SP,StackUsr

MOV PC,R0

StackUsr DCD UsrStackSpace+(USR_STACK_LEGTH-1)*4

StackSvc DCD SvcStackSpace+(SVC_STACK_LEGTH-1)*4

StackIrq DCD IrqStackSpace+(IRQ_STACK_LEGTH-1)*4

StackFiq DCD FiqStackSpace+(FIQ_STACK_LEGTH-1)*4

StackAbt DCD AbtStackSpace+(ABT_STACK_LEGTH-1)*4

StackUnd DCD UndStackSpace+(UND_STACK_LEGTH-1)*4

;分配堆栈空间

AREA MyStacks, DATA, NOINIT, ALIGN=2

UsrStackSpace SPACE USR_STACK_LEGTH*4

SvcStackSpace SPACE SVC_STACK_LEGTH*4

IrqStackSpace SPACE IRQ_STACK_LEGTH*4

FiqStackSpace SPACE FIQ_STACK_LEGTH*4

AbtStackSpace SPACE ABT_STACK_LEGTH*4

UndStackSpace SPACE UND_STACK_LEGTH*4

七、练习题

参考本节实验例子,把其中系统模式程序更改为用户模式程序,编译调试,观察运行结果,检查是否正确。如果有错误,分析其原因。

提示:不能从用户模式直接切换到其他模式,可以先使用SWI 指令切换到管理模式。

实验五、ARM宏指令与地址装载实验

一、实验目的

掌握ARM宏指令的用法,并能编写简单的汇编程序;

二、实验设备

硬件:嵌入式实验平台一套、仿真器一个、PC机一台。

软件:Windows 98/2000/NT/XP 操作系统、仿真器驱动程序、ADS开发软件一套。

三、实验内容

分别使用ADR,ADRL,LDR等宏指令实现地址标号、数据的加载。

四、实验原理

在汇编程序中经常需要把程序标号、数据段地址以及32位常数加载到积存器中,结合反汇编程序、深入理解参考程序中的地址/数据装载指令实现的功能。

五、实验操作步骤

1.建立一个工程、把参考程序输入建立源文件,编译、连接、调试源程序。

2.打开寄存器窗口,在当前模式下监视各寄存器的值。

3.反汇编、单步跟踪运行程序,理解每条指令功能,记录运行状态与结果。

4.理解并掌握本实验原理及程序,完成练习题。

六、实验参考代码

AREA test, CODE, READONLY

ENTRY ; Mark first instruction to execute

Start

ADR r0, Start ; => SUB r0, PC, #offset to Start

ADR r1, DataArea ; => ADD r1, PC, #offset to DataArea

; ADR r2, DataArea+4300 ; This would fail as the offset,

;cannot be expressed by operand2,of an ADD

L1 ADRL r2, DataArea+4300 ; => ADD r2, PC, #offset1; ADD r2, r2, #offset2

L2 LDR r3,=DataArea

L3 MOV r0, #0x18 ; angel_SWIreason_ReportException

L4 LDR r1, =0x20026 ; ADP_Stopped_ApplicationExit

Here B Here

LTORG ; Create a literal pool

DataArea SPACE 8000 ; Clears a 8000 byte area of memory,; starting at the current location, to zero.

END

七、记录实验结果

通过实验记录Start、DataArea等标号在程序存储器中的绝对数值,标号在程序指令中等价相对偏移量,并解释二者之间关系。

解释L1行程序与L2行程序的区别,L3行程序在反汇编程序中对应哪些指令或数据?

解释L3行程序与L4行程序的区别,L3行程序在反汇编程序中对应哪些指令或数据?

实验六、LDR/STR/LDM/STM等存储器操作与寻址方式实验

一、实验目的

掌握ARM体系结构存储器寻址方法、数据块操作方法等,

二、实验设备

硬件:嵌入式实验平台一套、仿真器一个、PC机一台。

软件:Windows 98/2000/NT/XP 操作系统、仿真器驱动程序、ADS开发软件一套。

三、实验内容

分别用LDR/STR和LDM/STM并能编写数据块COPY汇编程序,理解基本寻址方式。

四、实验原理

在汇编程序中经常需要把程序标号、数据段地址以及32位常数地址加载到存器中,作为基地址,结合反汇编程序、深入理解参考程序中的数据块COPY程序中的存储器操作方式。

五、实验操作步骤

1.建立一个工程、把根据参考程序,写出完整源文件,编译、连接、调试源程序。

2.打开寄存器窗口,在当前模式下监视各寄存器的值。

3.反汇编、单步跟踪运行程序,理解每条指令功能,记录运行状态与结果。

4.单步跟踪观察目标存储器内容变化、寄存器内容变化,判断是否达预定到要求。

5.理解并掌握本实验原理及程序,完成练习题。

六、实验参考代码

AREA test, CODE, READONLY

ENTRY ; Mark first instruction to execute

mov r3,#8

LDR r0,=Addr_src

LDR r1,=Addr_dst1

loop1 LDR r2,[r0]

STR r2,[r1]

ADD r1,r1,#4

ADD r0,r0,#4

SUBS r3,r3,#1

BNE loop1

ldr r0,=Addr_src

ldr r1,=Addr_dst2

LDMIA r0!,{r3-r10}

STMIA r1!,{r3-r10}

stop b stop

Addr_dst1 SPACE 12

Addr_src DCB "0123456789abcdef0123456789ABCDEF"

Addr_dst1 SPACE 32

Addr_dst2 SPACE 32 ;

END

七、记录实验结果

通过实验记录Start、DataArea等标号在程序存储器中的绝对数值,标号在程序指令中相对偏移量,并解释二者之间关系。

解释L1行程序与L2行程序的区别,L3行程序在反汇编程序中对应哪些指令或数据?

解释L3行程序与L4行程序的区别,L3行程序在反汇编程序中对应哪些指令或数据?

实验七、C语言启动代码与调用汇编程序接口实验

一、实验目的

了解ARM7 启动过程,学会使用ADS 编写简单的C 语言程序

掌握C 语言调用汇编程序,并进行调试的方法

二、实验设备

硬件:嵌入式实验平台一套、仿真器一个、PC机一台。

软件:Windows 98/2000/NT/XP 操作系统、仿真器驱动程序、ADS开发软件一套。

三、实验内容

在C语言程序能正常工作前,必须对ARM的各种环境进行初始化,主要是堆栈和目标CPU寄存器的初始化,由Startup.s 程序完成相应功能。初始化完毕,即可进入main()函数。

在C 语言程序中调用汇编子程序,实现计算1+2+3+…+(N-1)+N 的值(N>0)的加法运算。汇编子程序实现两个数的加法运算,其原型为:uint32 Add(uint32 x,uint32 y),其中uint32 已定义为unsigned int 。

四、实验原理

(1)作为最基本的编程语言之一,汇编语言虽然应用的范围不算很广,但重要性却勿

庸置疑,因为它能够完成许多其它语言所无法完成的功能。就拿Linux 内核来讲,虽然绝

大部分代码是用C 语言编写的,但仍然不可避免地在某些关键地方使用了汇编代码,其中

主要是在Linux 的启动部分。由于这部分代码与硬件的关系非常密切,即使是 C 语言也会有些力不从心,而汇编语言则能够很好扬长避短,最大限度地发挥硬件的性能。大多数情况下Linux 程序员不需要使用汇编语言,因为即便是硬件驱动这样的底层程序在Linux 操作系统中也可以用完全用 C 语言来实现,再加上GCC 这一优秀的编译器目前已经能够对最终生成的代码进行很好的优化,的确有足够的理由让我们可以暂时将汇编语言抛在一边了。但实现情况是Linux 程序员有时还是需要使用汇编,或者不得不使用汇编,理由很简单:精简、高效和libc 无关性。假设要移植Linux 到某一特定的嵌入式硬件环境下,首先必然面临如何减少系统大小、提高执行效率等问题,此时或许只有汇编语言能帮上忙了。

汇编语言直接同计算机的底层软件甚至硬件进行交互,它具有如下一些优点:

能够直接访问与硬件相关的存储器或I/O 端口;

能够不受编译器的限制,对生成的二进制代码进行完全的控制;

能够对关键代码进行更准确的控制,避免因线程共同访问或者硬件设备共享引起的死锁;

能够根据特定的应用对代码做最佳的优化,提高运行速度,能够最大限度地发挥硬件的功能。

同时还应该认识到,汇编语言是一种层次非常低的语言,它仅仅高于直接手工编写二进制的机器指令码,因此不可避免地存在一些缺点:

编写的代码非常难懂,不好维护;

很容易产生bug,难于调试;

只能针对特定的体系结构和处理器进行优化;

开发效率很低,时间长且单调。

(2)混合编程的一般方法有三种:一是对C 程序编译后形成的汇编程序进行手工的修改与优化。二是直接在C 语言程序中嵌入汇编语句。三是分别编写C 程序和汇编程序,再独立编译成目标代码模块,再进行链接。

第一种编程方式要求对汇编与C 语言都极其熟悉,并且这样的编程方式对程序的可读性和扩展性的负面影响比较大。

第二种方法适用于语句执行频率非常高,并且C 编程与汇编编程效率差异较大的情况,例如进入中断的通用中断子程序等。

第三种方式是混合编程最常用的方式之一。在这种方式下,C 程序与汇编程序均可使用另一方定义的函数与变量。变量定义是混合编程的基本问题。C 程序与汇编程序定义的变量相互之间可以进行访问。在汇编程序中定义时,需要在变量前加下划线“_”,然后再用.global定义为全局变量。在C 程序中则需要说明为extern变量。

五、实验操作步骤

1.启动ADS1.2,使用实验板自带启动代码工程模板,项目中删除main.c文件;

5.将参考程序中的main()和ADD.S程序添加到项目模版中去;

6.编译链接选项的设置同前面实验;

7.编译链接工程,点击Debug 按钮,启动AXD 进行调试;

8.在main() 的“sum=Add(sum,i)”处设置断点,然后全速运行程序;

9.程序在断点处停止。单步运行程序,判断程序是否跳转到Add.S 汇编程序中运行;

10.选择【Processor Views】->【Variables】打开变量观察窗口,观察全局变量sum 的值,单步/全速运行程序,判断程序的运行结果是否正确。

11. 理解并掌握本实验原理及程序,完成练习题

六、实验参考程序

C 语言实验的参考程序见程序清单1。

//--------------------------------------------------------------

//程序清单1 C 语言实验参考程序

#define uint8 unsigned char

#define uint32 unsigned int

#define N 100

extern uint32 Add(uint32 x,uint32 y);

uint32 sum;

void main(void)

{

uint32 i;

sum=0;

for(i=0;i<=N;i++)

{

sum=Add(sum,i);

} ;

while(1);

}

;//------------------------------------------------------

程序清单2 汇编加法函数Add.S 代码

;;----------------------------------------------------------

;加法函数,原型为uint32 Add(uint32 x,uint32 y)

AREA AddC,CODE,READONLY

EXPORT Add

Add ADD R0,R0,R1

MOV PC,LR

END

;;-----------------------------------------------------------

;;启动代码中的程序片段

;;---------------------------------------------------------

ResetInit

BL InitStack ;初始化堆栈Initialize the stack

;//纯软件仿真要注解掉TargetResetInit 函数调用

;//在LPC2000目标板上运行,必须调用TargetResetInit 函数初始化目标板

; BL TargetResetInit ;目标板基本初始化Initialize the target board

;跳转到c语言入口Jump to the entry point of B __main ;;----------------------------------------------------------------

七、练习题

1.在实验参考程序中,如何以指针形式传递参数?(即设计uint32 Add(uint32 *x,uint32 *y) 函数);

2.在汇编程序中是否可以调用C 语言程序?

实验八:LED流水输出显示实验

一、实验目的

熟悉ARM 芯片I/O 口编程配置方法;

掌握ARM 芯片I/O 口控制LED 显示的方法。

二、实验设备

硬件:嵌入式实验平台一套、仿真器一个、PC机一台。

软件:Windows 98/2000/NT/XP 操作系统、仿真器驱动程序、ADS开发软件一套。

三、实验内容

控制嵌入式实验板上的LED 轮流点亮。

四、实验原理

使用LPC2103实验板实验项目工作原理参考“EasyARM2103教材.pdf”P39-50。

使用LPC2138微控制器做本实验项目原理如下:

具有两个端口——P0和P1,可以作为GPIO使用的引脚数为46个。

通过设置IOPIN/IOSET/IOCLR/IODIR等寄存器数值,使LED灯轮流点亮;

(1) 通过设置IOPIN/IOSET/IOCLR/IODIR等寄存器数值,输出控制管脚状态。

(2) LED连接见电路图,分别使用了P0.17~20四个管脚。

(3) P0口分别有两个32Bit管脚选择寄存器PINSEL0(P0.0-P0.15)、PINSEL1(P0.16-P0.31)选择其功能

五、实验操作步骤

1.启动ADS1.2,使用Gpio工程模板;

2.把GPIO有关程序添加到main.c模块中编;

3.编译链接选项的设置同前面实验;

4.编译链接工程,点击Debug 按钮,启动AXD 进行调试;

5.连续点击step in 按钮,单步运行程序,主板上的四个LED 灯循环点亮。

6.理解并掌握本实验原理及程序,完成练习题

六、实验参考程序

//LPC2103程序参见下列项目文件

// “4.EasyARM2103示例程序\ADS IDE\EasyARM2103 Programme\GPIO\Legacy GPIO”

# define LED1 1 << 17

# define LED2 1 << 18

# define LED3 1 << 19

# define LED3 1 << 20

# define KEY1 1 << 14

# define KEY2 1 << 15

# define KEY3 1 << 16

int main (void)

{

PINSEL0 = PINSEL0 & (~ (0x03 << (14*2) ) ); /* 将P0.14设置为GPIO */ PINSEL0 = PINSEL0 & (~ (0x03 << (15*2) ) ); /* 将P0.15 设置为GPIO */ PINSEL1 = PINSEL1 & (~( 0x03<<( (16-16)*2) )); /* 将P0.16设置为GPIO */ IO0DIR |= LED1; /* 设置LED控制口为输出*/ IO0DIR &=(~0x0001C000 )/* 设置KEY控制口为输入*/ IO0SET = LED1; /* LED1熄灭*/ while (1) {

// if( ( IO0PIN & 0x0001C000 ) != 0x0001C000 ) //find key

{

//添加判断是哪一个键程序,灭掉不同灯/点亮不同灯

IO0SET = LED1; /* LED1熄灭*/

DelayNS(50); /* 延时*/

}

// else // NO Key Pressed

{

IO0CLR = LED1; /* LED1点亮*/

DelayNS(50); /* 延时*/

}

}

return 0;

}

//2138 GPIO输出程序

//LED流水灯实验,数组实现流水灯花样。

#include "config.h"

/* LED8~LED1 8个LED分别由P1.25~P1.18控制*/

const uint32 LEDS8 = (0xFF << 18); // P1[25:18]控制LED8~LED1,低电平点亮

/*

********************************************************************************************************* ** 函数名称:DelayNS()

** 函数功能:长软件延时

** 入口参数:dly 延时参数,值越大,延时越久

** 出口参数:无

********************************************************************************************************* */

void DelayNS (uint32 dly)

{

uint32 i;

for ( ; dly>0; dly--)

for (i=0; i<50000; i++);

}

/*

********************************************************************************************************* ** 函数名称:main()

** 函数功能:流水灯显示实验。

** 调试说明:连接跳线JP12至LED8~LED1。

********************************************************************************************************* */

/* 流水灯花样,低电平点亮,注意调用时候用了取反操作*/

const uint32 LED_TBL[] = {

0x00, 0xFF, // 全部熄灭后,再全部点亮

0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, // 依次逐个点亮

0x01, 0x03, 0x07, 0x0F, 0x1F, 0x3F, 0x7F, 0xFF, // 依次逐个叠加

0xFF, 0x7F, 0x3F, 0x1F, 0x0F, 0x07, 0x03, 0x01, // 依次逐个递减

0x81, 0x42, 0x24, 0x18, 0x18, 0x24, 0x42, 0x81, // 两个靠拢后分开

0x81, 0xC3, 0xE7, 0xFF, 0xFF, 0xE7, 0xC3, 0x81 // 从两边叠加后递减

};

int main (void)

{

uint8 i;

//PINSEL1 = 0x00000000; // 设置管脚连接GPIO

PINSEL2 = PINSEL2 & (~0x08);// P1[25:16]连接GPIO

IO1DIR = LEDS8; // 设置LED1控制口为输出

while (1)

{

for (i=0; i<42; i++)

{ /* 流水灯花样显示*/

IO1SET = ~((LED_TBL[i]) << 18);

DelayNS(20);

IO1CLR = ((LED_TBL[i]) << 18);

DelayNS(20);

}

}

return 0;

}

七、练习题

1.为什么这个实验的工程不需要设置链接地址?

2.在实验参考程序中,改变显示方式,使三个led灯有从左到右、从右到左两动感方向输出?

3.设计一个灯光报警器,以1S 亮,2S暗,由led2向两边发散输出。

实验九:GPIO作为按键输入实验

一、实验目的

熟悉ARM 芯片I/O 口编程配置方法;

掌握ARM 芯片I/O 口控制LED 显示的方法。

二、实验设备

硬件:嵌入式实验平台一套、仿真器一个、PC机一台。

软件:Windows 98/2000/NT/XP 操作系统、仿真器驱动程序、ADS开发软件一套。

三、实验内容

控制嵌入式实验板上的LED点亮熄灭。

四、实验原理

LPC2138/2103微控制器具有两个端口P0和P1,可以作为GPIO使用的引脚数为46个。

使用LPC2103实验板实验项目工作原理参考“EasyARM2103教材.pdf”P39-50。

(1) 通过设置IOPIN/IOSET/IOCLR/IODIR等寄存器数值,读入管脚状态。

(2) 按键连接电路图,分别使用了P0.16、P0.15、P0.14三个管脚。

(3) P0口分别有两个32Bit管脚选择寄存器PINSEL0(P0.0-P0.15)、PINSEL1(P0.16-P0.31)选择其功能

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实验8

实验八 IIC 接口实验 1.实验目的 (1)熟悉S3C2410A 处理器的硬件I2C 接口的使用。 (2)了解CAT1025 EEPROM 的操作方法及注意事项。 2.实验设备 PC 机一台;MagicARM2410 教学实验开发平台一套 ADS 1.2 集成开发环境 3.实验内容 使用I2C 接口主模式向CAT1025 写入10 字节数据,然后读出校验,若校验通过则蜂鸣器 响一声,否则不断地蜂鸣报警。I2C 接口操作采用查询方式。 4.实验原理 S3C2410A 具有1 个硬件I2C 接口,可以配置为主发送、主接收、从发送和从接收等4种 操作模式。I2C 接口共包含4 个寄存器,控制寄存器IICCON 用于设置I2C 总线时钟和中断(标志)使能,还有1 位中断标志位;状态寄存器IICSTAT 除了指示当前I2C 总线状态外,还有2 位I2C 操作模式控制位和总线启动/结束控制位;数据寄存器IICDS 用来发送数据或接收数据;从机地址寄存器IICADD 用来保存S3C2410A 作I2C 从机时的器件地址。对I2C 接口进行初始化时,首先要设置相应I/O 为IICSDA、IICSCL 功能引脚,然后通过IICCON 寄存器来设置I2C 总线时钟,并使能I2C 中断(标志),通过IICSTAT 寄存器来设置I2C 接口为主发送模式。 在进行每一次数据传送之前,都需要产生IIC 总线启动信号。先把要访问的IIC 器件的 地址写入IICDS 寄存器当中,然后将IICSTAT 寄存器的d5 位置位,即可产生结束总线信号,并且将从机地址发送出去。通过读取IICCON 寄存器的值来等待总线启动和发送从机地址,通过读取IICSTAT 寄存器的值判断是否有从机应答,如果没有从机应答,则只能进行结束总线操作。 启动总线后,就可以进行多个数据的发送或接收操作。进行I2C 数据发送时,将待发送 数据写入IICDS 寄存器,然后还要写IICCON 寄存器清除I2C 中断标志,总线才开始发送数据。通过读取IICCON、IICSTAT 寄存器的值判断数据是否发送完成。 进行IIC 数据接收时,通过读取IICCON、IICSTAT 寄存器的值判断是否接收到数据,如 果接收到数据,则可以从IICDS 寄存器中读出数据。接收完一字节数据后,需要写IICCON 寄存器清除I2C 中断标志(同时,可以控制输出应答或非应答信号),总线才允许接收下一字节数据。

实验五 ARM 指令系统实验二

实验五ARM指令系统实验二 注意:本实验在模拟环境下进行,请不要打开实验箱电源!! 一、实验目的: 1、掌握MDK开发环境下多文件编程的方法; 二、实验原理 我们编程时会以工程为单位来解决一个问题,为了解决问题的复杂性和人脑的局限性之间的矛盾,编程人员常常把把一个大问题分解成若干过小问题,每个小问题的解决方法在一个文件中实现,把每个文件解决问题的方法综合起来就够成了解决了大问题的方法。 这些文件之间是存在一定关系的,如果一个文件与其他文件不发生任何关系,那么就没有在工程中存在的必要了!从ARM汇编程序员的角度理解这种关系为: 一个文件有标号被其他文件引用,另一个文件应用了其他文件的标号;这用引用与被应用的关系分别通过import和export实现。 例如: 三、实验任务 下面文件中的定义的数据为某科目学生成绩,试编程找出最高分数的放在maxscore,score.s的内容如下: ;score.s area score,data,readwrite

scores dcb65,78,92,47,77,83,59,93,82,97;学生成绩numofstudent dcb10;学生人数 maxscore dcb0;存放最高分数 end 四、实验步骤 ;A.s …… export label label ……;B.s……import label bl label…… 说明标号label可以被其他文件引定义了标号label说明标号label可以被其他文件引引用了标号label 1、用自然语言描述解决给问题的算法,可以尽可能的抽象! 2、建立工程并建立源文件score.s并把输入(复制)上面内容,并将该文件添加到工 程; 3、建立文件maxoftwo.s,在文件中实现子程序getmax,调用者传入的参数位于 r0、r1中,要求找出r0、r1中的较大值,并把较大值保存在r0

arm嵌入式系统课后习题部分答案

a r m嵌入式系统课后习题 部分答案 The pony was revised in January 2021

一填空题嵌入式系统从大的方面分为(嵌入式系统硬件平台)和(嵌入式软件)两大部分。 驱动层程序一般包括(硬件抽象层HAL)、(板级支持包BSP)和(设备驱动程序)。 嵌入式系统核心是嵌入式处理器,可分为(嵌入式微处理器)、(嵌入式微控制器)、嵌入式DSP处理器和(嵌入式片上系统SoC)4大类。处理器分为(ARM)和(Thumb)两种操作状态。 状态下,SP寄存器指的是(R13)、LR寄存器指的是(R14)、PC寄存器指的是(R15). 处理器支持的数据类型中,字节为(8)位、半字为(16)位、字为(32)位。 (-S)指令集包括(ARM)指令集和(Thumb)指令集。 指令用于从(存储器)中将一个32位的字数据传送到(目的寄存器)中。 指出下面各条指令的寻址方式。 SUB R0,R1,R2 ;寻址方式:(寄存器寻址)。

SUBS R0,R0,#1 ;寻址方式:(立即寻址)。 MOV R0,R2,LSL#3 ;寻址方式:(寄存器移位寻址)。 SWP R1,R1,[R2] ;寻址方式:(寄存器间接寻址)。 LDR R2,[R3,#0x0C] ;寻址方式:(基址寻址)。 汇编语言源程序中语句一般有(指令)、(伪指令)、(伪操作)和宏指令组成。 对Flash存储器的编程可通过(JTAG仿真/调试器)、( ISP )和(IAP)3重方法来实现。 异常向量表可以来自4个不同的存储器区域,分别是(片内Flash )、(片内SRAM )、( Boot Block )和片外存储器。 系列的定时器主要用于3个方面:(对内部事件进行计数的间隔定时器)、(通过捕获输入实现脉宽解调器)、(自由运行的定时器)。二选择题 可以表示微控制器的缩略词是( B ) A. MPU B. MCU C. WDT 类存储器包括( ABD )

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实验指导

ADS 集成开发环境及EasyJTAG 仿真器应用 ADS 集成开发环境是ARM 公司推出的ARM 核微控制器集成开发工具,英文全称为ARM Developer Suite,成熟版本为ADS1.2。ADS1.2 支持ARM10 之前的所有ARM 系列微控制器,支持软件调试及JTAG 硬件仿真调试,支持汇编、C、C++源程序,具有编译效率高、系统库功能强等特点,可以在Windows98、Windows XP、Windows2000 以及RedHat Linux上运行。 这里将简单介绍使用ADS1.2 建立工程,编译连接设置,调试操作等等。最后还介绍了基于LPC2100 系列ARM7 微控制器的工程模板的使用,EasyJTAG 仿真器的安装与使用。 一、ADS 1.2 集成开发环境的组成 ADS 1.2 由6 个部分组成,如表1 所示。 表1 ADS 1.2 的组成部分 由于用户一般直接操作的是CodeWarrior IDE 集成开发环境和AXD 调试器,所以这一章我们只介绍这两部分软件的使用,其它部分的详细说明参考ADS 1.2 的在线帮助文档或相关资料。 1. CodeWarrior IDE 简介

ADS 1.2 使用了CodeWarrior IDE 集成开发环境,并集成了ARM 汇编器、ARM 的C/C++编译器、Thumb 的C/C++编译器、ARM 连接器,包含工程管理器、代码生成接口、语法敏感(对关键字以不同颜色显示)编辑器、源文件和类浏览器等等。CodeWarrior IDE 主窗口如图1所示。 2. AXD 调试器简介 AXD 调试器为ARM 扩展调试器(即ARM eXtended Debugger),包括ADW/ADU 的所有特性,支持硬件仿真和软件仿真(ARMulator)。AXD 能够装载映像文件到目标内存,具有单步、全速和断点等调试功能,可以观察变量、寄存器和内存的数据等等。AXD 调试器主窗口如图2 所示。

ARM嵌入式系统基础试验参考指导书

ARM嵌入式系统基础试验参考指导书

ARM嵌入式系统基础 1 实验指导书原大明 2013.9 实验一 ADS 开发环境实验 一、实验目的 1、掌握 ADS 开发环境的使用; 2、了解 ADSModule 工程基本结构和内容; 3、掌握在 ADS 下建立工程进行开发的基本技巧。 二、实验内容 1、熟悉 ADS 开发环境中的各个组件; 2、建立并编译一个工程; 3、使用AXD调试仿真。 三、实验设备 1、硬件: PC 机 2、软件: PC 机操作系统(WINDOWS XP); ARM Developer Suite v1.2。 四、预备知识 1、了解 ARM 和 S3C2410 体系结构; 2、了解 ARM 和 S3C2410 汇编语言。 五、实验内容 1、实验程序 AREA EXAMPLE3,CODE,READONLY ;/*声明一段名为EXAMPLE3的CODE*/ ENTRY ;/*指定函数的入口*/ START MOV R0,#0xFF ;/*把#0xFF传送到R0*/ MOV R1,#0xEF000000 ;/*把#0XEF000000传送到R1*/ MOV R2,#0x2F000000 ;/*把#0x2F000000传送到R2*/ MVN R3,#0Xff ;/*把#0xFF取反后传送到R3*/ ADD R4,R2,R1 ;/*把R2加R1的值传送到R4*/ ADDS R5,R2,R1 ;/*把R2加R1的值传送R5,s表示会影响cpsr*/ ADCS R6,R2,R1 ;/*把R2加R1的值,再加上carry的值后传送到R6. ;s表示值会影响cpsr*/ SUB R4,R2,R1 ;/R2减R1的值传送到R4*/ SUBS R4,R2,R1 ;/*R2减R1的值传送到R4, s表示影响cpsr*/ RSB R5,R2,R1 ;/*R1减R2的值传送到R5*/

《嵌入式系统与开发》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:加载到内存中运行

armhelloworld实验.

实验一HelloWorld 一、实验目标: 1.了解实验箱的使用; 2.了解ADS的使用(建立新的工程并正确设置和编译); 3.调试HelloWorld程序,体会整个过程; 4.了解三个警告,如何消除?(选做); 二、任务: 1、给出建立新工程的步骤; 1、首先了解ADS软件使用 ADS非常易于初学者上手,该软件的操作尤为简单,对于一般ARM程序的开发,可以分为以下几个过程:编写ARM代码->译、链接产生可执行二进制代码->利用实验箱上ARM系统自带的Bootloader,通过串口大师把可执行代码通过计算机串口下载到硬件板->实验系统在接受完下载的代码后即自动执行->查看实验结果。 下面详细的讲述如何利用该软件开发适合本实验系统的ARM程序。 1.首先在开始菜单中,点击“程序->ARM Developer Suite V1.2->CodeWarrior for ARM Developer Suite”,即可弹出如图2.1.13所示界面。

图2.1.13 ADS软件界面 2.点击“File->New”,会弹出如图2.1.14所示的建立新工程界面。 3.在Project中选择“ARM Executable Image”选择好路径,并在工程名中输入HelloWorld,后点击【确定】,即出现如图2.1.15所示的空的工程界面。 4.此时的工程是一个空的,必须加入相应的代码才行。首先将实验1文件夹下面的inc文件夹和src文件夹拷贝到刚刚建立的HelloWorld文件夹下面;然后在ADS软件中的HelloWorld工程窗口的空白处点击鼠标右键,选择“Add Files…”,选择刚刚拷贝的src文件夹下面的所有文件,如图2.1.16所示。 5.点击【打开】后,会出现如图2.1.17所示的编译类型对话框。

(完整版)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实验报告

湖南科技学院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指令系统实验二)

实验五 ARM 指令系统实验二 注意:本实验在模拟环境下进行,请不要打开实验箱电源!! 一、 实验目的: 1、 掌握MDK 开发环境下多文件编程的方法; 二、 实验原理 我们编程时会以工程为单位来解决一个问题,为了解决问题的复杂性和人脑的局限性之间的矛盾,编程人员常常把把一个大问题分解成若干过小问题,每个小问题的解决方法在一个文件中实现,把每个文件解决问题的方法综合起来就够成了解决了大问题的方法。 这些文件之间是存在一定关系的,如果一个文件与其他文件不发生任何关系,那么就没有在工程中存在的必要了!从ARM 汇编程序员的角度理解这种关系为: 一个文件有标号被其他文件引用,另一个文件应用了其他文件的标号;这用引用与被应用的关系分别通过import 和export 实现。 例如: 三、 实验任务 下面文件中的定义的数据为某科目学生成绩,试编程找出最高分数的放在maxscore ,score.s 的内容如下: ;score.s area score,data,readwrite scores dcb 65,78,92,47,77,83,59,93,82,97;学生成绩 numofstudent dcb 10;学生人数 maxscore dcb 0;存放最高分数 end 四、 实验步骤 ;A.s …… export label label …… ;B.s …… import label bl label …… 说明标号label 可以被其他文件引定义了标号label 说明标号label 可以被其他文件引引用了标号label

1、用自然语言描述解决给问题的算法,可以尽可能的抽象! 2、建立工程并建立源文件score.s并把输入(复制)上面内容,并将该文件添加到工 程; 3、建立文件maxoftwo.s,在文件中实现子程序getmax,调用者传入的参数位于 r0、r1中,要求找出r0、r1中的较大值,并把较大值保存在r0当中,该文件架构如下: ;maxoftwo.s ;两个要比较的数在r0,r1中 ;比较所得的最大数放在r0当中 area max,code,readonly getmax end 4、建立文件init.s,通过调用maxoftwo.s和score.s完成任务,自己编写代码, 注意下页有该文件的参考代码,但希望同学在实验课上尽量不看参考代码或少看代码!

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指令系统试验 讲师:杨行 【实验目的】 1、了解ARM汇编语言 2、掌握简单C语言嵌套ARM汇编语言编程; 3、了解APCS规范; 【实验原理】 一、介绍 APCS,ARM 过程调用标准(ARM Procedure Call Standard),提供了紧凑的编写例程的一种机制,定义的例程可以与其他例程交织在一起。最显著的一点是对这些例程来自哪里没有明确的限制。它们可以编译自C、Pascal、也可以是用汇编语言写成的。 APCS 定义了: 对寄存器使用的限制。 使用栈的惯例。 在函数调用之间传递/返回参数。 可以被‘回溯’的基于栈的结构的格式,用来提供从失败点到程序入口的函数(和给予的参数)的列表。 APCS 不一个单一的给定标准,而是一系列类似但在特定条件下有所区别的标准。例如,APCS-R (用于RISC OS)规定在函数进入时设置的标志必须在函数退出时复位。在32 位标准下,并不是总能知道进入标志的(没有USR_CPSR),所以你不需要恢复它们。如你所预料的那样,在不同版本间没有相容性。希望恢复标志的代码在它们未被恢复的时候可能会表现失常... 如果你开发一个基于ARM 的系统,不要求你去实现APCS。但建议你实现它,因为它不难实现,且可以使你获得各种利益。但是,如果要写用来与编译后的C 连接的汇编代码,则必须使用APCS。编译器期望特定的条件,在你的加入(add-in)代码中必须得到满足。一个好例子是APCS 定义a1 到a4 可以被破坏,而v1 到v6 必须被保护。 二、C语言嵌套ARM汇编语言 int (*my_printf)(const char *format, ...); int main(void) { int n = 5; int m = 1; int ret; my_printf = (void *)0x33f963a8;

ARM嵌入式-ADS-1.2-集成开发环境练习实验报告

专业班级: 学号: 实验名称: 姓名: 实验所属课程: 实验室(中心): 指导教师: 实验完成时间:年月日

一、实验目的: 了解ADS 1.2 集成开发环境的使用方法。 二、实验设备: 1.硬件:PC 机一台 2.软件:Windows98/XP/2000 系统,ADS 1.2 集成开发环境 三、实验容: 1.建立一个新的工程; 2.建立一个C 源文件,并添加到工程中; 3.设置文本编辑器支持中文; 4.设置编译控制选项; 5.编译工程; 6.调试工程。 四、实验预习要求: 仔细阅读产品光盘附带文档《ADS 集成开发环境及仿真器应用》或其它相关资料,了解ADS 工程编辑的容。 五、实验步骤: 1. 启动ADS1.2 IDE 集成开发环境,选择【File】->【New…】,使用ARM Executable Image 工程模板建立一个工程,工程名称为ADS,见图 2.1。 图2.1 建立ARM 指令代码的工程

2.选择【File】->【New…】建立一个新的文件TEST1.S,设置直接添加到项目中,见图2.2。输入如程序清单2.1 所示的代码,并保存,见图2.3。 图2.2 新建文件TEST1.S 程序清单2.1 TEST1.S 文件代码 AREA Example1,CODE,READONLY ; 声明代码段Example1 ENTRY ; 标识程序入口 CODE32 ; 声明32 位ARM 指令START MOV R0,#15 ; 设置参数 MOV R1,#8 ADDS R0,R0,R1 ; R0 = R0 + R1 B START END 图2.3 添加了TEST1.S 的工程管理窗口

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

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

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所示。

ARM实验三 ARM的串行口实验

实验三 ARM的串行口实验 一、实验目的 1.掌握ARM的串行口工作原理。 2.学习编程实现ARM的UART通讯。 3.掌握CPU利用串口通讯的方法。 二、实验内容 学习串行通讯原理,了解串行通讯控制器,阅读ARM芯片文档,掌握ARM的UART相关寄存器的功能,熟悉ARM系统硬件的UART相关接口。编程实现ARM和计算机实现串行通讯: ARM监视串行口,将接收到的字符再发送给串口(计算机与开发板是通过超级终端通讯的),即按PC键盘通过超级终端发送数据,开发板将接收到的数据再返送给PC,在超级终端上显示。 三、预备知识 1.用EWARM集成开发环境,编写和调试程序的基本过程。 2.ARM应用程序的框架结构。 3、了解串行总线。 四、实验设备及工具 硬件:ARM嵌入式开发平台、PC机Pentium100以上、用于ARM920T的JTAG 仿真器、串口线。 软件:PC机操作系统Win2000或WinXP、EWARM集成开发环境、仿真器驱动程序、超级终端通讯程序。 五、实验原理及说明 1.异步串行I/O 异步串行方式是将传输数据的每个字符一位接一位(例如先低位、后高位)地传送。数据的各不同位可以分时使用同一传输通道,因此串行I/O可以减少信号连线,最少用一对线即可进行。接收方对于同一根线上一连串的数字信号,首先要分割成位,再按位组成字符。为了恢复发送的信息,双方必须协调工作。在微型计算机中大量使用异步串行I/O方式,双方使用各自的时钟信号,而且允许时钟频率有一定误差,因此实现较容易。但是由于每个字符都要独立确定起始和结束(即每个字符都要重新同步),字符和字符间还可能有长度不定的空闲时间,因此效率较低。

ARM嵌入式实验开发系统

ARM嵌入式实验开发系统EL-ARM-830+ 产品描述 一、适用范围: EL-ARM-830+型嵌入式实验开发系统适合高等院校《嵌入式系统原理开发与设计》课程的实验教学,可以移植linux、uclinux、VxWorks、pSOS、QNX、ucosII、WinCE等嵌入式操作系统,适合嵌入式系统的实验教学、课题开发、毕业设计及电子设计竞赛等,同时该系统也是电子工程师们理想的开发工具。 二、系统结构简介: EL-ARM-830+教学实验系统属于一种综合的教学实验系统。系统采用实验箱底板加活动CPU板的形式。实验箱底板资源丰富。CPU板可选择ARM7、ARM9、XSCALE255/270、DM355。同时,实验系统上的Techv总线和E-lab总线能够扩展Techv系列和E-lab系列功能模块,极大增强系统的功能,用户也可以基于Techv总线和E-lab总线开发自己的应用模块,完成自己的课题。除此之外,实验系统提供丰富的样例实验,并且提供操作系统移植的源代码,所有的实验程序都有丰富详尽的注释说明,极大的方便了教学。 CPU板:可以更换,支持多种CPU S3C2410(ARM9内核) 主处理器:S3C2410是 200 MIPS ARM920T 内核; 外部存储器单元: SDRAM: 64MB NANDFlash:64MB 10M/100M自适应以太网接口; USB 1.1接口(Host或peripheral)两种模式; 标准的RS232接口; 实时时钟(RTC)单元; 扩展总线接口,连接所有信号线,可进行应用背板扩展; 标准20针JTAG调试接口; 复位电路,电源、运行状态指示灯; 直流5V单电源供电,含电源转换电路; 以上CPU板除与底箱配合使用外,还可独立成系统,单独使用! 实验箱底板:主要包括以下模块: CPU板接口单元:可接ARM7,ARM9,ARM10等CPU板; 数字量输入输出单元:输入:8位自锁按键开关;输出:8位数码管及8位发光二极管; PS/2接口单元:支持PS/2键盘、鼠标; 液晶显示单元:8寸TFT真彩液晶屏,可带触摸屏,分辨率为:640×480; 键盘接口单元:4X4键盘,带8位LED数码管;芯片HD7279A;用户可自定义键值; 触摸屏单元:(选配部件)ADS7843作为触摸屏控制芯片,线触摸屏接口,2.7V~5V信号电压,达到125KHz转换率,可编程的8位、12位转换精度; 音频及接口模块:IIS格式,芯片UDA1341TS,采样率最高48KHz,通过IIS总线和系统连接 一个立体声耳机输出(2.5mm外接耳机接口) 一个立体声麦克输入(2.5mm外接耳机接口 一个音频信号输入(2.5mm外接耳机接口) USB接口:1个主接口,两个设备接口,芯片SL811H/S,PDIUSBD12,支持 USB1.1协议; RS232通讯模块:标准RS232接口,完成与PC机的串行数据的转换; IIC总线接口; IDE接口:可外挂硬盘、DOC、COMPACT FLASH卡;

相关主题
相关文档 最新文档