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

  • 3
  • 0
  • 约1.26万字
  • 约 6页
  • 2016-10-18 发布于贵州
  • 举报

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

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

Linux核心定制在嵌入式系统中应用的探讨 随着硬件的发展,只靠汇编语言已经无法满足嵌入式系统的开发要求了;同时种类繁多的开发平台无论是硬件的还是软件的平台都让人难以挑选;但是可以看到的是一些专用的软件平台必将被历史淘汰;硬件上ARM在嵌入式系统一家独大的局面也必将被打破。INTER也即将发布手机用CPU,AMD已经推出移动和嵌入式设备用的三个系列CPU;所以源代码开放对各种硬件支持良好的LINUX是嵌入式系统开发的必选软件平台;但是由于LINUX是针对台式机笔记本的,所以在各式驱动和内存等的支持上的过多导致相对嵌入式系统来说过分庞大;所以在嵌入式系统的开发中,我们可以对LINUX内核的驱动模块和内存管理上进行删减和定制;(Android系统、虚拟操作系统VMware的最新版本等都是对LINUX内核的驱动和内存管理进行深层次定制修改的LINUX变种)本文主要讨论在LINUX内核中定制开发嵌入式系统的驱动; 对linux的devfs类型的驱动程序的编写可以从以下几大内容理解和入手: 通过分析驱动程序源代码可以发现驱动程序一般可分三部分: 核心数据结构;核心数据和资源的初始化,注册以及注消,释放;底层设备操作函数; A.核心数据结构 struct file_operations fops 设备驱动程序接口 struct file_operations { struct module *owner; loff_t (*llseek) (struct file *, loff_t, int); ssize_t (*read) (struct file *, char *, size_t, loff_t *); ssize_t (*write) (struct file *, const char *, size_t, loff_t *); int (*readdir) (struct file *, void *, filldir_t); unsigned int (*poll) (struct file *, struct poll_table_struct *); int (*ioctl) (struct inode *, struct file *, unsigned int, unsigned long); int (*mmap) (struct file *, struct vm_area_struct *); int (*open) (struct inode *, struct file *); int (*flush) (struct file *); int (*release) (struct inode *, struct file *); int (*fsync) (struct file *, struct dentry *, int datasync); int (*fasync) (int, struct file *, int); int (*lock) (struct file *, int, struct file_lock *); ssize_t (*readv) (struct file *, const struct iovec *, unsigned long, loff_t *); ssize_t (*writev) (struct file *, const struct iovec *, unsigned long, loff_t *); ssize_t (*sendpage) (struct file *, struct page *, int, size_t, loff_t *, int); unsigned long (*get_unmapped_area)(struct file *, unsigned long, unsigned long, unsigned long, unsigned long); }; block_device_operations 块设备驱动程序接口 { int (*open) (struct inode *, struct file *); int (*release) (struct inode *, struct file *); int (*ioctl) (struct inode *, struct file *, unsigned,

文档评论(0)

1亿VIP精品文档

相关文档