stm32mp157项目
1.led点亮查询设备树中led的节点找到匹配的compatible属性根据compatible属性查找内核的led驱动代码查询到内核驱动代码为leds/leds-gpio.c阅读内核的led驱动代码发现驱动只获取了gpio的属性信息其控制led亮灭是靠gpio子系统来进行的查询内核的led设备树查询板子上的led原理图、可以看到led的引脚为PE10,PF10,PE8现在需要在设备树中写出这几个led的属性信息首先查询设备树的写法在说明书中grep default-state * -nRlabel : 该 LED 的标签。如果省略标签将取自节点名称不包括单元地址。它必须唯一标识一个设备即其他 LED 类设备不能被分配相同的标签。default-state : LED 的初始状态。有效值为 on开、off关和 keep保持。如果 LED 已经处于开启或关闭状态并且 default-state 属性设置为相同的值则不应产生导致 LED 瞬间关闭或开启的毛刺glitch。keep 设置将保持 LED 处于当前状态而不会产生毛刺。如果不存在此属性默认值为 off关。在我们的板子相关的设备树中搜gpio属性怎么写在说明书中搜索grep gpio-cells * -nr | grep stm在说明书中找到gpios属性应该怎么写的说明在设备树中写好我们的led节点高电平有效初始状态offgpio子系统控制亮灭2.混杂设备什么是混杂设备混杂设备Misc Device通常用于那些主设备号Major Number统一为 10但拥有不同次设备号Minor Number的小型、简单的硬件驱动。因为要将led注册到混杂设备下为了不修改内核代码导致通用的led驱动匹配不上其他的led设备重新编写led驱动混杂设备结构体使用混杂设备时你只需要关心并赋值前三个成员minor、name 和 fops然后将这个结构体传入 misc_register() 函数即可完成设备注册。int minor;次设备号作用标识这个具体的混杂设备。特点因为所有混杂设备的主设备号都是10由内核预留所以内核靠minor来区分不同的设备。常用值如果你指定了具体的数字如 1, 2, 3...内核就会分配对应的次设备号。如果你将其赋值为MISC_DYNANIC内核就会自动帮你分配一个未使用的、空闲的次设备号现代驱动开发强烈推荐这种方式。const char *name;设备名称作用决定该设备在/dev/目录下生成的设备节点名称。示例如果你设置为led系统启动后就会在/dev/下生成一个/dev/led的设备文件用户空间就可以通过open(/dev/led)来操作它。const struct file_operations *fops;文件操作集合作用指向file_operations结构体的指针里面包含了用户空间对该设备执行标准文件操作时对应的回调函数。示例用户调用read()时内核会调用fops-read()用户调用ioctl()时内核会调用fops-unlocked_ioctl()。这是驱动实现业务逻辑的核心入口。先开辟空间存放结构体在probe函数中获取每个led的gpio描述符使用devm_gpiod_get函数其传入的第二个参数为const char *con_id连接标识符即字符串用于在设备树中匹配具体的 GPIO 属性名。在设备树DTS中GPIO 属性通常以 -gpios 结尾。内核会自动将 con_id 和 -gpios 拼接起来进行查找。例如如果你传递 reset内核就会去设备树中查找名为 reset-gpios 的属性。例如如果你传递 NULL内核就会去查找名为 gpios 的属性。第三个参数enum gpiod_flags flags的作用用于在获取 GPIO 的同时指定其初始状态方向和初始电平。常用的标志包括GPIOD_ASIS (或 0)保持原状。不改变 GPIO 的方向和电平后续再手动设置。GPIOD_IN输入模式。将 GPIO 初始化为输入。GPIOD_OUT_LOW输出低电平。将 GPIO 初始化为输出并拉低电平逻辑低。GPIOD_OUT_HIGH输出高电平。将 GPIO 初始化为输出并拉高电平逻辑高。赋值前三个成员minor、name 和 fops使用misc_register传入赋值后的结构体将设备注册到混杂设备中写设备树安装驱动在dev目录下在sys/class/misc目录下在/proc目录下cat misc3.基于I2C与IIO子系统读写传感器数据原理图板子相关设备树中查询grep i2c1 * -nr在内核的driver/i2c目录下搜索这个compatible属性查看控制器驱动代码

相关新闻

拆解玮创速擎(EnginePro):智能选型+3D建模+一键报价,制造企业的选型设计神器

拆解玮创速擎(EnginePro):智能选型+3D建模+一键报价,制造企业的选型设计神器

在制造业自动化输送设备、产线布局搭建中,选型设计往往不只是“画图报价”这么简单。产品参数多、配置复杂、客户需求个性化、价格变动灵活——传统的手动画图或人工Excel报价,有时会显得速度不够快、容易疏忽,甚至可能因为设备/产线模型不够…

2026/10/9 7:51:22 阅读更多 →
Python pip包管理从入门到精通:安装、虚拟环境与镜像源配置

Python pip包管理从入门到精通:安装、虚拟环境与镜像源配置

1. 为什么pip值得你花时间搞明白很多人第一次接触Python,卡住的地方根本不是语法,而是装不上包。你兴冲冲打开教程,照着敲下pip install requests,结果终端甩给你一句pip 不是内部或外部命令,或者更气人的是——装完了…

2026/10/10 12:11:42 阅读更多 →
职场拒绝同事的6大高情商技巧:如何礼貌说“不”而不伤和气

职场拒绝同事的6大高情商技巧:如何礼貌说“不”而不伤和气

周五傍晚六点半,同事端着水杯走到我工位旁边:“今晚能不能帮我把这份报表改一下?客户明天一早就要。”我盯着屏幕上的数据,脑子里疯狂喊着“别答应”,嘴上却说出了“好”。这种场景,我猜你也不陌生。拒绝别…

2026/10/10 10:38:01 阅读更多 →

最新新闻

从LaTeX排版到AI润色:论文写作工具集实操与避坑指南

从LaTeX排版到AI润色:论文写作工具集实操与避坑指南

最近帮一位朋友看他的论文初稿,发现一个很现实的问题:内容本身没什么大毛病,但排版、引用、语言这些小问题来回折腾了他将近两周。这让我想起自己在测试一套智能论文创作工具集时的经历——总共11项功能,核心是LaTeX兼容排版和AI辅…

2026/10/10 13:09:01 阅读更多 →
DSH深度解析:从安装部署到插件体系与实战避坑指南

DSH深度解析:从安装部署到插件体系与实战避坑指南

1. 先搞清楚DSH到底是个什么东西1.1 从名字拆解开始理解DSH这个词,全称是DeepSeek Harness,直译过来就是"深度求索挂具"或者说"深度求索框架"。你可以把它理解成一个给大语言模型套上的"外骨骼装甲"——模型本身是那个有劲…

2026/10/10 13:09:01 阅读更多 →
基于DBSCAN的风电-负荷场景削减方法及MATLAB实现

基于DBSCAN的风电-负荷场景削减方法及MATLAB实现

做风电、光伏或者负荷预测的朋友,应该都被“场景生成”这件事折磨过。不确定性建模要生成几百上千个随机场景,可真正扔进优化调度模型里一跑,计算量直接爆炸。这时候就需要做场景削减:在保留原始分布特征的前提下,用少…

2026/10/10 13:09:01 阅读更多 →
单词重音怎么找?2026年最新方法帮你避坑

单词重音怎么找?2026年最新方法帮你避坑

先说一个我自己踩过的坑。刚入行那会儿,我觉得单词重音全靠“语感”,结果带的学生里,十个有八个把 record(名词)读成 /rɪˈkɔːd/,把 present(名词)读成 /prɪˈzent/。后来我才意…

2026/10/10 13:09:01 阅读更多 →
计算机实习报告怎么写?五份技术复盘框架与实战案例

计算机实习报告怎么写?五份技术复盘框架与实战案例

简介:这份文档面向计算机专业在校生与即将进入毕业实习阶段的同学,整理了五篇完整的毕业实习总结报告,可作为撰写实习报告、实习心得与毕业论文的参考范本。内容围绕实习目的、实习工作情况及内容、实习总结和心得三大板块展开,以…

2026/10/10 13:09:01 阅读更多 →
软件检测实验室CNAS认可,设备档案十大内容与验证要点

软件检测实验室CNAS认可,设备档案十大内容与验证要点

做软件检测实验室的CNAS认可,设备档案这块儿看着不起眼,但恰恰是现场评审最容易翻车的地方。我帮好几个实验室整理过这套东西,也作为技术负责人全程经历过评审,这里面的坑和门道,我掰开揉碎了跟你讲讲。这篇文章适用三…

2026/10/10 13:08:00 阅读更多 →

日新闻

卫星轨道分类全解析:从LEO到GEO的选型逻辑与工程实践

卫星轨道分类全解析:从LEO到GEO的选型逻辑与工程实践

1. 从“卫星轨道分类”这个标题说起:为什么值得花时间搞懂第一次接触“卫星轨道分类”这个概念,很多人会觉得它离自己很远——不就是天上的星星怎么转吗?但如果你正在做航天任务规划、遥感数据接收、星座设计,甚至只是准备一场航天…

2026/10/10 0:00:39 阅读更多 →
Spring AOP 核心原理与实战:从概念到日志切面落地

Spring AOP 核心原理与实战:从概念到日志切面落地

1. 从一个真实痛点说起:为什么你的代码里到处都是重复逻辑刚入行那会儿,我写过一个用户管理模块,注册、登录、改密码、注销四个接口。每个接口里都塞了几乎一样的日志打印、参数校验、事务开启和提交。当时觉得没什么,能跑就行。直…

2026/10/10 0:00:40 阅读更多 →
Python招聘数据采集与分析可视化:从采集清洗到薪资技能城市可视化全链路

Python招聘数据采集与分析可视化:从采集清洗到薪资技能城市可视化全链路

简介:这是一套面向计算机相关专业学生与项目实战学习者的Python数据采集与分析可视化完整项目,以Boss直聘岗位数据为对象,适合用作毕业设计、课程设计或期末大作业。资源包共38个文件,约246KB,以13个py源码文件为核心&…

2026/10/10 0:00:40 阅读更多 →

周新闻

KT148A语音芯片外挂8002D功放的工程实践指南

KT148A语音芯片外挂8002D功放的工程实践指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 11:14:25 阅读更多 →
LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 1:36:08 阅读更多 →
ARM架构深度解析:从RISC设计理念到交叉编译实战

ARM架构深度解析:从RISC设计理念到交叉编译实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 11:14:58 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 5:23:50 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/9 21:32:20 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 10:38:42 阅读更多 →