转:《Linux设备驱动程序3》源码目录结构和源码分析经典链接

转自:http://blog.csdn.net/geng823/article/details/37567557

【原创】【专栏】《Linux设备驱动程序》--- LDD3源码目录结构和源码分析经典链接

【专栏】Linux设备驱动程序学习(总目录)

【专栏】LDD3源码分析链接(总目录)

1. LDD3源码分析之hello.c与Makefile模板

2. LDD3源码分析之字符设备驱动程序

其他错误:

我的Linux内核为 3.2.0-65-generic-pae,在scull目录下make时,除了文中的错误之外,还有如下错误。

错误: 隐式声明函数‘init_MUTEX’   解决方法

错误: 初始值设定项里有未知的字段‘ioctl’   解决方法

错误: ‘SPIN_LOCK_UNLOCKED’未声明(不在函数内)     解决方法

另外,如果在执行sudo ./scull_load 和sudo ./scull_unload 出错时,一般都是因为scull_load和scull_unload没有可执行权限,需要修改它们的权限,可能scull.ko权限也要修改。权限全部修改为755即可。

3. LDD3源码分析之调试技术

4. LDD3源码分析之并发与竞态

5. LDD3源码分析之ioctl操作

    LDD3源码分析之简单休眠

    LDD3源码分析之阻塞型I/O

    LDD3源码分析之poll分析

    LDD3源码分析之异步通知

    LDD3源码分析之llseek分析

    LDD3源码分析之访问控制

6. LDD3源码分析之时间与延迟操作

7. LDD3源码分析之slab高速缓存

    LDD3源码分析之按页分配内存

    LDD3源码分析之vmalloc

8&9. LDD3源码分析之与硬件通信&中断处理

15. LDD3源码分析之内存映射

LDD3源码目录结构链接

[@localhost]$ tree

.

|-- LICENSE

|-- Makefile

|-- include

|   `-- lddbus.h    示例代码中,#include "lddbus.h"。

|-- lddbus

|   |-- Makefile

|   `-- lddbus.c    CHAPTER_14.4:虚拟总线实现

|-- misc-modules

|   |-- Makefile

|   |-- complete.c    CHAPTER_5.4. Completions 机制

|   |-- faulty.c    CHAPTER_4.5.1. oops 消息

|   |-- hello.c        CHAPTER_2.2:超级用户可以加载和卸载模块示例。

|   |-- hellop.c    CHAPTER_2.8. 模块参数

|   |-- jiq.c        CHAPTER_7.6.1. 共享队列

|   |-- jit.c        CHAPTER_7.4.1. 定时器 API

|   |-- kdataalign.c    CHAPTER_11.4.4. 数据对齐展示编译器如何强制对齐

|   |-- kdatasize.c    CHAPTER_11.1:标准 C 类型的使用。显示长整型和指针在 64-位 平台

上的不同大小。

|   |-- seq.c        CHAPTER_4.3.1.4. seq_file 接口

|   |-- silly.c        CHAPTER_9.4.5. 在 1 MB 之下的 ISA 内存

|   `-- sleepy.c    CHAPTER_6.2.2. 简单睡眠

|-- misc-progs

|   |-- Makefile

|   |-- asynctest.c    CHAPTER_6.4. 异步通知

|   |-- dataalign    CHAPTER_11.4.4. 数据对齐展示编译器如何强制对齐

|   |-- dataalign.c    CHAPTER_11.4.4. 数据对齐展示编译器如何强制对齐

|   |-- datasize    CHAPTER_11.1:标准 C 类型的使用。

|   |-- datasize.c    CHAPTER_11.1:标准 C 类型的使用。

|   |-- gdbline        CHAPTER_4.6.1. 使用 gdb。为给定的模块可以创建这个命令

|   |-- inp        CHAPTER_9.2.3. 从用户空间的 I/O 存取。从命令行读写端口的小工具,

在用户空间.

|   |-- inp.c

|   |-- load50        CHAPTER_7.3.1.1. 忙等待。这个程序派生出许多什么都不做的进程, 但

是以一种 CPU-密集的方式来做.

|   |-- load50.c

|   |-- mapcmp        Simple program to compare two mmap‘d areas.

|   |-- mapcmp.c

|   |-- mapper        CHAPTER_15.2.6. 重新映射 RAM

|   |-- mapper.c

|   |-- nbtest        CHAPTER_6.2.6. 测试 scullpipe 驱动

|   |-- nbtest.c

|   |-- netifdebug    CHAPTER_17.3.3. 接口信息

|   |-- netifdebug.c

|   |-- outp        CHAPTER_9.2.3. 从用户空间的 I/O 存取。从命令行读写端口的小工具,

在用户空间.

|   |-- outp.c

|   |-- polltest    Test out reading with poll()

|   |-- polltest.c

|   |-- setconsole    CHAPTER_4.2.2. 重定向控制台消息

|   |-- setconsole.c

|   |-- setlevel    CHAPTER_4.2.1. printk

|   `-- setlevel.c

|-- pci

|   |-- Makefile

|   `-- pci_skel.c    CHAPTER_12.1.5. 注册一个 PCI 驱动

|-- sbull

|   |-- Makefile

|   |-- sbull.c        CHAPTER_16.1. 注册

|   |-- sbull.h

|   |-- sbull_load

|   `-- sbull_unload

|-- scull        CHAPTER_3. 字符驱动。scull( Simple Character Utility for

Loading Localities)

|   |-- Makefile

|   |-- access.c

|   |-- main.c

|   |-- main.c.bak

|   |-- pipe.c

|   |-- pipe.c.bak

|   |-- scull.h

|   |-- scull.init

|   |-- scull_load

|   `-- scull_unload

|-- scullc        CHAPTER_8.2.1. 一个基于 Slab 缓存的 scull: scullc

|   |-- Makefile

|   |-- main.c

|   |-- mmap.c

|   |-- scullc.h

|   |-- scullc_load

|   `-- scullc_unload

|-- sculld        CHAPTER_14.4.2.3. 设备结构嵌入

|   |-- Makefile

|   |-- main.c

|   |-- mmap.c

|   |-- sculld.h

|   |-- sculld_load

|   `-- sculld_unload

|-- scullp        CHAPTER_8.3.1. 一个使用整页的 scull: scullp

|   |-- Makefile

|   |-- main.c

|   |-- mmap.c

|   |-- scullp.h

|   |-- scullp_load

|   `-- scullp_unload

|-- scullv        CHAPTER_15.2.7. 重映射内核虚拟地址

|   |-- Makefile

|   |-- main.c

|   |-- mmap.c

|   |-- scullv.h

|   |-- scullv_load

|   `-- scullv_unload

|-- short        CHAPTER_10.2.4. 实现一个处理    (中断)

|   |-- Makefile

|   |-- short.c

|   |-- short_load

|   `-- short_unload

|-- shortprint        CHAPTER_10.5.1. 一个写缓存例子

|   |-- Makefile

|   |-- shortprint.c

|   |-- shortprint.h

|   |-- shortprint_load

|   `-- shortprint_unload

|-- simple        CHAPTER_15.2. mmap 设备操作。simple( Simple Implementation

Mapping Pages with Little Enthusiasm)

|   |-- Makefile

|   |-- simple.c

|   |-- simple_load

|   `-- simple_unload

|-- skull        LDD2:skull.c对ISAI/O的内存探测分析

|   |-- Makefile

|   |-- skull_clean.c

|   `-- skull_init.c

|-- snull        CHAPTER_17.2. 连接到内核

|   |-- Makefile

|   |-- snull.c

|   |-- snull.h

|   |-- snull_load

|   `-- snull_unload

|-- tty            CHAPTER_18. TTY 驱动

|   |-- Makefile

|   |-- tiny_serial.c

|   `-- tiny_tty.c

`-- usb            CHAPTER_13. USB 驱动

|-- Makefile

`-- usb-skeleton.c

18 directories, 111 files

原文链接

http://blog.csdn.net/geng823/article/details/37567557

时间: 2024-12-19 21:23:04

转:《Linux设备驱动程序3》源码目录结构和源码分析经典链接的相关文章

LINUX设备驱动程序笔记(一)设备驱动程序简介

<一>:设备驱动程序的作用 从一个角度看,设备驱动程序的作用在于提供机制,而不是策略.在编写驱动程序时,程序员应该特别注意下面这个基本概念:编写访问硬件的内核代码时,不要给用户强加任何特定策略.因为不同的用户有不同的需求,驱动程序应该处理如何使硬件可用的问题,而将怎样使用硬件的问题留给上层应用程序. 从另一个角度来看驱动程序,它还可以看作是应用程序和实际设备之间的一个软件层. 总的来说,驱动程序设计主要还是综合考虑下面三个方面的因素:提供给用户尽量多的选项.编写驱动程序要占用的时间以及尽量保持

linux设备驱动程序该添加哪些头文件以及驱动常用头文件介绍(转)

原文链接:http://blog.chinaunix.net/uid-22609852-id-3506475.html 驱动常用头文件介绍 #include <linux/***.h> 是在linux-2.6.29/include/linux下面寻找源文件.#include <asm/***.h> 是在linux-2.6.29/arch/arm/include/asm下面寻找源文件.#include <mach/***.h> 是在linux-2.6.29/arch/ar

LINUX设备驱动程序笔记(二)构造和运行模块

         <一>:设置测试系统 首先准备好一个内核源码树,构造一个新内核,然后安装到自己的系统中.           <二>:HelloWorld模块 #include <linux/init.h> //定义了驱动的初始化和退出相关的函数 #include <linux/module.h> //定义了内核模块相关的函数.变量及宏 MODULE_LICENSE("Dual BSD/GPL"); //该宏告诉内核,该模块采用自由许可

LINUX设备驱动程序笔记(三)字符设备驱动程序

      <一>.主设备号和次设备号        对字符设备的访问时通过文件系统内的设备名称进行的.那些设备名称简单称之为文件系统树的节点,它们通常位于/dev目录.字符设备驱动程序的设备文件可通过ls -l命令输出的第一列中的'c'来识别.块设备同样位于/dev下,由字符'b'标识 crw-rw----  1 root root    253,   0 2013-09-11 20:33 usbmon0 crw-rw----  1 root root    253,   1 2013-09

Linux 设备驱动程序 字符设备

已经无法再精简,适合入门. 1 #include<linux/module.h> 2 #include<linux/init.h> 3 4 #include<asm/uaccess.h> 5 #include <linux/types.h> 6 #include<linux/fs.h> 7 #include<linux/cdev.h> 8 struct mengc_dev{ 9 char data[64]; 10 struct cde

Mysql源码目录结构

Programs for handling SQL commands. The "core" of MySQL. These are the .c and .cc files in the sql directory: derror.cc --- read language-dependent message file des_key_file.cc --- load DES keys from plaintext file discover.cc --- Functions for

Linux 设备驱动程序

Linux设备驱动程序(中文第三版) 2.6内核.pdf下载 [日期:2011-09-27] 来源:Linux社区  作者:Linux [字体:大 中 小] 本书是经典著作<Linux 设备驱动程序>的第三版.该版本已针对 Linux 内核的 2.6.10 彻底更新过了.内核的这个版本针对常见任务完成了合理化设计及相应的简化,比如即插即用,利用sysfs 文件系统和用户空间交互,以及标准总线上的多设备管理等等.本书提供了完整的示例程序,不需要特殊的硬件即可编译和运行这些示例程序.本书还在单独的

linux设备驱动程序_hello word 模块编译各种问题集锦

在看楼经典书籍<linux设备驱动程序>后,第一个程序就是编写一个hello word 模块.原以为很简单,真正弄起来,发现问题不少啊.前两天编过一次,由于没有记录,今天看的时候又忘了,所以不管多晚,都得记录一下. 1.首先说明一下我的系统环境:ubuntu 14.04,内核是3.13.0-29-generic 2.在我电脑里装了git版本控制器,我clone了一个linux内核库在我的电脑上,所以我就可以随意的切换到任意的分支上去.最初是用的2.6.3,后来编译的时候遇到各种问题.googl

LINUX设备驱动程序(第3版)pdf高清版免费下载

下载地址:网盘下载 备用地址:网盘下载 内容简介编辑<LINUX设备驱动程序(第3版)>已针对Linux内核的2610版本彻底更新过了.内核的这个版本针对常见任务完成了合理化设计及相应的简化,如即插即用.利用sysfs文件系统和用户空间交互,以及标准总线上的多设备管理等等.要阅读并理解本书,您不必首先成为内核黑客:只要您理解C语言并具有Unix系统调用的一些背景知识即可.您将学到如何为字符设备.块设备和网络接口编写驱动程序.为此,<LINUX设备驱动程序(第3版)>提供了完整的示例