1.11 为Broadcom BCM2837处理器构建Linux嵌入式系统
Broadcom处理器BCM2837被使用在Raspberry Pi 2上以及后来的Raspberry Pi 3上。BCM2837的底层体系结构与BCM2836相同。唯一的显著区别是用四核ARM Cortex A53(ARMv8)替换了四核ARMv7。
ARM内核运行速为1.2GHz,比Raspberry Pi 2快50%。VideoCore IV的处理速度为400MHz。可以在下面链接查看BCM2836的相关文档:https://www.raspberrypi.org/docu-mentation/hardware/raspberrypi/bcm2836/README.md。
以及在如下链接查看BCM2835的相关文档:https://www.raspberrypi.org/documentation/hardware/raspberrypi/bcm2835/README.md。
使用Raspberry Pi 3 Model B型号做开发试验,这是一款带有无线局域网和蓝牙的单板计算机。可以在如下链接查看更多的信息:https://www.raspberrypi.org/products/raspberry-pi-3-model-b/。
1.11.1 Raspbian
Raspbian是推荐用于Raspberry Pi上的典型操作系统。Raspbian是一款免费的操作系统,它基于Debian系统开发,并针对Raspberry Pi硬件做了优化。Raspbian附带了35 000多个软件包:这些软件包以很好的格式预编译为附带软件,以便可以轻松地安装到Raspberry Pi上。Raspbian是一个社区项目,目前正在积极的开发中,其重点是尽可能提高Debian软件包的稳定性和性能。
你将在SD卡中安装基于内核4.9.y的Raspbina_lite映像。打开链接http://downloads.raspberrypi.org/raspbian_lite/images/,下载raspbian_lite-2017-09-08/
目录下的2017-09-07-raspbian-stretch-lite.zip
映像文件。
要将映像文件写入SD卡中,你需要下载和安装软件Etcher。该工具是一款开源软件,非常有用,因为它允许将压缩后的映像文件作为输入参数。更多的信息和额外的帮助见Ether的网站:https://etcher.io/。
请依照下面网站的“Writing an image to the SD card”节的步骤把映像文件写入SD卡中:https://www.raspberrypi.org/documentation/installation/installing-images/README.md。
1.11.2 构建Linux内核
有两种方法构建内核。你可以在Raspberry Pi上本地构建,但是这种方法需要很长的时间。或者使用交叉编译的方法,这样更快,但是这需要更多的设置。你将选择第二种方法。
首先安装Git和构建依赖:
接下来获取资源:
将工具链下载到主文件夹:
编译内核、模块和设备树文件:
做如下的内核配置,用于接下来的开发试验:
保存设置并退出菜单。
一次性编译内核、设备树文件和模块:
构建完内核后,你需要把内核文件拷贝到Raspberry Pi上并安装模块。把uSD插入SD读卡器。
更新config.txt
文件,添加以下值:
更新内核、设备树文件和模块:
从读卡器中拔下uSD卡,并插入Raspberry Pi 3 Model B单板中。给单板上电。启动并配置主机上的minicom应用,观察系统启动过程。给minicom做如下配置:115200波特率,8位数据位,1位停止位,无奇偶校验。确保硬件和软件流控功能关闭。
1.11.3 将文件复制到Raspberry Pi
可以使用SSH从同一网络里的另一台计算机或者设备上远程登录到Raspberry Pi的命令行模式中。请确保正确设置并连接了Raspberry Pi:
Raspbian默认情况下是关闭SSH服务器的,你需要手动启动它:
默认情况下root账号是禁止的,但是可以是用下面的命令来启用它,同时给它设置密码:
现在你可以使用root账号登录你的Raspberry Pi了。打开sshd_config
文件,将Permit-RootLogin改为yes(同时把原来的行注释掉)。按<Ctrl+O>键保存文件,然后按<Ctrl+x>键,输入“yes”并回车退出。
创建一个简单的应用来验证工具链是否正确安装。可以使用gedit文本编辑器来编写应用文件:
添加如下代码:
将工具链添加到$PATH环境变量里:
可以直接使用C编译器编译app.c
文件。
scp是通过SSH传输文件的命令。这意味着你可以在计算机之间复制文件,例如从Raspberry Pi复制到台式机或者笔记本,反之亦然。现在你可以使用下面的命令将应用程序文件app
从你的计算机复制到IP地址为10.0.0.10的Raspberry Pi用户目录下:
或
你必须先以root用户身份登录Raspberry Pi设备,才能在主机中使用scp app root@ 10.0.0.10命令:
如果随后修改了内核或设备树文件,你可以使用SHH将它们远程复制到Raspberry Pi:
在Raspberry Pi板(目录)上将eth0网络接口的IP地址配置为10.0.0.10,需要编辑/etc/network/interfaces
文件。使用nano
编辑器打开这个文件:
添加如下的内容:
按<Ctrl+O>键保存文件,然后按<Ctrl+x>,输入“yes”并按回车键退出。重启SSH服务。这样,每次启动Pi的时候,就不必再次通过ifconfig
来设置网络地址了。