驱动
文章平均质量分 73
wh8_2011
这个作者很懒,什么都没留下…
展开
-
LINUX设备模型BUS,DEVICE,DRIVER
虽然看了上面一篇转载的《使用/sys/访问系统》对总线,驱动,设备都讲得比较细但还是没有太多的感觉。在此就先把自己今天所学回忆一下。 为了满足新的要求,linux2.6提供了新的设备模型:总线、驱动、设备。基本关系简要的概括如下:驱动核心可以注册多种类型的总线。每种总线下面可以挂载许多设备。(通过kset devices)每种总线下可以用很多设备驱动。(通过包含一个kset转载 2016-01-05 11:04:20 · 464 阅读 · 0 评论 -
Linux内核部件分析 设备驱动模型之device-driver
前面我们分析了device、driver、bus三种类型,主要是三者的注册与注销,在sysfs中的目录与属性文件创建等内容。本节就来详细分析下,在设备注册到总线上时,总线是如何为其寻找对应的驱动的;在驱动注册到总线上时,总线又是如何为其寻找对应的设备的。本节的实现代码集中在drivers/base/bus.c和drivers/base/dd.c中。先来回忆下,在device_reg转载 2016-06-19 10:46:12 · 1916 阅读 · 0 评论 -
Linux内核部件分析 设备驱动模型之device
linux的设备驱动模型,是建立在sysfs和kobject之上的,由总线、设备、驱动、类所组成的关系结构。从本节开始,我们将对linux这一设备驱动模型进行深入分析。 头文件是include/linux/device.h,实现在drivers/base目录中。本节要分析的,是其中的设备,主要在core.c中。struct device { struct de转载 2016-06-19 10:51:40 · 2263 阅读 · 0 评论 -
Linux内核部件分析 设备驱动模型之driver
上节我们分析设备驱动模型中的device,主要是drivers/base/core.c,可以说是代码量最大的一个文件。本节要分析的驱动driver,就要相对简单很多。原因也很简单,对于driver,我们能定义的公共部分实在不多,能再sysfs中表达的也很少。本节的分析将围绕drivers/base/driver.c,但头文件仍然是include/linux/device.h和drivers/bas转载 2016-06-19 10:52:38 · 764 阅读 · 0 评论 -
linux内核部件分析之——设备驱动模型之class
前面看过了设备驱动模型中的bus、device、driver,这三种都是有迹可循的。其中bus代表实际的总线,device代表实际的设备和接口,而driver则对应存在的驱动。但本节要介绍的class,是设备类,完全是抽象出来的概念,没有对应的实体。所谓设备类,是指提供的用户接口相似的一类设备的集合,常见的设备类的有block、tty、input、usb等等。 class对应的代码转载 2016-06-20 09:47:25 · 577 阅读 · 0 评论 -
内核模块遍历进程
#include #include #include #include #include int __init sched_fun_init(){struct task_struct *p, *ts = &init_task;struct list_head *pos;int count = 0;list_for_each(pos, &t原创 2016-07-27 22:34:48 · 2942 阅读 · 0 评论 -
Linux内核驱动之主次编号
字符设备通过文件系统中的名子来存取. 那些名子称为文件系统的特殊文件, 或者设备文件,惯例上它们位于 /dev 目录. 字符驱动的特殊文件由使用 ls -l 的输出的第一列的"c"标识.ls -l 命令, 你会看到在设备文件项中有 2 个数(由一个逗号分隔)在最后修改日期前面, 这里通常是文件长度出现的地方. 这些数字是给特殊设备的主次设备编号crw-rw-rw- 1 root root转载 2016-07-21 08:11:36 · 682 阅读 · 0 评论 -
linux等待队列wait_queue_head_t和wait_queue_t
等待队列在linux内核中有着举足轻重的作用,很多linux驱动都或多或少涉及到了等待队列。因此,对于linux内核及驱动开发者来说,掌握等待队列是必须课之一。 Linux内核的等待队列是以双循环链表为基础数据结构,与进程调度机制紧密结合,能够用于实现核心的异步事件通知机制。它有两种数据结构:等待队列头(wait_queue_head_t)和等待队列项(wait_queue_t)。等待队列头和等待转载 2016-07-21 11:55:42 · 1399 阅读 · 0 评论 -
CMOS摄像头驱动分析笔记1
最近学习摄像头驱动,刚刚大体上看完,有些地方换是不太明白,先做个笔记总结一下这几天看的,水平不行,语言很搓,有错误欢迎指正,十分感谢。CMOS摄像头接口接口主要由I2C控制总线部分和摄像头数据传输部分组成,i2c控制部分主要完成对摄像头模块的初始化,初始化后摄像头才能工作,摄像头数据传输接口叫做CAMIF接口,也叫FIMC,之前关于这个FIM转载 2016-11-10 07:26:02 · 1729 阅读 · 0 评论 -
SPI通信协议(SPI总线)学习
1、什么是SPI?SPI是串行外设接口(Serial Peripheral Interface)的缩写。是 Motorola 公司推出的一种同步串行接口技术,是一种高速的,全双工,同步的通信总线。2、SPI优点支持全双工通信通信简单数据传输速率块3、缺点没有指定的流控制,没有应答机制确认是否接收到数据,所以跟IIC总线协议比较在数据可靠性上有一定的缺陷。4、特点1...转载 2019-08-19 16:31:09 · 3566 阅读 · 0 评论 -
Linux内核部件分析 设备驱动模型之bus
前面我们分析了设备驱动模型中的device和driver,device和driver本来是不相关的东西,只因为bus的存在,才被联系到了一起。本节就来看看设备驱动模型中起枢纽作用的bus。本节的头文件在include/linux/device.h和drivers/base/base.h,实现代码主要在bus.c中。因为在bus中有很多代码时为了device找到driver或者driver找到dev转载 2016-06-19 10:45:12 · 478 阅读 · 0 评论 -
链接地址学习笔记
链接地址启动过程示例代码如下:start.S 文件.globl _start_start:/*硬件相关设置*/ldr r0,=0x70000000orr r0,r0,#0x13mcr p15,0,r0,c15,c2,4/*关看门狗*/ bl test转载 2016-07-26 10:12:47 · 1258 阅读 · 0 评论 -
Linux内核中的atoi,itoa等函数
对于普通应用程序,可以通过包含头文件stdlib.h和stdio.h,string.h等,然后调用需要的itoa(),atoi()等函数,但是对于Linux内核来说,无法使用那些C库中的函数。对此Linux内核里有了相应的实现:对于atoi()用simple_strtol() ,simple_strtoul()等函数替代;对于itoa(),用snprintf()。原创 2016-07-25 22:42:27 · 9023 阅读 · 0 评论 -
Linux驱动总结3- unlocked_ioctl和堵塞(waitqueue)读写函数的实现
学习了驱动程序的设计,感觉在学习驱动的同时学习linux内核,也是很不错的过程哦,做了几个实验,该做一些总结,只有不停的作总结才能印象深刻。我的平台是虚拟机,fedora14,内核版本为2.6.38.1.其中较之前的版本存在较大的差别,具体的实现已经在上一次总结中给出了。今天主要总结的是ioctl和堵塞读写函数的实现。一、ioctl函数的实现首先说明在2.6.3转载 2015-12-20 11:25:03 · 795 阅读 · 0 评论 -
error: implicit declaration of function ‘elv_next_request’
error: implicit declaration of function ‘elv_next_request’在Linux 2.3.36上编译2.6.18以前驱动程序发现“error: implicit declaration of function ‘elv_next_request’”因为,从linux-2.6.31开始elv_next_request就消失了因此,在改版本的原创 2015-12-20 15:26:23 · 2159 阅读 · 0 评论 -
ldd3 sbull编译遇到的问题 解决(部分)方法
开始第一次make:结果如下:root@ubuntu:/home/shevarey/ssdd/sbull# makemake -C /lib/modules/2.6.32.16/build M=/home/shevarey/ssdd/sbullmodulesmake[1]: Entering directory `/usr/src/linux-2.6.32.16"转载 2015-12-20 15:43:44 · 1266 阅读 · 0 评论 -
Linux设备驱动程序(LDD)中snull的编译问题
对LDD中snull程序,编译的时候会有许多问题,鉴于网上还没有合适的解决办法,做此总结,整理知识。本文在debian6.0上运行通过,内核版本为2.6.32。学习LDD中网络驱动程序部分,理解snull程序的原理很有必要。snull不依赖于硬件,数据包的收发都属于内存操作,但对整个网络驱动程序原 理已经做了很好的阐述。程序并不复杂,相比e100.c;8139too.c;pci-skeleto转载 2015-12-21 22:06:18 · 1852 阅读 · 0 评论 -
platform总线注册过程及platform_driver与platform_device的匹配
我们知道,按platform结构写驱动,我们只需注册platform_device和platform_driver而不需要我们自己去注册platform总线,因为系统启动就有那条总线,那么它是怎么得到的呢?这里进行具体跟踪一下:start_kernel——>rest_init——>kernel_thread(这个线程创建很重要)——>kernel_init——>do_basic_setup转载 2016-06-15 09:51:07 · 834 阅读 · 0 评论 -
linux下bus、devices和platform的基础模型
一、kobject的定义:kobject是Linux2.6引入的设备管理机制,在内核中由struct kobject结构表示,这个结构使所有设备在底层都具有统一的接口.kobject提供了基本的对象管理能力,是构成Linux2.6设备模型的核心结构,它与sysfs文件系统紧密联系,每个在内核中注册kobject对象都对应与sysfs文件系统中的一个目录;kobject--->sysfs.dir转载 2016-06-15 09:58:23 · 3146 阅读 · 0 评论 -
Linux驱动开发必看
【IT168 技术文档】在开始步入Linux设备驱动程序的神秘世界之前,让我们从驱动程序开发人员的角度看几个内核构成要素,熟悉一些基本的内核概念。我们将学习内核定时器、同步机制以及内存分配方法。不过,我们还是得从头开始这次探索之旅。因此,本章要先浏览一下内核发出的启动信息,然后再逐个讲解一些有意思的点。 2.1 启动过程 图2-1显示了基于x86计算机Linux系统的启动顺序转载 2016-07-24 22:38:20 · 2028 阅读 · 0 评论 -
linux下proc文件的读写(部分转载)
in Linux, proc文件系统是一个虚拟文件系统,用户和应用程序可以通过proc文件系统得到当前的一些系统信息,并可以改变一些内核的参数。/proc下的文件是一种特殊文件,不能够像一般文件一样创建删除。如果要创建一个 proc 文件,并且不用 proc_fs 默认提供的 file_operations 的话,可以使用 proc_create() 这个函数(见方法二),通过最后一个参数转载 2016-07-25 07:41:14 · 1340 阅读 · 0 评论 -
用户空间和内核空间通讯之【proc文件系统】
今天我们介绍另一种用户内核空间通信的方法:proc文件系统。proc文件系统作为linux提供的一种虚拟文件系统并不占用实际外围存储空间,它仅存在于内存中,系统断电即消失。proc文件系统最开始的设计主要是为满足内核向用户态进程报告其状态而设计,并没有为输入做规定和说明。随着发展,现在的proc文件系统已经演变成一个“用户-内核”空间半双工的通信方式了(虽然目前已经开始有点混乱了,但某些早期开转载 2016-07-25 07:57:47 · 442 阅读 · 0 评论 -
tftp使用方法
1. 从设备上下载1.jpg到PC端: >tftp-p-l1.jpg192.168.213.128 2. 从PC端上传输ZKDB.db文件到设备:>tftp-g192.168.213.128-rZKDB.db上传参数说明:-l是local的缩写,后跟存在于Client的源文件名,或下载Client后...转载 2019-09-02 16:29:57 · 714 阅读 · 0 评论