图书推荐-Mastering Embedded Linux Programming

        前两年由于部门业务调整,开始转嵌入式Linux开发,虽然之前对于引导程序、内核、文件系统有一定的了解,也做过Linux移植的项目,但对嵌入式Linux移植适配并未形成一个整体的人士。后来无意间发现了这本书,花了几天时间通读了一遍,对于嵌入式Linux系统所涉及的四大元素:工具链、引导加载程序、内核和根文件系统有了更全面的了解。Linux发展到今天,所涉及的知识体系太大,基本上每个主题都可以单独出本书(内核、文件系统、网络、驱动开发、系统监控等等),这本书主要是针对嵌入式Linux移植,所以对于驱动开发、内核实现以及各种编译框架并未进行深入的解析,有需要的可以阅读其他书籍(文章末尾推荐一些其他书籍)。

        目前本书已经出到了第三版(我读的是第二版),好像也有人正在翻译第三版,说不定隔段时间就能买到这本书的中文版,我在阅读第二版的时候,机器+手工调整也翻译了一下,主要是为了自己后续二次阅读的时候更方便吧。下面是全书各个章节主要包含的内容(翻译):

第 1 章“开篇”,通过描述嵌入式 Linux 生态系统以及在启动项目时可用的选择来设置场景。

第 2 章“了解工具链”,介绍了工具链的组成,并展示了如何创建用于交叉编译目标板代码的工具链。它描述了从何处获取工具链,并提供了有关如何从源代码构建工具链的详细信息。

第 3 章“引导加载程序”,解释了引导加载程序在将 Linux 内核加载到内存中所扮演的角色,并使用 U-Boot 和 Bareboot 作为示例进行演示。它还介绍了在大多数嵌入式 Linux 系统中对硬件细节进行编码的机制,即设备树。

第 4 章“配置和构建内核”,提供了有关如何为嵌入式系统选择 Linux 内核以及如何配置内核中的设备信息。同时还介绍了如何将 Linux 移植到新硬件。

第 5 章“构建根文件系统”。通过有关如何配置根文件系统的分步指南,介绍了嵌入式 Linux 实现的用户空间及背后的思想。

第 6 章,“选择构建系统”,介绍了两个常用的嵌入式 Linux 构建系统,Buildroot 和 Yocto 项目,它们自动执行前四章中描述的步骤。

第 7 章“创建存储策略”,讨论了管理闪存(包括原始闪存芯片和 EMMC)所带来的挑战。它描述了适用于不同存储设备的文件系统。

第 8 章“现场更新软件”,介绍了部署设备后更新软件的各种方法,包括完全托管的空中下载(OTA)更新。讨论的关键主题是可靠性和安全性。

第 9 章“设备驱动程序接口”,通过简单驱动程序的工作示例描述了内核设备驱动程序如何与硬件交互。它还介绍了从用户空间调用设备驱动程序的各种方法。

第 10 章,“启动 – 初始化程序”,展示了第一个用户空间程序(init)如何启动系统的其余部分。它描述了 init 程序的三个版本,每个版本都适用于不同的嵌入式系统,从 BusyBox init 到 System V init,再到当前最先进的 systemd。

第 11 章“电源管理”,考虑了调整 Linux 以降低功耗的各种方法,包括动态调整频率和电压、选择最佳的空闲状态和系统挂起。目的是使设备在电池充电后能够运行时间更长,且运行温度更低(功率更低)。

第 12 章,“进程和线程”,从应用程序程序员的角度描述嵌入式系统。本章介绍进程和线程、进程间通信和调度策略。

第 13 章“内存管理”,介绍了虚拟内存背后的思想以及如何将地址空间划分为内存映射。它还介绍了如何准确监测内存使用情况以及如何检测内存泄漏。

第 14 章“使用 GDB 调试”,介绍了如何使用 GNU 调试器 GDB 以及调试代理gdbserver 来调试在目标设备上远程运行的应用程序。同时展示了如何扩展这个模型利用 KGDB 和内核调试 stubs 来调试内核代码。

第 15 章“剖析和跟踪”,介绍了可用于监测系统性能的技术,从整个系统开始,然后专注于导致性能不佳的特定区域。它还描述了如何使用 Valgrind 来检查应用程序使用线程同步和内存分配的正确性。

第 16 章,实时编程,提供了 Linux 实时编程的详细指南,包括内核的配置和 PREEMPT_RT 实时内核补丁。以及如何使用内核跟踪工具 Ftrace 测量内核延迟并显示各种内核配置的效果。

其他书籍推荐:

1、Linux内核:

     坦诚来说,Linux内核的经典书真不是很建议新手看,需要慢慢啃

   《Linux内核设计与实现》、《深入Linux内核架构》

2、Linux应用:

   《Linux/UNIX系统编程手册》 书比较新,网上有英文的电子版

   《UNIX环境高级编程》 经典书籍,读过第二版

   《UNIX网络编程》经典书籍,好多年前看过

3、Linux驱动:

   《Linux设备驱动程序》 Jonathan Corbet 内容有点老,但很有阅读的价值

   《Linux设备驱动开发详解:基于最新的Linux 4.0内核》 宋宝华 虽然书籍豆瓣评分不高,不过个人感觉还是有参考价值的

   《嵌入式Linux设备驱动程序开发指南》 阿尔贝托·利贝拉尔 这本书买了,不过还没看,主要现在不太做技术开发了,但豆瓣评分很高

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Key Features Create efficient and secure embedded devices using Linux Minimize project costs by using open source tools and programs Explore each component technology in depth, using sample implementations as a guide Book Description Mastering Embedded Linux Programming takes you through the product cycle and gives you an in-depth description of the components and options that are available at each stage. You will begin by learning about toolchains, bootloaders, the Linux kernel, and how to configure a root filesystem to create a basic working device. You will then learn how to use the two most commonly used build systems, Buildroot and Yocto, to speed up and simplify the development process. Building on this solid base, the next section considers how to make best use of raw NAND/NOR flash memory and managed flash eMMC chips, including mechanisms for increasing the lifetime of the devices and to perform reliable in-field updates. Next, you need to consider what techniques are best suited to writing applications for your device. We will then see how functions are split between processes and the usage of POSIX threads, which have a big impact on the responsiveness and performance of the final device The closing sections look at the techniques available to developers for profiling and tracing applications and kernel code using perf and ftrace. What you will learn Understand the role of the Linux kernel and select an appropriate role for your application Use Buildroot and Yocto to create embedded Linux systems quickly and efficiently Create customized bootloaders using U-Boot Employ perf and ftrace to identify performance bottlenecks Understand device trees and make changes to accommodate new hardware on your device Write applications that interact with Linux device drivers Design and write multi-threaded applications using POSIX threads Measure real-time latencies and tune the Linux kernel to minimize them About the Author Chris Simmonds is a software consultant and trainer who lives in southern England. He has been using Linux in embedded systems since the late 1990s, during which he has worked on many interesting projects, including a stereoscopic camera, intelligent weighing scales, various set-top boxes and home routers, and even a large walking robot. He is a frequent presenter at open source and embedded conferences, including the Embedded Linux Conference, Embedded World, and the Android Builders' Summit. He has been conducting training courses and workshops in embedded Linux since 2002 and in embedded Android since 2010. He has delivered hundreds of sessions to many well-known companies. You can see some of his work on the "Inner Penguin" blog at www.2net.co.uk. Table of Contents Chapter 1: Starting Out Chapter 2: Learning About Toolchains Chapter 3: All About Bootloaders Chapter 4: Porting and Configuring the Kernel Chapter 5: Building a Root Filesystem Chapter 6: Selecting a Build System Chapter 7: Creating a Storage Strategy Chapter 8: Introducing Device Drivers Chapter 9: Starting up - The init Program Chapter 10: Learning About Processes and Threads Chapter 11: Managing Memory Chapter 12: Debugging with GDB Chapter 13: Profiling and Tracing Chapter 14: Real-time Programming
Key Features, Create efficient and secure embedded devices using LinuxMinimize project costs by using open source tools and programsExplore each component technology in depth, using sample implementations as a guide, Book Description, Mastering Embedded Linux Programming takes you through the product cycle and gives you an in-depth description of the components and options that are available at each stage. You will begin by learning about toolchains, bootloaders, the Linux kernel, and how to configure a root filesystem to create a basic working device. You will then learn how to use the two most commonly used build systems, Buildroot and Yocto, to speed up and simplify the development process. Building on this solid base, the next section considers how to make best use of raw NAND/NOR flash memory and managed flash eMMC chips, including mechanisms for increasing the lifetime of the devices and to perform reliable in-field updates. Next, you need to consider what techniques are best suited to writing applications for your device. We will then see how functions are split between processes and the usage of POSIX threads, which have a big impact on the responsiveness and performance of the final device The closing sections look at the techniques available to developers for profiling and tracing applications and kernel code using perf and ftrace., What you will learn, Understand the role of the Linux kernel and select an appropriate role for your applicationUse Buildroot and Yocto to create embedded Linux systems quickly and efficientlyCreate customized bootloaders using U-BootEmploy perf and ftrace to identify performance bottlenecksUnderstand device trees and make changes to accommodate new hardware on your deviceWrite applications that interact with Linux device driversDesign and write multi-threaded applications using POSIX threadsMeasure real-time latencies and tune the Linux kernel to minimize them, About the Author, Chris Simmonds is a software consultant and trainer who lives in southern England. He has been using Linux in embedded systems since the late 1990s, during which he has worked on many interesting projects, including a stereoscopic camera, intelligent weighing scales, various set-top boxes and home routers, and even a large walking robot., He is a frequent presenter at open source and embedded conferences, including the Embedded Linux Conference, Embedded World, and the Android Builders' Summit. He has been conducting training courses and workshops in embedded Linux since 2002 and in embedded Android since 2010. He has delivered hundreds of sessions to many well-known companies. You can see some of his work on the 'Inner Penguin' blog at www.2net.co.uk., Table of Contents, Starting OutLearning About ToolchainsAll About BootloadersPorting and Configuring the KernelBuilding a Root FilesystemSelecting a Build SystemCreating a Storage StrategyIntroducing Device DriversStarting up - the init ProgramLearning About Processes and ThreadsManaging MemoryDebugging with GDBProfiling and TracingReal-time Programming
Linux has been the mainstay of embedded computing for many years. And yet, there are remarkably few books that cover the topic as a whole: this book is intended to fill that gap. The term embedded Linux is not well-defined, and can be applied to the operating system inside a wide range of devices ranging from thermostats to Wi-Fi routers to industrial control units. However, they are all built on the same basic open source software. Those are the technologies that I describe in this book, based on my experience as an engineer and the materials I have developed for my training courses. Technology does not stand still. The industry based around embedded computing is just as susceptible to Moore's law as mainstream computing. The exponential growth that this implies has meant that a surprisingly large number of things have changed since the first edition of this book was published. This second edition is fully revised to use the latest versions of the major open source components, which include Linux 4.9, Yocto Project 2.2 Morty, and Buildroot 2017.02. Since it is clear that embedded Linux will play an important part in the Internet of Things, there is a new chapter on the updating of devices in the field, including Over the Air updates. Another trend is the quest to reduce power consumption, both to extend the battery life of mobile devices and to reduce energy costs. The chapter on power management shows how this is done. Mastering Embedded Linux Programming covers the topics in roughly the order that you will encounter them in a real-life project. The first 6 chapters are concerned with the early stages of the project, covering basics such as selecting the toolchain, the bootloader, and the kernel. At the conclusion of this this section, I introduce the idea of using an embedded build tool, using Buildroot and the Yocto Project as examples. The middle part of the book, chapters 7 through to 13, will help you in the implementation phase of the project. It covers the topics of filesystems, the init program, multithreaded programming, software update, and power management. The third section, chapters 14 and 15, show you how to make effective use of the many debug and profiling tools that Linux has to offer in order to detect problems and identify bottlenecks. The final chapter brings together several threads to explain how Linux can be used in real-time applications. Each chapter introduces a major area of embedded Linux. It describes the background so that you can learn the general principles, but it also includes detailed worked examples that illustrate each of these areas. You can treat this as a book of theory, or a book of examples. It works best if you do both: understand the theory and try it out in real life.
### 回答1: 《嵌入式Linux编程的精髓-第二版》是一本涵盖嵌入式Linux编程相关知识的书籍。嵌入式系统是指嵌入到设备中,负责控制设备运行的计算机系统。Linux是一种自由、开放源代码的操作系统,广泛应用于嵌入式系统中。 在第二版中,这本书提供了嵌入式系统开发的最新趋势和技术。它讲解了嵌入式Linux系统的搭建和配置,包括交叉编译工具链的搭建、Linux内核的配置和裁剪,以及Bootloader的加载等。此外,书中还介绍了如何进行硬件与软件的交互,包括GPIO控制、设备驱动的开发与调试等。 本书还特别强调了实践与项目开发。作者通过编写一些实际案例来引导读者探索不同的嵌入式项目,包括网络应用、图形界面、多媒体处理、无线通信等。这有助于读者将所学知识应用到实际开发中,提高嵌入式系统的开发能力。 此外,本书还介绍了调试和优化嵌入式系统的方法。作者分享了一些调试工具和技巧,帮助读者解决开发中的常见问题。还介绍了优化嵌入式系统性能的方法,以提高系统的速度和响应能力。 总之,《嵌入式Linux编程的精髓-第二版》是一本全面而实践性强的嵌入式Linux编程学习指南。通过学习本书,读者将能够掌握Linux的基本原理和嵌入式系统的开发技巧,并能够应用于实际项目中,提高嵌入式系统的性能和稳定性。 ### 回答2: 《嵌入式Linux编程:第二版》是一本涵盖嵌入式Linux系统开发的重要概念和技术的书籍。本书旨在帮助读者掌握嵌入式Linux编程的各个方面,从而成为一名嵌入式系统开发专家。 第二版的《嵌入式Linux编程》与第一版相比,进行了更新和扩展。本书涵盖了Linux内核的最新版本,并介绍了最新的嵌入式Linux开发工具和技术。同时,本书还增加了对容器化和虚拟化技术在嵌入式Linux系统中的应用的讨论。 本书的内容涵盖了从基础知识到高级主题的嵌入式Linux系统开发。读者将学习如何搭建嵌入式Linux开发环境,了解Linux内核的基本概念和结构,并深入研究设备驱动程序和文件系统的开发。此外,本书还介绍了嵌入式系统的调试和性能优化技术,以及与硬件交互的通信协议和接口。 读者在阅读本书时,将通过实例和案例学习,结合实际应用场景,将理论知识应用到实际项目中。通过深入学习嵌入式Linux编程,读者将能够理解和掌握嵌入式Linux系统的架构和工作原理,能够编写高效、可靠的设备驱动程序和应用程序,并能够解决嵌入式系统开发中遇到的各种挑战和问题。 总之,通过阅读《嵌入式Linux编程:第二版》,读者将获得全面的嵌入式Linux编程知识和技能,并能够在实际项目中应用这些知识和技能,成为一名嵌入式系统开发专家。 ### 回答3: 《嵌入式Linux编程掌握-第二版》是一本深入了解嵌入式Linux编程的指南。这本书适合有一定编程基础的读者,他们有兴趣学习如何在嵌入式系统中使用Linux。它提供了关于嵌入式Linux的详细知识和实践经验,包括Linux内核和设备驱动程序的基础知识,以及如何将Linux运行在各种不同的嵌入式硬件上。 这本书的第二版提供了更加深入和全面的内容,与第一版相比进行了更新和扩充。它介绍了如何为嵌入式系统配置和编译Linux内核,以及如何开发和调试Linux设备驱动程序。此外,它还涵盖了嵌入式Linux系统的网络和存储管理,以及如何优化和调试系统性能。 书中还包含了大量的示例代码和实验项目,读者可以通过实践来加深对所学知识的理解和掌握。此外,该书还介绍了一些流行的嵌入式开发板和硬件平台,以及常用的开发工具和调试技术。 总的来说,通过阅读《嵌入式Linux编程掌握-第二版》,读者将获得深入了解嵌入式Linux系统开发的能力,并在实践中掌握如何在嵌入式系统中应用Linux的技术和工具。这对想要在嵌入式领域从事开发工作的人来说是一本很有价值的参考书。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值