第11章应用程序开发.ppt

  1. 1、本文档共333页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第11章 应用程序开发 本章从一个针对运行在S3C44B0X上的uClinux操作系统进行应用程序的开发入手,给出了Windows操作系统平台上使用Hitool for uClinux等工具开发的多种应用程序。 本章主要介绍了: ◆ 串口应用程序的编写方法。 ◆ TCP/IP协议以及Socket的编写方法。 ◆ 基于uClinux音频接口的应用程序的编写方法。 ◆ 键盘和LCD的应用程序的编写方法。 ◆ 汉字音乐点播程序的编写实例。 11.1 串口应用程序 S3C44B0X提供2个UART收发器,对它们可以操作在中断方式或DMA方式。 它们内置波特率发生器,波特率发生器的时钟源为S3C44B0X的系统使用,所以最高速率可达115.2K bps。 二个串口有单独的波特率发生器,接收,发送和控制单元,支持红外方式的传送和接收。 同时,在S3C44B0X串口的接收器和发送器中都有16字节的FIFO,FIFO可以有效的降低接收器和发送器对CPU的中断频率,提高发送和接收的效率。 串口设备的可配置参数包括波特率,起始位数量,数据位数量,停止位数量和流量控制协议。 一般来讲,起始位为1bit,数据位为8bit,停止位为1bit,流量控制协议为“无流量控制”,波特率为115200bit/s。 在Linux操作系统中,设备驱动是以主设备号为主,每个设备都有唯一的主设备号和从设备号。 在Linux内核中使用块设备表和字符设备表,根据设备的类型和主设备号便可以在设备表中找到相应的驱动程序,而从设备号则一般只用作同类设备中具体设备项的编号。 作为字符型设备,串口设备的设备主标识为4,次设备号从64开始,并随着串口号的增加而增加,如/dev/ttyS10对应的次设备号为74;可以通过 ls –al 命令,列出/dev 目录下所有设备文件的设备类型、主设备号和次设备号。 在串口设备初始化函数中,设备驱动程序使用设备类型和主设备号将该驱动程序的操作接口注册到内核的设备表中,该接口表连接了内核和设备驱动程序。 该接口包含设备打开,设备释放,设备读和设备写等。 设备文件是用来表示Linux所支持的大多数设备的,每个设备文件除了设备名,还有3个属性:设备类型、主设备号、从设备号。 设备文件在Linux下可以通过mknod系统调用来创建; 在Hitool环境下,可以通过修改 /vendor/micetek/EV44B0II/makefile来增加新的设备文件,在编译时会在/romfs/dev下生成对应的设备文件,然后通过genromfs实用工具生成romfs.img,这个文件会被打包到linux.elf中,作为uClinux的根文件系统; 这样,在uClinux中可以看到新建的设备文件。 当应用程序打开或读取设备文件时,对应的系统调用将访问该设备文件在VFS文件系统中的inode数据结构, 然后找到该设备文件对应的操作接口,这时所使用的操作接口一般是同一类型设备的统一操作接口, 接着通过主设备号将找到设备的实际操作接口,最后操作将在该设备的驱动程序中执行。 11.1 串行口主要函数介绍 1. 打开串口 在Linux 下串口文件是位于/dev 下,串口0为/dev/ttyS0 ,串口1为/dev/ttyS1,O_RDWR是以读写方式打开串口, O_NOCTTY表示该程序不会成为控制终端,避免了当在键盘输入类似ctrl+c的命令后,终止程序的运行。 打开串口是通过使用标准的文件打开函数操作: int fd; fd = open( /dev/ttyS0, O_RDWR); if (-1 == fd){ perror( 提示错误!); } 2. 设置串口 最基本的设置串口包括波特率设置,效验位和停止位设置。 串口的设置主要是设置如下struct termios 结构体的各成员值: struct termios { unsigned short c_iflag; /* 输入模式标志*/ unsigned short c_oflag; /* 输出模式标志*/ unsigned short c_cflag; /* 控制模式标志*/ unsigned short c_lflag; /* local mode flags */ unsigned char c_line; /* line discipline */ unsigned char c_cc[NCC]; /* control charact

文档评论(0)

maritime5 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档