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

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

  1. Linux设备驱动程序学习-Linux设备模型(总线、设备、驱动程序和类)

    文章的例子和实验使用<LDD3>所配的lddbus模块(稍作修改). 总线 总线是处理器和一个或多个设备之间的通道,在设备模型中, 所有的设备都通过总线相连, 甚至是内部的虚拟" ...

  2. linux lddbus设备,Linux设备驱动程序学习(14)-Linux设备模型(各环节的整合)

    Linux设备驱动程序学习(14) -Linux设备模型(各环节的整合) 通过一个设备在内核中生命周期的各个阶段,可以更好地理解Linux设备模型.我将通过分析lddbus和sculld的源码来了解L ...

  3. linux设备驱动程序架构的研究,Linux设备驱动程序学习(12)-Linux设备模型(底层原理简介)...

    Linux设备驱动程序学习(12) -Linux设备模型(底层原理简介) 以<LDD3>的说法:Linux设备模型这部分内容可以认为是高级教材,对于多数程序作者来说是不必要的.但是我个人认 ...

  4. linux kernel 2.6 i2c设备驱动程序框架介绍,linux设备驱动程序-i2c(2)-adapter和设备树的解析...

    linux设备驱动程序-i2c(2)-adapter和设备树的解析 (注: 基于beagle bone green开发板,linux4.14内核版本) 而在linux设备驱动程序--串行通信驱动框架分 ...

  5. Linux设备驱动程序学习(13)

    Linux设备驱动程序学习(13) -Linux设备模型(总线.设备.驱动程序和类) 文章的例子和实验使用<LDD3>所配的lddbus模块(稍作修改). 总线 总线是处理器和一个或多个设 ...

  6. 【lLinux驱动】linux内核源码目录结构

    linux内核源码目录结构 代码目录结构 在阅读源码之前,还应知道Linux内核源码的整体分布情况.现代的操作系统一般由进程管理.内存管理.文件系统.驱动程序和网络等组成.Linux内核源码的各个目录 ...

  7. c++ helloworld_《Linux设备驱动程序》(二)——Hello World

    Hello World是许多人开始写代码的时候第一个编写的例子,这里也延续传统,从Hello World开始. Hello World! 本节主要学会以下内容: 了解模块相关的内容:模块概念.模块编译 ...

  8. linux 内核 ide,Linux设备驱动程序学习(7)-内核的数据类型

    Linux设备驱动程序学习(7)-内核的数据类型 由于前面的学习中有用到 第十一章 内核数据结构类型 的知识,所以我先看了.要点如下: 将linux 移植到新的体系结构时,开发者遇到的若干问题都与不正 ...

  9. Linux操作系统内核源码目录结构详解

    Linux内核源码目录结构 代码目录结构 在阅读源码之前,还应知道Linux内核源码的整体分布情况.现代的操作系统一般由进程管理.内存管理.文件系统.驱动程序和网络等组成.Linux内核源码的各个目录 ...

最新文章

  1. 3d stroke插件下载_推荐一款好用的PS 3D地图插件,PS插件3D Map Generator ,一键生成地图神器...
  2. LeetCode 501. 二叉搜索树中的众数
  3. mysql 查询rowno_C# Mysql 查询 Rownum的解决方法
  4. 使用FirefoxDriver时报错Make sure firefox is installed问题
  5. Java定位CPU使用高问题--转载
  6. 中国LED产业园区现状模式及投资策略分析报告2022-2028年版
  7. 【Elasticsearch】Elasticsearch:Runtime fields 入门, Elastic 的 schema on read 实现 - 7.11 发布
  8. SpringCloud常见面试题(2020最新版)
  9. 别被忽悠了!我来谈谈大数据平台的4个要点,你们写的都不是干货
  10. 2018级C语言大作业 - 祖玛
  11. 变点理论CUSUM在择时交易中的应用
  12. QQ等App每天自启百次;​李国庆直播拍卖午餐时间1小时;苹果提交认证9款新手机 | EA周报...
  13. 360浏览器html位置,360浏览器的默认安装路径在哪里
  14. 大白菜装机教程win10_装机吧教你没有光盘的情况下:如何重装系统
  15. 怎么将图片kb压缩变小?
  16. 基于用户体验的手机产品交互设计原则
  17. MATLAB前馈神经网络newff
  18. Precision(精准率、查准率)和Recall(召回率、查全率)的应用场景
  19. webmsxyw x-s分析
  20. K - C语言实验 圆柱体计算

热门文章

  1. 皮一皮:精致的人生,哪怕拔火罐也要搭配衣服出门...
  2. 百度申请“员工工作状态预测”专利,意欲何为?
  3. 它来了:阿里巴巴Java开发手册泰山版解读
  4. 从AVL树的定义出发,一步步推导出旋转的方案。
  5. 八字喜用神php源码,免费查八字喜用神的软件 通关用神
  6. php未登录跳到登陆页面,vue实现未登录跳转到登录页面的方法
  7. mnn 可变输入项目实例
  8. yolov5转tensorrt c++
  9. resnet50 自定义
  10. error:“ACCESS_MASK”: 不明确的符号