【系统移植】(六)第三方驱动移植

news2025/4/11 7:39:01

【系统移植】(六)第三方驱动移植

文章目录

  • 【系统移植】(六)第三方驱动移植
    • 1.编译驱动进内核
      • 方法一:编译makefile
      • 方法二:编译kconfig
      • 方法三:编译成模块
    • 2.字符设备框架

编译驱动进内核
   a.  选择驱动存放目录 (或任意目录。源码下的drivers/char目录,同时修改目录下的makefile)
   b.  改Makefile
   c.  改Kconfig  (界面可配置)

编译驱动为独立的模块
   a. 配置为模块方式
   b. make modules 编译为模块
   c. 创建设备节点(应用访问驱动的入口)
   d. 运行测试驱动的应用程序

1.编译驱动进内核

一、驱动编译进内核Makefile
	1、首先找内核中是否已经支持设备的驱动  选配
	2、内核中没有的驱动移植进来 --第三方驱动移植

	将第三方驱动代码放到linux源码树中的driver目录中
	修改 Makefile Kconfig(界面配置) 
	修改过的和新添加的代码会重新编译
	程序需要在板子上运行 就需要使用交叉编译工具编译
	mknod /dev/led c或者b  主设备号  此设备号

方法一:编译makefile

  1. 选择驱动存放目录,源码下的drivers/char目录,同时修改目录下的makefile

image-20241221155810139

  1. 仿照其他文件的格式,编写同名文件的.o后缀

image-20241221160235703

  1. 回到源码顶层目录,执行make uImage编译内核

  2. 把生成的uImage传到开发板上面

image-20241221160736473

搞一个应用程序,测试这个LED点灯程序,Linux下一切皆文件,那么访问应用层访问底层的入口就是/dev/led文件image-20241221161011705

  1. 在开发板上生成这个设备号文件

image-20241221161329106

  1. 通过交叉编译,把应用程序发到板子上面运行监测即可

方法二:编译kconfig

由方法一可知,添加一个驱动还行,如果有n个呢?就很难维护。所以有了此方法

二、make menuconfig、Makefile、Kconfig、.config 
	三者的关系
	Makfile 具体编译文件
	Kconfig 选配,生成图形化界面,这个只是配置make menuconfig后的界面,具体编译模块还是看makefile
	在Kconfig中添加一个灯的选项
	界面修改好了, 还需要再次修改 Makfile
	[] 只有两种选项编译(y)或者不编译(n)  <> 三种选项 编译(y)、不编译(n)或者编译成模块(m)
	obj-y obj-n obj-$(CONFIG_XXX)	//编译,不编译,根据kconfig确定
	方便驱动管理

如何关联起来kconfig和makefile。(之前直接写的-y就写死了)

image-20241221165323969

方法三:编译成模块

之前编译的都是跟内核原本的驱动目录都在一块呢,如果我们写了很多驱动的话还是很乱,这个部分就是把自己写的驱动与Linux原本驱动分离开来。

这部分的内容放到Linux驱动里面讲,在这里不再详细展示。

换成tristate就可有三种模式选择,可编译不可编译,编译编译成模块

image-20241221172322382

2.字符设备框架

image-20241222105753981

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

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

相关文章

STM32实现一个简单电灯

新建工程的步骤 建立工程文件夹&#xff0c;Keil中新建工程&#xff0c;选择型号工程文件夹里建立Start、Library、User等文件夹&#xff0c;复制固件库里面的文件到工程文件夹工程里对应建立Start、Library、User等同名称的分组&#xff0c;然后将文件夹内的文件添加到工程分组…

【shiro】shiro反序列化漏洞综合利用工具v2.2(下载、安装、使用)

1 工具下载 shiro反序列化漏洞综合利用工具v2.2下载&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1kvQEMrMP-PZ4K1eGwAP0_Q?pwdzbgp 提取码&#xff1a;zbgp其他工具下载&#xff1a; 除了该工具之外&#xff0c;github上还有其他大佬贡献的各种工具&#xff0c;有…

vue进度条组件

<div class"global-mask" v-if"isProgress"><div class"contentBox"><div class"progresstitie">数据加载中请稍后</div><el-progress class"progressStyle" :color"customColor" tex…

CSRF跨站请求伪造——入门篇【DVWA靶场low级别writeup】

CSRF跨站请求伪造——入门篇 0. 前言1. 什么是CSRF2. 一次完整的CSRF攻击 0. 前言 本文将带你实现一次完整的CSRF攻击&#xff0c;内容较为基础。需要你掌握的基础知识有&#xff1a; 了解cookie&#xff1b;已经安装了DVWA的靶场环境&#xff08;本地的或云的&#xff09;&am…

Qt基础:主界面窗口类QMainWindow

QMainWindow 1. QMainWindow1.1 菜单栏添加菜单项菜单项信号槽 1.2 工具栏添加工具按钮工具栏的属性设置 1.3 状态栏1.4 停靠窗口&#xff08;Dock widget&#xff09; 1. QMainWindow QMainWindow是标准基础窗口中结构最复杂的窗口, 其组成如下: 提供了菜单栏, 工具栏, 状态…

32f4,usart2fifo,2025

usart2fifo.h #ifndef __USART2FIFO_H #define __USART2FIFO_H#include "stdio.h" #include "stm32f4xx_conf.h" #include "sys.h" #include "fifo_usart2.h"//extern u8 RXD2_TimeOut;//超时检测//extern u8 Timer6_1ms_flag;exte…

激光模拟单粒子效应试验如何验证CANFD芯片的辐照阈值?

在现代航天电子系统中&#xff0c;CANFD&#xff08;Controller Area Network with Flexible Data-rate&#xff09;芯片作为关键的通信接口元件&#xff0c;其可靠性与抗辐射性能直接关系到整个系统的稳定运行。由于宇宙空间中存在的高能粒子辐射&#xff0c;芯片可能遭受单粒…

从零构建大语言模型全栈开发指南:第五部分:行业应用与前沿探索-5.2.1模型偏见与安全对齐(Red Teaming实践)

👉 点击关注不迷路 👉 点击关注不迷路 👉 点击关注不迷路 文章大纲 大语言模型全栈开发指南:伦理与未来趋势 - 第五部分:行业应用与前沿探索5.2.1 模型偏见与安全对齐(Red Teaming实践)一、模型偏见的来源与影响1. 偏见的定义与分类2. 偏见的实际影响案例二、安全对齐…

Docker安装开源项目x-ui详细图文教程

本章教程,主要介绍如何使用Docker部署开源项目x-ui 详细教程。 一、拉取镜像 docker pull enwaiax/x-ui:latest二、运行容器 mkdir x-ui && cd x-ui docker run -itd --network=host \-v $PWD<

检索增强生成(RAG) 优化策略

检索增强生成(RAG) 优化策略篇 一、RAG基础功能篇 1.1 RAG 工作流程 二、RAG 各模块有哪些优化策略&#xff1f;三、RAG 架构优化有哪些优化策略&#xff1f; 3.1 如何利用 知识图谱&#xff08;KG&#xff09;进行上下文增强&#xff1f; 3.1.1 典型RAG架构中&#xff0c;向…

零基础玩转树莓派5!从系统安装到使用VNC远程控制树莓派桌面实战

文章目录 前言1.什么是Appsmith2.Docker部署3.Appsmith简单使用4.安装cpolar内网穿透5. 配置公网地址6. 配置固定公网地址总结 前言 你是否曾因公司内部工具的开发周期长、成本高昂而头疼不已&#xff1f;或是突然灵感爆棚想给团队来点新玩意儿&#xff0c;却苦于没有专业的编…

【MyBatis】深入解析 MyBatis:关于注解和 XML 的 MyBatis 开发方案下字段名不一致的的查询映射解决方案

注解查询映射 我们再来调用下面的 selectAll() 这个接口&#xff0c;执行的 SQL 是 select* from user_info&#xff0c;表示全列查询&#xff1a; 运行测试类对应方法&#xff0c;在日志中可以看到&#xff0c;字段名一致&#xff0c;Mybatis 就成功从数据库对应的字段中拿到…

图像退化对目标检测的影响 !!

文章目录 引言 1、理解图像退化 2、目标检测中的挑战 3、应对退化的自适应方法 4、新兴技术与研究方向 5、未来展望 6、代码 7、结论 引言 在计算机视觉领域&#xff0c;目标检测是一项关键任务&#xff0c;它使计算机能够识别和定位数字图像中的物体。这项技术支撑着从自动驾…

《AI大模型应知应会100篇》第57篇:LlamaIndex使用指南:构建高效知识库

第57篇&#xff1a;LlamaIndex使用指南&#xff1a;构建高效知识库 摘要 在大语言模型&#xff08;LLM&#xff09;驱动的智能应用中&#xff0c;如何高效地管理和利用海量知识数据是开发者面临的核心挑战之一。LlamaIndex&#xff08;原 GPT Index&#xff09; 是一个专为构建…

目标检测中COCO评估指标中每个指标的具体含义说明:AP、AR

《------往期经典推荐------》 一、AI应用软件开发实战专栏【链接】 项目名称项目名称1.【人脸识别与管理系统开发】2.【车牌识别与自动收费管理系统开发】3.【手势识别系统开发】4.【人脸面部活体检测系统开发】5.【图片风格快速迁移软件开发】6.【人脸表表情识别系统】7.【…

如何利用ATECLOUD测试平台的芯片测试解决方案实现4644芯片的测试?

作为多通道 DC-DC 电源管理芯片的代表产品&#xff0c;4644 凭借 95% 以上的转换效率、1% 的输出精度及多重保护机制&#xff0c;广泛应用于航天航空&#xff08;卫星电源系统&#xff09;、医疗设备&#xff08;MRI 梯度功放&#xff09;、工业控制&#xff08;伺服驱动单元&a…

《继电器:机械骑士的电磁战甲》

点击下面图片带您领略全新的嵌入式学习路线 &#x1f525;爆款热榜 88万阅读 1.6万收藏 第一章&#xff1a;千年契约的青铜誓言 在电气王国的熔炉深处&#xff0c;电磁铁与簧片的盟约已镌刻千年。电磁铁身披螺旋铜线编织的斗篷&#xff0c;其胸膛中沉睡着一道可召唤磁力的古…

快速求平方根

1. 前置知识 建议首先阅读我的另外一篇文章《雷神之锤 III 竞技场》快速求平方根倒数的计算探究》。建议大家自己看过《雷神之锤 III 竞技场》快速求平方根倒数的计算探究》学会快速求平方根倒数算法后&#xff0c;不看我这篇文章&#xff0c;自己推导一篇快速求平方根的算法&…

C语言基础要素(019):输出ASCII码表

计算机以二进制处理信息&#xff0c;但二进制对人类并不友好。比如说我们规定用二进制值 01000001 表示字母’A’&#xff0c;显然通过键盘输入或屏幕阅读此数据而理解它为字母A&#xff0c;是比较困难的。为了有效的使用信息&#xff0c;先驱者们创建了一种称为ASCII码的交换代…

CI/CD(九) Jenkins共享库与多分支流水线准备

后端构建 零&#xff1a;安装插件 Pipeline: Stage View&#xff08;阶段视图&#xff09;、SSH Pipeline Steps&#xff08;共享库代码中要调用sshCommond命令&#xff09; 一、上传共享库 二、Jenkins配置共享库 3、新增静态资源与修改配置 如果是docker和k8s启动&#xf…