嵌入式嵌入式应用程序开发.ppt

上传人:b****1 文档编号:1727045 上传时间:2022-10-23 格式:PPT 页数:47 大小:268KB
下载 相关 举报
嵌入式嵌入式应用程序开发.ppt_第1页
第1页 / 共47页
嵌入式嵌入式应用程序开发.ppt_第2页
第2页 / 共47页
嵌入式嵌入式应用程序开发.ppt_第3页
第3页 / 共47页
嵌入式嵌入式应用程序开发.ppt_第4页
第4页 / 共47页
嵌入式嵌入式应用程序开发.ppt_第5页
第5页 / 共47页
点击查看更多>>
下载资源
资源描述

嵌入式嵌入式应用程序开发.ppt

《嵌入式嵌入式应用程序开发.ppt》由会员分享,可在线阅读,更多相关《嵌入式嵌入式应用程序开发.ppt(47页珍藏版)》请在冰豆网上搜索。

嵌入式嵌入式应用程序开发.ppt

嵌入式应用程序开发,嵌入式网络系统开发,TCP/IP协议基础Socket网络编程接口客户端网络编程服务器网络编程,互联网的历史和发展,1971年,ARPANET,使用NCP协议(NetworkControlProgram)1973年,放弃NCP协议,研究新协议1974年,发布TCP/IP协议和网关结构1981年,TCP/IPversion4标准确定,ISO/OSI七层协议模型,TCP/IP协议族,TCP(TransmissionControlProtocol)传输控制协议,基于连接的服务UDP(UserDatagramProtocol)用户数据报协议,无连接的服务IP(InternetProtocol)Internet协议,信息传递机制,OSI模型与TCP/IP协议对比,TCP或UDP,IP和路由,网卡驱动,TelnetFTPWWW等,消息传递流,消息包的逐层递增,一些Socket编程的概念,流(Stream)连接(Connection)阻塞(Block)、非阻塞(Non-block)同步(Synchronous)、异步(asynchronous)IP地址字节顺序,IP地址,IP地址是Internet中唯一的地址标识,IP地址是一个32位长(正在扩充到128位)每个Internet包必须带有IP地址点分十进制表示法将IP地址的4个字节的数字用十进制表示并用点隔开,如:

202.112.58.200(0xCA703AC8)IP地址的分级子网掩码(SubnetMask),字节顺序,网络字节顺序(NBO,NetworkByteOrder)使用统一的字节顺序,避免兼容性问题主机字节顺序(HBO,HostByteOrder)不同的机器HBO不相同,与CPU设计有关Motorola68k系列,HBO与NBO相同Intelx86系列,HBO与NBO相反,Socket函数介绍需要用到的头文件,需要用到的头文件数据类型:

#include函数定义:

#include,BerkeleySocket常用函数列表,网络连接函数获取/设置socket的参数或信息转换函数,网络连接函数,socketbindconnectlistenacceptselectrecv,recvfromsend,sendtoclose,shutdown,获取/设置socket的参数,gethostbyaddr,gethostbynamegethostnamegetpeernamegetprotobyname,getprotobynumbergetservbyname,getservbyportgetsocknamegetsockopt,setsockoptioctl,转换函数,IP地址转换inet_addr()inet_ntoa()字节顺序转换htons()-HosttoNetworkShorthtonl()-HosttoNetworkLongntohs()-NetworktoHostShortntohl()-NetworktoHostLong,数据结构sockaddr,structsockaddrunsignedshortsa_family;/*addressfamily,AF_xxx*/charsa_data14;/*14bytesofprotocoladdress*/;此数据结构用做bind、connect、recvfrom、sendto等函数的参数,指明地址信息,数据结构:

sockaddr_in,structsockaddr_inshortintsin_family;/*Addressfamily*/unsignedshortintsin_port;/*Portnumber*/structin_addrsin_addr;/*Internetaddress*/unsignedcharsin_zero8;/*Samesizeasstructsockaddr*/;该结构与sockaddr兼容,供用户填入参数,数据结构:

in_addr,structin_addrunsignedlongs_addr;这个数据结构是由于历史原因保留下来的,主要用作与以前的格式兼容。

程序中实际只填写sockaddr_in结构,structsockaddr_inmy_addr;my_addr.sin_family=AF_INET;my_addr.sin_port=htons(3490);/*short,NBO*/my_addr.sin_addr.s_addr=inet_addr(132.241.5.10);bzero(注意:

sin_addr.s_addr填本机IP,如果此项填INADDR_ANY时,表示自动取本机IP填入该项(仅用于Server),函数简介:

socket,Socket描述符与Linux中的文件描述符类似,也是一个int型的变量函数调用:

intsocket(intdomain,inttype,intprotocol);函数返回Socket描述符,返回-1表示出错domain参数只能取AF_INET,protocol参数一般取0应用示例:

TCP:

sockfd=socket(AF_INET,SOCK_STREAM,0);UDP:

sockfd=socket(AF_INET,SOCK_DGRAM,0);,函数简介:

bind,作为Server程序,需要与一个端口绑定intbind(intsockfd,structsockaddr*my_addr,intaddrlen);bind函数返回-1表示出错,最常见的错误是该端口已经被其他程序绑定。

需要注意的一点:

在Linux系统中,1024以下的端口只有拥有root权限的程序才能绑定,函数简介:

connect,连接某个Serverintconnect(intsockfd,structsockaddr*servaddr,intaddrlen);servaddr是事先填写好的结构,Server的IP和端口都在该数据结构中指定。

函数简介:

listen,开始监听已经绑定的端口需要在此前调用bind()函数,否则由系统指定一个随机的端口intlisten(intsockfd,intqueue_length);接收队列一个新的Client的连接请求先被放在接收队列中,等待Server程序调用accept函数接受连接请求queue_length指的就是接收队列的长度也就是在Server程序调用accept函数之前最大允许的连接请求数,多余的连接请求将被拒绝,函数简介:

accept,accept()函数将响应连接请求,建立连接产生一个新的socket描述符来描述该连接这个连接用来与特定的Client交换信息intaccept(intsockfd,structsockaddr*addr,int*addrlen);addr将在函数调用后被填入连接对方的地址信息,如对方的IP、端口等。

accept缺省是阻塞函数,阻塞直到有连接请求,accept()函数应用示例,structsockaddr_intheir_addr;/*用于存储连接对方的地址信息*/intsin_size=sizeof(structsockaddr_in);(依次调用socket(),bind(),listen()等函数)new_fd=accept(sockfd,函数简介:

recv,用于TCP协议中接收信息intrecv(intsockfd,void*buf,intlen,intflags);buf,指向容纳接收信息的缓冲区的指针len,缓冲区的大小flags,接收标志函数返回实际接收的字节数,返回-1表示出错recv缺省是阻塞函数,直到接收到信息或出错,函数简介:

send,用于TCP协议中发送信息intsend(intsockfd,constvoid*msg,intlen,intflags);msg,指向待发送信息的指针len,待发送的字节数flags,发送标志函数返回已发送的字节数,返回-1表示出错send缺省是阻塞函数,直到发送完毕或出错注意:

如果函数返回值与参数len不相等,则剩余的未发送信息需要再次发送,函数简介:

close,关闭特定的socket连接调用函数:

intclose(intsockfd);关闭连接将中断对该socket的读写操作。

关闭用于listen()函数的socket将禁止其他Client的连接请求,函数简介:

shutdown,Shutdown()函数可以单方面的中断连接,即禁止某个方向的信息传递。

函数调用intshutdown(intsockfd,inthow);参数how:

0-禁止接收信息1-禁止发送信息2-接收和发送都被禁止,与close()函数效果相同返回0表示调用成功,返回-1表示出错,TCP:

可靠的网络协议,TCP相关的函数Server的例子Client的例子Server-Client结构图TCP编程的适用范围,TCP,C/S结构图:

Server程序的作用,程序初始化持续监听一个固定的端口收到Client的连接后建立一个socket连接与Client进行通信和信息处理接收Client通过socket连接发送来的数据,进行相应处理并返回处理结果,如BBSServer通过socket连接向Client发送信息,如TimeServer通信结束后中断与Client的连接,Client程序的作用,程序初始化连接到某个Server上,建立socket连接与Server进行通信和信息处理接收Server通过socket连接发送来的数据,进行相应处理通过socket连接向Server发送请求信息通信结束后中断与Client的连接,嵌入式图形开发,GUI基础知识嵌入式QT开发QT体系结构QT对象QT窗口部件,GUI基础知识,GUI一般采用MVC模式设计,嵌入式QT开发,QT是跨平台的C+库Qt/Embedded是QT嵌入式版本Qtopia是综合应用平台,包含完整的应用层灵活的用户界面窗口操作系统应用程序的启动程序开发框架。

QT体系结构,QT对象,QT应用程序(QApplication)QT窗口部件(QPushButton)QT信号和槽(connect)观察实例代码,QT窗口部件,文本类部件标签编辑框按钮类部件一般按钮单选按钮多选按钮列表类部件一般列表窗口类部件窗口、菜单、对话框其他部件指示器,嵌入式驱动开发,驱动程序开发概览流式接口驱动程序驱动程序体系结构USB驱动开发实例,驱动程序开发概览,驱动程序对比应用程序应用程序是一个进程编程从主函数main()开始主函数main()返回即是进程结束驱动程序是一系列内核函数驱动程序向内核添加了一些函数,是内核的一部分Open()Release()Read()Write()这些函数由内核在适当的时候来调用这些函数可以用来完成硬件访问等操作,驱动程序开发概览,驱动程序作用设备驱动程序使得某个特定的硬件可以响应一个定义良好的内部编程接口,同时完成隐藏设备的工作。

用户操作通过一组标准化的调用完成,而这些调用是和特定的驱动程序无关的。

将这些调用映射到作用于实际硬件的特定操作上,是设备驱动程序的任务。

对用户程序而言,设备驱动程序隐藏了设备的具体细节,对各种不同设备提供了一致的接口,一般来说是把设备映射为一个特殊的设备文件(也有设备不作这样的映射),用户程序可以像对其它文件一样对此设备文件进行操作,流式接口驱动程序,Linux对硬件设备支持两个标准接口:

块特别设备文件和字符特别设备文件通过块(字符)特别设备文件存取的设备称为块(字符)设备或具有块(字符)设备接口.块设备接口仅支持面向块的I/O操作,所有I/O操作都通过在内核地址空间中的I/O缓冲区进行,它可以运行几乎在任意长度和任意位置上的I/O请求,即提供随机存取的功能。

字符设备接

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

当前位置:首页 > 考试认证 > IT认证

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

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