![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
linux驱动
文章平均质量分 78
xiaopohaibebo
原来你若真爱一个人 内心酸涩反而会说不出话来 甜言蜜语多数说给不相干的人听.
展开
-
自动创建设备节点 device_create
error: implicit declaration of ‘class_device_create’这个代码在Kernel 2.6.18下面编译的时候没有任何问题。为什么在2.6.34下面会出现这个错误呢?难道class_device_create这个kernel API已经从新版kernel里面移除了?google了一下,发现确实是已经被移除了,在新版的kernel里面,可转载 2015-01-06 16:14:15 · 838 阅读 · 0 评论 -
Documentation-arm64-booting
Documentation-arm64-booting2013年12月05日 ⁄ 综合⁄ 共 7299字 ⁄ 字号小 中 大 ⁄ 评论关闭Chinese translated version of Documentation-arm64-bootingIf you have any comment or update to the content, please con转载 2015-05-28 15:45:02 · 680 阅读 · 0 评论 -
GPIO_API
#include // 标准 GPIO_API intgpio_request(unsigned gpio, const char *label); 获得并占有 GPIO port 的使用权,由参数 gpio 指定具体 port,非空的lables指针有助于诊断。主要是告诉内核这地址被占用了。当其它地方调用同一地址的gpio_request就会报告错误,该地址已被申请。在/proc转载 2015-05-22 17:22:10 · 636 阅读 · 0 评论 -
内核中 设备树的文档
见kernel/Documentation/devicetree/bindings/interrupt-controller/interrupts.txtSpecifying interrupt information for devices ============================================1) Interrupt client nodes-原创 2015-05-22 17:09:27 · 784 阅读 · 0 评论 -
shell变量详解
1 shell变量基础shell变量是一种很“弱”的变量,默认情况下,一个变量保存一个串,shell不关心这个串是什么含义。所以若要进行数学运算,必须使用一些命令例如let、declare、expr、双括号等。shell变量可分为两类:局部变量和环境变量。局部变量只在创建它们的shell中可用。而环境变量则可以在创建它们的shell及其派生出来的任意子进程中使用。有些变量是用户创建的,其他的则转载 2015-07-01 15:11:11 · 307 阅读 · 0 评论 -
Linux中的中断 2
中断与定时器:中断的概念:指CPU在执行过程中,出现某些突发事件急待处理,CPU暂停执行当前程序,转去处理突发事件,处理完后CPU又返回原程序被中断的位置继续执行中断的分类:内部中断和外部中断内部中断:中断源来自CPU内部(软件中断指令、溢出、触发错误等)外部中断:中断源来自CPU外部,由外设提出请求屏蔽中断和不可屏蔽中断:可屏蔽中断:可以通过屏蔽字被屏蔽,屏蔽转载 2015-05-25 16:19:47 · 474 阅读 · 0 评论 -
linux 中断 1
在linux里,中断处理分为顶半(top half),底半(bottomhalf),在顶半里处理优先级比较高的事情,要求占用中断时间尽量的短,在处理完成后,就激活底半,有底半处理其余任务。底半的处理方式主要有soft_irq,tasklet,workqueue三种,他们在使用方式和适用情况上各有不同。soft_irq用在对底半执行时间要求比较紧急或者非常重要的场合,主要为一些subsystem用,转载 2015-05-25 15:39:59 · 375 阅读 · 0 评论 -
wake_lock 的使用方法
今天有用到用ec43_GPIO的中断来唤醒系统,将系统从深度休眠中唤醒并保证系统wakup 一段时间用过了,方法如下,有同样使用的童鞋可以参考一下!1. 定义一人局部静态变量ec43_wlock:static struct wake_lock ec43_wlock;2. 初始化 wake_lock:wake_lock_init(&ec43_wlock, WAKE转载 2015-07-06 11:12:37 · 826 阅读 · 0 评论 -
LINUX内核 DEVICE_ATTR与cat echo命令 直接读写调用Kernel测试方法
sysfs接口函数的建立_DEVICE_ATTR 【转】出自:http://blog.csdn.net/manshq163com/article/details/78487142012-05-09 11:36:46| 分类:linux文件系统 | 标签:device_attr sysfs接口函数 |字号大中小 订阅 说道sysfs接口,就不得不提到函数宏 DEV转载 2015-07-15 15:57:45 · 7087 阅读 · 0 评论 -
Linux内核module_param的使用
1.定义模块参数的方法:module_param(name, type, perm);其中,name:表示参数的名字; type:表示参数的类型; perm:表示参数的访问权限; 2. 数组类型模块参数的定义:用逗号间隔的列表提供的值;声明一个数组参数:module_param_array(name, type, num, perm);其转载 2015-08-30 16:24:12 · 466 阅读 · 0 评论 -
LInux内核同步与互斥
http://www.cnblogs.com/wang_yb/archive/2013/05/01/3052865.htmlhttp://blog.sina.com.cn/s/blog_65373f14010182xl.html内核中提供了多种方法来防止竞争条件,理解了这些方法的使用场景有助于我们在编写内核代码时选用合适的同步方法,从而即可保证代码中临界区的安全,同转载 2015-08-03 17:10:09 · 527 阅读 · 0 评论 -
wait_event_interruptible 使用方法
读一下wait_event_interruptible()的源码,不难发现这个函数先将 当前进程的状态设置成TASK_INTERRUPTIBLE,然后调用schedule(), 而schedule()会将位于TASK_INTERRUPTIBLE状态的当前进程从runqueue 队列中删除。从runqueue队列中删除的结果是,当前这个进程将不再参 与调度,除非通过其他函数将转载 2015-08-18 09:53:56 · 623 阅读 · 0 评论 -
request_threaded_irq()
http://blog.chinaunix.net/xmlrpc.php?r=blog/article&uid=21977330&id=3755609在linux里,中断处理分为顶半(top half),底半(bottom half),在顶半里处理优先级比较高的事情,要求占用中断时间尽量的短,在处理完成后,就激活底半,有底半处理其余任务。底半的处理方式主要有soft_irq, taskle转载 2015-09-14 13:52:26 · 516 阅读 · 0 评论 -
Linux驱动框架----hwmon
写在前面的话:对于框架,我觉得就是在一定规范的形式下去实现你要的功能。这里就涉及到一个变与不变的地方。你所要实现的功能会是千差万别的---这就是变的地方,而所谓既定的规范,包括建立目录和属性文件这是Linux系统已经为我们做好了的,我们只需要直接拿来引用就OK了。那么今天,我们就来看看hwmon框架是怎么样的。对hwmon而言,它是sysfs框架下的一个类,但是所有有关该类与sys转载 2015-12-17 10:53:02 · 3602 阅读 · 0 评论 -
内核3.x版本之后设备树机制
内核3.x版本之后设备树机制Based on linux 3.10.24 source code 参考/documentation/devicetree/Booting-without-of.txt文档目录内核3.x版本之后设备树机制 1一、设备树(Device Tree)基本概念及作用 3二、设备树的组成和使用 4①DTS和DTSI 4②DTC 4转载 2016-01-05 11:52:45 · 960 阅读 · 0 评论 -
高通 8x26 andorid light sensor(TSL258x) 开发
前言8926平台的sensor架构与之前的平台完全不同,实际上已经脱离了linux。此平台所有的sensor由adsp芯片控制,代码在modem端,编译和烧录也完全不同,下面以TSL2581为例进行说明。一、 驱动集成光传感器TSL2581 1. 驱动程序结构可以参考高通默认的光感驱动文件sns_dd_als_bh1721.c或sns_dd_als_max44009.c或转载 2017-02-03 00:13:45 · 715 阅读 · 0 评论 -
input输入子系统框架
http://blog.csdn.net/sdvch/article/details/44619789http://blog.csdn.net/myarrow/article/details/7098504网上的例子很多,如上。数据结构static LIST_HEAD(input_dev_list);static LIST_HEAD(input_handler原创 2017-11-28 19:47:32 · 922 阅读 · 0 评论 -
linux 内核中的 __define_initcall
LINUX内核中有很多的初始化指示标志postcore_initcall(), arch_initcall(), subsys_initcall(), device_initcall(), etc. 这些起什么作用呢?查阅源代码(android goldfish-2.6.29)并搜索网上相关文章,对此做一总结。初始化标号先看这些宏的定义(定义在文件include/linux/init.转载 2015-05-27 10:13:46 · 467 阅读 · 0 评论 -
insufficient permissions for device错误
Ubuntu下连接平板usb,使用adb shell时出现error: insufficient permissions for device错误,再输入adb devices则提示:nemo@nemo-MS:~$ adb devicesList of devices attached???????????? no permissions经过检查,是因为USB设备未注册的缘故转载 2015-05-15 20:25:57 · 822 阅读 · 0 评论 -
linux 内核中 变长数组
先说说我的理解:struct example{ __u16 tag_type; __u16 tag_len; char tag_data[0];} __attribute ((packed));1. 存在的意义:当结构体的长度变长时,例如里面有一个字符串时,为了方便管理内存。这个结构体不要用struct example a的方式定义, 而应用str转载 2015-05-13 10:51:41 · 2986 阅读 · 0 评论 -
linux oom killer for android
该目录下的文件用来优化虚拟内存比较重要的参数如下justin_$ uname -aLinux justin 2.6.32-100.26.2.el5 #1 SMP Tue Jan 18 20:11:49 EST 2011 x86_64 x86_64 x86_64 GNU/Linux Swappinessjustin_$ more swappiness60--范围从0—转载 2015-01-28 15:01:59 · 1174 阅读 · 0 评论 -
Android增加Happy Touch触摸屏支持
Android增加Happy Touch触摸屏支持1、在hid-ids.h中加入vid pid1#define USB_VENDOR_ID_HAPPYTOUCH 0x04162#define USB_DEVICE_ID_HAPPYTOUCH_SCREEN 0x5030转载 2015-01-15 09:23:58 · 4124 阅读 · 1 评论 -
Uncompressing Linux... done, booting the kernel.
U-boot网口问题解决后,uImage和ramdisk终于可以上传到单板上去验证了。脚本为:MINI6410 # setenv serverip 192.168.1.200 MINI6410 # setenv bootargs root=/dev/ram rootfstype=ext2 init=/linuxrc console=ttySAC0,115200 mem=转载 2015-02-06 17:10:36 · 2300 阅读 · 0 评论 -
Tiny4412 uboot
在/board/samsung/tiny4412中u-boot.lds 文件调用 arch/arm/cpu/armv7/start.Sstart.S调用cpu_init_crit,cpu_init_crit调用/lowlevel_init.S同时mem_init_tiny4412.S、clock_init_tiny4412.S也被编译。iROM 把启动设备上特定位置处的程序读入原创 2015-02-05 19:12:51 · 3824 阅读 · 0 评论 -
4412 上的裸板 跑马灯
#define GPM4CON (*(volatile unsigned int *)0x110002E0)#define GPM4DAT (*(volatile unsigned int *)0x110002E4)#define setbit(x,y) x|=(1<<y) //将X的第Y位置1#define clrbit(x,y) x&=~(1<<y) //将原创 2015-01-23 18:21:18 · 1015 阅读 · 0 评论 -
uboot中 Tiny 4412和smdk 4212的一些不同
Tiny4412.cint board_init(void) #ifdef CONFIG_HAS_PMIC 注释掉了和i2c的读写部分 ............ #else /* fixed voltage */写死电压值 #define VDDM_F(vm) (#vm) #define SHOW_FIXED_VDD(lab, a) printf("%s: %s\n",原创 2015-02-05 16:38:16 · 1879 阅读 · 1 评论 -
uboot 残留问题
Tiny4412 的uboot感谢http://www.arm9home.net/read.php?tid-83474-fpage-0-toread--page-1.html; http://www.arm9home.net/read.php?tid-83595.html在此基础之上根据自己的配置移植了uboot。这是下载uboot的链接: htt原创 2015-02-07 09:41:39 · 790 阅读 · 0 评论 -
一个简单的usb鼠标事件
/* * drivers\hid\usbhid\usbmouse.c */#include #include #include #include #include #include static struct input_dev *uk_dev;static char *usb_buf;static dma_addr_t usb_buf_phys;static int原创 2015-01-04 15:54:16 · 540 阅读 · 0 评论 -
防抖动的按键事件(定时器)
/* 参考drivers\input\keyboard\gpio_keys.c */#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #inc原创 2015-01-04 16:34:36 · 1666 阅读 · 0 评论 -
List for each entry
List for each entry#define list_entry(link, type, member) \ ((type *)((char *)(link)-(unsigned long)(&((type *)0)->member)))#define list_head(list, type, member) \ list_entry((list)->next, ty转载 2015-01-22 13:50:56 · 853 阅读 · 0 评论 -
hid触摸屏调试记录 Linux3.5 for Android
触摸屏我已经有一个吉瑞的单点的触摸屏驱动。我想用吉瑞的驱动程序驱动触想的触摸显示器。我在吉瑞的驱动中加入了usb支持的pid和vid,去掉了内核的hid驱动,结果确实能相应中断,但是老打印 nonzero urb status received: -71。我想用hid驱动程序驱动 吉瑞的屏。我去掉了吉瑞的单点驱动。在hid驱动中加入了吉瑞的pid和vid号。结果屏幕没有响应中断。奇怪的原创 2015-01-22 11:57:09 · 6480 阅读 · 1 评论 -
input 层简单分析
drivers/input/input.c: input_init > err = register_chrdev(INPUT_MAJOR, "input", &input_fops); static const struct file_operations input_fops = { .owner = THIS_MODULE, .open = input_open_file,};原创 2015-01-04 18:01:38 · 553 阅读 · 0 评论 -
usb_touch_screen Linux 驱动
入口函数static int __init general_touch_single_init(void){ int ret = usb_register(&generaltouchsingle_usb_driver); if (ret == 0) printk(KERN_INFO KBUILD_MODNAME ": " DRIVER_VERSION ":" DRIVER_DESC);原创 2015-01-04 09:49:12 · 1935 阅读 · 0 评论 -
Tiny 4412 lcd 驱动分析 2
/home/yangjia/samba/linux-3.5/arch/arm/mach-exynos/mach-tiny4412.c 。_initdata 定义在此文件中。平台驱动都重要在这里注册。平台驱动是匹配名字的。static struct platform_device *smdk4x12_devices[] __initdata = {#ifdef CONFIG_EXYNOS4_原创 2015-03-02 18:44:56 · 3691 阅读 · 0 评论 -
Tiny 4412 lcd 驱动分析
1. 和其它内核代码类似。 显示驱动的分析都是由 drivers/video/fbmem.c开始,fbmem.c是显示驱动的抽象,实际只是一个框架性的东西。 fbmem_init 中实现了一个字符设备驱动,并创建了class,但是没有生成设备文件。 这个字符设备驱动的file_operations里面的函数,实质上都是从struct fb_info *转载 2015-03-02 11:54:49 · 4403 阅读 · 0 评论 -
usb学习1
一 Usb驱动和usb核心之间的交互端点分类1 控制端点 每个usb只有一个控制端点,成为端点0,这个端口被usb核心用来在插入时配 置设备. 2 中断端点 中断端点以固定的速率在每次usb请求设备数据时传输少量的数据.这些端点,对usb键盘和鼠标来说是主要的传输方法.3 块端点 块端点用来传输大量的数据.usb协议并不保证块端点像控制端点原创 2015-04-24 17:42:30 · 581 阅读 · 0 评论 -
schedule_work 工作队列
工作队列一般用来做滞后的工作,比如在中断里面要做很多事,但是比较耗时,这时就可以把耗时的工作放到工作队列。说白了就是系统延时调度的一个自定义函数。1、定义struct work_struct irq_queue;2、初始化INIT_WORK(&irq_queue,do_irq_queuework);3、调用方法:schedule_work(&rq_queue);注,转载 2015-05-11 20:17:37 · 13609 阅读 · 0 评论 -
I2C死锁原因及解决方法
1072一、死锁总线表现 SCL为高,SDA一直为低二、背景知识1. I2C总线空闲状态 I2C总线中,当SCL和SDA都为高电平时,总线处于空闲状态。2. I2C总线起始信号 I2C总线中,当处于空闲状态情况下时,SCL为高,SDA由高到低的变化为起始信号。3. I2C总线停止信号 I2C总线中,当传输完数据后,SCL为高,SDA由低变为高,这个信号为停止信号...转载 2018-02-24 14:12:29 · 1097 阅读 · 0 评论