Linux 驱动 ⭐⭐⭐⭐
Linux Driver learning
小麦大叔
这个作者很懒,什么都没留下…
展开
-
Linux内核中container_of的原理及其使用详解
介绍了container_of的原理以及用法;原创 2020-07-22 22:12:03 · 9507 阅读 · 3 评论 -
Android 8.1 关机充电动画(三)Android模式
system:Android 8.1platform:RK3326/PX30`Android`模式下的关机充电动画修改相对来说需要修改`Linux`应用层的东西了,可以定位到源码路径`/system/core/healthd`下,和`uboot`模式类似,这里只需要修改轮播的充电图片,然后将每张图片和电量百分比对应到代码中即可,思路还是比较简单的,下面我会慢慢分析具体实现的细节。原创 2019-04-13 16:16:45 · 6749 阅读 · 2 评论 -
Android 8.1 关机充电动画(二)Uboot模式
system:Android 8.1platform:RK3326/PX30这部分要涉及到`uboot`下关机充电动画的定制,属于比较`low level`的部分,所以代码修改的部分不大,在`uboot`中主要是对多张图片进行轮播,所以这里的主要工作是定位到相应的代码以及如何定制自己的动画。原创 2019-04-13 16:15:48 · 5443 阅读 · 0 评论 -
Android 8.1 关机充电动画(一)模式选择
system:Android 8.1platform:RK3326/PX30文章目录前言配置代码分析函数原型前言关机充电的动画可以在u-boot或者Android的charger模式工作,这是两个相互独立的部分,RK平台上需要在设备树进行配置。顾名思义u-boot下的charger模式,系统仍然运行在loader下,并未启动内核。Android的charger模式下,在引导程序运行期间会...原创 2019-04-10 19:36:03 · 9321 阅读 · 5 评论 -
Android 电池管理系统架构总结 Android power and battery management architecture summaries
文章目录1 整体架构2 设计构架2.1 driver2.1.1 Charger.ko2.1.2 Battery.ko2.2 power supply2.2.1 基础架构2.2.2 代码分析2.3 healthd2.3.1 基础架构2.3.2 init2.3.4 update2.4 framework3 总结参考1 整体架构Android的电池架构包括从顶层用户使用App需要调用的电池相关的An...原创 2019-03-18 21:46:50 · 5700 阅读 · 7 评论 -
Linux Charger IC 驱动移植总结
Linux Charger IC 驱动移植总结通过这次移植ti的charger ic芯片到平台上,总结了以下一些内容,需要用到并且掌握的内容。在此之前我还没有尝试写过内核4.0以上的驱动,对于设备树的配置只不过是看过语法,也并未太深入的了解。在这里对所需要涉及到的知识点简单做一下梳理和总结。1 设备树的基本知识设备树的概念Linux中设备树的主要目的是提供一种描述不可发现硬件的方法。此信息...原创 2019-01-04 16:58:33 · 5572 阅读 · 0 评论 -
Battery Charging Specification Revision 1.2 中文版本
Battery Charging SpecificationRevision 1.2Li,Guanglei2014.04.03 Rev0.1转载请注明转自:http://blog.csdn.net/liglei1. Introduction 第一章 简介1.1 Scope 适用范围规范定义...转载 2019-01-03 10:04:07 · 4546 阅读 · 0 评论 -
Linux内核驱动学习(十)Input子系统详解
这次主要会学习Linux中对于输入设备统一封装的框架,在计算机组成原理中,我们可以知道计算机的组成主要分为五个部分:控制器,运算器,存储器,输入,输出。可见,输入作为其中的一个子系统,但是对于众多的设备来说,需要一套统一的规范。所以,在嵌入式系统中的外设,鼠标、键盘、按键、G-Sensor等等都可以注册为Input设备。Linux在用户层提供了相应的接口读取数据,这里我暂时只介绍在上一篇文章的基础上,如何编写一个Input驱动。原创 2019-06-11 15:44:56 · 3868 阅读 · 1 评论 -
Linux内核驱动学习(九)GPIO外部输入的处理
文章目录两种方式轮询外部中断如何选择设备树代码分析总结附录两种方式轮询外部中断如何选择对于实时要求相对较高的情况,建议使用外部中断,设备树代码分析总结附录...原创 2019-05-13 21:01:00 · 3566 阅读 · 1 评论 -
Linux内核驱动学习(八)GPIO驱动模拟输出PWM
上一篇的学习中总结了GPIO的一些基本的概念,GPIO驱动在设备树中的写法,Linux系统下配置gpiolib的方法以及常用接口,本篇的学习总结会进行一次实战操作GPIO,将实现一个驱动可以对IO口进行输入输出以及外部中断的接收等等操作。原创 2019-05-06 22:55:33 · 11884 阅读 · 3 评论 -
Linux内核驱动学习(七)应用层直接操作GPIO
文章目录简介原理图节点设置为输出设置为输入映射关系简介前面通过libgpio的方式介绍了内核空间对GPIO进行操作的接口,其做了较好的封装,同时Linux系统的sysfs机制已经在系统路径下/sys/class/gpio注册了相应的节点,通过读写该节点下的文件就能轻松的完成GPIO输入输出配置以及引脚状态的获取。原理图我使用的Rockchip的px30,引脚是GPIO3_D0,具体硬件肯定...原创 2019-05-04 17:10:04 · 6061 阅读 · 2 评论 -
Linux内核驱动学习(六)GPIO之概览
文章目录前言功能如何使用设备树API代码实现前言GPIO(General Purpose Input/Output)通用输入/输出接口,是十分灵活软件可编程的接口,功能强大,十分常用,SOC也非常依赖GPIO,在实际应用中几乎都能看到它的影子,在Linux内核驱动的学习中,这部分相对来说也是比较基础的,但是涉及的东西其实相对来说也比较多,感觉还是很有必要学习和总结一下。功能正如之前所说,G...原创 2019-05-04 07:47:44 · 3737 阅读 · 5 评论 -
Linux内核驱动学习(五)KThread学习总结
文章目录简介例程运行结果参考简介使用内核线程需要包含头文件#include <linux/kthread.h>,下面整理了一下常用的api接口,如下表格所示;函数功能struct task_struct * kthread_create(threadfn, data, namefmt, arg...)创建一个线程struct task_struct *...原创 2019-03-05 13:21:55 · 5785 阅读 · 2 评论 -
Linux内核驱动学习(四)Platform设备驱动模型
Linux platform设备驱动模型文章目录Linux platform设备驱动模型前言框架设备与驱动的分离设备(device)驱动(driver)匹配(match)参考前言为什么要往平台设备驱动迁移?这里需要引入设备,总线,驱动这三个概念。上一篇字符型设备驱动的实现实际将设备和驱动集成到同一个文件中实现,如果这里有硬件A的驱动,硬件B的驱动,硬件C的驱动,然后有三类用户接口E,接口F和...原创 2019-02-15 21:10:22 · 3476 阅读 · 0 评论 -
Linux内核驱动学习(三)字符型设备驱动之初体验
Linux字符型设备驱动之初体验文章目录Linux字符型设备驱动之初体验前言框架字符型设备程序实现cdevkobjownerfile_operationsdev_t设备注册过程申请设备号注册设备register_device如何构建模块编译内核编译MakefileKconfig总结参考前言驱动总共分为字符型设备驱动,块设备驱动,网络设备驱动。对于字符型设备驱动的资料,网上比较多,《Linux...原创 2019-02-05 10:13:28 · 3618 阅读 · 1 评论 -
Linux内核驱动学习(二)添加自定义菜单到内核源码menuconfig
文章目录目标drivers/Kconfigdemo下的Kconfig 和 MakefileKconfigMakefiledemo_gpio.c目标Kernel:Linux 4.4我编写一个简单的hello worldLinux 内核模块后,已经可以通过inmod动态加载到系统内核中,并通过rmmod卸载模块。但是出于学习的目的,我想把这个内核添加到Linux源码中,并且可以通过Kconfig...原创 2019-01-27 17:23:05 · 3555 阅读 · 0 评论 -
Linux内核驱动学习(一)编写最简单Linux内核模块HelloWorld
文章目录准备工作什么是内核模块编写 hello.c模块编译相关指令测试结果模块加载模块卸载准备工作在进行以下操作前,首先我准备了一台电脑,并且安装了虚拟机,系统是Ubuntu16.04。如果是开发板,那么需要安装交叉编译器,但是目前我只在虚拟机的Ubuntu16.04系统里完成驱动模块的加载和卸载,实现了一个最最简单的驱动模块,并且通过这个最简单的驱动,学习最基本的概念。什么是内核模块模块...原创 2019-04-30 08:05:32 · 8007 阅读 · 4 评论 -
Linux dts 设备树详解(二) 动手编写设备树dts
在简单了解概念之后,我们可以开始尝试写一个简单的设备树,从而加深对设备树整体架构以及部分语法的理解,因为整体知识面比价庞杂,无法面面俱到,本文旨在笔者学习之初对于设备树常用部分的总结与归纳。因为会涉及到很多硬件信息的绑定,详细的可以查阅Linux内核源码下的文档`Documentation/devicetree/bindings`。具体如下图所示;![设备树文档](https://img-blog.csdnimg.cn/20190612082729898.png)原创 2019-06-12 09:41:21 · 11812 阅读 · 6 评论 -
Linux dts 设备树详解(一) 基础知识
设备树(Device Tree)是描述计算机的特定硬件设备信息的数据结构,以便于操作系统的内核可以管理和使用这些硬件,包括CPU或CPU,内存,总线和其他一些外设。设备树是通过`Open Firmware`项目从基于SPARC的工作站和服务器派生而来的。当前的Devicetree一般针对嵌入式系统,但仍然与某些服务器级系统一起使用(例如,Power Architecture Platform Reference所描述的系统)。...原创 2019-05-06 22:56:31 · 18562 阅读 · 9 评论 -
Linux 内核工作队列之work_struct 学习总结
前言编写Linux驱动的时候对于work_struct的使用还是很普遍的,很早之前就在阅读驱动源码的时候就看到了它的踪影,根据其命名大概知道了它的具体作用,但是仍然不知所以,同时,伴随出现的还有delayed_work以及workqueue_struct,抱着知其然并知其所以然的态度,在这里归纳总结一下work_struct,以及如何在驱动中使用,因为工作队列相对来说比较复杂,篇幅和能力有限,只...原创 2019-03-06 16:15:59 · 10977 阅读 · 3 评论 -
Linux 内核代码风格
文章目录从编码风格错误开始快速修改编码风格的工具scripts/checkpatch.plscripts/LindentastyleLinux 内核代码风格1) 缩进2) 把长的行和字符串打散3) 大括号和空格的放置3.1) 空格4) 命名5) Typedef6) 函数7) 集中的函数退出途径8) 注释9) 你已经把事情弄糟了10) Kconfig 配置文件11) 数据结构12) 宏,枚举和RTL...原创 2019-03-08 09:58:57 · 3151 阅读 · 0 评论 -
Linux Kernel Makefiles Kbuild en
Linux menuconfig Kconfig makefile 详解,介绍如何将驱动加入到内核代码中,如何添加到menuconfig菜单中。原创 2019-01-15 18:37:35 · 2896 阅读 · 0 评论 -
探索Linux内核:Kconfig / kbuild的秘密
探索Linux内核:Kconfig / kbuild的秘密文章目录探索Linux内核:Kconfig / kbuild的秘密深入了解Linux配置/构建系统的工作原理Kconfigkbuild的[vmlinux_generation_process.png](https://opensource.com/file/411516)了解vmlinux与bzImage依赖性跟踪展望未来深入了解Lin...翻译 2019-02-18 08:00:43 · 4108 阅读 · 3 评论