嵌入式实验一二

  • 格式:doc
  • 大小:310.50 KB
  • 文档页数:5

实验一:开发环境实验
实验学时:2
实验类型:验证+设计
实验要求:必做

一、 实验目的
熟悉ADS1.2开发环境,掌握ARM汇编语言,能编写汇编程序实现一定功能,学
会ARM仿真器的使用,使用ADS编译、下载、调试并跟踪一段已有的程序,了解嵌
入式开发的基本思想和过程。
二、 实验设备
计算机;博创UP-3000实验箱
三、 实验步骤
1. 打开ADS软件,新建工程,编写汇编程序,在数据段

sourcedata中给定10个数字,实现数字排序功能,将
结果存储在finaldata中,在ADS仿真环境下观察寄存
器内容的变化。
2. 打开ADS软件,按照《博创实验指导书》建立工程模板,了解各参数含义。
3. 打开超级终端,与实验箱连接,以步骤2中的模板新建工程,导入“..\3000的ADS
实验\Exp1开发环境实验”目录下所有文件,编译、下载、调试并跟踪程序运行,
在超级终端中观察程序运行结果。
4. 熟悉实验箱BIOS指令。
5. 记录和整理实验报告
四、 实验报告内容
1. 画汇编程序流程图,附汇编程序源代码,并加注释及程序运行结果(截屏)。
2. 简述通过ADS编译、下载、调试并跟踪程序的过程。
3. 回答思考题。
五、 思考题
1. 超级终端的作用是什么?
2. ADS工程文件的Debug和Release版本有何不同,各有什么作用?
实验二:串行口实验

实验学时:2
实验类型:设计
实验要求:必做

一、 实验目的
1.掌握ARM的串行口工作原理。
2.学习编程实现ARM的UART通讯。
3.掌握CPU利用串口通讯的方法。
二、 实验设备
计算机;博创UP-3000实验箱
三、 实验步骤
1.新建工程,将“\3000的ADS实验\Exp2串行口实验”中的文件添加到工程中,这些
是启动时所需要的文件。
2.查找S3C44B0工作手册,定义与UART有关的各个寄存器地址和一些特殊的位命令。
主要有以下各寄存器(44b.h):
/* UART的全部功能寄存器 */
#define rULCON0
#define rULCON1
#define rUCON0
#define rUCON1
#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
#define rUBRDIV1
#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-1为串口初始化的实现流程,图2-2为发送数

据的流程,图2-3为接收数据的流程。

图2-1 串口初始化
将寄存器ULCONn、UCONn置零
设置寄存器ULCONn、UCONn、
UBRDIV

延时
开始
发送队列是否
为空?

延时

发送数据
WrUTXH0(data)
开始接收队列是否为满?是否接收数据RdURXHn()

图2-2 发送数据 图2-3 接收数据

4.在主函数中实现将从串口0接收指定长度数据,再发送到串口0(Main.c)。要求:
先在串口输出“Please input data length:”,用键盘输入数据长度(整数,回车表示结束),根
据串口接收到的长度接收数据到缓冲区,并将数据发送到串口检查,到指定长度时,发送
“complete.”。
5.记录和整理实验报告。
四、 实验报告内容
1. 画主程序流程图,附主程序源代码及注释,显示程序运行结果(截屏),附串口初
始化、发送数据和接收数据相关代码及注释。
2. 心得体会。
五、 思考题
1. RS-232串行通讯的数据格式是什么?
2.串行通讯最少需要几根线,分别如何连接?
3.ARM的串行口有几个,相应的寄存器是什么?