1
0
mirror of https://bitbucket.org/librepilot/librepilot.git synced 2025-02-27 16:54:15 +01:00

LP-97 - Move the common Init process within the System module (coptercontrol/revolution)

This commit is contained in:
Alessio Morale 2015-08-18 15:25:33 +02:00 committed by a*morale
parent 3eaf1ef3c3
commit b88681c69f
11 changed files with 85 additions and 312 deletions

View File

@ -1,12 +1,13 @@
/** /**
****************************************************************************** ******************************************************************************
* @addtogroup OpenPilotModules OpenPilot Modules * @addtogroup LibrePilotModules LibrePilot Modules
* @{ * @{
* @addtogroup SystemModule System Module * @addtogroup SystemModule System Module
* @{ * @{
* *
* @file systemmod.h * @file systemmod.h
* @author The OpenPilot Team, http://www.openpilot.org Copyright (C) 2010. * @author The LibrePilot Project, http://www.librepilot.org Copyright (C) 2015.
* The OpenPilot Team, http://www.openpilot.org Copyright (C) 2010.
* @brief System module * @brief System module
* *
* @see The GNU Public License (GPL) Version 3 * @see The GNU Public License (GPL) Version 3
@ -30,6 +31,6 @@
#ifndef SYSTEMMOD_H #ifndef SYSTEMMOD_H
#define SYSTEMMOD_H #define SYSTEMMOD_H
int32_t SystemModInitialize(void); int32_t SystemModStart(void);
#endif // SYSTEMMOD_H #endif // SYSTEMMOD_H

View File

@ -1,7 +1,7 @@
/** /**
****************************************************************************** ******************************************************************************
* @addtogroup OpenPilotModules OpenPilot Modules * @addtogroup LibrePilotModules LibrePilot Modules
* @brief The OpenPilot Modules do the majority of the control in OpenPilot. The * @brief The LibrePilot Modules do the majority of the control in LibrePilot. The
* @ref SystemModule "System Module" starts all the other modules that then take care * @ref SystemModule "System Module" starts all the other modules that then take care
* of all the telemetry and control algorithms and such. This is done through the @ref PIOS * of all the telemetry and control algorithms and such. This is done through the @ref PIOS
* "PIOS Hardware abstraction layer" which then contains hardware specific implementations * "PIOS Hardware abstraction layer" which then contains hardware specific implementations
@ -16,7 +16,8 @@
* @{ * @{
* *
* @file systemmod.c * @file systemmod.c
* @author The OpenPilot Team, http://www.openpilot.org Copyright (C) 2010. * @author The LibrePilot Project, http://www.librepilot.org Copyright (C) 2015.
* The OpenPilot Team, http://www.openpilot.org Copyright (C) 2010-2015.
* @brief System module * @brief System module
* *
* @see The GNU Public License (GPL) Version 3 * @see The GNU Public License (GPL) Version 3
@ -119,6 +120,7 @@ static void systemTask(void *parameters);
static void updateI2Cstats(); static void updateI2Cstats();
static void updateWDGstats(); static void updateWDGstats();
#endif #endif
extern void PIOS_Board_Init(void);
extern uintptr_t pios_uavo_settings_fs_id; extern uintptr_t pios_uavo_settings_fs_id;
extern uintptr_t pios_user_fs_id; extern uintptr_t pios_user_fs_id;
@ -134,8 +136,6 @@ int32_t SystemModStart(void)
mallocFailed = false; mallocFailed = false;
// Create system task // Create system task
xTaskCreate(systemTask, "System", STACK_SIZE_BYTES / 4, NULL, TASK_PRIORITY, &systemTaskHandle); xTaskCreate(systemTask, "System", STACK_SIZE_BYTES / 4, NULL, TASK_PRIORITY, &systemTaskHandle);
// Register task
PIOS_TASK_MONITOR_RegisterTask(TASKINFO_RUNNING_SYSTEM, systemTaskHandle);
return 0; return 0;
} }
@ -169,8 +169,6 @@ int32_t SystemModInitialize(void)
return -1; return -1;
} }
SystemModStart();
return 0; return 0;
} }
@ -180,6 +178,12 @@ MODULE_INITCALL(SystemModInitialize, 0);
*/ */
static void systemTask(__attribute__((unused)) void *parameters) static void systemTask(__attribute__((unused)) void *parameters)
{ {
/* board driver init */
PIOS_Board_Init();
/* Initialize all modules */
MODULE_INITIALISE_ALL;
while (!initTaskDone) { while (!initTaskDone) {
vTaskDelay(10); vTaskDelay(10);
} }
@ -190,6 +194,9 @@ static void systemTask(__attribute__((unused)) void *parameters)
/* start the delayed callback scheduler */ /* start the delayed callback scheduler */
PIOS_CALLBACKSCHEDULER_Start(); PIOS_CALLBACKSCHEDULER_Start();
// Register task
PIOS_TASK_MONITOR_RegisterTask(TASKINFO_RUNNING_SYSTEM, systemTaskHandle);
if (mallocFailed) { if (mallocFailed) {
/* We failed to malloc during task creation, /* We failed to malloc during task creation,
* system behaviour is undefined. Reset and let * system behaviour is undefined. Reset and let
@ -529,6 +536,7 @@ static uint16_t GetFreeIrqStackSize(void)
static void updateStats() static void updateStats()
{ {
SystemStatsData stats; SystemStatsData stats;
// Get stats and update // Get stats and update
SystemStatsGet(&stats); SystemStatsGet(&stats);
stats.FlightTime = xTaskGetTickCount() * portTICK_RATE_MS; stats.FlightTime = xTaskGetTickCount() * portTICK_RATE_MS;

View File

@ -7,7 +7,8 @@
* @{ * @{
* *
* @file pios_initcall.h * @file pios_initcall.h
* @author The OpenPilot Team, http://www.openpilot.org Copyright (C) 2011. * @author The LibrePilot Project, http://www.librepilot.org Copyright (C) 2015.
* The OpenPilot Team, http://www.openpilot.org Copyright (C) 2010-2015
* @brief Initcall header * @brief Initcall header
* @see The GNU Public License (GPL) Version 3 * @see The GNU Public License (GPL) Version 3
* *
@ -55,6 +56,7 @@ extern volatile int initTaskDone;
extern void InitModules(); extern void InitModules();
extern void StartModules(); extern void StartModules();
extern int32_t SystemModInitialize(void);
#define MODULE_INITCALL(ifn, sfn) #define MODULE_INITCALL(ifn, sfn)

View File

@ -56,9 +56,6 @@ void PIOS_Board_Init(void)
/* Flash 2 wait state */ /* Flash 2 wait state */
FLASH_SetLatency(FLASH_Latency_2); FLASH_SetLatency(FLASH_Latency_2);
/* Delay system */
PIOS_DELAY_Init();
const struct pios_board_info *bdinfo = &pios_board_info_blob; const struct pios_board_info *bdinfo = &pios_board_info_blob;
#if defined(PIOS_INCLUDE_LED) #if defined(PIOS_INCLUDE_LED)

View File

@ -1,17 +1,18 @@
/** /**
****************************************************************************** ******************************************************************************
* @addtogroup OpenPilotSystem OpenPilot System * @addtogroup LibrePilotSystem LibrePilot System
* @brief These files are the core system files of OpenPilot. * @brief These files are the core system files for CopterControl.
* They are the ground layer just above PiOS. In practice, OpenPilot actually starts * They are the ground layer just above PiOS. In practice, CopterControl actually starts
* in the main() function of openpilot.c * in the main() function of coptercontrol.c
* @{ * @{
* @addtogroup OpenPilotCore OpenPilot Core * @addtogroup LibrePilotCore LibrePilot Core
* @brief This is where the OP firmware starts. Those files also define the compile-time * @brief This is where the LP firmware starts. Those files also define the compile-time
* options of the firmware. * options of the firmware.
* @{ * @{
* @file openpilot.c * @file coptercontrol.c
* @author The OpenPilot Team, http://www.openpilot.org Copyright (C) 2010. * @author The LibrePilot Project, http://www.librepilot.org Copyright (C) 2015.
* @brief Sets up and runs main OpenPilot tasks. * The OpenPilot Team, http://www.openpilot.org Copyright (C) 2010-2015
* @brief Sets up and runs main tasks.
* @see The GNU Public License (GPL) Version 3 * @see The GNU Public License (GPL) Version 3
* *
*****************************************************************************/ *****************************************************************************/
@ -32,18 +33,11 @@
*/ */
#include "inc/openpilot.h" #include "inc/openpilot.h"
#include <uavobjectsinit.h> #include <systemmod.h>
#include <hwsettings.h>
/* Task Priorities */ /* Task Priorities */
#define PRIORITY_TASK_HOOKS (tskIDLE_PRIORITY + 3)
/* Global Variables */ /* Global Variables */
/* Prototype of PIOS_Board_Init() function */
extern void PIOS_Board_Init(void);
extern void Stack_Change(void); extern void Stack_Change(void);
/** /**
* OpenPilot Main function: * OpenPilot Main function:
* *
@ -61,24 +55,9 @@ int main()
/* Brings up System using CMSIS functions, enables the LEDs. */ /* Brings up System using CMSIS functions, enables the LEDs. */
PIOS_SYS_Init(); PIOS_SYS_Init();
/* Architecture dependant Hardware and
* core subsystem initialisation
* (see pios_board.c for your arch)
* */
PIOS_Board_Init();
#ifdef ERASE_FLASH SystemModStart();
PIOS_Flash_Jedec_EraseChip();
#if defined(PIOS_LED_HEARTBEAT)
PIOS_LED_Off(PIOS_LED_HEARTBEAT);
#endif /* PIOS_LED_HEARTBEAT */
while (1) {
;
}
#endif
/* Initialize modules */
MODULE_INITIALISE_ALL
/* swap the stack to use the IRQ stack */ /* swap the stack to use the IRQ stack */
Stack_Change(); Stack_Change();

View File

@ -4,10 +4,9 @@
* @author The LibrePilot Project, http://www.librepilot.org Copyright (C) 2015. * @author The LibrePilot Project, http://www.librepilot.org Copyright (C) 2015.
* The OpenPilot Team, http://www.openpilot.org Copyright (C) 2010. * The OpenPilot Team, http://www.openpilot.org Copyright (C) 2010.
* PhoenixPilot, http://github.com/PhoenixPilot, Copyright (C) 2012 * PhoenixPilot, http://github.com/PhoenixPilot, Copyright (C) 2012
* * @addtogroup LibrePilotSystem LibrePilot System
* @addtogroup OpenPilotSystem OpenPilot System
* @{ * @{
* @addtogroup OpenPilotCore OpenPilot Core * @addtogroup LibrePilotCore LibrePilot Core
* @{ * @{
* @brief Defines board specific static initializers for hardware for the CopterControl board. * @brief Defines board specific static initializers for hardware for the CopterControl board.
*****************************************************************************/ *****************************************************************************/
@ -156,8 +155,6 @@ static const struct pios_mpu6000_cfg pios_mpu6000_cfg = {
int32_t init_test; int32_t init_test;
void PIOS_Board_Init(void) void PIOS_Board_Init(void)
{ {
/* Delay system */
PIOS_DELAY_Init();
const struct pios_board_info *bdinfo = &pios_board_info_blob; const struct pios_board_info *bdinfo = &pios_board_info_blob;

View File

@ -1,17 +1,18 @@
/** /**
****************************************************************************** ******************************************************************************
* @addtogroup OpenPilotSystem OpenPilot System * @addtogroup LibrePilotSystem LibrePilot System
* @brief These files are the core system files of OpenPilot. * @brief These files are the core system files for Revolution.
* They are the ground layer just above PiOS. In practice, OpenPilot actually starts * They are the ground layer just above PiOS. In practice, Revolution actually starts
* in the main() function of openpilot.c * in the main() function of revolution.c
* @{ * @{
* @addtogroup OpenPilotCore OpenPilot Core * @addtogroup LibrePilotCore LibrePilot Core
* @brief This is where the OP firmware starts. Those files also define the compile-time * @brief This is where the LP firmware starts. Those files also define the compile-time
* options of the firmware. * options of the firmware.
* @{ * @{
* @file openpilot.c * @file revolution.cpp
* @author The OpenPilot Team, http://www.openpilot.org Copyright (C) 2010. * @author The LibrePilot Project, http://www.librepilot.org Copyright (C) 2015.
* @brief Sets up and runs main OpenPilot tasks. * The OpenPilot Team, http://www.openpilot.org Copyright (C) 2010-2015
* @brief Sets up and runs main tasks.
* @see The GNU Public License (GPL) Version 3 * @see The GNU Public License (GPL) Version 3
* *
*****************************************************************************/ *****************************************************************************/
@ -34,46 +35,12 @@
extern "C" { extern "C" {
#include "inc/openpilot.h" #include "inc/openpilot.h"
#include <uavobjectsinit.h> #include <uavobjectsinit.h>
#include <systemmod.h>
/* Task Priorities */
#define PRIORITY_TASK_HOOKS (tskIDLE_PRIORITY + 3)
/* Global Variables */ /* Global Variables */
/* Local Variables */ /* Local Variables */
#define INCLUDE_TEST_TASKS 0
#if INCLUDE_TEST_TASKS
static uint8_t sdcard_available;
#endif
char Buffer[1024];
uint32_t Cache;
/* Function Prototypes */
#if INCLUDE_TEST_TASKS
static void TaskTick(void *pvParameters);
static void TaskTesting(void *pvParameters);
static void TaskHIDTest(void *pvParameters);
static void TaskServos(void *pvParameters);
static void TaskSDCard(void *pvParameters);
#endif
int32_t CONSOLE_Parse(uint8_t port, char c);
void OP_ADC_NotifyChange(uint32_t pin, uint32_t pin_value);
/* Prototype of PIOS_Board_Init() function */
extern void PIOS_Board_Init(void);
extern void Stack_Change(void);
static void Stack_Change_Weak() __attribute__((weakref("Stack_Change")));
/* Local Variables */
#define INIT_TASK_PRIORITY (tskIDLE_PRIORITY + configMAX_PRIORITIES - 1) // max priority
#define INIT_TASK_STACK (1024 / 4) // XXX this seems excessive
static xTaskHandle initTaskHandle;
/* Function Prototypes */
static void initTask(void *parameters);
/* Prototype of generated InitModules() function */
extern void InitModules(void);
} }
/** /**
@ -87,8 +54,6 @@ extern void InitModules(void);
*/ */
int main() int main()
{ {
int result;
/* NOTE: Do NOT modify the following start-up sequence */ /* NOTE: Do NOT modify the following start-up sequence */
/* Any new initialization functions should be added in OpenPilotInit() */ /* Any new initialization functions should be added in OpenPilotInit() */
vPortInitialiseBlocks(); vPortInitialiseBlocks();
@ -96,12 +61,7 @@ int main()
/* Brings up System using CMSIS functions, enables the LEDs. */ /* Brings up System using CMSIS functions, enables the LEDs. */
PIOS_SYS_Init(); PIOS_SYS_Init();
/* For Revolution we use a FreeRTOS task to bring up the system so we can */ SystemModStart();
/* always rely on FreeRTOS primitive */
result = xTaskCreate(initTask, "init",
INIT_TASK_STACK, NULL, INIT_TASK_PRIORITY,
&initTaskHandle);
PIOS_Assert(result == pdPASS);
/* Start the FreeRTOS scheduler */ /* Start the FreeRTOS scheduler */
vTaskStartScheduler(); vTaskStartScheduler();
@ -117,22 +77,7 @@ int main()
return 0; return 0;
} }
/**
* Initialisation task.
*
* Runs board and module initialisation, then terminates.
*/
void initTask(__attribute__((unused)) void *parameters)
{
/* board driver init */
PIOS_Board_Init();
/* Initialize modules */
MODULE_INITIALISE_ALL;
/* terminate this task */
vTaskDelete(NULL);
}
/** /**
* @} * @}

View File

@ -1,17 +1,18 @@
/** /**
****************************************************************************** ******************************************************************************
* @addtogroup OpenPilotSystem OpenPilot System * @addtogroup LibrePilotSystem LibrePilot System
* @brief These files are the core system files of OpenPilot. * @brief These files are the core system files for Revolution.
* They are the ground layer just above PiOS. In practice, OpenPilot actually starts * They are the ground layer just above PiOS. In practice, Revolution actually starts
* in the main() function of openpilot.c * in the main() function of revolution.c
* @{ * @{
* @addtogroup OpenPilotCore OpenPilot Core * @addtogroup LibrePilotCore LibrePilot Core
* @brief This is where the OP firmware starts. Those files also define the compile-time * @brief This is where the LP firmware starts. Those files also define the compile-time
* options of the firmware. * options of the firmware.
* @{ * @{
* @file openpilot.c * @file revolution.cpp
* @author The OpenPilot Team, http://www.openpilot.org Copyright (C) 2010. * @author The LibrePilot Project, http://www.librepilot.org Copyright (C) 2015.
* @brief Sets up and runs main OpenPilot tasks. * The OpenPilot Team, http://www.openpilot.org Copyright (C) 2010-2015
* @brief Sets up and runs main tasks.
* @see The GNU Public License (GPL) Version 3 * @see The GNU Public License (GPL) Version 3
* *
*****************************************************************************/ *****************************************************************************/
@ -34,29 +35,12 @@
extern "C" { extern "C" {
#include "inc/openpilot.h" #include "inc/openpilot.h"
#include <uavobjectsinit.h> #include <uavobjectsinit.h>
#include <systemmod.h>
/* Task Priorities */
#define PRIORITY_TASK_HOOKS (tskIDLE_PRIORITY + 3)
/* Global Variables */ /* Global Variables */
/* Local Variables */ /* Local Variables */
/* Prototype of PIOS_Board_Init() function */
extern void PIOS_Board_Init(void);
extern void Stack_Change(void);
static void Stack_Change_Weak() __attribute__((weakref("Stack_Change")));
/* Local Variables */
#define INIT_TASK_PRIORITY (tskIDLE_PRIORITY + configMAX_PRIORITIES - 1) // max priority
#define INIT_TASK_STACK (1024 / 4) // XXX this seems excessive
static xTaskHandle initTaskHandle;
/* Function Prototypes */
static void initTask(void *parameters);
/* Prototype of generated InitModules() function */
extern void InitModules(void);
} }
/** /**
@ -70,8 +54,6 @@ extern void InitModules(void);
*/ */
int main() int main()
{ {
int result;
/* NOTE: Do NOT modify the following start-up sequence */ /* NOTE: Do NOT modify the following start-up sequence */
/* Any new initialization functions should be added in OpenPilotInit() */ /* Any new initialization functions should be added in OpenPilotInit() */
vPortInitialiseBlocks(); vPortInitialiseBlocks();
@ -79,12 +61,7 @@ int main()
/* Brings up System using CMSIS functions, enables the LEDs. */ /* Brings up System using CMSIS functions, enables the LEDs. */
PIOS_SYS_Init(); PIOS_SYS_Init();
/* For Revolution we use a FreeRTOS task to bring up the system so we can */ SystemModStart();
/* always rely on FreeRTOS primitive */
result = xTaskCreate(initTask, "init",
INIT_TASK_STACK, NULL, INIT_TASK_PRIORITY,
&initTaskHandle);
PIOS_Assert(result == pdPASS);
/* Start the FreeRTOS scheduler */ /* Start the FreeRTOS scheduler */
vTaskStartScheduler(); vTaskStartScheduler();
@ -100,22 +77,7 @@ int main()
return 0; return 0;
} }
/**
* Initialisation task.
*
* Runs board and module initialisation, then terminates.
*/
void initTask(__attribute__((unused)) void *parameters)
{
/* board driver init */
PIOS_Board_Init();
/* Initialize modules */
MODULE_INITIALISE_ALL;
/* terminate this task */
vTaskDelete(NULL);
}
/** /**
* @} * @}

View File

@ -1,17 +1,18 @@
/** /**
****************************************************************************** ******************************************************************************
* @addtogroup OpenPilotSystem OpenPilot System * @addtogroup LibrePilotSystem LibrePilot System
* @brief These files are the core system files of OpenPilot. * @brief These files are the core system files for Revolution.
* They are the ground layer just above PiOS. In practice, OpenPilot actually starts * They are the ground layer just above PiOS. In practice, Revolution actually starts
* in the main() function of openpilot.c * in the main() function of revolution.c
* @{ * @{
* @addtogroup OpenPilotCore OpenPilot Core * @addtogroup LibrePilotCore LibrePilot Core
* @brief This is where the OP firmware starts. Those files also define the compile-time * @brief This is where the LP firmware starts. Those files also define the compile-time
* options of the firmware. * options of the firmware.
* @{ * @{
* @file openpilot.c * @file revolution.cpp
* @author The OpenPilot Team, http://www.openpilot.org Copyright (C) 2010. * @author The LibrePilot Project, http://www.librepilot.org Copyright (C) 2015.
* @brief Sets up and runs main OpenPilot tasks. * The OpenPilot Team, http://www.openpilot.org Copyright (C) 2010-2015
* @brief Sets up and runs main tasks.
* @see The GNU Public License (GPL) Version 3 * @see The GNU Public License (GPL) Version 3
* *
*****************************************************************************/ *****************************************************************************/
@ -34,46 +35,12 @@
extern "C" { extern "C" {
#include "inc/openpilot.h" #include "inc/openpilot.h"
#include <uavobjectsinit.h> #include <uavobjectsinit.h>
#include <systemmod.h>
/* Task Priorities */
#define PRIORITY_TASK_HOOKS (tskIDLE_PRIORITY + 3)
/* Global Variables */ /* Global Variables */
/* Local Variables */ /* Local Variables */
#define INCLUDE_TEST_TASKS 0
#if INCLUDE_TEST_TASKS
static uint8_t sdcard_available;
#endif
char Buffer[1024];
uint32_t Cache;
/* Function Prototypes */
#if INCLUDE_TEST_TASKS
static void TaskTick(void *pvParameters);
static void TaskTesting(void *pvParameters);
static void TaskHIDTest(void *pvParameters);
static void TaskServos(void *pvParameters);
static void TaskSDCard(void *pvParameters);
#endif
int32_t CONSOLE_Parse(uint8_t port, char c);
void OP_ADC_NotifyChange(uint32_t pin, uint32_t pin_value);
/* Prototype of PIOS_Board_Init() function */
extern void PIOS_Board_Init(void);
extern void Stack_Change(void);
static void Stack_Change_Weak() __attribute__((weakref("Stack_Change")));
/* Local Variables */
#define INIT_TASK_PRIORITY (tskIDLE_PRIORITY + configMAX_PRIORITIES - 1) // max priority
#define INIT_TASK_STACK (1024 / 4) // XXX this seems excessive
static xTaskHandle initTaskHandle;
/* Function Prototypes */
static void initTask(void *parameters);
/* Prototype of generated InitModules() function */
extern void InitModules(void);
} }
/** /**
@ -87,8 +54,6 @@ extern void InitModules(void);
*/ */
int main() int main()
{ {
int result;
/* NOTE: Do NOT modify the following start-up sequence */ /* NOTE: Do NOT modify the following start-up sequence */
/* Any new initialization functions should be added in OpenPilotInit() */ /* Any new initialization functions should be added in OpenPilotInit() */
vPortInitialiseBlocks(); vPortInitialiseBlocks();
@ -96,12 +61,7 @@ int main()
/* Brings up System using CMSIS functions, enables the LEDs. */ /* Brings up System using CMSIS functions, enables the LEDs. */
PIOS_SYS_Init(); PIOS_SYS_Init();
/* For Revolution we use a FreeRTOS task to bring up the system so we can */ SystemModStart();
/* always rely on FreeRTOS primitive */
result = xTaskCreate(initTask, "init",
INIT_TASK_STACK, NULL, INIT_TASK_PRIORITY,
&initTaskHandle);
PIOS_Assert(result == pdPASS);
/* Start the FreeRTOS scheduler */ /* Start the FreeRTOS scheduler */
vTaskStartScheduler(); vTaskStartScheduler();
@ -117,22 +77,7 @@ int main()
return 0; return 0;
} }
/**
* Initialisation task.
*
* Runs board and module initialisation, then terminates.
*/
void initTask(__attribute__((unused)) void *parameters)
{
/* board driver init */
PIOS_Board_Init();
/* Initialize modules */
MODULE_INITIALISE_ALL;
/* terminate this task */
vTaskDelete(NULL);
}
/** /**
* @} * @}

View File

@ -2,6 +2,7 @@
# #
# TODO: This file should be reworked. It will be done as a part of sim target refactoring. # TODO: This file should be reworked. It will be done as a part of sim target refactoring.
# #
# Copyright (c) 2015 The LibrePilot Project, http://www.librepilot.org
# The OpenPilot Team, http://www.openpilot.org, Copyright (C) 2009. # The OpenPilot Team, http://www.openpilot.org, Copyright (C) 2009.
# #
# #

View File

@ -1,17 +1,18 @@
/** /**
****************************************************************************** ******************************************************************************
* @addtogroup OpenPilotSystem OpenPilot System * @addtogroup LibrePilotSystem LibrePilot System
* @brief These files are the core system files of OpenPilot. * @brief These files are the core system files for Simposix.
* They are the ground layer just above PiOS. In practice, OpenPilot actually starts * They are the ground layer just above PiOS. In practice, Simposix actually starts
* in the main() function of openpilot.c * in the main() function of simposix.c
* @{ * @{
* @addtogroup OpenPilotCore OpenPilot Core * @addtogroup LibrePilotCore LibrePilot Core
* @brief This is where the OP firmware starts. Those files also define the compile-time * @brief This is where the LP firmware starts. Those files also define the compile-time
* options of the firmware. * options of the firmware.
* @{ * @{
* @file openpilot.c * @file simposix.cpp
* @author The OpenPilot Team, http://www.openpilot.org Copyright (C) 2010. * @author The LibrePilot Project, http://www.librepilot.org Copyright (C) 2015.
* @brief Sets up and runs main OpenPilot tasks. * The OpenPilot Team, http://www.openpilot.org Copyright (C) 2010-2015
* @brief Sets up and runs main tasks.
* @see The GNU Public License (GPL) Version 3 * @see The GNU Public License (GPL) Version 3
* *
*****************************************************************************/ *****************************************************************************/
@ -35,46 +36,7 @@ extern "C" {
#include "inc/openpilot.h" #include "inc/openpilot.h"
#include <systemmod.h> #include <systemmod.h>
#include <uavobjectsinit.h> #include <uavobjectsinit.h>
#include <systemmod.h>
/* Task Priorities */
#define PRIORITY_TASK_HOOKS (tskIDLE_PRIORITY + 3)
/* Global Variables */
/* Local Variables */
#define INCLUDE_TEST_TASKS 0
#if INCLUDE_TEST_TASKS
static uint8_t sdcard_available;
#endif
char Buffer[1024];
uint32_t Cache;
/* Function Prototypes */
#if INCLUDE_TEST_TASKS
static void TaskTick(void *pvParameters);
static void TaskTesting(void *pvParameters);
static void TaskHIDTest(void *pvParameters);
static void TaskServos(void *pvParameters);
static void TaskSDCard(void *pvParameters);
#endif
int32_t CONSOLE_Parse(uint8_t port, char c);
void OP_ADC_NotifyChange(uint32_t pin, uint32_t pin_value);
/* Prototype of PIOS_Board_Init() function */
extern void PIOS_Board_Init(void);
extern void Stack_Change(void);
static void Stack_Change_Weak() __attribute__((weakref("Stack_Change")));
/* Local Variables */
#define INIT_TASK_PRIORITY (tskIDLE_PRIORITY + configMAX_PRIORITIES - 1) // max priority
#define INIT_TASK_STACK (1024 / 4) // XXX this seems excessive
static xTaskHandle initTaskHandle;
/* Function Prototypes */
static void initTask(void *parameters);
/* Prototype of generated InitModules() function */
extern void InitModules(void);
} }
/** /**
@ -88,20 +50,10 @@ extern void InitModules(void);
*/ */
int main() int main()
{ {
int result;
/* NOTE: Do NOT modify the following start-up sequence */
/* Any new initialization functions should be added in OpenPilotInit() */
/* Brings up System using CMSIS functions, enables the LEDs. */ /* Brings up System using CMSIS functions, enables the LEDs. */
PIOS_SYS_Init(); PIOS_SYS_Init();
/* For Revolution we use a FreeRTOS task to bring up the system so we can */ SystemModStart();
/* always rely on FreeRTOS primitive */
result = xTaskCreate(initTask, "init",
INIT_TASK_STACK, NULL, INIT_TASK_PRIORITY,
&initTaskHandle);
PIOS_Assert(result == pdPASS);
/* Start the FreeRTOS scheduler */ /* Start the FreeRTOS scheduler */
vTaskStartScheduler(); vTaskStartScheduler();
@ -117,22 +69,6 @@ int main()
return 0; return 0;
} }
/**
* Initialisation task.
*
* Runs board and module initialisation, then terminates.
*/
void initTask(__attribute__((unused)) void *parameters)
{
/* board driver init */
PIOS_Board_Init();
/* Initialize modules */
MODULE_INITIALISE_ALL;
/* terminate this task */
vTaskDelete(NULL);
}
/** /**
* @} * @}