图书介绍

ARM嵌入式Linux系统开发详解2025|PDF|Epub|mobi|kindle电子书版本百度云盘下载

ARM嵌入式Linux系统开发详解
  • 弓雷等编著 著
  • 出版社: 北京:清华大学出版社
  • ISBN:9787302207290
  • 出版时间:2010
  • 标注页数:478页
  • 文件大小:159MB
  • 文件页数:499页
  • 主题词:微处理器,ARM-系统设计;Linux操作系统-系统设计

PDF下载


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

下载说明

ARM嵌入式Linux系统开发详解PDF格式电子书版下载

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

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

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

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

图书目录

第1篇 Linux嵌入式开发基础篇第1章 嵌入式系统入门2

1.1 什么是嵌入式系统2

1.2 嵌入式系统应用领域2

1.2.1 家用电器2

1.2.2 交通工具3

1.2.3 公共电子设施3

1.3 嵌入式系统发展4

1.3.1 嵌入式微控制器4

1.3.2 嵌入式微处理器5

1.3.3 未来嵌入式系统发展的方向6

1.4 典型的嵌入式系统组成6

1.5 小结7

第2章 嵌入式软硬件系统8

2.1 电路基本知识8

2.1.1 什么是模拟电路8

2.1.2 什么是数字电路8

2.1.3 数制转换9

2.2 计算机组成原理10

2.2.1 计算机体系的发展10

2.2.2 中央处理器10

2.2.3 存储系统11

2.2.4 总线系统12

2.2.5 输入输出系统12

2.3 软件基础知识12

2.3.1 什么是软件13

2.3.2 软件开发流程13

2.3.3 常见的软件开发模型14

2.3.4 计算机编程语言14

2.3.5 数据结构15

2.4 操作系统知识15

2.4.1 什么是操作系统16

2.4.2 操作系统的发展历史16

2.4.3 操作系统由什么组成16

2.4.4 几种操作系统的设计思路17

2.4.5 操作系统分类17

2.5 小结18

第3章 ARM处理器19

3.1 微处理器和微控制器19

3.2 ARM处理器介绍19

3.2.1 ARM微处理器的应用领域20

3.2.2 ARM的功能特点20

3.3 ARM指令集21

3.3.1 算术运算指令21

3.3.2 逻辑运算指令22

3.3.3 分支指令23

3.3.4 数据传送指令23

3.4 ARM的结构24

3.4.1 ARM体系结构的命名方法24

3.4.2 处理器系列划分25

3.4.3 处理器工作模式25

3.4.4 存储系统26

3.4.5 寻址方式27

3.5 ARM的功能选型29

3.5.1 ARM的选型原则29

3.5.2 几种常见的ARM核处理器选型参考32

3.6 小结32

第4章 嵌入式Linux33

4.1 常见的嵌入式操作系统33

4.1.1 VxWorks33

4.1.2 Windows CE34

4.1.3 PalmOS34

4.1.4 Symbian34

4.2 嵌入式Linux操作系统34

4.2.1 什么是Linux35

4.2.2 Linux与UNIX的不同——GPL版权协议介绍35

4.2.3 Linux发行版36

4.2.4 常见的嵌入式Linux系统37

4.3 小结37

第5章 建立软件开发环境38

5.1 独立的Linux系统38

5.1.1 安装Ubuntu Linux38

5.1.2 关键一步——系统的网络设置46

5.1.3 其他必要的设置46

5.1.4 怎样安装卸载软件48

5.1.5 怎样配置系统服务48

5.1.6 安装主要的开发工具48

5.1.7 安装其他的开发工具和文档49

5.2 运行在Windows上的Linux系统50

5.2.1 什么是Cygwin50

5.2.2 如何安装Cygwin50

5.2.3 安装开发环境54

5.3 Linux常用工具54

5.3.1 Linux shell和常用命令55

5.3.2 文本编辑工具vi56

5.3.3 搜索工具find和grep57

5.3.4 FTP工具61

5.3.5 串口工具minicom63

5.4 Windows常用工具65

5.4.1 代码编辑管理工具Source Insight65

5.4.2 串口工具XShell71

5.5 ARM集成开发环境ADS72

5.5.1 ADS集成开发环境介绍73

5.5.2 配置ADS调试环境73

5.5.3 建立自己的工程75

5.6 小结78

第6章 第一个Linux应用程序79

6.1 向世界问好——Hello,World!79

6.1.1 用vi编辑源代码文件79

6.1.2 用gcc编译程序80

6.1.3 执行程序80

6.2 程序背后做了什么80

6.2.1 程序执行的过程81

6.2.2 窥视程序执行中的秘密82

6.2.3 动态库的作用83

6.3 程序如何来的——编译的全部过程84

6.3.1 编译源代码84

6.3.2 连接目标文件到指定的库85

6.4 更简单的办法——用Makefile管理工程86

6.4.1 什么是Makefile87

6.4.2 它是如何工作的87

6.4.3 如何使用Makefile87

6.4.4 好的源代码管理习惯88

6.5 小结88

第2篇 Linux嵌入式开发应用篇第7章 Linux应用程序编程基础90

7.1 内存管理和使用90

7.1.1 堆和栈的区别90

7.1.2 内存管理函数malloc()和free()93

7.1.3 实用的内存分配函数calloc()和realloc()93

7.1.4 内存管理编程实例94

7.2 ANSI C文件管理97

7.2.1 文件指针和流97

7.2.2 存储方式98

7.2.3 标准输入、标准输出和标准错误98

7.2.4 缓冲98

7.2.5 打开关闭文件99

7.2.6 读写文件100

7.2.7 文件流定位103

7.2.8 ANSI C文件编程实例103

7.3 POSIX文件I/O编程104

7.3.1 底层的文件I/O操作104

7.3.2 文件描述符104

7.3.3 创建/打开/关闭文件105

7.3.4 读写文件内容108

7.3.5 文件内容定位109

7.3.6 修改已打开文件的属性110

7.3.7 POSIX文件编程实例110

7.4 小结112

第8章 开发多进程/线程程序113

8.1 多进程开发113

8.1.1 什么是进程113

8.1.2 进程环境和属性114

8.1.3 创建进程115

8.1.4 等待进程结束117

8.1.5 退出进程118

8.1.6 常用进程间通信的方法120

8.1.7 进程编程实例124

8.2 多线程开发125

8.2.1 线程的概念126

8.2.2 进程和线程对比126

8.2.3 创建线程127

8.2.4 取消线程128

8.2.5 等待线程129

8.2.6 使用pthread库线程操作实例129

8.3 小结131

第9章 网络通信应用132

9.1 网络通信基础132

9.1.1 TCP/IP协议族132

9.1.2 IP协议133

9.1.3 TCP协议135

9.1.4 UDP协议135

9.1.5 学习分析协议的方法135

9.2 Socket通信基本概念137

9.2.1 创建socket对象138

9.2.2 面向连接的Socket通信实现138

9.2.3 面向连接的Echo服务编程实例140

9.2.4 无连接的Socket通信实现144

9.2.5 无连接的时间服务编程实例145

9.3 Socket高级应用148

9.3.1 Socket超时处理148

9.3.2 使用Select机制处理多连接149

9.3.3 使用Poll机制处理多连接151

9.3.4 多线程环境Socket编程152

9.4 小结152

第10章 串行口通信编程154

10.1 串口介绍154

10.1.1 什么是串口154

10.1.2 串口工作原理154

10.1.3 串口流量控制155

10.2 开发串口应用程序156

10.2.1 操作串口需要用到的头文件156

10.2.2 串口操作方法157

10.2.3 串口属性设置157

10.2.4 与Windows串口终端通信161

10.3 串口应用实例——手机短信发送163

10.3.1 PC与手机连接发送短信的物理结构164

10.3.2 AT指令介绍164

10.3.3 GSM AT指令集165

10.3.4 PDU编码方式165

10.3.5 建立与手机的连接167

10.3.6 使用AT指令发送短信167

10.4 小结171

第11章 嵌入式GUI程序开发172

11.1 Linux GUI介绍172

11.1.1 Linux GUI的发展172

11.1.2 常见的嵌入式GUI173

11.2 开发图形界面程序174

11.2.1 安装Qt开发环境174

11.2.2 建立简单的Qt程序176

11.2.3 Qt库编程结构178

11.3 深入Qt编程179

11.3.1 使用Widget179

11.3.2 对话框程序设计181

11.3.3 信号与槽系统185

11.4 移植Qtopia到ARM开发板186

11.4.1 需要的资源186

11.4.2 准备工作187

11.4.3 编译主机Qt工具187

11.4.4 交叉编译qtopia189

11.5 小结190

第12章 软件项目管理191

12.1 源代码管理191

12.1.1 什么是软件的版本191

12.1.2 版本控制的概念192

12.2 版本控制系统Subversion193

12.2.1 在Linux系统下使用Subversion服务端193

12.2.2 在Windows系统下使用TortoiseSVN客户端195

12.3 开发文档管理——常见的开发文档199

12.3.1 可行性研究报告200

12.3.2 项目开发计划200

12.3.3 软件需求说明书200

12.3.4 概要设计200

12.3.5 详细设计200

12.3.6 用户手册201

12.3.7 其他文档201

12.4 使用trac管理软件开发文档201

12.4.1 安装trac201

12.4.2 配置trac基本设置202

12.4.3 配置trac全局脚本204

12.4.4 设置trac的Web界面205

12.5 Bug跟踪系统208

12.5.1 Bug管理的概念和作用208

12.5.2 使用Bugzilla跟踪Bug208

12.6 小结211

第3篇 Liux系统篇214

第13章 ARM体系结构及开发实例214

13.1 ARM体系结构介绍214

13.1.1 ARM体系结构214

13.1.2 ARM指令集介绍215

13.2 编程模型216

13.2.1 数据类型216

13.2.2 处理器模式216

13.2.3 寄存器217

13.2.4 通用寄存器217

13.2.5 程序状态寄存器219

13.2.6 异常处理219

13.2.7 内存和内存I/O映射220

13.3 内存管理单元221

13.3.1 内存管理介绍221

13.3.2 内存访问顺序222

13.3.3 地址翻译过程222

13.3.4 访问权限223

13.4 常见接口和控制器223

13.4.1 GPIO接口223

13.4.2 中断控制器224

13.4.3 RTC控制器224

13.4.4 看门狗定时器225

13.4.5 试验:使用GPIO点亮LED226

13.5 小结227

第14章 深入Bootloader228

14.1 初识Bootloader228

14.1.1 PC(个人电脑)上的Bootloader228

14.1.2 什么是嵌入式系统的Bootloader229

14.1.3 嵌入式系统常见的Bootloader229

14.2 U-Boot分析230

14.2.1 获取U-Boot230

14.2.2 U-Boot工程结构分析230

14.2.3 U-Boot总体工作流程232

14.3 U-Boot启动流程分析233

14.3.1 _start标号233

14.3.2 reset标号235

14.3.3 cpu_init_crit标号237

14.3.4 lowlevel_init标号238

14.3.5 relocate标号239

14.3.6 start_armboot()函数240

14.3.7 main_loop()函数244

14.4 移植U-Boot到开发板248

14.4.1 U-Boot移植的一般步骤248

14.4.2 移植U-Boot到目标开发板249

14.4.3 移植U-Boot的常见问题250

14.5 小结251

第15章 解析Linux内核252

15.1 基本知识252

15.1.1 什么是Linux内核252

15.1.2 Linux内核版本253

15.1.3 如何获取Linux内核代码253

15.1.4 编译内核253

15.2 Linux内核的子系统260

15.2.1 系统调用接口260

15.2.2 进程管理子系统261

15.2.3 内存管理子系统262

15.2.4 虚拟文件系统263

15.2.5 网络堆栈264

15.2.6 设备驱动265

15.2.7 依赖体系结构的代码266

15.3 Linux内核代码的工程结构266

15.3.1 源代码目录布局266

15.3.2 几个重要的Linux内核文件267

15.4 内核编译系统268

15.4.1 内核编译系统基本架构269

15.4.2 内核顶层Makefile分析269

15.4.3 内核编译文件分析274

15.4.4 目标文件清除机制278

15.4.5 编译辅助程序279

15.4.6 KBuild变量281

15.5 小结282

第16章 嵌入式Linux启动流程283

16.1 Linux内核初始化流程283

16.2 PC的初始化流程284

16.2.1 PC BIOS功能和作用284

16.2.2 硬盘的数据结构285

16.2.3 完整的初始化流程286

16.3 嵌入式系统的初始化286

16.4 Linux内核初始化287

16.4.1 解压缩内核映像287

16.4.2 进入内核代码289

16.5 启动init内核进程291

16.6 根文件系统初始化292

16.6.1 根文件系统介绍292

16.6.2 挂载虚拟文件系统294

16.7 内核交出权限300

16.8 init进程300

16.9 初始化RAM Disk301

16.9.1 RAM Disk介绍301

16.9.2 如何使用RAM Disk302

16.9.3 实例:使用RAM Disk作为根文件系统302

16.10 小结303

第17章 Linux文件系统304

17.1 Linux文件管理304

17.1.1 文件和目录的概念304

17.1.2 文件的结构305

17.1.3 文件的类型305

17.1.4 文件系统的目录结构307

17.1.5 文件和目录的存取权限308

17.1.6 文件系统管理310

17.2 Linux文件系统原理311

17.2.1 非日志文件系统311

17.2.2 日志文件系统311

17.3 常见的Linux文件系统312

17.3.1 ext2文件系统312

17.3.2 ext3文件系统315

17.3.3 ReiserFS文件系统315

17.3.4 JFFS文件系统316

17.3.5 cramfs文件系统318

17.4 其他文件系统319

17.4.1 网络文件系统319

17.4.2 /proc影子文件系统320

17.5 小结323

第18章 建立交叉编译工具链324

18.1 什么是交叉编译324

18.2 需要哪些东西325

18.3 手工创建工具链325

18.3.1 准备工作——获取源代码326

18.3.2 开始了——建立工作环境326

18.3.3 建立Linux内核头文件327

18.3.4 编译安装binutils330

18.3.5 编译安装gcc的C编译器331

18.3.6 编译安装glibc库332

18.3.7 编译安装gcc的C、C++编译器333

18.3.8 最后的工作334

18.4 使用脚本创建工具链334

18.5 更简便的方法——获取已编译好的交叉编译环境336

18.6 小结336

第19章 强大的命令系统BusyBox337

19.1 BusyBox简介337

19.1.1 简单易懂的BusyBox337

19.1.2 BusyBox工作原理338

19.1.3 安装BusyBox339

19.2 交叉编译BusyBox341

19.3 使用BusyBox343

19.3.1 BusyBox初始化344

19.3.2 目标板BusyBox安装346

19.4 小结348

第20章 Linux内核移植349

20.1 Linux内核移植要点349

20.2 平台相关代码结构350

20.3 建立目标平台工程框架351

20.3.1 加入编译菜单项352

20.3.2 设置宏与代码文件的对应关系352

20.3.3 测试工程框架353

20.4 建立目标平台代码框架354

20.4.1 ARM处理器相关结构354

20.4.2 建立machine desc结构356

20.4.3 加入处理函数356

20.4.4 加入定时器结构357

20.4.5 测试代码结构357

20.5 构建目标板代码357

20.5.1 处理器初始化358

20.5.2 端口映射360

20.5.3 中断处理361

20.5.4 定时器处理361

20.5.5 编译最终代码361

20.6 小结362

第21章 内核和应用程序调试技术363

21.1 使用GDB调试应用程序概述363

21.2 基本的调试技术363

21.2.1 列出源代码366

21.2.2 断点管理368

21.2.3 执行程序370

21.2.4 显示程序变量370

21.2.5 信号管理371

21.2.6 调试实例371

21.3 多进程调试372

21.4 调试意外终止的程序374

21.5 内核调试技术376

21.5.1 printk打印调试信息376

21.5.2 使用/proc虚拟文件系统377

21.5.3 使用KDB调试工具379

21.5.4 KDB调试指令382

21.6 小结384

第4篇 Linux嵌入式驱动开发篇第22章 Linux设备驱动386

22.1 设备驱动介绍386

22.2 Linux内核模块386

22.2.1 内核模块简介387

22.2.2 内核模块的结构387

22.2.3 内核模块的加载和卸载388

22.2.4 编写一个基本的内核模块389

22.2.5 编译内核模块390

22.2.6 为内核模块添加参数391

22.3 Linux设备驱动392

22.3.1 PCI局部总线介绍392

22.3.2 Linux设备驱动基本概念393

22.3.3 字符设备394

22.3.4 块设备396

22.3.5 网络设备396

22.4 字符设备驱动开发实例396

22.4.1 开发一个基本的字符设备驱动397

22.4.2 测试字符设备驱动399

22.5 小结400

第23章 网络设备驱动程序401

23.1 网络基础知识401

23.1.1 ISO/OSI网络参考模型401

23.1.2 TCP/IP协议402

23.2 以太网基础404

23.2.1 工作原理405

23.2.2 常见以太网标准405

23.2.3 拓扑结构406

23.2.4 工作模式406

23.3 网卡工作原理407

23.4 内核网络分层结构408

23.4.1 内核网络结构408

23.4.2 与网络有关的数据结构409

23.4.3 内核网络部分的全局变量410

23.5 内核网络设备驱动框架411

23.5.1 net_device结构411

23.5.2 数据包接收流程413

23.5.3 数据包发送流程415

23.6 实例:DM9000网卡驱动分析416

23.6.1 DM9000芯片介绍416

23.6.2 网卡驱动程序框架416

23.6.3 DM9000网卡驱动主要数据结构417

23.6.4 加载驱动程序418

23.6.5 停止和启动网卡423

23.6.6 发送数据包425

23.6.7 接收数据包427

23.6.8 中断和定时器处理429

23.7 小结431

第24章 Flash设备驱动432

24.1 Linux Flash驱动结构432

24.1.1 什么是MTD432

24.1.2 MTD系统结构433

24.2 Flash设备基础434

24.2.1 存储原理434

24.2.2 性能比较435

24.3 内核MTD层436

24.3.1 mtd_info结构436

24.3.2 mtd_part结构439

24.3.3 mtd_partition结构440

24.3.4 map_info结构440

24.3.5 nand_chip结构442

24.4 Flash设备框架443

24.4.1 NOR Flash设备驱动框架443

24.4.2 NAND Flash设备驱动框架444

24.5 Flash设备驱动实例——NOR Flash设备驱动剖析445

24.5.1 数据结构446

24.5.2 驱动初始化446

24.5.3 驱动卸载447

24.6 Flash设备驱动实例——NAND Flash设备驱动分析448

24.6.1 S3C2440 NAND控制器介绍448

24.6.2 数据结构450

24.6.3 驱动初始化450

24.6.4 驱动卸载454

24.6.5 初始化NAND控制器455

24.6.6 设置芯片操作456

24.6.7 电源管理458

24.7 小结459

第25章 USB驱动开发460

25.1 USB体系介绍460

25.1.1 USB设计目标460

25.1.2 USB体系概述461

25.1.3 USB体系工作流程462

25.2 USB驱动程序框架462

25.2.1 Linux内核USB驱动框架462

25.2.2 主机驱动结构465

25.2.3 设备驱动结构468

25.2.4 USB驱动程序框架470

25.3 USB驱动实例剖析473

25.3.1 USB串口驱动473

25.3.2 USB键盘驱动475

25.4 小结478

热门推荐