PAGE 9
PAGE 33
嵌入式系统设计
实验指导书
山东建筑大学计算机学院
计算机科学与技术教研室
2017年9月
TOC \o "1-3" \h \z \u
实验报告格式和内容 3
实验一 基本ARM指令 4
实验二 高级ARM指令 9
实验三 汇编语言与C语言混合编程 13
实验四 开关量输入/输出接口应用 18
实验五 中断及定时器应用 23
实验六 串行通信接口应用 31
实验七 嵌入式操作系统移植 36
实验八 嵌入式软件综合设计 43
实验报告格式和内容
书写实验报告,语言要简练,书写端正、作图正规。按照如下格式和内容书写。
注意:实验八为综合性实验,其格式和实验一到实验七不同,并且需要有封面并装订成册。
一般实验(实验1——实验7)
项目名称
实验目的及要求
实验仪器设备
实验内容(程序)、结果
实验总结
包括实验中遇到的问题,如何解决遇到的问题;实验后的认识和感悟等。
综合性实验(实验8)
项目名称
实验内容
实验目的及要求
实验仪器设备
实验结果(程序)
实验总结
实验一 基本ARM指令
一、实验目的
1.初步学会使用RealView MDK开发环境及ARM软件模拟器。
2.通过实验掌握简单ARM汇编指令的使用方法。
二、实验设备
1.硬件:PC机。
2.软件:RealView MDK集成开发环境,Windows 2000/NT/XP/7。
三、实验内容
1.熟悉开发环境的使用,利用LDR、STR、MOV等访问寄存器或存储单元的指令编写简单的程序。
2.使用ADD/SUB/LSL/LSR/AND/ORR等指令,完成基本的数学/逻辑运算。
四、实验原理
1.ARM寄存器
ARM寄存器R0-R15可分为3类,即通用寄存器R0-R12、堆栈指针R13(SP)、链接寄存器R14(LR)和程序计数器R15(PC)。
2.存储器格式
ARM体系结构将存储器看作是从零地址开始的字节的线性组合,字节0-3存放第一个字,字节4-7存放第二个字。可以采用两种方法存储一个字,分别称为“大端格式”和“小端格式”。
(1)大端格式:在这种格式中,一个字数据的高位字节存放在低地址存储单元中,而低位字节存放在高地址单元中。
(2)小端格式:在这种格式中,一个字数据的高位字节存放在高地址存储单元中,而低位字节存放在低地址单元中。
3.ARM伪指令
(1)数据定义(Data Definition)伪指令
DCB用于分配连续的字节存储单元并用指定的数据初始化,如:
Str DCB “This is a test!” ;
DCW用于分配一片连续的半字存储单元,如:DataTest DCW 1,2,3 ;
DCD用于分配一片连续的字存储单元,如:DataTest2 DCD 4,5,6 ;
SPACE伪指令用于显式地分配固定大小的存储区域并初始化为0,如:
DataSpace SPACE 100
(2)AREA伪指令
AREA伪指令用于定义一个代码段或数据段。语法格式:
AREA 段名 属性1,属性2,…;其中,属性字段表示该段的相关属性,多个属性之间用逗号分隔。常用的属性如下:
CODE:用于定义代码段,默认为READONLY。
DATA:用于定义数据段,默认为READWRITE。
READONLY:指定本段为只读访问,代码段默认为READONLY。
READWRITE:指定本段为可读可写,数据段的默认属性为READWRITE。
例如:AREA Init,CODE,READONLY
(3)ENTRY伪指令
ENTRY伪指令用于指定汇编程序的入口,在一个完整的汇编程序中至少要有一个ENTRY。如:
AREA Init,CODE,READONLY
ENTRY ;指定应用程序的入口点
……
(4)END伪指令
END伪指令用于通知编译器已经到了源程序的结尾。
(5)EQU伪指令
EQU伪指令用于为程序中的常量、标号等定义一个等效的字符名称,类似于C语言中的#define。语法格式:“名称 EQU 表达式”。例如:
Test EQU 50 ;定义标号Test的值为50
五、实验操作步骤
1.实验A
(1)新建工程。运行MDK集成开发环境,选择菜单项Project->New uVision Project,输入工程名称后点击OK按钮,然后选择正确的处理器STM32F103VE,当询问是否复制STM32启动代码时回答“否”,将在指定路径下建立一个空的新工程。
(2)新建源文件。点击菜单项File->New,弹出一个空白的没有标题的文本编辑器窗口,按照实验参考程序输入源代码,编辑完成后,点击菜单项File->Save保存源文件,文件扩展名应为.S。
(3)