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
LDD3
Linux字符设备驱动入门(二)——加入ioctl功能
平台:VMware7.0+Linuxubuntu3.0.0-12-generic编译器:gcc参考资料:
LDD3
功能:实现ioctl功能在Linux字符设备驱动入门(一)中,我们实现了字符设备的简单读写字符功能
coolkids_2008
·
2011-11-17 16:20
Linux驱动
Linux字符设备驱动入门(二)——加入ioctl功能
平台:VMware7.0+Linuxubuntu3.0.0-12-generic编译器:gcc参考资料:
LDD3
功能:实现ioctl功能 在Linux字符设备驱动入门(一)中,我们实现了字符设备的简单读写字符功能
coolkids_2008
·
2011-11-17 16:00
linux
struct
cmd
ubuntu
File
conflict
Linux字符设备驱动入门(一)
先亮一下装备:平台:VMware7.0+Linuxubuntu3.0.0-12-generic编译器:gcc参考资料:
LDD3
功能:实现简单的字符操作(从用户空间向内核空间写入一串字符;从内核空间读一个字符到内核空间
coolkids_2008
·
2011-11-17 10:46
Linux驱动
Linux字符设备驱动入门(一)
先亮一下装备:平台:VMware7.0+Linuxubuntu3.0.0-12-generic编译器:gcc参考资料:
LDD3
功能:实现简单的字符操作(从用户空间向内核空间写入一串字符;从内核空间读一个字符到内核空间
coolkids_2008
·
2011-11-17 10:00
linux
struct
Module
ubuntu
File
makefile
以dm9000驱动为例理解I/O端口
适当的,会引用
LDD3
中的short的一些代码。下面从概念入手,了解一下I/O端口是个什么东东,理论指导实践嘛。1.I/O体系结构 首先说明一下I/O体系结构,这里不多说,先放个图。
jy02326166
·
2011-11-16 15:00
c
command
cmd
Access
电信
代码分析
vmware环境下的kgdb环境配置和模块调试示例 (2)
这一篇用一个简单的例子来说明调试kernelmodule的过程,例子是
ldd3
书上的hellp模块首先需要在目标机上编出hellop.ko出来,然后把hello.ko和hellop.c拷贝到开发机上。
majieyue
·
2011-11-15 03:00
浅谈LINUX 内存分页机制(by liukun321咕唧咕唧)
今天看
LDD3
的时候在分配内存这章貌似又看见了它的影子,再结合前面看的《深入理解linux内核》,好像对它有了些重新的认识。
liukun321
·
2011-11-06 20:00
数据结构
编程
linux
struct
linux内核
字符驱动 poll方法小记(by liukun321咕唧咕唧)
看
LDD3
的poll的时候,就被书上所讲的搞得云里雾里,确实把握不了她的脉络,,当时想:不就是个poll吗,无非就是调个poll_wait嘛。。。SO,我就那么草草的从那章飘过了。
liukun321
·
2011-11-03 19:00
struct
File
table
null
UP
Signal
LDD3
范例程序在新版本内核下的问题及解决办法(linux—2.6.38.8)
Linux内核从2.6.18到2.6.19发生了较大变化,而《limux设备驱动程序3》中的程序是针对2.6.10内核的,在使用包含较新版本内核的linux发行版编译这些程序时,总不是向书上说的那么顺利,在此总结一下遇到的问题和解决办法,本篇日志会随着我的进度进行更新,有些问题可能发现了我也暂时解决不了,欢迎交流。scull:1)编译main.c时提示错误:main.c:17:26:error:l
hunanwy
·
2011-11-03 14:00
linux
struct
function
Semaphore
makefile
linux内核
Linux驱动编程 step-by-step (一)
第三次看了
LDD3
了(虽然现在已经是kernel3.0但从这本书上还是能学到很多)每次都有一些收获现在终于能够写一些代码了驱动程序的作用:简单来说驱动程序就是使计算机与设备通信的特殊的代码,在作单片机时候
jshazk1989
·
2011-10-26 23:00
编程
linux
网络
Module
makefile
错误: ‘SPIN_LOCK_UNLOCKED’未声明(不在函数内)
编译
LDD3
中的scull出现错误,错误:‘SPIN_LOCK_UNLOCKED’未声明(不在函数内)处理办法: 将staticspinlock_tscull_u_lock=SPIN_LOCK_UNLOCKED
lkssbc
·
2011-10-26 00:00
deprecated
TQ2440在linux下的LED驱动程序
学习驱动程序不久,看
LDD3
大概有4章吧,最开始写了个helloworld驱动,后来是个面向内存的字符设备驱动,后者让我清楚了量子和量子集的使用,但是没有个真正的,肉眼看得见的设备真是有点不爽,查了些资料
dg1683wen
·
2011-10-22 22:06
Linux
TQ2440在linux下的LED驱动程序
学习驱动程序不久,看
LDD3
大概有4章吧,最开始写了个helloworld驱动,后来是个面向内存的字符设备驱动,后者让我清楚了量子和量子集的使用,但是没有个真正的,肉眼看得见的设备真是有点不爽
dg1683wen
·
2011-10-22 22:00
面向内存的字符设备驱动程序
这个程序主要参考
ldd3
的第三章来写,这一章主要通过介绍字符设备scull(SimpleCharacterUtilityforLoadingLocalities,区域装载的简单字符工具)的驱动程序编写,
dg1683wen
·
2011-10-20 01:00
linux驱动学习笔记(2.3) scull模块 init_MUTEX被废除
一、今天在编译
ldd3
上的scullc的时候,出现如下错误:刚开始我以为没有包含头文件,然后我就去查2.6.39.1的源代码,结果在所有的符号中都没有发现init_MUTEX,后面在网站上发现了init_MUTEX
zhou1232006
·
2011-10-04 16:00
linux
function
cache
struct
Semaphore
initialization
Linux设备模型浅析之固件篇
Linux设备模型,仅仅看理论介绍,比如
LDD3
的第十四章,会感觉太抽象不易理解,而通过阅读内核代码就更具体更易理解,所以结合理论介绍
jecan123
·
2011-10-02 09:00
timer
linux
struct
File
Class
buffer
Linux设备模型浅析之驱动篇
Linux设备模型,仅仅看理论介绍,比如
LDD3
的第十四章,会感觉太抽象不易理解,而通过阅读内核代码就更具体更易理解,所以结合理论介绍
jecan123
·
2011-09-30 18:00
Linux设备模型浅析之设备
Linux设备模型,仅仅看理论介绍,比如
LDD3
的第十四章,会感觉太抽象不易理解,而通过阅读内核代码就更具体更易理解,所以结合理论介绍
jecan123
·
2011-09-29 09:00
Linux驱动程序-硬件访问笔记
寄存器和RAM的主要不同在于寄存器操作有副作用(
LDD3
上讲的side effect 或者 边际效果):当你读取某个地址时,可能导致该地址内容发生变化,比如很多设备的中断状态寄存器只要一读取,便自动清零
jianchi88
·
2011-09-29 09:00
linux
IO
null
X86
Linux驱动程序-硬件访问笔记
寄存器和RAM的主要不同在于寄存器操作有副作用(
LDD3
上讲的sideeffect或者边际效果):当你读取某个地址时,可能导致该地址内容发生变化,比如很多设备的中断状态寄存器只要一读取,便自动清零。
soboer
·
2011-09-29 09:00
linux
LDD3
带有参数的模块
#include#include#includestaticchar*who="who";staticinttime=1;module_param(time,int,S_IRUGO);module_param(who,charp,S_IRUGO);staticinthello_init(void){ inti=0; for(i=0;i
wenjie345304221
·
2011-09-28 14:00
2.4、2.6字符设备注册对比
韦东山书本和视频讲的都是字符设备驱动都是2.4的接口 但大多新书早已经是讲2.6的接口了,如
LDD3
、国嵌、宋宝华的书 (1)早期版本的字符设备注册。
soboer
·
2011-09-24 13:00
字符
2.4、2.6字符设备注册对比
韦东山书本和视频讲的都是字符设备驱动都是2.4的接口但大多新书早已经是讲2.6的接口了,如
LDD3
、国嵌、宋宝华的书(1)早期版本的字符设备注册。
jianchi88
·
2011-09-24 13:00
MODULE_LICENSE
LDD3
的解释:isusedtotellthekernelthatthismodulebearsafreelicense;withoutsuchadeclaration,thekernelcomplainswhenthemoduleisloaded
muge0913
·
2011-09-23 20:00
linux
String
Module
include
tools
tony之linux driver_LDD3_scull字符设备驱动编译在新内核编译问题
在编译
ldd3
的scull程序的时候碰到编译不通过的情况,发现遇到的问题和下面的哥们遇到的问题一样,照着做了一下,解决问题,记录于此。
tony821224
·
2011-09-20 23:00
linux
struct
function
Module
makefile
Signal
linux设备模型学习笔记——理论篇
花了一周时间细细地对看了
ldd3
的中文和英文版的《TheLinuxDeviceModel》一章,现做以下学习笔记:一、概述为什么需要一个设备模型?就是为了统一获取系统信息的数据结构系统。
yongan1006
·
2011-09-16 14:00
数据结构
linux
工作
struct
File
Class
读
LDD3
,内存映射与DMA--PAGE_SHIFT,页帧号。
一,linux系统处理的地址类型1,用户虚拟地址:这是用户空间程序见到的常规地址。每个进程都有自己的虚拟地址空间2,物理地址物理地址用于处理器和系统内存之间3,总线地址总线地址在外围总线和内存这间使用4,内核逻辑地址内核逻辑地址组成了内核的常规地址空间。它一对一的映射部分或全部系统内存。在大多数架构中,内核逻辑地址与物理地址的不同,仅是它们之间存在一个固定的偏移。kmalloc分配的就是逻辑地址,
echoisland
·
2011-09-09 09:00
linux
mini2440驱动分析之LED
mini2440驱动分析之LED 看
LDD3
有一段时间了,里面的例程也大部分实践了一下。现在进入真正的驱动程序学习。
YAOZHENGUO2006
·
2011-09-08 17:00
数据结构
c
struct
cmd
table
output
linux MISC 驱动模型分析
linuxMISC驱动模型分析 阅读led驱动程序的代码的时候,没有发现
ldd3
中提到的各种字符设备注册函数,而是发现了一个misc_register函数,这说明led设备是作为杂项设备出现在内核中的
YAOZHENGUO2006
·
2011-09-08 16:00
linux
list
struct
null
Class
linux内核
ldd3
之模块学习总结
ldd3
之模块学习总结 一个学习Linux设备驱动程序都会碰到的第一个例程: #include#includeMODULE_LICENSE("DualBSD/GPL");staticinthello_init
lanyijia
·
2011-08-12 16:00
linux
String
Module
buffer
Parameters
makefile
linux i2c驱动分析 s3c6410 (3)
上一此说到了驱动和设备匹配,中间隔了几天读了下
LDD3
ch14:TheLinuxDeviceModel,受益匪浅。
mayaoyao11
·
2011-08-04 22:00
c
linux
struct
function
null
interface
Linux设备模型
Linux设备模型看
LDD3
中设备模型一章,觉得思维有些混乱。这里从整体的角度来理理思路。
黑曼巴snake
·
2011-08-02 20:30
linux
职场
休闲
设备模型
LDD3
第五章 并发与竞争 学习笔记
LinuxDeviceDrivers学习笔记-Chapter.5--------------------------------本章主要涉及并发管理,我觉得这部分的理解需要建立在大量实践的基础之上,光是像本科操作系统课上那样讲道理是很难体会的。我记录了一些关键的函数和数据结构。 1.RaceConditions(RC)主要是因为对共享数据的并发访问没有作出合适的访问策略造成的。例如两个进程同时访问
SdustLiYang
·
2011-08-02 10:00
LDD3
学习笔记--scull的编译
学习
ldd3
,内核太新以至于scull编译不过,自己搞不定上网查资料,发现这位老兄把我的问题都解决了(赞!)。
atec2000
·
2011-07-25 16:00
function
struct
Module
each
makefile
Signal
电子书下载网站备份
1.http://www.ebooksdownloadfree.com/2.http://lwn.net/Kernel/
LDD3
/ LDD33.http://www.tldp.org/guides.html4
ganggexiongqi
·
2011-07-21 08:00
LDD3
学习笔记(18):内存映射和DMA
1、介绍性材料#include #include 和内存管理相关的大部分函数和结构, 原型和定义在这些头文件.void *__va(unsigned long physaddr);unsigned long __pa(void *kaddr);在内核逻辑地址和物理地址之间转换的宏定义.PAGE_SIZEPAGE_SHIFT 常量, 给出底层硬件的页的大小(字节)和一个页面号必须被移位来转变为一个
songjinshi
·
2011-07-17 12:00
LDD3
学习笔记(17):linux设备模型
1、Kobjects结构#include 包含文件, 包含 kobject 的定义, 相关结构, 和函数.void kobject_init(struct kobject *kobj);int kobject_set_name(struct kobject *kobj, const char *format, ...);用作 kobject 初始化的函数struct kobject *kobje
songjinshi
·
2011-07-17 10:00
linux
File
Module
Class
each
interface
LDD3
学习笔记(16):USB驱动
#include 所有和 USB 相关的头文件. 它必须被所有的 USB 设备驱动包含.struct usb_driver;描述 USB 驱动的结构.struct usb_device_id;描述这个驱动支持的 USB 设备的结构.int usb_register(struct usb_driver *d);用来从USB核心注册和注销一个 USB 驱动的函数.struct usb_device
songjinshi
·
2011-07-16 12:00
LDD3
学习笔记(15):PCI驱动
#include 包含 PCI 寄存器的符号名和几个供应商和设备 ID 值的头文件.struct pci_dev;表示内核中一个 PCI 设备的结构.struct pci_driver;代表一个 PCI 驱动的结构. 所有的 PCI 驱动必须定义这个.struct pci_device_id;描述这个驱动支持的 PCI 设备类型的结构.int pci_register_driver(struct
songjinshi
·
2011-07-15 11:00
LDD3
学习笔记(14):内核中的数据类型
#include typedef u8;typedef u16;typedef u32;typedef u64;保证是 8-位, 16-位, 32-位 和64-位 无符号整型值的类型. 对等的有符号类型也存在. 在用户空间, 你可用 __u8, __u16, 等等来引用这些类型.#include PAGE_SIZEPAGE_SHIFT给当前体系定义每页的字节数, 以及页偏移的位数( 对于 4 K
songjinshi
·
2011-07-14 19:00
LDD3
学习笔记(13):中断处理
#include int request_irq(unsigned int irq, irqreturn_t (*handler)( ), unsigned long flags, const char *dev_name, void *dev_id);void free_irq(unsigned int irq, void *dev_id);调用这个注册和注销一个中断处理.#include i
songjinshi
·
2011-07-14 18:00
LDD3
学习笔记(12):与硬件通讯
#include void barrier(void)这个"软件"内存屏蔽要求编译器对待所有内存是跨这个指令而非易失的.#include void rmb(void);void read_barrier_depends(void);void wmb(void);void mb(void);硬件内存屏障. 它们请求 CPU(和编译器)来检查所有的跨这个指令的内存读, 写, 或都有.#include
songjinshi
·
2011-07-14 17:00
优化
IO
编译器
通讯
LDD3
学习笔记(11):内存分配
Kmalloc分配内存快并且不清零获得的内存区,内存区保留它原来的内容,分配的区在物理内存中连续。#include void *kmalloc(size_t size, int flags);void kfree(void *obj);内存分配的最常用接口.#include GFP_USERGFP_KERNELGFP_NOFSGFP_NOIOGFP_ATOMIC 控制内存分配如何进行的标志, 从
songjinshi
·
2011-07-14 11:00
cache
user
平台
Constructor
destructor
linux内核
LDD3
学习笔记(10):延时和延后
1、延后执行设备驱动常常需要延后一段时间来执行一个特定片段的代码,常常允许硬件完成某个任务。2、时间管理#include HZ HZ 符号指定了每秒产生的时钟嘀哒的数目.#include volatile unsigned long jiffies;u64 jiffies_64;jiffies_64 变量每个时钟嘀哒时被递增; 因此, 它是每秒递增 HZ 次. 内核代码几乎常常引用 jiffie
songjinshi
·
2011-07-14 10:00
timer
工作
list
struct
function
平台
LDD3
学习笔记(9):高级字符驱动操作
1、ioctl接口ioctl 驱动方法有和用户空间版本不同的原型:int (*ioctl) (struct inode *inode, struct file *filp, unsigned int cmd, unsigned long arg);2、阻塞I/O阻塞进程,使它进入睡眠直到请求可继续。当一个进程被置为睡眠,它被标识为处于一个特殊的状态并且从调度器的运行队列中去除,直到发生某些事情改
songjinshi
·
2011-07-14 09:00
struct
user
IOC
table
Access
UP
LDD3
学习笔记(8):并发和竞争
在计算机世界,百万分之一的事情会在几秒钟发生,并且问题的结果是严重的!1、并发的管理SMP(Symmetrical Multi-Processing)对称多处理机。竞争情况来自对共享资源的存取。存取管理的常用技术是加锁或者互斥。2、旗标的互斥体当一个进程到了无法做进一步处理的时候,它就去睡眠(阻塞),让出处理器给别人知道以后某个时间它能够再做其他事情。旗标是一个单个整型值,结合一对函数,成为P和V
songjinshi
·
2011-07-11 15:00
c
工作
Semaphore
测试
UP
任务
LDD3
学习笔记(6):字符驱动4
1、快速参考本章介绍了下面符号和头文件. struct file_operations 和 struct file 中的成员的列表这里不重复了.#include dev_t dev_t 是用来在内核里代表设备号的类型.int MAJOR(dev_t dev);int MINOR(dev_t dev);从设备编号中抽取主次编号的宏.dev_t MKDEV(unsigned int major, u
songjinshi
·
2011-07-08 17:00
数据结构
user
磁盘
LDD3
学习笔记(5):字符驱动3
1、字符设备注册在运行时获得一个独立的cdev结构的代码:Struct cdev* my_cdev=cdev_alloc();My_codev->ops=&my_fops;将cdev结构嵌入自己设备特定的结构:Void cdev_init(struct cdev* cdev , struct file_operations* fops);Cdev结构建立后,告诉内核:Int cdev_add(s
songjinshi
·
2011-07-08 17:00
LDD3
学习笔记(4):字符驱动2
1、重要的数据结构注册设备编号仅仅是驱动代码需要完成的任务之一,还有很多基础性的驱动操作需要驱动代码来完成,这里有3个重要的内核数据结构需要了解一下分别是:file_operations、file、inode。1.1、文件操作File_operation结构的功能是建立一个字符驱动与设备编号的连接。通常结构中的每个成员必须指向驱动中的函数,这些函数实现一个特别的操作,对于不支持的操作置为NULL。
songjinshi
·
2011-07-07 20:00
数据结构
struct
user
File
null
actor
LDD3
学习笔记(3):字符驱动1
1、scull( Simple Character Utility for Loading Localities)的设计Scull是一个字符驱动,它操作一块内存区域,就好像它是一个设备,因此在以下的介绍中我们可以互换的使用设备和scull操作的内存区。编写驱动的第一步是定义驱动将要提供给用户的功能。模块实现的每种设备都被引用为一种类型。Scull源码实现:scull0到scull3四个设备,每个都
songjinshi
·
2011-07-07 11:00
上一页
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
其他