- 博客(23)
- 资源 (3)
- 收藏
- 关注
原创 C++中的顺序容器、容器适配器总结
顺序容器: 一、概述1.vector: 内部是数组结构,支持快速的随机访问,但是插入元素时效率低下,需要在一开始就分配大块内存空间; 2.list: 内部是链表结构,支持快速的插入和删除元素,但是不能快速的随机访问。 3.deque: 内部与vector相似,但是其不是一开始就分配一块较大的内存空间,而是使用多块内存空间。并且其空间的大小可向两头移动。所以和...
2018-08-07 16:08:10
513
原创 事件驱动程序(evdev)以及handler的注册过程
上一篇文章中介绍了input_dev和handler的匹配过程,input_dev的属性是在设备驱动程序中设定 的,调用input_device_register向input_core注册。那么对于handler的注册是发生在时间处理层的 ,在input目录下有evdev.c,joydev.c,mousedev.c等事件驱动程序。下面介绍与触摸有关的evdev 事件处理源码;stat...
2018-06-25 18:08:23
658
原创 linux input输入子系统分析(input_dev和handler匹配分析)
内核的输入子系统是相对分散的,对多种不同类别的输入设备(如键盘,鼠标,跟踪球,操纵杆,触摸屏,加速计和手写板)进行统一抽象处理。输入子系统包括两类驱动程序:事件驱动程序和设备驱动程序。事件驱动程序负责和应用程序的接口,而设备驱动程序负责和底层输入设备的通信。鼠标事件生成文件mousedev属于事件驱动程序,而PS/2鼠标驱动程序是设备驱动程序。事件驱动程序是标准的,对所有的输入类都是可用的,所以要...
2018-06-25 17:24:22
2272
原创 触摸屏驱动分析(eeti源码为例)
module_init(egalax_i2c_ts_init)–>表示驱动加载时首先执行的函数是egalax_i2c_ts_init,下面看egalax_i2c_ts_init函数源码:static int egalax_i2c_ts_init(void){ int result; result = misc_register(&egalax_misc_d...
2018-06-24 18:57:29
3916
原创 java/c++中内部类、匿名类
1.java中的内部类:class Outside{ private String nameString ; private int age; Outside() { } Outside(String str_name,int int_age) { nameString=str_name; age=int...
2018-06-01 17:19:38
1968
原创 device_register分析
上篇文章分析了driver_register函数,这篇文章主要介绍device_register。内核在调用device_register的时候也会匹配已经加载好的设备驱动程序,从而执行probe函数。在i2c-core.c中i2c_new_device函数会调用device_register函数,下面开始分析 device_register的源码(driver/base/core.c):i...
2018-04-20 11:10:32
3662
1
原创 driver_register分析
在上一篇文章中分析了,i2c设备和i2c驱动的向总线注册过程。在总线-设备-驱动这种模型中,无论是先进行driver_register还是后进行device_register,总线驱动都会对进行匹配,只有匹配工程后,才会执行驱动的probe函数; 首先分析driver_register函数,先看此函数源码(driver/base/driver.c):int driver_register...
2018-04-18 19:42:39
1563
原创 i2c设备注册(动态注册和静态注册)以及i2c驱动注册过程
一、i2c设备驱动注册 i2c设备驱动注册的调用流程为:xxx_init(设备驱动里所定义)—–>i2c_add_driver—–>i2c_register_driver 下面直接看源码,xxx_init(设备驱动里所定义)源码如下:static int egalax_i2c_ts_init(void){ int result; result = misc_...
2018-04-17 16:46:44
5762
原创 全志R16触摸屏移植
一、全志的模块自动加载功能 在内核目录下的/driver/input下,有源码sw-device.c文件,此为自动加载模块的源码; 先看一个结构体:`static struct sw_device_info ctps[] = { {"egalax_i2c",{ 0x2a}, 0x00, {0x00 },1...
2018-04-17 08:50:08
1498
原创 eclipse+安卓SDK+jdk 搭建安卓开发环境(无需安装ADT插件)
本文环境搭建用到的相应的包在我的资源中都能下载; 1.首先安装JDK a.建议安装JDK1.8,提供的资源下载中也是JDK1.8的安装包; b.双击JDK安装包会出现第一个安装路径进行选择,此路径为JDK的安装路径; c.继续安装会出现第二个安装路径需要选择,此路径为JRE的安装路径; d.JDK和JRE都安装好后,需要配置环境变量,个人觉得只要将jdk和jre的bin文件的绝对路径直接
2018-01-16 11:15:52
14280
7
原创 linux进程间通信需要知道的函数
1. open()函数 功能描述: 用于打开或创建文件,在打开或创建文件时可以指定文件的属性及用户的权限等各种参数。 所需头文件: #include
2017-11-04 19:46:23
220
转载 MMU(内存管理单元)分析
转载:http://blog.youkuaiyun.com/ipmux/article/details/19167605MMU即内存管理单元(Memory Manage Unit),是一个与软件密切相关的硬件部件,也是理解linux等操作系统内核机制的最大障碍之一。可以说,不懂MMU使很多人一直停滞在单片机与无OS的时代。博主之前对MMU也一直是雾里看花,似懂非懂。最近终于自认为云开雾散后,回头总结,感觉有几个
2017-10-28 15:08:52
1036
原创 SPI协议
SPI简介 SPI,是英语Serial Peripheral interface的缩写,顾名思义就是串行外围设备接口。是Motorola首先在其MC68HCXX系列处理器上定义的。SPI接口主要应用在 EEPROM,FLASH,实时时钟,AD转换器,还有数字信号处理器和数字信号解码器之间。SPI,是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为PCB的
2017-10-26 09:58:15
341
原创 I2C协议
1.I2C协议 2条双向串行线,一条数据线SDA,一条时钟线SCL。 SDA传输数据是大端传输,每次传输8bit,即一字节。 支持多主控(multimastering),任何时间点只能有一个主控。 总线上每个设备都有自己的一个addr,共7个bit,广播地址全0. 系统中可能有多个同种芯片,为此addr分为固定部分和可编程部份,细 节视芯片而定,看da
2017-10-23 20:02:42
1343
原创 串口通信
协议: 别人说的话你能听得懂—–>收发双方的封装和解析数据的格式要一致;同步通信和异步通信: 同步通信: 通信双方按照统一节拍工作,所以配合很好;一般需要发送方给接收方发送信息同时发送时钟信号,接收方根据发送方给它的时钟信号来安排自己的节奏。同步通信用在通信双方信息交换频率固定,或者经常通信时。 异步通信: 在双方通信的频率不固定时(有时3m
2017-10-23 16:56:04
593
原创 i2c适配器驱动源码分析(i2c总线驱动)
i2c适配器源码位置在driver/i2c/buss下这里以i2c-sunxi.c为例,i2c适配器设备和驱动的加载绑定过程也可以看做是i2c总线驱动的加载过程,I2C总线驱动是对I2C硬件体系结构中适配器端的实现,适配器可由CPU控制,甚至可以直接集成在CPU内部。 下面以源码进行分析: 函数的入口:subsys_initcall(sunxi_i2c_adap_init); //和一般的驱动
2017-10-22 17:31:09
1845
原创 树的知识点总结
树的分类: 一般树:任意一个节点的个数都不受限制; 二叉树:任意一个子结点的个数和叶子节点的个数最多两个,且节点和子节点位置不可更改; 森林:n个互不相交的树的集合;二叉树分类: 一般二叉树: 满二叉树:在不增加层数的前提下,无法再增加一个节点的前提的二叉树;
2017-09-18 20:16:00
731
原创 linux设备驱动的并发与竞争
Linux设备驱动中必须解决一个问题是多个进程对共享资源的并发访问,并发的访问会导致竞态,在当今的Linux内核中,支持SMP与内核抢占的环境下,更是充满了并发与竞态。幸运的是,Linux 提供了多钟解决竞态问题的方式,这些方式适合不同的应用场景。例如:中断屏蔽、原子操作、自旋锁、信号量等等并发控制机制 并发:指多个执行单元同时、并发被执行,而并发的执行单元对共享资源(硬件资源和软
2017-09-15 14:31:05
403
原创 简单字符设备的驱动源码讲解
#include #include#include#include#include#include#include#include#include#include#include #include#include#include#define CDEVDEMO_MAJOR 255 //一个宏定义 主设备号static int cde
2017-09-11 13:58:37
494
原创 简单字符设备中设计的结构体
struct file 结构体 文件结构体代表一个打开的文件,系统中每个打开的文件在内核空间中都会有一个关联的struct file结构体。它有内核在打开文件时创建,并传递给在文件操作上的任何一个函数。在文件的所有实例都关闭后,内核释放这个数据结构,在内核创建和驱动源码中,struct file的指针通常命名为filp file。 在struct file结构体
2017-09-08 14:28:03
375
原创 简单字符驱动的头文件讲解
#include :写内核是要添加这个头文件,可以将模块动态的加载到内核中去,也可以将模块动态的卸载; 常用的宏定义MODULE_LICENSENCE(),MODULE_AUTHOR等也在此wen'jian'z
2017-09-08 09:25:11
612
linux下的minigui环境搭建包
2017-09-14
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人