图书介绍

嵌入式Linux系统实用开发【2025|PDF|Epub|mobi|kindle电子书版本百度云盘下载】

嵌入式Linux系统实用开发
  • 何永琪编著 著
  • 出版社: 北京:电子工业出版社
  • ISBN:9787121100390
  • 出版时间:2010
  • 标注页数:717页
  • 文件大小:185MB
  • 文件页数:744页
  • 主题词:Linux操作系统-程序设计

PDF下载


点此进入-本书在线PDF格式电子书下载【推荐-云解压-方便快捷】直接下载PDF格式图书。移动端-PC端通用
种子下载[BT下载速度快]温馨提示:(请使用BT下载软件FDM进行下载)软件下载地址页直链下载[便捷但速度慢]  [在线试读本书]   [在线获取解压码]

下载说明

嵌入式Linux系统实用开发PDF格式电子书版下载

下载的文件为RAR压缩包。需要使用解压软件进行解压得到PDF格式图书。

建议使用BT下载工具Free Download Manager进行下载,简称FDM(免费,没有广告,支持多平台)。本站资源全部打包为BT种子。所以需要使用专业的BT下载软件进行下载。如BitComet qBittorrent uTorrent等BT下载工具。迅雷目前由于本站不是热门资源。不推荐使用!后期资源热门了。安装了迅雷也可以迅雷进行下载!

(文件页数 要大于 标注页数,上中下等多册电子书除外)

注意:本站所有压缩包均有解压码: 点击下载压缩包解压工具

图书目录

第1部分 嵌入式开发基础1

第1章 引言2

1.1 嵌入式产业概况2

1.2 Linux操作系统5

1.3 ARM体系概况8

1.3.1 ARM710

1.3.2 ARM911

1.3.3 ARM9E11

1.3.4 ARM10E12

1.3.5 ARM1112

1.3.6 Cortex12

1.4 常见嵌入式产品及其基本平台简介13

1.4.1 学习开发板13

1.4.2 行业终端16

1.4.3 工业控制18

1.4.4 手持娱乐19

1.4.5 医疗仪器21

1.4.6 汽车电子22

1.4.7 智能本23

1.5 嵌入式产品开发基本流程25

第2章 C语言编程要点28

2.1 数据类型28

2.2 常数29

2.3 变量31

2.3.1 变量的定义与初始化31

2.3.2 变量的访问31

2.3.3 左值与右值31

2.3.4 只读变量32

2.4 操作符32

2.4.1 只读操作符32

2.4.2 读写操作符34

2.4.3 类型转换操作符35

2.4.4 sizeof操作符36

2.5 表达式和语句36

2.5.1 表达式36

2.5.2 语句37

2.6 复合类型38

2.6.1 数组38

2.6.2 结构体40

2.6.3 位域42

2.6.4 数据的对齐43

2.6.5 联合体44

2.6.6 类型嵌套44

2.6.7 类型别名45

2.6.8 枚举类型46

2.7 流程控制46

2.7.1 顺序结构46

2.7.2 分支结构47

2.7.3 隐含的分支结构49

2.7.4 循环结构49

2.7.5 goto52

2.8 函数52

2.8.1 声明与定义52

2.8.2 函数的调用与传值方式54

2.8.3 函数与复合类型55

2.8.4 内联函数56

2.8.5 变量的作用范围与生存期56

2.9 指针59

2.9.1 指针与变量59

2.9.2 指针与操作符62

2.9.3 指针与数组63

2.9.4 字符串64

2.9.5 指针与结构体65

2.9.6 指针与函数66

2.9.7 回调函数69

2.9.8 函数指针类型转换70

2.10 预处理语句71

2.10.1 文件包含71

2.10.2 宏定义71

2.10.3 宏与函数73

2.10.4 代码分支74

第3章 开发环境76

3.1 Linux使用基础76

3.1.1 命令参数与选项77

3.1.2 文件、目录和路径77

3.1.3 用户与权限78

3.1.4 硬链接与符号链接78

3.1.5 命令使用技巧79

3.2 Linux常用命令79

3.2.1 查阅手册80

3.2.2 文件相关81

3.2.3 文件内容相关84

3.2.4 压缩与解压缩86

3.2.5 文件系统与磁盘88

3.2.6 用户与权限89

3.2.7 进程管理91

3.2.8 系统信息92

3.2.9 网络93

3.3 Shell使用进阶96

3.3.1 重定向96

3.3.2 管道98

3.3.3 变量与替换98

3.3.4 环境变量100

3.3.5 脚本101

3.3.6 脚本编程102

3.3.7 作业管理103

3.4 Debian 5.0的安装与使用104

3.4.1 安装Debian 5.0105

3.4.2 Debian 5.0的基本操作105

3.4.3 常用软件的安装与使用108

3.4.4 从源码安装软件113

3.4.5 安装编译环境115

3.5 建立交叉编译环境117

3.5.1 下载安装117

3.5.2 从源码编译安装117

3.6 vi编辑器121

3.6.1 vi的工作模式121

3.6.2 普通模式122

3.6.3 命令行模式123

3.6.4 寄存器124

3.6.5 与编程有关的技巧124

3.7 gcc工具链124

3.7.1 编译过程124

3.7.2 gcc用法125

3.8 make与Makefile127

3.8.1 make工具的使用127

3.8.2 Makefile128

3.9 gdb调试工具130

3.9.1 调试本地程序130

3.9.2 远程调试131

3.10 buildroot开发工具132

第2部分 ARM架构与编程135

第4章 ARM处理器架构与编程模型136

4.1 嵌入式硬件系统137

4.1.1 嵌入式系统架构137

4.1.2 S3C2410A地址映射138

4.1.3 HY2410A开发板硬件配置139

4.2 ARM架构概述139

4.2.1 ARM处理器模式与寄存器组139

4.2.2 ARM异常与异常向量表142

4.2.3 程序状态寄存器143

4.2.4 大端与小端存储格式145

4.3 ARM指令集概述146

4.3.1 ARM汇编指令格式146

4.3.2 数据处理指令148

4.3.3 存储器访问指令150

4.3.4 分支指令152

4.3.5 软中断指令153

4.3.6 程序状态寄存器传送指令154

4.3.7 乘法指令154

4.3.8 协处理器指令155

4.3.9 伪指令157

4.4 GNU ARM汇编158

4.4.1 基本语法158

4.4.2 GNU ARM汇编伪指令159

4.5 汇编与C语言163

4.5.1 程序及其二进制映像163

4.5.2 程序的编译与运行164

4.5.3 ATPCS约定165

4.5.4 汇编与C语言的对照167

4.5.5 函数调用与栈172

4.5.6 堆的概念175

4.6 汇编与C语言混合编程175

4.6.1 C语言调用汇编函数175

4.6.2 汇编语言中使用C全局变量176

4.6.3 内嵌汇编177

第5章 搭建嵌入式固件开发平台181

5.1 硬件设备与软件环境181

5.2 搭建开发环境182

5.2.1 硬件连接182

5.2.2 使用终端软件183

5.2.3 下载和执行程序184

5.3 创建固件程序186

第6章 S3C2410接口与编程189

6.1 软中断异常编程189

6.1.1 软中断异常入口189

6.1.2 软中断异常应用例程190

6.2 中断控制器及外部中断编程193

6.2.1 中断体系结构193

6.2.2 中断控制器194

6.2.3 中断源安排194

6.2.4 中断控制器寄存器配置196

6.2.5 中断应用例程197

6.3 定时器及其编程201

6.3.1 定时器体系201

6.3.2 定时器单元工作原理202

6.3.3 定时器寄存器配置203

6.3.4 定时器应用例程205

6.4 GPIO接口209

6.5 UART控制器及串口通信应用211

6.5.1 UART通信原理211

6.5.2 RS-232C串行接口标准212

6.5.3 UART控制寄存器213

6.5.4 串口通信应用例程217

6.6 NAND Flash芯片与控制器219

6.6.1 NAND Flash的访问220

6.6.2 NAND Flash控制器222

6.6.3 NAND Flash控制器编程实例223

第7章 U-boot源码分析与移植227

7.1 bootloader的概念227

7.1.1 bootloader的启动过程228

7.1.2 bootloader的操作模式228

7.1.3 ARM bootloader的特点229

7.2 使用U-boot230

7.2.1 U-boot主要命令与环境变量230

7.2.2 使用实例232

7.3 U-boot源码分析233

7.3.1 总体架构与内存布局233

7.3.2 源码目录234

7.3.3 实现分析235

7.4 U-boot移植244

7.4.1 源码修改244

7.4.2 配置和编译257

第3部分 Linux系统编程259

第8章 Linux系统编程基础260

8.1 系统调用与API260

8.2 程序的生成与执行262

8.3 API的错误处理263

8.4 命令行参数与环境变量263

第9章 Linux文件系统编程266

9.1 文件的概念266

9.2 文件描述符与索引节点267

9.3 文件操作的系统调用接口268

9.3.1 打开文件268

9.3.2 从文件读取数据270

9.3.3 写数据到文件272

9.3.4 发送控制命令273

9.3.5 关闭文件274

9.4 标准I/O函数库275

9.4.1 fopen276

9.4.2 fread和fwrite276

9.4.3 fclose277

9.4.4 fflush277

9.4.5 fseek和ftell277

9.4.6 fgetc,getc和getchar278

9.4.7 fputc,putc和putchar278

9.4.8 fgets和gets279

9.4.9 fputs和puts280

9.4.10 fprintf,printf和sprintf280

9.4.11 fscanf,scanf和sscanf282

9.4.12 标准I/O错误处理284

第10章 深入理解进程285

10.1 Linux中的进程285

10.1.1 创建进程286

10.1.2 执行程序287

10.1.3 进程的内存布局288

10.1.4 进程的状态迁移290

10.1.5 进程的终止290

10.2 进程与信号291

10.2.1 Linux中的信号处理机制292

10.2.2 发送信号293

10.2.3 捕捉信号295

10.2.4 屏蔽信号299

10.2.5 信号安全函数301

10.3 进程与文件302

10.3.1 内核文件管理302

10.3.2 进程中的文件303

10.3.3 文件的重定向306

10.3.4 文件控制307

10.4 进程间通信308

10.4.1 Linux中的IPC309

10.4.2 信号灯与进程同步310

10.4.3 管道313

10.4.4 命名管道314

10.4.5 共享内存317

10.4.6 消息队列321

第11章 socket编程326

11.1 网络协议层次模型326

11.2 socket编程接口327

11.2.1 打开socket327

11.2.2 socket地址329

11.2.3 网络字节序330

11.2.4 socket与地址的绑定331

11.2.5 侦听331

11.2.6 接受连接请求332

11.2.7 连接332

11.2.8 关闭和切断连接333

11.2.9 发送数据333

11.2.10 接收数据334

11.2.11 使用socket选项335

11.2.12 阻塞与非阻塞操作337

11.2.13 可靠的发送与接收操作338

11.2.14 多路复用339

11.3 socket编程实例340

11.3.1 TCP与UDP程序流程340

11.3.2 TCP通信例程340

11.3.3 多进程并发服务器应用343

11.3.4 多路复用服务器应用349

11.3.5 UDP服务器应用354

第12章 多线程并发程序设计358

12.1 线程的概念358

12.2 线程编程接口358

12.2.1 线程的创建与退出359

12.2.2 线程属性359

12.2.3 线程的分离状态361

12.2.4 线程应用实例361

12.3 线程的同步362

12.3.1 使用信号灯进行线程同步363

12.3.2 使用互斥体368

12.3.3 使用条件变量371

12.4 多线程并发程序设计375

12.4.1 多线程并发服务器应用375

12.4.2 消费者/生产者模型381

12.4.3 线程池应用382

第4部分 内核与驱动编程389

第13章 内核编程初步390

13.1 从用户态到内核态390

13.1.1 实模式与保护模式390

13.1.2 用户态与内核态391

13.1.3 内核编程的特点391

13.1.4 内核模块与驱动392

13.2 内核模块编程393

13.2.1 编写源码393

13.2.2 printk函数394

13.2.3 编译内核模块396

13.2.4 加载与卸载397

13.2.5 模块参数397

13.3 字符设备驱动399

13.3.1 设备文件与设备号399

13.3.2 字符设备编程接口400

13.3.3 文件操作404

13.3.4 访问用户态内存408

13.3.5 动态分配内存409

13.3.6 内存操作409

13.3.7 字符设备驱动例程415

第14章 内核编程接口421

14.1 双向环形链表421

14.1.1 定义与初始化421

14.1.2 链表操作422

14.1.3 链表的使用424

14.2 等待与延时426

14.2.1 调度与抢占426

14.2.2 进程运行状态428

14.2.3 定时429

14.2.4 等待队列429

14.2.5 阻塞与非阻塞操作432

14.2.6 延时433

14.2.7 等待队列例程434

14.3 定时器与延期工作440

14.3.1 定时器440

14.3.2 tasklet444

14.3.3 工作队列446

14.3.4 定时器例程451

14.4 自旋锁与同步455

14.4.1 并发与竞态455

14.4.2 自旋锁456

14.4.3 原子上下文460

14.4.4 读写锁462

14.4.5 原子类型464

14.4.6 比特位操作467

14.4.7 互斥体468

14.4.8 信号灯470

14.4.9 读写信号灯472

14.5 端口IO和内存映射IO473

14.5.1 端口IO474

14.5.2 内存映射IO477

14.5.3 内存屏障482

14.6 中断483

14.6.1 申请和释放中断483

14.6.2 中断处理函数484

14.6.3 中断的禁止和使能485

14.6.4 线程化中断486

14.6.5 共享中断486

第15章 Linux 2.6设备模型488

15.1 对象与集合488

15.1.1 引用计数488

15.1.2 内核对象489

15.1.3 内核对象的类型492

15.1.4 内核集合496

15.1.5 内核集合与对象例程500

15.2 设备管理504

15.2.1 设备504

15.2.2 错误码与指针507

15.2.3 驱动507

15.2.4 总线508

15.2.5 类别510

15.2.6 接口512

15.3 常见总线与类别513

15.3.1 platform总线513

15.3.2 misc类别516

第16章 Linux驱动实例详解518

16.1 输入设备驱动518

16.1.1 输入设备编程接口519

16.1.2 触摸屏驱动例程523

16.2 USB驱动532

16.2.1 USB概述533

16.2.2 USB驱动模型534

16.2.3 USB驱动编程接口535

16.2.4 USB接口与端点537

16.2.5 USB类别540

16.2.6 URB541

16.2.7 同步传输接口546

16.2.8 USB锚547

16.2.9 USB驱动范例分析549

第5部分 嵌入式Linux系统构建559

第17章 Linux内核构建560

17.1 内核编译过程560

17.2 内核配置系统架构562

17.2.1 内核Makefile562

17.2.2 KBuild配置系统566

17.3 增加代码到内核572

17.4 内核配置简介573

17.5 启动内核575

第18章 根文件系统构建576

18.1 init进程576

18.2 创建根文件系统578

18.2.1 创建目录578

18.2.2 创建设备文件579

18.2.3 安装共享库579

18.2.4 安装busybox580

18.2.5 创建配置文件582

18.3 挂载根文件系统583

18.3.1 使用网络文件系统583

18.3.2 使用Flash文件系统584

第6部分 应用编程587

第19章 C++语言编程要点588

19.1 布尔型数据588

19.2 引用588

19.3 类和对象590

19.3.1 类和对象的定义590

19.3.2 构造与析构590

19.3.3 类的实现591

19.3.4 访问对象592

19.3.5 this指针592

19.3.6 new和delete593

19.3.7 静态成员594

19.3.8 只读成员594

19.3.9 复制构造函数595

19.3.10 友元596

19.4 类的继承597

19.4.1 继承的语法597

19.4.2 继承方式597

19.4.3 多重继承598

19.5 函数和操作符重载598

19.5.1 函数重载599

19.5.2 操作符重载601

19.6 覆盖与虚函数604

19.6.1 覆盖604

19.6.2 虚函数和多态604

19.6.3 虚函数的实现606

19.6.4 纯虚函数与抽象类606

19.7 名字空间607

19.8 模板608

19.8.1 模板函数608

19.8.2 模板类609

19.9 异常处理609

19.10 C与C++混合编程611

第20章 嵌入式GUI编程612

20.1 建立开发环境612

20.2 简单的Qt应用程序614

20.2.1 编写源代码615

20.2.2 编译615

20.2.3 工程文件616

20.2.4 运行617

20.2.5 移植到目标机618

20.3 窗口布局619

20.3.1 水平布局与垂直布局619

20.3.2 栅格布局622

20.4 Qt对象623

20.4.1 层次化管理624

20.4.2 信号与槽625

20.4.3 事件628

20.4.4 定时器631

20.5 使用designer633

20.5.1 窗体设计633

20.5.2 代码编写635

20.5.3 运行结果639

20.6 Qt常用类640

20.6.1 QChar640

20.6.2 QString641

20.6.3 QPoint647

20.6.4 QSize648

20.6.5 QRect649

20.6.6 QFont650

20.6.7 QPixmap651

20.6.8 QIcon652

20.6.9 QWidget654

20.6.10 QDialog662

20.6.11 QLabel664

20.6.12 QAbstractButton665

20.6.13 QPushButton667

20.6.14 QCheckBox667

20.6.15 QRadioButton668

20.6.16 QLineEdit669

20.7 Qt综合应用670

20.7.1 软件设计670

20.7.2 源码实现673

20.7.3 运行结果680

20.7.4 Qt国际化编程680

第21章 嵌入式数据库编程684

21.1 基本SQL语句684

21.1.1 数据库与表684

21.1.2 创建和删除表685

21.1.3 插入、修改及删除记录685

21.1.4 条件表达式686

21.1.5 数据库查询687

21.2 建立SQLite3开发平台688

21.3 SQLite3编程接口689

21.3.1 打开和关闭数据库689

21.3.2 执行SQL语句690

21.3.3 查询数据库691

21.4 使用SQLite3工具691

21.5 SQLite3数据库应用实例692

21.5.1 使用sqlite3_exec查询数据库693

21.5.2 使用sqlite3_get_table查询数据库694

第22章 产品开发实例:无线信息终端696

22.1 总体架构696

22.2 硬件设计697

22.3 软件设计698

22.3.1 总体框架698

22.3.2 协议报文格式699

22.4 应用软件701

22.4.1 GUI应用模块701

22.4.2 通信协议模块705

22.4.3 业务功能模块710

22.4.4 使用多线程读取设备713

22.4.5 模块集成714

附录A 缩略语716

热门推荐