当前位置:首页 > 工业技术
Linux环境嵌入式系统开发基础
Linux环境嵌入式系统开发基础

Linux环境嵌入式系统开发基础PDF电子书下载

工业技术

  • 电子书积分:16 积分如何计算积分?
  • 作 者:刘彦文,李丽芬编著
  • 出 版 社:北京:清华大学出版社
  • 出版年份:2015
  • ISBN:9787302391159
  • 页数:523 页
图书介绍:本书详细描述了嵌入式系统、Linux支持的硬件;常用微处理器及功能模块;Linux及嵌入式开发系统组成、主机及目标板运行、主机开发环境配置、应用程序举例、驱动程序分析、出厂软件烧写;引导程序、内核、根文件系统等内容。本书内容新颖,实用性和实践性强,书中配有大量的图、表、例、操作步骤和程序源代码;操作步骤均经过上机检查;源程序代码均经上机调试并加了注释或说明。
《Linux环境嵌入式系统开发基础》目录

第1章 嵌入式系统组成简介 1

1.1 嵌入式系统简介 1

1.1.1 嵌入式系统定义 1

1.1.2 嵌入式系统发展历程 1

1.1.3 嵌入式系统应用举例 2

1.1.4 嵌入式系统特点 2

1.2 嵌入式系统硬件及软件组成 4

1.2.1 嵌入式系统硬件组成 4

1.2.2 嵌入式系统软件组成 5

1.3 主流嵌入式微处理器 5

1.3.1 嵌入式微处理器分类 5

1.3.2 主流嵌入式微处理器简介 7

1.4 主流嵌入式操作系统简介 10

1.4.1 嵌入式操作系统的主要特点 10

1.4.2 主流嵌入式操作系统简介 11

1.5 Linux支持的处理器结构简介 14

1.5.1 Linux对处理器的支持 14

1.5.2 Linux支持的处理器结构 15

1.5.3 μCLinux支持的处理器结构 15

习题 16

第2章 微处理器组成及程序员模型 17

2.1 S3C2410A微处理器概述 17

2.2 S3C2410A微处理器的组成与引脚信号 18

2.2.1 S3C2410A微处理器的组成 18

2.2.2 S3C2410A芯片封装、引脚编号与引脚信号名 22

2.2.3 S3C2410A特殊功能寄存器简介 26

2.3 ARM920T核 26

2.4 ARM程序员模型 26

2.4.1 处理器操作状态 27

2.4.2 存储器格式和数据类型 27

2.4.3 处理器操作方式 29

2.4.4 寄存器 29

2.4.5 程序状态寄存器 33

2.4.6 异常 34

2.4.7 中断延迟 39

2.4.8 Reset 39

2.5 OMAP3530微处理器 39

2.5.1 OMAP3530微处理器概述 40

2.5.2 OMAP3530应用举例 40

2.5.3 OMAP3530微处理器组成 42

习题 44

第3章 存储器控制器及Nand Flash控制器 46

3.1 存储器控制器 46

3.1.1 S3C2410A与存储器相关的特性简介 46

3.1.2 与存储器芯片连接的S3C2410A引脚信号及使用 48

3.1.3 存储器总线周期举例 54

3.1.4 存储器控制器特殊功能寄存器 57

3.2 存储器组成举例 63

3.2.1 使用Nor Flash芯片作为引导ROM 63

3.2.2 使用SDRAM芯片举例 68

3.3 Nand Flash芯片工作原理 78

3.3.1 两种引导模式 78

3.3.2 Nand Flash概述 78

3.3.3 K9F2808U0C Nand Flash芯片工作原理 78

3.4 Nand Flash控制器 83

3.4.1 Nand Flash控制器 83

3.4.2 Nand Flash控制器特殊功能寄存器 86

3.4.3 Nand Flash控制器与Nand Flash芯片连接举例 87

3.5 应用举例 87

3.5.1 U-Boot对存储器控制器特殊功能寄存器初始化 87

3.5.2 存储器控制器与以太网控制器的连接 91

3.5.3 S3C44B0X与Nand Flash芯片的连接 91

习题 92

第4章 时钟与电源管理、DMA与总线优先权 95

4.1 功耗管理、时钟与电源管理概述 95

4.1.1 微处理器功耗管理基础 95

4.1.2 时钟与电源管理概述 96

4.1.3 时钟与电源管理用到的S3C2410A引脚信号 97

4.2 时钟管理 98

4.2.1 时钟与电源管理结构框图 98

4.2.2 片外时钟源的选择 99

4.2.3 锁相环 99

4.2.4 时钟控制逻辑 100

4.3 电源管理 102

4.3.1 电源管理模式的转换 102

4.3.2 4种电源管理模式 103

4.3.3 S3C2410A电源引脚 107

4.4 时钟与电源管理特殊功能寄存器及设置 107

4.4.1 时钟与电源管理特殊功能寄存器 107

4.4.2 U-Boot对特殊功能寄存器的初始设置 110

4.5 DMA基础 112

4.5.1 DMA含义 112

4.5.2 DMAC控制输入传输举例 112

4.5.3 总线主设备、从设备 114

4.6 DMA传输 114

4.6.1 DMA概述 114

4.6.2 存储器到外设DMA传输举例 115

4.6.3 DMA用到的S3C2410A引脚信号 117

4.7 DMA请求、有限状态机和协议 117

4.7.1 硬件DMA请求与软件DMA请求 117

4.7.2 用于DMA操作的有限状态机 118

4.7.3 外部DMA请求/响应协议 119

4.7.4 Unit/Burst传输、数据尺寸与自动重装 120

4.7.5 外部DMA请求/响应协议传输举例 121

4.8 DMA特殊功能寄存器 122

4.9 DMA存储器到存储器传输测试举例 127

4.10 总线优先权 130

习题 131

第5章 GPIO端口及中断控制器 133

5.1 GPIO端口概述及引脚信号 133

5.1.1 GPIO端口概述 133

5.1.2 与GPIO端口及其他寄存器相关的S3C2410A引脚信号 134

5.2 GPIO端口控制 135

5.3 GPIO端口特殊功能寄存器 136

5.3.1 端口A~端口H寄存器组 136

5.3.2 其他寄存器 144

5.4 GPIO端口程序举例 151

5.4.1 GPIO端口特殊功能寄存器在程序中定义 151

5.4.2 GPIO端口初始化配置 153

5.4.3 GPIO端口使用举例 154

5.5 中断控制器概述 155

5.5.1 与中断有关的寄存器 155

5.5.2 中断处理过程 157

5.6 中断控制器操作、中断源及中断优先权 158

5.6.1 中断控制器操作 158

5.6.2 中断源 159

5.6.3 中断优先权产生模块 159

5.7 中断控制器特殊功能寄存器 161

5.8 中断程序举例 167

习题 174

第6章 片内功能模块 177

6.1 脉宽调制定时器 177

6.1.1 PWM定时器概述 177

6.1.2 PWM定时器操作 179

6.1.3 PWM定时器特殊功能寄存器 184

6.1.4 PWM定时器应用举例 188

6.2 实时时钟 191

6.2.1 RTC概述 191

6.2.2 RTC组成与操作 192

6.2.3 RTC特殊功能寄存器 193

6.2.4 RTC程序举例 197

6.3 看门狗定时器 199

6.3.1 WDT概述 199

6.3.2 WDT操作 200

6.3.3 WDT特殊功能寄存器 200

6.3.4 WDT程序举例 202

6.4 通用异步收发器 205

6.4.1 串行异步通信基础 205

6.4.2 UART组成及操作 210

6.4.3 UART特殊功能寄存器 216

6.4.4 UART与RS-232C接口连接举例 222

6.4.5 UART程序举例 224

6.4.6 UART与红外收发器连接及程序举例 227

6.5 模数转换器与触摸屏接口 229

6.5.1 ADC与TS接口基础知识 229

6.5.2 ADC与TS接口概述 232

6.5.3 ADC与TS接口操作 233

6.5.4 ADC与TS接口特殊功能寄存器 236

6.5.5 ADC程序举例 239

6.5.6 ADC与TS接口程序举例 240

6.6 IIC、IIS、SPI总线接口及SD主控制器概述 243

6.6.1 IIC总线接口概述 243

6.6.2 IIS总线接口概述 245

6.6.3 SPI总线接口概述 247

6.6.4 MMC/SD/SDIO概述 249

习题 251

第7章 Linux及嵌入式开发系统组成简介 256

7.1 Linux起源及发展 256

7.1.1 UNIX和GNU软件 256

7.1.2 Linux的发展 257

7.2 内核、shell、文件系统及实用程序 258

7.2.1 Linux内核 258

7.2.2 shell简介 258

7.2.3 文件系统 261

7.2.4 实用程序 262

7.3 使用Linux的理由及Linux的不足之处 262

7.3.1 使用Linux的理由 262

7.3.2 使用Linux的不足之处 263

7.4 Linux环境嵌入式开发系统组成简介 264

7.4.1 Linux环境嵌入式开发系统组成 264

7.4.2 主机 264

7.4.3 目标板 264

7.4.4 主机与目标板的连接 264

7.4.5 主机中运行的程序 265

7.4.6 目标板中运行的程序 265

7.4.7 开发系统附带的光盘文档 266

7.5 主机安装的Linux发行版 267

7.5.1 常用的Linux发行版 267

7.5.2 Linux发行版在主机的安装方式 268

习题、操作与实验 269

第8章 主机及目标板的运行 271

8.1 终端基础知识 271

8.1.1 tty 271

8.1.2 早期的终端及终端与主机的连接 271

8.1.3 X-Window、GNOME及KDE简介 273

8.2 主机系统引导、登录及退出Linux 274

8.2.1 主机系统引导 274

8.2.2 登录Linux 275

8.2.3 Linux的终端 276

8.2.4 查看及修改用户使用的shell 278

8.2.5 通过退出与shell的会话退出Linux 280

8.2.6 关闭运行的Linux系统 281

8.2.7 使用帮助命令help和man 281

8.3 目标板初次运行 283

8.3.1 目标板连接的电源、端口及安装的操作系统 283

8.3.2 目标板引导过程简述 284

8.3.3 装入装载引导程序(vivi) 286

8.3.4 装入装载引导程序(u-boot) 287

8.3.5 主机在Windows环境下的超级终端 287

8.3.6 主机在Linux环境下的minicom仿真终端(Linux企业版4.0) 290

8.3.7 主机在Linux环境下的minicom仿真终端(Linux企业版5.0) 293

8.3.8 在虚拟机中增添串口设备 296

8.3.9 装载引导程序支持的命令简介(vivi) 300

8.3.10 装载引导程序支持的命令简介(u-boot) 302

8.3.11 目标板运行的Linux登录、退出讨论 306

8.3.12 目标板安装的Linux 306

8.3.13 目标板运行的Linux命令举例(S3C2410A) 307

8.3.14 目标板运行的Linux命令举例(OMAP3530) 310

习题、操作与实验 311

第9章 主机开发环境配置 313

9.1 交叉开发平台基础 313

9.1.1 本地开发及交叉开发 313

9.1.2 GNU跨平台工具链组成 314

9.1.3 如何获取工具链 314

9.1.4 工具链的组件及GDB简介 315

9.2 交叉工具链安装举例 316

9.2.1 交叉工具链安装举例(S3C2410A) 316

9.2.2 交叉工具链安装举例(OMAP3530) 318

9.3 主机Linux环境网络配置举例(S3C2410A) 321

9.3.1 主机Linux环境IP地址设置 322

9.3.2 主机Linux环境网络防火墙设置 325

9.3.3 主机与目标板网络通信测试 326

9.3.4 主机Linux环境NFS设置 328

9.3.5 输入、编译、运行一个程序全过程举例 332

9.4 主机Linux环境网络配置举例(OMAP3530) 333

9.4.1 主机Linux环境IP地址设置 333

9.4.2 主机Linux环境网络防火墙设置 335

9.4.3 主机与目标板网络通信测试 337

9.4.4 主机Linux环境NFS设置 337

9.4.5 输入、编译、运行一个程序全过程举例 340

习题、操作与实验 342

第10章 应用程序编程举例及驱动程序分析(一) 343

10.1 读取、转换时间函数编程举例 343

10.1.1 Linux查看、设置时间的命令 343

10.1.2 常用的读取、转换时间的函数 344

10.1.3 读取、转换时间的函数编程举例(S3C2410A) 345

10.1.4 例10.1 对应的Makefile文件(S3C2410A) 347

10.1.5 读取、转换时间的函数编程举例(OMAP3530) 348

10.1.6 例10.2 对应的Makefile文件(OMAP3530) 348

10.1.7 执行例10.2 程序前的操作步骤举例(OMAP3530) 349

10.2 多线程编程举例 350

10.2.1 Linux线程概述 350

10.2.2 线程、互斥量、条件变量函数 351

10.2.3 生产者、消费者编程举例(S3C2410A) 353

10.3 串行端口及标准输入/输出/错误编程举例 358

10.3.1 Linux标准输入/输出/错误系统调用 358

10.3.2 Linux标准输入/输出/错误系统调用编程举例(S3C2410A) 360

10.3.3 Linux标准输入/输出/错误系统调用编程举例(OMAP3530) 361

10.3.4 串行端口设备与文件关联及系统调用 362

10.3.5 串行端口设备与文件关联及系统调用编程举例(S3C2410A) 363

10.3.6 串行端口设备与文件关联及系统调用编程举例(OMAP3530) 365

10.3.7 C语言标准输入/输出/错误函数 367

10.3.8 C语言标准输入/输出/错误函数编程举例(S3C2410A) 368

10.3.9 C语言标准输入/输出/错误函数编程举例(OMAP3530) 369

10.4 ADC应用程序编程举例(S3C2410A) 369

10.4.1 ADC编程基础 369

10.4.2 ADC应用程序编程举例 371

10.5 ADC驱动程序源代码分析(S3C2410A) 375

10.5.1 概述 375

10.5.2 Linux设备驱动程序概述 376

10.5.3 s3c2410-adc.h头文件源代码分析 380

10.5.4 s3c2410.h_chip.h头文件源代码分析 381

10.5.5 s3c2410-adc.c设备驱动程序源代码分析 383

习题、操作、实验及编程 389

第11章 目标板出厂软件烧写实验(S3C2410A) 392

11.1 目标板出厂软件烧写概述 392

11.1.1 目标板出厂软件 392

11.1.2 Linux环境要烧写的文件 392

11.1.3 什么情况下烧写目标板出厂软件 392

11.1.4 烧写环境 393

11.2 目标板出厂软件烧写实验(一) 393

11.2.1 主机Windows环境下安装JTAG驱动程序 393

11.2.2 通过JTAG端口传送并烧写装载引导程序vivi 394

11.2.3 通过串口传送并烧写内核zImage 395

11.2.4 通过串口传送并烧写根文件系统root.cramfs 397

11.2.5 通过网口传送并烧写应用程序yaffs.tar.bz2 397

11.2.6 格式化闪存以及通过串口传送并烧写vivi 402

11.3 目标板出厂软件烧写实验(二) 402

11.3.1 通过网口传送并烧写内核zImage 403

11.3.2 通过网口传送并烧写根文件系统root.cramfs 406

11.4 目标板出厂软件烧写实验(三) 407

11.4.1 通过JTAG端口传送并烧写装载引导程序u-boot 407

11.4.2 通过网口传送并烧写内核uImage 409

11.4.3 通过网口传送并烧写根文件系统root.cramfs 411

11.4.4 通过网口传送并烧写应用程序yaffs.tar.bz2 412

11.5 目标板出厂软件烧写小结 413

习题、操作与实验 413

第12章 应用程序编程举例及驱动程序分析(二) 415

12.1 DAC应用程序编程举例及驱动程序分析 415

12.1.1 DAC硬件基础 415

12.1.2 DAC应用程序编程举例(S3C2410A) 417

12.1.3 DAC驱动程序源代码分析(S3C2410A) 419

12.2 PWM直流电机应用程序编程举例及驱动程序分析 422

12.2.1 PWM直流电机(S3C2410A) 422

12.2.2 编译、加载驱动程序模块(S3C2410A) 423

12.2.3 PWM直流电机应用程序编程举例(S3C2410A) 426

12.2.4 PWM直流电机驱动程序源代码分析(S3C2410A) 428

12.3 LED应用程序编程举例及驱动程序分析 429

12.3.1 七段LED概述 429

12.3.2 8×8点阵LED显示概述 432

12.3.3 CPLD与七段LED、8×8点阵LED连接举例(S3C2410A) 435

12.3.4 七段LED、8×8点阵LED应用程序编程举例(S3C2410A) 437

12.3.5 LED驱动程序源代码分析(S3C2410A) 439

习题、操作、实验及编程 442

第13章 装载引导程序 443

13.1 常见的装载引导程序 443

13.2 U-Boot概述 444

13.3 编译、烧写、运行U-Boot及装入内核 446

13.3.1 对标准开发板源代码进行编译、链接并烧写U-Boot 446

13.3.2 U-Boot等映像文件在开发板存储位置举例 446

13.3.3 加电运行U-Boot及U-Boot装入内核 447

13.4 U-Boot监视命令及环境变量 448

13.4.1 使用命令及在源代码中配置监视命令 448

13.4.2 环境变量 449

13.5 顶层目录、编译过程及配置头文件举例 451

13.5.1 U-Boot源代码顶层目录及编译指定的开发板 451

13.5.2 标准开发板配置头文件及举例 453

13.6 U-Boot启动过程及举例 456

习题、操作与实验 459

第14章 内核 461

14.1 内核简介 461

14.1.1 内核 461

14.1.2 内核在嵌入式Linux系统中的位置及内核组成 461

14.2 内核映像、Linux启动过程及输出信息 463

14.2.1 常见内核映像文件zImage和uImage 463

14.2.2 Linux启动过程简介 464

14.2.3 Linux启动期间控制台输出的信息 467

14.3 Linux内核源代码 468

14.3.1 获得内核源代码 468

14.3.2 Linux内核源代码树及内核目录 469

14.4 内核配置文件及配置编辑器 472

14.4.1 内核配置文件 472

14.4.2 内核配置编辑器 473

14.4.3 顶层.config文件内容及Kconfig文件内容举例 475

14.5 联编内核及联编内核模块 477

14.5.1 联编内核举例 478

14.5.2 联编内核模块举例 480

14.5.3 清理 480

习题、操作与实验 481

附录A Linux基础 483

A.1 用户和组 483

A.1.1 账户 483

A.1.2 与用户和组关联的文件 484

A.1.3 与用户和组相关的命令 486

A.2 文件系统及Linux常用命令 488

A.2.1 目录结构及根的基本目录 488

A.2.2 创建和删除目录 489

A.2.3 常用目录操作命令 491

A.2.4 文件类型及链接 493

A.2.5 文件和目录的权限 494

A.2.6 创建、修改和删除文件 495

A.2.7 常用文件操作命令 496

A.2.8 元字符 500

A.3 用vi输入源程序 500

A.3.1 vi功能简介 500

A.3.2 常用vi操作 501

A.3.3 输入、保存源程序举例 502

A.4 make及Makefile举例 504

A.4.1 make、Makefile文件内容简介 504

A.4.2 编译文件 509

A.5 主机运行用户程序举例 510

A.5.1 运行一个程序举例 510

A.5.2 输入、编译、运行程序过程总结 512

习题 512

附录B 英汉名词术语对照表 514

参考文献 523

返回顶部