Linux设备驱动
嵌入式Linux,
BSP软件工程师
展开
-
Android RTC 自下往上浅析
1.首先搞清楚RTC在kernel内的作用: linux系统有两个时钟:一个是由主板电池驱动的“Real Time Clock”也叫做RTC或者叫CMOS时钟,硬件时钟。当操作系统关机的时候,用这个来记录时间,但是对于运行的系统是不用这个时间的。另一个时间是 “System clock”也叫内核时钟或者软件时钟,是由软件根据时间中断来进行计数的,内核时钟在系统关机的情况下是不存在的,所以,转载 2015-10-23 17:22:48 · 3051 阅读 · 0 评论 -
rk3188开机失败(ump_file_open() 251)
刚开始配置rk3188板子的时候,基本配置,RK3188 RK616 ACT8846 8G的flash,开机的时候提示如下:[ 18.729270] request_suspend_state: wakeup (0->0) at 18680347129 (1970-01-01 00:00:18.671397630 UTC)[ 23.810524] UMP: ERR:原创 2016-08-24 11:41:34 · 1757 阅读 · 0 评论 -
Input Driver
/* * drivers/leds/leds-mt65xx.c * * This file is subject to the terms and conditions of the GNU General Public * License. See the file COPYING in the main directory of this archive for * more det原创 2015-12-23 15:41:22 · 2098 阅读 · 0 评论 -
MIPI屏数据发送命令解析
MIPI数组发送那里有一个数组,这个数组包含寄存器和寄存器的值: 相当于: 0XC480寄存器下参数0X9C; 0XFF00寄存器下参数0XFF,0XFF,0XFF; 0XC0B5 尝试一下寄存器 0x08 0x18 0x48 0x58 试一下能不能旋转原创 2015-04-03 15:58:21 · 4550 阅读 · 0 评论 -
linux工作队列
这里对Linux的工作队列(work_queue)不做深层次的挖掘,只对如何使用它以及一些简单的结构做简单地介绍。Linux源代码(3.0.8)中和工作队列(work_queue)相关的结构主要在include/linux/workqueue.h这个头文件中,这里就不摘抄了。这里就直接给出例子代码,在结合稍作解释:#include <linux/module.h> #include <linu转载 2016-01-06 11:13:53 · 757 阅读 · 0 评论 -
Linux中的工作队列
工作队列(work queue)是Linux kernel中将工作推后执行的一种机制。这种机制和BH或Tasklets不同之处在于工作队列是把推后的工作交由一个内核线程去执行,因此工作队列的优势就在于它允许重新调度甚至睡眠。工作队列是2.6内核开始引入的机制,在2.6.20之后,工作队列的数据结构发生了一些变化,因此本文分成两个部分对2.6.20之前和之后的版本分别做介绍。I、2.6.0~2.6.1转载 2016-01-06 10:17:32 · 722 阅读 · 0 评论 -
DEVICE_ATTR的使用
使用DEVICE_ATTR,可以在sys fs中添加“文件”,通过修改该文件内容,可以实现在运行过程中动态控制device的目的。类似的还有DRIVER_ATTR,BUS_ATTR,CLASS_ATTR。这几个东东的区别就是,DEVICE_ATTR对应的文件在/sys/devices/目录中对应的device下面。而其他几个分别在driver,bus,class中对应的目录下。转载 2015-12-02 14:43:44 · 1929 阅读 · 0 评论 -
使用class_attribute 生sys文件系统下生成调试文件,方便使用adb调试
/* * och177.c - Linux kernel modules for ambient light sensor * * Copyright (C) 2011 * * This program is free software; you can redistribute it and/or modify * it under the terms of th原创 2015-07-22 14:44:24 · 1274 阅读 · 0 评论 -
linux input&&uevent使用
input 输入子系统问题:最近我自己比较了这两个的作用,我们以前经常用这个来获取底层上报的值,用来做usb插入,键盘输入等区别: input 如果上报的值是1 ,在framework里面就一直获取这个键值,这个是按键的特性D/WindowManager( 632): interceptKeyTi keyCode=42 down=true repeatCount=1427 keyguardOn=t原创 2016-01-06 11:34:02 · 2147 阅读 · 0 评论 -
用Android UEventObserver监听内核event
很多时候我们在框架上层需要知道内核中某些事件的状态,用设备的show属性是可以供上层来查询,但是这需要上层设定一个较耗资源的循环。如果用UEventObserver就可以监听内核event,它是android Java层利用uevent与获取Kernel层状态变化的机制。(1)UEventObserver简介 framework有如下模块使用UEventObserver的功能来提供服务:电池转载 2015-12-31 10:23:45 · 1873 阅读 · 0 评论 -
s5k5e2ya MIPI 摄像头调试
1、驱动移植的话按照我之前的文章来做驱动里面注意是几路的lane,一般mipi的话是差分信号,2路和4路是比较常见的。2、mipi波形很明显上面的波形是不正确的。dp dn有一个都成了正弦波了。首先,我们要找一下正确的波形 正确的波形应该是DP和DN不会同时下降,DN比DP会有一定的延时,正确的波形如下图 mipi会有一个启始信号,我们把示波器设置成下降沿触发,看能不能抓到波形,我尝试了一原创 2015-12-30 11:33:16 · 7748 阅读 · 0 评论 -
Class_file&&Android应用调用方法
/* * drivers/leds/leds-mt65xx.c * * This file is subject to the terms and conditions of the GNU General Public * License. See the file COPYING in the main directory of this archive for * more det原创 2015-12-28 15:09:42 · 1207 阅读 · 0 评论 -
mtk pwm&&linux timer
pwm控制还是有很多要注意的地方 附上驱动的代码/* * drivers/leds/leds-mt65xx.c * * This file is subject to the terms and conditions of the GNU General Public * License. See the file COPYING in the main directory of thi原创 2015-12-28 15:00:21 · 1737 阅读 · 0 评论 -
中断处理的tasklet(小任务)机制-不过如此
中断服务程序一般都是在中断请求关闭的条件下执行的,以避免嵌套而使中断控制复杂化。但是,中断是一个随机事件,它随时会到来,如果关中断的时间太长,CPU就不能及时响应其他的中断请求,从而造成中断的丢失。因此,内核的目标就是尽可能快的处理完中断请求,尽其所能把更多的处理向后推迟。例如,假设一个数据块已经达到了网线,当中断控制器接受到这个中断请求信号时,Linux内核只是简单地标志数据到来了,然后让处理器转载 2015-12-11 14:54:09 · 1037 阅读 · 0 评论