文章 2022-12-13 来自:开发者社区

嵌入式linux/鸿蒙开发板(IMX6ULL)开发(三十二)LED模板驱动程序的改造:设备树

1.LED模板驱动程序的改造:设备树1.1 总结3种写驱动程序的方法核心永远是file_operations结构体。 上述三种方法,只是指定“硬件资源”的方式不一样。从上图可以知道,platform_device/platform_driver只是编程的技巧,不涉及驱动的核心。1.2 怎么使用设备树写驱动程序1.2.1 设备树节点要与platform_driver能匹配在我们的工作中,驱动要求设....

嵌入式linux/鸿蒙开发板(IMX6ULL)开发(三十二)LED模板驱动程序的改造:设备树
文章 2022-12-13 来自:开发者社区

嵌入式linux/鸿蒙开发板(IMX6ULL)开发(三十一)驱动进化之路:设备树的引入及简明教程(下)

1.7.3 有些节点不会生成platform_device,怎么访问它们内核会把dtb文件解析出一系列的device_node结构体,我们可以直接访问这些device_node。内核源码incldue/linux/of.h中声明了device_node和属性property的操作函数,device_node和property的结构体定义如下:1.7.3.1 找到节点a. of_find_node....

嵌入式linux/鸿蒙开发板(IMX6ULL)开发(三十一)驱动进化之路:设备树的引入及简明教程(下)
文章 2022-12-13 来自:开发者社区

嵌入式linux/鸿蒙开发板(IMX6ULL)开发(三十一)驱动进化之路:设备树的引入及简明教程(中)

1.3 编译、更换设备树我们一般不会从零写dts文件,而是修改。程序员水平有高有低,改得对不对?需要编译一下。并且内核直接使用dts文件的话,就太低效了,它也需要使用二进制格式的dtb文件。1.3.1 在内核中直接make设置ARCH、CROSS_COMPILE、PATH这三个环境变量后,进入ubuntu上板子内核源码的目录,执行如下命令即可编译dtb文件:make dtbs V=1这些操作...

嵌入式linux/鸿蒙开发板(IMX6ULL)开发(三十一)驱动进化之路:设备树的引入及简明教程(中)
文章 2022-12-13 来自:开发者社区

嵌入式linux/鸿蒙开发板(IMX6ULL)开发(三十一)驱动进化之路:设备树的引入及简明教程(上)

1.驱动进化之路:设备树的引入及简明教程官方文档(可以下载到devicetree-specification-v0.2.pdf):链接内核文档: Documentation/devicetree/booting-without-of.txt韦老师录制“设备树视频”时写的文档:设备树详细分析.txt这个txt文件也同步上传到wiki了:链接我录制的设备树视频,它是基于s3c2440的,用的是lin....

嵌入式linux/鸿蒙开发板(IMX6ULL)开发(三十一)驱动进化之路:设备树的引入及简明教程(上)
文章 2022-12-13 来自:开发者社区

嵌入式linux/鸿蒙开发板(IMX6ULL)开发(二十九)驱动进化之路:总线设备驱动模型

示例:1.1 驱动编写的3种方法以LED驱动为例:1.1.1 传统写法使用哪个引脚,怎么操作引脚,都写死在代码中。 最简单,不考虑扩展性,可以快速实现功能。 修改引脚时,需要重新编译。1.1.2 总线设备驱动模型引入platform_device/platform_driver,将“资源”与“驱动”分离开来。 代码稍微复杂,但是易于扩展。冗余代码太多,修改引脚时设备端的代码需要重新编译。 更换引....

嵌入式linux/鸿蒙开发板(IMX6ULL)开发(二十九)驱动进化之路:总线设备驱动模型
文章 2022-12-13 来自:开发者社区

嵌入式linux/鸿蒙开发板(IMX6ULL)开发(二十八)驱动设计的思想:面向对象/分层/分离

1.1 面向对象字符设备驱动程序抽象出一个file_operations结构体; 我们写的程序针对硬件部分抽象出led_operations结构体。1.2 分层上下分层,比如我们前面写的LED驱动程序就分为2层:① 上层实现硬件无关的操作,比如注册字符设备驱动:leddrv.c②下层实现硬件相关的操作,比如board_A.c实现单板A的LED操作1.3 分离还能不能改进?分离。 在board_A....

嵌入式linux/鸿蒙开发板(IMX6ULL)开发(二十八)驱动设计的思想:面向对象/分层/分离
文章 2022-12-13 来自:开发者社区

嵌入式linux/鸿蒙开发板(IMX6ULL)开发(二十七)具体单板的LED驱动程序

以下板子选用的内核都是4.x版本,操作都是类似的:rk3399 linux 4.4.154 rk3288 linux 4.4.154 imx6ul linux 4.9.88 am3358 linux 4.9.1681.1 怎么写LED驱动程序?详细步骤如下:① 看原理图确定引脚,确定引脚输出什么电平才能点亮/熄灭LED②看主芯片手册,确定寄存器操作方法:哪些寄存器?哪些位?地址是?...

嵌入式linux/鸿蒙开发板(IMX6ULL)开发(二十七)具体单板的LED驱动程序
文章 2022-12-13 来自:开发者社区

嵌入式linux/鸿蒙开发板(IMX6ULL)开发(二十五)最简单的LED驱动程序

1.写LED驱动程序1.1第一步 先看原理图1.2第二步 再看芯片手册:使能GPIO1.3 第三步 设置引脚是GPIO功能1.4 第四步 设置引脚是输出1.5 第五步 设置输出电平2.最简单的LED驱动程序后面的LED驱动程序为了容易扩展,引入了很多数据结构。对C语言的要求有点高,所以我们基于Hello驱动程序先写出最简单的LED驱动程序。2A.1 LED操作方法_基于IMX6ULL视频中的文档....

嵌入式linux/鸿蒙开发板(IMX6ULL)开发(二十五)最简单的LED驱动程序
文章 2022-12-13 来自:开发者社区

嵌入式linux/鸿蒙开发板(IMX6ULL)开发(二十四)具体单板的GPIO操作方法

这部分的工作比较复杂,其实写gpio,就是要学会看芯片手册。打印芯片手册,然后研读是学习的必要。最好英文版。1.具体单板的GPIO操作方法1.1 IMX6ULL的GPIO操作方法CCM: Clock Controller Module (时钟控制模块)IOMUXC : IOMUX Controller,IO复用控制器GPIO: General-purpose input/output,通用的输入....

嵌入式linux/鸿蒙开发板(IMX6ULL)开发(二十四)具体单板的GPIO操作方法
文章 2022-12-13 来自:开发者社区

嵌入式linux/鸿蒙开发板(IMX6ULL)开发(二十三)普适的GPIO引脚操作方法

1.普适的GPIO引脚操作方法GPIO: General-purpose input/output,通用的输入输出口1.1 GPIO模块一般结构a. 有多组GPIO,每组有多个GPIOb. 使能:电源/时钟 c. 模式(Mode):引脚可用于GPIO或其他功能d. 方向:引脚Mode设置为GPIO时,可以继续设置它是输出引脚,还是输入引脚e. 数值:对于输出引脚,可以设置寄存器让它输出高、低电平....

嵌入式linux/鸿蒙开发板(IMX6ULL)开发(二十三)普适的GPIO引脚操作方法

本页面内关键词为智能算法引擎基于机器学习所生成,如有任何问题,可在页面下方点击"联系我们"与我们沟通。

开发与运维

集结各类场景实战经验,助你开发运维畅行无忧

+关注