当前位置: 首页 > article >正文

驱动基础知识

makefile添加模块编译好.ko文件后 insmod添加模块 由于学习使用的是虚拟终端需要使用dmesg指令显示Kconfig是定义可配置项让用户选择对应功能Makefile会根据用户选择的配置项来控制代码的编译行为。驱动三种状态编译进内核编译成模块不编译进内核如何把驱动编译进内核使用kconfig和Makefile在内核路径下打开kconfig文件将驱动放到哪个目录下就到那个目录下的kconfig添加kconfig将menuconfig中的驱动选择星号编译进内核后会在内核目录下生成一个 .config目录vi.config文件找到对应的配置选项下一步是Makefile编译字符目录下的Makefile与kconfig一样要哪一个类型的驱动就打开哪一个目录下的MakefileMakefile中的蓝色字体宏改成CONFIG_LEDS_MP1A 后面的项目名字改成驱动文件名字最后可以进行编译内核了编译完成后会生成uImage文件将生成的uImage文件拷贝到tftp目录下更新内核setenv bootargs root/dev/nfs nfsroot192.168.100.240:/home/hqyj/rootfs rwconsolettySAC2,115200 init/linuxrc ip192.168.100.241 clk_ignore_unusedtrue内核拷贝完成后创建设备运行应用程序。写完驱动和应用程序加载成外部模块led为例子驱动编写创建设备号 dev_t devnoMKDEV(主设备号次设备号申请设备号 retregister_chrdev_region(devno,decive_number,led)设备初始化 cdev_init(cdev,led_fops)设备注册 retcdev_add(cdev,devno,device_number);将写好的驱动.c文件交叉编译成.ko文件Makefile中内核所在的路径需要改成自己的路径linuxubuntu:$ make ARCHarm CROSS_COMPILEarm-fsmp1x-linux-gnueabihf- modules编译可执行文件test在上图的 最后一行通过scp tftp 或者nfs 将应用程序和驱动放到开发班上在开发板上insmod .ko文件安装模块mknod dev/cdev c 300 0创建设备./开启可执行文件将写好的led驱动编译进内核过程将所需的文件放到内核中对应的文件夹下用kconfi和Makefile进行编译进内核进入到驱动文件放置的文件夹下打开当前文件夹下的kconfig添加对应的选项内核目录下进入menuconfig进行图像选择进入到设备 -字符设备 将自己编写this is the mainboard leds of MP1A 选为 * 编译进内核完成后保存并退出会生成一个.config文件进入.config文件再进入到驱动下字符设备下的Makefile括号中的宏改为.config中的宏 等号后的文件名改为驱动的文件名退到内核目录进行编译内核编译完成后生成uImage文件将他拷贝到tftp目录下 uImage在下面的目录下arch/arm/boot内核编译选择对应平台才可以编译内核需要配置关于platform——device写好的设备文件编译后会出现在sys/bus/platform/devices目录下各种结构体inode-i_cdev指向struct cdev实例的指针probe函数中这行代码是给内核的 I2C 设备对象 “贴标签”—— 告诉内核这个clientI2C 传感器对应的驱动私有数据是sensor后续可以通过client快速找到sensor。对于大量结构体的总结关于inode注册字符设备后mknod会在内核中产生inode内核通过inode里的设备号匹配到你之前注册的struct cdev并把cdev的指针赋值给inode-i_cdev。内核调用cdev关联的file_operations中的open函数并把这个inode作为参数传进去。inode-i_cdev本质上就是sensor.cdevsensor是私有结构体的名字也就是你自定义结构体里的cdev成员的指针。这一步的目的把恢复出来的sensor指针保存起来这样在后续的read、ioctl等函数中就可以直接从file-private_data中取出sensor进而访问sensor-clientmodule_platform_driver(platform_drv)关于insmod和mknod编译进内核后就不用在开发板上打insmod使用device_creat函数后就不用mknod了设备树设备树节点所在目录厂商给的写好的设备树文件一般是不会动的自己可以写一个test.dts文件去然后去修改文件关于保存一些传参中给的参数例如inode和clientdevice在probe函数之后驱动的其他函数如read、ioctl、remove被调用时内核不会再直接传入client指针。我们需要通过自定义的sensor结构体来找回这个指针从而与硬件进行通信。ioctl中copy_to_user((void *)arg, (void *)value, sizeof(int)) arg是用户态存放数据的地址设备号300在之前学习中被编译进内核占用了如何确定有自己设备树节点然后再去sys/bus/下看后面蓝色的就是路径/sys/firmware/devicetree/base/soc/i2c4001200/sth2040注意重启之后要下载扩展板的。设置私有数据的作用将驱动侧的私有数据结构与设备实例绑定方便在整个驱动生命周期中随时获取和使用。sys和dev的区别/sys目录下的文件是虚拟文本文件核心作用是 “暴露硬件的属性和状态”让你用最简单的cat/echo就能查看 / 配置不用写复杂代码。按 “总线 - 设备 - 驱动” 的层级组织如/sys/class/leds/每个文件对应一个属性如亮度、GPIO 号、使能状态读写文件会直接触发驱动的show/store回调本质是操作内核变量无主 / 次设备号纯属性映射/dev目录下的文件是设备文件不是普通文本每个文件对应一个硬件设备核心作用是给应用层提供 “操作硬件的入口”。关键特性设备文件有固定的类型c字符设备如 LED、串口、b块设备如硬盘每个设备文件绑定 “主设备号 次设备号”内核通过这组编号找到对应的驱动不能用cat/echo直接读写少数简单设备除外需要通过编程调用open/read/write。获取私有数据指针的函数**核心通用函数**dev_get_drvdata/dev_set_drvdata所有设备类型都能复用2. **总线专属函数**Platform 用 platform_xxxI2C 用 i2c_xxxSPI 用 spi_xxx本质是对 dev_get/set_drvdata 的封装3. **文件操作专属**直接读写 file-private_data需在 open 中初始化

相关文章:

驱动基础知识

makefile添加模块编译好.ko文件后 insmod添加模块 ,由于学习使用的是虚拟终端需要使用dmesg 指令显示Kconfig是定义可配置项,让用户选择对应功能,Makefile会根据用户选择的配置项来控制代码的编译行为。驱动三种状态编译进内核,编…...

RS-485故障安全偏置技术演进与工程实践

1. RS-485故障安全偏置技术背景解析在工业现场总线通信领域,RS-485标准已经服役超过30年,却依然是许多工程师的"痛点"。这个看似简单的差分通信协议,在实际部署中常常会遇到一个典型问题:当总线处于空闲状态时&#xff…...

NE2281 1000W PFC芯片,主要应用于boost PFC变换器

1、方案名称:NE2281 1000W PFC芯片,主要应用于boost PFC变换器 2、品牌:星云半导体(NEBULA) 3、描述:NE2281 是一款高性能、多模式工作的 AC/DC控制器,具有高集成度、高效率等特性&#xff0c…...

LFM2.5-1.2B-Instruct一文详解:28T训练预算带来的小模型高泛化能力

LFM2.5-1.2B-Instruct一文详解:28T训练预算带来的小模型高泛化能力 1. 模型概述与核心优势 LFM2.5-1.2B-Instruct是一个参数量仅为1.2B的轻量级指令微调大语言模型,由Liquid AI和Unsloth团队联合开发。这个模型最引人注目的特点是:用28T to…...

vulhub系列-34-Os-ByteSec(超详细)

免责声明:本文记录的是 Os-ByteSec 渗透测试靶机 的解题过程,所有操作均在 本地授权环境 中进行。内容仅供 网络安全学习与防护研究 使用,请勿用于任何非法用途。读者应遵守《网络安全法》及相关法律法规,自觉维护网络空间安全。目…...

手把手教你用readl/writel调试树莓派GPIO(基于Linux/io.h)

手把手教你用readl/writel调试树莓派GPIO(基于Linux/io.h) 树莓派作为一款广受欢迎的嵌入式开发平台,其GPIO控制一直是开发者关注的焦点。不同于常见的用户空间GPIO库(如WiringPi或RPi.GPIO),本文将带你深入…...

LLVMSwift:用Swift原生封装LLVM,实现类型安全的编译器开发

1. 项目概述与核心价值如果你是一个 Swift 开发者,同时对编译原理、程序分析或者高性能计算感兴趣,那么你很可能听说过 LLVM。这个强大的编译器基础设施几乎无处不在,从 Clang 到 Swift 编译器本身,再到各种 JIT 引擎,…...

vulhub系列-33-hacksudo - Thor(超详细)

免责声明:本文记录的是 hacksudo - Thor 渗透测试靶机 的解题过程,所有操作均在 本地授权环境 中进行。内容仅供 网络安全学习与防护研究 使用,请勿用于任何非法用途。读者应遵守《网络安全法》及相关法律法规,自觉维护网络空间安…...

JPEGsnoop深度解析:当你的JPEG图像需要“法医级“诊断时

JPEGsnoop深度解析:当你的JPEG图像需要"法医级"诊断时 【免费下载链接】JPEGsnoop JPEGsnoop: JPEG decoder and detailed analysis 项目地址: https://gitcode.com/gh_mirrors/jp/JPEGsnoop 在数字图像处理的日常工作中,你是否曾遇到过…...

小白技能库:技术新人的场景化学习指南与开源项目实践

1. 项目概述:小白技能库的诞生与价值最近在GitHub上看到一个挺有意思的项目,叫“aptratcn/xiaobai-skills”。光看名字,你大概就能猜到它的定位——“小白技能库”。作为一个在技术社区混迹了十多年的老鸟,我第一眼看到这个项目时…...

Cursor AI 代理 9 秒删除生产数据库:Railway 无作用域令牌与“假备份”如何让灾难成为必然

昨天,一家服务全国租车公司的 SaaS 创业公司 PocketOS 生产环境瞬间归零。 不是黑客入侵,不是配置失误,而是一个运行在 Cursor 里的 Claude Opus 4.6 代理,在处理 staging 环境的凭证问题时,自主决定调用 Railway Grap…...

Git代码分支管理模型TBD++ Flow

现代软件开发过程中要实现高效的团队协作,需要使用代码分支管理工具实现代码的共享、追溯、回滚及维护等功能。目前流行的代码管理工具,包括CVS,SVN,Git,Mercurial等。相比CVS和SVN的集中管理,Git具有非常明显的优势,例如:去中心化的代码管理方式减少了开发者对中心服务…...

潮玩盲盒小程序开发全解析:技术架构、合规风控与运营变现

引言盲盒经济凭借 “未知性 收藏欲” 持续爆发,2024 年国内市场规模突破 500 亿元,微信小程序以低获客成本、高便捷性成为核心阵地。本文从技术选型、核心功能、合规风控到运营变现,全链路拆解盲盒小程序开发逻辑,为开发者提供可…...

基于Transformer的中文文本分类

前言 我在github上发现了一个有意思的项目Chinese-Text-Classification-Pytorch,使用pytorch复现了基于Transformer的中文文本分类。 中文数据集 我从THUCNews中抽取了20万条新闻标题,文本长度在20到30之间。一共10个类别,每类2万条。 以…...

整个 AI 项目从本地 → 部署到服务器

一、整体流程(最清晰版)本地打包镜像 → 上传到服务器 → 服务器加载镜像 → 挂载模型目录 → 启动容器 → 运行成功二、完整部署步骤(照着执行即可)1.本地:把你的 AI 项目打包成 Docker 镜像(cmd->项目根目录下执行…...

第十七届蓝桥杯省赛c++b组题解

蓝桥杯省赛自测&#xff08;CB 组&#xff09; - 洛谷 洛谷自测链接(由于数据原因 真实成绩可能与官方成绩有所出入) 1.青春常数 非常简单的入门题目 一共四年&#xff0c;前两年总和要小于后两年 即xy2026202520242023且x<y算出x的最大值即可(注意&#xff01;x可以为0 所…...

vue2+element-UI上传图片封装

针对上传组件进行封装&#xff0c;在页面直接引用即可&#xff0c;上传到minio文件服务器&#xff1a; 可以预览&#xff0c;重新上传&#xff0c;只读模式&#xff0c;可以传入展示缩略图尺寸&#xff0c;传入上传校验尺寸 <template><div><div v-if"read…...

如何用GHelper轻松掌控华硕笔记本性能:5分钟快速配置终极指南

如何用GHelper轻松掌控华硕笔记本性能&#xff1a;5分钟快速配置终极指南 【免费下载链接】g-helper Lightweight, open-source control tool for ASUS laptops and ROG Ally. Manage performance modes, fans, GPU, battery, and RGB lighting across Zephyrus, Flow, TUF, St…...

盟接之桥®制造业EDI软件:从Forecast到Invoice,打通供应链的“任督二脉”

在全球制造业数字化转型的浪潮中&#xff0c;供应链的协同效率直接决定了企业的竞争力。对于汽车零部件、机械制造、电子电器等行业的制造企业而言&#xff0c;电子数据交换&#xff08;EDI&#xff09;已不再是“锦上添花”的选项&#xff0c;而是进入全球顶级供应链体系的“入…...

YOLO26管道泄漏识别检测系统(项目源码+YOLO数据集+模型权重+UI界面+python+深度学习+远程环境部署)

摘要 管道泄漏是石油、化工、城市供水及燃气输送系统中的主要安全隐患&#xff0c;传统人工巡检与基于压力、流量等参数的监测方法存在响应慢、定位难、误报率高等问题。本文基于YOLO26系列目标检测算法&#xff0c;构建了一套端到端的管道泄漏视觉识别检测系统。系统以管道场…...

哔哩下载姬:专业B站视频下载工具,支持8K与批量下载

哔哩下载姬&#xff1a;专业B站视频下载工具&#xff0c;支持8K与批量下载 【免费下载链接】downkyi 哔哩下载姬downkyi&#xff0c;哔哩哔哩网站视频下载工具&#xff0c;支持批量下载&#xff0c;支持8K、HDR、杜比视界&#xff0c;提供工具箱&#xff08;音视频提取、去水印…...

烟台群策电子-FMC_M6678评估板

功能说明本子卡是一款面向国产M6678处理器的FMC转接卡。其提供标准的FMC HPC接口&#xff0c;可实现便捷的模块互联&#xff0c;既可作为国产M6678应用生态的评估平台&#xff0c;又能作为算力扩展节点&#xff0c;有效增强系统的整体处理能力。主要组成子卡实现了M6678的最小系…...

为什么现在的人越来越难快乐?曾仕强:因为你只懂“刺激”,不懂“豫卦”

在这个娱乐至死的年代&#xff0c;我们似乎拥有了前所未有的快乐资源&#xff1a;短视频、游戏、直播带货……但奇怪的是&#xff0c;我们却越来越难感到快乐了。台湾师范大学曾仕强教授在讲解《易经》豫卦时&#xff0c;一针见血地指出&#xff1a;现代人过度追求感官刺激&…...

从初出茅庐到功成身退:一个人最高级的活法,是修好这6个阶段

在这个张扬个性的时代&#xff0c;我们常被教导要“敢于表现”、“秀出自己”。但台湾师范大学曾仕强教授在解读《易经》谦卦时&#xff0c;却提出了一个发人深省的观点&#xff1a;有能力的人&#xff0c;往往混不好&#xff1b;真正厉害的人&#xff0c;都有“本事”。为什么…...

# Linux Shell 编程入门 Day01:Shell 基础认知、脚本编写规范、变量四大类型、数值运算

一、实验环境准备 本次实验基于模板机创建 1 台虚拟机&#xff0c;完成 IP 配置后&#xff0c;使用 WindTerm 远程连接主机&#xff0c;为后续脚本编写与执行做好环境准备。 二、Shell 环境及核心特性 Linux 层级关系梳理: 程序/用户输入的命令&#xff08;ls/cd/pwd&#xff…...

2026“网安湘军杯”报名指南:双赛道实战,直通优质offer

真实漏洞挖掘&#xff5c;5小时线下靶场&#xff5c;精英赛新秀赛&#xff5c;省级权威证书&#xff5c;企业重点关注 你是不是也遇到过这种情况&#xff1a; 刷着招聘软件&#xff0c;看到“网络安全工程师”动辄 15K 的起薪&#xff0c;心里很动心。但一看职位要求——“实战…...

2026AI 写论文软件:亲测

作为一名刚完成硕博连读的学术人&#xff0c;过去一年我把AI 论文工具都试了一遍。从本科毕业论文到核心期刊&#xff0c;踩过的坑能绕图书馆三圈——AI 生成内容查重率暴红、参考文献幻觉、学术语言生硬、逻辑链断裂... 这些痛谁懂&#xff1f; 一、掌桥科研 AI 论文&#xff…...

芯片功耗分析入门:如何用Pre-Gate Sim的FSDB波形生成精准的SAIF文件

芯片功耗分析入门&#xff1a;从Pre-Gate Sim到精准SAIF文件生成全流程解析 在数字IC设计流程中&#xff0c;功耗分析已成为与性能、面积同等重要的设计指标。随着工艺节点不断微缩&#xff0c;芯片的静态功耗与动态功耗特性变得愈发复杂&#xff0c;而基于门级仿真的功耗分析…...

GPT5.5数据分析与商业智能实战从入门到提效2026最新

想稳定体验GPT-5.5的数据分析能力&#xff0c;推荐直接用库拉&#xff0c;这是一个AI聚合平台&#xff0c;已上线GPT-5.5&#xff0c;国内直连&#xff0c;注册即用。GPT-5.5来了&#xff0c;数据分析的工作方式正在被重写4月24日&#xff0c;OpenAI正式发布GPT-5.5。官方称这是…...

Copilot Next 工作流配置安全基线(2024 Q3最新):覆盖GDPR/CCPA/等保2.0三级要求,附可审计Terraform模块+自动检测脚本

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;Copilot Next 工作流配置安全基线概览 Copilot Next 作为新一代 AI 编程协作者&#xff0c;其工作流配置直接影响代码生成的合规性、数据隔离强度与权限控制粒度。安全基线并非单一策略&#xff0c;而是…...