ImageVerifierCode 换一换
格式:DOCX , 页数:11 ,大小:197.68KB ,
资源ID:2392467      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/2392467.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(linux设备驱动归纳总结一内核的相关基础概念.docx)为本站会员(b****1)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

linux设备驱动归纳总结一内核的相关基础概念.docx

1、linux设备驱动归纳总结一内核的相关基础概念一.linux设备驱动的作用内核:用于管理软硬件资源,并提供运行环境。如分配4G虚拟空间等。linux设备驱动:是连接硬件和内核之间的桥梁。linux系统按个人理解可按下划分:应用层:包括POSIX接口,LIBC,图形库等,用于给用户提供访问内核的接口。属于用户态,ARM运行在用户模式(usr)或者系统模式(sys)下。内核层:应用程序调用相关接口后,会通过系统调用,执行SWI指令切换ARM的工作模式到超级用户(svc)模式下,根据用户函数的要求执行相应的操作。硬件层:硬件设备,当用户需要操作硬件时,内核会根据驱动接口操作硬件设备图结构如下:举一个

2、相对比较邪恶的类比:在深圳的酒店经常会在门缝看到一些卡片,上面说可以通过打电话送货上门提供某中服务。xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx二.内核代码树介绍linux-2.6.29arch :包含和硬件体系结构相关的代码block :硬盘调度算法,不是驱动firmware :固件,如BOISDocumentation:标准官方文档dirver : linux设备驱动fs :内核所支持的文件体系include:头文件。linux/module.h linux/in

3、it.h常用库。init:库文件代码,C库函数在内核中的实现。init/main.c -start_kernel-内核执行第一条代码ipc :进程件通信mm:内存管理kernel :内核核心部分,包括进程调度等net:网络协议sound :所有音频相关其中,跟设备驱动有关并且经常查阅的文件夹有:initinclude : linux, asm-armdrivers:arch:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx三.内核补丁:补丁一般都是基于某个版本内核生成的,

4、用于升级旧内核。打补丁需要注意:1.对应版本的补丁只能用于对应版本的内核。2.如果在已打补丁的内核再打补丁,需要先卸载原来补丁。打补丁的方法:1.制作补丁:diff -Nur linux-2.6.30/ linux-2.6.30.1/ linux-2.6.30.1.patch/N为新加的文件全部修改/linux-2.6.30旧版本/linux-2.6.30.1新版本/目标补丁2.打补丁:cd linux-2.6.30 /!注意在原文件夹的目录中打补丁patch -p1 ./linux-2.6.30.1.patch /-p1是忽略一级目录3.恢复:cd linux-2.6.30 /!注意在原文件

5、夹的目录中打补丁patch -R arch/$(SRCARCH)/Makefile。arch/$(SRCARCH)/Makefile中指定arch/$(SRCARCH)路径下的哪些子目录需要被编译。在arch/arm/Makefile下:95 head-y := arch/arm/kernel/head$(MMUEXT).o arch/arm/kernel/init_task.o187 # If we have a machine-specific directory, then include it in the build.188 core-y += arch/arm/kernel/ ar

6、ch/arm/mm/ arch/arm/common/189 core-y += $(machdirs) $(platdirs)190 core-$(CONFIG_FPE_NWFPE) += arch/arm/nwfpe/191 core-$(CONFIG_FPE_FASTFPE) += $(FASTFPE_OBJ)192 core-$(CONFIG_VFP) += arch/arm/vfp/193194 drivers-$(CONFIG_OPROFILE) += arch/arm/oprofile/195196 libs-y := arch/arm/lib/ $(libs-y)上面看到,指定

7、需要进入arch/arm/kernel/、arch/arm/mm/、arch/arm/common/等目录编译,至于core-y、core-$(CONFIG_FPE_NWFPE)这些是什么东西呢?其中,y表示编译成模块,m表示编译进内核(上面没有,因为默认情况下ARM全部编译进内核),但$(CONFIG_OPROFILE)又是什么呢?这些是根据用户在make menuconfig中设置后,生成的值赋给了CONFIG_OPROFILE。3.那make menuconfig后的配置信息是怎么来的?这是由各子目录下的Kconfig提供选项功用户选择并配置。如arch/arm/Kconfig。所有的配

8、置都是根据arch/$(ARCH)/Kconfig文件通过Kconfig的语法source读取各个包含的子目录Kconfig来生成一个配置界面。每个Makefile目录下都有一个对应的Kconfig文件,用于生成配置界面来给用户决定内核如何配置,配置后会确定一个。CONFIG_XXX的的值(如上面的CONFIG_OPROFILE),来决定编译进内核,还是编译成模块或者不编译。如在arch/arm/Kconfig下:595 source arch/arm/mach-clps711x/Kconfig596597 source arch/arm/mach-ep93xx/Kconfig598599 s

9、ource arch/arm/mach-footbridge/Kconfig600601 source arch/arm/mach-integrator/Kconfig602603 source arch/arm/mach-iop32x/Kconfig604605 source arch/arm/mach-iop33x/Kconfig这些就是用来指定,需要读取以下目录下的Kconfig文件来生成一个使用make menuconfig时的配置界面。至于子目录下的Kconfig是怎么样的,待会介绍。总结Kconfig的作用:3.1.在make menuconfig下可以配置选项;3.2.在.config中确定CONFIG_XXX的的值。4.只是读取以上的两个Makefile还是不够了,内核还会把包含的子目录一层一层的读取它里面的Makefile和Kconfig。上面啰啰嗦嗦地讲了这么久,无非就是想说,内核的编译并不是一个Makefile搞定的,需要通过根目录下的总Makefile来包含一下子Makefile(不管是根目录下的子目录还是/arch/arm中的子目录)。而Kconfig,为用户提供一个交互界面来选择如何配置并生成配置选项。xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1