linux驱动学习(八)之内核定制与裁剪

news2024/11/29 4:02:41

一、内核的配置

1) 把相关硬件平台的配置文件拷贝给.config

2) 执行make menuconfig命令

关于内核配置说明:
    Arrow keys navigate the menu. 方向键对菜单有效
    <Enter> selects submenus --->. 如果有该符号"--->",则按Enter表示进入子菜单
    Highlighted letters are hotkeys. 
    Pressing <Y> includes, <N> 或者 空格 excludes, <M> modularizes features.  Press <Esc> to exit, <?> for Help, </> for Search.
    Legend: [*] built-in  [ ] excluded  <M> module  < > module capable 

    1) Y ---->输入Y时,则表示包含到内核中,符号显示[*]	 
	2)<N> 或者 空格 ---->输入N或者空格,则表示不包含到内核,符号显示 [ ]	
	3)<M> ---->输入M,则表示驱动以module形式存在,符号显示	<M>	
	4)CONFIG_ 前缀是由系统自动增加,所以要查找时,可以手动加前缀或者不加

二、将驱动程序包含到内核配置

像内核的源码一样:

        kernel ----> drivers ----->每一个独立的驱动程序都通过一个目录来进行管理,并且每一个驱动程序包含一个Kconfig和Makefile
      Kconfig---->饭店提供的菜单列表
      Makefile--->饭店里面的厨师

第一步:创建自己的驱动程序目录:如key1853 ----> kernel/drivers/char/key1853;包含驱动源文件KconfigMakefile

第二步:根据需要来修改Kconfig文件和Makefile文件

Kconfig文件:

#
# Key Driver 1853 configuration
#

config GZ1850_KEY_DRIVER
	tristate "gz1853 key driver"
	default y
	help
	compile for key2-gpioa28 driver,y for kernel,m for module.

Makefile文件:

obj-$(CONFIG_GZ1850_KEY_DRIVER) += key_drv.o

注意:模块已加入到内核源码中,但是,新的独立的模块并没有跟内核源码进行关联,所以在执行make menuconfig命令时,并看不到新独立模块的菜单配置

第三步:为了独立的模块能够关联到内核源码,配置修改该模块的上一级的Kconfig和Makefile文件。

在Kconfig文件中,增加一行代码:

source "drivers/char/key1853/Kconfig"

在Makefile文件中,增加一行代码:

obj-$(CONFIG_GZ1850_KEY_DRIVER)        += key1853/

重新执行make menuconfig命令时,则可以看到驱动的菜单:

[ ] X6818 humity driver                           
[ ] X6818 led driver                              	
<M> gz1853 key driver                             
[*] Memory device driver                          
[*] /dev/kmem virtual device support              
    Serial drivers  --->                          
[*] TTY driver to output user messages via printk 
[ ] ARM JTAG DCC console                          
< > IPMI top-level message handler  --->          
<*> Hardware Random Number Generator Core support 

第四步:重新拷贝.config到相关的硬件平台(arch/arm/configs/硬件平台的配置文件)

cp .config arch/arm/configs/GEC6818_defconfig

第五步:重新编译内核

CC      kernel/configs.o
LD      drivers/char/key1853/built-in.o
CC [M]  drivers/char/key1853/key_drv.o ---->编译驱动程序
CC      drivers/char/key1853/key_drv.mod.o
Kernel: arch/arm/boot/Image is ready
GZIP    arch/arm/boot/compressed/piggy.gzip
LD [M]  drivers/char/key1853/key_drv.ko ---->如果该模块配置为M,则该目录下会生成一个.ko文件

CC      drivers/char/key1853/key_drv.o  ---->如果设置模块为Y,则编译直接到内核中
LD      kernel/built-in.o
LD      drivers/char/key1853/built-in.o
LD      drivers/char/built-in.o
LD      drivers/built-in.o

第六步:烧写内核

第七步:查看/dev目录下,是否有该驱动程序对应的设备文件

crw-rw----    1 root     root       10,  62 Jan  1  1970 key_drv

第八步:可以执行驱动程序对应的应用测试程序

 [root@GEC6818 /6818_driver]#./test ------>ok

觉得有帮助的话,打赏一下呗。。

           

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1825133.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

可视化图表:如此高颜值柱状图,其实简单配置就能实现。

这不又有某个boss给我图截图一些柱状性图表&#xff0c;说他们的前端觉得很难&#xff0c;说了一堆技术术语&#xff0c;他也不懂&#xff0c;截图我看到后&#xff0c;就给了他一个网址&#xff0c;马上就解决了。 在这里给大家摘录出几个比较有特色的柱状图出来&#xff0c;让…

【网络安全学习】使用Kali做渗透情报收集-01-<域名信息主机信息>

1.收集开源情报 开源情报(Open Source Intelligence&#xff0c;OSINT)是指从各种公开的渠道中寻找和获取有价值的信息 如&#xff1a;互联网、媒体、社交网络、公共数据库等开源情报具有以下特点&#xff1a; - 丰富性&#xff1a;开源情报涵盖了各种类型和领域的信息 - 可…

香橙派鲲鹏Pro(orange pi kunpeng) 开箱测试,和在娱乐功能(电视盒子),深度机器学习应用方面的测试报告

摘要 对Orange Pi kunpeng这个开发板进行综合评测&#xff0c;特别关注其作为电视盒子的性能以及在深度学习应用中的算力和稳定性。通过一个月的测试&#xff0c;我们评估了其硬件性能、软件兼容性、用户体验和实际应用潜力 引言 5月份&#xff0c;我收到了csdn 对Orange P…

论文阅读笔记:Instance-Aware Dynamic Neural Network Quantization

论文阅读笔记&#xff1a;Instance-Aware Dynamic Neural Network Quantization 1 背景2 创新点3 方法4 模块4.1 网络量化4.2 动态量化4.3 用于动态量化的位控制器4.4 优化 5 效果 论文&#xff1a;https://openaccess.thecvf.com/content/CVPR2022/papers/Liu_Instance-Aware_…

班子考核评价的重要性与实施方法

在组织管理领域&#xff0c;班子考核评价是一项至关重要的工作&#xff0c;它不仅关系到组织的发展方向和速度&#xff0c;更直接影响到组织的凝聚力和战斗力。一个科学、公正、有效的班子考核评价体系&#xff0c;能够准确反映班子的工作成效&#xff0c;激励班子成员积极作为…

前后端分离对于后端来说,是利好还是利弊呢?

前后端分离已经成为前端开发的主流模式&#xff0c;这种模式极大的解放了后端&#xff0c;让后端人员不再即当爹又当妈了&#xff0c;那么这种模式对于后端来说是利好还是利弊呢&#xff0c;如何趋利避害呢&#xff0c;贝格前端工场为大家分享一下。 一、什么前后端分离的开发…

新一代大核卷积反超ViT和ConvNet!同参数量下性能、精度、速度完胜

大核卷积网络是CNN的一种变体&#xff0c;也是深度学习领域的一种重要技术&#xff0c;它使用较大的卷积核来处理图像数据&#xff0c;以提高模型对视觉信息的理解和处理能力。 这种类型的网络能够捕捉到更多的空间信息&#xff0c;因为它的大步长和大感受野可以一次性覆盖图像…

ORB算法特征提取

声明&#xff1a;学习过程中的知识总结&#xff0c;欢迎批评指正。 ORB算法提取两路输入图像&#xff08;图像A&#xff0c;图像B&#xff09;的特征点&#xff0c;根据提取的特征点进行特征匹配得到特征对。 ​ 图像金字塔 因为在现实世界中&#xff0c;同一个物体可能会以…

leetcode-09-[232]用栈实现队列[225]用队列实现栈[20]有效的括号[1047]删除字符串中的所有相邻重复项

重点&#xff1a; 栈和队列 Java中 栈不建议用stack来实现 建议用 ArrayDeque和Linkedlist来实现 队列建议用ArrayDeque和Linkedlist来实现 两者效率比较&#xff1a; java - Why is ArrayDeque better than LinkedList - Stack Overflow 基于Linkedlist是链表等&#xff0c;除…

MySQL数据操作与查询-T5 MySQL函数

一、数学函数和控制流函数 1、数学函数 &#xff08;1&#xff09;abs(x) 计算x的绝对值。 1 select abs(‐5.5),abs(10) &#xff08;2&#xff09;pow(x,y) 计算x的y次方的值。 1 select pow(2,8),pow(8,2) &#xff08;3&#xff09;round(x) 和 round(x,y) 对数字x进…

力扣hot100:75. 颜色分类(双指针)

75.颜色分类 本题是经典的「荷兰国旗问题」&#xff0c;由计算机科学家 Edsger W. Dijkstra 首先提出。 75. 颜色分类 1、遍历两遍 遍历两遍&#xff0c;第一遍放置0的位置&#xff0c;第二遍放置1的位置&#xff0c;我们只需要维护一个当前放置位置即可。 class Solution…

数字人直播系统源码,不需要高价购买,只需这个价!

在技术领域&#xff0c;系统源码的价格往往令人咋舌&#xff0c;尤其是涉及到高端应用如数字人直播系统时。那么&#xff0c;一套数字人直播系统源码到底需要多少钱&#xff1f;面对高昂的价格&#xff0c;是否还值得进入这个行业&#xff1f; 首先&#xff0c;我们要认识到数…

MoCo v3(ICCV 2021)

paper&#xff1a;An Empirical Study of Training Self-Supervised Vision Transformers official implementation&#xff1a;https://github.com/facebookresearch/moco-v3 出发点 本文并没有提出一种新的方法&#xff0c;而是对计算机视觉领域最近进展中的一个重要且基础…

JavaScript-函数

学习目标&#xff1a; 掌握函数 学习内容&#xff1a; 为什么需要函数函数使用函数传参函数返回值函数细节补充函数作用域匿名函数案例 为什么需要函数&#xff1a; 函数&#xff1a;function 是被设计为执行特定任务的代码块。说明&#xff1a;函数可以把具有相同或相似逻辑…

Spring Aop及事务管理

5 Spring AOP AOP概述 AOP&#xff1a;全称是 Aspect Oriented Programming 即&#xff1a;面向切面编程。简单的说它就是把我们程序重复的代码抽取出来&#xff0c;在需要执行的时候&#xff0c;使用动态代理的技术&#xff0c;在不修改源码的基础上&#xff0c;对我们的已有…

CinemachineFreelook相机鬼畜抖动的解决方法

又是培训机构的出品。。。。。。 2020.3.27 发现跟随时抖动的原因了&#xff0c;其实应该按照传统相机的跟随逻辑放在late update里执行&#xff0c;但是由于开发cinemachine的开发组很坑地把cinemachine freelook里的三个轨道Damping值默认给了3&#xff0c;于是相机会以每0.7…

【Windows】DNG Converter(DNG格式转换器)软件介绍

软件介绍 DNG Converter是一款免费软件&#xff0c;用于将数码相机原始RAW图像文件转换为DNG格式&#xff08;数字负片&#xff09;文件。DNG格式是一种数字负片格式&#xff0c;它旨在成为一种行业标准&#xff0c;以便摄影师可以使用一个统一的格式来存储其相机拍摄的原始图…

探索高效存储与快速查找: 深入了解B树数据结构

探索高效存储与快速查找: 深入了解B树数据结构 一、什么是B树二、B树的实现2.1 节点的定义2.2 插入关键字2.3 删除关键字2.4 查找关键字2.5 遍历B树 一、什么是B树 B树&#xff0c;也称为B-tree&#xff0c;是一种多路平衡查找树。它被广泛用于文件系统和数据库之中&#xff0c…

SringBoot 如何使用HTTPS请求及Nginx配置Https

SringBoot 如何使用HTTPS请求及Nginx配置Https SringBoot 如何使用HTTPS请求生成证书导入证书及配制创建配置类将pfx转成.key和.pem Nginx 安装SSL依赖./configure 安装依赖编译安装完openssl后报了新错 Nginx配置 SringBoot 如何使用HTTPS请求 生成证书 由于业务数据在传输过…