04 2016 档案

该文被密码保护。
posted @ 2016-04-29 13:50 OracleLoyal 阅读(1) 评论(0) 推荐(0)
该文被密码保护。
posted @ 2016-04-29 13:31 OracleLoyal 阅读(3) 评论(0) 推荐(0)
该文被密码保护。
posted @ 2016-04-28 17:15 OracleLoyal 阅读(6) 评论(0) 推荐(0)
该文被密码保护。
posted @ 2016-04-27 15:44 OracleLoyal 阅读(2) 评论(0) 推荐(0)
该文被密码保护。
posted @ 2016-04-27 15:00 OracleLoyal 阅读(10) 评论(0) 推荐(0)
摘要:Input event驱动 Linux 专门对输入设备。 键盘,鼠标,手柄,触摸屏。按键。封装一个类驱动。 主要统一与应用程序接口。这一类的设备结点都是在/dev/input/eventn( 0<=n) 用户程序读驱动的输入都采用统一格式,即struct input_event,方便应用程序来读写 阅读全文
posted @ 2016-04-27 10:00 OracleLoyal 阅读(597) 评论(0) 推荐(0)
摘要:/* * Copyright (c) 2000-2001 Vojtech Pavlik * * Based on the work of: * Hamish Macdonald *//* * Amiga keyboard driver for Linux/m68k *//* * This progr 阅读全文
posted @ 2016-04-27 09:55 OracleLoyal 阅读(536) 评论(0) 推荐(0)
摘要:delay函数是忙则等待,占用CPU时间;而sleep函数使调用的进程进行休眠。 udelay引用头文件/include/asm-***/delay.h,mdelay和ndelay则引用/include/linux/delay.h。 其中,要说的是mdelay、ndelay都是通过udelay衍生出 阅读全文
posted @ 2016-04-27 09:31 OracleLoyal 阅读(2316) 评论(0) 推荐(0)
摘要:1: openssl/opensslv.h: No such file or directory sudo apt-get install libssl-dev 2:一般配置内核树,需要先make oldconfig 阅读全文
posted @ 2016-04-25 17:29 OracleLoyal 阅读(269) 评论(0) 推荐(0)
摘要:1. 按键驱动 \drivers\input\keyboard\utu2440_buttons.c 2. LED驱动 \drivers\char\utu2440-led.c 3. DM9000网卡驱动 \drivers\net\DM9000.c 4. 串口(包含三个串口驱动0,1,2,对应设备名,/ 阅读全文
posted @ 2016-04-25 17:14 OracleLoyal 阅读(1943) 评论(0) 推荐(0)
摘要:设备与驱动的两种绑定方式:在设备注册时进行绑定及在驱动注册时进行绑定。 以一个USB设备为例,有两种情形: (1)先插上USB设备并挂到总线中,然后在安装USB驱动程序过程中从总线上遍历各个设备,看驱动程序是否与其相匹配,如果匹配就将两者邦定。这就是platform_driver_register( 阅读全文
posted @ 2016-04-25 16:50 OracleLoyal 阅读(987) 评论(0) 推荐(0)
摘要:之一:bus_type 总线是处理器和一个或多个设备之间的通道,在设备模型中,所有的设备都通过总线相连,甚至是内部的虚拟"platform"总线。可以通过ls -l /sys/bus看到系统加载的所有总线。 drwxr-xr-x root root 1970-01-01 00:02 platform 阅读全文
posted @ 2016-04-22 10:54 OracleLoyal 阅读(1258) 评论(0) 推荐(0)
摘要:尽管LDD3中说对多数程序员掌握设备驱动模型不是必要的,但对于嵌入式Linux的底层程序员而言,对设备驱动模型的学习非常重要。 Linux设备模型的目的:为内核建立一个统一的设备模型,从而又一个对系统结构的一般性抽象描述。换句话说,Linux设备模型提取了设备操作的共同属性,进行抽象,并将这部分共同 阅读全文
posted @ 2016-04-22 10:03 OracleLoyal 阅读(471) 评论(0) 推荐(0)
摘要:作者:yuanlulu http://blog.csdn.net/yuanlulu 版权没有,但是转载请保留此段声明 第1章platform驱动管理机制 Linux2.6内核引入了一套新的驱动管理机制:Platform_device 和 Platform_driver 。设备用Platform_de 阅读全文
posted @ 2016-04-22 09:47 OracleLoyal 阅读(508) 评论(0) 推荐(0)
摘要:一 按键驱动程序的简单实现下面是基于中断和消息的按键驱动程序,其工作原理是:当应用程序读取键值时,会调用按键驱动程序的read函数,而我们实现的read函数检测完读取长度后没有直接读取键值而是等待按键消息,如果没有按键,程序会进入休眠状态,这样可以节省大量的CPU,而当我们按键时硬件会产生中断,程序 阅读全文
posted @ 2016-04-21 16:41 OracleLoyal 阅读(461) 评论(0) 推荐(0)
摘要:/* 一:input_dev代表一个输入设备 二:input_event事件传送的载体,输入子系统的事件通过这个结构体包装传送给用户空间 三:input_handler事件驱动的主体,每一种处理方式对应一个handler结构体 四:input_handle用来连接input_dev和input_ha 阅读全文
posted @ 2016-04-21 14:48 OracleLoyal 阅读(297) 评论(0) 推荐(0)
摘要:http://blog.csdn.net/lbmygf/article/details/7360084 1 #include <linux/module.h> 2 #include <linux/kernel.h> 3 #include <linux/init.h> 4 #include <linu 阅读全文
posted @ 2016-04-15 18:04 OracleLoyal 阅读(165) 评论(0) 推荐(0)
摘要:struct pollfd { int fd; //当前描述符 short events; //进程关心的该描述符的事件 short revents; //返回的事件};asmlinkage long sys_poll(struct pollfd __user *ufds, unsigned int 阅读全文
posted @ 2016-04-15 13:28 OracleLoyal 阅读(407) 评论(0) 推荐(0)
摘要:Epoll详解及源码分析 1.什么是epoll epoll是当前在Linux下开发大规模并发网络程序的热门人选,epoll 在Linux2.6内核中正式引入,和select相似,都是I/O多路复用(IO multiplexing)技术,按照man手册的说法:是为处理大批量句柄而作了改进的poll。 阅读全文
posted @ 2016-04-15 13:14 OracleLoyal 阅读(317) 评论(0) 推荐(0)
摘要:Repo:就是一组git命令的集合,repo init 下载一个分支。 repo start 文件名 --all本地传建的另一个代码分支,用于备份作用。 比如:repo start zhao --all git brach 查看当前的分支,切换分支用git checkout 分支名 git diff 阅读全文
posted @ 2016-04-14 17:26 OracleLoyal 阅读(372) 评论(0) 推荐(0)
摘要:谷歌提供的安卓源码中,网址如下:http://androidxref.com http://blog.csdn.net/zoe6553/article/details/6622258 阅读全文
posted @ 2016-04-14 13:06 OracleLoyal 阅读(144) 评论(0) 推荐(0)
摘要:linux下bus,device,driver三者关系 1.bus: 总线作为主机和外设的连接通道,有些总线是比较规范的,形成了很多协议。如 PCI,USB,1394,IIC等。任何设备都可以选择合适的总线连接到主机。当然主机也可能就是CPU本身。内存也是通过BUS连接到主机的,可内存 使用的总线不 阅读全文
posted @ 2016-04-13 11:14 OracleLoyal 阅读(765) 评论(0) 推荐(0)
摘要:linux内核中的get_user和put_user 在 内核空间和用户空间交换数据时,get_user和put_user是两个两用的函数。相对于copy_to_user和 copy_from_user(将在另一篇博客中分析),这两个函数主要用于完成一些简单类型变量(char、int、long等)的 阅读全文
posted @ 2016-04-13 11:13 OracleLoyal 阅读(2631) 评论(0) 推荐(0)
摘要:access_ok() 函数是用来代替老版本的 verify_area() 函数的。它的作用也是检查用户空间指针是否可用。 函数原型: access_ok (type, addr, size); 变量说明: type : 访问类型,其值可为 VERIFY_READ 或者 VERIFY_WRITE 。 阅读全文
posted @ 2016-04-13 11:12 OracleLoyal 阅读(1068) 评论(0) 推荐(0)
摘要:在驱动程序里, ioctl() 函数上传送的变量 cmd 是应用程序用于区别设备驱动程序请求处理内容的值。cmd除了可区别数字外,还包含有助于处理的几种相应信息。 cmd的大小为 32位,共分 4 个域: bit31~bit30 2位为 “区别读写” 区,作用是区分是读取命令还是写入命令。 bit2 阅读全文
posted @ 2016-04-13 11:07 OracleLoyal 阅读(309) 评论(0) 推荐(0)
摘要:问题:java.lang.UnsupportedClassVersionError: com/google/doclava/Doclava : Unsupported update-java-alternatives -l查看需要的版本 sudo update-java-alternatives - 阅读全文
posted @ 2016-04-12 18:08 OracleLoyal 阅读(1683) 评论(0) 推荐(0)
摘要:刚看 O'REILLY 写的《LINUX 设备驱动程序》时。作者一再强调在编写驱动程序时必须 建立内核树。先前的内核只需要有一套内核头文件就够了,但因为2.6的内核模块吆喝内核源码树中的目标文件连接,通过这种方式,可得到一个更加健壮的模块 装载器,但也需要这些目标文件存在于内核目录树中。所谓内核树, 阅读全文
posted @ 2016-04-12 15:33 OracleLoyal 阅读(523) 评论(0) 推荐(0)
摘要:SYS节点 目录结构: 1:sysfs相关知识点介绍(介绍sysfs的体系结构) 2:sys节点核心知识(使用sys节点核心的知识) 3:代码实例(创建sys节点的代码实例) 1:sysfs相关知识点介绍 1.1:sysfs 虚拟文件系统 sysfs是一种基于ram的文件系统,它提供了一种用于向用户 阅读全文
posted @ 2016-04-12 14:41 OracleLoyal 阅读(1702) 评论(0) 推荐(0)
摘要:Container_of在Linux内核中是一个常用的宏,用于从包含在某个结构中的指针获得结构本身的指针,通俗地讲就是通过结构体变量中某个成员的首地址进而获得整个结构体变量的首地址。 Container_of的定义如下: [cpp] view plain copy #define container 阅读全文
posted @ 2016-04-11 16:33 OracleLoyal 阅读(321) 评论(0) 推荐(0)
摘要:class_create(),device_create自动创建设备文件结点 从linux 内核2.6的某个版本之后,devfs不复存在,udev成为devfs的替代。相比devfs,udev有很多优势,在此就不罗嗦了,提醒一 点,udev是应用层的东东,不要试图在内核的配置选项里找到它;加入对ud 阅读全文
posted @ 2016-04-11 15:09 OracleLoyal 阅读(388) 评论(0) 推荐(0)
摘要:C语言标记化结构初始化语法 (designated initializer),而且还是一个ISO标准。 [cpp] view plain copy #include <stdio.h> #include <stdlib.h> struct operators { void (*read1)(char 阅读全文
posted @ 2016-04-11 15:08 OracleLoyal 阅读(255) 评论(0) 推荐(0)
摘要:工作队列一般用来做滞后的工作,比如在中断里面要做很多事,但是比较耗时,这时就可以把耗时的工作放到工作队列。说白了就是系统延时调度的一个自定义函数。 工作队列是实现延迟的新机制,从 2.5 版本 Linux 内核开始提供该功能。不同于微线程一步到位的延迟方法,工作队列采用通用的延迟机制,工作队列的处理 阅读全文
posted @ 2016-04-11 10:11 OracleLoyal 阅读(484) 评论(0) 推荐(0)
摘要:DEVICE_ATTR的使用 使用DEVICE_ATTR,可以在sys fs中添加“文件”,通过修改该文件内容,可以实现在运行过程中动态控制device的目的。 类似的还有DRIVER_ATTR,BUS_ATTR,CLASS_ATTR。 这几个东东的区别就是,DEVICE_ATTR对应的文件在/sy 阅读全文
posted @ 2016-04-11 09:41 OracleLoyal 阅读(2937) 评论(0) 推荐(0)
摘要:sysfs接口函数到建立_DEVICE_ATTR 最近在弄Sensor驱动,看过一个某厂家的成品驱动,里面实现的全都是sysfs接口,hal层利用sysfs生成的接口,对Sensor进行操作。 说道sysfs接口,就不得不提到函数宏 DEVICE_ATTR 原型是#define DEVICE_ATT 阅读全文
posted @ 2016-04-08 18:47 OracleLoyal 阅读(404) 评论(0) 推荐(0)
摘要:1:function.h #ifndef FUNCTION_H#define FUNCTION_H#define DRIVER_FUNCTION_ADD_DEVICE#define DRIVER_FUNCTION_UNLOAD#define DRIVER_FUNCTION_INTERNAL_DEVI 阅读全文
posted @ 2016-04-08 15:46 OracleLoyal 阅读(488) 评论(0) 推荐(0)
摘要:在这里我分析应用程序如何访问字符设备,了解其整个过程,通过这个分析,对字符驱动的了解会提升很多。 用户访问字符设备的大概流程: 用户 >> VFS >> 设备驱动 用户空间 >linux系统调用 >间接调用cdev.file_operation的对应函数。 下面我们以用户指行open("/dev/l 阅读全文
posted @ 2016-04-08 15:32 OracleLoyal 阅读(744) 评论(0) 推荐(0)
摘要:加载驱动模块时Device or resource busy的解决方法 加载驱动模块时Device or resource busy的解决方法 insmod或modprobe驱动模块时Device or resource busy的解决方法 在编译好memdev驱动模块后,通过insmod加载模块时 阅读全文
posted @ 2016-04-08 15:27 OracleLoyal 阅读(10332) 评论(0) 推荐(0)
摘要:概述: 字符设备驱动程序: 是按照字符设备要求完成的由操作系统调用的代码。 重点理解以下内容: 1. 驱动是写给操作系统的代码,它不是直接给用户层程序调用的,而是给系统调用的 2. 所以驱动要向系统注册。 3. 注册的时候,要求驱动必须符合一定的规范,否则系统就会不认识。这就是程序架构。 4. 字符 阅读全文
posted @ 2016-04-08 15:20 OracleLoyal 阅读(389) 评论(0) 推荐(0)
摘要:1:memdev.h 1 #ifndef MEMDEV_H_ 2 #define MEMDEV_H_ 3 #ifndef MEMDEV_MAJOR 4 #define MEMDEV_MAJOR 179 /*预设的mem的主设备号*/ 5 #endif 6 7 #ifndef MEMDEV_NR_DE 阅读全文
posted @ 2016-04-08 15:13 OracleLoyal 阅读(823) 评论(0) 推荐(0)
摘要:struct file_operations{ struct module *owner; // 指向拥有该结构的模块的指针,避免正在操作时被卸载,一般为初始化为THIS_MODULES loff_t (*llseek) (struct file *, loff_t, int); // llseek 阅读全文
posted @ 2016-04-08 13:26 OracleLoyal 阅读(573) 评论(0) 推荐(0)
摘要:android ADB命令的使用 android ADB命令的使用 ADB是一个 客户端-服务器端 程序, 其中客户端是你用来操作的电脑, 服务器端是android设备. 先说安装方法, 电脑上需要安装客户端. 客户端包含在sdk里. 设备上不需要安装, 只需要在手机上打开选项settings-ap 阅读全文
posted @ 2016-04-07 17:06 OracleLoyal 阅读(228) 评论(0) 推荐(0)
摘要:在这里首先需要说明,这一系列的文章可能跨度比较大,比如按照正常的逻辑,写完怎样搭建开发环境之后,就该接着讲一个helloworld的内核模块,然 后才是这一篇字符驱动的文章,但是我不想重复的去写那么多东西,至于有这方面需求的博友,可以随便google一下就能查到很多类似的文章,因为我是希望 linu 阅读全文
posted @ 2016-04-06 15:36 OracleLoyal 阅读(494) 评论(0) 推荐(0)
摘要:内核中每个字符设备都对应一个 cdev 结构的变量,下面是它的定义: linux-2.6.22/include/linux/cdev.h struct cdev { struct kobject kobj; // 每个 cdev 都是一个 kobject struct module *owner; 阅读全文
posted @ 2016-04-06 15:27 OracleLoyal 阅读(497) 评论(0) 推荐(0)
摘要:开始写Linux设备驱动程序的时候,很多时候都是利用mknod命令手动创建设备节点(包括ldd3中不少例子也是这样),实际上现在Linux内核为我们提供了一组函数,可以用来在模块加载的时候自动在/dev目录下创建相应设备节点,并在卸载模块时删除该节点。 内核中定义了struct class结构体,顾 阅读全文
posted @ 2016-04-06 15:25 OracleLoyal 阅读(2358) 评论(0) 推荐(0)
摘要:编译模块安装之后会在/sys/class/看到hello_char_class 以及目录内的chrdev,同时也会在/dev下看到udev为我们建立的节点chrdev. 阅读全文
posted @ 2016-04-06 14:58 OracleLoyal 阅读(2460) 评论(0) 推荐(0)
摘要:首先需要了解sys节点和linux驱动编程的知识,在linux内核<linux/>下有着对应的实现。本例实现创建sys节点,外围程序通过input子系统控制鼠标位置。 第一步编写驱动代码,创建sys节点: 你就会看到你input设备上报的坐标,打印信息如下: 阅读全文
posted @ 2016-04-06 10:20 OracleLoyal 阅读(797) 评论(0) 推荐(0)
摘要:本文将直接了当的带你进入linux的模块编译。当然在介绍的过程当中,我也会添加一些必要的注释,以便初学者能够看懂。之所以要写这篇文章,主要是因为 从书本上学的话,可能要花更长的时间才能学会整个过程,因为看书的话是一个学习过程,而我这篇文章更像是一个培训。所以实践性和总结性更强。通过本文你将 会学到编 阅读全文
posted @ 2016-04-06 09:40 OracleLoyal 阅读(208) 评论(0) 推荐(0)
摘要:.c源码: 1 #include <linux/module.h> /* 引入与模块相关的宏 */ 2 #include <linux/init.h> /* 引入module_init() module_exit()函数 */ 3 #include <linux/moduleparam.h> /* 阅读全文
posted @ 2016-04-06 09:31 OracleLoyal 阅读(169) 评论(0) 推荐(0)
摘要:1 ifeq ($(KERNELRELEASE),) 2 CURRENT_PATH=$(shell pwd) 3 #KERNEL_DIR:=/lib/modules/$(shell uname -r)/build/ 4 KERNEL_DIR:=/lib/modules/$(shell uname - 阅读全文
posted @ 2016-04-05 18:29 OracleLoyal 阅读(121) 评论(0) 推荐(0)
摘要:error: ERROR: Kernel configuration is invalid. include/generated/autoconf.h or include/config/auto.conf are missing. Run 'make oldconfig && make prepa 阅读全文
posted @ 2016-04-01 16:12 OracleLoyal 阅读(1116) 评论(0) 推荐(0)