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驱动编程
必备基础知识
驱动程序是专用于控制和管理特定硬件设备的软件,因此也被称作设备驱动程序。从操作系统的角度来看,它可以位于内核空间(以特权模式运行),也可以位于用户空间(具有较低的权限)。对于Linux驱动程序来说,其运行在内核空间,把硬件功能提供给用户程序。本篇文章主要介绍Linux驱动程序的一些基础知识。内核空间和用户空间内核空间和用户空间的概念有点抽象,主要涉及内存的访问权限。内核是有特权的,而用户应用程序则
Linux内核站
·
2024-01-13 15:32
linux
运维
服务器
Linux内核
驱动开发
主线剧情07.2-
Linux驱动编程
-各种内核机制总结
Linux驱动编程
-各种内核机制总结本文系学习100ask手册而做的备查笔记,我优化了一些逻辑,循序渐进,并扩展了一些,适合复习、备查来看,而非新学来看。
Real-Staok
·
2023-11-10 18:46
【主线剧情】Linux
系列
linux
arm开发
驱动开发
经验分享
arm
Linux驱动编程
——input子系统
1开发环境主机:ubuntu10.04开发板:mini2440内核:linux-2.6.22.6编译器:arm-linux-gcc(3.4.5)2linux输入子系统本节从整体上讲解了输入子系统的框架结构。有助于读者从整体上认识linux的输入子系统。在陷入代码分析的过程中,通过本节的知识能够找准方向,明白原理。本节重点:输入子系统的框架结构各层对应内核中的文件位置输入子系统的事件处理机制输入子系
奋斗的小程序员
·
2023-09-25 09:27
Linux驱动编程
input子系统
Linux驱动编程
(驱动程序基石)(下)
一、中断的线程化处理复杂、耗时的事情,尽量使用内核线程来处理。上节视频介绍的工作队列用起来挺简单,但是它有一个缺点:工作队列中有多个work,前一个work没处理完会影响后面的work。解决方法有很多种,比如干脆自己创建一个内核线程,不跟别的work凑在一块了。对于中断处理,还有另一种方法:threadedirq,线程化的中断处理。中断的处理仍然可以认为分为上半部、下半部。上半部用来处理紧急的事情
嵌入式学习者。
·
2023-09-07 11:52
Linux
驱动以及裸机
linux
数据结构
运维
嵌入式硬件
linux驱动编程
——第一个驱动Helloworld
linux驱动编程
——第一个驱动Helloworld主要概念:linux三大驱动:字符设备、网络设备、块设备。
嵌入式小鸟
·
2023-08-31 00:49
Linux驱动编程
C编程
linux
c语言
运维
Linux驱动开发入门记录——(三)虚拟输入设备
参考:【
Linux驱动编程
】通过一个虚拟input设备熟悉input设备驱动开发步骤参考Github:Prry/linux-drivers修改后代码:代码使用本部分介绍参考Github中的代码使用。
Selina7777
·
2023-07-26 11:06
Linux
驱动开发
linux
Linux驱动编程
【直接操作寄存器控制LED】
一、内存映射1、裸机LED灯实验就是操作6ULL的寄存器2、Linux驱动开发也可以操作寄存器。Linux下不能直接对寄存器的物理地址进行读写操作,比如寄存器A物理地址为0x01010101。裸机可以直接对0x01010101的物理地址进行操作,但是在Linux下不行。因为linux会使能MMU。在Linux里面操作的都是虚拟地址,所以需要先得到0x01010101这个物理地址所对应的虚拟地址MM
哈哈.txt
·
2023-06-08 03:30
linux
什么是裸机编程,linux驱动开发,linux应用编程
就拿嵌入式Linux硬件平台下(常见的有可以跑linux的arm开发板)的软件开发来说,我们大可将编程分为三种,分别为裸机编程、
Linux驱动编程
以及Linux应用编程。
岁月神偷656
·
2023-04-02 18:32
驱动开发
linux
arm开发
Linux驱动编程
【竞争与并发】
一、什么是并发与竞争Linux系统是一个多任务操作系统,会存在多个任务同时访问一片内存区域,这些任务会互相覆盖这段内存中的数据,造成内存数据混乱,产生Linux系统并发产生的主要原因如下:①、多线程并发访问②、中断程序并发访问③、多核(SMP)核间并发访问④、抢占式并发访问并发访问带来的问题就是竞争,所谓的临界区就是共享数据段,对于临界区必须保证一次只有一个线程访问,也就是要保证临界区是原子访问的
哈哈.txt
·
2023-03-30 12:36
linux
驱动开发
运维
linux驱动编程
(三)--ARM处理器体系架构以及发展历程
ARM处理器体系架构以及发展历程一、CPU(中央处理器)1.遵循冯诺依曼结构2.数字电路:门电路触发器3.有一套自己的指令系统(解释执行)4.不断的,顺序的取指令执行5.哈佛结构(取指令取数据(下条指令的数据)同时执行)指令系统——–相当于软硬件界面RISC(精简指令集)vsCISC(复杂指令集)CISC(复杂指令集)架构:-8051X86RISC(精简指令集)架构:-ARMMIPSPOWERPC
鲁班班班七号
·
2023-03-30 09:25
linux
Linux驱动编程
——双通道LVDS屏幕配置
前言最近在调公司项目的双通道的LVDS屏幕。所用的开发板是基于imx6q的,这块开发板的资料少得可怜,基本没有。于是只能自己慢慢琢磨,记录一下完成的过程,仅供大家参考。修改内核参数将厂家给我们的源码编译后,移植到开发板上去,默认的情况下是不支持双通道的LVDS屏幕的。所以要修改内核源码,然后重新编译。1.找到要修改内核代码所在的位置要找到如下代码(每个开发板不同,所在位置也就不同,可以百度找,也可
奋斗的小程序员
·
2020-09-13 13:50
Linux驱动编程
ubuntu 10.04 VIM安装以及apt-get修正
此版本用来学习Linux2.6内核比较有帮助,特别是学习
Linux驱动编程
,包括市场上比较经典的书籍都是基于Linux2.6内核讲的,所以一个稳定的2.6内核学习环境是必不可少的。
jackixzj
·
2020-08-24 05:02
Linux
【
Linux驱动编程
】Linux中断上半部和下半部
前言 cpu在执行程序时,如果有外部中断触发时,如定时器中断、串行总线中断等,cpu停止当前任务从而转去响应中断处理。对于中断函数的处理,原则是尽快处理完事务并退出中断,这一点也比较好理解,尽快处理中断并返回,保证正常任务的执行,并q且能否响应其他事务的中断,保证实时性和并发性。 其实,在单片机逻辑编程中已经使用过Linux中断“上下部分”的思维,或者说,Linux中断“上下半部”设计者灵感即
Acuity.
·
2020-08-19 18:01
Linux驱动编程
linux驱动编程
(六)--Menuconfig操作、Kconfig、.config文件、内核配置裁剪
一、Menuconfig的操作1.Linux编译器通过.config文件确认哪些代码编译进内核,哪些被裁剪掉2.menuconfig是生成.config文件的一个工具3.配置内核可以使用以下命令#makeconfig//(基于文本的最传统的配置界面)#makemenuconfig//(基于文本菜单的配置界面)(用最多)#makexconfig//(要求安装QT)#makegconfig//(要求安
鲁班班班七号
·
2020-08-15 14:37
linux
Linux驱动编程
day5-驱动自动加载,编译进内核以及自动执行
驱动提供一种机制(实现什么功能),应用程序提供一种策略(如何使用这些功能)1、linux驱动自动加载ko和应用(1)在自动执行脚本中添加应用程序cd/etc/里有一个profile文件vimprofile在最后添加自己要执行的命令#/sbin/insmod/root/cyw/leddrv.ko#/root/cyw/led_test&多次登录会多次执行多进程,会带来影响2、加载进内核驱动其实是内核的
孤风少年
·
2020-08-15 12:20
linux内核驱动
Linux驱动编程
day4--实现硬件控制
当有多个任务共同使用一个设备,为防止内存泄漏,解决办法:1、上锁,只允许一个任务占用;2、建立一个链表,为每个任务分配独自的空间,用链表来管理内存空间。设备号以及各个描述符、套接字、进程号都可以看成是数组的下标。在用户进程和设备驱动程序之间会有一个虚拟文件系统,它负责将系统调用与驱动函数相关联。虚拟文件系统(VFS)为上层的用户提供了一套标准的文件操作接口,如(open,read,write),对
孤风少年
·
2020-08-15 12:19
linux内核驱动
【
Linux驱动编程
】如何使用内核定时器
文章目录1内核定时器1.1内核定时器特点1.2内核定时器使用原则2时钟节拍描述2.1时钟节拍(tickrate)时钟节拍范围2.2时钟节拍描述2.3jiffies绕回问题2.4jiffies与时间换算3内核定时器描述3.1内核定时器常用API初始化定时器注册定时器删除定时器修改超时时间3.2内核定时器使用步骤1内核定时器 定时器是编程中常用到的一个机制,在实际项目中几乎是不可避免的,常见表现有以
Acuity.
·
2020-08-08 18:02
Linux驱动编程
【
Linux驱动编程
】向驱动传递参数
文章目录1前言2驱动传参2.1驱动传参意义2.2驱动传参不足2.3驱动传参适用场合3驱动传参实现3.1基本类型3.2数组类型3.3字符串类型3.4参数描述4驱动传参实例1前言 在开发linux相关应用程序时,为了使应用程序更加灵活地执行用户的预期功能,我们会通过main函数参数传递一些参数到程序中,代码逻辑处理块根据不同的参数执行不同的任务。类似地,linux内核提供驱动传参机制,编写驱动程序时
Acuity.
·
2020-08-08 18:31
Linux驱动编程
linux驱动
驱动传递参数
linux驱动编程
之设备注册
linux下编写驱动时有注册设备这一步,设备注册有两种方法,一种是直接以平台的形式添加,平时都是用这种方式实现,另一种则是编译成.c文件,通过ko文件添加进去,其实就是将以平台的方式添加的过程通过自己的代码实现出来,如下是这两种的实现过程:1.以平台的形式添加:(1).将设备结构体放到平台文件中,平台会自动注册设备。平台文件都在arch/目录下,具体参考实际的芯片:a.添加设备的结构体:b.将设备
不见而明
·
2020-08-07 16:14
Linux驱动编程
操作GPIO的简要说明
gpio简介GPIO,全称General-PurposeInput/Output(通用输入输出),是一种软件运行期间能够动态配置和控制的通用引脚。Linux内核中gpio是最简单,最常用的资源。驱动程序,应用程序都能够通过相应的接口使用gpio,gpio使用0~MAX之间的整数标识,不能使用负数,gpio与硬件体系密切相关的,不过linux有一个框架处理gpio,能够使用统一的接口来操作gpio。
只是一些暗恋而已
·
2020-08-04 16:36
Linux开发
raspberry内核编译和模块开发
因为打算学一学
linux驱动编程
了,特意买了一块raspberry来作为开发环境。直接通过镜像按照的内核并不能直接用来做模块开发,因为发行版自身是不带内核源码树的,但是模块开发这个是必要的。
HsiunKao
·
2020-07-29 10:34
Linux编程
Linux驱动编程
视频教程
Linux驱动编程
视频教程:链接:https://pan.baidu.com/s/1Yn5d4w9uudb4tGDTskzPrg提取码:1hus视频教程目录:视频00_01驱动理论视频00_02驱动理论视频
santirenpc
·
2020-07-28 10:11
嵌入式Linux
视频教程
Linux驱动编程
中EXPORT_SYMBOL()介绍
一、查看内核驱动代码你会发现很多的函数带有EXPORT_SYMBOL()宏定义。二、那么EXPORT_SYMBOL的作用是什么?EXPORT_SYMBOL标签内定义的函数或者符号对全部内核代码公开,不用修改内核代码就可以在您的内核模块中直接调用,即使用EXPORT_SYMBOL可以将一个函数以符号的方式导出给其他模块使用。三、使用方法1、在模块函数定义之后使用“EXPORT_SYMBOL(函数名)
海月汐辰
·
2020-07-28 07:45
Linux驱动编程
Linux驱动编程
step-by-step (一)
转载于:http://blog.csdn.net/jshazk1989/article/details/6908472驱动程序的作用:简单来说驱动程序就是使计算机与设备通信的特殊的代码,在作单片机时候(无OS)我们自己定义接口及自定义的结构来操作相关硬件,而在有OS的模式下我们操作的硬件是去实现对应的接口(这些接口是已定义好的,我们需要实现这些接口)而无需自己定义接口,这样既能正确的控制设备。又能
挫败但不断进步的草
·
2020-07-04 16:30
linux
嵌入式Qt5.6应用编程之触摸屏控制LED灯 - JZ2440V3
linux内核版本:3.4.2qt版本:5.6.0交叉编译工具:arm-linuxgcc4.4.3开发板:JZ2440V3
linux驱动编程
环境:vscode(环境搭建可参考博客:https://blog.csdn.net
Ningjianwen
·
2020-07-01 12:25
嵌入式linux
Linux驱动编程
之信号机制
编写Linux驱动的过程中,需要考虑与应用程序交互的情况。当设备驱动完成某项任务或者达到某种状态的时候(如设备文件可以写入或读取),此时可以让驱动程序主动通知应用程序进行相应的处理(个人感觉类似于Android应用程序中的广播)。这种在Linux内核中使用的“广播”就是本文要详细介绍的“信号”。1.Linux信号类型使用信号进行进程间通信(IPC)是LInux系统的重要通信机制。在Linux系统中
超低空
·
2020-02-24 15:45
Linux驱动编程
模板
一个
linux驱动编程
模板,用于以后编程需要,模板由三部分组成,一是驱动模板程序,二是Makefile文件,三是驱动模板测试程序。
SweeNeil
·
2019-02-18 20:08
Linux
Linux驱动编程
--基于I2C子系统的I2C驱动的Makefile
ifeq ($(KERNELRELEASE),) KERNELDIR ?= /lib/modules/$(shell uname -r)/buildPWD := $(shell pwd) TEST = test modules: $(MAKE) -C $(KERNELDIR) M=$(PWD) clean: rm -rvf *.ko *.o *.mod.c
·
2015-11-11 16:53
makefile
Linux驱动编程
--基于I2C子系统的I2C驱动
代码中,我添加了很多注释,应该不难理解,有错误大家可以指出来,我再改正 #include <linux/kernel.h> #include <linux/module.h> #include <linux/slab.h> #include <linux/cdev.h> #include <linux/i2c.h> #inc
·
2015-11-11 16:52
linux
驱动编程 配置内核树
很多朋友也许对于
linux驱动编程
感兴趣,可是学习驱动程序的第一步骤就是需要在你的Linux系统中构造内核树,如何构造呢以下就为您讲解,但是本人也是刚开始学习,所以用的内核包也是比较陈旧的。
lanwenbing
·
2015-07-04 08:53
驱动程序编写
驱动编程 配置内核树
很多朋友也许对于
linux驱动编程
感兴趣,可是学习驱动程序的第一步骤就是需要在你的Linux系统中构造内核树,如何构造呢以下就为您讲解,但是本人也是刚开始学习,所以用的内核包也是比较陈旧的。
LANWENBING
·
2015-07-04 08:00
内核构造并配置
Linux驱动编程
之信号机制
编写Linux驱动的过程中,需要考虑与应用程序交互的情况。当设备驱动完成某项任务或者达到某种状态的时候(如设备文件可以写入或读取),此时可以让驱动程序主动通知应用程序进行相应的处理(个人感觉类似于Android应用程序中的广播)。这种在Linux内核中使用的“广播”就是本文要详细介绍的“信号”。1.Linux信号类型使用信号进行进程间通信(IPC)是LInux系统的重要通信机制。在Linux系统中
超低空MC
·
2015-01-25 21:29
Linux驱动编程
之信号机制
编写Linux驱动的过程中,需要考虑与应用程序交互的情况。当设备驱动完成某项任务或者达到某种状态的时候(如设备文件可以写入或读取),此时可以让驱动程序主动通知应用程序进行相应的处理(个人感觉类似于Android应用程序中的广播)。这种在Linux内核中使用的“广播”就是本文要详细介绍的“信号”。1.Linux信号类型使用信号进行进程间通信(IPC)是LInux系统的重要通信机制。在Linux系统中
MC_hust
·
2015-01-25 21:00
linux驱动编程
RTC(part one)
一. 逻辑架构文章来源: http://www.itnose.net/detail/6036596.html更多文章: http://www.itnose.net/type/110.html 虽然感觉上面向过程的程
twobrushes
·
2014-05-06 22:00
linux
linux驱动编程
--异步通知与异步I/O
Inageneralway,therearetwo methodsfor processcontrol:synchronizationandasynchronization. synchronization isinvolvesblock(阻塞),no-block(轮询)(poll). itjustlikeanti-asynchronization. asyn
u012301943
·
2014-03-02 16:00
IO
异步
asynchronous
linux驱动
MT6572平台加入呼吸灯功能——编写linux驱动
这部分基本上和android没什么关系,完全按照
linux驱动编程
格式来的。包含一个*.c,一个*.h(可有可无),一个Kconfig。一个Makefile。
vipclx
·
2013-11-11 13:00
Linux驱动编程
--基于I2C子系统的I2C驱动的Makefile
ifeq($(KERNELRELEASE),)KERNELDIR?=/lib/modules/$(shelluname-r)/buildPWD:=$(shellpwd)TEST=testmodules:$(MAKE)-C$(KERNELDIR)M=$(PWD)clean:rm-rvf*.ko*.o*.mod.cModule*module*test:gcc$(TEST).c-o$(TEST)mkno
wangluojisuan
·
2013-10-21 20:13
linux
编程
Makefile
Linux驱动
Linux驱动编程
--基于I2C子系统的I2C驱动的Makefile
ifeq($(KERNELRELEASE),) KERNELDIR?=/lib/modules/$(shelluname-r)/build PWD:=$(shellpwd) TEST=test modules: $(MAKE)-C$(KERNELDIR)M=$(PWD) clean: rm-rvf*.ko*.o*.mod.cModule*module* test: gcc$(TEST).c-o$(
wangluojisuan
·
2013-10-21 20:13
编程
linux
makefile
Linux驱动编程
--基于I2C子系统的I2C驱动的Makefile
ifeq($(KERNELRELEASE),) KERNELDIR?=/lib/modules/$(shelluname-r)/buildPWD:=$(shellpwd) TEST=test modules: $(MAKE)-C$(KERNELDIR)M=$(PWD) clean: rm-rvf*.ko*.o*.mod.cModule*module*test: gcc$(
尤鱼
·
2013-10-21 20:00
Linux驱动编程
--基于I2C子系统的I2C驱动
代码中,我添加了很多注释,应该不难理解,有错误大家可以指出来,我再改正#include#include#include#include#include#include#include#defineI2C_MAJOR365//主设备号#defineI2C_MINOR0//从设备号#defineI2C_COUNT1//设备数量MODULE_LICENSE("DualBSD/GPL");/*函数声明*/
wangluojisuan
·
2013-10-20 11:40
linux
include
Linux驱动编程
--基于I2C子系统的I2C驱动
代码中,我添加了很多注释,应该不难理解,有错误大家可以指出来,我再改正#include #include #include #include #include #include #include #defineI2C_MAJOR365//主设备号 #defineI2C_MINOR0//从设备号 #defineI2C_COUNT1//设备数量 MODULE_LICENSE("DualBSD/G
wangluojisuan
·
2013-10-20 11:40
linux
include
Linux驱动编程
--基于I2C子系统的I2C驱动
代码中,我添加了很多注释,应该不难理解,有错误大家可以指出来,我再改正#include #include #include #include #include #include #include #defineI2C_MAJOR365//主设备号 #defineI2C_MINOR0//从设备号 #defineI2C_COUNT1//设备数量 MODULE_LICENSE("DualBSD/G
wangluojisuan
·
2013-10-20 11:50
linux
include
cccccc
Linux驱动编程
--基于I2C子系统的I2C驱动
代码中,我添加了很多注释,应该不难理解,有错误大家可以指出来,我再改正#include#include#include#include#include#include#include#defineI2C_MAJOR365//主设备号#defineI2C_MINOR0//从设备号#defineI2C_COUNT1//设备数量MODULE_LICENSE("DualBSD/GPL");/*函数声明*/
wangluojisuan
·
2013-10-20 11:50
linux
include
cccccc
Linux驱动编程
--基于I2C子系统的I2C驱动
代码中,我添加了很多注释,应该不难理解,有错误大家可以指出来,我再改正#include #include #include #include #include #include #include #defineI2C_MAJOR365//主设备号 #defineI2C_MINOR0//从设备号 #defineI2C_COUNT1//设备数量 MODULE_LICENSE("DualBSD/G
wangluojisuan
·
2013-10-20 10:03
linux
include
cccccc
Linux驱动编程
--基于I2C子系统的I2C驱动
代码中,我添加了很多注释,应该不难理解,有错误大家可以指出来,我再改正#include#include#include#include#include#include#include#defineI2C_MAJOR365//主设备号#defineI2C_MINOR0//从设备号#defineI2C_COUNT1//设备数量MODULE_LICENSE("DualBSD/GPL");/*函数声明*/
wangluojisuan
·
2013-10-20 10:03
linux
include
cccccc
Linux驱动编程
--基于I2C子系统的I2C驱动
代码中,我添加了很多注释,应该不难理解,有错误大家可以指出来,我再改正#include #include #include #include #include #include #include #defineI2C_MAJOR365//主设备号 #defineI2C_MINOR0//从设备号 #defineI2C_COUNT1//设备数量 MODULE_LICENSE("DualBSD/G
wangluojisuan
·
2013-10-19 17:26
linux
include
cccccc
Linux驱动编程
--基于I2C子系统的I2C驱动
代码中,我添加了很多注释,应该不难理解,有错误大家可以指出来,我再改正#include#include#include#include#include#include#include#defineI2C_MAJOR365//主设备号#defineI2C_MINOR0//从设备号#defineI2C_COUNT1//设备数量MODULE_LICENSE("DualBSD/GPL");/*函数声明*/
wangluojisuan
·
2013-10-19 17:26
linux
include
cccccc
Linux驱动编程
--基于I2C子系统的I2C驱动
代码中,我添加了很多注释,应该不难理解,有错误大家可以指出来,我再改正#include #include #include #include #include #include #include #defineI2C_MAJOR365//主设备号 #defineI2C_MINOR0//从设备号 #defineI2C_COUNT1//设备数量 MODULE_LICENSE("DualBSD/G
wangluojisuan
·
2013-10-19 17:14
linux
include
cccccc
Linux驱动编程
--基于I2C子系统的I2C驱动
代码中,我添加了很多注释,应该不难理解,有错误大家可以指出来,我再改正#include#include#include#include#include#include#include#defineI2C_MAJOR365//主设备号#defineI2C_MINOR0//从设备号#defineI2C_COUNT1//设备数量MODULE_LICENSE("DualBSD/GPL");/*函数声明*/
wangluojisuan
·
2013-10-19 17:14
linux
include
cccccc
Linux驱动编程
--基于I2C子系统的I2C驱动
代码中,我添加了很多注释,应该不难理解,有错误大家可以指出来,我再改正#include #include #include #include #include #include #include #defineI2C_MAJOR365//主设备号 #defineI2C_MINOR0//从设备号 #defineI2C_COUNT1//设备数量 MODULE_LICENSE("DualBSD/G
wangluojisuan
·
2013-10-19 17:08
linux
include
cccccc
上一页
1
2
下一页
按字母分类:
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
其他