- 博客(50)
- 收藏
- 关注

原创 Android8.0 LCD启动流程初始化(qcom MSM8953)
一、LK阶段LCD的初始化流程 高通平台下的Android系统的正常运行,分为PBL、SBL1、LK、Kernel、android系统5个阶段,而LCD的初始化是在LK阶段。在LK阶段又分为target_init()和app_init()部分,LCD的初始化函数target_display_init()是在app_init()函数中的aboot_init()中加载的,在aboot_...
2018-12-09 22:34:38
6631
1
原创 msm8953平台 sensor笔记
typedef struct{ qmi_client_os_params os_params; qmi_client_type user_handle; qmi_client_type notifier_handle; uint8_t svc_num;} smgr...
2020-10-09 14:52:20
1674
转载 linux系统之驱动与FDT
【摘要】【分析一】FDT与TAG【分析二】boot中对FDT的支持【分析三】Uboot下调试FDT【分析四】kernel中对FDT的支持【分析五】FDT兼容TAG【总结】【附录】注意:请使用谷歌浏览器阅读(IE浏览器排版混乱)【摘...
2020-02-23 20:24:29
1388
1
转载 在Android 8.0之后版本上添加Hidl Service
1. 编写hal文件并编译 在hardware/interfaces/目录下创建led文件夹和基版本1.0,这个版本号分为两部分,major.minor。major版本不变得话,只能添加api,不能修改。创建ILed.hal和types.halhardware/interfaces/led/1.0/ILed.halpackage android.hardware....
2019-03-09 16:14:05
2146
1
原创 qcom 8953平台 LCD亮灭屏流程及LCD知识点总结
一、LK中亮屏流程1.gcdb_display_init(),进行display初始化的起始地方;2.oem_panel_select(),在这里去选择哪一款屏,也可以在这里添加新一款屏;3.dsi_panel_init()把屏头文件中的配置信息拷贝到结构体中,并一些屏需要的配置;4.msm_display_init(),给屏上电和初始化时钟,申请FB缓冲区,配置display,点亮屏幕,...
2019-03-09 15:50:23
4646
1
转载 Linux设备模型——设备驱动模型和sysfs文件系统解读
本文将对Linux系统中的sysfs进行简单的分析,要分析sysfs就必须分析内核的driver-model(驱动模型),两者是紧密联系的。在分析过程中,本文将以platform总线和spi主控制器的platform驱动为例来进行讲解。其实,platform机制是基于driver-model的,通过本文,也会对platform机制有个简单的...
2019-02-03 20:07:08
667
原创 Linux 驱动下创建设备节点的方式
最近在学习Android下的LCD模块,在编写新需求时,要求底层提供节点给上层调用,这里我总结的三种Linux下如何创建设备节点的方法,而创建设备节点调用的函数都是Linux内核里面提供的函数接口,我们只需要调用这些函数接口去创建节点即可。1. /sys/class/下面某个目录下创建hello这个节点,可以通过调用以下函数:示例:static DEVICE_ATTR(hello, S_...
2019-02-03 20:04:37
4627
转载 linux pinctrl 配置
Linux内核中的pinctrl子系统应用实例主要函数struct pinctrl *devm_pinctrl_get(struct device *dev) pinctrl_lookup_state //寻找一个pin的配置 pinctrl_select_state // 设置选择一个pin的配置由于近期在做一...
2019-01-14 13:44:07
1094
转载 emmc、Nand flash、Nor flash之间的区别
一、定义及区别emmc:全称为embeded MultiMedia Card,是一种嵌入式非易失性存储器系统,由Nand flash和Nand flash控制器组成,以BGA方式封装在一款chip上。Nand flash:一种存储数据介质;若要读取其中的数据,需要外接的主控电路。Nor flash:也是一种存储介质;它的存储空间一般比较小,但它可以不用初始化,可以在其内部运行程序,一般...
2018-12-18 22:30:58
50600
转载 [lcm] Qualcomm平台的显示屏lcd驱动移植步骤
版权声明:本文为博主原创文章,未经博主允许不得转载。——Wu_Being https://blog.youkuaiyun.com/u014134180/article/details/78129499 文章目录更多相关文章:《高通Qualcomm平台lk(light ker...
2018-12-16 21:43:41
2931
转载 recovery 流程学习总结
Recovery 模式最主要的两个功能是恢复出厂设置和升级系统版本。本Recovery相关的分析内容主要为两部分:FACTORY RESET+OTA INSTALL Recovery模式的主界面 进入recovery的方式 我公司手机一般正确手动进入recovery模式的方式为:power+volume up+...
2018-12-13 14:31:27
1497
转载 MIPI video mode 和 command mode 的区别
首先来讲第一个话题LCD RAM由来最近魅族论坛和小米论坛最火的话题之一莫过于LCD RAM,当然小米最近后院起火,导致售后/投诉才是最火的.何为LCD RAM?LCD 是指字面意思是液晶显示屏(Liquid Crystal Display), 而RAM: 随机存取存储器(Random-Access Memory),两者完全是风马牛不相...
2018-12-09 22:42:56
1536
转载 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_dsi_panel_cloc...
2018-12-09 22:41:25
1142
转载 实现简单的printf函数
首先,要介绍一下printf实现的原理printf函数原型如下:int printf(const char* format,…);返回值是int,返回输出的字符个数。例如:int main(){ int n; n=printf(“hello world,%d\n”,100); printf(“返回值:%d\n”,n); return 0;}测试结果:hello w...
2018-12-08 20:25:15
702
转载 SPI、I2C、UART的区别和联系
SPI、IIC、UART区别第一个区别当然是名字: SPI(Serial Peripheral Interface:串行外设接口); I2C(INTER IC BUS) UART(Uni...
2018-12-08 20:21:23
1034
原创 Linux下的Kconfig defconfig .config 和 Makefile文件之间的联系
在Linux内核里,编译内核文件时,先要配置.config文件,然后Makefile在编译时通过读取.config文件的配置来选择要编译的文件,选择驱动的加载方式。.config文件的生成可通过make menuconfig ARCH=arm 或make defconfig 方式生成,这两种方式看上去虽然不同,但是两者的原理是一样的,都是通过Kconfig文件的配置来的。1.make menu...
2018-11-12 22:50:12
6638
原创 Android8.0 下的 qcom8953 平台上的 sensor 调用过程
一、Android Sensor的框架在刚开始的时候,Android上的sensor调用还是在走内核的,通过芯片厂商编写相应的设备驱动来生成设备节点供上层访问,以读取设备节点的方式来读取sensor数据,但是后来人们发现这样做会增加功耗,因为sensor需要不断的上报数据,不断的更新数据,所以这就要求处理器不断为其工作,所以就会影响待机功耗,故高通在MSM8960之后就提出了一种方案,把sen...
2018-10-16 14:31:52
4540
1
转载 SPI总线 通俗易懂讲解
转自:http://bbs.mydigit.cn/read.php?tid=726343SPI总线 MOTOROLA公司的SPI总线的基本信号线为3根传输线,即SI、SO、SCK。传输的速率由时钟信号SCK决定,SI为数据输入、SO为数据输出。采用SPI总线的系统如图8-27所示,它包含了一个主片和多个从片,主片通过发出片选信号-CS来控制对哪个从片进行通信,当某个从片的-CS信号有效时,能通过...
2018-05-21 15:31:12
31257
3
转载 c语言中realloc()函数解析
realloc(void *__ptr, size_t __size):更改已经配置的内存空间,即更改由malloc()函数分配的内存空间的大小。如果将分配的内存减少,realloc仅仅是改变索引的信息。如果是将分配的内存扩大,则有以下情况:1)如果当前内存段后面有需要的内存空间,则直接扩展这段内存空间,realloc()将返回原指针。2)如果当前内存段后面的空闲字节不够,
2018-03-13 10:20:59
412
转载 linux系统下的/etc/init.d文件夹
一、简单说明 /etc/init.d 是 /etc/rc.d/init.d 的软链接(soft link)。可以通过 ll 命令查看。ls -ld /etc/init.dlrwxrwxrwx. 1 root root 11 Aug 30 2015 /etc/init.d -> rc.d/init.d 都是用来放服务脚本的,当Linux启动时,会寻找这些目录中的服务
2018-03-09 09:57:08
5595
原创 platform总线、设备、驱动
platform虚拟设备总线,来挂接一些内部资源;设备:struct platform_device dev; 驱动:struct platform_driver dri;platform虚拟设备总线编写设备驱动流程图:设备:platform_devicestruct platform_device {const char * name;/*设备的名字,与驱动的...
2018-02-01 15:01:20
531
原创 Virtualmen字符设备驱动代码-----虚拟磁盘设备
驱动程序:Virtualmen.c #include <linux/init.h>#include <linux/module.h>#include <linux/types.h>#include <linux/fs.h>#include <linux/errno.h>#include <linux/cdev.h...
2018-01-26 15:40:57
508
原创 4G模块AT命令调试发送、读取、删除短信
哇,第一次弄这个4G模块,花了一个星期,终于把这个调好了,中间遇到好多问题,这里就不说了,直接总结后发送给你们参考一下:一、kernel配置DeviceDrivers---→USBsupport---→USB SerialConverter support--→[*]USBGeneric Serial Driver USBdriver for GSM
2018-01-13 15:17:18
27896
6
转载 Linux的USB-Serial驱动(从系统初始化到生成tty设备的全过程)
真正做完了USB驱动,看了《Linux那些事》之后,才知道Linux的USB host驱动有多复杂。我做的还只是USB驱动中的一小部分USB转串口。而且还只是读代码和做小的改动,真正写这些的都是天才。 有关USB驱动的部分在我会在别的文章中逐步的介绍,这里介绍的是从Linux内核初始化到USB设备插入USB口到虚拟出tty设备的过程。先上一个原创的图,画的还挺丑的,不过应该能把过程说
2018-01-04 17:29:02
7285
2
原创 ARM开发板上的usb驱动移植及U盘挂载
基于zynq7000芯片的移植:USB驱动移植:1.在设备树文件中加入USB设备的信息;(每一款的板子不一样,你可以看这个内容和你板子上规范对比去写)ps7_usb1: usb@e0003000 {clocks = ;compatible = "xlnx,ps7-usb-1.00.a", "xlnx,zynq-usb-1.00.a";dr_mode = "host"
2017-12-26 08:26:33
5928
1
原创 内存泄漏----检查方法
一、什么是内存泄漏在计算机科学中,内存泄漏指由于疏忽或错误造成程序未能释放已经不再使用的内存的情况。内存泄漏并非指内存在物理上的消失,而是应用程序分配某段内存后,由于设计错误,失去了对该段内存的控制,因而造成了内存的浪费。通常我们所说的内存泄漏是指堆内存的泄漏。堆内存是指程序从堆中分配的,大小任意的(内存块的大小可以在程序运行期决定),使用完后必须显示释放的内存。应用程序一般使用mallo
2017-12-05 20:39:56
393
转载 进程、线程的优缺点
进程概念 进程是表示资源分配的基本单位,又是调度运行的基本单位。例如,用户运行自己的程序,系统就创建一个进程,并为它分配资源,包括各种表格、内存空间、磁盘空间、I/O设备等。然后,把该进程放人进程的就绪队列。进程调度程序选中它,为它分配CPU以及其它有关资源,该进程才真正运行。所以,进程是系统中的并发执行的单位。 在Mac、Windows NT等采用微内核结构的操作系统中,进程的功
2017-11-28 18:46:20
6433
2
原创 进程间的通信---信号灯
信号灯,也叫信号量,它是不同进程间或一个给定进程内部不同线程间同步机制。信号灯的使用一般配合共享内存使用,用以实现同步和互斥;编写步骤:1.使用ftok()函数获取key值;2.使用semget()函数创建一个信号灯;(注:在这之前必须要把共享内存创建好,具体方法上篇博客有详细方法)3.使用semctl()函数初始化信号量,(注:在这之前要先定义一个共用体,在Linux里可以通
2017-11-17 22:21:47
849
原创 进程间的通信---消息队列
消息队列:队列是先进先出,把写入的消息按队列的方式排列,然后读取消息时按队列性质读取,或按指定的类型号读取;实现消息队列的步骤:1.获取key值,2.创建消息队列,取得消息队列的ID;3.向消息队列里写入消息;4.读取消息队列的消息;5.删除消息队列;读端代码:#include #include #include #include #incl
2017-11-16 22:18:07
252
原创 进程间的通信---共享内存
共享内存是一种最为高效的进程间通信方式,进程可以直接读写内存,而不需要任何数据的拷贝;但是在使用共享内存时,可能会出现多个进程共享一段内存,因此要依靠某种同步机制解决,如:互斥锁,信号量;实现共享内存的四大步骤:1.创建或打开共享内存;2.映射共享内存,即把指定的共享内存映射到进程的地址空间用于访问;3.撤销共享内存映射;4.删除共享内存对象;示例代码如下:读端:
2017-11-15 22:47:24
326
原创 进程间的通信----有名管道fifo
write端:#include #include #include #include #include int main(int argc, const char *argv[]){if(access("./myfifo",F_OK) {if(mkfifo("./myfifo",0644) {perror("mkfifo fail\n");r
2017-11-14 22:06:01
312
原创 I2C总线
I2C总线:有两根线,一根SCL线,一根SDA线。、1.总线上数据的有效性 IIC总线是以串行方式传输数据,从数据字节的最高位开始传送,每一个数据位在SCL上都有一个时钟脉冲相对应。 在时钟线高电平期间数据线上必须保持稳定 的逻辑电平状态,高电平为数据1,低电平为数据0。 只有在时钟线为低电平时,才允许数据线上的电平状态
2017-11-12 10:09:03
805
原创 蜂鸣器驱动代码
驱动程序:beep_drv.c[cpp] view plain copy#include #include #include #include static int beep_major = 0; static struct class *pClass = NULL; module_para
2017-11-09 13:08:53
9749
1
原创 根文件系统的制作
根文件系统的制作:在制作根文件的时候,首先我们要在虚拟机上解压一个busybox安装包,来制作文件系统下bin和sbin文件夹下的文件,这文件不能拷贝过来,因为我们这个文件要在arm开发板上使用,使用busybox来制作这些文件,为我们节省了好多时间。步骤:1.配置源码: 输入命令:make menuconfig 然后配置一下东西,配置好就编译,输入命令:make2
2017-10-29 09:58:54
764
原创 linux系统移植(FS4412开发板)
Linux系统移植主要由4大部分组成:1.交叉编译器的安装;2.u-boot的移植;3.kernel的编译与移植;4.根文件系统的制作与移植;一.交叉编译器的安装为什么要安装交叉编译器?速度:开发板的编译速度比较慢,而在虚拟机上编译速度快,节省时间;空间:编译一个文件时,需要消耗很多资源,而开发板的内存空间比较小,方便:在Linux系统下编译一个文件需要
2017-10-27 09:47:39
4224
原创 Fs4412中断处理和编程流程
中断处理:1.中断:在处理器中,中断是一个过程,即CPU正在执行程序过程中,遇到外部或内部紧急事件需要处理,暂时中止当前程序执行转而去为事件服务,待服务完毕,再返回到暂停处(断点)继续执行原来的程序。为事件独舞的程序称之为中断服务程序。2.中断的分类(硬中断和软中断,内部中断和外部中断) 中断的分为:硬件中断(包括:内部中断和外部中断);软件中断 1
2017-10-21 11:14:15
1035
原创 快速排序代码及逻辑思想
快速排序法:思想:首先分别把头尾两个数确定住,用left 和 right 表示,并确定数组元素的个数,然后将头尾的数分别给 a[i] 和 a[j],然后从尾部开始去找比a[left] 小的数,满足就退出,同时满足i(必须要),然后在头部开始找比大的数,满足a[i]并满足i就退出循环,两者退出循环后,在把这俩个的值进行交换,在判断i和j的大小,直到i=j时退出主循环,然后把a
2017-10-17 22:24:02
1230
原创 数据库的命令及函数接口
数据库的基本命令:1.sqlite>.tables 显示数据库的表名2.sqlite>.quit 退出数据库3.sqlite>.hearers on 查看数据表时,可以带标题的参看4.sqlite>.mode column 将表的标题与表中记录用线分开5.sqlite>select * from ; 查询表中所有记录,(注:命令后面的分号一定不
2017-10-14 09:36:36
638
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人