From c58a02211125c97685761386cac0e6147953e2a4 Mon Sep 17 00:00:00 2001 From: mirkix <mirkix@gmail.com> Date: Sat, 10 Jan 2015 23:20:38 +0000 Subject: [PATCH] AP_HAL_Linux: add support for BBBMINI, simple ArduPilot DIY Cape for the BeagleBone Black --- libraries/AP_HAL_Linux/GPIO.h | 2 +- libraries/AP_HAL_Linux/GPIO_BBB.cpp | 6 ++++-- libraries/AP_HAL_Linux/GPIO_BBB.h | 2 +- libraries/AP_HAL_Linux/HAL_Linux_Class.cpp | 12 ++++++------ libraries/AP_HAL_Linux/RCInput_PRU.cpp | 5 +++-- libraries/AP_HAL_Linux/SPIDriver.cpp | 6 ++++++ libraries/AP_HAL_Linux/SPIDriver.h | 2 ++ 7 files changed, 23 insertions(+), 12 deletions(-) diff --git a/libraries/AP_HAL_Linux/GPIO.h b/libraries/AP_HAL_Linux/GPIO.h index 171f566e3..17e706dc0 100644 --- a/libraries/AP_HAL_Linux/GPIO.h +++ b/libraries/AP_HAL_Linux/GPIO.h @@ -4,7 +4,7 @@ #include <AP_HAL_Linux.h> #if CONFIG_HAL_BOARD == HAL_BOARD_LINUX -#if CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_PXF || CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_ERLE +#if CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_PXF || CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_ERLE || CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_BBBMINI #include "GPIO_BBB.h" #elif CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_NAVIO #include "GPIO_RPI.h" diff --git a/libraries/AP_HAL_Linux/GPIO_BBB.cpp b/libraries/AP_HAL_Linux/GPIO_BBB.cpp index 9fe299f96..632a0ad00 100644 --- a/libraries/AP_HAL_Linux/GPIO_BBB.cpp +++ b/libraries/AP_HAL_Linux/GPIO_BBB.cpp @@ -1,7 +1,8 @@ #include <AP_HAL.h> #if CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_PXF || \ - CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_ERLE + CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_ERLE || \ + CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_BBBMINI #include "GPIO.h" #include <stdio.h> @@ -128,4 +129,5 @@ bool LinuxGPIO_BBB::usb_connected(void) } #endif // CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_PXF || - // CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_ERLE + // CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_ERLE || + // CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_BBBMINI diff --git a/libraries/AP_HAL_Linux/GPIO_BBB.h b/libraries/AP_HAL_Linux/GPIO_BBB.h index a99525cc0..1a8f7a54b 100644 --- a/libraries/AP_HAL_Linux/GPIO_BBB.h +++ b/libraries/AP_HAL_Linux/GPIO_BBB.h @@ -25,7 +25,7 @@ #define LOW 0 #define HIGH 1 -#if CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_PXF || CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_ERLE +#if CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_PXF || CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_ERLE || CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_BBBMINI #define LINUX_GPIO_NUM_BANKS 4 #else // disable GPIO diff --git a/libraries/AP_HAL_Linux/HAL_Linux_Class.cpp b/libraries/AP_HAL_Linux/HAL_Linux_Class.cpp index 39d5504e7..9c1c3bd90 100644 --- a/libraries/AP_HAL_Linux/HAL_Linux_Class.cpp +++ b/libraries/AP_HAL_Linux/HAL_Linux_Class.cpp @@ -38,9 +38,9 @@ static LinuxStorage storageDriver; #endif /* - use the BBB gpio driver on ERLE and PXF + use the BBB gpio driver on ERLE, PXF and BBBMINI */ -#if CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_PXF || CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_ERLE +#if CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_PXF || CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_ERLE || CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_BBBMINI static LinuxGPIO_BBB gpioDriver; /* use the RPI gpio driver on Navio @@ -52,9 +52,9 @@ static Empty::EmptyGPIO gpioDriver; #endif /* - use the PRU based RCInput driver on ERLE and PXF + use the PRU based RCInput driver on ERLE, PXF and BBBMINI */ -#if CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_PXF || CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_ERLE +#if CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_PXF || CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_ERLE || CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_BBBMINI static LinuxRCInput_PRU rcinDriver; #elif CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_NAVIO static LinuxRCInput_Navio rcinDriver; @@ -65,9 +65,9 @@ static LinuxRCInput rcinDriver; #endif /* - use the PRU based RCOutput driver on ERLE and PXF + use the PRU based RCOutput driver on ERLE, PXF and BBBMINI */ -#if CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_PXF || CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_ERLE +#if CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_PXF || CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_ERLE || CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_BBBMINI static LinuxRCOutput_PRU rcoutDriver; /* use the PCA9685 based RCOutput driver on Navio diff --git a/libraries/AP_HAL_Linux/RCInput_PRU.cpp b/libraries/AP_HAL_Linux/RCInput_PRU.cpp index 02d600ea2..e4aed1ac7 100644 --- a/libraries/AP_HAL_Linux/RCInput_PRU.cpp +++ b/libraries/AP_HAL_Linux/RCInput_PRU.cpp @@ -1,8 +1,9 @@ #include <AP_HAL.h> #if CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_PXF || \ - CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_ERLE - + CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_ERLE || \ + CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_BBBMINI + #include <stdio.h> #include <sys/time.h> #include <stdio.h> diff --git a/libraries/AP_HAL_Linux/SPIDriver.cpp b/libraries/AP_HAL_Linux/SPIDriver.cpp index 3fa4ed570..beaac23cb 100644 --- a/libraries/AP_HAL_Linux/SPIDriver.cpp +++ b/libraries/AP_HAL_Linux/SPIDriver.cpp @@ -38,6 +38,12 @@ LinuxSPIDeviceDriver LinuxSPIDeviceManager::_device[LINUX_SPI_DEVICE_NUM_DEVICES LinuxSPIDeviceDriver(0, 0, AP_HAL::SPIDevice_MPU9250, SPI_MODE_0, 8, RPI_GPIO_7, 1*MHZ, 16*MHZ), LinuxSPIDeviceDriver(0, 0, AP_HAL::SPIDevice_Ublox, SPI_MODE_0, 8, RPI_GPIO_8, 1*MHZ, 4*MHZ), }; +#elif CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_BBBMINI +LinuxSPIDeviceDriver LinuxSPIDeviceManager::_device[LINUX_SPI_DEVICE_NUM_DEVICES] = { + LinuxSPIDeviceDriver(2, 0, AP_HAL::SPIDevice_MS5611, SPI_MODE_3, 8, BBB_P9_42, 10*MHZ,10*MHZ), + /* MPU9250 is restricted to 1MHz for non-data and interrupt registers */ + LinuxSPIDeviceDriver(2, 0, AP_HAL::SPIDevice_MPU9250, SPI_MODE_3, 8, BBB_P9_23, 1*MHZ, 20*MHZ), +}; #else // empty device table LinuxSPIDeviceDriver LinuxSPIDeviceManager::_device[0]; diff --git a/libraries/AP_HAL_Linux/SPIDriver.h b/libraries/AP_HAL_Linux/SPIDriver.h index 948427804..0f899b05b 100644 --- a/libraries/AP_HAL_Linux/SPIDriver.h +++ b/libraries/AP_HAL_Linux/SPIDriver.h @@ -9,6 +9,8 @@ #define LINUX_SPI_DEVICE_NUM_DEVICES 6 #elif CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_NAVIO #define LINUX_SPI_DEVICE_NUM_DEVICES 2 +#elif CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_BBBMINI +#define LINUX_SPI_DEVICE_NUM_DEVICES 2 #else #define LINUX_SPI_DEVICE_NUM_DEVICES 0 #endif -- GitLab