Johannes 《Linux内核模块与设备驱动开发:编写Linux驱动程序》 (14-19)设备树相关

发布时间:2026/8/13 23:11:52

Johannes 《Linux内核模块与设备驱动开发:编写Linux驱动程序》 (14-19)设备树相关
视频https://www.bilibili.com/video/BV18SE26cEjn?vd_source92b7efa4daa5bb4fdcdc9f2db97c307bp14lesson13后面的视频是说设备树和misc 设备感觉设备树讲的不太好没有基础的估计完全看不懂而且这个系列没有说中断DMASPIUARTIIC等也没说网络设备和块设备值得称道的是源码例子非常浅显。设备树lesson14 说了下设备树基本概念。linux 官方解释了设备树的三大目的Linux and the Devicetree — The Linux Kernel documentationLinux uses DT data for three major purposes:platform identification,runtime configuration, anddevice population.也就是定义识别设备/总线读取设备树配置设备生成设备信息。我的理解是设备树是描述硬件状态的一个文件它的语法类似json需要更多了解下设备树语法。一般官方会给出一个设备树模板自己根据情况修改。比如之前给zynq的linux 写个system_user.dtsi,要写个mcp2518fd的设备树xilinx 官方 内核提供了设备树模板文件microchip,mcp251xfd.yamlexamples: - | #include dt-bindings/gpio/gpio.h #include dt-bindings/interrupt-controller/irq.h spi { #address-cells 1; #size-cells 0; can0 { compatible microchip,mcp251xfd; reg 0; clocks can0_osc; pinctrl-names default; pinctrl-0 can0_pins; spi-max-frequency 20000000; interrupts-extended gpio 13 IRQ_TYPE_LEVEL_LOW; microchip,rx-int-gpios gpio 27 GPIO_ACTIVE_LOW; vdd-supply reg5v0; xceiver-supply reg5v0; }; };这个设备树有头文件 dt-bindings/gpio/gpio.hdt-bindings/interrupt-controller/irq.h所以自己写的时候要加进去zynq 里面基本可以不考虑pin_ctrl因为vivado里面配置zynq的时候已经给spi总线设置好了IO口各种属性了。然后写zynq system_user.dtsi 是overlay的lesson15解释了overlay),所以这个SPI调用的时候SPI总线节点需要给它加上号根据硬件原理图就是SPI1然后例子里面的can0_osc 这个需要自己写个对应的根节点。所以我就先参考官方的例子Device Tree Tips - AMD Adaptive Computing Wiki - Confluence给晶振clock 说明写好一个clocks对应的晶振osc:osc: oscillator { //节点osc,别名 oscillatorcompatible fixed-clock; //这个看厂家我找的zynq的选择是 fixed-clock#clock-cells 0;clock-frequency 40000000; //晶振频率40MHZclock-output-names osc;};然后spi总线SPI1里面调用这个osc, clocks osc;最后设备MCP2518FD的设备树自己写了如下spi1{#address-cells 1;#size-cells 0;status okay;canfd0{compatible microchip,mcp2518fd;reg 0;clocks osc;spi-max-frequency 20000000;interrupt-parent gpio0;interrupts-extended gpio0 62 IRQ_TYPE_LEVEL_LOW;microchip,rx-int gpio0 61 GPIO_ACTIVE_LOW;};};同时内核进行相应的裁减操作这样驱动读取设备树文件dtsi就知道SPI总线用的是40Mhz的时钟晶振spi 的sclk 20MHZ,中断用的是哪个IO口。总而言之PCB 软件用画原理图来表明这个设备的情况设备树是通过语言的方式描叙硬件的状态。具体设备树怎么写一般下载内核后在DOCUMENT下面查找各个内核的设备树照说明写。要自己写驱动写好设备树之后让自己的驱动读取它来工作可以看看视频lesson17,lesson18了解。视频里面的代码那些都不放了。感觉大同小异。看视频和git,了解即可。搜索看到Johannes还有个UP传送了另一个系列的他的linux 内核视频系列 ://www.bilibilhttps://www.bilibili.com/video/BV1CNJc64Esv/?vd_source92b7efa4daa5bb4fdcdc9f2db97c307b内容挺丰富的1. Simple Kernel Module2. Device Numbers and Device Files3. Create device file in driver and callbacks4. GPIO Driver5. Text LCD Driver6. PWM Module7. Temperature Sensor (I2C)8. Timer in Linux Kernel Modules9. High Resolution Timer in Linux Kernel Modules10. Accessing SPI with a Linux Kernel Module (BMP280 sensor again)11. Using a GPIO Interrupt in a Linux Kernel Module12. Using Parameters in a Linux Kernel Module13. IOCTL in a Linux Kernel Module14. Threads in a Linux Kernel Module15. Sending a signal from a Linux Kernel Module to an userspace application16. The poll callback17. Waitqueues in a Linux Kernel Module18. Create procfs entries from a Linux Kernel Module19. Create sysfs entries from a Linux Kernel Module20. Parse the device tree from a Linux Kernel Module to get the deivce properties of a specific device21. Device Tree GPIO Driver22. Device Tree Driver for I2C Device23. Dynamical memory management in a Linux Kernel module24. Serial (UART) Driver25. Industrial IO compatible driver for an ATMEGA I2C ADC26. Device Tree SPI Driver (IIO compatible driver for Atmega SPI ADC)27. Misc Device28. Mutex for exclusive access to shared resource29. Completions for synchronisation30. Direct Memory Access (DMA) memcopy example31. Accessing files form a Linux Driver32. The mmap callback33. Linked Lists34. Registering device numbers, read and write callback in character devices Take 235. Private Data in struct file36. I2C Device Driver without Device Tree37. Sysfs Class38. Kernel Log levelsgit 上面有程序资源B站评论区有。

相关新闻

2671亿智驾蛋糕怎么分?Momenta与地平线的“护城河”在哪里?

2671亿智驾蛋糕怎么分?Momenta与地平线的“护城河”在哪里?

2026/8/13 23:11:52

在2026年的中国智能驾驶赛道上,一场关于“谁将定义未来”的路线之争正进入白热化。根据中信建投的测算,中国智能驾驶解决方案的市场规模将在2026年飙升至2671亿元。然而,面对这块巨大的蛋糕,资本市场却给出了截然不同的定价&#…

从零构建Coding Agent:AI编程助手的技术架构与实战指南

从零构建Coding Agent:AI编程助手的技术架构与实战指南

2026/8/13 23:11:52

1. 为什么我们需要一个“会写代码”的助手?最近两年,AI领域最让人兴奋的变化之一,就是“智能体”这个概念从实验室论文和科幻电影里走了出来,开始实实在在地帮我们干活了。你可能已经习惯了用ChatGPT来写邮件、查资料,…

跨部门协作靠领导催怎么破?华恒智信成功案例

跨部门协作靠领导催怎么破?华恒智信成功案例

2026/8/13 23:01:51

【客户行业】生产制造【问题类型】流程管理【客户背景】某生产制造集团专注于高精度机械部件的研发与生产,服务于航空、汽车、医疗设备等多个高端制造业领域。近几年随着企业的不断发展、人数增加,大家都感觉到企业出现了"大企业病"&#xff0…

VSCode高效Git管理:从入门到实战技巧

VSCode高效Git管理:从入门到实战技巧

2026/8/14 0:01:54

1. 为什么选择VSCode进行Git代码管理作为微软推出的轻量级代码编辑器,Visual Studio Code(简称VSCode)已经成为全球开发者使用率最高的编辑器之一。根据2023年Stack Overflow开发者调查,VSCode的市场占有率高达74.48%。它内置的Gi…

效率高的高定木作品牌推荐!2026国内十大高定木作品牌实力测评,看完选不亏

效率高的高定木作品牌推荐!2026国内十大高定木作品牌实力测评,看完选不亏

2026/8/14 0:01:54

对于别墅、大平层等高净值家装业主来说,高定木作不仅是空间的颜值担当,更是决定整体装修效率和最终落地效果的核心环节。选对了品牌,既能精准还原设计方案,还能缩短工期避免反复返工,实现一次性完美交付;如…

Flutter与OpenHarmony实现剧本杀组队表单开发实战

Flutter与OpenHarmony实现剧本杀组队表单开发实战

2026/8/14 0:01:54

1. 项目概述在移动应用开发领域,跨平台框架Flutter因其高效的开发体验和出色的性能表现,已经成为众多开发者的首选。而OpenHarmony作为新兴的操作系统平台,其开放性和灵活性为开发者提供了全新的可能性。本文将聚焦于一个实际应用场景——剧本…

临沂网站建设铭镇:深耕本土数字生态,以匠心铸就企业品牌核心竞争力

临沂网站建设铭镇:深耕本土数字生态,以匠心铸就企业品牌核心竞争力

2026/8/14 0:01:54

在这个流量为王、视觉至上的互联网时代,对于临沂乃至整个山东乃至全国的传统中小企业来说,拥有一张精美的“数字名片”早已不再是可选项,而是生存的必答题。每当夜幕降临,沂河两岸灯火辉煌,物流之都的喧嚣逐渐沉淀为对未来的思考。我们常常听到老板们在茶余饭后探讨:为什…

大连网站建设找简维科技:为您打造懂业务更懂用户的数字化转型引擎

大连网站建设找简维科技:为您打造懂业务更懂用户的数字化转型引擎

2026/8/14 0:01:53

在这个数字化浪潮席卷全球的今天,企业想要在激烈的市场竞争中站稳脚跟,拥有一张好看的“数字名片”已经远远不够了。很多老板在刚开始接触互联网业务时,都有一个共同的困惑:为什么我花了钱建的网站,就像是在真空中自嗨?访客进来转了两圈就跑了,线索石沉大海,甚至连客服…

TLA+实战指南:用形式化验证构建可靠的分布式系统设计

TLA+实战指南:用形式化验证构建可靠的分布式系统设计

2026/8/13 23:51:53

在分布式系统开发中,你是否曾遇到过这样的困境:精心设计的算法,在单机测试时一切正常,一旦部署到多节点环境,就频频出现数据不一致、死锁或竞态条件等诡异问题?事后排查犹如大海捞针,逻辑复杂到…

比较好的亚太EMBA,问了6位校友师资差别真的挺大

比较好的亚太EMBA,问了6位校友师资差别真的挺大

2026/8/13 11:01:28

比较好的亚太EMBA核心差异先看什么?对于希望兼顾工作与系统管理能力提升的亚太区高管而言,筛选匹配度高的EMBA项目时,师资配置是决定学习体验与实际收获的核心要素之一。我们结合3-4个公开信息透明、办学历史较长的亚太区主流EMBA项目特点&am…

备考3个月对比6份资料 海外游学的亚洲EMBA面试注意点

备考3个月对比6份资料 海外游学的亚洲EMBA面试注意点

2026/8/11 8:44:43

备考海外游学的亚洲EMBA面试,核心要围绕项目国际化设计逻辑、个人跨文化管理经验匹配度两个维度准备,避免把游学模块等同于普通旅游参访的认知偏差。不少备考者花3个月对比6份资料,却容易忽略面试官对“国际视野落地能力”的考察——比如香港…

比较好的国内EMBA,问了二十位校友聊透人脉价值

比较好的国内EMBA,问了二十位校友聊透人脉价值

2026/8/13 17:17:06

比较好的国内EMBA核心差异体现在哪些方面?比较好的国内EMBA的核心长期价值,很大程度上依托于校友网络的连接质量与资源生态的活跃度,这也是不少高管在择校时优先考量的因素。我们结合3-4个市场关注度较高的项目公开信息,从课程、师…

大连网站建设找简维科技:为您打造懂业务更懂用户的数字化转型引擎

大连网站建设找简维科技:为您打造懂业务更懂用户的数字化转型引擎

2026/8/14 0:01:53

在这个数字化浪潮席卷全球的今天,企业想要在激烈的市场竞争中站稳脚跟,拥有一张好看的“数字名片”已经远远不够了。很多老板在刚开始接触互联网业务时,都有一个共同的困惑:为什么我花了钱建的网站,就像是在真空中自嗨?访客进来转了两圈就跑了,线索石沉大海,甚至连客服…

临沂网站建设铭镇:深耕本土数字生态,以匠心铸就企业品牌核心竞争力

临沂网站建设铭镇:深耕本土数字生态,以匠心铸就企业品牌核心竞争力

2026/8/14 0:01:54

在这个流量为王、视觉至上的互联网时代,对于临沂乃至整个山东乃至全国的传统中小企业来说,拥有一张精美的“数字名片”早已不再是可选项,而是生存的必答题。每当夜幕降临,沂河两岸灯火辉煌,物流之都的喧嚣逐渐沉淀为对未来的思考。我们常常听到老板们在茶余饭后探讨:为什…

Flutter与OpenHarmony实现剧本杀组队表单开发实战

Flutter与OpenHarmony实现剧本杀组队表单开发实战

2026/8/14 0:01:54

1. 项目概述在移动应用开发领域,跨平台框架Flutter因其高效的开发体验和出色的性能表现,已经成为众多开发者的首选。而OpenHarmony作为新兴的操作系统平台,其开放性和灵活性为开发者提供了全新的可能性。本文将聚焦于一个实际应用场景——剧本…

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

2026/8/8 5:07:31

一天写完毕业论文在2026年已不再是天方夜谭。2026年最炸裂、实测能大幅提速的AI论文写作工具,覆盖选题构思、文献整理、内容生成、格式排版等核心场景,真正帮你高效搞定论文难题。 一、全流程王者:一站式搞定论文全链路(一天定稿首…

导师推荐!2026最新AI论文工具测评与实用推荐

导师推荐!2026最新AI论文工具测评与实用推荐

2026/8/9 13:42:46

2026年真正好用的AI论文工具,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。 一、…

告别游戏崩溃:XCOM 2模组管理器的智能革命

告别游戏崩溃:XCOM 2模组管理器的智能革命

2026/8/8 2:30:15

告别游戏崩溃:XCOM 2模组管理器的智能革命 【免费下载链接】xcom2-launcher The Alternative Mod Launcher (AML) is a replacement for the default game launchers from XCOM 2 and XCOM Chimera Squad. 项目地址: https://gitcode.com/gh_mirrors/xc/xcom2-lau…