Linux核心定制在嵌入式系统中应用的探讨

Linux核心定制在嵌入式系统中应用的探讨

ID:41595384

大小:66.98 KB

页数:7页

时间:2019-08-28

Linux核心定制在嵌入式系统中应用的探讨_第1页
Linux核心定制在嵌入式系统中应用的探讨_第2页
Linux核心定制在嵌入式系统中应用的探讨_第3页
Linux核心定制在嵌入式系统中应用的探讨_第4页
Linux核心定制在嵌入式系统中应用的探讨_第5页
资源描述:

《Linux核心定制在嵌入式系统中应用的探讨》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、Linux核心定制在嵌入式系统中应用的探讨随着硕件的发展,只靠汇编语言已经无法满足嵌入式系统的开发要求了;同时种类繁多的开发平台无论是硬件的还是软件的平台都让人难以挑选;但是可以看到的是一些专用的软件平台必将被历史淘汰;换件上ARM在嵌入式系统一家独大的局面也必将被打破。INTER也即将发布手机用CPU,AMD已经推出移动和嵌入式设备用的三个系列CPU;所以源代码开放对各种硬件支持良好的LINUX是嵌入式系统开发的必选软件平台;但是由于LINUX是针对台式机笔记木的,所以在各式驱动和内存等的支持上的过多导致相对嵌

2、入式系统来说过分庞人;所以在嵌入式系统的开发中,我们可以对LINUX内核的驱动模块和内存管理上进行删减和定制;(Android系统、虚拟操作系统VMware的最新版本等都是对LINUX内核的驱动和内存管理进行深层次定制修改的LINUX变种)本文主要讨论在LINUX内核中定制开发嵌入式系统的驱动;对linux的devfs类型的驱动程序的编写可以从以下儿大内容理解和入手:通过分析驱动程序源代码可以发现驱动程序一般可分三部分:核心数据结构;核心数据和资源的初始化,注册以及注消,释放;底层设备操作函数;A.核心数据结构s

3、tmctfle_operationsfops设备驱动程序接「Istructfile.operations{structmodule*owner;loff_t(*llseek)(structfile*,int);ssize_t(*read)(structfilechar*,size_t,loff_t*);ssize_t(*write)(structfile*,constcharsize」,lofl^t*);int(*readdir)(stmctfile*,void*,filldir_t);unsignedint(*

4、poll)(structfilestructpoll_table_stiiict*);int(*ioctl)(structinode*,structfile*,unsignedint,unsignedlong);int(*mmap)(stnictfile*,structvm_area_struct*);int(*open)(structinode*,structfile*);int(*flush)(structfile*);int(*release)(structinode*,structfile*);int(*

5、fsync)(structfile葺stmctdcntry*,intdatasync);int(*fasync)(int,stmctfile*,int);int(*lock)(structfile*,int,structfile_lock*);ssizc_t(*rcadv)(stmctfileconststructiovccunsignedlong,loff^t*);ssize_t(*writev)(structfileconststructiovecunsignedlong,lofO*);ssize_t(*se

6、ndpage)(stnictfilestructpageint,size_t,loff_t笃int);unsignedlong(*get_unmapped_area)(stnjctfileunsignedlong,unsignedlong,unsignedlong,unsignedlong);block_device_operations块设备驱动程序接口{int(*open)(structinode*,structfile*);int(*release)(structinode*,stmctfile*);int

7、(*ioctl)(structinodestructfileunsigned,unsignedlong);int(*check_media_change)(kdev_t);int(*revalidate)(kdev_t);structmodule*owner;};块设备的READO.WRITE()不在这里注册,而是在设备的读写请求队列里注册,内核在这里将调川通用的blk_read(),blk_write().向读写队列发出读写请求.Linux利用这些数据结构向内核注册open(),release(),ioctl(

8、),check_media_change(),rvalidate()^函数的入口句柄.我们将要编写的open(),release(),ioctl(),check_media_change(),revalidate()等函数,将在驱动初始化的时候,通春-•个此结构类型的变量向内核提供函数的入口.structcqucst_qucuc_t设备请求队列的数据结构structreq

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。