下载中心
嵌入式 Linux 应用开发菜鸟进阶 (梁旭辉)pdf
1星 发布者: 抛砖引玉

2023-10-26 | 1积分 | 22.7MB |  12 次下载

下载 收藏 评论

文档简介
标签: 嵌入式

嵌入式

linux

linux

本书详细介绍了嵌入式Linux系统的方方面面,从嵌入式系统的发展、环境的搭建、相关的理论基础知识,再到深入地讲解嵌入式系统的开发,由易到难详细讲解了嵌入式系统开发的流程。本书分为4篇。第1篇是嵌入式Linux系统基础篇,主要介绍了嵌入式系统的发展,搭建嵌入式Linux系统环境,Linux程序开发基础和嵌入式Linux设备驱动开发基础等知识。第2篇是嵌入式Linux设备驱动核心理论篇,讲解了Linux设备驱动的一些基本理论知识,有并发竞态、阻塞非阻塞、驱动延迟操作、内存分配中断处理以及工程开发等相关知识。第3篇是字符设备驱动篇,主要讲解Linux字符设备驱动的相关内容,如基于内存的字符设备、按键控制led字符驱动、温度传感器、MP3播放器和动态图像系统开发。第4篇是块设备驱动篇,内容包括块设备驱动程序的开发、基于ramdisk的虚拟块设备驱动以及SD卡块设备驱动。

本书是一本面向嵌入式Linux初学者的一本书,全书基于一块经典开发板——友善之臂的mini2440,在最新版本的Linux内核代码中都可以找到这块开发板的支持代码,是初学者学习嵌入式Linux入门的经典开发板。本书编者也是从这块开发板一步一步学习至今的。整本书是以一个初学者的心态来进行学习的,同时又以一个刚刚进阶的开发者来叙述,书中总结了编学习嵌入式Linux的点点滴滴,其中有笔者对嵌入式Linux的学习见解和曾经做过的项目。

第1章嵌入式Linux系统简介1

1.1嵌入式与Linux系统概述1

1.1.1Linux操作系统及其发展1

1.1.2Linux发行版本2

1.2Windows与Linux文件系统的异同4

1.2.1Linux文件系统类型4

1.2.2Windows与Linux文件系统的相同点5

1.2.3Windows与Linux文件系统的不同点5

1.3Linux文件类型与属性7

1.3.1Linux文件类型7

1.3.2Linux文件属性7

1.4嵌入式Linux常用命令及工具8

1.4.1Linux常用命令8

1.4.2嵌入式Linux常用工具9

小结10

第2章搭建嵌入式Linux学习环境12

2.1硬件开发平台12

2.1.1mini2440开发板硬件资源12

2.1.2外围设备14

2.2软件开发平台搭建14

2.2.1tftp服务器与nfs服务器搭建15

2.2.2交叉编译工具16

2.2.3uboot的移植17

2.2.4Linux内核移植18

2.2.5Linux根文件系统移植19

小结23

第3章Linux应用程序学习24

3.1Linuxshell脚本24

3.1.1语法24

3.1.2变量25

3.1.3shell脚本语句26

3.1.4注释27

3.2Linux下makefile的编写27

3.3Linux文件编程28

3.3.1文件与目录29

3.3.2系统调用30

3.3.3标准I/O库32

3.4线程34

3.4.1线程优点34

3.4.2线程分类35

3.4.3线程实现35

3.5网络编程37

3.5.1TCP/IP协议37

3.5.2TCP和UDP38

3.5.3套接字39

小结40

第4章嵌入式Linux设备驱动开发基础41

4.1嵌入式Linux设备驱动的概述41

4.1.1Linux设备驱动的作用41

4.1.2Linux设备驱动的分类及特点42

4.2处理器与储存器42

4.2.1处理器42

4.2.2存储器43

4.3接口45

4.3.1串口46

4.3.2I2C46

4.3.3USB47

4.3.4以太网接口48

4.4Linux内核模块49

小结50

第5章Linux设备驱动之并发与竞态51

5.1并发及其管理51

5.2自旋锁52

5.2.1自旋锁API52

5.2.2自旋锁基本使用模式53

5.2.3其他自旋锁函数54

5.2.4读者/写者自旋锁55

5.2.5Linux内核自旋锁55

5.3信号量与互斥体57

5.3.1信号量57

5.3.2互斥体62

5.4原子操作64

5.4.1原子整数操作64

5.4.2原子位操作65

5.5中断屏蔽65

小结66

第6章Linux设备驱动中的阻塞与非阻塞I/O67

6.1阻塞与非阻塞I/O67

6.1.1休眠68

6.1.2等待队列68

6.1.3阻塞和非阻塞操作70

6.2轮询操作70

6.2.1轮询概述71

6.2.2Linux应用程序中的轮询编程——select()71

6.2.3Linux设备驱动中的轮询编程——poll()73

小结75

第7章Linux设备驱动之时间、延迟及延缓操作76

7.1Linux内核时间76

7.1.1处理器特定的寄存器76

7.1.2延迟操作77

7.2内核定时器78

7.3tasklet80

7.4工作队列82

小结84

第8章Linux设备驱动之内存分配与I/O访问85

8.1内存空间与I/O空间85

8.2内存管理85

8.3内存分配88

8.3.1kmalloc与vmalloc88

8.3.2get_free_page和相关函数89

8.4设备I/O端口和I/O内存的访问90

8.4.1I/O寄存器和常规内存90

8.4.2操作I/O端口(申请,访问,释放)91

8.4.3操作I/O内存(申请,映射,访问,释放)92

8.4.4像I/O内存一样访问端口93

8.4.5ARM体系的I/O操作接口94

8.5I/O内存的静态映射94

小结96

第9章Linux设备驱动之中断处理97

9.1Linux中断处理程序框架97

9.1.1中断处理过程97

9.1.2Linux中断处理程序的上半部与下半部机制99

9.2Linux中断编程100

9.3中断共享103

9.4中断驱动的I/O104

小结104

第10章Linux设备驱动工程开发技术105

10.1自创建设备文件105

10.2混杂设备驱动107

10.3Linux设备模型109

10.3.1kobject和kset数据结构110

10.3.2sysfs文件系统113

10.3.3总线、设备和驱动程序114

10.4设备驱动分层思想120

小结121

第11章Linux字符设备驱动122

11.1字符设备驱动结构122

11.1.1主次设备号122

11.1.2字符设备驱动的重要数据结构124

11.2字符设备的注册和释放128

11.2.1字符设备的注册129

11.2.2字符设备的释放131

11.3字符设备驱动的一些小技巧131

小结133

第12章基于内存的简单字符设备134

12.1简单字符驱动的数据结构134

12.1.1定义字符设备驱动的设备数据结构134

12.1.2定义file_operation结构和挂接相应的系统调用函数135

12.2简单字符驱动设计136

12.2.1字符设备驱动的加载与卸载137

12.2.2字符设备驱动的打开与关闭139

12.2.3字符设备驱动的读写函数140

12.2.4字符设备驱动的llseek函数141

12.3应用程序测试142

12.3.1应用程序设计原理142

12.3.2程序代码142

12.4简单字符设备驱动运行效果143

12.4.1makefile程序的编写143

12.4.2字符设备驱动运行效果144

小结145

第13章按键控制LED字符驱动146

13.1按键和LED设备硬件接口和寄存器146

13.2按键控制LED驱动原理147

13.3按键控制LED驱动程序分析148

13.3.1按键与LED集成在一个驱动中148

13.3.2按键与LED驱动的实现156

13.4按键控制LED驱动测试171

13.5驱动程序的运行效果171

小结173

第14章基于18B20传感器的驱动开发174

14.1DS18B20温度传感器简介174

14.1.1温度传感器的工作特点175

14.1.2DS18B20的外部结构175

14.1.3DS18B20的内部结构176

14.1.4DS18B20的应用电路结构178

14.1.5DS18B20的工作原理178

14.2DS18B20温度传感器程序设计实现180

14.2.1复位程序180

14.2.2写1字节子程序182

14.2.3读1字节子程序183

14.2.4确定温度传感器的头文件和相应的数据结构185

14.2.5确定驱动要实现的功能函数和file_operation结构的挂接186

14.2.6编写加载和卸载函数186

14.2.7编写要实现的功能函数187

14.3应用程序设计195

14.4驱动运行效果197

14.4.1makefile文件的编写197

14.4.2应用程序运行效果图197

小结198

第15章MP3播放器199

15.1MP3播发器简介199

15.2按键播放MP3的原理199

15.2.1MP3播放器系统框架199

15.2.2MP3音频驱动的移植201

15.3MP3程序设计203

15.3.1按键驱动程序设计203

15.3.2MP3应用程序设计208

15.3.3最终的程序代码215

15.4MP3播放器的测试223

小结224

第16章基于motion的动态图像检测系统开发225

16.1动态图像检测系统简介225

16.2系统框图和流程图225

16.2.1系统框图226

16.2.2系统设计技术227

16.3动态监测系统程序分析228

16.3.1motion动态图像采集系统移植228

16.3.2温度采集系统231

16.3.3动态图像控制系统231

16.3.4远程监控服务系统239

16.3.5SD卡存储系统248

16.4系统测试运行效果图248

小结250

第17章块设备驱动程序251

17.1字符设备驱动与块设备驱动251

17.2块设备驱动基本框架252

17.3块设备在Linux系统中各层的调用关系252

17.4块设备驱动的重要数据结构253

17.4.1block_device_operations结构体254

17.4.2gendisk结构体255

17.4.3request与request_queue结构体255

17.4.4块I/O256

17.4.5块设备中各结构体之间的关系258

17.5块设备驱动程序分析259

小结261

第18章基于ramdisk的虚拟磁盘块设备驱动262

18.1块设备驱动程序设计262

18.2基于I/O调度器的块设备驱动程序设计262

18.3没有I/O调度器的块设备驱动程序设计265

小结267

第19章SD卡块设备驱动268

19.1SD卡概述268

19.1.1SD卡简介268

19.1.2SD卡的引脚269

19.1.3SD卡的内存组织270

19.2SD卡寄存器271

19.2.1CID寄存器271

19.2.2SD总线协议272

19.2.3SD卡指令和命令272

19.2.4块读写操作274

19.3SD卡设备驱动程序分析275

19.3.1SD卡驱动程序的重要数据结构276

19.3.2SD设备驱动分析278

19.3.3SD卡驱动在mini2440开发板的开发与移植281

19.4测试SD卡驱动程序283

19.4.1系统设计思路与步骤283

19.4.2系统测试结果285

小结286

评论
推荐下载
查看更多
相关视频
  • RISC-V嵌入式系统开发

  • SOC系统级芯片设计实验

  • 云龙51单片机实训视频教程(王云,字幕版)

  • 2022 Digi-Key KOL 系列: 你见过1GHz主频的单片机吗?Teensy 4.1开发板介绍

  • TI 新一代 C2000™ 微控制器:全方位助力伺服及马达驱动应用

  • MSP430电容触摸技术 - 防水Demo演示

推荐帖子
精选电路图
  • 家用电源无载自动断电装置的设计与制作

  • PIC单片机控制的遥控防盗报警器电路

  • 短波AM发射器电路设计图

  • 开关电源的基本组成及工作原理

  • 用NE555制作定时器

  • 基于TDA2003的简单低功耗汽车立体声放大器电路

×