《Linux嵌入式实时应用开发实战》[86M]百度网盘|pdf下载|亲测有效
《Linux嵌入式实时应用开发实战》[86M]百度网盘|pdf下载|亲测有效

Linux嵌入式实时应用开发实战 pdf下载

出版社 机械工业出版社京东自营官方旗舰店
出版年 2015-01
页数 390页
装帧 精装
评分 8.6(豆瓣)
8.99¥ 10.99¥

内容简介

本篇主要提供Linux嵌入式实时应用开发实战电子书的pdf版本下载,本电子书下载方式为百度网盘方式,点击以上按钮下单完成后即会通过邮件和网页的方式发货,有问题请联系邮箱ebook666@outlook.com

编辑推荐

  

  《华章 Linux嵌入式实时应用开发实战(原书第3版)》是一本实用、全面、系统的嵌入式Linux入门书籍。
  围绕实时应用逐章分模块,从基本概念、原理、配置到实战案例全面解构嵌入式Linux。
  以ARM单板机为平台,涵盖Linux基础、交叉编译、Linux组件和工具三大部分内容。
  本书不拘泥于形式,立足实战,为读者提供详细的操作指南。


  

内容简介

  一直以来,嵌入式Linux领域都没有一本系统且全面的入门书籍。大多数单片机和STM32开发者在掌握了MCU的开发技术之后,要再通过学习μC/OS这样的嵌入式实时操作系统,才能过渡到Linux操作系统的学习。这其中很重要的一个原因是没有一本专门针对嵌入式工程师的Linux入门书籍。《Linux嵌入式实时应用开发实战(原书第3版)》没有从复杂的PC级操作系统的角度为读者讲解Linux,而是从实时应用的角度向读者讲解Linux的基本概念和原理,并辅以配置、操作和实战案例,这些都是作者的第一手经验。《华章 Linux嵌入式实时应用开发实战(原书第3版)》是嵌入式工程师学习Linux的入门读物。

作者简介

  Doug Abbott ,是一位在嵌入式领域拥有30多年经验的顾问,他在面向工业和科研领域的数据采集产品方面拥有非常丰富的软硬件开发经验。Doug在加州大学伯克利分校讲授PC技术和实时编程课程,是一位颇受学生爱戴的导师,由他发起和组织的研讨在学校非常受欢迎。有数百位资深工程师接受过他的实时编程技术和多任务操作系统培训。
  
  周艳,硕士毕业于中国科学院声学研究所,曾供职于中国电子科技集团某研究所,从事嵌入式实时系统开发工作。研究方向为传感器和通信领域的实时数据采集与控制,对嵌入式系统的系统架构与软硬件开发等都有丰富的实战经验,负责过多个项目的实时信号处理系统开发,有五年的相关经验。

内页插图

目录

译者序
前言
第一部分 入门指导
第1章 嵌入式和实时空间
1.1 什么是嵌入式
1.2 什么是实时
1.3 为什么Linux适用
1.3.1 开源
1.3.2 移植和定制
1.4 哪里用嵌入式Linux
1.5 开源协议
1.6 资源
第2章 安装Linux
2.1 发行版
2.1.1 Debian GNU
2.1.2 Fedora
2.1.3 Red Hat企业版Linux
2.1.4 SUSE
2.1.5 Ubuntu
2.2 硬件需求
2.3 安装方案
2.3.1 单机版
2.3.2 双启动
2.3.3 虚拟化
2.4 DVD 还是激活CD
2.5 安装过程
2.5.1 磁盘分区
2.5.2 包的选择
2.6 资源
第3章 Linux入门
3.1 运行Linux——KDE
3.1.1 文件管理器
3.1.2 shell 窗口
3.2 Linux属性
3.3 保护模式架构
3.3.1 实模式
3.3.2 保护模式
3.3.3 平面与分段的存储器模型
3.3.4 分页
3.4 Linux进程模型
3.4.1 fork()函数
3.4.2 execve()函数
3.5 Linux文件系统
3.5.1 文件权限
3.5.2 “根”用户
3.5.3 /proc文件系统
3.5.4 文件系统等级标准
3.5.5 挂载文件系统
3.6 系统配置
3.7 shell
3.8 获得帮助
3.9 资源
第4章 主机开发环境
4.1 交叉开发工具——GNU工具链
4.1.1 GCC
4.1.2 make
4.1.3 GDB
4.2 安装软件
4.2.1 DVD上有什么
4.2.2 安装交叉工具链
4.2.3 安装根文件系统
4.3 终端仿真器minicom
4.4 网络
4.4.1 网络地址
4.4.2 无线怎么样
4.4.3 网络文件系统
4.4.4 普通文件传输协议
4.5 资源
第5章 硬件
5.1 嵌入式硬件
5.2 ARM单板计算机
5.3 其他的板怎么样
5.3.1  BeagleBoard
5.3.2 Gumstix
5.3.3 Raspberry Pi
5.4 设置Mini2440
5.5 Flash存储器和文件系统
5.5.1 Flash存储器——NAND和NOR
5.5.2 Flash中的根文件系统
5.6 板的准备工作
5.6.1 例程
5.6.2 factory_images
5.6.3 脚本文件
5.6.4 过程
5.6.5 最后几步
5.6.6 哪里会出错
5.7 boot loader
5.8 资源
第6章 Eclipse 集成开发环境
6.1 概述
6.1.1 插件
6.1.2 工作台
6.2 安装
6.3 使用Eclipse
6.4 C开发环境——CDT
6.4.1 创建一个新工程
6.4.2 给工程添加源代码
6.4.3 编程助手
6.4.4 代码模板
6.4.5 自动补齐
6.5 程序
6.6 生成工程
6.7 使用CDT调试
6.7.1 调试视图
6.7.2 变量视图
6.7.3 断点视图
6.7.4 存储器视图
6.8 完成调试
6.9 总结
6.10 资源

第二部分 交叉开发环境中的应用编程
第7章 从用户空间访问硬件
7.1 回顾
7.2 ARM I
7.3 我们的第一个程序——从Linux访问I/O/
7.3.1 创建一个工程
7.3.2 目标执行环境
7.4 led 程序
7.5 一个数据采集的例子
7.6 资源
第8章 调试嵌入式软件
8.1 使用Eclipse进行远程调试
8.2 thermostat
8.3 主机工作站作为调试环境
8.4 调试器服务框架(DSF)
8.4.1 安装SSH
8.4.2 为根添加一个口令
8.4.3 配置RSE
8.4.4 使用RSE调试
8.5 资源
第9章 Posix 线程
9.1 线程
9.2 同步——互斥量
9.2.1 互斥量属性
9.2.2 解决资源共享问题而引入的问题——优先级倒置
9.3 通信——条件变量
9.4 线程终止和取消
9.5 Pthread实现
9.6 更新thermostat
9.6.1 Linux设备驱动
9.6.2 底层I
9.6.3 thermostat.c中需要的改变
9.7 调试多线程程序
9.8 资源
第10章 嵌入式网络
10.1 Sockets
10.1.1 服务器进程
10.1.2 客户进程
10.1.3 socket 属性
10.2 一个简单的例子
10.2.1 服务器
10.2.2 客户
10.3 远程thermostat
10.4 嵌入式网络服务器
10.4.1 HTTP的背景
10.4.2 使用了网络的thermostat
10.4.3 动态网络内容
10.4.4 表单和POST方法
10.4.5 生成和尝试
10.5 一个“真正的”网络服务——boa
10.6 嵌入式E-mail
10.7 其他应用级协议
10.8 资源
第11章 配置和生成内核
11.1 开始
11.1.1 内核版本编号
11.1.2 内核源树
11.2 内核makefile
11.3 修补内核
11.4 配置内核——make config、menuconfig、xconfig
11.4.1 xconfig 选项
11.4.2 .config 文件
11.5 表象背后——真正发生了什么
11.6 生成内核
11.7 引导新内核
11.8 资源
第12章 内核模块和设备驱动
12.1 内核模块
12.1.1 一个模块的例子
12.1.2 破坏内核
12.1.3 内核模块和GPL
12.1.4 生成内核模块
12.1.5 模块的作用
12.2 什么是设备驱动
12.3 Linux设备驱动
12.3.1 /dev目录
12.3.2 底层用户空间I/O API
12.3.3 内部驱动结构
12.3.4 驱动数据结构
12.3.5 init()和exit()
12.3.6 open()和release()
12.3.7 read()和write()
12.3.8 生成和运行驱动
12.4 调试内核代码
12.4.1 printk
12.4.2 /proc 文件
12.5 处理中断
12.5.1 注册中断handler
12.5.2 探测中断
12.5.3 延迟处理——“bottom half”
12.6 将你的驱动生成至内核
12.7 资源
第三部分 组件和工具
第13章 BusyBox和Linux初始化
13.1 BusyBox简介
13.2 配置和安装BusyBox
13.2.1 BusyBox设置
13.2.2 小程序
13.2.3 生成和安装
13.3 使用BusyBox
13.4 thermostat 显示示例
13.4.1 ANSI终端Escape 序列
13.4.2 thermostat 显示
13.4.3 ncurses库
13.5 用户空间初始化
13.5.1 第一步boot loader
13.5.2 u-boot
13.5.3 Linux内核
13.5.4 init进程
13.6 资源
第14章 u-boot boot loader和准备发布
14.1 u-boot
14.1.1 背景
14.1.2 安装和配置u-boot
14.1.3 测试一个新的u-boot
14.1.4 通过JTAG重新编程NOR
14.2 创建一个flash文件系统
14.2.1 关于flash分区的更多考虑
14.2.2 扁平设备树
14.3 资源
第15章 源代码控制——git
15.1 背景
15.2 git介绍
15.2.1 文件状态和生命周期
15.2.2 分支和合并
15.3 配置git
15.4 图形化git
15.5 资源
第16章 build工具
16.1 Buildroot
16.2 开源嵌入式
16.2.1 开始
16.2.2 个人观点
16.3 安卓
16.3.1 应用开发
16.3.2 平台开发
16.4 总结
16.5 资源
附录A u-boot命令
附录B 为什么软件不应该有版权

前言/序言

  二十年前的今天,佩铂军士在教乐队表演。
  ——约翰?列侬,佩铂军士的孤独之心俱乐部乐队
  新闻组:comp.os.minix
  主题:你最想在minix中看到什么?
  摘要:关于我的新操作系统的一个小调查
  时间:格林尼治时间1991年8月25日20∶57∶08
  组织:赫尔辛基大学
  使用minix的朋友们,大家好!
  我正在为386(486)AT系列编写一个(免费的)操作系统(这仅仅是业余爱好,不会太大,也不会像GNU那样专业)。我从4月份开始酝酿,现在快准备好了。我希望得到任何关于minix的反馈,包括你们在使用过程中喜欢和不喜欢的地方。因为我的操作系统和它多少有点类似(比如文件系统具有相同的物理布局(出于实用的原因))。
  我目前已经移植了bash(1.08)和gcc(1.40),而且进展好像很顺利。这意味着我将在未来几个月内把这个系统推向应用,所以我想知道大多数人希望系统具有什么特性。欢迎任何建议,但是我不能保证都能实现∶-)
  补充一下,任何minix代码都是免费的,而且具有多线程的文件系统。
  它不是便携的(如使用386任务切换等),很可能永远不能支持除了AT硬盘以外的东西,这就是我目前能达到的状态∶-(
  在当时刚出现的只能处理文字的互联网上,Linus Torvalds,一个芬兰的大学生,用这则信息开启了一场革命。当我在2011年年末写下这些文字时,Linux已经庆祝了它的20周年纪念日。我怀疑,Linus当时并没有想到他的“爱好”项目会很快变成一个功能强大的32位和后来的64位操作系统,甚至可以与微软有力地竞争。
  毫无疑问,20年来,Linux走过了很长的一段路。1991年9月17日首次发布的0.01版本包含88个文件,总共278KB。最新发布的Linux版本包括近40 000个文件,超过400MB。据说,全球几千个程序员都不同程度地参与到了Linux的开发中。
  自2006年本书的第2版出版以来,Linux世界又发生了很多变化,这也是本书再版的一个直接原因。Linux内核持续改进,为了庆祝20周年,最近提高到了3.0版。2007年年底,谷歌引入了安卓系统。据统计,截至2011年8月,安卓占有智能手机市场48%的份额,每天有500 000台设备被激活。
  在本书第1版的前言中我就承认,我没有真正喜欢过UNIX,因为它有意设计得晦涩而且很难使用。一开始,Linux在这方面几乎没做任何改变,我也仍然坚持这种几分喜爱几分讨厌的态度。
  但是,当Linux逐渐开始为桌面处理世界的黄金时代做好准备时,它在我工作的嵌入式领域和网络服务器方面都取得了显著的成就。2007年,LinuxDevices.com报道了Linux正用于近50%的嵌入式项目,到2012年将有超过70%的相关发布产品。甚至微软公司也承认全球有60%的网络服务器运行Linux操作系统,与此同时只有40%运行Windows。
  Linux确实很复杂,除非你已经是一个UNIX高手,学习起来才会很快。相关信息就在网上,但是通常它们既不易找到也不易读懂。市场上有数百本已出版的Linux书籍,覆盖了从初学者指南到内核内部工作原理的各个方面。目前为止甚至有不少书讨论过嵌入式和实时应用领域的Linux。
  我决定学习Linux,一部分是因为我看到了这个新兴的市场机会,另一部分是因为这种开源的开发模式激励了我。仅仅是出于对它的兴趣,全世界程序员的创意都对这个高度成熟的操作系统做出了贡献。拥有完整的源代码不仅允许你随自己意愿进行改动,也让你(至少在理论上)能理解代码是怎么工作的。
  开源有潜力成为社会商业模式转换方面的一个重要范例,因为它表明在解决问题方面,合作可以和竞争同样有效。而且就在我怀疑是否有人能通过Linux得到惊人的财富时,许多公司已经证明针对Linux建立一个赚钱的商业模式是可能的。
  读者和阅读准备
  我写本书的目的是写一本在我初学Linux时渴望拥有的书。因此,基于这样的想法,本书是直接面向两种不同读者的:
  1)主要读者是嵌入式程序员,他们需要得到在嵌入式领域的Linux指导。这也是我初学Linux时的状况和我开始学习Linux的原因,因此,这似乎是架构本书的一个合理方法。
  2)另一类读者是Linux程序员,他们需要得到嵌入式和实时编程概念的指导。
  因此,尽管本书采用了一个新的角度,但每类读者都很可能看到一些熟悉的内容。
  本书不是初学者指南。我假设你已经成功安装了一个Linux系统而且已经使用过一些功能。你知道怎么登录,已经试验过一些命令实用程序,而且可能已运行了一个GUI桌面。尽管如此,第2章也会介绍安装的整个过程,第3章是嵌入式和实时程序员感兴趣的Linux的一些特点和属性的简要介绍。
  本书分为三部分。第一部分主要是介绍性的,为第二部分打基础;第二部分讨论在交叉开发环境中的编程应用;第三部分是前面介绍过的一些组件和工具的细节性描述,也是对Linux的实时性能的考量。
  这里并没有说你不能通过读一本书去学习编程,你必须要这样做。这也是为什么本书设计为实用指导手册的原因。你将要在Linux工作站上安装许多软件包,你可以在本书英文版的网站上找到范例代码。
  嵌入式编程通常意味着目标机器是独立的且与工作站开发机器不同。本书中,我们主要的目标环境是一个基于ARM的单板计算机,该硬件将在第5章中介绍。这是一款应用广泛且相对便宜的器件,它具有嵌入式实时产品需要的常规处理能力。但是即使你不购买电路板,我们也会介绍一种仿真方法,让你具有玩转工作站的一些基本概念。
  个人建议
  和大多数的计算机使用者一样,不管怎样,我多年来一直使用Windows,而且说实话,现在我仍然在日常的计算处理中使用Windows。但是同样,在那之前,我已经很熟练地使用DOS了,甚至在此之前,我已在使用RT-11、RSX-11和VMS。所以我并不是不懂命令行编程,事实上,在Windows 95时代以前,在我最终把WIN加入AUTOEXEC.BAT文件以前也已经用了好几年。
  尽管如此,硬核UNIX程序员仍然认为GUI是为外行人设计的。他们很自豪地用命令行完成任何工作。但是不管你怎么做,我是喜欢GUI的。的确,命令行仍然有其地位,尤其是对shell脚本和makefile来说。但是对于在文件层次间切换和完成简单的文件操作,如移动、复制、删除、重命名等,简单的拖放操作完胜晦涩的UNIX shell命令行。我也拒绝使用基于文本的编辑器,如vi和emacs,不过我最近也开始接受vim。如果你能记住所有难懂的命令行,它们的确功能强大。但是无论如何,我喜欢所见即所得的编辑器。
  我喜欢的GUI是KDE桌面环境。它包含所有必要的提示,包括很好的彩色语法编辑器,更不用说完整的办公包和个人高效工具包了。KDE是“K Desktop Environment”的缩写,它包含在最商业化的Linux发行版中。当然,你可以自由使用任何你觉得最习惯的开发环境来试验本书中的例程。但如果你是Linux新手,建议使用KDE,这也是本书所有示例的工作环境。
  本书结构
  本书由以下三个主要部分组成。
  第一部分——第1~6章。这部分是入门介绍和使用指南。如果你还没有Linux,你将需要安装一个。对于不熟悉UNIX/Linux系统的读者来说,这是对Linux本身的介绍。你需要设置和连接目标板,这在第二部分研究交叉平台应用开发的时候会用到。最后,你将安装并熟悉各种交叉开发工具,包括Eclipse,它是一个开源集成开发环境。
  第二部分——第7~12章。探讨交叉平台环境的应用编程。我们将着眼于从用户空间、调试技术和初步调试的高级仿真方面介绍硬件,介绍Posix线程、网络编程和安卓,以及内核级的编程和设备驱动。
  第三部分——介绍嵌入式Linux程序员工具包中的各种组件和工具。我们将介绍其中的u-boot boot loader、BusyBox、Buildroot和OpenEmbedded,最后将集中探讨Linux在实时性方面的优化处理。
  好了,那就让我们开始吧。和我一起坐上充满了紧张和兴奋,有时很颠簸,但终将得到快乐和回报的过山车,进入激动人心的嵌入式Linux世界吧。