GNU/Linux嵌入式快速编程(txt+pdf+epub+mobi电子书下载)


发布时间:2021-03-07 12:23:17

点击下载

作者:(美)鲁道夫·焦梅蒂(Rodolfo Giometti),俞辉

出版社:机械工业出版社

格式: AZW3, DOCX, EPUB, MOBI, PDF, TXT

GNU/Linux嵌入式快速编程

GNU/Linux嵌入式快速编程试读:

前言

嵌入式计算机在最近几年变得非常复杂,而开发者专注的问题应该是如何解决当下的问题,而不用在寻找更好的外设(简称为外设)或者学习如何管理它们这些方面浪费时间。对于有经验的嵌入式程序员和工程师来说,最大的挑战是把一个想法变成现实到底需要多长时间,本书将展示如何做到这一点。

本书展示了行业中外部环境是如何通过特定的外设进行交互的。这里将使用最新的Linux内核版本4.x,软件系统基于Debian/Ubuntu系统,而嵌入式系统则使用OpenWrt和Yocto。

本书涉及的开发板平台基于目前元件市场和专业开发板制造商中最流行的CPU。在简要介绍完每个平台之后,本书将展示如何设置这些平台,使之能运行一个完整的发行版GNU/Linux并且获得对其系统控制台的访问权。之后将介绍如何针对每个平台安装一个完整的开发系统,使开发者能够运行自己开发的程序。

第一步将在嵌入式套件下进行编程,使用C、Bash脚本或者Python/PHP等语言来编程以访问外设。之后将会介绍更多的设备驱动程序和访问外设的内容以奠定坚实的基础。读者将学习通过C程序或者脚本语言(Bash/Python)和外设进行交互,以及如何为特定的硬件配置相应的设备驱动程序。

本书使用的硬件设备几乎涵盖我们所能见过的所有连接各种开发板的方式,包括I2C、SPI、USB、1-wire总线、串行总线以及各类数字和模拟设备等。

本书中使用的编程语言依据的原则是,以最快速最简单的解决方案来解决当前的问题。特别是可以找到Bash、C、PHP、Python的示例代码。

在这些章节中将会需要使用一个守护进程、一个内核模块或者可能需要重新编译整个内核。这种情况下添加了一个简短的描述,包括读者应该做什么、可以从哪里得到更多的信息和使用工具。但要说明的是,管理一个GNU/Linux系统或者内核模块等一些基本的技能是必需的。本书涵盖内容

本书可以分为两大部分:其中第一部分是第二部分的基础。第一部分介绍如何安装一个宿主机和开发系统以及如何通过串口控制台访问嵌入式套件。首先将看到一些引导加载程序的命令以及C的编译器和交叉编译器,之后会介绍内核模块、设备驱动程序以及一些基于网络文件系统的文件系统。读者也会在主机上使用模拟器来运行一个完整的目标机Debian系统,读者也会在Bash、PHP和Python下面看到系统的守护进程和脚本程序,读者还会看到闪存和Linux的MTD(Memory Technology Device,内存技术设备)。其中会介绍JFFS2和UBIFS文件系统,以及两个非常著名的嵌入式系统Yocto和OpenWrt。

下面是第一部分中每章的简短介绍:

第1章介绍目前工业应用中的最常用的三个开发环境:BeagleBone Black系统、SAMA5D3Xplained系统和WandBoard系统。在简要介绍了每个开发板之后,我们将看到如何设置它们以便运行一个完整的GNU/Linux系统。我们也将看到如何在每个平台(和虚拟机中)上安装一个完整的开发系统。

第2章首先将展示如何安装开发包,然后将进一步探索串口控制台和运行在其上的shell。最后将介绍引导系统bootLoader的命令。

第3章将讲述C编译器以及交叉编译器,之后我们将看到内核模块、设备驱动程序以及一些基于NFS的文件系统,最后会看到一个开发者在主机上如何使用模拟器来运行一个完整的目标机Debian系统。

第4章将介绍系统守护进程(描述它们是什么以及如何使用它们),之后将使用Bash、PHP和Python语言来进行脚本编程。

第5章首先介绍闪存和管理闪存的软件,之后将展示Linux的内存技术设备(MTD)和两个主要的文件系统JFFS2和UBIFS,并运行它们。最后将展示如今两个最著名的嵌入式系统——Yocto和OpenWrt,学习如何在这些嵌入式系统上编写应用程序,并且把该程序添加到嵌入式系统中。

第二部分开始深入介绍所有外设。如果你是一位嵌入式开发人员,在你的职业生涯所遇到的各种外设都会涉及。在本书中,对于每一个外设,都会介绍其所支持的嵌入式套件以及如何访问和使用它。对于每种设备类型,都会结合实例展示如何管理它。

下面是第二部分中每章的简短介绍:

第6章首先简短描述GPIO线路,之后将会看到它们在嵌入式套件上是如何布局的,接着再详细了解如何以非常简单(但效率低)的方式访问这些线路,然后再以更智能(但更复杂)的方式重新再次访问。最后会在内核中通过IRQ管理和LED设备支持再快速地介绍一下GPIO管理机制。

第7章将介绍串行端口(简称串口),串口是计算机中最重要的一个外设接口(至少可以让计算机用于控制自动化行业等)。简要描述串行端口和串行设备之后,我们将通过使用一个实际的串口设备来看如何在一个GNU/Linux系统中对其进行管理。最后我们将在内核中学会如何通过一条串行线来实现网线连接的两个嵌入式系统(二者通过一条以太网电缆连接)之间的通信。

第8章将介绍USB总线,这是一种通用的总线,广泛应用于现代计算机。人们可以将各种电子设备连接到计算机,例如硬盘、键盘或其他使用相同USB端口的串行设备。

第9章将介绍I2C总线,它通常用于连接板上设备,即主计算机会将所有设备都放在同一块板上。一些设备使用I2C总线与CPU进行通信,而这一章将尽量向读者提供尽可能广泛的场景:我们将看到几种不同配置的不同设备如何在该总线中尽量组合成各种情况。

第10章将介绍SPI总线,这是另一种总线类型,和I2C一样通常用于连接板上设备。然而,和I2C总线相反,该总线可以以更高的速度进行数据传输,因为它可以进行全双工操作,即可以同时双向传输数据。由于这些特性,SPI总线通常用于为多媒体应用、数字信号处理、电信设备和SD卡实现有效的数据流传输。

第11章将介绍长距离下以太网设备之间的通信1-Wire。GNU/Linux系统对以太网设备及其相关网络协议提供相当不错的支持,这也是世界上大多数网络设备使用该技术的原因。

第12章介绍以太网网络设备。以太网设备很有趣,尽管速度较慢,但它只用一根电线就可以实现和远程设备的交互,这就简化了CPU及其外设之间的连接。如果要在嵌入式套件上使用识别、验证和交付校准数据或制造信息等功能,设计者可以用更经济简单的方式添加电子设备。

第13章介绍无线网络设备,可以在不使用电线的情况下实现多台计算机之间的通信。不过真正有趣的是,以太网接口上的大部分通信协议也可以与这些无线网络设备接口一起使用。

第14章将介绍CAN总线,CAN总线允许系统中的微控制器、计算机和设备在没有主机的前提下使用基于消息的协议进行通信。CAN总线不如以太网或者WiFi那么有名,但在嵌入式领域还是经常使用的,而且被SoC默认支持。

第15章介绍声音设备的一些用法,从而展示如何使用它们来产生音频,以及如何实现一个简单而低成本的示波器。

第16章介绍常见的视频采集设备和相关的一些使用方法,展示如何把嵌入式套件变成一个监控摄像头或远程图像记录仪。

第17章介绍模数转换器——ADC。模数转换器可用于从环境中得到模拟信号并转换成数字信号。本章将展示如何使用它们,以及如何使用特定的软件和硬件触发器,这样在特定时间或某些事件发生时可以启动转换。

第18章介绍脉宽调制——PWM。PWM可以使用数字源并通过将消息编码到一个脉冲信号(通常是一个方波)的方式产生一个模拟信号,然后这些消息可以用来控制电动机或其他电子设备以及控制一个伺服电动机的位置。

第19章将介绍上述章节之外的其他外设。最后一章将展示我们可能会在某个监测或控制系统里遇到的一个额外的外设列表,如RFID和智能卡读卡器、数字或模拟传感器、GSM/GPRS调制解调器、Z-Wave等。需要的准备工作

本书中你需要准备的东西包括以下内容。软件准备

本书默认读者有一些非图形化的文本编辑器的相关知识,编辑器可以是vi、emacs或nano等。即使你能够通过嵌入式套件与液晶显示器、键盘或者鼠标直接相连并使用图形界面,但在本书中我们还是假设读者只能通过文本编辑器来对文本文件进行修改。

宿主机——将用于交叉编译代码和管理嵌入式系统的计算机——要求运行的是GNU/Linux系统。我的宿主机系统是Ubuntu 15.10,但只要稍稍修改,你就可以使用一个更新版本的Ubuntu系统或一个Debian系统,或者可以用另一个GNU/Linux系统,但需要安装交叉编译工具、支持库和进行软件包管理。本书不会涉及如Windows、Mac OS或者其他类似系统,因为不应该使用这些低技术层次的系统来为高技术层次的系统开发代码。

读者还需要了解一个C编译器是如何工作的,以及Makefile是如何管理的。

本书将介绍一些内核编程技术,但这些不能作为核心编程课程的内容。这方面你需要一本适合这类主题的书。然而,每个示例都有很好的文档说明,而且你会看到一些相关的建议资源。本书使用的内核版本是4.4.x。

最后一点,假设读者已经知道如何在Internet上连接一个GNU/Linux系统,这样你可以下载某个包或者通用文件。硬件准备

在本书中所有开发的代码是基于BeagleBone Black平台、SAMA5D3平台和WandBoard平台的。但是你可以使用一个旧版本的嵌入式套件,这不会有任何问题。事实上,代码是可移植的,它可以在其他系统上运行(不过DTS文件是需要分开的)。

关于本书中所使用的计算机外设,每一章中都说明了可以从哪里买到,当然读者也可以从网上找到更好更便宜的报价。本书还说明了能找到相应的数据手册的网址。

这样你在使用本书所涉及的嵌入式套件和工具包时不会遇到任何困难,因为这些连接非常简单,而且文档齐全。这些内容不需要任何特定的硬件技能,但如果你知道一点相关的电工电子知识可能会有所帮助。本书读者对象

如果你想学习如何使用嵌入式系统,包括通过访问GNU/Linux设备驱动程序的方式从外设收集数据或控制某个设备,那这本书是为你编写的。

如果你感兴趣于如何方便快捷地访问不同的计算机外设,以便为行业应用实现基于GNU/Linux系统的功能控制或监控系统,这本书也是为你编写的。

如果你有一些硬件或电气工程的经验,并且熟悉UNIX环境中的C、Bash、Python和PHP编程的基本知识,并且希望能够将它们应用到嵌入式系统中,这本书也是为你编写的。约定

在本书中你可以发现很多不同信息的文本样式。下面将对这些类型进行举例并进行含义解释。内核和日志消息

通常情况下GNU/Linux系统的内核消息如下所示:

对于本书来说,这一行命令太长了,这也是为什么从第一个字符开始直到真正的信息开始之前的这些字符会被删除。因此在刚才的示例中,行输出将会显示如下:

然而,正如上面所说的,如果一行命令太长将会换行。

在终端中过长的输出、重复或者不太重要的内容会以三个点“...”代替,如下所示:

这三个点在结束时表示输出仍在继续,但为了省空间而省略了。文件的修改

当修改某个文本文件时,我将使用统一的上下文差异格式进行说明。在表示文本修改方面,这是一种非常高效和紧凑的方式。这种格式可以通过使用带有-u选项参数的diff命令获得。

举个简单例子,下面的文本内容为file1.old:

假设我们必须在下面的代码段中突出显示修改的第三行:

这样你可以很容易地理解。每次对整个文件进行简单修改时,这是相当模糊且占用篇幅的,但是通过使用统一的上下文差异格式,前面的修改可以写成如下形式:

现在修改哪些地方就非常明确了,而且篇幅紧凑。开始两行里面,---表示修改之前的原始文件,而+++表示修改之后的新文件,然后是文件所包含的修改内容的差异。原始文件中不修改的内容在最前面增加一个空格字符,而要添加的行前面加一个+字符,被删除的行前面加一个-字符。

由于篇幅原因,本书中的大多数代码都减少了缩进以适合纸质版的页面宽度,但它们仍然保持可读的正确形式。那些真正的代码补丁可以从GitHub或Packt网站上获取。串行和网络连接

在这本书中我主要使用两种不同类型的连接方式来实现宿主机与嵌入式套件的交互:使用串口控制台实现的串行连接方式,以及使用SSH终端实现的以太网连接方式。

串口控制台是在和嵌入式套件相连接的同一个USB接口上实现的,主要用于通过命令行管理系统。它主要用于监控系统,特别是对内核消息进行控制。

SSH终端和串口控制台非常相似,即使不完全相同(例如内核消息不会自动在终端上显示),但它可以像串口控制台一样使用,通过命令行输入命令或者编辑文件。

在本书后面的章节中,我将通过串口控制台或SSH连接的一个终端来实现大多数的命令和配置操作。

要从你的主机开始访问串口控制台,可以使用如下minicon命令:

或者根据开发板的USB转串行适配器使用如下命令:

然而,在第1章中对这方面已经做了解释,所以并不用担心。有些系统可能需要root权限才能够访问/dev/ttyACM0设备。这种情况下你可以通过使用sudo命令或更好的处理方式,例如添加新的系统用户到正确的用户组中来解决这个问题,命令如下:

然后注销并再次登录,你将可以畅通无阻地访问串行设备。

要访问SSH终端,你可以使用与串口控制台相同的USB接口电缆来模拟以太网连接。事实上,如果你的主机配置正确,当插入USB连接线一段时间后,你会看到一个新的附带IP地址的连接(如果连接BeagleBone Black开发平台,你应该得到地址192.168.7.1的连接;如果连接SAMA5D3Xplained平台,则是192.168.8.1地址;如果连接WandBoard平台,则是192.168.9.1地址。具体请见第1章)。然后通过这个新连接,就可以使用下面的命令来访问BeagleBone Black嵌入式套件。

最后一个可以使用的通道是以太网连接。它主要用于从宿主机或因特网上下载文件,通过将以太网水晶头连接到每个嵌入式套件的以太网端口,然后将端口配置为读者的局域网设置,从而可以建立连接。

但很重要的一点是,你也可以通过使用上面提到的USB仿真以太网连接来连接因特网。事实上,通过使用宿主机上的命令(宿主机是GNU/Linux系统),你可以把它作为一个路由器,让你的嵌入式套件与以太网端口连接时能够实现上网:

然后在BeagleBone Black平台上通过USB连接线,可以使用如下命令设置网关:

请注意,我的主机系统中eth1设备是首选的网络连接,而在我的嵌入式系统中eth4设备是BeagleBone Black的设备。其他约定警告或注意标志提示或技巧标志

下载示例代码及彩图

本书的示例代码文件可以从作者的GitHub库https://github.com/giometti/gnu_linux_rapid_embedded_programming获取,只要使用如下命令:

读者也可以访问华章图书官网www.hzbook.com,通过注册并登录账号,下载本书的源代码和彩图。作者简介

Rodolfo Glometti是一位工程师、IT行家、GUN/Linux专家和自由软件的传道者。

他也是书籍《BeagleBone Essentials》和《BeagleBone Home Autoniation Blueprints》(Packt出版社初版)的作者,LinuxPPS工程(Linux的Pulse Per Second子系统)的维护者。目前仍乐于贡献行业应用设备的相关补丁和新设备驱动的Linux源代码。

在他二十多年的工作经历中,使用过x86、ARM、MIPS、PPC等平台。

现在,Rodolfo是HCE工程S.r.l的联合首席,同时也是Cosino工程的联合创始人。这些工程能够为工业环境、自动控制和远程监测领域的快速原型机提供新的软硬件系统。

我要感谢我的妻子Valentina以及我的孩子Romina和Raffacle,感谢他们在我写本书期间付出的耐心。我也非常感谢Packt的工作人员:Vivek Anantiaraman(特别感谢Juliana Nair,她为了完成本书,好多个晚上一直在忙碌),他们给了我写这本书的机会。非常感谢Luca Zulberti和Chris Simmonds对本书的支持和帮助,尤其是Luca Zulberti非常认真地校对书中的文字、代码以及所有的电路。还要感谢Mohd Riyan Khan,他最后对本书审稿时非常耐心地抄写我的修改意见。

最后,我无法忘记我的父母。当我还是孩子时他们给了我第一台电脑,并且允许我一直做我感兴趣的事情。审校者简介

Luca Zulberti在2015年毕业于意大利里窝那市ITIS G.Galilei的电子系,之后在比萨大学的电子工程系继续他的学业。

他在空闲时间中,会进行多种编程技术和语言的研究,对嵌入式系统、嵌入式操作系统开发板和GNU/Linux有浓厚的兴趣。

他是Cosino项目的成员,发表过一些技术文章,也完成过一些工程。第一部分基础知识

·第1章 开发系统的安装

·第2章 管理系统控制台

·第3章 C编译器、设备驱动及其开发技术

·第4章 使用脚本和系统守护进程的快速编程

·第5章 配置一个嵌入式操作系统第1章开发系统的安装

本章将介绍三个最常用的工业应用开发平台,其中包括很著名的Raspberry Pi(树莓派)。这些主板大都是工业环境中的定制主板,并基于广泛使用的CPU。实际上,虽然Raspberry Pi的CPU不易应用于元件市场上,但却可以广泛适用于不同制造商的专业主板。

接下来的章节将简要介绍每个主板,并讲解如何设置它们来运行一个完整的GNU/Linux部署,以及如何访问系统控制台。之后我们将在每个开发板上安装一个完整的开发系统,以便能够添加我们自己的程序。

关于如何建立主机系统,也会提供一篇小教程,可以利用它来建立一个基于GNU/Linux的工作机或者一个专用虚拟机。

如果你已经有一个可运行的嵌入式系统和宿主机,这一章可以跳过。尽管如此,你也应考虑阅读一下它,因为本章将介绍在本书中使用到的嵌入式设备。在本章中,我们将修正本书中使用的常用术语,你可以通过不同方法在你的主板上安装系统。此外还有重要的一点,已在你主板上运行的系统可能不同于这里介绍的,这意味着你可能需要相应地改变本书中的一些命令才能成功使用范例。1.1 嵌入式术语

在着手新主板之前,建议先熟悉一些使用者须知的术语,以避免误解。已经有一些GNU/Linux或嵌入式系统工作经验的人可跳过该部分。这里列出的开发工具是微小的单板计算机,它可以嵌入到另一个设备中,所以用户应该熟悉如下一些在嵌入式中使用的术语:

既然我们已经列出一些重要的术语,就准备好进入下一节,并发掘我们的开发工具。1.2 系统概述

这里简单介绍下本书中将使用的开发平台。

第一个工具是BeagleBone Black平台,这是一个低成本并且为开发者和社区爱好者支持的开发平台。它能够在10秒内启动Linux,并在几分钟内开始开发,它只有一个USB接口,在互联网上广泛使用,所以它是每一个嵌入式编程者都应该知道的开发板。

第二个工具是SAMA5D3Xplained平台,这是一个快速的设计平台,配备了一套丰富的使用接口、存储设备和易于定制的扩展头。USB设备连接器可用于电源板以及编程和调试。这个板比较有趣,因为它使用的CPU非常低功耗,同时具有良好的性能并且大量面向工业的设备。

最后的工具是Wandboard平台,这是一个高性能的具有完整多媒体功能的计算机,与其他板相比,该板拥有良好的外设,它由一个核心模块和一个定制的接口板组成。这个板非常有趣,因为它可以配备一个多核CPU,还可以作为一个CPU模块连接到一个载波板,它可以让嵌入式开发人员有一个高度可定制的硬件设备。1.2.1 BeagleBone Black开发平台

如下图所示,图中有BeagleBone Black和信用卡,这样你就可以了解整个系统的尺寸。

这里有一些链接,从中可以了解到一些关于BeagleBone Black的有用信息:

·https://beagleboard.org/black

·http://beagleboard.org/static/beaglebone/latest/Docs/Hardware/BONE_SRM.pdf

·http://beagleboard.org/getting-started

·https://eewiki.net/display/linuxonarm/BeagleBone+Black

BeagleBone Black(修订本)硬件的主要特点如下表所示。

然后,下面的图片显示的是BeagleBone Black的俯视图,我们可以看到一些部件:

·J1连接器用于访问串口。

·以太网插口。

·电源插口。

·两伸缩连接器P8和P9,在那里可以连接专用的扩展板或自定义外设(这些连接器将在接下来的章节中详细解释)。

·microSD插槽。

·USB主机接口。

·复位按钮用来复位,电源键用来打开/关闭主板,还有可控的用户按钮,可以用来替代microSD卡(而不是板上eMMC)的引导。

从前面的图中我们可以看到,BeagleBone Black不像PC,但它可以作为一个PC。BeagleBone Black是一个全功能的单板计算机,如果通过HDMI端口连接到显示器,通过USB集线器连接到键盘和鼠标,就可以很容易地当作电脑来使用,但是它更适合于嵌入式应用,由于其可扩展的连接使得它可以比PC作用更大,用途更多。在这本书中,我们将看到如何管理和重装一个完整的Debian发行版,该系统可以让我们有一系列软件包,当作一个正常的PC来用(事实上,Debian ARM版相当于Debian的x86版本)。然后,我们将看到如何使用扩展连接器连接到主板,并且用一些外设来监视/控制外部环境。1.2.2 SAMA5D3Xplained开发平台

下图所示是一个SAMA5D3Xplained和一张信用卡,我们可以很容易地观察到,相比于BeagleBone Black,这个开发板稍微大一点,因为主板上嵌入了更多的接口和端口。值得注意的是,在板中心的扩展连接器和Arduino R3兼容,所以可以在扩展板上利用它这里有一些链接,从中可以了解到一些关于SAMA5D3Xplained的有用信息:

·http://www.atmel.com/tools/ATSAMA5D3-XPLD.aspx

·http://www.atmel.com/images/atmel-11269-32-bit-cortex-a5-microcontroller-sama5d3-xplained_user-guide.pdf

·http://www.at91.com/linux4sam/bin/view/Linux4SAM/Sama5d3XplainedMainPage

·https://eewiki.net/display/linuxonarm/ATSAMA5D3+Xplained

值得注意的是,根据CPU的版本有不同版本的SAMA5D3主板,有SATSAMA5D31、SATSAMA5D33、SATSAMA5D34、SATSAMA5D35、ATSAMA5D36。每个CPU有相同的内核,但不同的外设集。

在这本书中,我们将使用ATSAMA5D36平台,其主要的硬件特点本版本如下表所示。

下图所示为SAMA5D3Xplained的俯视图,我们可以看到:

·连接器可用于访问串口。

·USB微端口可以作为一个USB设备的接口,它也用作电源端口,还可以当作SAM-BA USB设备和CDC接口。

·两个以太网接口。

·LCD接口。

·JTAG接口。

·两个USB主机端口。

·伸缩接头(注意,这些连接器是与Arduino R3兼容的)。

·复位按钮可用于复位板。唤醒按钮可以用来打开/关闭板。

即使它是专为工业任务设计的,该主板也可以当作一个PC来用。它可以抵抗非常恶劣的环境,低功耗并且有大量专用外设应用。相对于BeagleBone Black,它不能外接HDMI连接器,但它有一个专门的可带触摸屏的LCD连接器。

对于这个主板,我们会安装一个完整的Debian发行版,并且使用扩展连接器连接到主板。1.2.3 Wandboard开发平台

下图所示为Wandboard开发平台,同信用卡的尺寸比较。

主板相当小,但它实际上是由两部分组成的:核心模块在接口(或载体)模块的上面(见下图)。

下面有一些网址,可以从中获得一些有用的信息:

·http://www.wandboard.org/

·http://www.wandboard.org/images/downloads/wbquad-revb1-userguide.pdf

·http://wiki.wandboard.org/Main_Page

·https://eewiki.net/display/linuxonarm/Wandboard

注意,Wandboard板根据CPU版本分不同的版本,因此有Wandboard Solo、Wandboard Dual、Wandboard Quad。每个版本的CPU都有相同的核心,但外设集和核心号码不同。事实上,Wandboard可以有单核、双核、四核CPU。

在这本书中,我们将使用Wandboard Quad平台,其主要的硬件特点如下表所示。

下图为Wandboard的俯视图,可以了解到一些信息。

·RS-2329引脚连接器COM1,可用于访问串口。

·USB迷你端口作为USB OTG接口。

·USB主机端口。

·辅助microSD连接器。

·电源接口。

·以太网接口。

·音频端口。

·SATA连接器。

·HDMI连接器。

在顶部(核心模块在左边和接口模块在右边)有:

·摄像头接口连接器

·主微型SD

·Wi-Fi芯片

·4个扩展连接器

·复位按钮可用于复位主板

如下图所示,此主板也可以作为一个电脑,这也是为什么我们会在板子上装一个完整的Debian发行版。和BeagleBone Black平台类似,此开发板有一个外接显示器的HDMI连接器。1.3 安装开发系统

本书的目的是解释如何在主板上访问外设,以及如何快速编写程序来管理数据。要做到这一点,需要一个好的开发系统。这就是为什么在本节中我们将在每个开发板上安装一个Debian操作系统。

以GNU/Linux为基础的开发板的主要优点之一是,无论我们决定使用哪种开发板,都可以有相同的开发环境。实际上,为了证明这一事实,我们将在每个开发板上安装完全相同的操作系统(即使有预装操作系统的开发板)。要做到这一点,只需要一个SD(或microSD)卡存储我们开发的操作系统,然后按照下面的指示进行操作。但是,在着手嵌入式板之前,需要建立宿主机。1.3.1 设置宿主机

每一个优秀的嵌入式开发人员都知道,宿主机是必要的,即使现在的嵌入式设备变得越来越强大,但一些资源消耗的任务,可以用宿主机来运行。

我们使用的宿主机可以是普通PC也可以是虚拟机。重要的是,它运行一个基于GNU/Linux的操作系统。在这本书中,我们将使用Ubuntu 15.10系统,你可以使用此系统(也可在虚拟机内)或者使用Ubuntu长期支持(LTS)的版本,如16.04版本,没有其他问题或重大变化。当然,也可以尝试复制一些在本书中用到的设置和安装命令到其他Linux发行版的系统。1.基本工具

如果我们安装了一个干净的系统或从来没有使用我们的机器开发过程序,那么我们必须在继续之前安装一些有用的开发工具。第一步,我们将安装的aptitude工具和非常出名的apt-get命令相似,但它更智能(请注意,这不是必需的,因为我们仍然可以继续使用apt-get,而没有任何问题)。这里是安装命令:

然后,可以使用aptitude命令安装其他有用的基本工具,如下:

所有软件包已经安装,接下来可以安装交叉编译器和相关工具链。2.交叉编译器

每个宿主机对于目标机都需要一个适当的交叉编译器,所以我们必须安装一个交叉编译器。在接下来的章节里,我们需要交叉编译器

试读结束[说明:试读内容隐藏了图片]

下载完整电子书


相关推荐

最新文章


© 2020 txtepub下载