(OK)嵌入式系统体系结构实验指导书(只含ADS)6439.pdf

上传人:得****3 文档编号:83501140 上传时间:2023-03-31 格式:PDF 页数:39 大小:3.07MB
返回 下载 相关 举报
(OK)嵌入式系统体系结构实验指导书(只含ADS)6439.pdf_第1页
第1页 / 共39页
(OK)嵌入式系统体系结构实验指导书(只含ADS)6439.pdf_第2页
第2页 / 共39页
点击查看更多>>
资源描述

《(OK)嵌入式系统体系结构实验指导书(只含ADS)6439.pdf》由会员分享,可在线阅读,更多相关《(OK)嵌入式系统体系结构实验指导书(只含ADS)6439.pdf(39页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、.嵌入式系统体系结构 实验指导书 华东交通大学信息工程学院计算机系 .目 录 实验一 ARM ADS 集成开发环境练习.3 实验二 ARM 汇编指令实验.20 实验三 ARM 汇编语言程序设计实验(一).23 实验四 ARM 汇编语言程序设计实验(二).25 实验五 ARM 汇编与 C 语言混合程序设计实验.29 实验六 ARM 的串行口实验.32 实验七 键盘及 LED 驱动实验.35 实验八 LCD 与触摸屏程序设计.37 特别说明:所有目录都应是英文字符,如出现中文字符会报错。.实验一 ARM ADS 集成开发环境练习 一、实验目的 熟悉 ARM ADS1.2 开发环境,并学会 ADS1

2、.2 环境下工程的仿真、调试及配置方法。使用 ADS 编译、下载、调试并跟踪一段已有的程序,了解嵌入式开发的基本思想和过程。二、实验容 本次实验使用 ARM ADS 1.2 集成开发环境。新建一个基于简单的工程文件,并编译这个工程文件。学习 ADS1.2 环境下工程的仿真、调试及配置方法。学会在程序中设置断点,观察系统存和变量,为调试应用程序打下基础。三、预备知识 C 语言的基础知识、程序调试的基础知识和方法。四、实验设备及工具(包括软件调试工具)硬件:PC 机 Pentium100 以上。软件:PC 机 Windows 操作系统、ARM ADS 1.2 集成开发环境、AXD 五、实验步骤(一

3、)ADS1.2 集成开发环境的使用 1.新建工程 现在可以通过“开始”“程序”“ARM Developer Suite v1.2”“CodeWarrior for ARM Developer Suite”来打开开发软件了,如图 1-14 所示。图 1-14 .启动 Metrowerks CodeWarrior for ARM Developer Suite v1.2 后界面如图 1-15 所示。图 1-15 在 CodeWarrior 中新建一个工程的方法有两种,可以在工具栏中单击“New”按钮,如图 1-16 所示。也可以在“File”菜单中选择“New。”菜单,如图 1-17 所示。图 1

4、-16 图 1-17 这样打开一个如图 1-18 所示的窗口。该窗口有 Project、File 和 Objict 三个选项卡,现在我们新建工程,故选 Project 选项卡。这个对话框中为用户提供了 7 种可选择的工程类型。此 7 种工程类型已经在图中标出,大家熟悉一下。这里我们选择第一种 ARM Executable Image 工程类型,在“Project name:”下输入工程名,如 test,点击“Location:”文本框的“Set.”按钮,浏览选择想要将该工程保存的路径。如存放在 E 盘的 armtest.文件夹中,进入 E 盘后按照图 1-19,图 1-20 的步骤完成。图 1

5、-18 图 1-19 .图 1-20 改完名后,双击 armtest 文件夹再点击“保存”按钮,就会出现图 1-21 所示界面,此时点击“确定”按钮即可建立一个新的名为 test 的工程,这时会出现 test.mcp 的窗口,如图 1-22 所示。图 1-21 图 1-22 .此时点击“最大化”按钮可以将 test.mcp 窗口扩大,如图 1-23 所示。图 1-23 2.设置目标及其参数 开发环境要经过设置才能与试验箱配套使用。在工具栏中有一个用于选择目标的下拉列表框,如图1-24 圈中所示。新建工程的默认目标是 DebugRel,另外还有两个可选择的目标,分别是 Debug 和 Relea

6、se,他们的含义如下:DebugRel:生成目标时,为每一个源文件生成调试信息;Release:生成目标时,不生成调试信息;Debug:生成目标时,为每一个源文件生成最完全的调试信息。图 1-24 这里选择 Debug,接下来对 Debug 目标进行参数设置。单击工具栏上的设置按钮或使用 EditDebug Settings 菜单命令打开设置对话框,如图 1-25 所示,设置框如图 1-26 所示。.图 1-25 图 1-26 在 Debug Setting 对话框中需要设置的容比较多。设置方法是首先在左侧的树形目录中选中需要设置的对象,然后在右侧面板中进行相应的设置。下面对经常使用的设置选项

7、进行介绍。(1)目标设置(Target Setting)在树形目录中选中 TargetTarget Setting 项,在右侧面版的 Post-linker 下拉表框中选择 ARM fromElF,使得工程连接后通过 fromElF 产生二进制代码,使其可以烧写到 ROM 中。方法如图 1-27 所示。.图 1-27 (2)语言设置(Language Settings)开发语言有汇编、C、C+及其混合语言等。我们在开发前要对其设置,这里主要是对其硬件(架构或处理器)的支持设置,如我们实验是在采用 S3C2410 处理器的试验箱中开发的,所以在右侧面板Architecture or Proces

8、ser(架构或处理器)下拉列表框中选择 ARM920T。具体设置方法是先选中树形目录中 Language Settings 下的开发语言,然后在本语言对应的右侧面板的 Architecture or Processer 下拉列表框中选择 ARM920T,其他选项保持默认。注意,在开发中用到的语言都要进行这样设置。汇编语言的设置过程如图 1-28 所示,其他语言设置方法与此一样。图 1-28 (3)器设置(Linker)在左侧的树形目录中选中 LinkerARM Linker,出现器的设置对话框,如图 1-29 所示。此处设置很重要,详细介绍一下各个选项卡的设置方法。1)Output 选项卡:如

9、图 1-29 所示。其中 Linktype 选项中为器提供 3 种类型:Partial:表示器只进行部分,后的目标文件可以作为以后进一步的输入文件;Simple:表示器将生成简单的 ELF 格式的映像文件,地址映射关系在 Simple image 选项区域中设置;Scattered:表示器将生成复杂的 ELF 格式的映像文件,地址映射关系在 Scatter 格式的文件中指定。这里我们选择常用的 Simple 类型,选择 Simple 后,在其右侧 Simple image 选项区域中包含 RO Base和 RW Base 两个文本框。RO Base:用来设置程序代码存放的起始地址。RW Bas

10、e:用来设置程序数据存放的起始地址。这两项的地址均由硬件决定,并应该在 SDRAM 的地址围。本实验箱使用的是 64M SDRAM,其地址围是0 x3000 00000 x33FF FFFF,故采用首地址作为程序代码的存放的首地址,即在 RO Base 文本框中输入0 x3000 0000,RW Base 文本框用户自定义,只要保证在 SDRAM 地址空间,并且是字对齐即可,这里我们可以输入 0 x3100 0000。此处的设置也就是说在地址为 0 x30000000-0 x31000000 之间是只读区域,用来存放程序代码,从0 x31000000 开始用来存放程序数据。.图 1-29 2)

11、Option 选项卡:如图 1-30 所示。本选项卡只对 Image entry point 进行设置,该项是程序代码的入口地址。如果程序在 SDERAM 中运行,针对本试验箱可选择的地址围 0 x30000000-0 x31000000。通常程序代码的入口地址与 RO Base 中程序代码的首地址相同,这里为 0 x30000000。其他默认即可。图 1-30 3)Layout 选项卡:如图 1-31 所示。该选项卡在方式为 Simple 时有效,他用来安排一些输入段在映像文件中的位置。即在 Place at beginning of image 区域中 Object/Symbol 文本框中

12、填写启动程序的目标文件名 init.o 和 Section 文本框中填写程序入口起始段的标号 Init。其作用是通知编译器,整个项目从该段开始执行。.图 1-31 如果希望将编译后生成的二进制文件放到指定文件夹,可以在左侧的树形目录中选中 LinkerARM frpmELF 进行设置,如图 1-32 所示。此框如为空,将默认在工程目录下生成二进制文件。该二进制文件可用于以后下载到 Flash(试验箱等硬件)中执行。图 1-32 至此,对 Debug Settings 的设置基本完成,单击 Apply-OK 按钮,保存设置。为了避免以后每次新建工程再这样设置,我们可以将该新建的空工程作为模板保存

13、起来。方法是:在 ADS1.2 的安装目录的 Stationary 文件夹下新建一个适合模板的目录名,如 S3C2410 ARM Executable Image;然后将刚设置好的工程文件以一个适合的名字如 S3C2410 ARM.mcp 另存到该模板目录中即可。以后使用 File-New。菜单命令新建工程时就可以在弹出的 New 对话框中看到 S3C2410 ARM Executable Image 工程模板,如图 1-33 所示。选用该模板创建工程就可以免去设置过程,直接向工程中添加文件、进行编码就可以了。.图 1-32 3.向工程中添加源文件 工程创建、设置好以后就会出现 test.mc

14、p 的窗口,该窗口包含 File、Link Order 和 Targets 三个选项卡,如图 1-33 所示。默认情况下显示的是 File 选项卡,此时可以通过执行 ProjectAdd File.菜单命令把与工程有关的所有源文件加入到该工程,如图 1-34。或者通过鼠标右击空白处弹出的快捷菜单 Add File.来完成,如图 1-25 所示。图 1-33 .图 1-34 图 1-35 对于本次试验,没有源文件可用,首先需要新建源文件。这里以新建文件类型为 C 语言文件,文件名为 led.c 为例向大家说明一下过程。选择 File-New。菜单命令,如图 1-36 所示。在弹出的窗口中选择 F

15、ile 选项卡;在 File name 文本框中输入新建文件的文件名 led.c,注意:文件名后缀与要使用的开发语言种类有关,如用C 语言开发时文件名后缀为.c,汇编语言开发时文件名后缀为.s;在 Location 文本框中输入文件的保存位置 E:armtestest;选中 Add to Project 复选框;在 Project 下拉列表框中选择将文件添加到的工程 test。mcp;在 Targets 复选框中选中文件要添加的目标 Debug,过程如图 1-37 所示。单击确定即可将新建的文件添加到工程中,文件添加到工程后的窗口如图 1-38 所示。接下来只需在新建文件中进行编码、保存即可,

16、如图 1-39 所示。注意:此时Metrowerks CodeWarrior for ARM Developer Suite v1.2窗口中包含工程和文件两个窗口,如图 1-40所示。我们需要点击相应的最小化或向下还原按钮来进行切换。如图1-38和图1-39中圈中所示。.图 1-36 图 1-37 图 1-38 .图 1-39 图 1-40 工程创建好以后,接下来就是对其进行编译和。选择Metrowerks CodeWarrior for ARM Developer Suite v1.2 窗口的“Project”“Make”菜单命令或点击按钮来完成编译和。如果有错误或警告,窗口如图 1-41所

17、示,用户可根据提示更改程序。图 1-41 如果没有语法错误,将在工程所在目录下生成一个名为“工程名_data”的文件夹。如本例的工程名为 test.mcp,生成的文件夹名为 test_data。在该文件夹下,针对不同类型的目标将生成多个文件夹。本例中由于使用的是 Debug 目标,因此生成的最终文件都在 Debug 文件夹下。进入 Debug 文件夹会看到编译、后生成的映像文件(xxx.axf)和二进制文件(xxx.bin)。映像文件用于调试,二进制文件用于烧写到 Flash中运行。.(二)、ADS1.2 环境下工程的仿真、调试及配置方法 通过“开始菜单”“ARM Developer Suit

18、e v1.2”“AXD Debugger”来打开调试软件,如图 1-42所示。图 1-42 如果程序代码没有错误或警告,也可以点击 Metrowerks CodeWarrior for ARM Developer Suite v1.2窗口的 ProjectDebug 菜单命令或点击按钮或点击工程窗口的按钮来直接调出 AXD 调试窗口,方法如图1-43 和图 1-44 所示。图 1-43 .图 1-44 AXD 调试窗口如图 1-45 所示。图 1-45 第一次使用需要对 AXD 进行配置,具体方法如下:初次运行 AXD,左侧的目标平台为 ARM7TDMI。试验箱采用的 CPU 为 ARM920

19、,所以需要配置 AXD 使之匹配。方法为点击 AXD 窗口的 OptionsConfigure Target 菜单命令,如图 1-46。图 1-46 Configure Target 窗口如图 1-47 所示。在图 1-47 中,Target 栏代表不同的目标 CPU。“ADP”和“ARMUL”是缺省的设置。选择 ARMUL,表示使用软件仿真,此时 PC 机可以不连接任何目标板,ARM 系统中 CPU 的行为完全由软件模拟。我们使用软件仿真,故选择 ARMUL。图 1-47 .要设置 CPU 类型需双击 ARMUL,然后在出现的设置对话框中点 Processor 区域中的 Variant 下拉

20、菜单,找到 ARM920T 并选中,然后点击 Ok-Ok 即可。设置过程如图 1-48 所示。图 1-48 设置好的 AXD 界面左侧就会显示 ARM920T 了。现在可以向 AXD 调试软件中添加工程的映像文件了。方法为点击 AXD 窗口的 FileLoad Image 菜单命令选择要加载的映像文件(后缀为.axf),如图 1-49 所示。图 1-49 加载完映像文件就可以对程序代码进行调试了。下面介绍一下 AXD 界面的一些常用的工具和窗口。AXD界面如图 1-50 所示。.图 1-50 .实验二 ARM 汇编指令实验 一、实验目的 1 掌握 ARM 数据处理指令的用法 2 了解 ARM

21、汇编指令灵活的第二操作数,编写简单的汇编程序 二、实验容 1 用 MOV 和 MVN 指令访问 ARM 通用寄存器 2 使用 ADD、SUB、AND、ORR、CMP 和 TST 指令完成数据的加减运算及逻辑运算。3 用 ADS1.2 软件仿真,单步、全速运行程序,设置断点,打开寄存器窗口(ProcessorRegister)监视运算值,打开存储器观察窗口(Memory)监视 0 x40003100 地址处的值。三、预备知识 1、用 ARM ADS 集成开发环境,编写和调试程序的基本过程。2、ARM 指令的使用 四、实验设备及工具(包括软件调试工具)硬件:PC 机 Pentium100 以上。软

22、件:PC 机 Windows 操作系统、ARM ADS 1.2 集成开发环境、AXD 五、实验步骤 1 启动 ADS1.2,使用 ARM Executable Image 工程模板建立一个工程。如 SY2 2 建立汇编源文件 Test2.s,然后加入工程中。3 编译、连接工程,选择 ProjectDebug,启动 AXD 软件仿真调试。4 打开寄存器窗口,监视寄存器的值。5 可以单步运行程序,可以设置、取消断点,或者全速运行,停止运行,调试时观察寄存器的值,运行结果见图 2-1。.图 2-1 ARM 实验 2 的运行结果 六、实验参考程序 X EQU 11 Y EQU 8 BIT23 EQU

23、(1 2*X?R5=R5&0XFFFF0000,R5=R5|0X000000FF MOV R0,#Y ADD R0,R0,R0,LSL#2 MOV R0,R0,LSR#1 MOV R1,#X MOV R1,R1,LSL#1 CMP R0,R1 LDRHI R2,=0 xFFFF0000 ANDHI R5,R5,R2 ORRLS R5,R5,#0 x000000FF .;TST,BIC:BIT23=1?BIT6=0:1 TST R5,#BIT23 BICNE R5,R5,#0 x00000040 B START END.实验三 ARM 汇编语言程序设计实验(一)一、实验目的 1 掌握 ADS1.

24、2 集成开发环境 2 了解 ARM 汇编指令用法,并能够编写简单的汇编程序 3 掌握指令的条件执行,掌握 LDR/STR 指令,完成存储器的访问 二、实验容 1 用 LDR 指令读取 0 x40003100 地址上的数据,将该数据加 1,若结果大于 10,则使用 STR 指令将结果写入原地址,否则,将把 0 写入原地址。2 用 ADS1.2 软件仿真,单步、全速运行程序,设置断点,打开寄存器窗口(ProcessorRegister)监视 R0、R1 的值,打开存储器观察窗口(Memory)监视 0 x40003100 地址处的值。三、预备知识 1、用 ARM ADS 集成开发环境,编写和调试程

25、序的基本过程。2、ARM 指令的使用 四、实验设备及工具(包括软件调试工具)硬件:PC 机 Pentium100 以上。软件:PC 机 Windows 操作系统、ARM ADS 1.2 集成开发环境、AXD 五、实验步骤 1 启动 ADS1.2,使用 ARM Executable Image 工程模板建立一个工程。如 SY3 2 建立汇编源文件 Test3.s,加入工程中。3 设置工程连接地址 R0 Base 0 x40000000,RW Base 0 x40003000。4 编译、连接工程,选择 ProjectDebug,启动 AXD 软件仿真调试。5 打开寄存器窗口,监视 R0、R1 的值

26、,设置观察地址 0 x40003100,显示方式为 32bit,监测 0 x40003100上的值。6 可以单步运行程序,可以设置、取消断点,或者全速运行,停止运行,调试时观察寄存器 0 x40003100上的值,运行结果见图 3-1。.图 3-1 ARM 实验 3 的运行结果 六、实验参考程序 COUNT EQU 0X40003100 AREA TEST3,CODE,READONLY ENTRY CODE32 START LDR R1,=COUNT MOV R0,#0 STR R0,R1 LOOP LDR R1,=COUNT LDR R0,R1 ADD R0,R0,#1 CMP R0,#10

27、 MOVHS R0,#0 STR R0,R1 B LOOP END.实验四 ARM 汇编语言程序设计实验(二)一、实验目的 1 掌握 ADS1.2 集成开发环境 2 掌握如何使用 ARM 的 MRS/MSR 指令实现工作模式切换 二、实验容 1使用 ARM 的 MRS/MSR 指令实现工作模式切换,并初始化堆栈指针 2观察 ARM 控制器在工作模式下的寄存器的区别。三、预备知识 1、用 ARM ADS 集成开发环境,编写和调试程序的基本过程。2、ARM 指令的使用 四、实验设备及工具(包括软件调试工具)硬件:PC 机 Pentium100 以上。软件:PC 机 Windows 操作系统、ARM

28、 ADS 1.2 集成开发环境、AXD 五、实验步骤 1 启动 ADS1.2,使用 ARM Executable Image 工程模板建立一个工程。如 SY4 2 建立汇编源文件 Test4.s,然后加入工程中。3 设置工程连接地址 R0 Base 0 x40000000,RW Base 0 x40003000。设置调试入口地址 Image Entry point 为 0 x40000000。4 编译、连接工程,选择 ProjectDebug,启动 AXD 软件仿真调试。5 打开寄存器窗口,监视寄存器的值,选择 current 项监视各个寄存器上的值。6 可以单步运行程序,可以设置、取消断点,

29、或者全速运行,停止运行,调试时观察寄存器 CPSR、SPSR、R13、R14 和 R15 的值,运行观察见图 4-1。.图 4-1 ARM 实验 4 的运行观察结果 注意:CPSR 寄存器的显示方式如图 4-1 所示,显示分两个部分,一是各个运算标志位,二是工作模式显示。(1)运算标志位 NZCV:显示为大写字母,表示结果为 1,否则为 0。(2)中断标志位 IF:I 为 IRQ 中断禁止位,F 为 FIQ 中断禁止位。(3)工作模式位:包括 User、Fiq、Irq、SVC、Abort、Undef 和 SYS。六、实验参考程序 ;the stack length is being defin

30、ed USR_STACK_LENGTH EQU 64 SVC_STACK_LENGTH EQU 0 FIQ_STACK_LENGTH EQU 16 IRQ_STACK_LENGTH EQU 64 ABT_STACK_LENGTH EQU 0 UND_STACK_LENGTH EQU 0 AREA MODE1,CODE,READONLY ENTRY CODE32 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

31、 MOV R11,#11 MOV R12,#12 BL init_stack ;init stack pointer in every mode ;enable the IRQ MRS R0,CPSR ;R0-CPSR BIC R0,R0,#0X80 MSR CPSR_cxsf,R0;CPSR-R0 ;switch to usr mode MSR CPSR_c,#0 xd0 MRS R0,CPSR ;swicth to svc mode MSR CPSR_c,#0 xdf MRS R0,CPSR HALT B HALT ;INIT STACK init_stack MOV R0,LR ;Set

32、up the svc stack MSR CPSR_c,#0 xd3 LDR SP,StackSvc ;Setup the Irq stack MSR CPSR_c,#0 xd2 LDR SP,StackIrq ;Setup the Fiq stack MSR CPSR_c,#0 xd1 LDR SP,StackFiq ;Setup the Abt stack MSR CPSR_c,#0 xd7 LDR SP,StackAbt ;Setup the Und stack MSR CPSR_c,#0 xdb .LDR SP,StackUnd ;Setup the Usr stack MSR CPS

33、R_c,#0 xdf LDR SP,StackUsr MOV PC,R0;define the stack pointer StackUsr DCD UsrStackSpace+(USR_STACK_LENGTH-1)*4 StackSvc DCD SvcStackSpace+(SVC_STACK_LENGTH-1)*4 StackIrq DCD IrqStackSpace+(IRQ_STACK_LENGTH-1)*4 StackFiq DCD FiqStackSpace+(FIQ_STACK_LENGTH-1)*4 StackAbt DCD AbtStackSpace+(ABT_STACK_

34、LENGTH-1)*4 StackUnd DCD UndStackSpace+(UND_STACK_LENGTH-1)*4 ;ALLOCATED THE STACK SPACE UsrStackSpace SPACE USR_STACK_LENGTH*4 SvcStackSpace SPACE SVC_STACK_LENGTH*4 IrqStackSpace SPACE IRQ_STACK_LENGTH*4 FiqStackSpace SPACE FIQ_STACK_LENGTH*4 AbtStackSpace SPACE ABT_STACK_LENGTH*4 UndStackSpace SP

35、ACE UND_STACK_LENGTH*4 END.实验五 ARM 汇编与 C 语言混合程序设计实验 一、实验目的 掌握如何使用 ADS 1.2 编写混合语言程序 二、实验容 1掌握 C 语言中调用汇编程序技术 2汇编程序完成加法运算,计算 z=x+y 值 三、预备知识 1、用 ARM ADS 1.2 集成开发环境,编写和调试程序的基本过程。2、ARM 应用程序的框架结构。四、实验设备及工具(包括软件调试工具)硬件:PC 机 Pentium100 以上。软件:PC 机 Windows 操作系统、ARM ADS 1.2 集成开发环境、AXD 五、实验步骤 1 启动 ADS1.2,使用 ARM

36、Executable Image 工程模板建立一个工程。如 SY5 2 建立 C 语言源文件 test5_c.c,和汇编语言文件 test5_s.s,然后加入工程中。.3 设置工程连接地址 R0 Base 0 x40000000,RW Base 0 x40003000。设置调试入口地址 Image Entry point 为 0 x40000000。4 设置位于开始位置的起始代码段,如图 5-1。5 编译、连接工程,选择 ProjectDebug,启动 AXD 软件仿真调试。6 在 Test5_C.c 文件中的 Add()函数处设置断点,然后,全速运行程序。7 程序在断点处停止,可以单步运行程

37、序,判断程序是否跳入汇编程序中运行。8 选择 Processor ViewsVariables 打开变量观察窗口,观察全局变量的值,单步、全速运行程序,判断程序的运算结果是否正确。如图 5-2 所示。.图 5-1 设置开始位置的起始代码段 图 5-2 ARM 实验 5 的运行观察结果 图 5-3 实验 5 源代码组织见 .六、实验参考程序/文件一 startup file startup.s IMPORT|Image$RO$Limit|IMPORT|Image$RW$Base|IMPORT|Image$ZI$Base|IMPORT|Image$ZI$Limit|IMPORT MAIN ;dec

38、lare the main()in the C Prog AREA start,CODE,READONLY ENTRY CODE32 Reset LDR SP,=0 x40003f00 ;initial the C case 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 L

39、OOP2 CMP R3,R1 STRCC R2,R3,#4 BCC LOOP2 B MAIN END /文件二 test5_c.c#define uint8 unsigned char#define uint32 unsigned int extern uint32 Add(uint32 x,uint32 y);uint32 sum;void MAIN(void)sum=Add(5,4);while(1);/文件三 test5_s.s .EXPORT Add AREA Addc,CODE,READONLY ENTRY CODE32 Add ADD R0,R0,R1 MOV PC,LR END

40、实验六 ARM 的串行口实验 一、实验目的 掌握 ARM 的串行口工作原理。学习编程实现 ARM 的 UART 通讯。掌握 CPU 利用串口通讯的方法。二、实验容 学习串行通讯原理,了解串行通讯控制器,阅读 ARM 芯片文档,掌握 ARM 的 UART 相关寄存器的功能,熟悉 ARM 系统硬件的 UART 相关接口。编程实现 ARM 和计算机实现串行通讯:ARM 监视串行口,将接收到的字符再发送给串口(计算机与开发板是通过超级终端通讯的),即按 PC 键盘通过超级终端发送数据,开发板将接收到的数据再返送给 PC,在超级终端上显示。三、预备知识 1、用 ARM ADS 1.2 集成开发环境,编写

41、和调试程序的基本过程。2、ARM 应用程序的框架结构。3、了解串行总线 四、实验设备及工具 硬件:ARM 嵌入式开发板、用于 ARM7TDMI 的 JTAG 仿真器、PC 机 Pentium100 以 上、串口线 软件:PC 机操作系统 win98、Win2000 或 WinXP、ARM ADS 1.2 集成开发环境、仿真器驱动程序、超级终端通讯程序 .五、实验步骤 1新建工程,将光盘中“串行口实验startup”目录下的文件添加到工程中,这些是启动时所需要的文件。2定义与 UART 有关的各个寄存器地址和一些特殊的位命令。主要有以下各寄存器(44b.h):/*UART 的全部功能寄存器*/#

42、define rULCON0 (*(volatile unsigned*)0 x1d00000)#define rULCON1 (*(volatile unsigned*)0 x1d04000)#define rUCON0 (*(volatile unsigned*)0 x1d00004)#define rUCON1 (*(volatile unsigned*)0 x1d04004)#define rUFCON0 (*(volatile unsigned*)0 x1d00008)#define rUFCON1 (*(volatile unsigned*)0 x1d04008)#define r

43、UMCON0 (*(volatile unsigned*)0 x1d0000c)#define rUMCON1 (*(volatile unsigned*)0 x1d0400c)#define rUTRSTAT0(*(volatile unsigned*)0 x1d00010)#define rUTRSTAT1(*(volatile unsigned*)0 x1d04010)#define rUERSTAT0(*(volatile unsigned*)0 x1d00014)#define rUERSTAT1(*(volatile unsigned*)0 x1d04014)#define rUF

44、STAT0 (*(volatile unsigned*)0 x1d00018)#define rUFSTAT1 (*(volatile unsigned*)0 x1d04018)#define rUMSTAT0(*(volatile unsigned*)0 x1d0001c)#define rUMSTAT1(*(volatile unsigned*)0 x1d0401c)#define rUBRDIV0 (*(volatile unsigned*)0 x1d00028)#define rUBRDIV1 (*(volatile unsigned*)0 x1d04028)#ifdef _BIG_E

45、NDIAN /大端摸式#define rUTXH0 (*(volatile unsigned char*)0 x1d00023)#define rUTXH1 (*(volatile unsigned char*)0 x1d04023)#define rURXH0 (*(volatile unsigned char*)0 x1d00027)#define rURXH1 (*(volatile unsigned char*)0 x1d04027)#define WrUTXH0(ch)(*(volatile unsigned char*)(0 x1d00023)=(unsigned char)(ch

46、)#define WrUTXH1(ch)(*(volatile unsigned char*)(0 x1d04023)=(unsigned char)(ch)#define RdURXH0()(*(volatile unsigned char*)(0 x1d00027)#define RdURXH1()(*(volatile unsigned char*)(0 x1d04027)#define UTXH0 (0 x1d00020+3)/byte_access address by BDMA#define UTXH1 (0 x1d04020+3)#define URXH0 (0 x1d00024

47、+3)#define URXH1 (0 x1d04024+3)#else /小端摸式#define rUTXH0 (*(volatile unsigned char*)0 x1d00020)#define rUTXH1 (*(volatile unsigned char*)0 x1d04020)#define rURXH0 (*(volatile unsigned char*)0 x1d00024)#define rURXH1 (*(volatile unsigned char*)0 x1d04024)#define WrUTXH0(ch)(*(volatile unsigned char*)

48、0 x1d00020)=(unsigned char)(ch)#define WrUTXH1(ch)(*(volatile unsigned char*)0 x1d04020)=(unsigned char)(ch)#define RdURXH0()(*(volatile unsigned char*)0 x1d00024)#define RdURXH1()(*(volatile unsigned char*)0 x1d04024).#define UTXH0 (0 x1d00020)/byte_access address by BDMA#define UTXH1 (0 x1d04020)#

49、define URXH0 (0 x1d00024)#define URXH1 (0 x1d04024)#endif 3编写串口驱动函数(MyUart.c):图 6-1 串口初始化 图 6-2 发送数据 图 6-3 接收数据 4在主函数中实现将从串口 0 接收到的数据发送到串口 0(Main.c):图 6-4 主函数 六、思考题 RS232 串行通讯的数据格式是什么?串行通讯最少需要几根线,分别如何连接?ARM 的串行口有几个,相应的寄存器是什么?4用中断方式实现串口驱动。.实验七 键盘及 LED 驱动实验 一、实验目的 1学习键盘及 LED 驱动原理。2掌握 zlg7289 芯片的使用方法。二

50、、实验容 通过 zlg7289 芯片驱动 17 键的键盘和 8 个共阴极 LED,将按键值在 LED 上显示出来。三、预备知识 1掌握在 ARM ADS 1.2 集成开发环境中编写和调试程序的基本过程。2了解 ARM 应用程序的框架结构。3了解 UC/OS-II 多任务的原理。四、实验设备及工具 硬件:ARM 嵌入式开发板、用于 ARM7TDMI 的 JTAG 仿真器、PC 机 Pentium100 以上。软件:PC 机操作系统 win98、Win2000 或 WinXP、ARM ADS 1.2 集成开发环境、仿真器驱动程序、超级终端通讯程序 五、实验步骤 1新建工程,将“键盘及 LED 实验

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 应用文书 > 工作报告

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com