社区
朱有鹏的课程社区_NO_7
驱动框架入门之LED-linux驱动开发第4部分
帖子详情
5.4.2.内核驱动框架中LED的基本情况
朱有鹏老师
2023-01-12 15:05:57
课时名称
课时知识点
5.4.2.内核驱动框架中LED的基本情况
...全文
76
回复
打赏
收藏
5.4.2.内核驱动框架中LED的基本情况
课时名称课时知识点5.4.2.内核驱动框架中LED的基本情况
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
清华大学Linux操作系统原理与应用
第1章 操作系统概述 1 1.1 认识操作系统 1 1.1.1 从使用者角度 1 1.1.2 从程序开发者角度 2 1.1.3 从操作系统在整个计算机系统
中
所处位置 2 1.1.4 从操作系统设计者的角度 3 1.2 操作系统的发展 4 1.2.1 操作系统的演变 4 1.2.2 硬件的发展轨迹 5 1.2.3 软件的轨迹 6 1.2.4 单
内核
与微
内核
操作系统 7 1.3 开放源代码的Unix/Linux操作系统 8 1.3.1 Unix的诞生和发展 8 1.3.2 Linux的诞生 9 1.3.3 操作系统标准POSIX 9 1.3.4 GNU和Linux 9 1.3.5 Linux的开发模式 10 1.4 Linux
内核
10 1.4.1 Linux
内核
的位置 10 1.4.2 Linux
内核
的作用 11 1.4.3 Linux
内核
子系统 11 1.5 Linux
内核
源代码 13 1.5.1 多版本的
内核
源代码 13 1.5.2 Linux
内核
源代码的结构 13 1.5.3 Linux
内核
源代码分析工具 14 习题1 15 第2章 内存寻址 17 2.1 内存寻址简介 17 2.1.1 Intel x86 CPU寻址方式的演变 18 2.1.2 IA32寄存器简介 19 2.1.3 物理地址、虚拟地址及线性地址 21 2.2 分段机制 22 2.2.1 地址转换及保护 24 2.2.2 Linux
中
的段 24 2.3 分页机制 25 2.3.1 页与页表 25 2.3.2 线性地址到物理地址的转换 28 2.3.3 分页示例 28 2.3.4 页面高速缓存(cache) 29 2.3.5 Linux
中
的分页机制 30 2.4 Linux
中
的汇编语言 31 2.4.1 AT&T与Intel汇编语言的比较 31 2.4.2 AT&T汇编语言的相关知识 32 2.5 Linux系统地址映射示例 33 习题2 35 第3章 进程 37 3.1 进程介绍 37 3.1.1 程序和进程 37 3.1.2 进程的层次结构 38 3.1.3 进程状态 39 3.1.4 进程实例 40 3.2 进程控制块 41 3.2.1 进程状态 42 3.2.2 进程标识符 43 3.2.3 进程之间的亲属关系 43 3.2.4 进程控制块的存放 44 3.3 进程的组织方式 45 3.3.1 进程链表 45 3.3.2 散列表 46 3.3.3 可运行队列 47 3.3.4 等待队列 47 3.4 进程调度 48 3.4.1
基本
原理 48 3.4.2 时间片 50 3.4.3 Linux进程调度时机 50 3.4.4 进程调度的依据 51 3.4.5 调度函数schedule()的实现 52 3.5 进程的创建 54 3.5.1 创建进程 55 3.5.2 线程及其创建 56 3.6 与进程相关的系统调用及其应用 58 3.6.1 fork系统调用 58 3.6.2 exec系统调用 59 3.6.3 wait系统调用 60 3.6.4 exit系统调用 62 3.6.5 进程的一生 63 3.7 与调度相关的系统调用及应用 63 习题3 65 第4章 内存管理 67 4.1 Linux的内存管理概述 67 4.1.1 虚拟内存、
内核
空间和用户空间 67 4.1.2 虚拟内存实现机制间的关系 69 4.2 进程用户空间的管理 70 4.2.1 进程用户空间的描述 71 4.2.2 进程用户空间的创建 74 4.2.3 虚存映射 76 4.2.4 进程的虚存区示例 76 4.2.5 与用户空间相关的系统调用 78 4.3 请页机制 79 4.3.1 缺页异常处理程序 79 4.3.2 请求调页 81 4.3.3 写时复制 83 4.4 物理内存的分配与回收 83 4.4.1 伙伴算法 85 4.4.2 物理页面的分配 86 4.4.3 物理页面的回收 88 4.4.4 slab分配模式 89 4.4.5
内核
空间非连续内存区的分配 93 4.5 交换机制 95 4.5.1 交换的
基本
原理 95 4.5.2 页面交换守护进程kswapd 99 4.6 内存管理实例 99 4.6.1 相关背景知识 100 4.6.2 代码体系结构介绍 100 4.6.3 实现步骤 103 4.6.4 程序代码 103 习题4 108 第5章
中
断和异常 110 5.1
中
断的
基本
知识 110 5.1.1
中
断向量 110 5.1.2 外设可屏蔽
中
断 111 5.1.3 异常及非屏蔽
中
断 112 5.1.4
中
断描述符表 112 5.1.5 相关汇编指令 113 5.2
中
断描述符表的初始化 114 5.2.1 IDT表项的设置 114 5.2.2 对陷阱门和系统门的初始化 115 5.2.3
中
断门的设置 116 5.3
中
断处理 116 5.3.1
中
断和异常的硬件处理 116 5.3.2
中
断请求队列的建立 117 5.3.3
中
断处理程序的执行 119 5.3.4 从
中
断返回 121
5.4
中
断的下半部处理机制 121
5.4
.1 为什么把
中
断分为两部分来处理 122
5.4
.2 小任务机制 122
5.4
.3 下半部 124
5.4
.4 任务队列 125 5.5
中
断应用——时钟
中
断 125 5.5.1 时钟 125 5.5.2 时钟运作机制 126 5.5.3 Linux的时间系统 127 5.
5.4
时钟
中
断处理程序 128 5.5.5 时钟
中
断的下半部处理 129 5.5.6 定时器及其应用 129 习题5 132 第6章 系统调用 133 6.1 系统调用与应用编程接口、系统命令、
内核
函数的关系 133 6.1.1 系统调用与API 133 6.1.2 系统调用与系统命令 134 6.1.3 系统调用与
内核
函数 134 6.2 系统调用处理程序及服务例程 135 6.2.1 初始化系统调用 136 6.2.2 system_call()函数 136 6.2.3 参数传递 137 6.2.4 跟踪系统调用的执行 139 6.3 封装例程 140 6.4 添加新系统调用 141 6.5 实例——利用系统调用实现一个调用日志收集系统 143 6.5.1 代码体系结构 143 6.5.2 把代码集成到
内核
中
146 6.5.3 实现步骤 148 习题6 148 第7章
内核
中
的同步 149 7.1 临界区和竞争状态 149 7.1.1 临界区举例 149 7.1.2 共享队列和加锁 150 7.1.3 确定保护对象 151 7.1.4 死锁 152 7.1.5 并发执行的原因 153 7.2
内核
同步方法 153 7.2.1 原子操作 153 7.2.2 自旋锁 155 7.2.3 信号量 156 7.3 并发控制实例 157 7.3.1
内核
任务及其并发关系 158 7.3.2 实现机制 158 7.3.3 关键代码解释 162 7.3.4 实现步骤 163 习题7 164 第8章 文件系统 165 8.1 Linux文件系统基础 165 8.1.1 Linux文件结构 165 8.1.2 Linux文件系统 166 8.1.3 文件类型 167 8.1.4 文件访问权限 168 8.2 虚拟文件系统 168 8.2.1 虚拟文件系统的引入 168 8.2.2 VFS
中
的数据结构 170 8.2.3 VFS超级块数据结构 171 8.2.4 VFS的索引节点 173 8.2.5 目录项对象 174 8.2.6 与进程相关的文件结构 176 8.2.7 主要的数据结构之间的关系 179 8.3 文件系统的注册、安装与卸载 180 8.3.1 文件系统的注册和注销 180 8.3.2 文件系统的安装 181 8.3.3 文件系统的卸载 183 8.4 页缓冲区 183 8.4.1 address_space对象 183 8.4.2 address_space对象的操作函数表 184 8.5 文件的打开与读写 185 8.5.1 打开文件 185 8.5.2 读写文件 187 8.6 编写一个文件系统 189 8.6.1 Linux文件系统的实现要素 189 8.6.2 什么是romfs文件系统 191 8.6.3 romfs文件系统的布局与文件结构 191 8.6.4 具体实现的对象 192 习题8 195 第9章 设备
驱动
196 9.1 概述 196 9.2 设备
驱动
程序基础 198 9.2.1 I/O端口 199 9.2.2 设备文件 200 9.2.3
中
断处理 201 9.2.4 设备
驱动
程序
框架
203 9.3 字符设备
驱动
程序 204 9.3.1 字符设备
驱动
程序的注册 204 9.3.2 简单的字符设备
驱动
程序示例 205 9.4 块设备
驱动
程序 208 9.4.1 块设备
驱动
程序的注册 209 9.4.2 块设备请求 212 习题9 215 附录A
内核
中
的链表 216 A.1 链表数据结构简介 216 A.2
内核
链表数据结构的定义及初始化 217 A.3 操作链表的接口 218 A.4 遍历链表 219 附录B
内核
模块 221 B.1 什么是模块 221 B.2 编写一个简单的模块 221 B.3 模块编程的基础知识 222 B.4 模块的编译 224 B.5 模块实用程序modutils 226 附录C Linux
内核
编译 228 C.1
内核
简介 228 C.2 为什么重新编译
内核
228 C.3
内核
编译模式 229 C.4 新版本
内核
的获取和更新 229 C.5
内核
编译 230 C.6 修改并重启管理器 232 附录D Linux编程基础(C语言环境) 233 D.1 Linux编程常识 233 D.1.1 相关标准(ANSI C、POSIX、SVID、XPG) 233 D.1.2 函数库和系统调用 234 D.1.3 在线文档(man、info、HOWTO) 235 D.1.4 C语言编程风格 237 D.2 Linux上的C/C++编译器和调试器 238 D.2.1 运行gcc/egcs 238 D.2.2 gcc/egcs的主要选项 240 D.2.3 gdb简介 240 D.2.4 gdb的常用命令 241 D.2.5 gdb使用示例 242 D.3 GNU make和makefile 243 D.3.1 GNU make 243 D.3.2 makefile的
基本
结构 243 D.3.3 makefile的变量 244 D.3.4 GNU make的主要预定义变量 245 D.3.5 GNU make的隐含规则 245 D.3.6 运行make 246
4.
驱动
框架
入门之
LED
转自 https://edu.csdn.net/lecturer/505 朱老师物联网大讲堂 《5.linux
驱动
开发-第4部分-
5.4
.
驱动
框架
入门之
LED
》 第一部分、章节目录
5.4
.1.何谓
驱动
框架
5.4
.2.
内核
驱动
框架
中
LED
的
基本
情况
5.4
.3.初步分析
led
驱动
框架
源码1
5.4
.4.初步分析
led
驱动
框架
源码2
5.4
.5.在
内核
中
添加或去除某个
驱动
5.4
.6.基于
驱动
框架
写
led
驱动
1
5.4
.7.基于
驱动
框架
写
led
驱动
2
5.4
.8.基于
驱动
框架
写
led
驱动
3
5.4
.9.l
《5.linux
驱动
开发-第4部分-
5.4
.
驱动
框架
入门之
LED
》真正的
驱动
开发 从 今天的 课程开始!!!
5.4
.1.何谓
驱动
框架
subsys_initcall
led
_class_attrs
真正的
驱动
开发 从 今天的 课程开始!!!(1)
驱动
开发工程师
内核
开发者 预留一些
驱动
开发的接口,让我们来使用合作(2)
内核
维护者
5.4
.1.2、
驱动
编程协作要求(1)接口标准化(2)尽量降低
驱动
开发者难度
5.4
.1.3、到底什么是
驱动
框架
驱动
框架
:部分厂家相同的一部分
内核
维护者已经写好了,再把不同的部分预留好接口,让
驱动
开发工程师来写。
驱动
框架
入门之
LED
-linux
驱动
开发第4部分-朱有鹏-专题视频课程
本课程是linux
驱动
开发的第4个课程,主要内容是
驱动
框架
的引入。通过
led
驱动
框架
和gpiolib的这两个
框架
的详细解释,让大家学习
内核
中
驱动
框架
的使用方法,这个对后续学习基于
框架
的复杂
驱动
非常有帮助。...
【Linux】
内核
驱动
学习笔记(一)
本文是学习linux
驱动
开发的笔记。主要内容包括:Linux
内核
驱动
入门学习,三类
驱动
的分类概念,重点学习了字符设备
驱动
基础和高级篇章,
驱动
框架
入门,Linux
驱动
模型。最后的misc类设备与蜂鸣器
驱动
主要引用了博客链接。
朱有鹏的课程社区_NO_7
1
社区成员
148
社区内容
发帖
与我相关
我的任务
朱有鹏的课程社区_NO_7
朱有鹏,先后从事电子工程师、单片机软件工程师、嵌入式linux软件工程师、物联网软件工程师、架构师等工作,朱老师物联网大讲堂创始人,畅销书作者。擅长U-Boot、linux kernel等嵌入式底层和系统层开发、架构设计。擅长汇编、C/C++、Java、C#等常用开发语言,2015年起录制的在线视频课程《朱有鹏老师嵌入式linux核心课程》累计学习人数超300万。2016年与IBM合作制作基于IBM Waston平台的物联网系统开发教程,授予“IBM技术专家”。2018年开始与华为认证合作,开发HCDP-IoT相关的课程体系、视频课程、实验平台、案例等,被授予“华为云享专家”。
复制链接
扫一扫
分享
社区描述
朱有鹏,先后从事电子工程师、单片机软件工程师、嵌入式linux软件工程师、物联网软件工程师、架构师等工作,朱老师物联网大讲堂创始人,畅销书作者。擅长U-Boot、linux kernel等嵌入式底层和系统层开发、架构设计。擅长汇编、C/C++、Java、C#等常用开发语言,2015年起录制的在线视频课程《朱有鹏老师嵌入式linux核心课程》累计学习人数超300万。2016年与IBM合作制作基于IBM Waston平台的物联网系统开发教程,授予“IBM技术专家”。2018年开始与华为认证合作,开发HCDP-IoT相关的课程体系、视频课程、实验平台、案例等,被授予“华为云享专家”。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章