在 老罗的android例程里面有 static DEVICE_ATTR(val, S_IRUGO | S_IWUSR, hello_val_show, hello_val_store); /*读取设备属性val*/ static ssize_t hello_val_show(struct device* dev, struct device_attribute* attr, char* buf) { struct hello_android_dev* hdev = (struct hello_…
1.this.setData({ }) <view bindtouchmove="tap_drag" bindtouchend="tap_end" bindtouchstart="tap_start" class="page-top" style="{{translate}}"> this.setData({ translate: 'transform: translateX(' + this.…
1.两者对全局变量 static对全局变量,表示定义一个内部变量 extern对全局变量,表示声明一个外部变量 说明: 1.内部变量:定义的变量只能在本文件中访问,不能被其他文件访问. 2.不同文件中的同名的内部变量互不影响. 3.外部变量:是指定义的变量可被同一工程中其他文件所访问, 4.默认情况下,所有的全局变量都是外部变量 5.同一工程项目中,不同文件中的同名的外部变量,代表着同一变量,指向内存中同一内存. 2.两者对函数作用 static对函数作用:表示定义和声明一个内部函数 exter…
static关键字的用法: 1)将全局变量修饰为静态全局变量 存储在静态存储区,整个程序运行期间一直存在 静态全局变量在声明它的文件之外是不可见的,只要声明它的文件可见,而普通的全局变量则是所有文件可见 2)将局部变量修饰为静态局部变量 存储在静态存储区 作用域仍为局部作用域,但是当局部变量离开作用域之后,并没有销毁,而是仍然存储在内存中,只不过目前暂时不能对它进行访问,直到该函数再次被调用,并且值不变,只会被初始化一次 #include<stdio.h> int fun() { ; //在第…
来自:http://www.hovercool.com/en/Class_create,_device_create,_device_create_file 开始写Linux设备驱动程序的时候,很多时候都是利用mknod命令手动创建设备节点(包括ldd3中不少例子也是这样),实际上现在Linux内核为我们提供了一组函数,可以用来在模块加载的时候自动在/dev目录下创建相应设备节点,并在卸载模块时删除该节点. 内核中定义了struct class结构体,顾名思义,一个struct class结构体…
开始写Linux设备驱动程序的时候,很多时候都是利用mknod命令手动创建设备节点(包括ldd3中不少例子也是这样),实际上现在Linux内核为我们提供了一组函数,可以用来在模块加载的时候自动在/dev目录下创建相应设备节点,并在卸载模块时删除该节点. 内核中定义了struct class结构体,顾名思义,一个struct class结构体类型变量对应一个类,内核同时提供了class_create(…)函数,可以用它来创建一个类,这个类存放于sysfs下面,一旦创建 好了这个类,再调用devic…
这里,我们不会为真实的硬件设备编写内核驱动程序.为了方便描述为Android系统编写内核驱动程序的过程,我们使用一个虚拟的硬件设备,这个设备只有一个4字节的寄存器,它可读可写.想起我们第一次学习程序语言时,都喜欢用“Hello, World”作为例子,这里,我们就把这个虚拟的设备命名为“hello”,而这个内核驱动程序也命名为hello驱动程序.其实,Android内核驱动程序和一般Linux内核驱动程序的编写方法是一样的,都是以Linux模块的形式实现的,具体可参考前面Android学习启动篇…
linux发展第一阶段 01devfs(linux2.6之前) 02udev(用户空间) 03sysfs(linux2.6之后,描述设备属性) linux发展第二阶段 01sysfs+udev(udev用户空间) 02devfs(内核空间) 03proc:在用户态检查内核状态的机制 各个内容简介: 01 sysfs特性: 同比devfs而言:linux2.6之后 作用:表示设备结构,属性 在驱动中用到函数: /*------------------------------------------…
文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/6568411 在智能手机时代,每个品牌的手机都有自己的个性特点.正是依靠这种与众不同的个性来吸引用户,营造品牌凝聚力和用户忠城度,典型的代表非iphone莫属了.据统计,截止2011年5月,AppStore的应用软件数量达381062个,位居第一,而Android Market的应用软件数量达294738,紧随AppStore后面,并有望在8月份…
注意:涉及的代码为android内核代码而不是android源码. 在智能手机时代,每个品牌的手机都有自己的个性特点.正是依靠这种与众不同的个性来吸引用户,营造品牌凝聚力和用户忠城度,典型的代表非iphone莫属了.据统计, 截止2011年5月,AppStore的应用软件数量达381062个,位居第一,而Android Market的应用软件数量达294738,紧随AppStore后面,并有望在8月份越过AppStore.随着Android系统逐步扩大市场占有 率,终端设备的多样性亟需更多的移动…
来自:http://www.hovercool.com/en/Class_create,_device_create,_device_create_file 开始写Linux设备驱动程序的时候,很多时候都是利用mknod命令手动创建设备节点(包括ldd3中不少例子也是这样),实际上现在Linux内核为我们提供了一组函数,可以用来在模块加载的时候自动在/dev目录下创建相应设备节点,并在卸载模块时删除该节点. 内核中定义了struct class结构体,顾名思义,一个struct class结构体…
一直都想亲自做一次使用android应用程序访问Linux内核驱动的尝试,但总是没能做到.最近抽出时间,下决心重新尝试一次.尝试的开始当然是先写一个Linux内核驱动了. 我希望写一个简单测驱动程序,实现写一个字符串进去,然后再把它读出来的功能.驱动中会创建dev/hello设备节点和/sys/class/hello/hello/val 设备节点,没有实现proc/下的对应的设备节点./sys/class/hello/hello/val 主要用于快速测试,而dev/hello则主要用于供上层应用…
本文转载自:http://blog.csdn.net/luoshengyang/article/details/6568411 在智能手机时代,每个品牌的手机都有自己的个性特点.正是依靠这种与众不同的个性来吸引用户,营造品牌凝聚力和用户忠城度,典型的代表非iphone莫属了.据统计,截止2011年5月,AppStore的应用软件数量达381062个,位居第一,而Android Market的应用软件数量达294738,紧随AppStore后面,并有望在8月份越过AppStore.随着Androi…
在内核中, sysfs 属性一般是由 __ATTR 系列的宏来声明的,如对设备的使用 DEVICE_ATTR ,对总线使用 BUS_ATTR ,对驱动使用 DRIVER_ATTR ,对类别(class)使用 CLASS_ATTR, 这四个高级的宏来自于 <include/linux/device.h>, 都是以更低层的来自 <include/linux/sysfs.h> 中的 __ATTR/__ATRR_RO 宏实现. 在adb shell 终端查看到接口,当我们将数据 echo …
说道sysfs接口,就不得不提到函数宏 DEVICE_ATTR,原型是 #define DEVICE_ATTR(_name, _mode, _show, _store) \ struct device_attribute dev_attr_##_name = __ATTR(_name, _mode, _show, _store) 函数宏DEVICE_ATTR内封装的是__ATTR(_name,_mode,_show,_stroe)方法 _show:表示的是读方法, _stroe表示的是写方法.…
转自:https://blog.csdn.net/longwang155069/article/details/52353408 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/longwang155069/article/details/52353408rtc节点rtc-sysfs文件主要的操作就是在sys下创建rtc的属性节点,可以方便用户方便快捷的访问,查找问题.下来大概看看sys下的rtc节点,有个直观的认识.[root@test ~]#…
sysfs接口函数到建立_DEVICE_ATTR 最近在弄Sensor驱动,看过一个某厂家的成品驱动,里面实现的全都是sysfs接口,hal层利用sysfs生成的接口,对Sensor进行操作. 说道sysfs接口,就不得不提到函数宏 DEVICE_ATTR 原型是#define DEVICE_ATTR(_name, _mode, _show, _store) \ struct device_attribute dev_attr_##_name = __ATTR(_name, _mode, _sh…
============================      指引     ============================= 第一节是最基础的驱动程序: 第二节是/dev应用层接口的使用: 第三节是/sys应用层接口的使用: 第四节是对硬件的操作: 第五节是旧版platform_driver的简易说明: 第六节是设备树与新版platform的简易说明: ===========================   简易驱动程序   =========================…
重力传感器是根据压电效应的原理来工作的.   所谓的压电效应就是 “对于不存在对称中心的异极晶体加在晶体上的外力除了使晶体发生形变以外,还将改变晶体的极化状态,在晶体内部建立电场,这种由于机械力作用使介质发生极化的现象称为正压电效应 ”.   重力传感器就是利用了其内部的由于加速度造成的晶体变形这个特性.由于这个变形会产生电压,只要计算出产生电压和所施加的加速度之间的关系,就可以将加速度转化成电压输出.当然,还有很多其它方法来制作加速度传感器,比如电容效应,热气泡效应,光效应,但是其最基本的原理…
SYS节点 目录结构: 1:sysfs相关知识点介绍(介绍sysfs的体系结构) 2:sys节点核心知识(使用sys节点核心的知识) 3:代码实例(创建sys节点的代码实例) 1:sysfs相关知识点介绍 1.1:sysfs 虚拟文件系统 sysfs是一种基于ram的文件系统,它提供了一种用于向用户空间展现内核空间里的对象.属性和链接.sysfs与kobject层次紧密相连,它将kobject层次关系表现出来,使得用户空间可以看见这些层次关系. sysfs 是 Linux 内核中设计较新的一种虚…
sysfs接口函数到建立_DEVICE_ATTR 最近在弄Sensor驱动,看过一个某厂家的成品驱动,里面实现的全都是sysfs接口,hal层利用sysfs生成的接口,对Sensor进行操作. 说道sysfs接口,就不得不提到函数宏 DEVICE_ATTR 原型是#define DEVICE_ATTR(_name, _mode, _show, _store) \ struct device_attribute dev_attr_##_name = __ATTR(_name, _mode, _sh…
网络通信 --> IO多路复用之select.poll.epoll详解 IO多路复用之select.poll.epoll详解      目前支持I/O多路复用的系统调用有 select,pselect,poll,epoll,I/O多路复用就是通过一种机制,一个进程可以监视多个描述符,一旦某个描述符就绪(一般是读就绪或者写就绪),能够通知程序进行相应的读写操作.但select,pselect,poll,epoll本质上都是同步I/O,因为他们都需要在读写事件就绪后自己负责进行读写,也就是说这个读写…
首先需要初始化操作: s32 gtp_sysfs_init(void) { s32 ret ; debug_kobj = kobject_create_and_add("gtp", NULL) ; //SET_INFO_LINE_INFO("Starting initlizing gtp_debug_sysfs"); if (debug_kobj == NULL) { GTP_ERROR("%s: subsystem_register failed\n&q…
本文转载自:https://blog.csdn.net/tianshiyalin/article/details/17136723 一.前言 本人刚学习安卓驱动开发,水平不能说菜,是根本没有水平,在这里把学习过程贴出来,跟大家一起学习交流,还望大家多多指正,转载的请标明出处.http://blog.csdn.net/angle_birds/article/details/16801533 二.android驱动介绍 安卓总体架构是在 Linux内核基础上,增加硬件抽象层(HAL),运行库,jav…
是自己写注册一个input device,模仿keypad,在对应的中断处理函数中上报power key的键值. 具体实现代码如下: 在 alps/kernel-3.10/drivers/misc/mediatek/keypad/kpd.c文件,添加:   #include <linux/slab.h> #define KPD_HAS_HALL_FUN #ifdef KPD_HAS_HALL_FUN //#define HALL_KEY 0 #include <linux/irqchip…
本文转载自:http://blog.csdn.net/manshq163com/article/details/7848714 说道sysfs接口,就不得不提到函数宏 DEVICE_ATTR,原型是 #define DEVICE_ATTR(_name, _mode, _show, _store) \ struct device_attribute dev_attr_##_name = __ATTR(_name, _mode, _show, _store) 函数宏DEVICE_ATTR内封装的是_…
本文转载自:http://blog.sina.com.cn/s/blog_89f592f501013sr2.html 本文以Bma250驱动为例子,详细介绍Gsensor设计的一个模板. gsensor驱动在系统中的层次如下图所示: 图中包含三个部分:hardware, driver, input: n         Hardware:其实我们可以认为Gsensor也是一个I2C设备.整个Gsensor芯片分为两部分,一个是sensor传感器,另一个是controller控制器,用于将sens…
Android USB驱动中,上层应用协议里最重要的一个文件是android/kernel/drivers/usb/gadget/android.c.这个文件实现USB的上层应用协议. 首先包含了一些系统级别的头文件,如模块.电源管理.of API等 /* * Gadget Driver for Android * * Copyright (C) 2008 Google, Inc. *.Copyright (c) 2014, The Linux Foundation. All rights re…
DEVICE_ATTR设置设备属性 为了在sysfs下生成可控节点,方便上层调用. sysfs是一个基于RAM的文件系统,它和Kobject一起,可以将Kernel的数据结构导出到用户空间,以文件目录结构的形式,提供对这些数据结构(以及数据结构的属性)的访问支持.Linux设备模型(4)_sysfs 原型: #define DEVICE_ATTR(_name, _mode, _show, _store) struct device_attribute dev_attr_##_name = __A…
sysfs是一个基于ramfs的文件系统,在2.6内核开始引入,用来导出内核对象(kernel object)的数据.属性到用户空间.与同样用于查看内核数据的proc不同,sysfs只关心具有层次结构的设备信息,比如系统中的总线,驱动以及已经加载的模块等,而诸如PID等信息还是使用proc来管理.本质上,sysfs文件的层次结构就是基于内核中kset与kobject逻辑结构来组织的.从驱动开发的角度,sysfs为我们提供了除了虚拟字符设备的read/write/ioctl和proc系统之外的另外…