
linux/Android_dd
文章平均质量分 67
光利繁华的背后
每天都要有进步!制定战略,安排计划,实现任务!
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
i2c 驱动gpio模拟i2c
1. 简介:gpio模拟i2c驱动可以解决i2c控制器不足的问题,但是,相对的可能要占用更多的cpu时间,此程序依然使用的是jz2440开发板2. 内核提供的代码分析:我们从 i2c-gpio.c 开始,文件路径:drivers/i2c/busses(1)i2c的gpio的私有的数据 结构体如下:[cpp] view plain co转载 2017-09-27 15:43:29 · 1761 阅读 · 1 评论 -
imx6之camera mipi
1.IPUimx6qp有2个IPU,每个IPU有2个CSI,这个CSI并不是MIPI-CSI,是内部的功能模块。static struct mipi_csi2_platform_data mipi_csi2_pdata = {.chans = 4,//max is 4.chans_data = {{.ipu_id = 0,.csi_id = 0,.v_ch原创 2017-09-19 16:39:06 · 4881 阅读 · 0 评论 -
Android深度探索:HAL与驱动开发学习笔记--并发控制之自旋锁
自旋锁自旋锁(spinlock)是用在多个CPU系统中的锁机制,当一个CPU正访问自旋锁保护的临界区时,临界区将被锁上,其他需要访问此临界区的CPU只能忙等待,直到前面的CPU已访问完临界区,将临界区开锁。自旋锁上锁后让等待线程进行忙等待而不是睡眠阻塞,而信号量是让等待线程睡眠阻塞。自旋锁的忙等待浪费了处理器的时间,但时间通常很短,在1毫秒以下。自旋锁用于多个CPU系统中,在单处理原创 2017-09-27 15:31:38 · 649 阅读 · 0 评论 -
Android深度探索:HAL与驱动开发学习笔记--并发控制之互斥锁
看了大概几张主要是几种临界区的保护锁讲解,我们驱动中用到最多最好的就是互斥锁了,其他的尽量少用:互斥锁:互斥锁是为了替代信号量,修改于2.6.10-2.6.22。参考:http://blog.chinaunix.net/uid-26023319-id-2980285.html不能嵌套锁,不能使用在tasklet或则timer这样的中断上下文中。互斥锁主要函数://创建互斥锁原创 2017-09-27 14:44:15 · 679 阅读 · 0 评论 -
Android深度探索:HAL与驱动开发学习笔记(二)
第6章、驱动实际中就是在一个类似的驱动中,按照驱动架构,编写操作函数;这里有个调试命令大家经常用到dmesg,读取日志文件modinfo xxx.ko查看驱动信息这里有些基本调试命令;echo cat例如:串口 cat /dev/ttymxc2然后就是加入menuconfig:主要修改kconfig、makefile文件即可这章我没有用过的是原创 2017-09-27 12:31:20 · 385 阅读 · 0 评论 -
Linux内核模块编程与内核模块LICENSE
Linux内核模块简介Linux内核的整体结构已经非常庞大,而其包含的组件也非常多。我们怎样把需要的部分都包含在内核中呢?一种方法是把所有需要的功能都编译到Linux内核。这会导致两个问题,一是生成的内核会很大,二是如果我们要在现有的内核中新增或删除功能,将不得不重新编译内核。 有没有一种机制使得编译出的内核本身并不需要包含所有功能,而在这些功能需要被使用的时候,其对应的代码被动态地加转载 2017-09-11 10:58:47 · 706 阅读 · 0 评论 -
LVDS参数明细
Linux内核的amba lcd控制器使用clcd_panel结构体表示一个LCD屏的硬件参数:/* include/linux/fb.h */struct fb_videomode { const char*name; /* optional*/ u32refresh; /* optional*/ u32 xres;原创 2017-09-15 15:17:31 · 5385 阅读 · 0 评论 -
linux无线命令wpa
关于wpa_supplicant:用到wpa_cli命令wpa_cli -iwlan0 add_network // wlan0 是无线网络设备的名字,增加一个网络,会返回一个数字,假设为1wpa_cli -iwlan0 set_network 1 ssid '"……"' //这里ssid是要连接的网络名,注意 后面是单引号+双引号wp转载 2017-09-26 15:35:21 · 1546 阅读 · 0 评论 -
ipu--camera
二)代码框架文件内核版本:3.14.52文件主要集中在:.../drivers/mxc/ipu3/ 描述 ipu_device.c IPU tasks的操作等(IPU core driver) ipu_common.c 底转载 2017-09-15 17:40:20 · 859 阅读 · 0 评论 -
Androdi平台camera的相关知识总结
想总结下camera整个数据流及中间的数据转换到显示,先大概梳理下整体思路,以后具体分析下。1、UVC的对于android来说,必须把底层的v4l2打开,然后添加jni层,上层才能调用;2、高通、MTK等平台camera,amera是mipi或者其他接口协议的数据,这是我要分析的重点!!!3、关于camera ISP(image single processor)的概念,平台不带isp原创 2017-09-18 11:09:39 · 697 阅读 · 0 评论 -
linux IIC子系统分析(三)——I2c子系统初始化顺序分析
对于linux的IIC子系统,看了很多人的IIC源码及架构分析,看完了自己还是一头雾水,不知从何下手。因此只能看开机启动LOG分析各初始化函数,先看linux IIC子系统已经为我们做了些什么,然后再看还需要我们做些什么。 从而了解整个IIC子系统架构。1.linux初始化函数的执行顺序决定函数执行顺序的有两个因素:(一)vmlinux.lds 链接脚本转载 2017-09-25 14:29:12 · 855 阅读 · 1 评论 -
Android - Binder应用分析
点击打开链接转载 2017-09-08 16:02:35 · 212 阅读 · 0 评论 -
I.MX6Q-ipu视频流格式转换
转载:http://blog.youkuaiyun.com/u012478275/article/details/52353546?locationNum=15前言 飞思卡尔的vpu可以实现硬件的编解码,同时也提供了ipu接口,可以实现视频流格式的转换,例如YUV422转为YUV420,YUV422转化为RGB888,当然我们也可以通过软件纯代码实现这些功能,但有时候代码转载 2017-09-16 15:37:53 · 1259 阅读 · 0 评论 -
Android深度探索:HAL与驱动开发学习笔记--并发控制之顺序锁
顺序锁当使用读/写锁时,读者必须等待写者完成时才能读,写者必须等待读者完成时才能写,两者的优先权是平等的。顺序锁是对读/写锁的优化,它允许读写同时进行,提高了并发性,读写操作同时进行的概率较小时,其性能很好。顺序锁对读/写锁进行了下面的改进:写者不会阻塞读者,即写操作时,读者仍可以进行读操作。写者不需要等待所有读者完成读操作后才进行写操作。写者与写者之间互斥,即如果有写者在写操作时原创 2017-09-28 08:46:42 · 453 阅读 · 0 评论 -
Android深度探索:HAL与驱动开发学习笔记--并发控制之信号量&完成量
semaphore使用方法和自旋锁类似,与自旋锁相同,只有得到信号量的进程才能执行临界区代码,但是与自旋锁不同的是当获取不到信号量时,进程不原地打转而是进入休眠等待状态。1. 函数:声明变量:struct semaphore sem;快捷方式:DECLARE_MUTEX(name) /* 定义一个名为name的信号量并初始化为1 */原创 2017-09-28 08:57:48 · 406 阅读 · 0 评论 -
Android深度探索:HAL与驱动开发学习笔记--工作队列
经验说:工作队列使用上和 tasklet最大的不同是工作队列的函数可以使用休眠,而tasklet的函数是不允许使用休眠的。工作队列一般用来做滞后的工作,比如在中断里面要做很多事,但是比较耗时,这时就可以把耗时的工作放到等待队列。就是系统延时调度的一个自定义函数。在2.6.20之后的版本,这INIT_WORK(struct work_struct *work, void (*fu原创 2017-09-28 09:48:22 · 488 阅读 · 0 评论 -
谈内核资源申请platform_get_resource、devm_request_mem_region、devm_ioremap
以IO内存资源为例:platform_get_resource(pdev, IORESOURCE_MEM, 0);即可得到一个IO内存资源节点指针, 包括了地址的开始,结束地址等, 该IO内存的长度可用 resource_size() 来获取, 但这段资源只是一个描述, 想真正使用这段IO内存, 还要经过先申请, 再映射的过程。例如可使用devm_request_mem_region()申原创 2017-10-09 17:00:28 · 9326 阅读 · 1 评论 -
添加自定义按键
/ NOTE: If youadd a new keycode here you must also add it to: // (enum KeyCode, in thisfile) // frameworks/base/core/Java/android/view/KeyEvent.java // tools/puppet_master/PuppetMast原创 2017-09-20 13:31:40 · 596 阅读 · 0 评论 -
Android深度探索:HAL与驱动开发学习笔记--内存管理(学习重点)
Linux内存管理机制没有用过,以前在vxworks系统下做过内存管理的模块,这里就先介绍些重点学习内容,以后需要查找一些实例,结合来学习!1、分页机制等等这部分看得有点晕头转向,以后用到再谈理解;2、内存分配函数kmalloc、kfreevmalloc、vfree3、slab4、内存池原创 2017-09-29 09:28:25 · 624 阅读 · 0 评论 -
Android深度探索:HAL与驱动开发学习笔记--时间管理
这里跟我们经常用到就是jiffies,时钟节拍。jiffies是记录着从电脑开机到现在总共的时钟中断次数。在linux内核中jiffies取决于系统的频率,单位是Hz,这里不得不说一下频率的单位,1MHz=1000,000Hz(6个零),1KHz=1000Hz(3个零)频率是周期的倒数,一般是一秒钟中断产生的次数,所以,假如我们需要知道系统的精确的时间单位时,需要换算了,假如我们系统的频率是2原创 2017-09-29 09:11:26 · 573 阅读 · 0 评论 -
Android深度探索:HAL与驱动开发学习笔记--中断
1、中断所谓中断是指CPU在执行程序的过程中,出现了某些突发事件急待处理,CPU必须暂停执行当前的程序,转去处理突发事件,处理完毕后CPU又返回程序被中断的位置并继续执行。2、中断的分类 1)根据中断来源分为:内部中断和外部中断。内部中断来源于CPU内部(软中断指令、溢出、语法错误等),外部中断来自CPU外部,由设备提出请求。 2)根据是否可被屏蔽分为:可屏蔽中原创 2017-09-28 10:15:06 · 1082 阅读 · 0 评论 -
USB--VID\PID
vid: vendor idpid: product idUSB(Universal Serial BUS,通用串行总线)协议规定,所有的USB设备都有VID(Vendor ID,供应商识别码)和PID(Product ID,产品识别码)。VID由供应商向USB-IF(Implementers Forum,应用者论坛)申请。每个供应商的VID是唯一的,PID由供应商自行决定。主机通过V原创 2017-09-20 11:11:27 · 1167 阅读 · 0 评论 -
USB-OTG类型总结
1、OTG讲述OTG,就是USB模块可以在host模式和device模式之间切换工作。相比早期芯片里的USB HOST控制,OTG控制器增加D脚以及VBUS检测。VBUS是一个非常重要的检测信号,是因为在OTG 控制器在USB 设备识别、HOST 和device模式切换过程中,VBUS都作为一个控制信号或者说是触发开关,而在USB HOST控制器里,VBUS仅仅只是作为供电电源。2、P原创 2017-09-20 11:00:48 · 2753 阅读 · 0 评论 -
USB基本知识详解
1、接口类型现在USB设备有三种接口类型:type A,typeB,type C在USB2.0时代,Micro USB口出现了,这是USB 2.0标准的一个便携版本,Mini USB的下一代规格,比早期部分手机使用的Mini USB接口更小。这种接口是我们最常见的接口,我们手机的充电接口就是Micro USB接口。USB Type C:USB Type C这个接口名称是原创 2017-09-20 10:46:45 · 2085 阅读 · 0 评论 -
android平台camera基础知识总结
1、camera类型 android平台主要有UVC camera和非UVC camera(并口/MIPI接口)2、ISP(Image Signal Processor)影视处理无论数码相机、摄像机或者摄像手机,其影像数据从前端感应后,皆须经过ASP(Analog Signal Processing)、ADC(Analog-Digital Converter)、前期影像处理(Pr原创 2017-09-18 11:26:41 · 6715 阅读 · 0 评论 -
Android深度探索:HAL与驱动开发学习笔记--并发控制总结
现在总结下在并发处理时的各种保护机制的使用环境及区别:原创 2017-09-28 09:10:41 · 402 阅读 · 0 评论 -
Android深度探索:HAL与驱动开发学习笔记--等待队列
经验说:工作队列使用上和 tasklet最大的不同是工作队列的函数可以使用休眠,而tasklet的函数是不允许使用休眠的。工作队列一般用来做滞后的工作,比如在中断里面要做很多事,但是比较耗时,这时就可以把耗时的工作放到等待队列。就是系统延时调度的一个自定义函数。在2.6.20之后的版本,这INIT_WORK(struct work_struct *work, void (*fu原创 2017-09-28 09:34:24 · 457 阅读 · 0 评论 -
V4L2详解
host控制器1、Video4linux2(简称V4L2),是linux中关于视频设备的内核驱动。在Linux中,视频设备是设备文件,可以像访问普通文件一样对其进行读写,摄像头在/dev/video0下2、videos的操作1.打开设备文件。 int fd=open(”/dev/video0″,O_RDWR);2.取得设备的capability,看看设备具有什么功能原创 2017-09-16 15:33:06 · 1615 阅读 · 0 评论 -
IOCTL函数用法详解
ioctl是设备驱动程序中对设备的I/O通道进行管理的函数。所谓对I/O通道进行管理,就是对设备的一些特性进行控制,例如串口的传输波特率、马达的转速等等。它的调用个数如下: int ioctl(int fd, ind cmd, …); 其中fd是用户程序打开设备时使用open函数返回的文件标示符,cmd是用户程序对设备的控制命令,至于后面的省略号,那是一些补充参数,一般最多一个,这原创 2017-09-08 11:40:36 · 25613 阅读 · 0 评论 -
/proc/meminfo分析(一)
本文主要分析/proc/meminfo文件的各种输出信息的具体含义。一、MemTotalMemTotal对应当前系统中可以使用的物理内存。这个域实际是对应内核中的totalram_pages这个全局变量的,定义如下:unsigned long totalram_pages __read_mostly;该变量表示当前系统中Linux内核可以管理的所有的转载 2017-09-15 11:09:41 · 1006 阅读 · 0 评论 -
android读写iic设备
http://blog.youkuaiyun.com/daniel117/article/details/17464783?locationNum=2&fps=1 在Android开发和移植过程中,有时需要对某设备进行读写,但系统可能并未提供相应的服务。我们就需要自己开发硬件访问服务来控制设备。下面的例子是读写最简单的i2c设备eeprom的流程, i2c的驱动编写有两种方式,一种是利用系统提供的转载 2017-09-06 17:21:03 · 2273 阅读 · 0 评论 -
Linux 文件系统与设备文件系统(3)
成于坚持,败于止步sysfs 文件系统与 Linux 设备模型 1.sysfs 文件系统 Linux 2.6 内核引入了 sysfs 文件系统,sysfs 被看成是与 proc、devfs 和 devpty 同类别的文件系统,该文件系统是一个虚拟的文件系统,它可以产生一个包括所有系统硬件的层级视图,与提供进程和状态信息的 proc 文件系统十分类似。 sysfs转载 2017-09-15 11:54:33 · 390 阅读 · 0 评论 -
Linux驱动的并发处理---原子操作
1.对称多处理器(SMP)的多个 CPUSMP 是一种紧耦合、共享存储的系统模型,其体系结构如图 7.3 所示,它的特点是多个 CPU 使用共同的系统总线,因此可访问共同的外设和储存器。 2.单 CPU 内进程与抢占它的进程 Linux 2.6 内核支持抢占调度,一个进程在内核执行的时候可能被另一高优先级进程打断,进程与抢占它的进程访问共享资源的情况类似于 SMP 的多原创 2017-09-15 12:02:03 · 538 阅读 · 0 评论 -
Linux内核学习笔记之使用ioctl函数实现用户态命令
驱动程序:[cpp] view plain copy/******************************** * GPIO驱动程序控制GPIO接口高低电平 * 基于gpio库,四个GPIO识别为一个设备 * 使用miscdevice结构体动态分配设备号,自动创建/dev/文件 * 使用ioctl函转载 2017-09-08 11:54:16 · 1049 阅读 · 0 评论 -
IPU相关知识(一)
IPU参考:http://blog.youkuaiyun.com/yanbixing123/article/details/52290933The i.MX 6DualPlus/6QuadPlus implements a robust muxing logic on the four display ports (2x per IPU), to the external interfa原创 2017-09-15 17:15:57 · 1362 阅读 · 0 评论 -
IPU相关知识(二)
原创 2017-09-16 13:22:18 · 597 阅读 · 0 评论 -
LCD驱动(FrameBuffer)实例开发讲解(一)
常见TFT屏工作时序分析:LCD提供的外部接口信号:VSYNC/VFRAME/STV:垂直同步信号(TFT)/帧同步信号(STN)/SEC TFT信号; HSYNC/VLINE/CPV:水平同步信号(TFT)/行同步脉冲信号(STN)/SEC TFT信号; VCLK/LCD_HCLK:象素时钟信号(TFT/STN)/SEC TFT信号; VD[23:0]:LCD转载 2017-09-15 15:23:56 · 1035 阅读 · 0 评论 -
LCD调试问题总结
1、发现左右显示不全:具体表现是图片显示一个边缘显示不全,是左右参数计算有问题,导致整个图片显示偏移了;2、LCD屏抖动问题:主要是LCD屏的6/8位选择的gpio没有拉高到指定的3.3V。3、确认数据缓存正确性:如果lcd点亮,但是花屏。则需要先确认数据格式是否正确,然后确认fb里的数据是否正常,有以下几种方法确认fb里的数据1:cat/dev/g原创 2017-09-16 09:03:29 · 906 阅读 · 0 评论 -
LVDS参数详解
fb_videomode各个参数的意义Linux对LCD的抽象如下图所示:下面研究一下fb_videomode各个成员的意义: 名称在数据手册中的简称中文名意义备注nameNo名字液晶屏名字(可选)Norefre原创 2017-09-15 15:16:12 · 6646 阅读 · 0 评论 -
LCD驱动---LVDS详解(一)
fb_videomode每个参数的意思: 1struct fb_videomode { 2 const char *name; //name 3 u32 refresh; //Frequency 4 u32 xres; 5 u32 yres; 6 u32 pixclock; //时钟频率原创 2017-09-16 09:00:45 · 9919 阅读 · 1 评论