嵌入式Linux系统开发及应用教程pdf下载pdf下载

嵌入式Linux系统开发及应用教程百度网盘pdf下载

作者:
简介:本篇主要提供嵌入式Linux系统开发及应用教程pdf下载
出版社:清华大学出版社
出版时间:2017-09
pdf下载价格:0.00¥

免费下载


书籍下载


内容介绍

编辑推荐

本书着重讲解嵌入式Linux系统的设计与实现,注重理论和实验的结合。
本书配套学习资源丰富,包括:课件、学习建议、源代码和教学网站。

内容简介

本书详细介绍嵌入式系统开发过程中的主要技术问题,着重讲解嵌入式Linux系统的设计与实现,注重理论和实验的结合。全书分为13章,内容包括绪论、Linux基础知识、Linux编程环境、Linux外壳程序编程、构建嵌入式Linux开发平台、ARM调试环境、嵌入式Bootloader技术、Linux内核配置、ARMLinux内核分析和移植、嵌入式文件系统、嵌入式Linux多线程编程、嵌入式Web服务器设计、嵌入式Linux的GUI等内容。
本书通俗易懂,图文并茂,注重理解与实例,大部分章节配有实例和源程序,可操作性强。本书可作为计算机学科、电子信息类相关专业本科生、研究生及工程硕士的“嵌入式系统”课程的教材,也可供相关研究人员、工程技术人员阅读参考。

作者简介

金伟正,武汉大学电子信息学院副教授,硕士生导师。全国安全防范报警系统标准化技术委员会TC100通信会员,广东省安防协会高级会员。有着丰富的教学经验,出版过教材和专著多部,写作经验丰富。

目录

第1章绪论
1.1嵌入式系统概述
1.1.1嵌入式系统的历史
1.1.2嵌入式系统的特点
1.1.3嵌入式处理器
1.1.4嵌入式系统的发展趋势
1.2嵌入式系统开发
1.2.1需求分析及概要设计
1.2.2嵌入式系统中的硬件及软件
1.2.3嵌入式系统开发的一般过程
1.3嵌入式操作系统
1.3.1嵌入式操作系统的分类
1.3.2嵌入式操作系统的特点
1.3.3典型的嵌入式操作系统
1.3.4嵌入式操作系统的选择
1.4本章小结
1.5思考题
第2章Linux基础知识
2.1认识Linux操作系统
2.1.1Linux简明历史
2.1.2Linux系统的特点和组成
2.1.3Linux的开发过程
2.2基本操作命令
2.2.1字符界面简介
2.2.2常用命令简介
2.3Linux文件与目录系统
2.3.1Linux文件系统类型介绍
2.3.2Linux目录系统
2.4shell简介
2.5网络服务简介
2.5.1Linux支持的网络协议
2.5.2Linux的网络服务
2.6本章小结
2.7思考题
第3章Linux编程环境
3.1Linux编程环境介绍
3.1.1开发工具环境
3.1.2基于文本模式的开发平台
3.1.3集成开发平台Eclipse+CDT
3.1.4文档帮助环境
3.2常用编辑器
3.2.1VIM编辑器
3.2.2Emacs编辑器
3.3gcc编译器的使用
3.3.1gcc的主要选项
3.3.2GNU C扩展简介
3.4GNU make管理项目
3.4.1make简介
3.4.2编写Makefile文件的规则
3.5GDB调试
3.5.1GDB命令介绍
3.5.2GDB调试例程
3.5.3基于GDB的图形界面调试工具
3.6本章小结
3.7思考题
第4章Linux外壳程序编程
4.1创建和运行外壳程序
4.1.1创建外壳程序
4.1.2运行外壳程序
4.2使用外壳变量
4.2.1给变量赋值
4.2.2读取变量的值
4.2.3位置变量和其他系统变量
4.2.4引号的作用
4.3数值运算命令
4.4条件表达式
4.4.1if表达式
4.4.2case表达式
4.5循环语句
4.5.1for语句
4.5.2while语句
4.5.3until语句
4.5.4repeat语句
4.6shift命令
4.7select语句
4.8函数
4.9shell应用举例
4.10本章小结
4.11思考题
第5章构建嵌入式Linux开发平台
5.1GNU跨平台开发工具链
5.1.1基础知识
5.1.2GNU跨平台开发工具链的建立过程
5.2嵌入式Linux内核
5.3嵌入式Linux根文件系统
5.4Bootloader简介
5.5本章小结
5.6思考题
第6章ARM调试环境
6.1ARM调试工具简介
6.1.1JTAG仿真器
6.1.2MultiICE Server
6.2ADS软件调试工具
6.2.1使用Metrowork CodeWarrior for ARM Developer Suite
6.2.2使用RealView Debugger
6.2.3使用AXD Debugger
6.3本章小结
6.4思考题
第7章嵌入式Bootloader技术
7.1Bootloader的基本概念
7.1.1Bootloader的安装点和启动过程
7.1.2Bootloader的模式
7.1.3Bootloader与主机之间的通信方式
7.2Bootloader典型结构框架
7.2.1Bootloader总体流程
7.2.2Bootloader的stage1
7.2.3Bootloader的stage2
7.3典型Bootloader分析和移植
7.3.1Blob
7.3.2UBoot
7.4其他Bootloader简介
7.4.1Redboot
7.4.2ARMBoot
7.4.3PPCBoot
7.5本章小结
7.6思考题
第8章Linux内核配置
8.1内核概述
8.2嵌入式Linux内核代码结构
8.3内核开发的特点
8.3.1没有libc库
8.3.2GNU C
8.3.3没有内存保护机制
8.3.4不要轻易在内核中使用浮点数
8.3.5容积小而固定的栈
8.3.6同步和并发
8.3.7可移植性的重要性
8.4嵌入式Linux内核的配置
8.4.1Makefile
8.4.2配置文件
8.4.3Linux内核配置选项
8.5配置举例
8.6本章小结
8.7思考题
第9章ARMLinux内核分析和移植
9.1ARM微处理器
9.1.1RISC体系结构
9.1.2ARM微处理器的类型
9.1.3ARM微处理器的寄存器结构
9.1.4ARM微处理器的指令结构
9.2ARMLinux内存管理
9.2.1内存管理单元(MMU)
9.2.2ARMLinux的存储管理机制
9.2.3ARMLinux存储机制的建立
9.2.4ARMLinux对进程虚拟空间的管理
9.3ARMLinux进程管理与调度
9.3.1task_struct数据结构
9.3.2Linux进程的创建、执行和消亡
9.3.3ARM_Linux的进程调度
9.4ARMLinux中断与中断处理
9.4.1Linux处理中断概述
9.4.2ARM体系程序的执行流程
9.4.3ARM处理器对异常中断的响应及返回过程
9.5Linux驱动程序简介
9.5.1设备的分类
9.5.2设备号
9.5.3设备节点
9.5.4用户空间和内核空间
9.6Linux模块化机制
9.6.1Linux的模块化
9.6.2模块的载入
9.6.3模块的卸载
9.7ARMLinux系统启动与初始化
9.7.1内核数据结构的初始化
9.7.2外设初始化
9.7.3init进程和linittab文件
9.7.4rc启动脚本
9.7.5shell的启动
9.8ARMLinux内核裁减
9.9ARMLinux移植
9.9.1移植准备
9.9.2移植步骤
9.9.3配置内核选项
9.9.4修改Kernel文件系统部分代码
9.10本章小结
9.11思考题
第10章嵌入式文件系统
10.1Linux文件系统结构与特征
10.1.1Linux文件系统概述
10.1.2Linux文件系统布局
10.1.3Linux支持的文件系统
10.2嵌入式文件系统简介
10.2.1NOR Flash与NAND Flash介绍
10.2.2MTD介绍
10.2.3cramfs文件系统简介
10.2.4romfs文件系统简介
10.2.5JFFS文件系统简介
10.2.6YAFFS文件系统简介
10.3构建根文件系统
10.4根文件系统设置
10.5BusyBox
10.5.1BusyBox简介
10.5.2使用BusyBox构建根文件系统
10.6嵌入式文件系统的设计
10.6.1文件系统格式的选型的基本策略
10.6.2混合型文件系统的设计
10.7本章小结
10.8思考题

精彩书摘

第5章
CHAPTER 5
构建嵌入式Linux开发平台
本章主要内容
 GNU跨平台开发工具链
 嵌入式Linux内核及根文件系统
 Bootloader简介
 本章小结
5.1GNU跨平台开发工具链
5.1.1基础知识
GCC的不断发展完善使许多商业编译器相形见绌,GCC由GNU创始人Richard Stallman首创,是GNU的标志产品。由于UNIX平台的高度可移植性,GCC几乎在各种常见的UNIX平台上都有,即使是Win32/DOS也有GCC的移植。GNU软件包括C编译器gcc、C++编译器g++、汇编器as、链接器ld、压缩及解压文件工具ar、二进制转换工具(OBJCOPY,OBJDUMP)、调试工具(GDB,GDBSERVER,KGDB)和基于不同硬件平台的开发库,这些均称为工具链。第1章详细介绍了嵌入式开发的Host/Target模式,主机对即将在目标机上运行的应用代码进行编译,生成可以在目标机上运行的代码格式,然后移植到目标机上运行,都要用到跨平台开发工具链。
在GNU GCC支持下,用户可以使用流行的C/C++语言开发应用程序,满足生成高效率运行代码、易掌握的编程语言的用户需求。这些工具都是按GPL版权声明发布,任何人可以从网上获取全部的源代码,无须支付任何费用。关于GNU和公共许可证协议的详细资料,可参看GNU网站的中文介绍。本章以在Linux系统上针对目标主机arm为例,详细介绍建立跨平台开发工具链的方法。
5.1.2GNU跨平台开发工具链的建立过程
主机系统可以使用Red Hat、Ubuntu、Cywin或虚拟机等,以下详细介绍在Redhat Linux 9.0环境下,建立基于ARM+Linux的嵌入式跨平台开发工具链的过程。
1. 选定软件版本
我们需要选用适当的版本,找到适合主机和目标板的组合。选择之前,可以查阅已成功应用的组合,例如到网上的论坛中查找,也可以自己测试可用的版本组合。一开始使用每个套件最新的稳定版本,如果无法建立,再依次换成较旧的版本。当发现一个可以编译成功的新版本组合时,务必测试其产生的工具链是否可以使用。有些版本的组合或许可以编译成功,但是使用时仍会失败。我们选用的宿主机为Redhat Linux9.0,目标机为arm,选择的版本以及下载地址如下:
(1) binutils.2.112.tar.gz,包含有ld、ar、as等一些产生或处理二进制文件的工具。它的
下载地址为:
ftp://ftp.gnu.org/gnu/binutils/binutils211.2.tar.gz
(2) gcccore2.95.3.tar.gz,包含gcc的主体部分。它的下载地址为:
ftp://ftp.gnu.org/gnu/gcc/gcc2.95.3/gcccore2.95.3.tar.gz
(3) gccg++2.95.3.tar.gz,该版本可以使gcc编译C++程序。它的下载地址为:
ftp://ftp.gnu.org/gnu/gcc/gcc2.95.3/gccg++2.95.3.tar.gz
(4) glibc2.2.4.tar.gz,libc是很多用户层应用都要用到的库,即C链接库。它的下载地址为:
ftp://ftp.gnu.org/gnu/glibc/glibc2.2.4.tar.gz
(5) glibclinuxthreads2.2.4.tar.gz,该libc用于支持POSIX线程单独发布的压缩包。它的下载地址为:
ftp://ftp.gnu.org/gnu/glibc/glibclinuxthreads2.2.4.tar.gz
(6) linux2.4.21.tar.gz+rmkl,Linux的内核及其支持ARM的补丁包。它的下载地址为:
ftp://ftp.kernel.org/pub/linux/kernel/v2.4/linux2.4.21.tar.gz
ftp://ftp.arm.linux.org.uk/pub/linux/arm/kernel/v2.4/patch2.4.21rmk1.gz
2. 建立工作目录
$ cd /home/work进入工作目录。
$ pwd查看当前目录,此时将显示为: /home/work
$mkdirembeddedsystem创建工具链文件夹。
$ls查看/home/work建立的所有文件,此时将显示为: embeddedsystem
现在已经建立了顶层文件夹embeddedsystem,下面在此文件夹下建立如下几个目录:
setupdir存放下载的压缩包。
srcdir存放binutils、gcc、glibc解压之后的源文件。
kernel存放内核文件,对内核的配置和编译工作也在此完成。
builddir编译srcdir下面的源文件,一般源文件目录与编译目录分离。
toolchain交叉编译工具链的安装位置。
Program存放编写程序。
doc说明文档和脚本文件。
下面建立目录,并且下载源文件。
……

前言/序言

嵌入式系统正在重新塑造人们的认知、生活、工作和娱乐方式。随着物联网及国内外嵌入式产品进一步开发和推广,嵌入式系统已经渗透到科学研究、工程设计、军事技术、商业文化艺术及人们日常生活中的方方面面。围绕着嵌入式系统构建的智能手机、人工智能、AR/VR、无人机、智能穿戴设备、汽车自动驾驶和智能家居系统等,极大地便利和丰富了人们的生活。由于嵌入式系统的研究和开发是一个理论性、实践性非常强的工作,因此开发嵌入式系统需要高素质的研发人员。它不但要求研发人员熟悉嵌入式处理器的硬件结构,还要求更多地掌握嵌入式系统开发的各个环节,如Bootloader、内核、驱动、网络和文件系统等,同时还必须具备所属行业的相关知识和丰富的实践经验。
嵌入式Linux操作系统遵循GNU的GPL条款,具有源代码开放、代码工整、工作稳定、内核结构清晰、移植方便、系统内核小、执行效率高和网络功能强大等特点,从而成为嵌入式市场的领先者。
本书大部分内容曾作为武汉大学电子信息学院研究生“嵌入式原理与应用”课程的讲义连续使用多届,取得良好的教学效果。编者总结了多年的科研经验和案例,力求从基本概念、基本原理、基本方法和基本应用出发,使读者能扎实、系统地掌握嵌入式Linux系统开发的方法和技能。
全书分为13章: 第1章绪论; 第2章为Linux操作系统入门基础; 第3章介绍Linux系统环境下的程序设计基础; 第4章学习Linux外壳程序的编程方法; 第5章介绍如何构建嵌入式Linux开发平台; 第6章对ARM调试工具、编译环境进行介绍; 第7章对嵌入式Bootloader技术进行详细的分析; 第8章详细讲述Linux内核配置方法; 第9章以嵌入式操作系统ARMLinux为例,对其内核进行详细的剖析,其原理也适用其他架构的处理器; 第10章对嵌入式文件系统进行综合描述和具体分析; 第11章介绍嵌入式Linux多线程编程方法; 第12章就构建嵌入式Web服务器使用的相关技术进行了详细的分析; 第13章详细介绍嵌入式图形用户界面的原理和设计方法。
本书特点
 图文并茂,注重整体内容框架的讲解,培养学生的大局观。例如,第1章用多幅图片描述嵌入式Linux系统开发的整体框架及开发流程,便于读者快速入门; 第8章用一张框图描述整个Linux内核代码树的结构,便于理解与记忆。
 通俗易懂,注重理解与实例。大部分章节配有实例和源代码,引导读者逐步熟悉各种开发工具和环境,使读者建立感性认识,为进一步深入学习打下良好的基础,可操作性极强。
 代码规范细致,内容深入,起点较高。在实例源代码中,进行了非常详细的注释,可以引导读者理解和掌握编写程序的关键过程。在注重基础和实践的同时,注重知识的扩充,如本书对线程、网络编程及图形用户界面编程做了深入的讲解,使读者对嵌入式Linux系统的开发水平有本质的提高。
 每章都给出了主要内容、本章小结以及思考题,有利于提升读者的自学效果。
作者分工与致谢
本书由金伟正编著,徐颖、金诗怡参与了部分翻译和编辑工作,他们的工作对本书的定稿起了很大的作用。本书参考了Embedded Linux Primer: A Practical, RealWorld Approach、Linux Kernel Development 3rd Edition等书籍,有些内容取材于国内外最新的教材和技术资料,详见参考文献,有兴趣的读者可以进一步查阅。在此,谨向多位原作者表达诚挚的敬意和真诚的感谢。本书的部分资料来自网络,无法一一列举,在此一并感谢。同时,特别感谢武汉大学电子信息学院对本书给予的大力支持。
联系作者
由于编写时间仓促,编著者的水平有限,书中难免存在不妥或错误之处,如果您对本书有任何意见或建议,或对本书中的内容或章节有兴趣,不妨发电子邮件告诉我们(电子邮箱jwz@whu.edu.cn),您提出的问题和建议是编著者前进的动力。
金伟正2017年3月于武汉大学