E-COM-NET
首页
在线工具
Layui镜像站
SUI文档
联系我们
推荐频道
Java
PHP
C++
C
C#
Python
Ruby
go语言
Scala
Servlet
Vue
MySQL
NoSQL
Redis
CSS
Oracle
SQL Server
DB2
HBase
Http
HTML5
Spring
Ajax
Jquery
JavaScript
Json
XML
NodeJs
mybatis
Hibernate
算法
设计模式
shell
数据结构
大数据
JS
消息中间件
正则表达式
Tomcat
SQL
Nginx
Shiro
Maven
Linux
linux设备驱动
[Linux笔记]platform_set_drvdata和platform_get_drvdata用法
在用到
Linux设备驱动
的platform框架时,常常会遇到两个函数platform_get_drvdata和platform_set_drvdata。
weixin_30508241
·
2020-08-15 16:22
驱动开发笔记--platform_set_drvdata & platform_get_drvdata分析
概述在用到
Linux设备驱动
的platform框架时,常常会遇到两个函数platform_get_drvdata和platform_set_drvdata。
我前年买了个表
·
2020-08-15 16:38
android驱动开发
【原创】【专栏】《
Linux设备驱动
程序》--- LDD3源码目录结构和源码分析经典链接
【原创】【专栏】《
Linux设备驱动
程序》---LDD3源码目录结构和源码分析经典链接【专栏】
Linux设备驱动
程序学习(总目录)【专栏】LDD3源码分析链接(总目录)1.LDD3源码分析之hello.c
GENGLUT
·
2020-08-15 16:50
Linux
---
内核驱动
Linux设备驱动程序学习
linux设备驱动
开发中内核线程和timer的使用
记录工作成长中的点滴2012-12-12在最近公司的一个项目中,突然发现ep阶段的代码能正常复位3G模块,发现并创建设备节点,但PP阶段的板子出来后,同样的代码复位3G模块失败。分析原理图发现在PP阶段3G模块的供电新增了延时电路,示波器测量也验证了开机6S后,3G模块才上电。而EP阶段的代码执行3G模块复位的时间大概是在开机5s左右,而此时PP阶段的3G模块都还没有供电,自然也就无法复位成功。也
sherwin_df
·
2020-08-15 15:22
Linux驱动
linux设备驱动
makefile入门解析
对于一个普通的
linux设备驱动
模块,以下是一个经典的makefile代码,使用下面这个makefile可以完成大部分驱动的编译,使用时只需要修改一下要编译生成的驱动名称即可。只需修改obj-m的值。
shanzhizi
·
2020-08-15 15:18
Linux
并发和竞态(
Linux设备驱动
程序)
设备中断是异步事件,也会导致代码的并发执行。内核还提供了许多可延迟代码执行的机制,比如workqueue(工作队列)、tasklet(小任务)以及timer(定时器)等,这些机制使得代码可在任何时刻执行,而不管当前进程在做什么。大部分竞态可通过使用内核的并发控制原语,并应用几个基本的原理来避免。竞争通常作为对资源的共享访问结果而产生。仔细编写的内核代码应该具有最少的共享。这种思想的最明显应用就是避
s651665496
·
2020-08-15 15:34
Linux编程学习
高级字符驱动程序操作(
Linux设备驱动
程序)
一个实际可用的设备除了提供同步读取和写入之外,还会提供更多的功能。ioctl系统调用是用于设备控制的公共接口。除了读取和写入设备之外,大部分驱动程序还需要另外一种能力,即通过设备驱动程序执行各种类型的硬件控制。比如,用户空间经常会请求设备锁门、弹出介质、报告错误信息、改变波特率或者执行自破坏等等。这些操作通常通过ioctl方法支持,该方法实现了同名的系统调用。在用户空间,ioctl系统调用具有如下
s651665496
·
2020-08-15 15:34
Linux编程学习
Linux设备驱动
模型之platform总线深入浅出(加入设备树)
在Linux2.6以后的设备驱动模型中,需关心总线,设备和驱动这三种实体,总线将设备和驱动绑定。在系统每注册一个设备的时候,会寻找与之匹配的驱动;相反,在系统每注册一个驱动的时候,会寻找与之匹配的设备,而匹配由总线完成。对于依附在USB、PCI、I2C、SPI等物理总线来这些都不是问题。但是在嵌入式系统里面,在Soc系统中集成的独立外设控制器,挂接在Soc内存空间的外设等却不依附在此类总线。基于这
KurdtCobain
·
2020-08-15 15:17
Linux设备驱动分析
Linux设备驱动
子系统第二弹 - SD卡
1.总论2.主控制器3.协议层4.块设备1.总论1.1概念MMC-MultiMediaCardSD-SecureDigitalCard1.2分类按存储大小,普通SD卡(2GB,dev.driver_data下实现设备驱动的功能函数,如mmc->ops=&pxamci_ops;申请中断函数request_irq()注册设备,即注册kobject,建立sys文件,发送uevent等其他需求,如在/pr
聚优致成
·
2020-08-15 15:42
linux设备驱动
file_operations结构体
以下读书笔记内容,摘自宋宝华《
Linux设备驱动
开发详解》一书。(1)llseek()函数用来修改一个文件的当前读写位置,并将新位置返回,在出错时,这个函数返回一个负值。
天糊土
·
2020-08-15 14:41
零散内容
linux设备驱动
程序第二版 编写和运行模块
第2章编写和运行模块非常高兴现在终于可以开始编程了。本章将介绍模块编程和内核编程所需的所有必要的概念。我们将要不多的篇幅来编写和运行一个完整的模块。这种专业技术(expertise)是编写如何模块化设备驱动程序的基础。为了避免一下子给你很多概念,本章仅介绍模块,不介绍任何类别的设备。这里介绍的所有内核内容(函数,变量,头文件和宏)也将在本章最后的参考部分再次介绍。如果你已经座不住了,下面的代码是一
menuconfig
·
2020-08-15 14:38
Linux/os
Linux设备驱动
程式学习(10)-时间、延迟及延缓操作
度量时间差时钟中断由系统定时硬件以周期性的间隔产生,这个间隔由内核根据HZ值来设定,HZ是个体系依赖的值,在中定义或该文档包含的某个子平台相关文档中。作为通用的规则,即便假如知道HZ的值,在编程时应当不依赖这个特定值,而始终使用HZ。对于当前版本,我们应完全信任内核研发者,他们已选择了最适合的HZ值,最好保持HZ的默认值。对用户空间,内核HZ几乎完全隐藏,用户HZ始终扩展为100。当用户空间程式包
luckdog01
·
2020-08-15 14:05
Linux相关
Linux设备驱动
程式学习(13)-Linux设备模型(总线、设备、驱动程式和类)
文章的例子和实验使用《LDD3》所配的lddbus模块(稍作修改)。总线总线是处理器和一个或多个设备之间的通道,在设备模型中,任何的设备都通过总线相连,甚至是内部的虚拟"platform"总线。总线能够相互插入。设备模型展示了总线和他们所控制的设备之间的实际连接。在Linux设备模型中,总线由bus_type结构表示,定义在:structbus_type{constchar*name;/*总线类型
luckdog01
·
2020-08-15 14:05
Linux相关
Linux设备驱动
程式学习(8)-分配内存
Linux设备驱动
程式学习(8)-分配内存内核为设备驱动提供了一个统一的内存管理接口,所以模块无需涉及分段和分页等问题。
luckdog01
·
2020-08-15 14:34
Linux相关
Linux设备驱动
程式学习(2)-调试技术
今天进入《
Linux设备驱动
程式(第3版)》第四章调试技术的学习。一、内核中的调试支持在前面已建议过:学习编写驱动程式要构建安装自己的内核(标准主线内核)。
luckdog01
·
2020-08-15 14:33
Linux相关
Linux设备驱动
程式学习(7)-内核的数据类型
由于前面的学习中有用到第十一章内核数据结构类型的知识,所以我先看了。要点如下:将linux移植到新的体系结构时,研发者碰到的若干问题都和不正确的数据类型有关。坚持使用严格的数据类型和使用-Wall-Wstrict-prototypes进行编译可能避免大部分的bug。内核数据使用的数据类型主要分为3个类型:标准C语言类型、确定大小的类型和特定内核对象的类型。标准C语言类型当需要“一个2字节填充符”或
luckdog01
·
2020-08-15 14:33
Linux相关
linux
struct
list
数据结构
编译器
alignment
Linux设备驱动
程式学习(4)-高级字符驱动程式操作[(1)ioctl and llseek]
今天进入《
Linux设备驱动
程式(第3版)》第六章高级字符驱动程式操作的学习。
luckdog01
·
2020-08-15 14:33
Linux相关
linux内核外部驱动模块编译报错ERROR: "******" [drivers/**.ko] undefined!
我往linux内核里添加一个驱动模块,根据《
linux设备驱动
》第三版,修改Makefile如下:obj-m:=GobiNet.oGobiNet-objs:=GobiUSBNet.oQMIDevice.oQMI.o
默默努力的小熊
·
2020-08-15 14:05
Linux开发
Linux Device和Driver注册过程,以及Probe的时机
这是整个
LINUX设备驱动
的基础,PLATFORM设备,I2C上的设备等诸设备的注册最终也是调用本文讲述的注册函数来实现的。LinuxDevi
iteye_1261
·
2020-08-15 14:44
File_operations 介绍
读取file_operation中相应的函数指针,接着把控制权转交给函数,从而完成了
Linux设备驱动
程序的工作。
huangyong7795
·
2020-08-15 14:26
linux
程序开发
《
Linux设备驱动
程序》学习2—高级字符设备驱动ioctl
天进入《
Linux设备驱动
程序》第六章高级字符设备驱动程序操作的学习,学习的过程和简单字符设备驱动程序的学习是一样的,看书,看程序,然后就是看Tek的博客笔记。
平凡的人
·
2020-08-15 14:50
linux
Linux设备驱动
程序工作原理
Linux是Unix操作系统的一种变种,在Linux下编写驱动程序的原理和思想完全类似于其他的Unix系统。在Linux环境下设计驱动程序,思想简洁,操作方便,功能也很强大,但是支持函数少,只能依赖kernel中的函数,有些常用的操作要自己来编写,而且调试也不方便。系统调用是操作系统内核和应用程序之间的接口,设备驱动程序是操作系统内核和机器硬件之间的接口。设备驱动程序为应用程序屏蔽了硬件的细节,这
逆水寒
·
2020-08-15 14:08
Linux驱动
linux设备驱动
中关于竞态与并发的API
中断屏蔽(适合与自旋锁连用,下面会叙述到)local_irq_disable(void)local_irq_enable(void)上述只能禁止和使能本cpu内的中断,不能解决SMP多cpu引发的竞态local_irq_save(unsignedlongflags)local_irq_restoreunsignedlongflags)上述除了禁止中断外还保存了目前cpu的中断信息。对于ARM而言,
wyjing181204
·
2020-08-15 13:45
嵌入式
Linux设备驱动
开发详解--笔记1--
Linux设备驱动
入门
什么是驱动?最通俗的解释就是“驱使硬件设备行动”作用?设备驱动与底层硬件直接打交道,按照硬件设备的具体工作方式读写设备寄存器,完成设备的轮询、中断处理、DMA通信,进行物理内存向虚拟内存的映射,最终使通信设备能够收发数据,使显示设备能够显示文字和画面,使存储设备能够记录文件号数据计算机系统的硬件主要有cpu、存储器、外设组成。但是随着IC制造工艺的发展,目前,芯片的集成度越来越高,往往cpu内部就
dingyuanpu
·
2020-08-15 13:44
Linux
Linux设备驱动
之中断---tasklet使用示例
前几篇文章介绍了中断的原理、基本框架、上下部使用之工作队列、线程化中断,这篇文章介绍另一种方法—线程化中断tasklet。此方法运行在中断上下文,不可休眠,延时。我使用的硬件是imx6q,原理都一样。原来的beep引脚是output模式,电路上把它改成了按键。下面程序的文件名为interrupt_tasklet.c#include#include#include#include#include#i
cxiaolei1992
·
2020-08-15 13:53
linux
device
driver
Linux设备驱动
程序学习-USB 驱动程序(一)
内核使用2.6拓扑结构上,一个USB子系统并不是以总线的方式来分布;它是一棵由几个点对点连接构成的树。这些连接是连接设备和集线器的4线电缆(地,电源,和2个差分信号线),如同以太网的双绞线。USB主控制器负责询问每个USB设备是否有数据需要发送。由于这个拓扑结构,一个USB设备在没有主控制器要求的情况下不能发送数据.也就是说:USB是单主方式的实现,主机轮询各外设。但是设备也可以要求一个固定的数据
hccheng
·
2020-08-15 13:17
Linux技术
file_operations和block_device_operations解析
file_operations和block_device_operations解析一.介绍在
linux设备驱动
中,广泛使用file_operations和block_device_operations,
快乐的霖霖
·
2020-08-15 13:29
linux内核与编程
linux设备驱动
:并发和竞态
综述首先什么是并发与竟态呢?并发(concurrency)指的是多个执行单元同时、并行被执行。而并发的执行单元对共享资源(硬件资源和软件上的全局、静态变量)的访问则容易导致竞态(raceconditions)。因此再设计自己的驱动程序时,第一个要记住的原则是,只要可能,避免资源的共享。这种思想最明显的应用就是避免使用全局变量。竞态通常作为可能导致并发和竟态的情况有:SMP(SymmetricMul
believe麦迪
·
2020-08-15 13:07
linux
设备驱动程序
Linux设备驱动
——简单的字符驱动
本文介绍Linux字符设备的静态注册方法,其中涉及到的模块加载,不了解的可以先参考构建和运行模块1.还是线上源代码://memdev.h#ifndef_MEMDEV_H_#define_MEMDEV_H_#ifndefMEMDEV_MAJOR#defineMEMDEV_MAJOR200#endif#ifndefMEMDEV_NR_DEVS#defineMEMDEV_NR_DEVS2#endif#i
aidixi4007
·
2020-08-15 13:40
Linux设备驱动
程序学习(1)
今天进入《
Linux设备驱动
程序(第3版)》第三章字符设备驱动程序的学习。
Slancer
·
2020-08-15 13:15
Unix/Linux
LINUX驱动注册过程失败处理不当引起的恶果
LINUX设备驱动
有标准的结构,注册的时候对比device和driver的名字,如果相等就调用probe函数将资源注册进去,但是如果注册失败,在probe中途退出的时候要注意,如果直接退出,但是原来注册了部分资源
起舞的迈特凯
·
2020-08-15 13:20
LINUX
linux设备驱动
程序学习(7) 时间、延迟及延缓操作
度量时间差概念:时钟中断:由系统定时硬件以周期性的间隔产生hz:上述间隔由hz的值设定,hz是一个与体系结构相关的常数计数器:发生中断一次,计数器加一,这个计数器的值(只有)在系统引导时被初始化为0jiffies变量:unsignedlong型变量,要么与jiffies_64相同,要么取其低32位使用jiffies计数器包含在中,但是通常只需使用,前者会自动包含jiffies与jiffies_64
EN_wang
·
2020-08-15 13:32
linux设备驱动程序
linux设备驱动
原理与本质
任何计算机系统都是软件和硬件的结合体,如果只有硬件而没有软件,则硬件是没有灵魂的躯壳;如果只有软件没有硬件,则软件就是一堆无用的字符。在底层硬件的基础上,操作系统覆盖一层驱动,屏蔽底层硬件的操作,通过特定的软件接口去操作底层硬件,用户在用户空间可以很容易的把软件设计目标放在策略与需求上,可以很方便的屏蔽掉底层实现,从而很好的完成客户功能需求。计算机系统是软件和硬件的结合体。而软件又分为应用层软件和
GavinChen-GuiGan
·
2020-08-15 13:23
Linux
Linux设备驱动
程序学习笔记01:设备驱动程序简介
设备驱动程序(DeviceDriver)是一种可以使操作系统和设备通信的特殊程序。驱动程序硬件设备提供接口。操作系统只有通过这个接口,才能使用硬件设备且应用程序必须通过操作系统来使用硬件设备。他们之间的关系可以用下面的图来表示:Linux系统将设备分成3类:字符设备(characterdevice)、块设备(blockdevice)以及网络接口(networkinterface)。字符设备是能够像
_纳格_
·
2020-08-15 13:23
Linux
platform_get_resource
https://blog.csdn.net/cupidove/article/details/9447225最近在看
linux设备驱动
的书,发现代码中有一个叫platform_get_resource的结构体
松鼠松鼠松鼠
·
2020-08-15 12:02
Linux设备驱动开发
Linux字符设备驱动组成-加载,卸载day01
day01摘要:
linux设备驱动
原理,字符设备加载卸载函数最近在学习
linux设备驱动
相关的知识.为了能够系统的学习,把知识点总结一下,方便以后复习查证.1.原理:系统调用是操作系统内核和应用程序之间的接口设备驱动程序是操作系统内核和机器硬件之间的接口设备驱动程序为应用程序屏蔽了硬件的
松鼠松鼠松鼠
·
2020-08-15 12:31
Linux设备驱动开发
linux中file_operations结构体详解
/***author:hasen*参考:《
linux设备驱动
开发详解》和sunsea1026的CSDN博客*作用:方便自己参考查阅*/structfile_operations{structmodule
android_hasen
·
2020-08-15 12:39
linux
驱动
时间、延迟(
Linux设备驱动
程序)
时间延迟如何度量时间差,比较时间如何获得当前时间如何将操作延迟指定的一段时间如何调度异步函数到指定的时间之后执行度量时间差内核通过定时器中断来跟踪时间流。时钟中断由系统定时硬件以周期性的间隔产生,这个间隔由内核根据HZ的值设定,HZ是一个与体系结构有关的常数。每当时钟中断发生时,内核内部计数器的值就增加一。这个计数器的值在系统引导时被初始化为0,它的值就是自上次操作系统引导以来的时钟滴答数。驱动程
s651665496
·
2020-08-15 12:29
Linux编程学习
Linux设备驱动
之timer定时器与延时
理论知识原理介绍软件意义上的定时器是依赖硬件定时器实现的,内核在时钟中断发生后检测各个定时器是否到期,如果到期,将到期的定时器的处理函数作为软中断的下半部执行。实质上,时钟中断处理程序会唤醒TIMER_SOFTIRQ软中断,运行当前处理器上到期的所有定时器。timer定时器的重要数据结构structtimer_list{/**Allfieldsthatchangeduringnormalrunti
cxiaolei1992
·
2020-08-15 12:58
linux
device
driver
Linux设备驱动
程序学习(12)
-Linux设备模型(底层原理简介)以《LDD3》的说法:Linux设备模型这部分内容可以认为是高级教材,对于多数程序作者来说是不必要的。但是我个人认为:对于一个嵌入式Linux的底层程序员来说,这部分内容是很重要的。以我学习的ARM9为例,有很多总线(如SPI、IIC、IIS等等)在Linux下已经被编写成了子系统,无需自己写驱动;而这些总线又不像PCI、USB等在《LDD3》上有教程,有时还要
Slancer
·
2020-08-15 12:45
Unix/Linux
Linux设备驱动
程序学习(9)-与硬件通信
在学习有关I/O总线的内容时,最好先看看相关的知识:从PC总线到ARM的内部总线I/O端口和I/O内存每种外设都是通过读写寄存器来进行控制。I/O寄存器和常规内存在进入这部分学习的时候,首先要理解一个概念:sideeffect,书中译为边际效应,第二版译为副作用。我觉得不管它是怎么被翻译的,都不可能精准表达原作者的意思,所以我个人认为记住sideeffect就好。下面来讲讲sideeffect的含
Slancer
·
2020-08-15 12:14
Unix/Linux
linux
io
command
input
include
平台
Linux中的File_operations结构体
读取file_operation中相应的函数指针,接着把控制权转交给函数,从而完成了
Linux设备驱动
程序的工作。在系统内部,I/O设备的存取操作通过特定的入口点来进
O1O1O1o
·
2020-08-15 12:40
Linux设备驱动
开发-file_operations结构体day02
作者:kiki参考书:转载请注明出处!day02摘要:file_operations()结构体的结构与成员函数1.file_operations结构体其成员函数是字符设备驱动与内核虚拟文件系统的接口,是用户空间对Linux进行系统调用最终的落实者,把系统调用和驱动程序关联起来.注意:__usr是一个宏,其后的指针指向用户空间.(1)读设备/*读设备*/ssize_txxx_read(structf
松鼠松鼠松鼠
·
2020-08-15 12:58
Linux设备驱动开发
linux设备驱动
day3-驱动介绍,注册和加载实现
linux设备的分类:字符设备:串口、终端、触摸屏、键盘查看方式:ls-l/dev以c开头的文件都是字符设备文件。块设备:Flash、ramdisk(内存磁盘)、harddisk(硬盘)查看方式:ls-l/dev以b开头的文件网络设备:ifconfig-aLinux抽象了对硬件的处理,所有的硬件设备都可以看作普通文件一样看待,可以使用和操作文件相同的,标准的系统调用接口来完成对设备的打开,关闭,读
孤风少年
·
2020-08-15 12:19
linux内核驱动
Linux设备驱动
程序学习(10)
度量时间差时钟中断由系统定时硬件以周期性的间隔产生,这个间隔由内核根据HZ值来设定,HZ是一个体系依赖的值,在中定义或该文件包含的某个子平台相关文件中。作为通用的规则,即便如果知道HZ的值,在编程时应当不依赖这个特定值,而始终使用HZ。对于当前版本,我们应完全信任内核开发者,他们已经选择了最适合的HZ值,最好保持HZ的默认值。对用户空间,内核HZ几乎完全隐藏,用户HZ始终扩展为100。当用户空间程
Slancer
·
2020-08-15 12:14
Unix/Linux
在驱动模块初始化函数中实现设备节点的自动创建
http://blog.csdn.net/zhenwenxian/article/details/5424434在驱动模块初始化函数中实现设备节点的自动创建我们在刚开始写
Linux设备驱动
程序的时候,很多时候都是利用
DawnRayYang
·
2020-08-15 12:11
Linux
电阻屏驱动基础理论
在
Linux设备驱动
中,有一类设备被称为“平台设备”,通常把SoC系统中集成的独立外设单元都当作平台设备来处理。
hn_sun
·
2020-08-15 10:42
内核
嵌入式
跟踪
【转载】
Linux设备驱动
程序
(本部分的一些示例源码来自drivers/usb/usb-skeleton.c,它是Linux内核为我们提供的最基础的USB驱动程序,USB骨架程序)驱动程序把驱动对象注册到USB子系统中,之后使用供应商(idVendor)和设备(idProduct)标识来判断对应的硬件是否已经安装.驱动的设备支持列表structusb_device_id结构提供了这个驱动支持的不同类型USB设备的列表.USB核
ldd
·
2020-08-14 22:27
Linux设备驱动
学习笔记
这次的主要内容:1.
linux设备驱动
程序的作用2.内核模块和用户空间程序的区别3.Helloworld程序.4.Makefile文件5.编译,加载内核模块6.Othertips7.好书和网站1.
linux
jw212
·
2020-08-14 17:41
linux
杂文
山东思蓝Linux内核分析视频教程
思蓝公司出品Linux内核分析及编程视频,以下目录排列不按顺序:给初学者(1)给初学者(2)c语言下的动画效应linux内核分析视频
linux设备驱动
的编写linux守护进程linux数据结构链表linux
congxue
·
2020-08-14 16:59
操作系统
上一页
4
5
6
7
8
9
10
11
下一页
按字母分类:
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
其他