版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
应用程序设计实验第1页,共41页,2023年,2月20日,星期六串口通信实验【实验目的】1.通过实验了解Linux系统中S3C2410串行口功能单元;2.通过实验了解S3C2410上Linux的串行通讯。【实验设备】
硬件:EDUKIT---III实验平台,S3C2410核心子板,EmbestJTAG仿真器套件,PC机。软件:EmbestIDE集成开发环境,CygwinUnix模拟平台,arm-linux-gcc编译工具链,WindowsXP操作系统,EmbestOnlineFlashProgrammerforARM编程器。【实验内容】学习和掌握S3C2410串行通讯(UART)单元的相关寄存器功能。学习和掌握Linux的串行通讯单元的设置和基本操作。2第2页,共41页,2023年,2月20日,星期六串口通信实验【实验原理】和所有设备一样,Linux也是通过设备文件来访问串口,即在访问时打开相应设备文件。S3C2410x处理器内部共有三个UART单元,分别都提供了Linux驱动,串行接口UART0、UART1和UART2分别对应设备文件/dev/ttyS0、/dev/ttyS1和/dev/ttyS2。1、串口操作函数open 用于打开串口设备close 用于关闭串口设备read 用于从串口设备上读取数据write 用于往串口设备上写数据ioctl 用于串口设备除读写外的控制操作3第3页,共41页,2023年,2月20日,星期六串口通信实验2、串口设置函数串口通讯里termios.h是个很重要的头文件。分别使用tcgetattr()和tcsetattr()函数可以获取核设置串口属性。
tcgetattr(int__fd,structtermios*__termios_p)tcsetattr(int__fd,int__optional_actions,__conststructtermios*__termios_p)其中termios是结构termios形式的数据结构,用于存放串口属性:structtermios{tcflag_tc_iflag; /* 输入模式标志*/tcflag_tc_oflag; /* 输出模式标志*/tcflag_tc_cflag; /* 控制模式标志*/tcflag_tc_lflag; /* 本地模式标志*/cc_tc_line;/*linediscipline*/cc_tc_cc[NCCS]; /* 控制特性*/speed_tc_ispeed; /* 输入速度*/speed_tc_ospeed; /* 输出速度*/}4第4页,共41页,2023年,2月20日,星期六串口通信实验对串口属性的设置主要是对c_cflag参数的不同位进行与或操作。波特率设置使用函数cfsetispeed核cfsetospeed,这两个函数分别设置入口端和出口端的速率,它们也是通过改变structtermios结构实现。
cfsetispeed(structtermios*__termios_p,speed_t__speed)cfsetospeed(structtermios*__termios_p,speed_t__speed)设置波特率SerialPara.c_cflag|=Baud5第5页,共41页,2023年,2月20日,星期六串口通信实验设置数据流控制
termios.c_cflag&=~CRTSCTS//不使用流控termios.c_cflag|=CRTSCTS//使用硬件流控termios.c_cflag|=IXON|IXOFF|IXANY//使用软件流控设置数据位termios.c_cflag&=~CSIZE//无数据位termios.c_cflag|=CS8//8位数据位termios.c_cflag|=CS7//7位数据位......设置奇偶校验位termios.c_cflag&=~PARENB//无校验位(关奇偶校验)termios.c_cflag|=PARENB//打开奇偶校验termios.c_cflag|=PARODD//奇校验位termios.c_cflag|=PARENB//打开奇偶校验termios.c_cflag&=~PARODD//偶校验位(关PARODD)6第6页,共41页,2023年,2月20日,星期六串口通信实验【实验步骤】1. 准备实验环境使用EduKit2410目标板附带的串口线连接目标板上UART0和PC机串口COM1.使用EduKit2410目标板附带的交叉网线连接目标板NET1和PC机网络接口。2. 串口/网络设置在PC机上运行Windows附件中自带的超级终端串口通信程序(波特率115200、1位停止位、无校验位、无硬件流控制);或者使用其它串口通信程序。运行TFTP服务器程序tftpd32.exe,进行各种工作状态、权限以及本地tftp工作目录的设置,默认状态下可以直接进行工作,本地tftp工作目录即当前目录。可通过点击Settings按钮修改主目录(这里设为/home/app)7第7页,共41页,2023年,2月20日,星期六3.实验操作过程编译应用程序
8第8页,共41页,2023年,2月20日,星期六1.启动PC机上超级终端串口通信程序(串口线连接目标板上的UART0和PC机串口COM1)2.ViVi,linux,root.cramfs分别烧录在1-5,6-17,18---35扇区(若已烧录好,不用再烧)3.再加电重新启动目标板,可以看到有cramfs文件系统的linux内核正常运行.然后进入/var/目录,在PC机上运行TFTP服务器,选择工作目录为/home/app.下载测试程序,修改文件属性:9第9页,共41页,2023年,2月20日,星期六串口通信实验执行下载到Linux系统的test-uart测试程序,通过串口输入字符,观察返回结果
(ch=你输入的字符)10第10页,共41页,2023年,2月20日,星期六第8章应用程序设计实验---2---IIC总线接口实验11第11页,共41页,2023年,2月20日,星期六IIC总线接口实验【实验目的】1. 掌握IIC串行数据通信协议;2. 掌握S3C2410处理器的IIC总线接口控制器的使用;3. 通过实验初步了解LinuxIIC接口驱动程序设计。【实验设备】
硬件:EDUKIT---III实验平台,S3C2410核心子板,EmbestJTAG仿真器套件,PC机。软件:EmbestIDE集成开发环境,CygwinUnix模拟平台,arm-linux-gcc编译工具链,WindowsXP操作系统,EmbestOnlineFlashProgrammerforARM编程器。【实验内容】编写S3C2410IIC总线接口的Linux算法驱动程序,并编译进Linux内核,为EEPROM,8LED和键盘实验作准备12第12页,共41页,2023年,2月20日,星期六IIC总线接口实验【实验原理】IIC总线为同步串行数据传输总线,由两根线组成,一根串行数据线(SDA)和一根串行时钟线(SCL)。其标准模式总线传输位速率为0~100kb/s,增强模式将总线传输位速率增加到4倍,可达400kb/s现最高已达4Mb/s,并且向下兼容。IIC总线驱动能力为400pF(最大电容值),整个IIC系统的总线电容不可超过此值。IIC总线可构成多主和主从系统。在多主系统结构中,系统通过硬件或软件仲裁获得总线控制使用权。应用系统中IIC总线多采用主从结构,即总线上只有一个主控节点,总线上的其它设备都作为从设备。IIC总线上的设备寻址由器件地址接线决定,与总线相连的每个器件都对应一个特定的地址,采用软件寻址方式,并且通过访问地址最低位来控制读写方向。1.IIC数据传输格式(书P236)2.S3C2410处理器IIC接口(书P237)13第13页,共41页,2023年,2月20日,星期六IIC总线接口实验
IIC驱动程序设计在kernel/drivers/i2c 的驱动程序目录下,已经有了一些IIC的驱动程序,其中包括LinuxIIC的字符设备驱动程序(i2c-dev.c)和IIC主驱动程序(i2c-core.c)。分析一下i2c-dev.c和i2c-core.c源程序发现,i2c-dev.c已实现了字符设备系统调用的过程和IIC适配器的管理,i2c-core.c却实现了IIC接口操作的抽象层。分析其他更底层的驱动程序,发现驱动程序的一般调用过程为:系统调用IIC设备驱动程序IIC驱动程序适配管理器IIC算法驱动程序在IIC驱动程序目录下,没有对应S3C2410IIC总线接口的驱动程序,因此我们需要为S3C2410IIC总线接口编写专用的算法驱动程序,以下内容一步一步来进行介绍:
(书P240—P251)14第14页,共41页,2023年,2月20日,星期六IIC总线接口实验
IIC驱动程序配置与编译编写完s3c2410IIC总线接口算法驱动程序后,头文件源程序文件分别保存为i2c-algo-s3c2410.h和i2c-algo-s3c2410.c,放在$WORKDIR/kernel/dirvers/i2c目录下(已经通过的源代码程序存放于dirvers/0602_driver-i2c)。要编译进Linux内核,还要对配置文件和Makefile文件脚本进行修改。1、修改内核i2c驱动配置文件打开$WORKDIR/kernel/drivers/i2c/config.in脚本文件,编辑添加下面几行:15第15页,共41页,2023年,2月20日,星期六IIC总线接口实验dep_tristate'I2Cdeviceinterface'CONFIG_I2C_CHARDEV$CONFIG_I2C<--这一句后插入以下行:
if["$CONFIG_ARCH_S3C2410"="y"];thendep_tristate'SamsungS3C2410I2CAlgorithm'CONFIG_I2C_S3C2410_ALGO$CONFIG_I2C_CHARDEV$CONFIG_I2Cif["$CONFIG_I2C_S3C2410_ALGO"!="n"];thendep_tristate'SamsungS3C2410I2CAdapter'CONFIG_I2C_S3C2410_ADAP$CONFIG_I2C_S3C2410_ALGOfifi...16第16页,共41页,2023年,2月20日,星期六IIC总线接口实验2、修改Makefile文件打开$WORKDIR/kernel/drivers/i2c/Makefile文件,在适当位置编辑添加下面一行,使用编译包括IIC驱动程序:obj-$(CONFIG_I2C)+=i2c-core.oobj-$(CONFIG_I2C_CHARDEV)+=i2c-dev.o<--这一句后编辑添加以下1行:
obj-$(CONFIG_I2C_S3C2410_ALGO)+=i2c-algo-s3c2410.o3、修改$WORKDIR/kernel/Makefile文件在适当位置(在有“DRIVERS-”开始行的附近)添加下面一行加入i2c设备,使内核启动时检查需要不需要加载i2c驱动程序:DRIVERS-$(CONFIG_I2C)+=drivers/i2c/i2c.o这样,如果在内核配置中选择了chardevices->I2Csupport->I2Csupport->I2Cdeviceinterface->SamsungS3C2410I2CAlgorithm均选择y选项(因为算法程序中同时提供适配器程序,所以SamsungS3C2410I2CAdapter选项可以不选);这样,i2c驱动将会被编译进内核;
17第17页,共41页,2023年,2月20日,星期六IIC总线接口实验【实验步骤】1. 准备实验环境使用EduKit2410目标板附带的串口线连接目标板上UART0和PC机串口COM1.2. 串口/网络设置在PC机上运行Windows附件中自带的超级终端串口通信程序(波特率115200、1位停止位、无校验位、无硬件流控制);或者使用其它串口通信程序。18第18页,共41页,2023年,2月20日,星期六3.实验操作过程复制i2c-algo-s3c2410.c/h到../i2c/下19第19页,共41页,2023年,2月20日,星期六修改内核i2c驱动配置文件config.in(注意标记位置)$WORKDIR\kernel\drivers\i2c\config.in20第20页,共41页,2023年,2月20日,星期六修改$WORKDIR/kernel/drivers/i2c/Makefile文件21第21页,共41页,2023年,2月20日,星期六修改$WORKDIR/kernel/Makefile文件22第22页,共41页,2023年,2月20日,星期六Makexconfig23第23页,共41页,2023年,2月20日,星期六设置24第24页,共41页,2023年,2月20日,星期六25第25页,共41页,2023年,2月20日,星期六编译进内核26第26页,共41页,2023年,2月20日,星期六1.启动PC机上超级终端串口通信程序(串口线连接目标板上的UART0和PC机串口COM1)2.ViVi,linux,分别烧录在1-5,6-17扇区3.再加电重新启动目标板,可以看到linux内核正常运行.然后进入/dev/目录,查看IIC接口驱动程序27第27页,共41页,2023年,2月20日,星期六第8章应用程序设计实验---3---网络应用程序实验28第28页,共41页,2023年,2月20日,星期六网络应用程序实验【实验目的】掌握Linux下的网络接口编程【实验设备】硬件:硬件:EduKit2410系统,EmbestJTAG仿真器,PC机;软件:Windows下的cygwin开发环境。【实验内容】基于Linux下的网络接口编写应用程序,实现一个简单的客户机/服务器应用,服务器端程序在Linux下运行,客户机程序在PC机上运行,服务器程序接收客户机发送过来的字符串并回传给客户端,同时将接收到的字符串打印到串口终端。在Linux系统下映射主机目录进行程序的调试。29第29页,共41页,2023年,2月20日,星期六网络应用程序实验【实验原理】网络接口应用程序编写在TCP/IP网络应用中,通信的两个进程间相互作用的主要模式是客户/服务器模式(Client/Servermodel),即客户向服务器发出服务请求,服务器接收到请求后,提供相应的服务,这种方式隐含了在建立客户机/服务器间通信的非对称性。客户/服务器模型工作时要求有一套为客户机和服务器所共识的协议,保证服务能够被提供(或被接收),在协议中,有主从机之分。通常服务器在某个地址监听客户的请求,一旦客户提出连接请求,服务器将从休眠状态被唤醒,为客户提供服务。当服务器和应用程序需要和其他进程通信时就会创建套接口。套接口(socket)使用一般分为分配套接口和初始化、完成连接的系统调用、传送数据以及关闭等几个步骤。分配套接口和初始化套接口是数据通信通道,在两个进程通过套接口建立连接后,会使用套接口描述字来读写数据。对套接口来说,通常使用的协议和套接口类型是AF_INET(ARPA网际协议)以及SOCK_STREAM类型。流式套接字(SOCK_STREAM)提供了一个面向连接、可靠的数据传输服务,数据无差错、无重复地发送,且按发送顺序接收。内设流量控制,避免数据流超限;数据被看作是字节流,无长度限制。文件传送协议(FTP)即使用流式套接字。当一个套接字用socket创建后,存在一个名字空间(地址族),但它没有被命名。bind将套接字地址(包括本地主机地址和本地端口地址)与所创建的套接字号联系起来。地址在建立套接字通信过程中起着重要作用。30第30页,共41页,2023年,2月20日,星期六网络应用程序实验完成连接的系统调用当创建了套接口并且使用bind把它和一个进程关联起来后,服务器类型的进程可以调用listen函数来监听接入的套接口连接。当一个接入信号抵达监听套接口,会被排入队列直到服务器程序准备好处理为止。当服务器准备处理一个新的连接时,使用系统调用accept从套接口的队列中检索一个挂起的信号。accept会返回一个新的套接口描述符,用来进行客户和服务器的通信,原来的套接口继续监听新的接入信号。客户则使用系统调用connect来把本地套接口与远程服务联系起来,该调用的典型用法是为运行在远程计算机上的服务器进程指定本机的信息。传送数据在传送数据阶段,recv用来接收从已经连接的套接口传来的信息,这个套接口已经通过调用connect和另一个套接口连接起来了。系统调用send用来通过套接口向其他程序传递数据,客户端和服务器分别使用send来向远程服务进程传送服务请求和向客户端返回数据。关闭当用完套接口需要释放时,通过使用系统调用close来关闭套接口描述符即可。这里没有对以上系统调用做详细的使用说明,具体的参数以及用法请查阅相关书籍和资料
31第31页,共41页,2023年,2月20日,星期六网络应用程序实验【实验步骤】1. 准备实验环境使用EduKit2410目标板附带的串口线连接目标板上UART0和PC机串口COM1.使用EduKit2410目标板附带的交叉网线连接目标板NET1和PC机网络接口.2. 串口/网络设置在PC机上运行Windows附件中自带的超级终端串口通信程序(波特率115200、1位停止位、无校验位、无硬件流控制);或者使用其它串口通信程序。在PC机上运行TFTP服务器tftpd32.exe选择工作目录为/home/app。。32第32页,共41页,2023年,2月20日,星期六3. 实验操作过程1)运行cygwin.进入网络服务实验程序所在目录。执行以下命令编译server测试程序:$source/tmp/edukit-2410/set_env_linux.sh
//Linux
编译环境变量设置$cd$WORKDIR/examples/0302_test-net/$makeclean$makeinstall2)下载测试程序.同时拷贝执行文件到调试目录,编译好测试程序后,启动目标板的Linux操作系统,通过以太网使用tftp下载刚编译好的运行于开发板Linux的server测试程序,保存到/var目录下。在Linux的输入终端里输入如下命令。#cd/var#tftp-g0-r./server-l./server3)修改文件属性.修改测试程序的属性,使其拥有可执行属性,执行以下命令:#chmod+xserver33第33页,共41页,2023年,2月20日,星期六4. 观察实验结果1在Linux终端窗口执行以下命令运行服务器程序:#./serverserverlistening…waitforconnect…命令执行后,出现“serverlistening…waitforconnect…”表示服务器程序进入监听状态,等待客户端程序的连接请求。2) 在PC机cygwin上运行客户端程序,执行以下命令,连接服务器:$./client.exedefaultlocalhost:<default_ip> ,oryoucaninputoneafterthecommand.Sendtoserver…Defaultteststring.Responsefromserver…Defaultteststring.以上为客户端连接服务器后的显示。你可以使用默认服务器ip,也可以自己输入“./client(pc_ip)”。客户端程序连接服务器后,首先发送字符串“Defaultteststring.”到服务器,服务器接受到并打印到串口,再将字符串回传给客户端,客户端接受到后再打印到显示终端。
34第34页,共41页,2023年,2月20日,星期六实验操作过程编译测验程序
35第35页,共41页,2023年,2月20日,星期六1.串口线连接目标板上的UART0和PC机串口COM12.启动PC机上超级终端串口通信程序,运行TFTP服务器程序tftpd32.exe.3.ViVi烧录在1—
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 浙江经贸职业技术学院《与实践》2023-2024学年第一学期期末试卷
- 中国民航大学《建筑概论B》2023-2024学年第一学期期末试卷
- 小学学校微信公众号管理细则
- 浙江财经大学《现代商务管理学》2023-2024学年第一学期期末试卷
- 缺陷管理与环境影响评估报告
- 新苏教版一年级数学下册第六单元《简单的数量关系(一)》教案(共2课时)
- 大学生学生会主席离职工作总结报告演讲稿王召鹏的
- 二零二五版建筑工程防水工程质量检测协议2篇
- 重庆市西南大学附属中学2024-2025学年高一上学期定时检测(二)物理试题(含答案)
- 2025届湖南省衡阳县第四中学高三上学期期末考试历史试题(含答案)
- 园林景观工程施工组织设计-投标书范本
- 护理伦理学(第二版)高职PPT完整全套教学课件
- GB/T 25919.1-2010Modbus测试规范第1部分:Modbus串行链路一致性测试规范
- GB/T 22484-2008城市公共汽电车客运服务
- GB/T 14040-2007预应力混凝土空心板
- 带状疱疹护理查房课件整理
- 奥氏体型不锈钢-敏化处理
- 交通信号控制系统检验批质量验收记录表
- 弱电施工验收表模板
- 探究基坑PC工法组合钢管桩关键施工技术
- 国名、语言、人民、首都英文-及各地区国家英文名
评论
0/150
提交评论