描述
开 本: 16开纸 张: 胶版纸包 装: 平装是否套装: 否国际标准书号ISBN: 9787302340522丛书名: Linux典藏大系
ChinaUnix社区力荐!由浅入深,全面解析基于ARM体系结构的嵌入式Linux系统开发
结合多个实例和5个典型案例,深入剖析嵌入式开发的原理及过程,赠送40段(9小时)教学视频,赠送教学PPT
版本新颖:书中涉及的软件及开发环境都是当前*为流行的版本
由浅入深:从嵌入式系统的软硬件开始讲解,逐步深入到实际开发
内容全面:涵盖嵌入式Linux系统开发的大部分知识点和典型应用
注重原理:对每个知识点从概念和基本原理进行了详细而透彻的分析
重点突出:对Bootloader和Linux内核的功能和移植进行了详细介绍
实践性强:结合多个典型实例和5个应用案例,提高读者的开发水平
Linux精品图书推荐(请点丛书链接查看)
《Linux典藏大系:ARM嵌入式Linux系统开发详解(第2版)》是获得了大量读者好评的“Linux典藏大系”中的《ARM嵌入式Linux系统开发详解》的第2版。《Linux典藏大系:ARM嵌入式Linux系统开发详解(第2版)》由浅入深,全面、系统地介绍了基于ARM体系结构的嵌入式Linux系统开发所涉及的方方面面技术,并提供了大量实例供读者实战演练。另外,《Linux典藏大系:ARM嵌入式Linux系统开发详解(第2版)》提供了9小时多媒体教学视频及书中涉及的实例源程序,便于读者高效、直观地学习。
《Linux典藏大系:ARM嵌入式Linux系统开发详解(第2版)》共分4篇。第1篇介绍了嵌入式系统入门、嵌入式软硬件系统、ARM处理器、嵌入式Linux、软件开发环境建立和个Linux应用程序;第2篇介绍了Linux应用程序编程基础、开发多进程/线程程序、网络通信应用、串行口通信编程、嵌入式GUI程序开发和软件项目管理;第3篇介绍ARM体系结构及开发实例、深入Bootloader、解析Linux内核、嵌入式Linux启动流程、Linux文件系统、建立交叉编译工具链、命令系统BusyBox、Linux内核移植,以及内核和应用程序调试技术;第4篇结合5个案例介绍了Linux设备驱动、网络设备驱动、Flash设备驱动和USB驱动的开发过程,以此提高读者的实战水平。
《Linux典藏大系:ARM嵌入式Linux系统开发详解(第2版)》适合广大从事嵌入式Linux系统开发的人员、对嵌入式Linux系统开发有兴趣的爱好者及大中专院校相关专业的学生阅读。
第1章嵌入式系统入门
1.1什么是嵌入式系统
1.2嵌入式系统应用领域
1.2.1家用电器和电子类产品
1.2.2交通工具
1.2.3公共电子设施
1.3嵌入式系统发展
1.3.1嵌入式微控制器
1.3.2嵌入式微处理器
1.3.3未来嵌入式系统发展的方向
1.4典型的嵌入式系统组成
1.5小结
第2章嵌入式软硬件系统
2.1电路基本知识
2.1.1什么是模拟电路
2.1.2什么是数字电路
2.1.3数制转换
2.2计算机组成原理
2.2.1计算机体系的发展
2.2.2中央处理器
2.2.3存储系统
2.2.4总线系统
2.2.5输入输出系统
2.3软件基础知识
2.3.1什么是软件
2.3.2软件开发流程
2.3.3常见的软件开发模型
2.3.4计算机编程语言
2.3.5数据结构
2.4操作系统知识
2.4.1什么是操作系统
2.4.2操作系统的发展历史
2.4.3操作系统由什么组成
2.4.4几种操作系统的设计思路
2.4.5操作系统分类
2.5小结
第3章ARM处理器
3.1微处理器和微控制器
3.2ARM处理器介绍
3.2.1ARM微处理器的应用领域
3.2.2ARM的功能特点
3.3ARM指令集
3.3.1算术运算指令
3.3.2逻辑运算指令
3.3.3分支指令
3.3.4数据传送指令
3.4ARM的结构
3.4.1ARM体系结构的命名方法
3.4.2处理器系列划分
3.4.3处理器工作模式
3.4.4存储系统
3.4.5寻址方式
3.5ARM的功能选型
3.5.1ARM的选型原则
3.5.2几种常见的ARM核处理器选型参考
3.6小结
第4章嵌入式Linux
4.1常见的嵌入式操作系统
4.1.1VxWorks
4.1.2WindowsCE
4.1.3PalmOS
4.1.4Symbian
4.2嵌入式Linux操作系统
4.2.1什么是Linux
4.2.2Linux与UNIX的不同——GPL版权协议介绍
4.2.3Linux发行版
4.2.4常见的嵌入式Linux系统
4.3小结
第5章建立软件开发环境
5.1独立的Linux系统
5.1.1安装UbuntuLinux
5.1.2怎样安装、卸载软件
5.1.3怎样配置系统服务
5.1.4安装主要的开发工具
5.1.5安装其他的开发工具和文档
5.2运行在Windows上的Linux系统
5.2.1什么是Cygwin
5.2.2如何安装Cygwin
5.2.3安装开发环境
5.3Linux常用工具
5.3.1Linuxshell和常用命令
5.3.2文本编辑工具vi
5.3.3搜索工具find和grep
5.3.4FTP工具
5.3.5串口工具minicom
5.4Windows常用工具
5.4.1代码编辑管理工具SourceInsight
5.4.2串口工具XShell
5.5ARM集成开发环境ADS
5.5.1ADS集成开发环境介绍
5.5.2配置ADS调试环境
5.5.3建立自己的工程
5.6小结
第6章个Linux应用程序
6.1向世界问好——Hello,World!
6.1.1用vi编辑源代码文件
6.1.2用gcc编译程序
6.1.3执行程序
6.2程序背后做了什么
6.2.1程序执行的过程
6.2.2窥视程序执行中的秘密
6.2.3动态库的作用
6.3程序如何来的——编译的全部过程
6.3.1编译源代码
6.3.2连接目标文件到指定的库
6.4更简单的办法——用Makefile管理工程
6.4.1什么是Makefile
6.4.2它是如何工作的
6.4.3如何使用Makefile
6.4.4好的源代码管理习惯
6.5小结
第2篇Linux嵌入式开发应用篇
第7章Linux应用程序编程基础
7.1内存管理和使用
7.1.1堆和栈的区别
7.1.2内存管理函数malloc()和free()
7.1.3实用的内存分配函数calloc()和realloc()
7.1.4内存管理编程实例
7.2ANSIC文件管理
7.2.1文件指针和流
7.2.2存储方式
7.2.3标准输入、标准输出和标准错误
7.2.4缓冲
7.2.5打开、关闭文件
7.2.6读写文件
7.2.7文件流定位
7.2.8ANSIC文件编程实例
7.3POSIX文件I/O编程
7.3.1底层的文件I/O操作
7.3.2文件描述符
7.3.3创建/打开/关闭文件
7.3.4读写文件内容
7.3.5文件内容定位
7.3.6修改已打开文件的属性
7.3.7POSIX文件编程实例
7.4小结
第8章开发多进程/线程程序
8.1多进程开发
8.1.1什么是进程
8.1.2进程环境和属性
8.1.3创建进程
8.1.4等待进程结束
8.1.5退出进程
8.1.6常用进程间通信的方法
8.1.7进程编程实例
8.2多线程开发
8.2.1线程的概念
8.2.2进程和线程对比
8.2.3创建线程
8.2.4取消线程
8.2.5等待线程
8.2.6使用pthread库线程操作实例
8.3小结
第9章网络通信应用
9.1网络通信基础
9.1.1TCP/IP协议族
9.1.2IP协议
9.1.3TCP协议
9.1.4UDP协议
9.1.5学习分析协议的方法
9.2Socket通信基本概念
9.2.1创建socket对象
9.2.2面向连接的Socket通信实现
9.2.3面向连接的echo服务编程实例
9.2.4无连接的Socket通信实现
9.2.5无连接的时间服务编程实例
9.3Socket高级应用
9.3.1Socket超时处理
9.3.2使用Select机制处理多连接
9.3.3使用poll机制处理多连接
9.3.4多线程环境Socket编程
9.4小结
第10章串口通信编程
10.1串口介绍
10.1.1什么是串口
10.1.2串口工作原理
10.1.3串口流量控制
10.2开发串口应用程序
10.2.1操作串口需要用到的头文件
10.2.2串口操作方法
10.2.3串口属性设置
10.2.4与Windows串口终端通信
10.3串口应用实例——手机短信发送
10.3.1PC与手机连接发送短信的物理结构
10.3.2AT指令介绍
10.3.3GSMAT指令集
10.3.4PDU编码方式
10.3.5建立与手机的连接
10.3.6使用AT指令发送短信
10.4小结
第11章嵌入式GUI程序开发
11.1LinuxGUI介绍
11.1.1LinuxGUI的发展
11.1.2常见的嵌入式GUI
11.2开发图形界面程序
11.2.1安装Qt开发环境
11.2.2建立简单的Qt程序
11.2.3Qt库编程结构
11.3深入Qt编程
11.3.1使用Widget
11.3.2对话框程序设计
11.3.3信号与槽系统
11.4移植Qtopia到ARM开发板
11.4.1需要的资源
11.4.2准备工作
11.4.3编译主机Qt工具
11.4.4交叉编译qtopia
11.5小结
第12章软件项目管理
12.1源代码管理
12.1.1什么是软件的版本
12.1.2版本控制的概念
12.2版本控制系统Subversion
12.2.1在Linux系统下使用Subversion服务端
12.2.2在Windows系统下使用TortoiseSVN客户端
12.3开发文档管理——常见的开发文档
12.3.1可行性研究报告
12.3.2项目开发计划
12.3.3软件需求说明书
12.3.4概要设计
12.3.5详细设计
12.3.6用户手册
12.3.7其他文档
12.4使用trac管理软件开发文档
12.4.1安装trac
12.4.2配置trac基本设置
12.4.3配置trac全局脚本
12.4.4设置trac的Web界面
12.5Bug跟踪系统
12.5.1Bug管理的概念和作用
12.5.2使用Bugzilla跟踪Bug
12.6小结
第3篇Linux系统篇
第13章ARM体系结构及开发实例
13.1ARM体系结构介绍
13.1.1ARM体系结构
13.1.2ARM指令集介绍
13.2编程模型
13.2.1数据类型
13.2.2处理器模式
13.2.3寄存器
13.2.4通用寄存器
13.2.5程序状态寄存器
13.2.6异常处理
13.2.7内存和内存I/O映射
13.3内存管理单元
13.3.1内存管理介绍
13.3.2内存访问顺序
13.3.3地址翻译过程
13.3.4访问权限
13.4常见接口和控制器
13.4.1GPIO接口
13.4.2中断控制器
13.4.3RTC控制器
13.4.4看门狗定时器
13.4.5试验:使用GPIO点亮LED
13.5小结
第14章深入Bootloader
14.1初识Bootloader
14.1.1PC(个人电脑)上的Bootloader
14.1.2什么是嵌入式系统的Bootloader
14.1.3嵌入式系统常见的Bootloader
14.2U-Boot分析
14.2.1获取U-Boot
14.2.2U-Boot工程结构分析
14.2.3U-Boot总体工作流程
14.3U-Boot启动流程分析
14.3.1_start标号
14.3.2reset标号
14.3.3cpu_init_crit标号
14.3.4lowlevel_init标号
14.3.5relocate标号
14.3.6start_armboot()函数
14.3.7main_loop()函数
14.4移植U-Boot到开发板
14.4.1U-Boot移植的一般步骤
14.4.2移植U-Boot到目标开发板
14.4.3移植U-Boot的常见问题
14.5小结
第15章解析Linux内核
15.1基本知识
15.1.1什么是Linux内核
15.1.2Linux内核版本
15.1.3如何获取Linux内核代码
15.1.4编译内核
15.2Linux内核的子系统
15.2.1系统调用接口
15.2.2进程管理子系统
15.2.3内存管理子系统
15.2.4虚拟文件系统
15.2.5网络堆栈
15.2.6设备驱动
15.2.7依赖体系结构的代码
15.3Linux内核代码的工程结构
15.3.1源代码目录布局
15.3.2几个重要的Linux内核文件
15.4内核编译系统
15.4.1内核编译系统基本架构
15.4.2内核顶层Makefile分析
15.4.3内核编译文件分析
15.4.4目标文件清除机制
15.4.5编译辅助程序
15.4.6KBuild变量
15.5小结
第16章嵌入式Linux启动流程
16.1Linux内核初始化流程
16.2PC的初始化流程
16.2.1PCBIOS功能和作用
16.2.2硬盘的数据结构
16.2.3完整的初始化流程
16.3嵌入式系统的初始化
16.4Linux内核初始化
16.4.1解压缩内核映像
16.4.2进入内核代码
16.5启动init内核进程
16.6根文件系统初始化
16.6.1根文件系统介绍
16.6.2挂载虚拟文件系统
16.7内核交出权限
16.8init进程
16.9初始化RAMDisk
16.9.1RAMDisk介绍
16.9.2如何使用RAMDisk
16.9.3实例:使用RAMDisk作为根文件系统
16.10小结
第17章Linux文件系统
17.1Linux文件管理
17.1.1文件和目录的概念
17.1.2文件的结构
17.1.3文件的类型
17.1.4文件系统的目录结构
17.1.5文件和目录的存取权限
17.1.6文件系统管理
17.2Linux文件系统原理
17.2.1非日志文件系统
17.2.2日志文件系统
17.3常见的Linux文件系统
17.3.1ext2文件系统
17.3.2ext3文件系统
17.3.3ReiserFS文件系统
17.3.4JFFS文件系统
17.3.5cramfs文件系统
17.4其他文件系统
17.4.1网络文件系统
17.4.2/proc影子文件系统
17.5小结
第18章建立交叉编译工具链
18.1什么是交叉编译
18.2需要哪些东西
18.3手工创建工具链
18.3.1准备工作——获取源代码
18.3.2开始了——建立工作环境
18.3.3建立Linux内核头文件
18.3.4编译安装binutils
18.3.5编译安装gcc的C编译器
18.3.6编译安装glibc库
18.3.7编译安装gcc的C、C++编译器
18.3.8后的工作
18.4使用脚本创建工具链
18.5更简便的方法——获取已编译好的交叉编译环境
18.6小结
第19章强大的命令系统BusyBox
19.1BusyBox简介
19.1.1简单易懂的BusyBox
19.1.2BusyBox工作原理
19.1.3安装BusyBox
19.2交叉编译BusyBox
19.3使用BusyBox
19.3.1BusyBox初始化
19.3.2目标板BusyBox安装
19.4小结
第20章Linux内核移植
20.1Linux内核移植要点
20.2平台相关代码结构
20.3建立目标平台工程框架
20.3.1加入编译菜单项
嵌入式系统开发与传统的PC程序开发不同。嵌入式系统开发涉及软件和硬件的开发,是一个协同工作的统一体。目前,已经有许多的嵌入式系统硬件和操作系统软件,其中应用广泛的是ARM嵌入式处理器和Linux系统。
目前,市场上嵌入式开发的书籍大多是针对某个特定领域编写的,专业性和针对性较强,不适合初学者学习。基于这个原因笔者编写了本书。本书是获得了大量读者好评的“Linux典藏大系”中的《ARM嵌入式Linux系统开发详解》的第2版。在第1版的基础上,本书进行了全新改版,升级了编程环境,对第1版书中的一些疏漏进行了修订,也对书中的一些实例和代码进行了重新表述,使得更加易读。相信读者可以在本书的引领下跨入嵌入式开发的大门。
关于“Linux典藏大系”
“Linux典藏大系”是清华大学出版社自2010年1月以来陆续推出的一个图书系列,截止2012年,已经出版了10余个品种。该系列图书涵盖了Linux技术的方方面面,可以满足各个层次和各个领域的读者学习Linux技术的需求。该系列图书自出版以来获得了广大读者的好评,已经成为了Linux图书市场上耀眼的明星品牌之一。其销量在同类图书中也名列前茅,其中一些图书还获得了“51CTO读书频道”颁发的“受读者喜爱的原创IT技术图书奖”。该系列图书在出版过程中也得到了国内Linux领域知名的技术社区ChinaUnix(简称CU)的大力支持和帮助,读者在CU社区中就图书的内容与活跃在CU社区中的Linux技术爱好者进行广泛交流,取得了良好的学习效果。
关于本书第2版
本书第1版出版后深受读者好评,并被ChinaUnix技术社区推荐。但是随着技术的发展,本书第1版内容已经无法满足读者的学习需求。应广大读者的要求,我们结合嵌入式技术的发展推出了本书的第2版。相比第1版,第2版图书在内容上的变化主要体现在以下几个方面:
(1)Linux开发环境由Ubuntu8.04升级到12.04。
(2)更新了Cygwin、ADS、GCC等相关软件。
(3)修订了一些专有名词及术语的不一致问题。
(4)删除了部分已经过时的内容,如Ubuntu的网络配置等。
(5)给完整的实例代码增加了行序号,方便读者阅读。
(6)纠正了部分函数讲解错误,并修正了部分代码的类型转化等问题。
(7)将一些表达不准确的地方表述得更加准确。
本书特色
1.循序渐进,由浅入深
为了让初学者快速进入嵌入式系统开发领域,本书一开始对嵌入式系统的软件和硬件做了全面的介绍,让读者对嵌入式系统有一个基本的认识。同时,在书中讲解的知识点都配备了完整的实例,读者可以通过实例学习嵌入式系统开发的相关知识。
2.技术全面,内容充实
作者本人从事嵌入式系统开发多年,深入了解嵌入式系统开发的各个方面,在书中讲解了嵌入式Linux开发的各个要点,包括Linux内核的构成、工作流程、驱动程序开发、文件系统、程序库等知识,使读者全面了解嵌入式Linux开发的各个知识点。
3.实例讲解,理解深刻
嵌入式Linux开发书籍众多,很多书籍偏重理论。本书所有的实例都经过作者验证,并且有详细的操作过程和实验结果。其次,本书的操作实例有完整的实验环境描述,读者可以通过实例加深对知识点的理解。
4.化整为零,深入剖析
嵌入式系统开发涉及知识面广,技术复杂。本书剥茧抽丝,力求找出开发过程中关键的知识点。从关键点入手,通过简单易懂的例子剖析技术原理,帮助读者掌握复杂的技术。
5.详解典型项目案例开发,提高实战水平
本书详细分析了DM9000网卡驱动、NANDFlash设备驱动和USB驱动的实现。通过这三个项目案例,可以提高读者的设备驱动开发水平,从而具备独立进行驱动开发的能力。
6.提供多媒体教学视频和源文件
本书专门提供了9小时多媒体教学视频和实例源文件,便于读者高效、直观地学习。这些学习资料需要读者按照封面的提示自行下载。
本书内容体系
第1篇Linux嵌入式开发基础篇(第1~6章)
本篇主要内容包括嵌入式系统入门、嵌入式软硬件系统、ARM处理器、嵌入式Linux、软件开发环境建立和个Linux应用程序。通过本篇的学习,读者可以掌握Linux嵌入式开发环境的搭建和Linux嵌入式的基础知识。
第2篇Linux嵌入式开发应用篇(第7~12章)
本篇主要内容包括Linux应用程序编程基础、开发多进程/线程程序、网络通信应用、串行口通信编程、嵌入式GUI程序开发和软件项目管理等内容。通过本篇的学习,读者可以掌握Linux嵌入式的核心技术与应用。
第3篇Linux系统篇(第13~21章)
本篇主要内容包括ARM体系结构及开发实例、深入Bootloader、解析Linux内核、嵌入式Linux启动流程、Linux文件系统、建立交叉编译工具链、命令系统BusyBox、Linux内核移植,以及内核和应用程序调试技术。通过本篇的学习,读者可以对Linux系统从内核到文件系统再到启动流程有一个非常清楚的了解。
第4篇Linux嵌入式驱动开发篇(第22~25章)
本篇主要内容包括Linux设备驱动、网络设备驱动程序、Flash设备驱动,以及USB驱动开发等。通过本篇的学习,读者可以掌握Linux嵌入式开发的基本流程及思想。
本书读者对象
*Linux嵌入式开发初学者;
*需要系统学习Linux嵌入式开发的人员;
*Linux嵌入式从业人员;
*Linux嵌入式开发爱好者;
*大中专院校的学生;
*社会培训班的学员。
评论
还没有评论。