26
第 12 第 第第第第 第第第第第第第

第 12 章 嵌入式系统的应用程序开发

  • Upload
    lowell

  • View
    241

  • Download
    0

Embed Size (px)

DESCRIPTION

第 12 章 嵌入式系统的应用程序开发. 第 12 章 嵌入式系统的应用程序开发. 12.1 嵌入式 GUI 系统 12.2 嵌入式网络应用. 12.1 嵌入式 GUI 系统. 嵌入式 GUI 的概述 GUI 系统的设计原理 GUI 系统的移植 GUI 系统的应用的开发. 嵌入式 GUI 的概述. 随着需求的增加和嵌入式系统性能的提高。 GUI (图形用户系统)在嵌入式系统的应用越来越广泛。 嵌入式 GUI 系统了友好的人机交互方式,类似桌面电脑 Window 和 Linux 的图形用户界面。. 嵌入式 GUI 的概述. - PowerPoint PPT Presentation

Citation preview

Page 1: 第 12 章 嵌入式系统的应用程序开发

第 12 章 嵌入式系统的应用程序开发

Page 2: 第 12 章 嵌入式系统的应用程序开发

第 12 章 嵌入式系统的应用程序开发

12.1 嵌入式 GUI 系统 12.2 嵌入式网络应用

Page 3: 第 12 章 嵌入式系统的应用程序开发

12.1 嵌入式 GUI 系统

嵌入式 GUI 的概述 GUI 系统的设计原理 GUI 系统的移植 GUI 系统的应用的开发

Page 4: 第 12 章 嵌入式系统的应用程序开发

嵌入式 GUI 的概述

随着需求的增加和嵌入式系统性能的提高。 GUI (图形用户系统)在嵌入式系统的应用越来越广泛。

嵌入式 GUI 系统了友好的人机交互方式,类似桌面电脑 Window 和 Linux 的图形用户界面。

Page 5: 第 12 章 嵌入式系统的应用程序开发

嵌入式 GUI 的概述

嵌入式 GUI 系统从下至上分成四个层次,: 硬件和操作系统 GUI 系统的移植部分 GUI 系统 应用程序

移植部分

硬件\操作系统

图形系统

API

应用程序

Page 6: 第 12 章 嵌入式系统的应用程序开发

嵌入式 GUI 的概述

从整个嵌入式系统 GUI 的实现角度,开发者一共有三个部分的工作:

嵌入式 GUI 系统的本身 嵌入式 GUI 系统的移植 嵌入式 GUI 系统的应用程序的

开发

Page 7: 第 12 章 嵌入式系统的应用程序开发

GUI 系统的设计原理

嵌入式 GUI 系统的特点:可移植性稳定可靠系统开销少可配置

Page 8: 第 12 章 嵌入式系统的应用程序开发

GUI 系统的设计原理

常见嵌入式 GUI 系统: QTE

(TrollTech ) MicroWindow

( 开源软件 ) MiniGUI

(中国飞漫)

Page 9: 第 12 章 嵌入式系统的应用程序开发

GUI 系统的设计原理

嵌入式 GUI 系统的特点:可移植性稳定可靠系统开销少可配置

Page 10: 第 12 章 嵌入式系统的应用程序开发

GUI 系统的设计原理

MiniGUI MicroWindows QT/E

典型库的大小 约 300k 约 300k 约 600k

移植性 很好 很好 较好授权条约 LGPL LGPL LGPL

系统消耗 小 较大 大操作系统支持 Linux

uCLinuxuCOS等

LinuxuCLinuxDOS

Linux

编程语言 C C C++

Page 11: 第 12 章 嵌入式系统的应用程序开发

GUI系统的移植

嵌入式 GUI 系统移植的几个方面:

操作系统的移植硬件的移植 (输入设备和输出设备)

Page 12: 第 12 章 嵌入式系统的应用程序开发

GUI系统的移植

图形系统依赖库移植

图形系统

操作系统

图形系统依赖库

应用程序

显示部分 输入部分

驱动程序

LCD硬件

输入设备

图形系统可移植层

编译系统

显示部分移植

输入部分移植

操作系统调用接口

编译系统

Page 13: 第 12 章 嵌入式系统的应用程序开发

12.2 嵌入式网络应用

网络基础知识 TCP/IP 知识 嵌入式 Linux 的网络应用

Page 14: 第 12 章 嵌入式系统的应用程序开发

网络基础知识

OSI 是一个开放性的通行系统互连参考模型1 、应用层( A )2 、表示层( P )3 、会话层( S )4 、传输层( T )5 、网络层( N )6 、数据链路层 (DL)7 、物理层 (PH)

应用层

表示层

会话层

传输层

网络层

数据链路层

物理层

Page 15: 第 12 章 嵌入式系统的应用程序开发

TCP/IP 知识

TCP/IP 协议( Transmission Control Protocol/Internet Protocol )叫做传输控制 / 网际协议,又叫网络通讯协议,这个协议是 Internet 国际互联网络的基础。

应用层

表示层

会话层

传输层

网络层

数据链路层

物理层

OSI参考模型

应用层

传输层

网络层

TCP/IP模型

网络接口层

物理层

Page 16: 第 12 章 嵌入式系统的应用程序开发

TCP/IP 知识

TCP/IP 协议族 : IP( 网络层 ) ARPP( 网络层 ) ICMPP( 网络层 ) TCP( 传输层 ) UDP( 传输层 ) RIP( 应用层 ) TELNET( 应用层 ) FTP( 应用层 ) SMTP( 应用层 ) TFTP( 应用层 )

应用层

TCP UDP

IP(以及ICMP、IGMP)

硬件设备驱动程序和媒体接入协议

HTTP FTP DNS TFTPTELNET SMTP SNMP RIP

传输层

网络层

网络接口层

ARP RARP

Page 17: 第 12 章 嵌入式系统的应用程序开发

嵌入式 Linux的网络应用

套接字( socket )是 UNIX 中网络编程一种通用的方式,它为应用层的网络编程提供了很大的方便。

应用程序

用户进程

TCP UDP

IP

设备驱动和硬件

因特网协议

内核

通讯细节

应用细节

socket

Page 18: 第 12 章 嵌入式系统的应用程序开发

嵌入式 Linux的网络应用

嵌入式 Linux 的网络程序和桌面 Linux 的网络程序在结构上都很类似,网络驱动可以使用各种通用接口。

硬件驱动程序

物理层

Linux的网络设备接口(net_device)

网络接口调用

网络协议

网络应用程序

硬件

驱动程序

网络协议

应用程序

Page 19: 第 12 章 嵌入式系统的应用程序开发

嵌入式 Linux的网络应用

嵌入式系统网络的应用模式 :

监控设备(网络服务器)

监控设备(网络客户端)

网络连接

Page 20: 第 12 章 嵌入式系统的应用程序开发

嵌入式 Linux的网络应用

嵌入式系统网络的应用模式 :

监控设备(网络服务器)

监控设备(网络客户端)

网络连接

Page 21: 第 12 章 嵌入式系统的应用程序开发

嵌入式 Linux的网络应用

Linux 的主要网络命令:ping : 使用 ICMP 协议检测主机连接。ifconfig : 用于指定的参数设置网络接口 , 指定的参数包括 IP 地址 , 子网掩码 , 广播地址等。route : 用来产生和修改路由表。netstat : 用于显示与 IP 、 TCP 、 UDP 和 ICMP 协议相关的统计数据 , 一般用于检验本机各端口的网络连接情况。

Page 22: 第 12 章 嵌入式系统的应用程序开发

大小端处理函数

函数原型 描述uint16_t htons(uint16_t value); 16位转换,返回网络字节序

uint32_t htonl(uint32_t value); 32位转换,返回网络字节序

uint16_t ntohs(uint16_t value); 16位转换,返回主机字节序

uint32_t ntohl(uint32_t value); 32位转换,返回网络字节序

TCP/IP 网络协议使用大端的字节序( big endian ),但是处理器(主机)的字节序却存在大小端。

Page 23: 第 12 章 嵌入式系统的应用程序开发

内存操作处理函数

函数原型 描述

void bzero(void *dest, size_t nbytes); 按字节内存置零

void bcopy(const void *src, void *dest, size_t nbytes);

按字节内存拷贝:

int bcmp(const void *ptr1, const void *ptr2, size_t nbytes);

按字节内存比较:

void *memset(void *dest, int c, size_t len); 内存设置

void *memcpy(void *dest, const void *src, size_t bytes);

内存拷贝

int memcmp(const void *ptr1, const void *ptr2, size_t nbytes);

内存比较

Page 24: 第 12 章 嵌入式系统的应用程序开发

Socket编程主要函数

int socket (int family, int type, int protocol);int bind(int sockfd, struct sockaddr *my_addr, socklen_t addrlen);int close( int fd ); int listen( int s, int backlog );int accept(int s, struct sockaddr *addr, socklen_t *addrlen);int connect( int sockfd, const struct sockaddr *serv_addr, socklen_t addrlen );

Page 25: 第 12 章 嵌入式系统的应用程序开发

Socket编程主要函数

ssize_t read(int filedes, void *buff, size_t nbytes) ;ssize_t write(int filedes, const void *buff, size_t nbytes) ;

int recv( int sockfd,void *buf,int len,int flags );int send( int sockfd,void *buf,int len,int flags );

int recvfrom( int s, void *buf, size_t len, int flags, struct sockaddr *from, socklen_t *fromlen );int sendto( int s, const void *msg, size_t len, int flags, const struct sockaddr *to, socklen_t tolen);

Page 26: 第 12 章 嵌入式系统的应用程序开发

课程结束