在 Linux 上为 BeagleBone Black 构建 ArduPilot

警告

该项目年代久远,缺乏维护,建议 BBBMini 项目

让 BeagleBone 运行 Debian

../_images/BBB_layout.jpg

BBB 标题图片

您需要一张 4GB 或更大容量的 microSD 卡和一个 1A 或更高的 5VDC 电源。您也可以使用供电的 USB 集线器。强烈建议不要使用笔记本电脑上的 USB 端口,因为它有电流限制。

访问 BeagleBoard 网站并获取 最新图片.您可能会在页面上找到多张图片。对于 BeagleBone Black 上的 ArduPilot,您必须下载 Debian(BeagleBone Black - 2GB eMMC) 图像。您可以在 BeagleBone Black(eMMC 闪盘)

例如,当前图像是 BBB-eMMC-flasher-debian-7.5-2014-05-14-2gb.日期(此处为 2014-05-14)和版本号(此处为 7.5)可能会更改。请确保您下载的是最新映像。

在 Ubuntu/Mac OS X 上

验证图像:

md5sum BBB-eMMC-闪光器-菜鸟-7.5-2014-05-14-2gb.图像.xz
74615fb680af8f252c034d3807c9b4ae  BBB-eMMC-闪光器-菜鸟-7.5-2014-05-14-2gb.图像.xz

在将 SD 卡插入电脑之前,键入

df -h

这将列出当前已安装的驱动器。

现在插入 SD 卡并键入

df -h

并查看所添加驱动器的名称。

我的情况是 /dev/sdd1

在这种情况下,在下面的命令中,它被写入 dd of=/dev/sdd 将其替换为 SD 卡的正确地址。

警告

如果您弄错了,可以擦除硬盘

然后将其 xzcat 到 Ubuntu/Mac OS X 机器的 SD 卡中

xzcat BBB-eMMC-闪光器-菜鸟-7.1-2013-10-08.图像.xz | dd =/设计/sdd bs=1M

完成后,取出 SD 卡并将其放入 BBB。

在 Windows 上

从以下地址下载 Win32 磁盘成像器 这里.插入 SD 卡,然后启动下载的应用程序。

选择下载的图像,然后按 .

完成后,取出 SD 卡并将其放入 BBB。

将映像闪存到 eMMC

将 SD 卡放入 BBB。确保已从 BBB 中移除以太网和所有其他 USB 设备。将它连接到墙壁适配器(5VDC 1A)或供电 USB 集线器。

按下启动按钮,启动时按住不放,直到四个蓝灯全部亮起。

放手,然后等待。大约需要 15 分钟。

在此阶段,指示灯会频繁闪烁,当四个指示灯恢复为纯蓝色(无闪烁)时,您就知道完成了。关闭 BBB 电源并取出 SD 卡。

使用随附的 USB 线缆将 BeagleBone Black 与电脑连接。根据操作系统,安装所需的 司机.

现在 ssh 进入 BeagleBone Black,键入

ssh 根基@192.168.7.2

Debian 映像中的 root 用户没有密码

您也可以通过以太网将 BBB 连接到本地网络,并通过 ssh 连接到它。

PixHawk 火角

要在 BeagleBone black 中运行 APM,您需要使用一套合适的传感器。这些传感器大多包含在 PixHawk Fire cape (PXF) 中。 Erle Robotics 商店.

制作 rt 内核

摘自 https://wiki.beyondlogic.org/index.php/BeagleBoneBlack_Building_Kernel )

为 RT 版进行了修改,并进行了简化。

编译 BeagleBone Black 内核

以下是在装有 Ubuntu 13.04 O.S 的电脑上构建 BeagleBone Black 内核的说明。

为了简单起见,运行

苏都 su

您可能需要在此处输入密码...

如果还没有,请创建以下目录

mkdir /首页/您的用户名/出口

mkdir /home/YOUR_USERNAME/export/rootfs

先决条件

ARM 交叉编译器

要为 BeagleBone Black 编译 Linux 内核,首先必须在 Linux 操作系统上安装 ARM 交叉编译器。我使用的是 Ubuntu 13.04 自带的 gcc-4.7-arm-linux-gnueabi-base。要安装编译器,请运行

适切-获取 安装 gcc-上膛-linux-gnueabi

GIT

Beaglebone 补丁和构建脚本存储在 git 仓库中。安装 git:

适切-获取 安装 git

并配置您的身份。

git 配置 --全球 用户.电子邮件 "[email protected]";

lzop 压缩

内核使用 lzo 压缩。安装 lzop 并行文件压缩器:

适切-获取 安装 lzop

uBoot mkimage

BeagleBone black 使用的引导加载程序是 u-bootu-boot 有一种特殊的映像格式,称为 uImage。它包括描述、机器/架构类型、压缩类型、加载地址、校验和等参数。要制作这些映像,你需要一个 mkimage 工具,它是 u-Boot 发行版的一部分。下载 u-boot,制作并安装 u-boot 工具:

wget ftp://ftp.穴盘.de/酒吧/u-后备箱/u-后备箱-最新.卷烟.bz2
卷烟 -xjf u-后备箱-最新.卷烟.bz2
CD u-后备箱-2013.10   (脸色  看看 什么   人称,  可以  变了)
生产 工具  ('无法使用上一版本的 u-boot 需要修订)。
安装 工具/mkimage /我们/当地/箱柜

编译 BeagleBone Black 内核

在这里,我们编译 BeagleBone Black 内核,并生成一个 uImage 文件,将 DTB Blob 附加到内核中,以方便使用。

git clone git://github.com/beagleboard/kernel.git cd kernel git checkout 3.8-rt ./patch.sh cp configs/beaglebone kernel/arch/arm/configs/beaglebone_defconfig wget http://arago-project.org/git/projects/?p=am33x-cm3.git\;a=blob_plain\;f=bin/am335x-pm-firmware.bin\;hb=HEAD -O kernel/firmware/am335x-pm-firmware.bin cd kernel make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- beaglebone_defconfig -j4 make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- uImage dtbs -j4 make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- uImage-dtb.am335x-boneblack -j4

现在,我们构建任何内核模块:

生产 ARCH=上膛 CROSS_COMPILE=上膛-linux-gnueabi- 模块 -j4

如果你已经准备好 rootfs,就可以安装它们了:

生产 ARCH=上膛 CROSS_COMPILE=上膛-linux-gnueabi- 安装路径=/首页/您的用户名/出口/rootfs 安装模块

安装 RT 内核

制作好 Linux 内核后...

确保在 Beaglebone 上安装了 Debian,并从 Linux.... ssh 进入 Beaglebone

ssh 根基@192.168.1.3

(我的 IP 地址,请根据你的 beaglebone 进行调整)

转到 /boot/uboot/ 文件夹

CD /后备箱/长根/

确保那里有备份文件夹。如果没有:

mkdir 后援

然后备份您的 zImage

cp z 图像 uInitrd 后援/

ls /lib/模块

它应该显示 3.8.13-bone28 或类似版本。

现在,我们需要进入 Ubuntu 计算机终端。进入你创建的导出文件夹:

CD /首页/您的用户名/出口/rootfs/lib/模块

并运行

rsync -avz 3* 根基@192.168.1.3:/lib/模块/

然后运行

rsync /首页/proficnc/u-后备箱-2013.10/内核/内核/拱门/上膛/后备箱/z 图像 192.168.1.3 :/后备箱/长根/

在 Beaglebone 上运行以下程序

ls /lib/模块

现在你应该同时拥有旧文件和新的 rt 文件夹。

现在键入

同步
重新启动

一些有用的提示

连接传感器

连接传感器电路板时,其连接方式如下(使用短导线)

../_images/BBB_I2C.jpg

i2c 连接

I2c 调试

要检测 i2c 是否正常工作,可以使用以下命令

i2cdetect -r 1
../_images/BBB_I2C_check.jpg

i2c 检查

这些数字1e、53、69、77 是 MAG、Gyro、Accel 和 Baro(不按顺序排列)。

连接 GPS

待补

连接接收器

待补

连接舵机

待补

连接空速传感器

待补

迄今测试过的设备

在 SPI 上回复了 "我是谁 "的请求

  1. MPU6000

  2. MPU9250(由于焊接了跳线,可能会出现指南针问题)

  3. MS5611 (SPI)

SPI 无响应

1 LSM9DS0(焊接问题,没有连接到 I/O

响应 I2C 检测

  1. 开普 IDE EEPROM 0x54h AT24CS32

  2. 开普 ID COA_OTP 0x5Ch AT24CS32

  3. 加密 0x64h ATSHA204

  4. 空速 0x28h MS4525DO-DS3AIXXXDS

  5. 罗盘扩展 0x1eh HMC5883L

  6. 电源管理 0x24 TPS65217C

  7. 板载 EEProm 0x50h 未知

  8. HDMI core.... 未使用,请勿启用 0x34

未响应 I2C 测试

  1. MS5611(I2C) 0x76h

2.RGB LED 驱动器 0x55h TCA62724(与不存在的 Cape eeprom 冲突)

调整 BBB 时钟

cpufreq-info 显示您当前的频率

../_images/BBB_clock_check.jpg

时钟检查

编辑 /etc/default/cpufrequtils(如果不存在,可能需要创建)。使用 GOVERNOR 变量指定调速器:

纳米 /等等/默认/cpufrequtils

添加以下内容......

# 有效值:用户空间 保守型 Power Save 按需性能
# 从 cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors 中获取它们
总督=性能";

CTRL-X 退出

Y 保存

重新启动,检查是否成功

在 BBB 上安装和制作 ArduPilot

在 BBB 上安装 git、make、gawk、g++ 和 arduino-core

适切-获取 安装 git 生产 瞠目结舌 g++ Arduino-核心
git 复制 --递归-子模块 git://github./ArduPilot/ardupilot.git
CD ardupilot

然后打开

CD ArduPlane

CD ardupilot/ArduCopter

CD ardupilot/APMRover2

CD ardupilot/天线跟踪器

生产 linux

从该目录运行 tmp/Plane.elf(或 Copter,或 Rover)

文件/固定翼飞行器.小精灵

连接到 GCS

待补...............

现状

下表汇总了 驱动程序开发状况:

里程碑

现状

在 BBB 中运行 ArduPilot(I2C 连接传感器)

好的

PXF 设备树

WIP

MPU6000 SPI 用户空间驱动程序

好的

MPU9150 I2C 用户空间驱动程序

好的

LSM9DS0 SPI 用户空间驱动程序

编码

MPU9250 SPI 用户空间驱动程序

编码

MS5611 I2C/SPI 用户空间驱动程序

编码

GPIO 用户空间驱动程序

WIP

I2CDriver 多总线感知

WIP

AP_InertialSensor_Linux

待办事项

PRU PWM 驱动器

好的 (问题 使用 PREEMPT_RT 内核)。

MPU6000 SPI 内核驱动程序

WIP

MPU9150 I2C 内核驱动程序

待办事项

LSM9DS0 SPI 内核驱动程序

待办事项

MPU9250 SPI 内核驱动程序

待办事项

MS5611 I2C/SPI 内核驱动程序

待办事项

状态:OK"、"Coded"(需要测试)、"WIP"(工作进行中)、"Issue"(问题)、"ToDo"(待完成)。