您好,欢迎来到聚文网。
登录
免费注册
网站首页
|
搜索
热搜:
磁力片
|
漫画
|
购物车
0
我的订单
商品分类
首页
幼儿
文学
社科
教辅
生活
销量榜
嵌入式Linux高级驱动教程
字数: 966400.0
装帧: 平装
出版社: 电子工业出版社
作者: 无 著 陈志发 等 编
出版日期: 2014-09-01
商品条码: 9787121230264
版次: 1
开本: 16开
页数: 586
出版年份: 2014
定价:
¥88
销售价:
登录后查看价格
¥{{selectedSku?.salePrice}}
库存:
{{selectedSku?.stock}}
库存充足
{{item.title}}:
{{its.name}}
加入购物车
立即购买
加入书单
收藏
精选
¥5.83
世界图书名著昆虫记绿野仙踪木偶奇遇记儿童书籍彩图注音版
¥5.39
正版世界名著文学小说名家名译中学生课外阅读书籍图书批发 70册
¥8.58
简笔画10000例加厚版2-6岁幼儿童涂色本涂鸦本绘画本填色书正版
¥5.83
世界文学名著全49册中小学生青少年课外书籍文学小说批发正版
¥4.95
全优冲刺100分测试卷一二三四五六年级上下册语文数学英语模拟卷
¥8.69
父与子彩图注音完整版小学生图书批发儿童课外阅读书籍正版1册
¥24.2
好玩的洞洞拉拉书0-3岁宝宝早教益智游戏书机关立体翻翻书4册
¥7.15
幼儿认字识字大王3000字幼儿园中班大班学前班宝宝早教启蒙书
¥11.55
用思维导图读懂儿童心理学培养情绪管理与性格培养故事指导书
¥19.8
少年读漫画鬼谷子全6册在漫画中学国学小学生课外阅读书籍正版
¥64
科学真好玩
¥12.7
一年级下4册·读读童谣和儿歌
¥38.4
原生态新生代(传统木版年画的当代传承国际研讨会论文集)
¥11.14
法国经典中篇小说
¥11.32
上海的狐步舞--穆时英(中国现代文学馆馆藏初版本经典)
¥21.56
猫的摇篮(精)
¥30.72
幼儿园特色课程实施方案/幼儿园生命成长启蒙教育课程丛书
¥24.94
旧时风物(精)
¥12.04
三希堂三帖/墨林珍赏
¥6.88
寒山子庞居士诗帖/墨林珍赏
¥6.88
苕溪帖/墨林珍赏
¥6.88
楷书王维诗卷/墨林珍赏
¥9.46
兰亭序/墨林珍赏
¥7.74
祭侄文稿/墨林珍赏
¥7.74
蜀素帖/墨林珍赏
¥12.04
真草千字文/墨林珍赏
¥114.4
进宴仪轨(精)/中国古代舞乐域外图书
¥24.94
舞蹈音乐的基础理论与应用
内容简介
本书涉及嵌入式Linux系统设备驱动开发的各个环节。全书共21章,内容包括:Linux系统基本操作,嵌入式Linux开发环境的搭建,Linux设备驱动的概念,Linux内核模块编程,字符设备驱动(含LED驱动)的开发及完善,内核同步机制,中断驱动,内核工作队列,内核定时器,平台设备、LCD设备、Linux触摸屏和温度传感器的驱动,以及Linux内核各子系统(clock子系统、输入子系统、IIC子系统、SPI子系统和MTD子系统)的介绍。本书由深圳信盈达嵌入式学院的嵌入式开发工程师编写,并配备了相关的实验和完整的驱动程序代码及测试应用程序代码。
目录
第1章 Linux基础知识1
1.1 Linux历史介绍1
1.2 Linux 常用命令1
1.2.1 文件管理命令1
1.2.2 磁盘相关命令(fdisk)9
1.2.3 文档编辑命令10
1.2.4 文件传输命令11
1.2.5 磁盘维护命令12
1.2.6 系统设置命令12
1.2.7 备份压缩命令13
1.3 Linux环境编程入门14
1.3.1 GCC介绍14
1.3.2 GNU Make 基本语法15
1.3.3 Makefile 通用模块20
1.4 Linux内核版本21
1.5 Linux内核开发者社区22
1.6 shell 编程入门22
1.6.1 shell里的流程控制26
1.6.2 Here Documents31
1.6.3 shell里的函数32
1.6.4 命令行参数33
1.6.5 shell脚本示例33
1.6.6 脚本调试34
1.7 vim编辑器35
1.7.1 模式35
1.7.2 常用命令36
1.7.3 配置文件38
第2章 嵌入式Linux驱动开发环境搭建40
2.1 引言40
2.2 交叉编译器42
2.2.1 交叉编译器概念42
2.2.2 交叉编译器获取42
2.2.3 交叉编译器安装42
2.2.4 交叉编译器使用43
2.3 嵌入式开发串口终端44
2.3.1 串口终端用途介绍44
2.3.2 Windows下超级终端介绍45
2.3.3 Linux下Minicom 串口终端介绍46
2.4 嵌入式开发相关下载工具50
2.4.1 Windows下TFTP下载软件50
2.4.2 Linux下TFTP服务50
2.4.3 Linux 下NFS服务器51
2.5 启动加载程序的使用和移植52
2.5.1 u—boot常用命令52
2.5.2 u—boot常用环境变量介绍53
2.5.3 u—boot移植到mini2440方法53
2.6 为mini2440编译内核56
2.7 根文件系统制作56
2.7.1 根文件系统的作用56
2.7.2 根文件系统的制作步骤57
2.8 J—Link仿真器使用59
2.8.1 J—Link功能简介59
2.8.2 J—Link功能配置及使用范例60
第3章 Linux设备驱动简介63
3.1 Linux设备驱动概述63
3.2 Linux内核结构63
3.2.1 Linux内核空间划分63
3.2.2 Linux用户空间64
3.2.3 Linux内核空间64
3.2.4 用户态和内核态64
3.2.5 进程上下文和中断上下文64
3.3 Linux设备驱动特点65
3.3.1 设备分类65
3.3.2 设备号65
3.3.3 模块和设备驱动关系66
3.4 内核模块的主要相关命令66
3.5 内核驱动信息打印—printk67
第4章 Linux内核模块编程71
4.1 认识Linux模块71
4.1.1 一个最简单的Linux内核模块71
4.1.2 Linux内核模块程序结构74
4.1.3 helloworld.c模块Makefile 文件编写76
4.1.4 helloworld模块编译76
4.2 模块编程形式2:多模块——模块间有依赖关系76
4.2.1 模块符号导出76
4.2.2 多模块C代码编程示例77
4.2.3 多模块Makefile编译编程示例78
4.2.4 编译和测试模块78
4.2.5 多模块编程总结79
4.3 模块编程形式3:模块传递参数79
4.3.1 模块传递参数关键宏定义79
4.3.2 module_param()介绍79
4.3.3 模块传递参数示例C代码81
4.3.4 模块传递参数示例Makefile82
4.3.5 编译和测试模块传递参数功能82
4.3.6 模块传递参数功能总结83
4.4 模块编程形式4:多个C文件编译为一个模块84
4.4.1 多个C文件模块示例C代码84
4.4.2 多个C文件模块示例Makefile代码85
4.4.3 编译和测试模块85
4.4.4 多个C文件模块编程总结86
第5章 字符设备驱动开发87
5.1 Linux设备驱动特点87
5.1.1 Linux系统3大类设备特点87
5.1.2 Linux内核框架88
5.1.3 字符设备的几种编程模型89
5.2 字符设备相关重要结构89
5.2.1 struct file_operaions结构89
5.2.2 struct inode结构92
5.2.3 struct file结构96
5.3 杂项设备驱动模板97
5.3.1 杂项设备注册和注销98
5.3.2 杂项设备驱动测试99
5.3.3 杂项设备驱动模型示例101
5.4 早期标准字符设备驱动模板105
5.4.1 早期标准字符设备驱动注册和注销105
5.4.2 早期标准字符设备驱动模型示例106
5.4.3 早期标准字符设备驱动模型测试109
5.5 Linux 2.6标准字符设备驱动模型112
5.5.1 Linux 2.6标准字符设备驱动核心结构:struct cdev112
5.5.2 Linux 2.6标准字符设备驱动设备号112
5.5.3 Linux 2.6标准字符设备驱动相关API函数113
5.5.4 Linux 2.6标准字符设备驱动编写流程115
5.5.5 Linux 2.6标准字符设备驱动模型示例115
5.5.6 Linux 2.6标准字符设备驱动程序测试120
5.6 字符设备驱动模型小结122
5.7 早期字符设备驱动自动生成设备节点文件123
5.7.1 mdev的介绍及使用方法123
5.7.2 相关数据结构、函数介绍124
5.7.3 自动创建设备文件范例126
5.7.4 自动创建设备文件小结133
第6章 字符设备LED驱动135
6.1 LED硬件原理图135
6.2 LED点灯原理分析135
6.3 字符设备驱动open接口136
6.3.1 open接口参数136
6.3.2 open 接口函数框架136
6.4 release接口函数137
6.4.1 release 接口函数的作用137
6.4.2 release接口函数框架137
6.5 字符设备驱动write接口137
6.5.1 write接口参数说明137
6.5.2 与write接口代码相关的常用API138
6.5.3 write 接口函数框架138
6.6 字符设备驱动read接口139
6.6.1 read接口参数139
6.6.2 与read接口代码相关的常用API139
6.6.3 read 接口函数框架139
6.7 llseek接口实现140
6.7.1 llseek接口参数140
6.7.2 llsek接口函数框架140
6.7.3 重写能与llseek配套的write函数框架141
6.7.4 重写能与llseek配套的read函数框架142
6.8 LED驱动程序示例143
6.8.1 LED驱动程序要使用到的核心函数143
6.8.2 LED驱动程序示例143
6.9 ioctl控制接口154
6.9.1 用户空间ioctl系统调用154
6.9.2 内核空间驱动ioctl的方法154
6.9.3 ioctl接口函数框架示例156
6.9.4 LED驱动添加标准ioctl接口控制LED的范例158
第7章 内核同步机制172
7.1 引言172
7.2 原子操作172
7.2.1 原子操作概念172
7.2.2 原子操作相关API173
7.2.3 简单原子操作使用例子176
7.3 信号量181
7.3.1 信号量概念181
7.3.2 信号量相关API181
7.3.3 简单信号量使用例子183
7.4 读写信号量(rw_semaphore)188
7.4.1 读写信号量概念188
7.4.2 读写信号量相关API189
7.5 自旋锁191
7.5.1 自旋锁概念192
7.5.2 自旋锁相关API192
7.5.3 自旋锁使用方法小结197
第8章 LED驱动完善—添加同步机制代码199
8.1 信号量实现LED设备独占199
8.1.1 添加互斥量代码实现独占功能示例199
8.1.2 应用程序测试信号量独占功能205
8.2 原子操作实现LED设备独占206
8.2.1 原子操作代码实现独占功能示例206
8.2.2 测试应用程序:原子操作独占功能213
8.3 自旋锁实现LED设备并发控制214
8.3.1 SMP并发分析214
8.3.2 自旋锁代码实现设备并发控制功能示例215
8.3.3 应用程序测试自旋锁并发控制功能221
8.4 等待队列222
8.4.1 为什么要使用等待队列222
8.4.2 等待队列头数据结构222
8.4.3 等待队列的睡眠过程222
8.4.4 等待队列的唤醒过程225
8.4.5 等待队列API227
8.5 各种同步机制的比较231
第9章 Linux中断驱动程序232
9.1 什么是中断232
9.2 Linux 2.6 中断处理原理232
9.3 Linux中断处理程序架构235
9.3.1 底半部实现方法之一:tasklet235
9.3.2 底半部实现方法之二:工作队列239
9.4 Linux 2.6 中断API244
9.4.1 注册中断244
9.4.2 注销中断245
9.4.3 禁止中断246
9.4.4 使能中断246
9.4.5 共享中断247
9.5 按键设备驱动程序247
9.5.1 开发板按键硬件原理图247
9.5.2 软件设计程序分析247
9.5.3 按键驱动程序代码示例248
9.5.4 按键驱动应用程序测试结果258
9.6 非阻塞I/O和阻塞I/O261
9.6.1 概念261
9.6.2 如何在设备驱动实现阻塞功能261
9.6.3 驱动阻塞和非阻塞模板262
9.7 按键驱动程序完善:新增加poll接口263
9.7.1 键驱动程序poll接口示例代码清单263
9.7.2 poll接口应用程序编写273
9.7.3 测试结果及分析276
第10章 内核工作队列281
10.1 内核工作队列概述281
10.2 Linux workqueue工作原理281
10.2.1 数据结构work_struct282
10.2.2 数据结构workqueue_struct282
10.2.3 数据结构cpu_workqueue_struct283
10.2.4 workqueue原理分析283
10.3 Linux内核共享工作队列284
10.3.1 共享工作队列介绍284
10.3.2 内核共享工作队列API284
10.3.3 内核共享工作队列使用步骤285
10.3.4 内核共享工作队列示例286
10.3.5 内核共享工作队列测试及结果分析287
10.4 自定义内核工作队列288
10.4.1 创建工作队列288
10.4.2 调度工作队列288
10.4.3 销毁工作队列289
10.4.4 自定义工作队列示例289
10.4.5 自定义工作队列测试及结果分析292
10.5 延时工作队列292
10.5.1 延时工作队列介绍292
10.5.2 延时工作队列数据结构和核心API293
10.5.3 延时工作队列示例294
10.5.4 延时工作队列测试及结果分析296
10.6 内核微线程tasklet296
10.6.1 内核微线程简介296
10.6.2 tasklet的创建及enable/disable函数297
10.6.3 tasklet调度函数298
10.6.4 微线程kill函数299
10.6.5 tasklet微线程的编程步骤300
10.6.6 tasklet的简单示例301
10.6.7 微线程的简单示例测试及结果分析302
10.7 按键设备驱动程序改进——使用延时工作队列实现消抖303
10.7.1 按键抖动机械特性分析303
10.7.2 软件设备框架分析304
10.7.3 增加延时工作队列机制的按键驱动代码示例304
10.7.4 添加延时工作队列机制的按键驱动程序测试及结果分析315
第11章 内核定时器317
11.1 内核定时器概述317
11.2 相关数据结构317
11.3 内核定时器函数318
11.3.1 静态定义并初始化定时器API318
11.3.2 定时器初始化318
11.3.3 向内核添加定时器319
11.3.4 定时器时间修改319
11.3.5 定时器取消320
11.3.6 定时情况查询320
11.4 定时器编程步骤320
11.5 内核定时器编程简单示例321
11.5.1 内核定时器示例代码321
11.5.2 内核定时示例代码测试结果分析322
11.6 按键设备驱动程序改进—使用内核定时器实现消抖323
11.6.1 修改按键驱动代码323
11.6.2 改进版本的按键驱动程序测试及结果分析335
第12章 平台设备驱动模型337
12.1 平台设备和驱动初识337
12.1.1 总线驱动模型简介337
12.1.2 平台总线驱动模型特点337
12.2 平台设备驱动模型分层337
12.2.1 platform 设备层编程337
12.2.2 设备层核心数据结构338
12.2.3 platform 设备层API339
12.2.4 platform驱动层编程340
12.2.5 平台驱动层核心数据结构341
12.2.6 platform 驱动层核心API342
12.3 基于平台模型的LED设备驱动343
12.3.1 平台模型LED驱动软件框架分析343
12.3.2 平台模型LED驱动层编程344
12.3.3 平台模型设备层编程346
12.3.4 平台模型LED驱动测试结果分析353
第13章 LCD设备驱动355
13.1 FrameBuffer 的原理355
13.2 FrameBuffer在Linux中的实现和机制355
13.3 内核自带s3c2440 LCD驱动移植356
13.3.1 LCD硬件资源分析356
13.3.2 LCD工作时序参数分析357
13.3.3 驱动探测函数简要分析360
13.3.4 LCD驱动平台数据结构360
13.3.5 LCD驱动平台资源分析363
13.3.6 LCD设备驱动设备层编程364
13.4 LCD设备驱动分析365
13.4.1 LCD设备驱动核心结构struct fb_info366
13.4.2 LCD设备驱动可变参数结构struct fb_var_screeninfo367
13.4.3 LCD设备驱动固定参数结构struct fb_fix_screeninfo368
13.4.4 LCD设备驱动硬件操作方法结构struct fb_ops369
13.4.5 LCD设备驱动probe函数分析371
13.4.6 LCD设备驱动remove函数分析384
13.4.7 LCD设备驱动suspend函数分析385
13.4.8 LCD设备驱动resume函数分析385
13.4.9 LCD硬件操作函数结构struct fb_ops*fbop分析386
13.5 LCD应用程序编程示例391
13.5.1 LCD显示汉字示例代码391
13.5.2 LCD显示BMP图片示例代码399
第14章 Linux下clock子系统407
14.1 clk时钟管理概念407
14.2 核心数据结构struct clk407
14.3 clocks链表408
14.4 clk平台通用操作408
14.5 clk与pm(电源管理)409
14.6 clk时钟系统实现原理409
14.7 clk时钟系统的应用409
第15章 Linux输入子系统413
15.1 输入子系统概述413
15.2 输入子系统的结构413
15.3 Linux中输入设备驱动的分层414
15.4 关键结构体414
15.5 软件设计流程418
15.6 常用相关API418
15.7 使用输入子系统的例子420
15.8 小结424
第16章 Linux触摸屏驱动425
16.1 电阻式触摸屏工作原理425
16.2 s3c2440中的触摸屏接口425
16.3 mini2440的触摸屏驱动426
16.3.1 初始化431
16.3.2 中断处理433
16.3.3 测试与校准434
16.4 触摸屏驱动总结436
第17章 网络设备驱动437
17.1 网络设备概述437
17.2 DM9000芯片工作原理介绍438
17.2.1 DM9000功能介绍438
17.2.2 DM9000结构框图438
17.3 DM9000的引脚438
17.4 DM9000的寄存器442
17.5 DM9000内部寄存器访问方式452
17.6 DM9000 编程操作步骤453
17.7 mini2440 开发板DM9000硬件连接图分析454
17.8 DM9000 Linux驱动移植456
17.8.1 DM9000设备模型分析456
17.8.2 DM9000探测函数简要分析456
17.8.3 DM9000 平台的资源分析457
17.8.4 DM9000平台的数据分析458
17.8.5 移植DM9000平台设备层代码的编写460
17.9 DM9000 Linux驱动源码分析461
17.9.1 数据结构 struct net_device461
17.9.2 数据结构struct net_device_ops462
17.9.3 数据结构 struct sk_buff463
17.9.4 私有数据结构 struct board_info465
17.9.5 DM9000使用到的核心API466
17.10 DM9000驱动模块入口函数分析476
17.11 DM9000探测函数代码分析477
17.12 DM9000网卡硬件操作函数struct net_device_ops重要成员分析486
17.12.1 网络设备打开函数ndo_open接口486
17.12.2 网络设备关闭函数ndo_stop接口490
17.12.3 网络设备发送函数ndo_start_xmit接口491
17.12.4 网络设备超时处理函数ndo_tx_timeout接口498
17.13 接收过程详细分析499
17.13.1 DM9000接收中断代码分析499
17.13.2 DM9000读数据包及提交数据包到上层函数分析500
第18章 Linux I2C子系统507
18.1 IIC总线知识507
18.2 IIC子系统体系结构510
18.3 IIC相关的重要数据结构510
18.4 IIC核心层513
18.5 i2c_add_driver分析515
18.6 IIC设备驱动示例518
18.6.1 设备驱动程序518
18.6.2 应用程序编程522
18.7 IIC总线驱动分析524
18.7.1 适配器驱动524
18.7.2 适配器平台资源531
18.8 IIC子系统总结531
第19章 Linux SPI子系统532
19.1 SPI子系统概述532
19.2 SPI子系统框图详解532
19.3 SPI相关的数据结构533
19.4 SPI核心代码的初始化分析535
19.5 SPI设备文件自动产生代码的分析536
19.6 SPI子系统核心API537
19.7 SPI设备驱动范例539
19.7.1 SPI设备驱动程序编程539
19.7.2 SPI应用程序编程544
19.8 SPI总线驱动分析546
19.9 SPI子系统总结549
第20章 单总线协议—DS18B20温度传感器驱动550
20.1 DS18B20介绍550
20.2 DS18B20的特点550
20.3 DS18B20的内部结构550
20.4 DS18B20指令码553
20.5 DS18B20时序554
20.5.1 复位时序554
20.5.2 写时序555
20.5.3 读时序555
20.6 DS18B20操作流程556
20.7 DS18B20与单片机的典型接口设计556
20.8 DS18B20的精确延时问题557
20.9 基于MS51单片机的裸机DS18B20 驱动程序557
20.10 Linux 系统下的DS18B20温度传感器驱动561
20.10.1 内核自带DS18B20温度传感器驱动简要说明562
20.10.2 通过内核配置菜单配置DS18B20驱动562
20.10.3 注册DS18B20驱动的设备层563
第21章 Linux MTD子系统567
21.1 Linux MTD子系统介绍567
21.2 MTD子系统相关核心结构569
21.3 Nand Flash硬件操作介绍572
21.3.1 Nand Flash工作原理572
21.3.2 Nand Flash 数据存储单元的整体架构573
21.3.3 Nand Flash 引脚(Pin)说明573
21.3.4 Nand Flash寻址方式573
21.3.5 Nand Flash读操作流程574
21.3.6 Nand Flash 写操作流程574
21.3.7 Nand Flash主要内设命令详细介绍575
21.3.8 Nand Flash 控制器中特殊功能寄存器介绍576
21.4 Nand Flash驱动实例577
21.4.1 Nand Flash驱动框架编写577
21.4.2 Nand Flash底层操作程序584
21.4.3 Nand Flash分区的配置585
21.4.4 Nand Flash驱动挂接测试585
21.5 基于MTD 子系统的设备驱动编程总结586
参考文献587
×
Close
添加到书单
加载中...
点此新建书单
×
Close
新建书单
标题:
简介:
蜀ICP备2024047804号
Copyright 版权所有 © jvwen.com 聚文网