《嵌入式linux程序开发》课程设计报告_____fcntl()编程实现Ⅰ.pdf
《《嵌入式linux程序开发》课程设计报告_____fcntl()编程实现Ⅰ.pdf》由会员分享,可在线阅读,更多相关《《嵌入式linux程序开发》课程设计报告_____fcntl()编程实现Ⅰ.pdf(15页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、嵌入式 linux 程序开发课程设计报告fcntl()编程实现 陈丽丹07323202Page 1 of 15摘摘要要随着后PC时代的到来,嵌入式系统技术已经成为了一个万众瞩目的焦点。目前已广泛应用于信息家电、数据网络、工业控制、医疗卫生、航空航天等众多领域。巨大的市场潜力,无穷的商机,吸引了各路英豪纷踵沓来。硬件方面,各大电子厂商相继推出了自己的专用嵌入式芯片,漫天而至的是mp3,PDA,无线上网装置,让人们充分感受到了这股强劲之势;软件方面,在Vxworks、pSOS、Neculeus和Windows CE等嵌入式操作系统引领下,也出现了空前繁荣的局面,但这些专用操作系统都是商业化产品,其
2、高昂的价格使许多面向低端产品的小公司望而却步,并且其源代码的封闭性也大大限制了开发者的积极性。近两年在我国登陆并蓬勃发展的Linux,也已广泛应用于各类计算应用,不仅包括IBM的微型Linux腕表、手持设备(PDA和蜂窝电话)、因特网装置、客户机、防火墙、工业机器人和电话基础设施设备,甚至还包括了基于集群的超级计算机。Linux在高端服务器的优越表现及其天生具有的突出特点,就注定它必将在低端嵌入式系统中再次给人们以惊喜,而基于嵌入式Linux操作系统的应用,必定给我们未来的工作和生活带来翻天覆地的变化。本课程设计是以Red Hat Linux-VMware Workstation ACE版为基
3、础平台,利用Fcntl函数实现多用户共享下给文件加文件锁,其中文件锁包括建议性锁和强制性锁。嵌入式 linux 程序开发课程设计报告fcntl()编程实现 陈丽丹07323202Page 2 of 15目目录录一嵌入式 Linux 简介.3二.嵌入式 Linux 开发平台简介.3三嵌入式 linux 开发流程.3建立开发环境.3 配置开发主机.4 建立引导装载程序 BOOTLOADER.4 下载别人已经移植好的 LINUX 操作系统.4 建立根文件系统.4 建立应用程序的 flash 磁盘分区.4 开发应用程序.5 烧写内核、根文件系统、应用程序.5四课程设计目的和要求.5fcntl 函数格式
4、.5程序流程图:.6五VI 简介与源程序.7六Gcc 编译器的安装过程.11七程序运行.13八心得体会.14九参考文献.15八评分表.15嵌入式 linux 程序开发课程设计报告fcntl()编程实现 陈丽丹07323202Page 3 of 15一嵌入式一嵌入式 L Linuxinux 简介简介嵌入式系统是以应用为中心,以计算机技术为基础,并且软硬件可裁剪,适用于应用系统对功能、可靠性、成本、体积、功耗有严格要求的专用计算机系统。Linux 正在嵌入式开发领域稳步发展。Linux 使用 GPL,所有对特定开发板、PDA、掌上机、可携带设备等使用嵌入式 Linux 感兴趣的人都可以从因特网上免
5、费下载其内核和应用程序,并开始移植和开发。许多 Linux 改良品种迎合了嵌入式市场,它们包括 RTLinux(实时 Linux)、uclinux(用于非 MMU 设备的Linux)、Montavista Linux(用于 ARM、MIPS、PPC 的 Linux 分发版)、ARM-Linux(ARM 上的 Linux)和其它 Linux 系统。嵌入式 Linux 的发展比较迅速。NEC、索尼已经在销售个人视频录像机等基于 Linux 的消费类电子产品,摩托罗拉则计划在其未来的大多数手机上使用Linux,IBM 也制定了在手持机上运行 Linux 的计划。数年来,“Linux 标准库”组织一直
6、在从事对在服务器上运行的 Linux 进行标准化的工作,现在,嵌入式计算领域也开始了这一工作。嵌入式 Linux 标准吸引了“Linux 标准库”以及 Unix 组织中有益的元素。二二.嵌入式嵌入式 LinuxLinux 开发平台简介开发平台简介Linux 价格低廉、功能强大,可以运 X86,Alpha,Sparc,MIPS,PPC,MOTOROLA,NEC,ARM 等硬件平台上,而且开放源代码,可以定制。我们所介绍的硬件平台是基于 ARM 体系结构,由北京博创兴业科技有限公司开发的 UP-Star 认证考试实践板,该认证板采用 Samsung S3c2410 嵌入式微处理器,可运行 Linu
7、x 2.4.x和 Linux 2.6.x 内核,支持 QT/E、miniGUI 等嵌入式图形界面。既适合作为计算机、软件等专业,又适合广大从事 PMP、PDA、智能手机的厂商和科研单位作为参考设计。三嵌入式三嵌入式 linuxlinux 开发流程开发流程嵌入式 linux 开发,根据应用需求的不同有不同的配置开发方法,但是一般都要经过以下过程:建立开发环境(在 WINDOWS 下安装虚拟机后,再在虚拟机中安装 LINXUX 操作系统)操作系统:red hat linux9.0 版本GCC 交叉编译器的安装:arm-linux-gcc嵌入式 linux 程序开发课程设计报告fcntl()编程实现
8、 陈丽丹07323202Page 4 of 15 配置开发主机MINICOM 和 WINDOWS 下的超级终端的配置:一般参数为波特率 115200;数据位 8位;停止位 1;无奇偶校验;软硬件控制流设为无 建立引导装载程序 BOOTLOADER从网络上下载一些公开源代码的 BOOTLOADER:U-BOOTARM9 系列芯片没有内置引导装载程序,需要编写烧写开发板上 flash 的烧写程序,网络上有免费下载的 WINDOWS 下通过 JTAG 并口简易仿真器烧写 ARM 外围 flash 芯片的程序。这是让系统可以正常运行的第一步。下载别人已经移植好的 LINUX 操作系统如 UCLINUX
9、、ARM-LINUX、PPC-LINUX 等 建立根文件系统从 下载使用 BUSYBOX 软件进行功能裁减,产生一个最基本的根文件系统,再根据自己的应用需要添加其他的程序。默认的启动脚本一般都不会符合应用的需要,所以就要修改根文件系统中的启动脚本,它的存放位置位于/etc 目录下,包括:/etc/init.d/rc.S、/etc/profile、/etc/.profile 等,自动挂装文件系统的配置文件/etc/fstab,具体情况会随系统不同而不同。根文件系统在嵌入式系统中一般设为只读,需要使用 mkcramfs、genromfs等工具产生烧写映象文件。建立应用程序的 flash 磁盘分区一
10、般使用 JFFS2 或 YAFFS 文件系统,这需要在内核中提供这些文件系统的驱动,有的系统使用一个线性 flash(NOR 型)512K32M,有的系统使用非线性flash(NAND 型)8512M,有的两个同时使用,需要根据应用规划 flash 的分区方案。嵌入式 linux 程序开发课程设计报告fcntl()编程实现 陈丽丹07323202Page 5 of 15 开发应用程序可以下载到根文件系统中,也可以放入 YAFFS、JFFS2 文件系统中,有的应用程序不使用根文件系统,而是直接将应用程序和内核设计在一起,这有点类似于 UCOS-II 的方式。烧写内核、根文件系统、应用程序四课程设
11、计目的和要求四课程设计目的和要求通过编写在多用户共享下给文件上锁的程序,进一步熟悉 Linux 中文件 I/O相关的应用开发,并且熟练的掌握 fentl()函数的使用。在文件已经共享的情况下如何操作,也就是当多个用户共同使用、操作一个文件的情况,这时,Linux 通常采用的方法是给文件上锁,来避免共享的资源产生竞争的状态。文件锁包括建议性锁和强制性锁。建议性锁要求每个上锁文件的进程都要检查是否有锁存在,并且尊重已有的锁。在一般情况下,内核和系统都不使用建议性锁。强制性锁是由内核执行的锁,当一个文件被上锁进行写入操作的时候,内核将阻止其他任何文件对其进行读写操作。采用强制性锁对性能的影响很大,每
12、次读写操作都必须检查是否有锁存在在 Linux 中,实现文件上锁的函数有 lock 和 fcntl,其中 flock 用于对文件施加建议性锁,而 fcntl 不仅可以施加建议性锁,还可以施加强制锁。同时,fcntl还能对文件的某一记录进行上锁,也就是记录锁。记录锁又可分为读取锁和写入锁,其中读取锁又称为共享锁,它能够使多个进程都能在文件的同一部分建立读取锁。而写入锁又称为排斥锁,在任何时刻只能有一个进程在文件的某个部分上建立写入锁。当然,在文件的同一部分不能同时建立读取锁和写入锁。fcntl 函数格式 fcntl 函数原型int fcnt1(int fd,int cmd,struct floc
13、k*lock)参数 fd 代表欲设置的文件描述词,参数 cmd 代表欲操作的指令。参数 lock 指针为 flock 结构指针,定义如下:struct flcokshort int l_type;short int l_whence;off_t l_start;off_t l_len;嵌入式 linux 程序开发课程设计报告fcntl()编程实现 陈丽丹07323202Page 6 of 15pid_t l_pid;l_type 有三种状态:F_RDLCK 建立一个供读取用的锁定F_WRLCK 建立一个供写入用的锁定F_UNLCK 删除之前建立的锁定l_whence 也有三种方式:SEEK_S
14、ET 以文件开头为锁定的起始位置。SEEK_CUR 以目前文件读写位置为锁定的起始位置SEEK_END 以文件结尾为锁定的起始位置。返回值 成功则返回 0,若有错误则返回-1,错误原因存于 errno。程序流程图:开始结束文件是否已上锁?已上锁未上锁提示上锁失败,并显示已上什么锁和上锁的进程号提示上锁成功,并显示上了什么和上锁的进程号文件是否成功开始成功失败给文件置写入锁/读取锁并给出提示。如:进程号给出打开文件失败的提示解锁结束图 1.文件记录锁功能流程图图 2.文件写入锁/读取锁功能流程图嵌入式 linux 程序开发课程设计报告fcntl()编程实现 陈丽丹07323202Page 7 o
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 嵌入式linux程序开发 嵌入式 linux 程序 开发 课程设计 报告 _fcntl 编程 实现
限制150内