嵌入式实验报告.docx
- 文档编号:11052923
- 上传时间:2023-02-24
- 格式:DOCX
- 页数:30
- 大小:977.63KB
嵌入式实验报告.docx
《嵌入式实验报告.docx》由会员分享,可在线阅读,更多相关《嵌入式实验报告.docx(30页珍藏版)》请在冰豆网上搜索。
嵌入式实验报告
《嵌入式系统》实验报告
姓名:
学号:
班级:
指导老师:
专业:
实验一熟悉实验开发环境
一、实验目的
熟悉ADS1.2开发环境,学会ARM仿真器的使用。
使用ADS编译、下载、调试并跟踪一段已有的程序,了解嵌入式开发的基本思想和过程。
二、实验内容
本次实验使用ADS集成开发环境。
新建一个简单的工程文件,并编译这个工程文件。
学习ARM仿真器的使用和开发环境的设置。
下载已经编译好的文件到嵌入式控制器中运行。
学会在程序中设置断点,观察系统内存和变量,为调试应用程序打下基础。
三、预备知识
C语言的基础知识、程序调试的基础知识和方法。
四、实验设备及工具(包括软件调试工具)
硬件:
ARM嵌入式开发平台、用于ARM7TDMI的JTAG仿真器、PC机Pentium100以
上、串口线。
软件:
PC机操作系统win98、Win2000或WinXP、ARMSDT2.51或ADS1.2集成开发
环境、仿真器驱动程序、超级终端通讯程序。
五、实验步骤
1)建立工程
(1)运行ADS1.2集成开发环境(CodeWarriorforARMDeveloperSuite)。
选择File|New…菜单,在对话框中选择Project,如图1B-1所示,新建一个工程文件。
图中示例的工程名为Exp6.mcp。
点set…按钮可为该工程选择路径如图1B-2所示,选中CreatFolder选项后将以图1B-1中的ProjectName或图1B-2中的文件名为名创建目录,这样可以将所有与该工程相关的文件放到该工程目录下,便于管理工程。
设置完成后,可以将该新建的空工程文件作为模板保存以便以后使用。
将工程文件名改为44B0ARMExecutable.mcp。
然后在ADS1.2软件安装目录下的Stationery目录下新建名为44B0ARMExecutableImage的模板目录,再将刚设置完的44B0ARMExecutable.mcp工程模板文件存放到该目录下即可。
这样以后新建工程的时候就能看到以44B0ARMExecutableImage为名字的模板了。
新建工程后,可以执行菜单Project|AddFiles把和工程相关的所有文件包括init
和startup子目录加入到工程中。
ADS1.2不能自动按文件类别对这些文件进行分类,需要的话用户可以执行菜单Project|CreateGroup创建文件组,然后分别将不同类的文件加入到不同的组,以方便管理。
如图1B-12所示。
更为简单的办法是,在新建工程时ADS创建了和工程同名的目录,在该目录下按类别创建子目录并存放工程文件。
选中所有目录拖动到任务栏上的ADS任务条上,不要松开鼠标当ADS窗口恢复后再拖动到工程文件窗口,松开鼠标。
这样ADS将以子目录名建立同名文件组并以此对文件分类。
双击Main.c打开该文件,可以看到Main()函数的内容,可以发现ADS的文本编辑器
已经有了很大的改善,文本按语法分颜色显示,读者可以根据喜好在Edit菜单下的Preferences窗口中进行设置。
并可以很好的支持中文注释。
2)进行程序的在线仿真、调试
(1)回到工程窗口选中Debug版本,执行菜单Project|Make对工程进行编译连接。
在出现的错误/警告窗口中选择某错误/警告信息,ADS会自动打开相应源文件并用箭头指向出错的文本行。
如果某个源文件被修改,重新编译时ADS会自动同步各文件
的日期信息。
(2)在ADS中执行菜单Project|Debug启动ADS1.2的调试工具AXD。
(5)等待程序装载完毕以后,通过Execute|Go菜单以及Execute|Stop(或者工具栏中的相应按钮)运行或暂停程序。
程序暂停后在窗口中将显示出程序暂停的位置。
(6)通过Execute|Step菜单(或者工具栏中的相应按钮)可以单步运行程序。
也可以使用StepIn、StepOut菜单命令进入或者跳出函数的调用。
RunToCursor命令运行到光标位置。
(7)程序停止后可以通过ProcessorViews|Sources菜单查看源文件,并可在适当位置
按F9设置端点。
(8)使用在ProcessorView菜单下的Registers、Variables和Memory命令可以查看工作寄存器或者内存变量。
读者可以逐一地尝试,为以后调试程序打下基础。
实验一C:
超级终端设置及BIOS功能使用
1、运行Windows系统下的超级终端(HyperTerminal)应用程序,新建一个通信终端。
如果要求输入区号、电话号码等信息请随意输入,出现如图1C-1所示对话框时,为所建超级终端取名为arm,可以为其选一个图标。
单击“确定”按钮。
3、完成新建超级终端的设置以后,可以选择超级终端文件菜单中的保存,将当前设置
保存为一个特定超级终端到桌面上,以备后用。
用串口线将PC机串口和平台UART0正确连接后,就可以在超级终端上看到程序输出的信息了,比如本实验的“Helloworld!
”。
4、启动开发板,按住开发板上键盘的任意按键,使开发板进入BIOS设置状态。
5、该画面上提示了该BIOS的版本等信息。
ShellMenu是平台的检测菜单,每个条目的最左边字母是该功能的快捷键,按PC机键盘相应键将执行对应功能。
注意操作时保持超级终端处于激活状态,并且PC机键盘必须为小写。
7、按PC键盘的u键(要使超级终端处于活动状态),这时超级终端上会显示所示的信息
8、这时,在“我的电脑”中可以发现多了一个“可移动磁盘”,这就是开发板的海量存储器16M非线性Flash。
开发板就像一个U盘,可以通过“我的电脑”进行操作。
把上两节内容中生成的system.bin文件通过USB下载到嵌入式开发板中,复位系统,运行并检查输出结果。
实验二ARM串口实验
一、实验目的
1.掌握ARM的串行口工作原理。
2.学习编程实现ARM的UART通讯。
3.掌握CPU利用串口通讯的方法。
二、实验内容
学习串行通讯原理,了解串行通讯控制器,阅读ARM芯片文档,掌握ARM的UART相关寄存器的功能,熟悉ARM系统硬件的UART相关接口。
编程实现ARM和计算机实现串行通讯:
ARM监视串行口,将接收到的字符再发送给串口(计算机与开发板是通过超级终端通讯的),即按PC键盘通过超级终端发送数据,开发板将接收到的数据再返送给PC,在超级终端上显示。
三、预备知识
1、用ARMSDT2.5或ADS1.2集成开发环境,编写和调试程序的基本过程。
2、ARM应用程序的框架结构。
3、了解串行总线
四、实验设备及工具
硬件:
ARM嵌入式开发平台、用于ARM7TDMI的JTAG仿真器、PC机Pentium100以上、串口线。
软件:
PC机操作系统win98、Win2000或WinXP、ARMSDT2.51或ADS1.2集成开发环境、仿真器驱动程序、超级终端通讯程序。
五、实验原理及说明
1.异步串行I/O
异步串行方式是将传输数据的每个字符一位接一位(例如先低位、后高位)地传送。
数据的各不同位可以分时使用同一传输通道,因此串行I/O可以减少信号连线,最少用一对线即可进行。
接收方对于同一根线上一连串的数字信号,首先要分割成位,再按位组成字符。
为了恢复发送的信息,双方必须协调工作。
在微型计算机中大量使用异步串行I/O方式,双方使用各自的时钟信号,而且允许时钟频率有一定误差,因此实现较容易。
但是由于每个字符都要独立确定起始和结束(即每个字符都要重新同步),字符和字符间还可能有长度不定的空闲时间,因此效率较低。
给出异步串行通信中一个字符的传送格式。
开始前,线路处于空闲状态,送出连续“1”。
传送开始时首先发一个“0”作为起始位,然后出现在通信线上的是字符的二进制编码数据。
每个字符的数据位长可以约定为5位、6位、7位或8位,一般采用ASCII编码。
后面是奇偶校验位,根据约定,用奇偶校验位将所传字符中为“1”的位数凑成奇数个或偶数个。
也可以约定不要奇偶校验,这样就取消奇偶校验位。
最后是表示停止位的“1”信号,这个停止位可以约定持续1位、1.5位或2位的时间宽度。
至此一个字符传送完毕,线路又进入空闲,持续为“1”。
经过一段随机的时间后,下一个字符开始传送才又发出起始位。
每一个数据位的宽度等于传送波特率的倒数。
微机异步串行通信中,常用的波特率为50,95,110,150,300,600,1200,2400,4800,9600等。
接收方按约定的格式接收数据,并进行检查,可以查出以下三种错误:
1)奇偶错:
在约定奇偶检查的情况下,接收到的字符奇偶状态和约定不符。
2)帧格式错:
一个字符从起始位到停止位的总位数不对。
3)溢出错:
若先接收的字符尚未被微机读取,后面的字符又传送过来,则产生溢出错。
每一种错误都会给出相应的出错信息,提示用户处理。
2.串行接口的物理层标准
六、实验步骤
1.新建工程,将“Exp2ARM串口实验”中的文件添加到工程中,这些是启动时所需
要的文件。
2.定义与UART有关的各个寄存器地址和一些特殊的位命令。
3.编写串口驱动函数(MyUart.c)
4.在主函数中实现将从串口0接收到的数据发送到串口0(Main.c):
实验三ARM的A/D转换实验
一、实验目的
1.熟悉ARM本身自带的八路十位A/D控制器及相应寄存器。
2.编程实现ARM系统的A/D功能。
3.掌握带有A/D的CPU编程实现A/D功能的主要方法。
二、实验内容
学习A/D接口原理,了解实现A/D系统对于系统的软件和硬件要求。
阅读ARM芯片文档,掌握ARM的A/D相关寄存器的功能,熟悉ARM系统硬件的A/D相关接口。
利用外部模拟信号编程实现ARM循环采集全部前4路通道,并且在超级终端上显示。
三、预备知识
1、用ARMSDT2.5或ADS1.2集成开发环境,编写和调试程序的基本过程。
2、ARM应用程序的框架结构。
3、能够自己完成在LCD上显示指定参量。
四、实验设备及工具
硬件:
ARM嵌入式开发平台、用于ARM7TDMI的JTAG仿真器、PC机Pentium100以上、模拟电压信号源。
软件:
PC机操作系统win98、Win2000或WinXP、ARMSDT2.51或ADS1.2集成开发环境、仿真器驱动程序、超级终端通讯程序
1.A/D转换器
A/D转换器是模拟信号源和CPU之间联系的接口,它的任务是将连续变化的模拟信号
转换为数字信号,以便计算机和数字系统进行处理、存储、控制和显示。
在工业控制和数据
采集及许多其他领域中,A/D转换是不可缺少的。
A/D转换器有以下类型:
逐位比较型、积分型、计数型、并行比较型、电压-频率型,
主要应根据使用场合的具体要求,按照转换速度、精度、价格、功能以及接口条件等因素来
决定选择何种类型。
3.ARM自带的十位A/D转换器
ARMS3C440BX芯片自带一个8路10位A/D转换器,该转换器可以通过软件设置为Sleep摸式,可以节电减少功率损失,最大转换率为500K,非线性度为正负1位,其转换时间可以通过下式计算:
如果系统时钟为66MHz,比例值为9,则为66MHz/2(9+1)/16(完成转换至少需要16个时钟周期)=205.25KHz(相当于4.85us)ARM芯片与A/D功能有关的引脚为以下几个,其中AIN[7:
0]为8路模拟采集通道,AREFT为参考正电压,AREFB为参考负电压,AVCOM为模拟共电压。
4.AD转换器在开发平台的接法如下:
即前四路通过分压电位器接到2.5v电源上。
六、实验步骤
1.新建工程,将“Exp5ARMA/D接口实验”种的文件添加到工程。
2.编写获取转换结果函数(main.c)3.主函数(main.c)
实验四GUI绘图实验
一、实验目的
学习使用嵌入式系统绘图的API函数。
理解绘图设备上下文(DC)在多任务操作系统中的作用。
会使用绘图设备上下文(DC)在屏幕上绘制一个圆角矩形和一个圆。
了解绘制动画防止闪烁的基本原理,可以实现无闪烁的动画。
二、实验内容
本次实验通过使用嵌入式系统的绘图API函数,首先,在屏幕上绘制一个圆角矩形和一个整圆。
然后,再在屏幕上无闪烁的绘制一个移动的正弦波。
三、预备知识
1、用ARMSDT2.5或ADS1.2集成开发环境,编写和调试程序的基本过程。
2、基于uCOS-II操作系统的应用程序的框架结构。
四、实验设备及工具(包括软件调试工具)
硬件:
ARM嵌入式开发平台、用于ARM7TDMI的JTAG仿真器、PC机Pentium100以上。
软件:
PC机操作系统win98、Win2000或WinXP、ARMSDT2.51或ADS1.2集成开发环境、仿真器驱动程序、超级终端通讯程序
五、实验原理
请查阅附录API函数,在Display.h中定义了和绘图显示有关的数据类型和函数原型。
在uCOS-II系统环境下,绘图必须通过使用绘图设备上下文(DC)来实现。
绘图设备上下文(DC)中包括了与绘图相关的信息,比如:
画笔的宽度、绘图的原点等等。
这样,在多任务系统中,不同的任务通过不同的绘图设备上下文(DC)绘图才不会互相影响。
与绘图设备上下文(DC)有关的函数有:
initOSDC()用来初始化系统的DC,为DC动态内存开辟空间;CreateDC()和DestoryDC(PDCpdc)分别用来创建和删除DC,前者返回所创建的DC指针,后者则释放DC的内存空间。
和绘图有关的函数有TextOut(),LineTo(),FillRect(),Circle(),ShowBmp()等常见的图形函数,用户可以查看附录API函数显示部分,尝试使用这些函数。
在uCOS-II操作系统中,液晶显示屏的刷新是通过Lcd_Fresh_Task任务完成的,该任务是在系统附加任务初始化函数OSAddTask_Init()中定义的,该函数开辟了LCD刷新任务,触摸屏任务,键盘任务等。
绘图首先是在绘图缓冲区中完成的,然后系统自动(也可以通过设置绘图设备上下文参数,不让系统自动刷新)向Lcd_Fresh_Task发送更新消息。
其流程图如图所示:
六、实验步骤
1、新建工程,将“Exp14绘图的API函数”中的文件加入工程。
2、编辑Main.c文件,在Main_Task任务中加入代码。
使用操作系统的绘图API函数,
绘制出如图所示的图形。
3、用ARMSDT2.5或ADS1.2编译、下载并调试上述程序,检查运行结果。
4、在屏幕上无闪烁的绘制一个移动的正弦波。
5、用ARMSDT2.5或ADS1.2编译、下载并调试上述程序,检查运行结果。
6、生成发行版本的.bin文件,通过USB下载到嵌入式开发板中,运行并检查输出结果。
实验六文件操作
一、实验目的
学习使用文件相关的API函数,了解在uCOS-II操作系统上扩展文件系统的情况。
二、实验内容
通过使用开发平台提供的API函数,打开一个保存在FLASH海量存储器中的英文文本文件,将其文件内容输出显示在液晶屏上。
三、预备知识
1、用ARMSDT2.5或ADS1.2集成开发环境,编写和调试程序的基本过程。
2、基于uCOS-II操作系统的应用程序的框架结构。
3、操作系统原理中有关文件系统的知识,了解文本文件以及字符串的处理方法。
4、使用LCD_printf向液晶屏输出字符。
四、实验设备及工具(包括软件调试工具)
硬件:
ARM嵌入式开发平台、用于ARM7TDMI的JTAG仿真器、PC机Pentium100以上。
软件:
PC机操作系统win98、Win2000或WinXP、ARMSDT2.51或ADS1.2集成开发环境、仿真器驱动程序、超级终端通讯程序
五、实验原理
uCOS-II操作系统本身并没有文件系统,不支持文件相关的管理功能。
在将uCOS-II操作系统移植到ARM嵌入式开发平台时参考FAT16为该系统扩展了一个简单的文件系统,从而使该操作系统功能更强大,也符合实际嵌入式产品开发的需要。
开发平台的硬件中有一片容量至少16M的NANDFLASH存储芯片作为嵌入式设备的固态数据存储器,或称为电子硬盘。
该存储器由文件系统管理,在文件系统的功能函数与FLASH芯片之间有相关驱动程序实现高层系统功能和底层具体硬件的数据交换。
嵌入式系统经常使用的存储介质FLASH芯片具有和磁盘完全不同的结构特点,开发平台上的K9F2808U0A芯片具有1024个Block,每个Block有32个Page,每个Page有512+16=528个Byte。
这种芯片的读写操作具有以下特点:
1)必须以Page为单位进行读写;
2)写之前必须先擦除原有内容;
3)擦除操作必须对Block进行,即一次至少擦除一个Block的内容。
另外可以用OpenOSFile()函数以指定模式打开文件;用ReadOSFile()函数读取已打开文件数据到指定缓冲区;用WriteOSFile()函数将指定缓冲区的数据写入到文件;用LineReadOSFile()函数读取文本文件的一行字符;用CloseOSFile()函数关闭文件,释放文件缓冲区;用SeekOSFile()函数定位文件指针;用DeleteOSFile()函数删除指定文件。
六、实验步骤
1、进入嵌入式开发平台的BIOS,连接USB电缆并激活U盘,在PC机上向开发平台
的FLASH存储器复制一个小体积文本文件。
2、新建工程,将“Exp16文件的使用”中的文件加入工程。
3、打开Main.c文件,编辑Main_Task任务中的代码,打开上述的文本文件,逐行读取文件,并显示在液晶屏上。
具体的流程如图所示:
4、用ARMSDT2.5或ADS1.2编译、下载并调试上述程序,检查运行结果。
5、生成发行版本的.bin文件,通过USB下载到嵌入式开发板中,运行并检查输出结果。
实验八UDP通讯实验
一、实验目的
1.学习UDP通讯原理。
2.掌握Socket编程方法。
二、实验内容
编程实现嵌入式开发平台和计算机之间的UDP通讯。
通过触摸屏进行画图,使其在液晶屏上显示,同时通过网络传输数据,使其在计算机屏幕上显示;由计算机控制清除液晶屏上的图形。
三、预备知识
1.用ARMSDT2.5或ADS1.2集成开发环境,编写和调试程序的基本过程。
2.基于uCOS-II操作系统的应用程序的框架结构。
3.系统消息循环和触摸屏消息的处理。
4.绘图API函数的使用
4.UDP通信原理和网络相关知识。
四、实验设备及工具
硬件:
ARM嵌入式开发平台、用于ARM7TDMI的JTAG仿真器、PC机Pentium100以上、交叉序网线。
软件:
PC机操作系统win98、Win2000或WinXP、ARMSDT2.51或ADS1.2集成开发环境、仿真器驱动程序、超级终端通讯程序。
五、实验原理及说明
1.UDP协议简介
1)UDP协议简介
UDP协议是英文UserDatagramProtocol的缩写,即用户数据报协议,主要用来支持那些需要在计算机之间传输数据的网络应用。
包括网络视频会议系统在内的众多客户/服务器模式的网络应用都需要使用UDP协议。
UDP协议从问世至今已经被使用了很多年,虽然其最初的光彩已经被一些类似协议所掩盖,但即使是在今天,UDP仍然不失为一项非常实用和可行的网络传输层协议。
2)UDP和TCP协议的主要区别
UDP和TCP协议的主要区别是两者在如何实现信息的可靠传递方面不同。
TCP协议中包含了专门的传递保证机制,当数据接收方收到发送方传来的信息时,会自动向发送方发出确认消息;发送方只有在接收到该确认消息之后才继续传送其它信息,否则将一直等待直到收到确认信息为止。
3)UDP协议的应用
也许有的读者会问,既然UDP是一种不可靠的网络协议,那么还有什么使用价值或必要呢?
其实不然,在有些情况下UDP协议可能会变得非常有用。
因为UDP具有TCP望尘莫及的速度优势。
虽然TCP协议中植入了各种安全保障功能,但是在实际执行的过程中会占用大量的系统开销,无疑使速度受到严重的影响。
反观UDP由于排除了信息可靠传递机制,将安全和排序等功能移交给上层应用来完成,极大得降低了执行时间,使速度得到了保证。
2.SOCKET简介
1)什么是Socket
Socket接口是TCP/IP网络的API,Socket接口定义了许多函数或例程,程序员可以用它们来开发TCP/IP网络上的应用程序。
要学Internet上的TCP/IP网络编程,必须理解Socket接口。
2)Socket建立
为了建立Socket,程序可以调用Socket函数,该函数返回一个类似于文件描述符的句柄。
socket函数原型为:
intsocket(intdomain,inttype,intprotocol);
3)Socket配置
通过socket调用返回一个socket描述符后,在使用socket进行网络传输以前,必须配置该socket。
面向连接的socket客户端通过调用Connect函数在socket数据结构中保存本地和远端信息。
无连接socket的客户端和服务端以及面向连接socket的服务端通过调用bind函数来配置本地信息。
4)连接建立
面向连接的客户程序使用Connect函数来配置socket并与远端服务器建立一个TCP连接,其函数原型为:
intconnect(intsockfd,structsockaddr*serv_addr,intaddrlen);
5)数据传输
Send()和recv()这两个函数用于面向连接的socket上进行数据传输。
Send()函数原型为:
intsend(intsockfd,constvoid*msg,intlen,intflags);
6)结束传输
当所有的数据操作结束以后,你可以调用close()函数来释放该socket,从而停止在该socket上的任何数据操作:
close(sockfd);
六、实验步骤
1.新建工程,将“Exp20UDP通讯实验”中的文件加入工程。
2.在main.c文件中编辑初始化网络函数。
3.定义计算机端套接字,全局变量。
structsockaddr_inservaddr;
4.编写Main_Task任务及消息循环主要负责响应触摸屏消息,在屏幕上画图,然后将数据传输到计算机上。
5.编写Receive_Task任务主要负责接收计算机发出的清屏控制命令,来执行清屏操作。
同时在计算机端设置开发平台IP时负责接收数据包来获得计算机端IP。
6.用ARMSDT2.5或ADS1.2编译、下
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 嵌入式 实验 报告
![提示](https://static.bdocx.com/images/bang_tan.gif)