自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(21)
  • 资源 (3)
  • 问答 (1)
  • 收藏
  • 关注

原创 MTK平台添加虚拟sensor

一、添加一个新的sensor类型HUB部分1、/vendor/mediatek/proprietary/tinysys/freertos/source/middleware/contexthub/contexthub_fw.c在uint8_t chreTypeToMtkType(uint8_t sensortype)中添加: case SENS_TYPE_PICKUP_TEST: return SENSOR_TYPE_PICKUP_TEST;在uin

2021-08-18 20:03:04 1952 1

原创 字符设备驱动demo

一、简介 如下是写一个字符驱动设备的一般步骤: 1、为设备定义一个设备相关的结构体(包含设备涉及的cdev,私有数据等) 2、初始化函数的定义 ① 向系统申请设备号(register_chrdev_region()或alloc_chrdev_region()) ② 使用kzalloc 申请设备内存(为1 中定义的结构体申请存储空间) ③ 调用cdev_init()初始化cdev ④ 调用cdev_add()...

2021-02-01 16:56:10 569

原创 linux workqueue demo

该系列为linux中常见功能demo,方便后续以此进行扩展应用。一、简介 workqueue是对内核线程封装的用于处理各种工作项的一种处理方法, 由于处理对象是用链表拼接一个工作项, 依次取出来处理, 然后从链表删除,就像一个队列排好队依次处理一样, 所以也称工作队列,所谓封装可以简单理解一个中转站, 一边指向“合适”的内核线程, 一边接受你丢过来的工作项, 用结构体 workqueue_srtuct表示, 而所谓工作项也是个结构体 -- work_struct, 里面有个成员指针, 指向你...

2021-01-05 15:00:08 353

原创 4、I3C协议详解

I3C最初的设计目的是为移动设备创建一个能够使用多个传感器的单一接口。随着现代化移动设备对于传感器数量的增加以及对性能的提高,I2C和SPI已经达到了他们所能支持的临界点,而I3C的出现就是为了解决这一问题,I3C可以在同一根主线上支持更多的传感器设备,而且不会因为要支持中断或睡眠模式而增加额外的逻辑信号。I3C可以在更低功耗的情况下提供更快的传输速率,该特性的提升不止是对移动设备,对其他的嵌入式设备也都是很大的帮助。例如穿戴设备,需要在有限的物理空间中使用多个传感器并且要求更小的耗电。一、简述..

2020-10-13 09:57:37 14001 2

原创 3、I2C协议详解

一、简述 I2C(Inter-Integrated CircuitBUS) 集成电路总线,只有两根双向信号线,一根是数据线SDA,另一根是时钟线SCL。 系统中的所有外围器件都具有一个7位的“从器件专用地址码”,其中高4位为器件类型,由生产厂家制定,低3位为器件引脚定义地址,由使用者定义( 之所以7bit因为1个bit要代表方向,主向从和从向主)。主控器件通过地址码建立多机通信的机制,因此I2C总线省去了外围器件的片选线,这样无论总线上挂接多少个器件,其系统仍然为...

2020-10-13 09:56:23 821

原创 2、SPI协议详解

一、简述 SPI Bus(Serial Peripheral Interface Bus) 最早是由Motorola(摩托罗拉)公司开发的全双工同步串行总线。实际它并没有统一的协议规范,只是随之其广泛的应用,形成了习惯性的标准。具体的还是要参考特定的器件手册。二、连接方式SPI一对一 SPI用于在单个主控制器和一个或多个从设备之间交换数据。提供时钟的为主设备(Master),接收时钟的设备为从设备(Slave),对于单从设备连接...

2020-10-13 09:49:56 1079

原创 1、UART协议详解

一、简述 通用异步收发传输器(Universal Asynchronous Receiver/Transmitter,通常称作UART)。常用的是串行异步收发协议,其原理是将传输线上的二进制一位一位地顺序传输。UART的通信线路简单,只需要三根线即可实现两个设备之间的传输,但是传输速率是最慢的。当然两个设备使用UART串口通讯时,必须先约定好传输速率和一些数据位。二、连接方式 TX:发送数据端,要接对面设备的RX RX:接收数据端,要接对面设备的TX GND:...

2020-10-13 09:47:34 1755

原创 2、slpi 初始化

一、slpi 入口 slpi的入口在/AMSS/slpi_proc/ssc/utils/osa/中,我们先看下build/osa.scons env.AddRCInitFunc( ['SSC_SLPI_USER','MODEM_MODEM','SSC_ADSP_USER'], { 'sequence_group' : 'RCIN...

2019-11-28 11:14:03 4357 1

原创 1、sensor see框架

高通从SDM845平台开始,Sensor使用新的架构SEE(Sensors Execution Environment),和之前架构不同,新的架构有着太多的优点。一、软件框图二、新旧框架对比 从上图可以看到,新架构简化太多,SEE充当了Core层的重要角色。负责传送request,接收event。三、SEE框架改进四、设计概念框架组件按功能模块化...

2019-11-27 14:44:52 6342 5

原创 I3C——代码相关(杂记)

8150代码中当前能够使用的还只是sensor。我们来看下其中的定义以及对应的使用方法。如果支持I3C,那么SSC_TARGET_NO_I3C_SUPPORT该宏将不会被定义。 AMSS/slpi_proc/ssc/build/ssc.scons#'SSC_TARGET_NO_I3C_SUPPORT' to be removed after core team gives ...

2019-03-14 17:40:52 4805 1

原创 I3C简介

1、I2C的不足之处从设备无法主动向主设备发起通讯 降低吞吐量和上拉电阻限制了时钟速率且使得功耗偏高2、SPI的不足之处需要四根通讯线路来进行较大的数据通讯 没有一个明确的定义标准3、I3C特性明确的定义标准 两条通讯线路(DCL和SDA) 带内中断 带内命令代码 动态寻址 多主/多点通讯特性 支持热链接(是否是热拔插) 错误检查 向后兼容I2C...

2019-03-14 17:19:27 17977 4

原创 字符转数字(包含负数)

如下demo为在内核中将字符转为数字。其原理就是将每一个字符单独拿出来然后重新拼接相加。正负值通过flag控制。#include <stdio.h>#include <string.h>#include <assert.h>int tran(char *s){ assert(s && strlen(s)); int ...

2019-03-11 11:09:40 2111

转载 linux内核里的字符串转换 ,链表操作常用函数

1.对双向链表的具体操作如下:list_add———向链表添加一个条目 list_add_tail———添加一个条目到链表尾部 __list_del_entry———从链表中删除相应的条目 list_replace———用新条目替换旧条目 list_del_init———从链表中删除条目后重新初始化 list_move———从一个链表中删除并加入为另一个链表...

2019-03-07 21:08:54 1676

转载 【Linux】proc_create的使用方法

proc_create的使用方法proc文件系统是个有用的东东。创建一个proc虚拟文件,应用层通过读写该文件,即可实现与内核的交互。proc虚拟文件是如何创建的呢?先看看比较简单的,创建proc文件夹。调用以下函数,即可实现proc文件夹的创建:struct proc_dir_entry *proc_mkdir(const char *name, struct proc_dir_...

2019-03-06 15:17:14 3730

转载 linux下devicetree中惯用的of函数

linux下devicetree中常用的of函数 从device_node中获取信息:int of_property_read_u8_array(const struct device_node *np, const char *propname,u8 *out_values, size_t sz);int of_property_read_u16_array(const stru...

2018-11-15 14:33:37 5640 4

原创 MTK平台通过adb获取GPIO状态

之前介绍了高通平台对应GPIO状态的查看https://mp.csdn.net/postedit/82345424。现在我们来看下MTK平台是如何实现的。一、节点位置    在MTK平台,我们可以通过cat节点(mt_gpio)来查看对应的状态。不同的平台,该管脚对应的位置也是不同的,建议直接进入手机目录查看:adb shellfind -name "mt_gpio"我这查看到...

2018-10-27 12:38:12 3828

原创 android LCM启动流程——LK

目录一、整体流程概述二、详细流程分析1、LK中LCD的唯一入口target_display_init()gcdb_display_init()2、屏幕识别&获取初始化参数信息oem_panel_select()dsi_panel_init初始化panel结构体3、屏幕进一步初始化及点亮mdss_dsi_panel_power()mdss_ds...

2018-09-12 19:23:51 2746 1

转载 【转】Linux设备驱动模型之platform总线详解

1、什么是platform(平台)总线?    相对于USB、PCI、I2C、SPI等物理总线来说,platform总线是一种虚拟、抽象出来的总线,实际中并不存在这样的总线。    那为什么需要platform总线呢?其实是Linux设备驱动模型为了保持设备驱动的统一性而虚拟出来的总线。因为对于usb设备、i2c设备、pci设备、spi设备等等,他们与cpu的通信都是直接挂在相应的总线下面...

2018-09-10 17:15:32 462

原创 高通平台GPIO模拟PWM控制背光

    很多时候由于节省硬件资源,降低成本,会把PWM控制芯片去掉或者是改做它用,导致当我们想用PWM方式控制背光时只能使用带有clk功能的GPIO口。本篇文档就来讲解下如何使用GPIO模拟PWM功能进行背光的控制。本文以MSM8909为例。一、选取GPIO口并进行配置    1、需要查看寄存器手册,选取对应的具有GP_CLK功能的GPIO口——gpio49。    2、我们需要先看下...

2018-09-06 17:26:20 7374 1

原创 高通操作GPIO工具使用

    高通在N版本之前一直有一个可以操作GPIO口的工具,实际也是操作对应的寄存器。但是N之后没有默认添加到代码中。该工具即为大家所熟知的/system/bin/r。    现在以O版本为例,添加该工具。一、添加方式    1、首先需要获取r.c工具,我们可以从N版本上获取。目录为:system/core/toolbox/r.c    2、然后需要添加编译代码,在编译时将r.c编...

2018-09-03 16:41:31 2372 2

原创 android——module_init内核调用顺序

    最近有在做一个初始化设备的动作,但是发现在相同的文件夹下已经有两个module_init,当我想再添加一个时,发现我添加的这个是最后执行的。由于其他的两个初始化中有用到我添加的部分,所以想提高优先级。没办法,只能看下module_init在initcall的优先级,然后选取一个合适的。一、同一个文件中的三个module_init    1、我想要添加的部分static int...

2018-09-02 10:37:40 1080

读取寄存器工具

/system/bin/r,操作PGIO口的工具,可直接push到机器里使用。

2018-09-03

51资源教程

资源

2013-05-21

51单片机教程

教程

2013-05-21

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除