图书介绍

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

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

PDF下载


点此进入-本书在线PDF格式电子书下载【推荐-云解压-方便快捷】直接下载PDF格式图书。移动端-PC端通用
下载压缩包 [复制下载地址] 温馨提示:(请使用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 ARM7 10

1.3.2 ARM9 11

1.3.3 ARM9E 11

1.3.4 ARM10E 12

1.3.5 ARM11 12

1.3.6 Cortex 12

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 goto 52

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.0 105

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与Makefile 127

3.8.1 make工具的使用 127

3.8.2 Makefile 128

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-boot 230

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 系统调用与API 260

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 fopen 276

9.4.2 fread和fwrite 276

9.4.3 fclose 277

9.4.4 fflush 277

9.4.5 fseek和ftell 277

9.4.6 fgetc,getc和getchar 278

9.4.7 fputc,putc和putchar 278

9.4.8 fgets和gets 279

9.4.9 fputs和puts 280

9.4.10 fprintf,printf和sprintf 280

9.4.11 fscanf,scanf和sscanf 282

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中的IPC 309

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 打开socket 327

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 tasklet 444

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和内存映射IO 473

14.5.1 端口IO 474

14.5.2 内存映射IO 477

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 URB 541

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 内核Makefile 562

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 安装busybox 580

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和delete 593

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 使用designer 633

20.5.1 窗体设计 633

20.5.2 代码编写 635

20.5.3 运行结果 639

20.6 Qt常用类 640

20.6.1 QChar 640

20.6.2 QString 641

20.6.3 QPoint 647

20.6.4 QSize 648

20.6.5 QRect 649

20.6.6 QFont 650

20.6.7 QPixmap 651

20.6.8 QIcon 652

20.6.9 QWidget 654

20.6.10 QDialog 662

20.6.11 QLabel 664

20.6.12 QAbstractButton 665

20.6.13 QPushButton 667

20.6.14 QCheckBox 667

20.6.15 QRadioButton 668

20.6.16 QLineEdit 669

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

精品推荐