欢迎来到天天文库
浏览记录
ID:33966657
大小:1.56 MB
页数:9页
时间:2019-03-02
《linux内核及驱动开发》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、Linux内核的学习及内核模块的开发Linux内核开发&&及嵌入式内核的开发(主要是对裸机驱动程序的设计及系统驱动程序的设计)内核开发的基础:总结内核的一些知识点,一些规律。Linux体系结构:linux系统的构成:有最核心的内核和各个驱动,应用程序构成。用户空间及内核空间:是用户空间内核空间与体系结构相关的代码首先是由用户空间和内核空间构成;两部分可以实现数据、安全数据访问的应用7中工作模式:用户模式,系统模式,异常模式,快速中断模式,管理模式,外部中断数据访问中止,未定义异常指令处于安全的考虑,将分为两个层次。避免系统的误操作。内核空间和用户空间反应了不同的两种状态,通过系统调用
2、和硬件中断来完成。系统调用接口进程管理(进程调度、创建进程、进程间通信)内存管理(内存分配,物理地址和虚拟地址转换,内存回收)体系结构(和体系结构相关及和ARM芯片相关)设备驱动程序,网络协议功能,虚拟文件系统的支持(EXT2,FAT,NFS等)(不同的文件管理就有不同的打开形式,在中间设置虚拟文件系统可以访问一套的接口)Linux内核的源代码:内核源代码的下载(www.kernel.org)了解一个目录里面所存放的代码:有些目录里的代码没有必要进行修改,因为硬件不同所以要修改。各个目录所含的含义不相同,在修改内核时候就可以将内核中的部分代码进行修改,并不需要完全修改。实现linux
3、下的网络协议每一个协议下面都有一个文件夹经常改动的文件时arch和driver文件夹,其他文件夹只需要了解即可。内核配置Linux内核编译及配置(嵌入式系统:以应用为中心,软硬件可裁剪的操作系统,对环境对功耗等的专用系统)裁剪及配置linux系统:1,清除(内核部分内容)最全的是makedistclean命令,根据自己的需求可以做不同的操作。Makeconfig命令:基于文本的模式的交互式配置。两个的优缺点:操作方便和直观,对于每一个选项都有自己默认的值。不同的命令有不同的决定。配置完成成之后就保存结果。多出./config文件出来。一般使用makemenuconfig命令进行使用。
4、内核配置项如何选取:内核配置选项没有必要搞清楚,利用已有的内核配置文件根据已经参考的文件内核版本要是不同的话,会实现向下兼容内核的编译make内核配置完成后,就可以进行内核编译的操作了。编译内核时在根目录下使用make命令就可以了。Linux内核模块的编译!在内核中不包括一部分功能在需要的时候再“动态的”加载到内核的里面。特点:不会编译进内核文件和应用程序的区别:没有main函数,printk在内核模块的应用。模块入口函数,模块卸载函数。上述为内核模块的基本结构。内核模块是使用makefile文件构成的。内核模块的makefile文件的书写与一般的内核makefile文件的书写方法相
5、同。Hello.C的makefile文件书写:前面有固定的格式首先第一条不变;只需要改变相应改变的位置分析:1,如果它不为空,执行else,内核源代码的路径。选择相应的目录。Makefile文件的执行过程。什么是内核模块:内核模块的编译方法:内核模块由多个文件构成的,main.c和add.c文件Makefile文件(内核模块名字为hello),列出所有的.o文件,也可以变化为下面文件形式:两个或多个源文件构成了makefile文件。得到内核模块后,就需要安装。安装内核模块:用命令insmod命令用lsmod查看安装的内核模块依赖模块必须先安装被依赖的模块,再安装依赖模块。基本信息外,
6、换可以有一些可选信息,指定内核模块所遵守的协议(定义宏)内核模块遵守该协议%%%%%%%%%%%%%%%%%%%%%各个功能;安装模块时需要跟上一些模块参数。与应用程序的命令行参数不同(命令行参数已经定义好了使用左侧函数便可以该内核模块设置参数)。模块参数的定义方法如上:定义了两个模块参数可传值,也可不传值运用命令给模块参数赋值内核符号的导出:编译内核模块和安装内核模块。从一个模块调用令一个内核模块,首先要考虑调用顺序的问题,(首先加载右侧的内核模块,将右侧的内核模块函数进行导出,要调用EXPORT_SYMBOL函数进行函数导出)。符号导出的意义。内核模块的版本是由内核源代码决定的。
7、.KO和.o的区别不卸载内核模块的话,内核模块会一直存在在内核内核优先级
此文档下载收益归作者所有