自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(18)
  • 资源 (1)
  • 收藏
  • 关注

原创 input子系统框架

一、输入子系统框架输入子系统由核心层(Input Core)、驱动层和事件处理层(Event Handler)三部份组成,如下图所示,一个输入事件通过 Driver -> InputCore ->Eventhandler -> userspace 的顺序到达用户空间传给应用程序。设备驱动层:将底层的...

2017-11-29 19:22:21 2176

原创 evdev事件处理器数据处理过程

在事件处理层()中结构体evdev_client定义了一个环形缓冲区(circular buffer),其原理是用数组的方式实现了一个先进先出的循环队列(circular queue),用以缓存内核驱动上报给用户层的input_event事件。struct evdev_client {   unsignedint head;

2017-11-29 10:11:02 844

原创 i2c、spi设备展开过程

const struct of_device_id of_default_bus_match_table[] = { { .compatible = "simple-bus", }, { .compatible = "simple-mfd", }, #ifdef CONFIG_ARM_AMBA { .compatible = "arm,amba-bus",

2017-11-27 19:47:04 460

转载 字符设备文件的打开

打开字符设备文件,还是通过 sys_open() 系统调用。在经过一连串的调用后,nameidata_to_filp, 内核会走到 __dentry_open() 函数。在这个函数中,执行了以下代码片段:f->f_mapping = inode->i_mapping;f->f_path.dentry = dentry;f->f_path.mnt = mnt;f->f_pos = 0;f

2017-11-23 20:21:43 567

原创 FBIOPAN_DISPLAY和MSMFB_DISPLAY_COMMIT刷屏流程

Android FBIOPAN_DISPLAY刷屏ioctl(fbmem.c)----> fb_ioctl----> FBIOPAN_DISPLAY----> fb_pan_display----> msm_fb_pan_display----> msm_fb_pan_display_ex----> schedule_work(&mfd->commit_wo

2017-11-16 16:35:41 3379 1

原创 mdp ioctl 调用流程

2017-11-15 11:16:32 298

原创 cdv_add

内核中每个字符设备都对应一个 cdev结构的变量,下面是它的定义:kernel/include/linux/cdev.hstruct cdev {        structkobject kobj;         // 每个 cdev都是一个 kobject        structmodule *owner;      /

2017-11-14 14:32:06 261

原创 字符设备初始化

一个 cdev 一般它有两种定义初始化方式:静态的和动态的。 静态内存定义初始化: struct cdev my_cdev; cdev_init(&my_cdev, &fops); my_cdev.owner = THIS_MODULE;动态内存定义初始化: struct cdev *my_cdev = cdev_alloc(); my_cdev->ops = &fops; my_

2017-11-14 14:00:40 330

原创 字符设备的组织形式与设备号的注册分配

在kernel中字符设备用结构体struct char_device_struct表示,其定义如下:#define CHRDEV_MAJOR_HASH_SIZE   255 /*kernel/include/linux/fs.h*/    static struct char_device_struct{/*kernel/fs*/

2017-11-14 10:37:32 269

原创 qcom 显示驱动注册流程

以8909为例,高通显示驱动主要涉及mdp、msmfb、dsi、lcd四个驱动,其中msmfb、lcd在dts中是挂载在mdp下面的,在kernel解析设备节点生成platform_device时是不会展开的。显示驱动注册流程如下图:                              备注:dsi驱动探测在mdp驱动探测完成标志m

2017-11-09 17:16:34 662

原创 FB显示驱动框架

FB显示驱动框架从上到下分为5层,如图1所示。FB设备驱动是一个抽象的显示驱动模型,抽象出了显示驱动公有的操作,为上层提供系统调用,为底层驱动提供接口。源码主要在Fb.h (kernel\include\linux)和Fbmem.c (kernel\drivers\video)两个文件中。FB驱动之下是各个厂商自己的FB驱动,各个厂商实现FB框架制定的操作集,然

2017-11-09 16:03:36 1765

原创 .vimrc 配置

syntax enable syntax onset nuset hlsset noicset rulerset showmode "在底部显示,当前处于命令模式还是插入模式set t_Co=256 "终端开启256色支持"set showmatchset nobackup "覆盖文件时不备份set autochdirset autoindentse...

2017-11-08 14:21:05 250

原创 cs add 命令

cs add 命令用于给当前目录添cscope搜索库添加临时文件,在vim退出后失效。假设/home/xxx/msm8909.LA.3.0-dev/LINUX/android/kernel目录下已经创建cscope.out文件。示例:cs add /home/xxx/msm8909.LA.3.0-dev/LINUX/android/kernel或者cs add /home/xxx/msm

2017-11-07 09:48:32 1168

原创 sys目录devices、dev等目录的创建

static void __init do_basic_setup(void){ cpuset_init_smp(); usermodehelper_init(); shmem_init(); driver_init(); init_irq_proc(); do_ctors(); us

2017-11-06 10:56:36 517

原创 kernel解析设备树生成设备节点过程

/** * unflatten_device_tree - create tree of device_nodes from flat blob * * unflattens the device-tree passed by the firmware, creating the * tree of struct device_node. It also fills the "name"

2017-11-06 10:25:46 3250

原创 phandle

我们可以给一个设备节点添加lable,之后可以通过&lable的形式访问这个lable,这种引用是通过phandle(pointer handle)进行的。在经过DTC工具编译之后,&lable会变成一个特殊的整型数字n,假设n值为1,那么在引用它的节点下自动生成两个属性,属性如下:linux,phandle = ;phandle = ; 如a-reference-to-something

2017-11-02 10:52:12 6524

原创 Device Tree编译工具dtc

Device Tree文件的格式为dts,包含的头文件格式为dtsi,dts文件是一种人可以看懂的编码格式。但是uboot和linux不能直接识别,他们只能识别二进制文件,所以需要把dts文件编译成dtb文件。dtb文件是一种可以被kernel和uboot识别的二进制文件。把dts编译成dtb文件的工具是dtc。Linux源码目录下scripts/dtc目录包含dtc工具的源码。在Linux的sc

2017-11-02 10:27:04 3679

原创 platform_device的生成过程

kernel在引入dts前后,platform_device的生成方式是不同的。在引入设备树之前,platform_device变量是静态定义的。而引入设备树之后,kernel通过解析设备节点的信息生成platform_device。一、引入dts之前 add a platform-level deviceint platform_device_register(struct plat

2017-11-02 09:29:52 1779

atmel89s51芯片数码管显示

单片机 atmel89s51芯片 数码管 动态 显示程序

2010-05-05

空空如也

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

TA关注的人

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