pc端网站建设电话,黄页电话号码,安徽省工程建设协会网站,做网站作业什么主题本文目录 一、Linux 内核驱动目录二、自定义驱动的Kconfig编写●示例#xff1a;在 drivers 菜单添加一个自己驱动的子菜单。 三、自写驱动的Makefile编写四、总结 一个Linux内核源码#xff0c;其中包含了很多驱动程序#xff0c;对应不同的功能。我们在编译内核时。如果将… 本文目录 一、Linux 内核驱动目录二、自定义驱动的Kconfig编写●示例在 drivers 菜单添加一个自己驱动的子菜单。 三、自写驱动的Makefile编写四、总结 一个Linux内核源码其中包含了很多驱动程序对应不同的功能。我们在编译内核时。如果将所有的驱动程序都编译进镜像文件中时该镜像文件会占的内存很大。然而在公司企业中通常会使内核镜像占用内存空间尽可能的小如裁剪掉不常用的功能保留使用的功能即可。这时就需要菜单文件来进行选择裁剪。在linux中我们常用make menuconfig来进行图形化的方式来选择功能裁剪。完成裁剪后会生成.config文件来保存选择的配置信息。对于64位的arm架构可以使用make menuconfig ARCHarm6432位的arm使用make menuconfig ARCHarm。 源码树目录下一般都会有两个文件Kconfig 和 Makefile。分布在各目录下的 Kconfig 构成了一个分布式的内核配置数据库每个 Kconfig 分别描述了所属目录源文件相关的内核配置菜单。在内核配置 make menuconfig(或 xconfig 等)时从 Kconfig 中读出配置菜单用户配置完后保存到 .config (在顶层目录下生成) 中。 在内核编译时主 Makefile 调用这个 .config 就知道了用户对内核的配置情况。 一、Linux 内核驱动目录 对于一个内核驱动程序通常我们使用文件目录的形式在区分各个驱动程序。即不同的驱动程序对应不同的文件目录。定义目录位置在内核源码的dirvers目录下。 在dirvers目录下包含Kconfig、Makefile、各类驱动程序目录。Kconfig 分别描述了所属目录源文件相关的内核配置菜单。 Makefile 为管理工程代码文件决定哪些文件被编译如何被编译如何链接。每个驱动程序目录又包含其c文件、Kconfig、以及Makefile文件。
drivers目录下的Kconfig内容如下这里包含了其目录下的各个驱动程序目录里的Kconfig文件。用于配置菜单。 二、自定义驱动的Kconfig编写 Kconfig 就是对应着内核的配置菜单。假如要想添加新的驱动到内核的源码中可以通过修改 Kconfig 来增加对我们驱动的配置菜单这样就有途径选择我们的驱动假如想使这个驱动被编译还要修改该驱动所在目录下的 Makefile。因此一般添加新的驱动时需要修改的文件有两种注意不只是两个Kconfig、Makefile。要想知道怎么修改这两种文件就要知道两种文档的语法结构。 一般一个 Kconfig 文件表示的就是一个菜单一个菜单由多个菜单项组成,其格式如下:
menu Device Drivers//具体的子项菜单
config 自定义宏名1类型 选项描述菜单里显示的内容提示字符串用给人看的default n //默认状态help帮助信息..........config 自定义宏名2类型 选项描述菜单里显示的内容提示字符串用给人看的default y //默认状态help帮助信息..........endmenu●示例在 drivers 菜单添加一个自己驱动的子菜单。
1在drivers目录下新建自己驱动的文件夹mkdir qjl。
2进入自己驱动的文件夹创建Kconfig文件。
3编写Kconfig文件。
menu QJL_dirverconfig QJL_KEYbool qjl_key_driverdefault y //默认值helpthis is a key_dirver, user is qjl.config QJL_LEDbool qjl_led_dirverdefault n //默认值helpthis is a led_dirver, user is qjl.config QJL_LED1tristate led1_driver //添加了编译为模块的形式。depends on QJL_LED //如果QJL_LED被选上该选项才会出现。依赖于QJL_LED helpthis is a led1_dirver, user is qjl.endmenu4在dirver目录下的Kconfig添加自定义子菜单的Kconfig路径。
5在源码主Makefile下配置菜单。使用make meunconfig配置配置完成后保存退出生成.config配置文件。
6查看.config配置文件内容。
注意y为编译进内核、n为不编译进内核、m为编译为模块。
三、自写驱动的Makefile编写 章节二中我们已经配置好哪些驱动编译进内核哪些驱动编译为模块。本章的Makefile 使用 .config 文件的宏来裁剪 C 代码决定哪些 C 代码被编译。我们使用.config文件中的宏定义来编写Makefile文件这里obj-y表示编译进内核obj-m表示编译为模块。
目录如下
该目录的Makefile内容如下
obj-$(CONFIG_QJL_KEY) key_dirver.o
obj-$(CONFIG_QJL_LED1) led1_dirver.o●重要编写完成子目录下的Makefile后需要在dirver目录下的Makefile中添加子目录路径。这样做的目的是为了在编译时会找到子目录中的Makefile文件从而使用顶层Makefile进行编译。
四、总结
本文学习了如何添加自定义驱动菜单步骤如下
在dirver目录下新建自己的驱动文件夹该文件夹包含Kconfig、Makefile以及自己的驱动程序文件。编写Kconfig和Makefile文件。按如上内容编写。将自己目录下的Kconfig文件路径添加至上层目录的Kconfig下。将自己目录路径添加至上层目录的Makefile下。在源码顶层Makefile目录下使用make menuconfig ARCHarm64进行配置的选择最后保存并生成.config文件。使用make进行源码编译。如果编译64位的arm芯片则使用make ARCHarm6432位使用make ARCHarm。