章节介绍

第一章,“导引”,简要介绍了Linux被迅速应用在嵌入式环境的驱动因素,介绍了与嵌入式Linux相关的几个重要的标准和组织。

第二章,“第一个嵌入式经历”,介绍了与后几章所构建的嵌入式Linux相关的许多概念。

第三章,“处理器基础”,我们提出一个着眼于更流行的用来搭建嵌入式Linux系统的处理器和平台。我们检查并选择了很多主要处理器生产厂商产品。所有这些产品的架构都与现在的处理器很相似。

第四章,“Linux内核:一个不同的观点”从一个微差异的观点检查Linux内核。我们不关注内核理论和内部,我们着眼于它的结构,设计以及构建重点,学习你认为重要的内容,这其中包括内核构建系统的细节。

第五章,“内核初始化”,详细描述Linux处理器初始化处理过程。你将学习到体系结构和独特的bootloader(引导装载程序)镜像组成是如何与下载到Flash并且通过嵌入式bootloader启动的内核本身的镜像是相连接的。本章学习到的知识将帮助你为你的嵌入式设备定制嵌入式内核。

第六章,“系统初始化”,继续详细描述初始化过程的检查。当嵌入式内核已经完成了它自己的初始化,应用程序继续以预定的方式初始化。学习完本章,你已经学会了定制你自己的用户区启动序列的知识。

第七章,“Bootloaders”,作为一个在嵌入式Linux系统中引导装载程序的角色。我们查看流行的开放源码U-Boo并且提出了一个移植的例子。我们简单介绍现在使用的其它的Bootloader,让你能够为你的特殊装备提供一个合理的选择。

第八章,“设备驱动基础”,介绍了Linux设备驱动模型并且提供了强大的后台启动设备驱动。在本章的最后列出了额外阅读的建议。

第九章,“文件系统”,列举了目前嵌入式系统中使用的一些流行的文件系统,包括闪存设备上通常用的JFFS2文件系统。这一章还简要介绍了如何创建自己的文件系统映像,这也是嵌入式Linux开发人员所面临的一项艰巨任务。

第十章,“MTD子系统”,介绍了MTD(内存技术设备)子系统。MTD是Linux文件系统和硬件内存设备(尤其是闪存)之间一种非常有效的抽象层。

第十一章,“BusyBox”,介绍了BusyBox,它是我们构建小型嵌入式系统最常用的工具。这一章讲述如何根据特定需求对BusyBox进行配置和构建,随后介绍了仅使用BusyBox环境完成系统初始化的全过程。附录C列举了最新版本BusyBox的命令。

第十二章,“嵌入式开发环境”,详细介绍了典型交叉开发环境的特殊需求。这一章所介绍的一些技术能有效地提高嵌入式开发人员的工作效率,例如强大的NFS根目录挂载开发配置。

第十三章,“开发工具”,检查了许多有用的开发工具,介绍了gdb调试技术,包括内核转储分析的内容。这一章里面许多工具被提出来并且做出介绍,甚至于举出了一些例子,比如strace,ltrace,top,ps以及内存分析器mtrace,dmalloc。本章最后总结了二进制程序的说明,包括强大的readelf的效率。

第十四章,“内核调试技术”,提供一个详细的调试Linux内核的技术的检查。我们介绍内核调试器KGDB的使用,提供许多gdb调试器和KGDB调试器的组合使用技术。同样包括一份使用硬件JTAG调试器的使用说明,以及一些当你内核无法启动时分析失败原因的技巧。

第十五章,“调试嵌入式Linux应用程序”,将调试内容从内核转移到应用程序。我们继续建立基于先前两章的gdb例子,并且我们提供了多线程和多进程的调试技术。

第十六章,“移植Linux”,介绍你自定义的Linux的移植问题。我们跑一个简单的例子,强调在自定义的PowerPC上生产一个工作的Linux内核的步骤。介绍几个重要的概念已经让许多Linux内核移植新手步入陷阱。连同在十三章十四章提出的的技术,在你读完这一章之后,你应该准备好处理你自己定制板端口的准备了。

第十七章,“Linux和实时”,提供一个或多个用于嵌入式Linux的令人激动的开发环境的说明:通过CONFIG_RT选项配置实时性,我们采用实时性可用的特性以及他们能够如何被用在设计上,我们同样介绍测量应用程序延迟的技术。

第十八章,“通用串行总线”,以简单易懂的语言描述了USB子系统。我们介绍了一些概念和USB拓扑结构,接着给出了几个USB配置的例子。我们会详细分析sysfs的作用和USB,以帮助你理解这个功能强大的系统。我们还会介绍计费对于理解USB和解决USB故障有帮助的工具。

第十九章,“udev”,解密这个强大的系统配置工具udev。我们分析udev的默认行为,并以此为基础来理解如何对它进行定制。我们会给出几个现实生活中的例子。对于那些BusyBox的使用者,我们会考察BusyBox自带的mdev工具。

感谢

我时常惊讶开源开发者的热心,我总是以谦逊的态度对待我们协会里那些才能高于我的人。在这个项目过程中,我接触到许多Linux界以及开源界的人,并向他们咨询问题。许多问题都能够得到及时的回答。排名不分先后,我想对下面这些乐于回答我问题的Linux界和开源界的人表达我的感激之情。

Dan Malek在第二章“你的第一个嵌入式经历”的某些内容中给了我灵感。

DanKegel 和Daniel Jacobowitz耐心的回答我工具链的问题。

ScottAnderson在第十四章“内核调试技术”中提供了gdb宏指令的新颖想法。

BradDixon 通过他自己继续挑战以及扩大我的技术版本。

JimLewis 提供了MTD(译者:配置存储设备,使Linux可以读取闪存卡)方面的内容和建议。

ChrisHallinan

关于作者

Christopher Hallinan是MontaVista公司的现场应用工程师(译者:FAE),生活与工作在马萨诸塞州,拥有25年以上的网络和通信行业经验,做过多种产品的开发工作,在软件接口方面的深厚的开发背景。加盟MontaVista之前,Chris是一位Linux顾问,拥有4年Linux系统移植、设备驱动和bootloader开发经验,在U-Boot(一个流行的bootloader)项目中做出了杰出的贡献。在弄Linux之余,他喜欢唱歌,表演。

Embedded Linux Primer----嵌入式Linux基础教程--章节介绍的更多相关文章

  1. Linux下配置Squid基础教程

    Linux下配置Squid基础教程 本视频高清下载地址:http://down.51cto.com/data/437529 本文出自 "李晨光原创技术博客" 博客,请务必保留此出处 ...

  2. ActiveMQ基础教程----简单介绍与基础使用

    概述 ActiveMQ是由Apache出品的,一款最流行的,能力强劲的开源消息总线.ActiveMQ是一个完全支持JMS1.1和J2EE 1.4规范的 JMS Provider实现,它非常快速,支持多 ...

  3. OpenLayers3基础教程——OL3 介绍control

    概述: 本文讲述的是Ol3中的control的介绍和应用. OL2和OL3 control比較: 相比較Ol2的control,OL3显得特别少,下图分别为Ol2和Ol3的control: Ol2的c ...

  4. [转][linux][centos]嵌入式 Linux下编译并使用curl静态库

    #x86 ./configure --disable-shared --enable-static --disable-ftp --disable-ipv6 --disable-rtsp --disa ...

  5. (转) OpenLayers3基础教程——OL3 介绍control

    http://blog.csdn.net/gisshixisheng/article/details/46761535 概述: 本文讲述的是Ol3中的control的介绍和应用. OL2和OL3 co ...

  6. (转)OpenLayers3基础教程——OL3 介绍interaction

    http://blog.csdn.net/gisshixisheng/article/details/46808647 概述: 本节主要讲述OL3的交互操作interaction,重点介绍draw,s ...

  7. 嵌入式Linux学习(一)

    嵌入式系统 嵌入式系统是一种专用的计算机系统,作为装置或设备的一部分.通常,嵌入式系统是一个控制程序存储在ROM中的嵌入式处理器控制板.事实上,所有带有数字接口的设备,如手表.微波炉.录像机.汽车等, ...

  8. Highcharts入门+Highcharts基础教程,【非常值得学习的资料】

    http://www.hcharts.cn/docs/index.php?doc=index Highcharts入门章节目录 Highcharts简介 Highcharts下载与使用 Highcha ...

  9. iOS 9应用开发基础教程下册

    iOS 9应用开发基础教程下册   介绍: 本教程是国内第一本iOS 9开发应用教程.本教程基于Xcode 7.0,使用Swift 2.0语言讲解如何开发iOS 9的应用App. 学习建议:本教程针对 ...

随机推荐

  1. Spring读书笔记-----部署我的第一个Spring项目

    一.Spring介绍 Spring是一个轻量级的Java EE容器,它也是一种从实际需求出发,着眼于轻便,灵活,易于开发,易测试和易部署的轻量级开发框架.Spring它完成了大量开发中的通用步骤,留给 ...

  2. WebHdfs

    https://github.com/ihrwein/webhdfs https://tiborbenke.blogs.balabit.com/2013/11/the-syslog-ng-in-the ...

  3. kinect for windows - 初认识

    kinect是微软开发的一种计算机输入设备,原来只是用于xbox,kinect负责捕捉用户的动作,让xbox游戏做出相应的反应.很快大家对此非常有兴趣,因此有些geek和组织为kinect开发了驱动和 ...

  4. Sicily-1024

    一. 题意: 有n个节点,n-1条边,并且任意两个节点都连通.模拟一下,实际上是一棵树的便利,求从特定根节点出发最长路径的值.这里用了广搜. 二. 每个节点只有两条邻接边,每个节点用一个vector来 ...

  5. 浅谈长尾理论--《Makers》读后感

    近期有幸读了一本好书<Makers>,作者是克里斯·安德森.作为3D Robotics和DIY Drones的联合创始人,自然对于正步入的“第三次工业革命”有较为深刻的体会.清晰的逻辑中, ...

  6. C++ 学习笔记3,struct长度測试,struct存储时的对齐方式

    之所以专门为struct的长度写一篇測试,是由于原来c++对于struct的变量, 在分配内存的时候,c++对struct有一种特殊的存储机制. 看以下的測试: 一.在Windows7 32bit , ...

  7. Codeforces 360C Levko and Strings dp

    题目链接:点击打开链接 题意: 给定长度为n的字符串s,常数k 显然s的子串一共同拥有 n(n-1)/2 个 要求找到一个长度为n的字符串t,使得t相应位置的k个子串字典序>s #include ...

  8. Servlet中通过过滤器实现统一的手动编码(解决中文乱码)

    1.web.xml片段: <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi= ...

  9. 什么时候需要交换Top Level ?

    什么时候需要交换Top Level ? 上一篇中提到,如果采用仿真的时候,运用门级仿真就需要进行顶层交换,RTL仿真不需要,那么什么时候需要呢? QuartusII 向下包含,在Project Nav ...

  10. Week8(10月28日)

    Part I:提问  =========================== 1. Lazy.Eager.Explicit Loading的关键字是什么? 2. 请比较三种加载方式的性能. Part ...