linux驱动学习(兼容安卓)
文章平均质量分 59
记录驱动学的笔记,什么都有,仅用于自己记录学习
永不秃头的程序员
永远相信美好的事情即将发生
展开
-
MODULE_DEVICE_TABLE 函数作用
这个mcth函数就是对应驱动中的match匹配函数,一般来说,这个match函数中只有一个compatible的属性,用于和设备树进行匹配,但是这里多了一个data,这个data就是用于表示对应的驱动是第几个,热拔插后会通过这个data进行匹配,就不需要其余i的东西了。这里面又两个参数一个设备类型, 一个就是设备符号表,通过这个符号表进行匹配。这是在驱动中的一个宏,这个宏的主要作用是就是提示这个驱动外设支持热插拔。原创 2024-01-25 11:29:37 · 499 阅读 · 0 评论 -
ALSA学习(5)——ASoC架构中的Machine
参考博客:https://blog.csdn.net/DroidPhone/article/details/7231605(以下内容皆为原博客转载)原创 2024-01-02 17:14:12 · 908 阅读 · 0 评论 -
ALSA学习(5)——设备中的alsa
参考博客: https://blog.csdn.net/DroidPhone/article/details/7165482(一下内容基本是原博主的博客转载)原创 2023-12-28 14:07:22 · 1051 阅读 · 0 评论 -
ALSA学习(4)——Control设备的创建
要自定义一个Control,我们首先要定义3各回调函数:info,get和put。然后,定义一个snd_kcontrol_new结构:代码路径: kernel_4.14nclude\sound\control.hunion {} tlv;iface。原创 2023-12-28 14:06:14 · 1058 阅读 · 0 评论 -
芯片IC的mask位置
记录mask相关的笔记原创 2023-11-10 09:45:28 · 327 阅读 · 0 评论 -
andriod系统反编译dts
反编译dts方法原创 2023-11-10 09:15:20 · 253 阅读 · 0 评论 -
linux驱动学习加强版-7(平台虚拟总线的引入)
linux驱动学习7,关于虚拟平台总线的一些知识原创 2023-11-02 22:34:48 · 179 阅读 · 0 评论 -
linux驱动之input子系统简述
Input驱动程序是linux输入设备的驱动程序,我们最常见的就按键,触摸,插拔耳机这些。其中事件设备驱动程序是目前通用的驱动程序,可支持键盘、鼠标、触摸屏等多种输入设备。Linux input 子系统将一个输入设备的输入过程分成了设备驱动(input device driver)和事件驱动(input event driver)两个层。前者负责从底层硬件采集数据;后者负责与用户程序接口,将采集到的数据分发给不同的用户接口。通过这样的设计,将千差万别的设备统一到了为数不多的几种驱动接口上。原创 2023-09-25 16:45:49 · 299 阅读 · 0 评论 -
video 视频编解码一些debug方法
这个文章的主要内容是为了后期性能方面的debug, 设计到前期的bringup则没有。原创 2023-09-01 15:40:51 · 489 阅读 · 0 评论 -
linux驱动学习加强版-6(驱动私有数据)
一个驱动设备基本上包含设备号,类,设备状态等等,我们会使用一个结构体来定义这个这个设备的所有属性,然后通过指针去访问这个结构体里面的属性,在open里面去添加这些属性,然后就可以在其余函数里用去访问对应设备的私有四句。因为我们在一个驱动里面可以支持多个设备,如果不进行私有数据的管理,那么很容易就会导致我们在驱动里面读取数据的时候出现错误,而设置私有数据就是为了避免这种情况。同样的我们也可以在write的时候去传递buffer。私有数据指的是多个设备不会相互干扰的意思。原创 2023-05-17 14:03:05 · 595 阅读 · 1 评论 -
linux驱动学习加强版-5(ioctl的使用)
ioctl是用户空间和内核空间相互交流时候用的比较多的一种手段。我们也可以在HAL层通过ioctl调到驱动里面。原创 2023-04-10 14:42:15 · 619 阅读 · 0 评论 -
linux驱动学习加强版-4(class_create和device_create)
驱动中的一些函数说明原创 2023-03-20 23:19:13 · 518 阅读 · 0 评论 -
linux驱动学习加强版-3 (驱动代码测试,以及代码完善)
驱动的完善和app测试原创 2023-03-20 23:18:40 · 385 阅读 · 0 评论 -
linux驱动学习加强版-2(文件驱动的书写)
带你入门驱动的书写原创 2023-03-20 23:18:14 · 415 阅读 · 0 评论 -
linux驱动学习加强版-1 (基本知识补充)
虽然现在已经在Linux底层驱动工程师的路上走了一年多,但是很多细节应为工作中没有遇到过,所以也没有去了解过详细的原因,但是最近发现一些基础还是很重要的,所以现在开始弥补一些东西,经可能的详细的去说明一些东西。后续也打算将这一些系列更新下去。原创 2023-03-20 23:14:28 · 385 阅读 · 0 评论 -
android编译错误(2)
安卓的一些编译报错解决原创 2022-10-09 23:09:49 · 2190 阅读 · 0 评论 -
android编译报错(1)
关于自己做安卓编译时候的一些报错原创 2022-10-09 23:09:05 · 1071 阅读 · 0 评论 -
vmlloc和kmalloc和kzalloc的区别
内核分配内存的点点笔记原创 2022-09-21 19:43:59 · 1428 阅读 · 0 评论 -
关于adb连接权限问题
记录一次adb连接失败的问题原创 2022-09-19 20:02:23 · 805 阅读 · 0 评论 -
i2c_smbus_write_i2c_block_data()传输数据限制
最近在使用I2c尝试去发送一些数据,发现内核对这个接口有限制。原创 2022-09-13 18:31:15 · 1803 阅读 · 0 评论 -
android一些简单配置修改(3)
android的启动动画旋转180android的界面旋转180(有问题,清理后台是反向显示的)rockchip的会有一个对应的宏在device目录下这里就说明他可以修改对应的结果进行一个旋转。而nxp的没有这个宏原创 2022-07-13 11:51:25 · 519 阅读 · 0 评论 -
Android驱动框架整理之device框架
在对应的目录下,我们从官网下载的代码其实已经有了对应的官方支持,已经列举了几个支持的板级目录,就是上面的 imx6q imx8q imx8m 这些.还有一个公用的内容就放在从common目录下,比如说audio的相关配置文件就在 audio-json 这个目录下,因为我也是后面才了解到,nxp这边是通过配置文件 json去配置相关寄存器的设置的,所以之前调试es8316的时候,还弄了几天。对应的一些路径文件就在 imx_path 这个里面的 .mk文件中可以看到定义的路径宏input目录下是一些触摸相关原创 2022-07-05 14:42:24 · 1655 阅读 · 0 评论 -
关于imx8mp的es8316的芯片调试
1.2 cpu端的配置因为es8316并不在fsl-asoc-card.c的默认配置内,所以我们需要自己去添加配置:1.3 添加驱动这个就直接添加在对应的Makefile文件里面去就好了,编译完后生成对应的驱动文件就行。这个还有一个比较坑的地方再与,es8316的默认配置是关闭了的,所以你即使成功的加载驱动,你也无法发出声音,这个可以用tinymix进行修改。主要是修改这三个对应的寄存器最开始我是在驱动中直接操作的寄存器:1.4 对应的验证不出意外,你现在可以通过cat /proc/asou原创 2022-07-05 14:42:03 · 2730 阅读 · 1 评论 -
关于es8316的音频爆破音的解决
对喇叭的功放角进行控制,在使用喇叭之前打开功放角,在使用完喇叭过后关闭功放角,这样就可以规避这种声音的出现。frameworks/av/device/nxp/添加对应权限kernel中将frameworks需要的节点申请出来...原创 2022-07-05 14:41:37 · 1116 阅读 · 0 评论 -
内核判断i2c地址上是否挂载外设
dits配置再对应的peobe函数里添加如下判断:使用函数为i2c_smbus的读取接口:通过插入不同的外设,可以看到不同的打印信息。二、实现原理因为驱动都能单独加载成功,目的是避免驱动去对gpio进行操作,因为他们使用的都是同一个gpio,所以不能让他们再驱动中对gpio进行申请,因为一旦申请后就会导致宁外一个gpio不能对该gpio进行操作。所以需要将这个判断函数添加再gpio申请之前。...原创 2022-07-05 14:41:18 · 596 阅读 · 0 评论 -
Android驱动框架整理之KERNEL框架
这些带有build的相关目录我没有过研究,有兴趣的可以自己去看看。我们比较关注的是arch/目录下的arm64的源码:相关的dts目录:可以在对应的目录进行dts的添加编译或者删除编译一般android指定对应的dts文件在device目录下进行指定:如何查看在自己编译的dts内容,每个dts编译完成后都会生成对应的dtb文件,同时还会生成对应的tmp的一个隐藏文件,在对应的out目录下(nxp的目录如下):可以看到我们指定的dts会有这个隐藏文件产生,然后我们可以进去查看,这个tmp文件会把所有原创 2022-07-05 14:40:50 · 1646 阅读 · 0 评论 -
Android的i2c协议笔记
记录学习i2c的笔记原创 2022-06-20 13:38:28 · 786 阅读 · 0 评论 -
app操作寄存器的原理
一、open,read, write这二、文件IO的内核接口使用:glibc 实现 open,read,write的标准接口在open或者read这些标准接口中:32位会触发swi指令->传入不同参数,存放在R7的地址里面。64位会触发svc指令->传入不同的参数,存放在X8的地址里面。这两个指令相当于中断,可以直接让程序进入linux的内核接口中,进行sys_open这些指令。系统调用函数: sys_call_table()......原创 2022-06-06 22:57:17 · 140 阅读 · 0 评论 -
uboot中展示gpio接口的驱动
按照道理来说,其实uboot就是一个简单的kernel模型,其操作方法和kernel中的类似。只是函数接口不一样。原创 2022-06-06 10:21:28 · 1174 阅读 · 0 评论 -
内核中展示gpio接口的驱动
记录一种内核操作gpio的方法原创 2022-06-06 09:58:39 · 642 阅读 · 1 评论 -
memtool工具的使用
记录下对应的memtool的工具的编译步骤原创 2022-06-06 09:57:27 · 2153 阅读 · 0 评论 -
Android驱动框架整理之UBOOT框架
文章目录一、uboot框架1.1 文件系统1.2 对应的板级文件修改本文主要整理一下安卓的一些框架,接触安卓半年了,写一篇文章做一次总结。一、uboot框架1.1 文件系统uboot-imx$ lsapi board common configs doc dts examples include Kconfig Licenses MAINTAINERS net README test arch cmd config.m原创 2022-06-06 09:55:03 · 1356 阅读 · 0 评论 -
一些调试android的基本命令
一、擦看是挂载分区cat /proc/mounts二、驱动相关c 代表字符型驱动 char类型b代表块类型驱动 block类型前面一个叫主设备号用于判断那个驱动,后面是次设备号,用于判断那个硬件三、mmp内存映射......原创 2022-06-06 09:51:51 · 625 阅读 · 0 评论 -
android的一些简单配置修改(2)
一、连接wifi提示网络受限,但是可以上网连接后的log:D NetworkMonitor/100: PROBE_DNS www.google.com 107ms OK 104.244.46.85D NetworkMonitor/100: PROBE_DNS connectivitycheck.gstatic.com 118ms OK 203.208.50.66D NetworkMonitor/100: PROBE_HTTP http://connectivitycheck.gstatic.com/原创 2022-06-02 15:53:14 · 1411 阅读 · 0 评论 -
关于nxp平台上i2c扫描不到wm8960地址的问题
最近调试imx8的东西,发现调试audio的时候遇到了一个很奇怪的现象。原创 2022-05-26 10:47:05 · 742 阅读 · 0 评论 -
NXP(imx8qxp)上android11的EG25-G(4G)模块调试记录
文章目录一、前期准备二、底层配置三、添加厂商提供的ril.so库最近在android11上调试一款移远的4G模块(EG25-G)第一次调试4G,做个笔记记录。一、前期准备一款新的4G模块,我们需要厂商提供对应的so库,否则无法进行后期的工作,也一并要求厂商提供一定的移植文档。二、底层配置厂商提供的一般都是对应的上层配置,我们需要自己去调试底层。首先需要确定供电正确,这和需要你的硬件工程师进行配合,然后你需要注意4G模块的商店时序,可能需要重复的改变一个供电gpio的状态。打开4G模块的通信端原创 2022-05-17 14:15:08 · 2984 阅读 · 0 评论 -
androi的AT指令
记录调试4g查到的AT指令一、一般命令1、AT+CGMI: 请求得到移动设备生产厂商的标识。2、AT+CGMM: 请求得到移动设备模块的标识。3、AT+CGMR: 请求得到改订的系统版本,修改级别和日期,以及其他相关内容。4、AT+CGSN: 得到GSM移动设备的唯一标识,比如IMEI(国际移动设备标识)序列号。5、AT+CSCS 选择TE(操作终端)字符集设定情况,使其能够和ME设备匹配,TA能够在TE和ME之间进行正确的字符转换。6、AT+CIMI 获得IMSI。用来读原创 2022-05-14 17:15:32 · 1338 阅读 · 2 评论 -
android一些简单的配置修改
文章目录一、蓝牙的mac地址不固定二、关闭锁屏设置三、关闭导航键,启动全屏模式记录android的一些简单的配置修改,可能在一些条件中需要遇到。一、蓝牙的mac地址不固定bug:每次对开发板进行初始化设置过后,蓝牙的mac地址都会改变修改配置文件:目录: hardware/broadcom/libbt/include/vnd_rksdk.txt-USE_CONTROLLER_BDADDR = FALSE+USE_CONTROLLER_BDADDR = TRUE二、关闭锁屏设置bug:关闭原创 2022-05-05 10:51:26 · 2032 阅读 · 0 评论 -
imx8qxp_android11去除M4相关的编译
使用imx8qxp官方代码:编译完成后uboot的log显示 0 In boota get fastboot lock status error. Set lock statusMagic is incorrect.Error validating A/B metadata from disk. Resetting and writing new A/B metadata to disk.Writing A/B metadata to disk. verify OK, boot 'boot_原创 2022-04-27 14:43:06 · 1924 阅读 · 0 评论 -
NXP(imx8qxp)系列DDR校准以及android镜像烧录
文章目录一、不得不吐槽以下nxp的这个代码镜像烧写的过程,做得太开源了,导致镜像根本烧录不进去,实属令人头痛。一、原创 2022-04-07 20:52:52 · 4819 阅读 · 0 评论