嵌入式应用开发实验指导书 1.docx

上传人:b****4 文档编号:24473138 上传时间:2023-05-27 格式:DOCX 页数:35 大小:474.17KB
下载 相关 举报
嵌入式应用开发实验指导书 1.docx_第1页
第1页 / 共35页
嵌入式应用开发实验指导书 1.docx_第2页
第2页 / 共35页
嵌入式应用开发实验指导书 1.docx_第3页
第3页 / 共35页
嵌入式应用开发实验指导书 1.docx_第4页
第4页 / 共35页
嵌入式应用开发实验指导书 1.docx_第5页
第5页 / 共35页
点击查看更多>>
下载资源
资源描述

嵌入式应用开发实验指导书 1.docx

《嵌入式应用开发实验指导书 1.docx》由会员分享,可在线阅读,更多相关《嵌入式应用开发实验指导书 1.docx(35页珍藏版)》请在冰豆网上搜索。

嵌入式应用开发实验指导书 1.docx

嵌入式应用开发实验指导书1

实验一基本接口实验

(一)

[实验设备]

1.JXARM9-2410教学实验箱

2.ADT1000仿真器和ADTIDE集成开发环境

3.串口、并口连接线

[实验目的]

1.掌握ARM的串行口工作原理,编程实现ARM的UART通讯;

2.掌握嵌入式系统中断的处理流程和ARM中断编程;

3.在ADT环境下如何建立工程,对工程进行正确的设置。

添加相应文件(汇编、脚本、.c源文件等)

[实验内容一]

实现查询方式串口的收发功能。

接收来自串口(通过超级终端)的字符并将接收到的字符发送到超级终端。

[预备知识]

1.了解ADT集成开发环境的基本功能

2.学习串口通讯的基本知识

3.熟悉S3C2410串口有关的寄存器

[基础知识]

串行通信接口电路组成

1.可编程的串行接口芯片

2.波特率发生器

3.EIA与TTL电平转换器

4.地址译码电路

通信协议:

1.异步协议

2.同步协议

异步串行通讯

异步串行方式是将传输数据的每个字符一位接一位(例如先低位、后高位)地传送。

数据的各不同位可以分时使用同一传输通道,因此串行I/O可以减少信号连线,最少用一对线即可进行。

接收方对于同一根线上一连串的数字信号,首先要分割成位,再按位组成字符。

为了恢复发送的信息,双方必须协调工作。

在微型计算机中大量使用异步串行I/O方式,双方使用各自的时钟信号,而且允许时钟频率有一定误差,因此实现较容易。

但是由于每个字符都要独立确定起始和结束(即每个字符都要重新同步),字符和字符间还可能有长度不定的空闲时间,因此效率较低。

异步串行通信中的字符传送格式

 

❑开始前,线路处于空闲状态,送出连续“1”。

传送开始时首先发一个“0”

作为起始位,然后出现在通信线上的是字符的二进制编码数据。

每个字符的数据位长可以约定为5位、6位、7位或8位,一般采用ASCII编码。

后面是奇偶校验位,根据约定,用奇偶校验位将所传字符中为“1”的位数凑成奇数个或偶数个。

也可以约定不要奇偶校验,这样就取消奇偶校验位。

最后是表示停止位的“1”信号,这个停止位可以约定持续1位、1.5位或2位的时间宽度。

至此一个字符传送完毕,线路又进入空闲,持续为“1”。

经过一段随机的时间后,下一个字符开始传送才又发出起始位。

每一个数据位的宽度等于传送波特率的倒数。

微机异步串行通信中,常用的波特率为110,150,300,600,1200,2400,4800,9600等。

DB-25DB-9引脚定义

DB-25DB-9引脚说明

 

RS-232C接口通信的两种基本连接方式

信号电平规定

1.EIA电平:

双极性信号逻辑电平,它是一套负逻辑定义

2.-3V到-25V之间的电平表示逻辑“1”

3.+3V到+25V之间的电平表示逻辑“0”

4.TTL电平:

计算机内部(S3C2410)使用TTL电平

5.电平转换电路:

常用专门的RS-232接口芯片,如SP3232、SP3220等,在TTL电平和EIA电平之间实现相互转换。

S3C2410异步串行口控制器

1.S3C2410自带三个异步串行口控制器

2.每个控制器有16字节的FIFO(先入先出寄存器)

3.最大波特率115.2K

4.每个UART有7种状态:

溢出错误,校验错误,帧错误,暂停态,接收缓冲区准备好,发送缓冲区空,发送移位缓冲器空,这些状态可以由相应的UTRSTATn或UERSTATn寄存器表示,并且与发送接收缓冲区相对应的有错误缓冲区

5.波特率的大小可以通过设置波特率寄存器(UBRDIVn)控制,计算公式如下:

使用PCLK时的计算公式如下:

UBRDIVn=(int)[PCLK/(波特率×16)]–1

使用UCLK时的计算公式如下:

UBRDIVn=(int)[UCLK/(波特率×16)]–1

例如:

使用PCLK,在40MHz的情况下,当波特率取115200bps时,

UBRDIVn=(int)[40000000/(115200×16)]–1=20

[实验步骤]

1、建立一个串口UART工程。

2、编写编写主函数,并保存为main.c文件,将该文件加入到工程中。

主函数中包括以下功能:

(1)串口初始化

/*配置系统时钟*/

ChangeClockDivider(1,1);//1:

2:

4

ChangeMPllValue(0xa1,0x3,0x1);//FCLK=202.8MHz

/*初始化端口*/

Port_Init();

/*初始化串口*/

Uart_Init(0,115200);

Uart_Select(0);

(2)发送数据

unsignedcharch='a';

ch=Uart_Getch();

(3)接收数据

Uart_SendByte(ch)

4、编译、下载运行程序查看程序是否正常。

实现从键盘键入字符在屏幕显示功能。

[试验内容二]

编写中断处理程序,处理外部中断。

[基础知识]

CPU与外设之间传输数据的控制方式

1、查询方式

查询方式的优点是硬件开销小,使用起来比较简单,但在此方式下,CPU要不断地查询外设的状态,当外设未准备好时,CPU就只能循环等待,不能执行其它程序,这样就浪费了CPU的大量时间,降低了CPU的利用率。

2、中断方式

当CPU进行主程序操作时,外设的数据已存入输入端口的数据寄存器;或端口的数据输出寄存器已空,由外设通过接口电路向CPU发出中断请求信号,CPU在满足一定的条件下,暂停执行当前正在执行的主程序,转入执行相应能够进行输入/输出操作的子程序,待输入/输出操作执行完毕之后CPU再返回并继续执行原来被中断的主程序。

这样CPU就避免了把大量时间耗费在等待、查询状态信号的操作上,使其工作效率得以大大地提高

3、DMA方式

当高速外设要与系统内存或者要在系统内存的不同区域之间,进行大量数据的快速传送时,查询方式和中断方式可能不能满足要求,直接存储器存取(DMA)就是为解决这个问题提出的采用DMA方式,在一定时间段内,由DMA控制器取代CPU,获得总线控制权,来实现内存与外设或者内存的不同区域之间大量数据的快速传送。

中断处理示意图

向CPU发出中断请求的设备或事件称为中断源,断点处产生中断请求,CPU执行中断流程,响应中断,并执行用户定义的中断服务子程序处理完毕,执行中断返回动作,主程序继续运行。

中断响应

中断源向CPU发出中断请求,若优先级别最高,CPU在满足一定的条件下,可以中断当前程序的运行,保护好被中断的主程序的断点及现场信息。

然后,根据中断源提供的信息,找到中断服务子程序的入口地址,转去执行新的程序段,这就是中断响应。

中断服务子程序

S3C2410的中断控制器:

1、中断源状态寄存器

该寄存器的32位中每一位对应一个中断源。

如果相应中断源产生中断请求则其对应位被置为1。

该寄存器中的位将自动由中断请求置位,而不管INTMASK寄存器中的掩码位是否有效。

另外,该寄存器不受中断控制器的优先级逻辑影响。

在中断服务程序中,该寄存器的相应位必须进行清零处理,清零的方法是将该位写入1。

2、寄存器中断模式

3、中断屏蔽寄存器

4、优先级寄存器

5、中断状态寄存器

6、中断偏移寄存器

[实验步骤]

1、建立一个中断工程。

2、编写外部中断处理程序的中断服务函数,并保存为main.c文件,将该文件加入到工程中。

3、在中断服务函数中添加代码实现如下功能:

每触发一次中断,跑马灯闪烁一次。

4、编译、下载运行程序查看程序是否正常。

[实验报告要求]

1、实验报告包括实验目的、实验内容、实验步骤、实验结果和实验小结。

2、写出在ADT环境下如何建立工程,对工程进行正确的设置步骤。

3、写出串口工程主函数源码、中断工程主函数和中断处理函数源码。

4、截图显示实验结果并说明。

 

实验二基本接口实验

(二)

[试验设备]

1.JXARM9-2410教学实验箱

2.ADT1000仿真器和ADTIDE集成开发环境

3.串口、并口连接线

[实验目的]

1.了解实时时钟在嵌入式系统中的作用,掌握实时时钟的使用;

2.了解触摸屏基本概念与原理,编程实现并掌握对触摸屏的控制;掌握S3C2410寄存器配置方法。

3.在ADT环境下如何建立工程,对工程进行正确的设置。

添加相应文件(汇编、脚本、.c源文件等)

[实验内容一]

编程实现实时时钟功能,每秒显示实时时钟、编程实现实时时钟告警功能。

[预备知识]

1、了解ADT集成开发环境的基本功能

2、学习S3C2410的实时时钟模块的使用

[基础知识]

1、实时时钟在嵌入式系统中的作用

在一个嵌入式系统中,实时时钟单元可以其提供可靠的时钟,包括时分秒和年月日;即使在系统处于关机状态下它也能够正常工作(通常采用后备电池供电),它的外围也不需要太多的辅助电路,典型的就是只需要一个高精度的晶振。

S3C2410的实时时钟单元

❑时钟数据采用BCD编码

❑能够对闰年的年月日进行自动处理

❑具有告警功能,当系统处于关机状态时,能产生告警中断;

❑具有独立的电源输入

❑提供毫秒级时钟中断,该中断可用于作为嵌入式操作系统的内核时钟

2、S3C2410的实时时钟寄存器

控制寄存器

告警控制寄存器

实时时钟计数器

告警时间寄存器

实时时钟寄存器

[实验步骤]

1、建立RTC工程,添加相应文件并修改RTC的工程设置。

2、创建main.c编写程序,并将该文件加入到工程RTC中。

3、时钟功能测试。

4、时间告警功能测试。

[实验内容二]

1.编程实现触摸屏坐标到LCD坐标的校准

2.编程实现触摸屏坐标采集以及LCD坐标的计算

[预备知识]

1.了解ADT集成开发环境的基本功能

2.学习触摸屏的原理

3.了解触摸屏与显示屏的坐标转换

[基础知识]

触摸屏的基本原理

触摸屏按其工作原理的不同分为:

电阻技术触摸屏

电阻触摸屏是与显示器表面非常配合的电阻薄膜屏,这是一种多层复合薄膜,它以一层玻璃或硬塑料平板作为基层,表面涂有一层透明氧化金属(ITO氧化铟,透明的导电电阻)导电层,上面再盖有一层外表面硬化处理、光滑防擦的塑料层、内表面也涂有一层ITO涂层、在他们之间有许多细小的(小于1/1000英寸)的透明隔离点把两层导电层隔开绝缘。

当手指触摸屏幕时,两层导电层在触摸点位置就有了接触,控制器侦测到这一接触并计算出(X,Y)的位置,再根据模拟鼠标的方式运作。

主要特点:

1.高解析度,高速传输反应

2.表面硬度处理,减少擦伤、刮伤及防化学处理

3.具有光面及雾面处理

4.一次校正,稳定性高,永不漂移

表面声波技术触摸屏

表面声波技术是利用声波在物体的表面进行传输,当有物体触摸到表面时,阻碍声波的传输,换能器侦测到这个变化,反映给计算机,进而进行鼠标的模拟。

主要特点:

1.清晰度较高,透光率好

2.高度耐久,抗刮伤性良好

3.一次校正不漂移

4.反应灵敏

缺点:

易污损,需要经常维护

电容技术触摸屏

利用人体的电流感应进行工作。

用户触摸屏幕时,由于人体电场,用户和触摸屏表面形成以一个耦合电容,对于高频电流来说,电容是直接导体,于是手指从接触点吸走一个很小的电流。

这个电流分从触摸屏的四角上的电极中流出,并且流经这四个电极的电流与手指到四角的距离成正比,控制器通过对这四个电流比例的精确计算,得出触摸点的位置。

主要特点:

1.对大多数的环境污染物有抗力

2.人体成为线路的一部分,因而漂移现象比较严重

3.带手套不起作用

4.需经常校准

5.不适用于金属机柜

6.当外界有电感和磁感的时候,会使触摸屏失灵

JXARM9-2410的触摸屏控制电路

触摸屏处理流程

1.触摸屏控制初始化,选择SeparateX/Y位置转换模式或者AutoX/Y位置转换模式;

2.设置触摸屏接口到等待中断模式;

3.如果中断产生,相应的转换(SeparateX/Y位置转换模式或者AutoX/Y位置转换模式)被激活;

4.在获取X/Y坐标值后,返回到等待中断模式。

[实验步骤]

1.建立一个touch工程。

2.创建一个touch.c并加入到工程touch中。

3.编写程序分别校正LCD左上角和右下角坐标

4.编写程序采集触摸屏坐标屏将其转换到LCD坐标并通过串口打印出来。

5.编译程序、下载运行并观察输出结果。

[实验报告要求]

1、实验报告包括实验目的、实验内容、实验步骤、实验结果和实验小结。

2、写出在ADT环境下如何建立工程,对工程进行正确的设置步骤。

3、写出RTC工程主函数源码、触摸屏工程主函数函数源码。

(以上两个工程会给出完整源码,要求同学们进行修改)

RTC工程修改1、告警方式;2、更新间隔时间。

触摸屏工程给出的源码有问题,请同学们修改正确。

4、截图显示实验结果并说明。

注意触摸屏工程至少截取两个结果图:

分别是程序成功运行获取定位点坐标(左上角和右下角)和程序运行中,获得任意点坐标。

 

实验三BootLoader及Linux内核加载实验

[实验目的]

1、了解BootLoader在嵌入式系统中的作用,熟悉BootLoader基本命令的用法;

2、掌握交叉编译的方法、熟悉交叉编译环境的建立和使用;

3、掌握目标机Linux操作系统的加载与启动;

4、了解Linux的启动过程,掌握目标机和开发机的挂载。

[实验内容一]

学习u-boot的基础知识和常用命令,并按照实验步骤实际操作。

[预备知识]

掌握嵌入式系统软件开发基础知识。

[试验设备]

1、硬件:

JXARM9-2410嵌入式试验箱,PC机Pentium500以上,硬盘10G以上。

2、软件:

PC机操作系统RedhatLinux9.0,Linux开发环境。

[基础知识]

1、BootLoader基本概念

2、u-boot基本程序结构

3、Linux文件系统

[实验步骤]

1、启动uboot

将串口线连接到计算机的串口和实验箱的UART0;在计算机中打开dnw串口超级终端工具,如下图所示:

然后点击“SerialPort”的“Connect”菜单项,在标题栏将提示如下图所示:

将实验箱上电,在dnw中将可以看到如下图所示界面,此界面即为uboot命令行操作界面。

后续各个步骤的操作系统引导都需要在uboot界面下进行。

5.1.Uboot基本命令实验

1)分别在u-boot中输入如下命令,并观察实验结果

JX2410#help

JX2410#flinfo

JX2410#helpflinfo

JX2410#bdinfo

2)uboot内存操作实验

在uboot中输入如下命令,以实现将0x3000000开始的0x100字节数据复制到0x3100000处。

JX2410#md30000000100

JX2410#md31000000100

JX2410#cmp.b3000000031000000100

JX2410#cp.b3000000031000000100

JX2410#cmp.b3000000031000000100

观察在输入cp.b命令前后的cmp.b命令执行结果。

在uboot中输入如下命令,以实现内存修改

JX2410#md.b3000000010

JX2410#mm300000000

JX2410#mw.b30000000ff10

JX2410#md.b3000000010

观察每次md.b命令的结果。

在uboot中输入如下命令,以实现对0x30000000起始地址1M内存区域的自动测试

JX2410#mtest30000000030100000

3)tftp程序下载和引导操作实验

在uboot中输入如下命令,实现如下功能:

将主机上的diag.bin程序通过tftp下载到0x30000000地址,并从该地址处运行diag.bin程序。

JX2410#tftp30000000diag.bin

JX2410#go30000000

4)uboot环境变量操作实验

在uboot中输入如下命令,创建一个环境变量,并运行该环境变量。

JX2410#printenv

JX2410#setenvtent‘echothisistest’

JX2410#printenv

JX2410#saveenv

JX2410#runtest

在u-boot中输入如下命令,创建一个环境变量,实验C的tftp下载功能。

JX2410#printenv

JX2410#setenvtext‘tftp30000000diag.bin;go300000000;

JX2410#printenv

JX2410#saveenv

JX2410#runtest

在uboot中输入如下命令,实现自主引导,uboot启动后自动执行上一步中创建的test环境变量。

JX2410#setenvbootcmd‘runtest’

JX2410#saveenv

JX2410#reset

[实验内容二]

1、了解Linux基础知识以及Linux的开发环境。

2、根据教学实验系统的硬件资源,配置并编译Linux内核。

3、下载并运行Linux内核,检查运行结果。

[预备知识]

1、了解Linux的一些基本操作命令以及Linux系统下用户环境的设置。

2、掌握Linux下的程序编译与交叉编译过程。

[试验设备]

1.硬件:

JXARM9-2410嵌入式试验箱,PC机Pentium500以上,硬盘10G以上。

2.软件:

PC机操作系统RedhatLinux9.0,Linux开发环境。

[实验步骤]

1、编译Linux

配置内核:

启动菜单配置工具后,选择“LoadAlternateConfigurationFile”选项,然后确认。

该选项载入jx2410的标准配置文件config-jx2410,该文件保存在/home/cvtech/jx2410/linux目录下,请不要修改这个文件。

在提示框中键入config-jx2410配置文件名,然后选择“OK”确认,将退回到主菜单。

然后按“Esc”键退出,并将提示是否保存,请选择“Yes”保存。

建立依赖关系:

编译:

2、在目标机上启动Linux内核

(1)配置主机ip为192.168.1.180。

在主机上把zImage和ramdisk.gz复制到/tftpboot目录下。

(2)运行环境变量loadlinux。

启动目标机的Linux系统。

3、挂接主机和目标机

挂载主机/tftpboot/挂接目录到目标机(JXARM9-2410试验箱)/mnt/nfs目录下,输入如下命令:

#mount192.168.1.180:

/tftpboot/挂接目录/mnt/nfs

[实验报告要求]

1、实验报告包括实验目的、实验内容、实验步骤、实验结果和实验小结。

2、写出实验内容使用的命令和结果(截图表示)。

 

实验四:

串口应用程序编写实验

[实验目的]

1.了解Linux下串行端口程序设计的基本原理。

2.掌握终端的主要属性及设置方法,熟悉终端I/O函数的使用。

3.掌握JXARM9-2410下的串口应用程序的编程方法。

[实验内容一]

1、编写serial应用程序。

2、编写Makefile文件。

3、下载并调试serial应用程序。

[预备知识]

1.C语言的基础知识。

2.程序调试的基础知识和方法。

3.Linux的基本操作。

4.掌握Linux下的程序编译与交叉编译过程。

[基础知识]

Linux操作系统从一开始就对串行口提供了很好的支持,为进行串行通信提供了大量的函数,本试验主要是为掌握在Linux中进行串行通信编程的基本方法。

1、串口编程相关头文件

#include/*标准输入输出定义*/

#include/*便准函数库定义*/

#include/*Linux标准函数定义*/

#include

#include

#include/*文件控制定义*/

#include/*PPSIX终端控制定义*/

#include/*错误号定义*/

#include/*线程库定义*/

2、打开串口

在Linux下,串口文件位于/dev下,串口1为/dev/ttyS0,串口2为/dev/ttyS1,打开串口是通过使用标准的文件打开函数操作:

Intfd;

/*以读/写方式打开串口*/

fd=open(”/dev/ttyS0”,0_RDWR);

if(-1==fd){

perror(“error“);

}

3、设置串口

最基本的设置串口包括波特率设置,效验位和停止位设置。

串口的设置structtermios结构体的成员值。

structtermio{

unsignedshortc_iflag;/*输入模式标志*/

unsignedshortc_oflag;/*输出模式标志/

unsignedshortc_cflag;/*控制模式标志*/

unsignedshortc_lflag;/*localmodeflags*/

unsignedcharc_line;/*linediscipline*/

unsignedcharc_cc[NCC];/*controlcharacters*/

};

(1)波特率设置

下面是修改波特率的代码:

structtermiosOpt;

tcgetattr(fd,&Opt);

cfsetispeed(&Opt,B19200);/*设置为192000bps*/

cfsetospeed(&Opt,B19200);

tcsetattr(fd,TCANOW,&Opt);

(2)校验位的设置

无效验8位:

Option.c_cflag&=~PARENB;

Option.c_cflag&=~CSTOPB

Option.c_cflag&=~CSIZE;

Option.c_cflag|=~CS8;

奇效验(Odd)7位:

Option.c_cflag|=~PARENB;

Option.c_cflag&=~PARODD;

Option.c_cflag&=~CSTOPB

Option.c_cflag&=~CSIZE;

Option.c_cflag|=~CS7;

偶效验(Even)7位:

Option.c_cflag&=~PARENB;

Option.c_cflag|=~PARODD;

Opti

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 教育学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1