Browse Source

AP_HAL_Linux: add support for Aerotenna OcPoC-Zynq hardware

master
davidaroyer 8 years ago committed by Lucas De Marchi
parent
commit
7d2e44862f
  1. 10
      libraries/AP_HAL_Linux/HAL_Linux_Class.cpp
  2. 3
      libraries/AP_HAL_Linux/RCInput_SBUS.cpp
  3. 5
      libraries/AP_HAL_Linux/RCInput_SBUS.h
  4. 4
      libraries/AP_HAL_Linux/RCInput_ZYNQ.cpp
  5. 5
      libraries/AP_HAL_Linux/RCInput_ZYNQ.h
  6. 5
      libraries/AP_HAL_Linux/RCOutput_ZYNQ.h
  7. 6
      libraries/AP_HAL_Linux/SPIDevice.cpp

10
libraries/AP_HAL_Linux/HAL_Linux_Class.cpp

@ -32,6 +32,7 @@ @@ -32,6 +32,7 @@
#include "RCInput_UDP.h"
#include "RCInput_115200.h"
#include "RCInput_Multi.h"
#include "RCInput_ZYNQ.h"
#include "RCOutput_AeroIO.h"
#include "RCOutput_AioPRU.h"
#include "RCOutput_Bebop.h"
@ -156,6 +157,12 @@ static RCInput_RPI rcinDriver; @@ -156,6 +157,12 @@ static RCInput_RPI rcinDriver;
static RCInput_Raspilot rcinDriver;
#elif CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_ZYNQ
static RCInput_ZYNQ rcinDriver;
#elif CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_OCPOC_ZYNQ
#if OCPOC_DEFAULT_RCIN_SBUS
static RCInput_SBUS rcinDriver;
#else
static RCInput_ZYNQ rcinDriver;
#endif
#elif CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_BEBOP
static RCInput_UDP rcinDriver;
#elif CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_MINLURE
@ -195,7 +202,8 @@ static RCOutput_PCA9685 rcoutDriver(i2c_mgr_instance.get_device(1, PCA9685_QUINA @@ -195,7 +202,8 @@ static RCOutput_PCA9685 rcoutDriver(i2c_mgr_instance.get_device(1, PCA9685_QUINA
*/
#elif CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_RASPILOT
static RCOutput_Raspilot rcoutDriver;
#elif CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_ZYNQ
#elif CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_ZYNQ || \
CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_OCPOC_ZYNQ
static RCOutput_ZYNQ rcoutDriver;
#elif CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_BEBOP
static RCOutput_Bebop rcoutDriver(i2c_mgr_instance.get_device(HAL_RCOUT_BEBOP_BLDC_I2C_BUS, HAL_RCOUT_BEBOP_BLDC_I2C_ADDR));

3
libraries/AP_HAL_Linux/RCInput_SBUS.cpp

@ -21,7 +21,8 @@ @@ -21,7 +21,8 @@
#include <AP_HAL/AP_HAL.h>
#if CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_DISCO || \
CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_AERO
CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_AERO || \
CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_OCPOC_ZYNQ
#include "RCInput_SBUS.h"
#include <stdio.h>
#include <fcntl.h>

5
libraries/AP_HAL_Linux/RCInput_SBUS.h

@ -17,7 +17,8 @@ @@ -17,7 +17,8 @@
#include <AP_HAL/AP_HAL.h>
#if CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_DISCO || \
CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_AERO
CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_AERO || \
CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_OCPOC_ZYNQ
#include "RCInput.h"
@ -35,6 +36,8 @@ private: @@ -35,6 +36,8 @@ private:
const char *device_path = "/dev/ttyS1";
#elif CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_DISCO
const char *device_path = "/dev/uart-sbus";
#elif CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_OCPOC_ZYNQ
const char *device_path = "/dev/ttyS2";
#else
const char *device_path = nullptr;
#endif

4
libraries/AP_HAL_Linux/RCInput_ZYNQ.cpp

@ -16,7 +16,11 @@ @@ -16,7 +16,11 @@
#include "GPIO.h"
#if CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_OCPOC_ZYNQ
#define RCIN_ZYNQ_PULSE_INPUT_BASE 0x43c70000
#else
#define RCIN_ZYNQ_PULSE_INPUT_BASE 0x43c10000
#endif
extern const AP_HAL::HAL& hal;

5
libraries/AP_HAL_Linux/RCInput_ZYNQ.h

@ -15,8 +15,13 @@ public: @@ -15,8 +15,13 @@ public:
void _timer_tick(void);
private:
#if CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_OCPOC_ZYNQ
static const int TICK_PER_US=50;
static const int TICK_PER_S=50000000;
#else
static const int TICK_PER_US=100;
static const int TICK_PER_S=100000000;
#endif
// Memory mapped keyhole register to pulse input FIFO
volatile uint32_t *pulse_input;

5
libraries/AP_HAL_Linux/RCOutput_ZYNQ.h

@ -20,8 +20,13 @@ public: @@ -20,8 +20,13 @@ public:
void push(void) override;
private:
#if CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_OCPOC_ZYNQ
static const int TICK_PER_US=50;
static const int TICK_PER_S=50000000;
#else
static const int TICK_PER_US=100;
static const int TICK_PER_S=100000000;
#endif
// Period|Hi 32 bits each
struct s_period_hi {

6
libraries/AP_HAL_Linux/SPIDevice.cpp

@ -107,6 +107,12 @@ SPIDesc SPIDeviceManager::_device[] = { @@ -107,6 +107,12 @@ SPIDesc SPIDeviceManager::_device[] = {
SPIDesc("lsm9ds0_g", 0, 0, SPI_MODE_3, 8, RPI_GPIO_12, 10*MHZ, 10*MHZ),
SPIDesc("raspio", 0, 0, SPI_MODE_3, 8, RPI_GPIO_7, 10*MHZ, 10*MHZ),
};
#elif CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_OCPOC_ZYNQ
SPIDesc SPIDeviceManager::_device[] = {
/* MPU9250 is restricted to 1MHz for non-data and interrupt registers */
SPIDesc("mpu9250", 1, 0, SPI_MODE_3, 8, SPI_CS_KERNEL, 1*MHZ, 10*MHZ),
SPIDesc("ms5611", 1, 1, SPI_MODE_3, 8, SPI_CS_KERNEL, 1*MHZ, 10*MHZ),
};
#elif CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_BH
SPIDesc SPIDeviceManager::_device[] = {
SPIDesc("mpu9250", 0, 0, SPI_MODE_0, 8, RPI_GPIO_7, 1*MHZ, 11*MHZ),

Loading…
Cancel
Save