4 lee_jimmy

尚未进行身份认证

我要认证

暂无相关简介

等级
TA的排名 7w+

mt8167s温湿度传感器框架分析——kernel层

前言前面我们已经讲解了sensor框架中的framework到vendor层,这篇文章我们将会讲解kernel层的内容。不过不同的芯片平台,kernel层中的sensor框架是不同的,这里针对的是mt8167s平台。不过这里提醒一下,MTK平台应该从kernel 3.x版本后就不支持温湿度传感器的框架了,不过幸好他们还保留了框架的雏形在,我们需要自行解决一下编译问题。正文我们先看一下代码的具体目录:drivers/misc/mediatek/sensors-1.0$ lsaccelerometer

2020-06-16 21:10:01

mt8167s温湿度传感器框架分析——framework到vendor层

mt8167s温湿度传感器框架分析——framework到vendor层关键字:mt8167s、Android 9.0、AHT10前言​ 本来如果只是给传感器写个驱动并提供能读取温湿度数据的节点,是一件比较轻松的事情,但是最近上层应用的同事要求我们按照安卓标准的流程来,这样他们就能通过注册一个服务直接读取传感器事件数据了。这样做的好处就是第三方的应用也能正常读取温湿度的数据并展示。正文​ 网上分析安卓9.0 sensor相关的资料不多,下面找到了一位大神对安卓9.0整个sensor框架总结

2020-05-23 13:46:08

安卓9.0马达框架分析

安卓9.0马达框架分析mt8167s;Android 9.0前言​ 最近需要将之前的一些驱动接口转为安卓标准接口,方便上层应用或者第三方应用去适配。这篇文章先从简单的马达框架入手进行讲解。正文​ 整个马达框架比较简单,安卓官方已经帮我们实现了framework到HAL层,我们需要实现的就只有驱动层。这篇文章我们梳理一下从上层到底层怎么流程。1、APP层import android.os.Vibrator;import android.widget.ToggleButton;pub

2020-05-23 13:04:27

FATAL: modpost: Section mismatches detected错误解决

如题,写完驱动后编译内核的时候碰到了这个错误,头一次看到这个编译错误,略懵逼,先给出完整的错误:WARNING: modpost: Found 2 section mismatch(es).To see full details build your kernel with:'make CONFIG_DEBUG_SECTION_MISMATCH=y'FATAL: modpost: Se...

2020-04-29 17:57:38

I2C设备驱动书写框架

前言在正式介绍I2C驱动框架之前,我们先了解一些基础知识。内核有两种i2c驱动程序的编写方式。分别称这两种方式为“Adapter方式(LEGACY)”和“Probe方式(new style)”。但是legacy的方式已经过时了,较新的内核版本已经无法编译通过,之前也写过legacy方式的驱动,可以参考下面的连接:I2C驱动程序。本文是介绍new style的编写方式。正文1、struc...

2020-04-10 17:04:56

【rockchip PX30平台】uboot中读取I2C设备的寄存器值

前言最近项目中有块rockchip的板子需要同时适配两块TP,但是没看到RK平台本身有这个功能,所以我们想到通过TP本身提供的sensor id去判断,然后做相应的初始化动作。所以我们需要先看一下在uboot中怎么去获取TP的sensor id值。正文TP本身是有寄存器给我们去获取一些信息,包括sensor id:如红色框起来的地方,读取寄存器0x814A的低4位就可以知...

2020-03-28 16:47:26

Linux系统中的dvfs功能

前言最近硬件的同事需要我们提供的版本能动态调频,何为动态调频呢?对于CPU来讲,功耗和性能是一对不可调和的矛盾,通过调整CPU的电压和频率,可以在功耗和性能之间找一个平衡点。由于调整是在系统运行的过程中,因此这种功能也称作动态电压/频率调整(Dynamic Voltage/Frequency Scaling,DVFS)。说白了,就是在不需要高性能时,降低电压和频率,以降低功耗;在需要高性能时,...

2020-01-29 17:34:37

对nand flash设备进行升级

前言这段时间在给板子开发一个升级的功能,板子的Flash使用的是nand flash,使用mtd去管理分区。在正式开始讲升级部分之前,我们先了解一下nand flash和mtd的基本知识,最后我还会说一下怎么升级ubi格式的rootfs分区。正文1、nand flash参考链接:https://blog.csdn.net/lee_jimmy/article/details/8208...

2020-01-29 17:02:09

Linux内核奔溃分析

前言最近遇到一个kernel奔溃的问题,错误日志开头一部分如下:[ 355.262451@0] Unhandled fault: external abort on non-linefetch (0x008) at 0xfe004328[ 355.264547@0] Internal error: : 8 [#1] PREEMPT SMP ARM[ 355.269632@0] ...

2020-01-18 17:12:09

gpio编号到描述符的转换

前言最近在调试一个新板子的LED驱动,LED灯用到了特定的GPIO引脚,而驱动中有一项工作就是需要占用某个GPIO资源并设置为输出引脚,调用的接口类似如下:#define GPIOAO_3 (3) /* GPIOAO_3这个引脚的id为3 */gpio_request(GPIOAO_3, OWNER_NAME); /* 占用GPIOAO_3这个GPIO的资源 */gpio_dir...

2020-01-18 17:04:02

Linux系统出现bus error错误

在使用memtester工具对DDR进行压力测试时,出现了一下的报错:# memtester 200M 1memtester version 4.3.0 (32-bit)Copyright (C) 2001-2012 Charles Cazabon.Licensed under the GNU General Public License version 2 (only).page...

2020-01-18 13:23:28

git学习

虽然工作中一直有用gitmin,但都是用的很简单的那几个命令,下面链接的教程挺好的,先mark一下,需要的时候翻翻看:https://git-scm.com/book/zh/v2

2019-12-15 10:32:23

vmstat命令

vmstat命令是常见的Linux系统的监控小工具,它可以显示系统的CPU、内存以及IO的使用情况.vmstat命令通常带有两个参数,第一个参数采用时间间隔,单位是s,第二个参数采用采样次数。比如,"vmstat 2 5"表示2s采样一次,并且连续采样5次。$ vmstatprocs -----------memory---------- ---swap-- -----io---- -...

2019-11-10 19:45:36

top命令

Top命令是最常用的查看Linux系统信息的命令之一,它可以实时显示系统中各个进程的资源占用情况。Tasks: 219 total, 1 running, 144 sleeping, 0 stopped, 0 zombie%Cpu(s): 0.0 us, 0.2 sy, 0.0 ni, 99.8 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st...

2019-11-10 18:44:19

一个suspend的问题分析

前言最近遇到一个待机问题,系统一直无法正常suspend,跟了一下代码,发现在PSCI的最后阶段返回了一个错误码。这篇文章我们是延续上一篇《Linux系统的suspend流程分析》,继续揭开psci的神秘面纱。正文从《Linux系统的suspend流程分析》一文我们可以看到,suspend的最后会调用到下面的函数static int psci_cpu_suspend(u32 st...

2019-10-27 23:54:35

Linux系统的suspend流程分析

第1和第2节的参考链接:http://www.wowotech.net/pm_subsystem/suspend_and_resume.html第3节开始的参考链接:https://www.cnblogs.com/arnoldlu/p/6344847.htmlhttps://blog.csdn.net/tiantao2012/article/details/72621155ht...

2019-10-27 23:40:12

per_cpu的用法

作用在Linux操作系统中,特别是针对SMP或者NUMA架构的多CPU系统的时候,描述每个CPU的私有数据的时候,Linux操作系统提供了per_cpu机制。per_cpu机制就是让每个CPU都有自己的私有数据段,便于保护与访问。声明DEFINE_PER_CPU(struct cpuidle_device *, cpuidle_devices);如何存取每个CPU的私有变量?...

2019-10-27 23:36:30

Ubuntu系统上编译和安装perl和cpan模块

前言最近在Ubuntu系统的服务器上编译代码的时候,突然报错了,百度了好几天都没有头绪,后面自己想到了一个方法,希望能帮到后面也遇到相关问题的人。正文先看一下编译错误的打印:Your Perl installation is not complete enough; at least the followingmodules are missing: E...

2019-10-20 19:10:08

tasklet使用方法

tasklet的概念我这里就不多讲了,因为网上的文章很多,我这里只介绍怎么在我们的驱动程序中使用tasklet提供的接口函数。一般,从定义到最后注销,一共有4步,下面我们分别介绍这4个接口函数。静态定义taskletstatic void my_tasklet_func(unsigned long data);DECLARE_TASKLET_DISABLED(tasklet, my_...

2019-09-05 22:55:39

Linux驱动中并发问题的相关函数

前言目前我们接触到的复杂点的系统都是SMP(对称多处理器)和preempt(抢占式)的。这篇文章我们会讲解好几种情况下,处理驱动并发问题的函数应该怎么使用,避免大材小用或者用得不巧当造成没有效果。正文1、进程和中断上下文,单CPU,非抢占内核这种情况比较简单,因为是非抢占的,所以同一个CPU上的两个进程之间不用相互顾忌对方,而且又是单CPU的,又不用怕其它CPU的中断来打扰,所以只...

2019-09-03 23:20:50

查看更多

勋章 我的勋章
  • 新人勋章
    新人勋章
    用户发布第一条blink获赞超过3个即可获得
  • 阅读者勋章Lv1
    阅读者勋章Lv1
    授予在CSDN APP累计阅读博文达到3天的你,是你的坚持与努力,使你超越了昨天的自己。
  • 专栏达人
    专栏达人
    授予成功创建个人博客专栏的用户。专栏中添加五篇以上博文即可点亮!撰写博客专栏浓缩技术精华,专栏达人就是你!
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv1
    勤写标兵Lv1
    授予每个自然周发布1篇到3篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。