天脉(ACoreOS)操作系统培训第七章:IO系统_第1页
天脉(ACoreOS)操作系统培训第七章:IO系统_第2页
天脉(ACoreOS)操作系统培训第七章:IO系统_第3页
天脉(ACoreOS)操作系统培训第七章:IO系统_第4页
天脉(ACoreOS)操作系统培训第七章:IO系统_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第七章

I/O系统I/O系统

7.1概述7.2基本I/O7.3标准I/O

7.4文件系统

2为什么使用IO系统?接口简洁易用标准接口,具有兼容性与具体设备无关可以进行I/O重定向3I/O系统4ACoreOS中的I/O系统提供对多种设备和文件系统的统一访问。应用creat()

open()close()read()write()ioctl()xx_creat()xx_open()xx_close()xx_read()xx_write()xx_ioctl()设备I/O系统xx驱动或文件系统设备和文件系统的使用设备 1.安装并注册设备驱动 2.创建设备文件 1.注册文件系统 2.创建文件5安装并注册设备驱动I/O系统中必须安装设备驱动;针对不同的目标板,ACoreOS相应板级下默认带有部分设备驱动,如果用户在MSL配置中添加了该设备,编译后生成的启动映像中会自动安装并注册该类设备的默认驱动。使用第三方设备驱动前必须由用户安装并注册设备驱动,ACoreOS中提供接口fnDM_DriverInstall()安装并注册设备驱动。该接口返回一个整数,用以标识区分不同的驱动设备,我们称之为主设备号。6安装并注册设备驱动安装并注册xx设备驱动的过程为:将设备的初始化例程(xx_initialize)、打开例程(xx_create)、删除例程(xx_close)、读例程(xx_read)、写例程(xx_write)和控制例程(xx_control)注册到设备驱动表中;当使用基本IO接口或标准IO接口时,ACoreOS最终会调用此处注册的设备驱动完成指定的功能当通用例程被调用时,会调用相应的驱动例程。例如,调用read()读取XX设备时IO系统会调用驱动接口xx_read();7创建设备每个设备驱动都有对用的创建例程:

系统中提供的设备—如果用户在MSL配置中进行配置,系统启动时会根据配置自动调用设备创建例程。

第三方设备—用户在使用设备前,通过调用安装的初始化例程(xx_initialize)创建设备。8IO系统

7.1简介7.2基本I/O7.3标准I/O

7.4文件系统9基本I/O基本I/O主要包含以下接口:open()、creat()、read(),write(),ioctl()和close();基本I/O接口操作文件或设备的文件描述符来对文件或设备进行操作;10文件描述符用一个整数标识一个打开的文件或设备,称该整数为文件描述符;可以通过open()或creat()接口获得文件描述符;read(),write(),ioctl()和close()服务使用

该文件描述符来操作对应的文件或设备;文件描述符表为全局的;文件描述符表的大小可以通过界面进行配置(OS项目下ACoreOS配置->虚拟文件系统->最大同时打开文件数),范围1~200,缺省默认值为100。11标准输入、标注输出、标准错误文件描述符0、1、2系统保留。0:标准输入1:标准输出2:标准错误12标准输入、标准输出、标准错误ACoreOS系统初始化后,标准输入、标准输出和标准错误缺省定向到OS项目->具体目标板配置->控制台配置中用户所指定的输入设备和输出设备。

ACoreOS系统允许将标准输入输出重定向到其他设备。在重定向时,用户除提供相关设备驱动之外,也需要配置控制台管理中的控制台输入设备和控制台输出设备以便系统进行初始化。13打开文件或设备intopen(constchar*file,intflags,

...)file 文件或设备路径flags 指定的访问类型:O_RDONLY只读打开.O_WRONLY只写打开.O_RDWR可读可写打开O_APPEND追加O_CREAT如果不存在则创建.O_TRUNC截断为0.O_EXCL配合O_CREAT使用O_NONBLOCK以非阻塞方式读一个设备如果打开成功返回文件描述符,失败返回ERROR(-1);creat()类似于open(),用于在文件系统中创建新文件。14关闭文件或设备intclose(intfd)fd 从open()或creat()返回的文件描述符刷新缓冲区;释放文件或设备相关资源;解除文件描述符fd同设备的绑定关系,并释放fd;ACoreOS中任务删除时不会自动调用close服务关闭该任务打开的文件或设备。如果任务不需要使用文件或设备,必须显式调用close关闭文件或设备。15读/写文件或设备ssize_tread(intfd,void*buffer,size_tcount)ssize_twrite(intfd,constvoid*buffer,size_tcount)

fd 从open()或creat()返回的文件描述符。buffer

缓冲区地址。read时读入数据,write时拷贝数据到文件

或设备。count 读/写的字节数。如果成功返回读或写的字节数,失败则返回ERROR(-1)。16控制文件或设备intioctl(fd,command,buffer)

file 从open()或creat()返回的文件描述符。command

表示控制命令的整数。buffer

配合command使用的操作参数。该函数根据指定命令和参数执行I/O相关操作。不同类型的驱动程序,本系统调用完成的功能一般不同。驱动的参考手册列出了相应驱动的有效控制命令(command)。17ioctl()示例设置串口设备的波特率。

status=ioctl(fd,FIOBAUDRATE,baudRate);查找管道中的消息数。status=ioctl(fd,FIONMSGS,&nMsgs);

获得/设置文件偏移量。status=ioctl(fd,FIOSEEK,newOffset); position=ioctl(fd,FIOWHERE,0);18IO系统

7.1简介7.2基本I/O7.3标准I/O

7.4文件系统19标准I/O标准I/O分为两类,包括带缓冲的I/O和格式化的I/O。标准I/O提供的接口包含在stdio中。

20标准I/O21ansiStdio函数ansiStdio函数包括:

fopen()打开一个设备或文件的I/O流。fclose()关闭I/O流。fread()从指定的设备或文件读取数据到一个队列中。fwrite()将数据写入到指定的设备或文件中。getc()从指定的设备或文件的缓冲中读取一个字符。putc()将一个字符写入到指定的设备或文件缓冲中。ungetc()把指定的文件回退到指定的设备或文件的缓

冲中。22文件指针ansiStdio例程使用文件指针(指向FILE结构的指针)来代替文件描述符。FILE数据结构在stdio.h中定义,包括:文件描述符指针,例如,管理文件的指针或设备缓冲。标准输入,标准输出和标准错是使用文件描述符0,1和2创建的文件指针。23FileDescriptors(ACoreOS)FilePointers(stdio.h)STD_INstdinSTD_OUTstdoutSTD_ERRstderrIO缓冲标准I/O中提供了带缓冲的接口,专用的I/O缓冲能够减少驱动的访问次数。24标准I/O库的注意事项没有使用信号量对I/O缓冲区进行保护,因此两个任务不能同时操作同一个文件描述符。系统所提供的最大缓冲文件句柄数在OS项目下ACoreOS配置->设备管理中进行配置,允许配置的缓冲文件句柄数为1~50,默认值为20。25其他ANSI库头文件描述示例ansiCtypectype.h检测并转换字符isdigit()isalpha()toupper()ansiStringstring.h操作字符串strlen() strcat()strcpy()ansiStdargstdarg.h变量或变参数va_start()var_arg()va_end()ansiStdlibstdlib.h标准转换例程atoi() atof() rand()26格式化的IO27有缓冲I/O和无缓冲I/O的比较

28比较项有缓冲IO(ansiStdio)无缓冲IOstdoutfprintf(stdout,…)printf(…)stdinfscanf(stdin,…)scanf(…)otherfprintf(fp,…)fdprintf(fd,…)UNIX和ACoreOS的I/O比较相同点:源代码可兼容;设备名和文件名相似;stdin、stdout和stderr。不同点:速度不同;UNIX中文件描述符为局部,在ACoreOS中是全局;ACoreOS只使用UNIXopen()中的部分标志;ACoreOS中printf()是不带缓冲的。29I/O操作描述基本I/O例程:open() close() read() write() ioctl() creat()基于基本I/O的带缓冲I/O(ansiStdio)例程,使用文件指针FILE:fopen() fclose() fread()fwrite() fprintf()格式化的无缓冲I/O(fioLib)例程:printf() sprintf() fdprintf()30IO系统

7.1简介7.2基本I/O7.3标准I/O

7.4文件系统31文件系统ACoreOS中对文件的管理类似于设备管理。注册文件系统

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论