随笔分类 - Linux 驱动开发
此类笔记主要分享与 Linux 驱动相关的知识
摘要:文章介绍 本文主要是基于 T507 Android 10 Linux 4.9 的源代码,对 Linux W1 总线框架的分析记录,便于了解整个框架的基本实现机制。 驱动框架 这张图基本上将内部的各个源文件相互关系表述出来了。 简析说明 master linux-4.9/drivers/w1/mast
阅读全文
摘要:分析平台:全志 A64 内核版本:Linux 4.9 数据手册:Allwinner_A64_User_Manual_V1.1.pdf (whycan.com) 驱动框架 I2C 设备驱动 作为方案应用来说,我们是最经常要动的地方,这一层主要与具体的芯片功能强关联,不同的芯片具有不同的使用方法,如触摸
阅读全文
摘要:相关信息 内核版本:Linux version 4.9.56 驱动文件:lichee\linux-4.9\drivers\video\backlight\backlight.c 驱动作用 对上,面对应用层提供统一的设备节点入口同级,面对驱动层提供设备驱动加载卸载通知事件,以及背光控制接口。对下,面对
阅读全文
摘要:参考资料 器件规格书:https://atta.szlcsc.com/upload/public/pdf/source/20131104/1457706659695.pdf I2C总线规范:https://community.nxp.com/pwmxy87654/attachments/pwmxy8
阅读全文
摘要:驱动移植 供应商无法提供相应的驱动程序,不过在 linux 最新的内核倒是有一份 pcf85363 的驱动,看代码并核对寄存器功能,是可以兼容 pcf85263 芯片。只是我们用的内核比较老 linux 4.9,rtc 子系统的接口有些变化,不能直接拿来用。根据 Linux 4.9 现有的驱动程序,
阅读全文
摘要:一、踩坑缘由 在调试 I2C 器件时,我一般习惯于使用 i2cdetect 工具来确认芯片是否有应答,通常有应答之后,就会开始着手移植或者编写对应的驱动程序,但是在调试 sgp41 传感器时却不灵了。 二、问题现象 在连续完成多个 I2C 器件的调试和驱动开发之后,最后一个 sgp41 传感器却一直
阅读全文
摘要:记录说明 原本这么简单的芯片,没有必要做记录,后来发现其中有一颗单独挂在 TWI2 无法通信,而主要原因是最容易忽视的电源域的问题,因此记录一下这件事情。 芯片介绍 MCP3021 是一颗 10BIT 的 ADC 器件,直接通过 I2C 读取两个字节的数据即可获取到 10BIT 的数值。 分析过程
阅读全文
摘要:基本原理 该看门狗的设备驱动实现原理很简单,比较主要的有两点: 一、定时器喂狗 通过定时器根据配置文件配置的喂狗方式(如脉冲切换、电平切换),对指定的 gpio 进行脉冲切换或电平切换实现喂狗。 脉冲切换 指的是喂狗时,会给 gpio 一个 1us 宽度的高电平或低电平(取决于配置的 gpio 电平
阅读全文
摘要:使用说明 第一次遇到看门狗芯片是通过切换电平信号来喂狗,如 SGM706 芯片,之前也比较少会用到看门狗芯片。原本打算参考 sunxi-wdt.c 的框架,利用定时器自己写一个,无意中发现内核已经有 gpio_wdt.c 驱动程序,其原理也是通过内核定时器实现喂狗。因其使用了 of_get_gpio
阅读全文
摘要:硬件信息 内核版本:Linux 4.9 硬件原理: GPIO 通过一颗 MOS 管(2N7002ET1G),接到 LED 负极,LED 正极接电源。GPIO 通过拉高导通 MOS ,将 LED 接地,实现点亮 LED。 内核配置 配置内核驱动:make ARCH=arm64 menuconfig D
阅读全文
摘要:内核配置 内核版本:Linux version 4.9.56 make ARCH=arm64 menuconfig Device Drivers > Input device support > [*] Keyboards > <*> GPIO Buttons 配置文件 sys_config.fex
阅读全文
摘要:一、input 子系统简介 输入子系统主要用于支持各种输入设备,可大大简化这类设备驱动的开发难度。以下为个人的理解,可能不同的内核版本会略有差异,在这里分析的内核为 linux-4.9。 无论在 Linux 是什么子系统,其目的都是为了将硬件相关的进行解耦,提高代码的复用性,简化设备驱动的开发难度。
阅读全文
摘要:自旋锁简单说明: 自旋锁主要解决在竞态并发下,保护执行时间很短的临界区。它只允许一个执行单位进入临界区,在该执行单位离开前,其它的执行单位将会在进入临界区前不停的循环等待(即所谓的自旋),直至该执行单位离开临界区后,最先等待的一个执行单位会立即进入临界区。此方式不涉及到上下文切换,因此效率极高。 出
阅读全文
摘要:Tasklet 介绍 Linux 内核提供的四种中断下半部中 softirq(软中断)、tasklet(小任务)、workqueue(工作队列) 、request thread(中断线程)中的其中一种,其效率仅次于软中断,但远高于request thread 和 workqueue。 软中断(sof
阅读全文
摘要:全志 Tina 系统的 USB Gadget 配置方法,随笔记录,实测为 R311 平台,其它平台应该通用。 一、配置内核 二、编译驱动并加载 # UAC insmod usb_f_uac1.ko # NCM insmod u_ether.ko insmod usb_f_ncm.ko # ACM i
阅读全文
摘要:一、模拟网卡简介 在 Linux 通过 usb 模拟网卡时,有四种方式: 1. 使用 usb gadget rndis 2. 使用 usb gadget ecm 3. 使用 usb gadget ncm 4. 使用 usb gadget eem rndis:是微软公司制定的协议规范, 不过似乎规范不
阅读全文
摘要:ASOC 各部分框图示意 Platform 一般由 SOC 芯片原厂负责编写,主要涉及到 SOC 内部数字音频接口DAI(I2S)和 DMA 的寄存器配置。 Codec 一般由硬件方案的驱动工程师或者 Codec 芯片原厂负责编写,主要涉及到 Codec 芯片相关的寄存器配置。 Machine 一般
阅读全文
摘要:前言说明 在项目开发初期,很经常会需要临时操作某个GPIO来验证某些功能,可以通过编写一个简单的驱动程序来操作,但更方便的是可以通过命令行直接操作 GPIO ,这样不需要经过编写代码、编译驱动、推入文件、加载驱动那么繁琐的步骤。 以下为全志平台命令行操作 GPIO 的方法 启用功能 挂载 debug
阅读全文
摘要:前言概述 因以下原因,导致不得不通过代码分析来学习如何在该平台下进行摄像头驱动移植 香橙派开发商(迅龙软件)仅提供能跑起来的源代码、固件,以及简单的编译文档,不提供其它技术支持baidu、google 所找到的修改方法与所拿到的源代码完全不符,因此无借鉴价值借助搜索引擎以及一些论坛也没有找到可以参考
阅读全文