/** * OpenPilot Main function: * * Initialize PiOS<BR> * Create the "System" task (SystemModInitializein Modules/System/systemmod.c) <BR> * Start FreeRTOS Scheduler (vTaskStartScheduler) (Now handled by caller) * If something goes wrong, blink LED1 and LED2 every 100ms * */ int main() { /* 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. */ PIOS_SYS_Init(); /* Architecture dependant Hardware and * core subsystem initialisation * (see pios_board.c for your arch) * */ PIOS_Board_Init(); /* Initialize modules */ MODULE_INITIALISE_ALL(PIOS_WDG_Clear); /* swap the stack to use the IRQ stack */ Stack_Change(); /* Start the FreeRTOS scheduler which should never returns.*/ vTaskStartScheduler(); /* If all is well we will never reach here as the scheduler will now be running. */ /* Do some indication to user that something bad just happened */ while (1) { #if defined(PIOS_LED_HEARTBEAT) PIOS_LED_Toggle(PIOS_LED_HEARTBEAT); #endif /* PIOS_LED_HEARTBEAT */ PIOS_DELAY_WaitmS(100); } return 0; }
/** * Tau Labs Main function: * * Initialize PiOS<BR> * Create the "System" task (SystemModInitializein Modules/System/systemmod.c) <BR> * Start FreeRTOS Scheduler (vTaskStartScheduler) (Now handled by caller) * If something goes wrong, blink LED1 and LED2 every 100ms * */ int main() { /* 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. */ PIOS_SYS_Init(); /* Architecture dependant Hardware and * core subsystem initialisation * (see pios_board.c for your arch) * */ PIOS_Board_Init(); PIOS_WDG_Clear(); #ifdef ERASE_FLASH 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(PIOS_WDG_Clear); /* swap the stack to use the IRQ stack */ Stack_Change(); /* Start the FreeRTOS scheduler, which should never return. * * NOTE: OpenPilot runs an operating system (FreeRTOS), which constantly calls * (schedules) function files (modules). These functions never return from their * while loops, which explains why each module has a while(1){} segment. Thus, * the OpenPilot software actually starts at the vTaskStartScheduler() function, * even though this is somewhat obscure. * * In addition, there are many main() functions in the OpenPilot firmware source tree * This is because each main() refers to a separate hardware platform. Of course, * C only allows one main(), so only the relevant main() function is compiled when * making a specific firmware. * */ vTaskStartScheduler(); /* If all is well we will never reach here as the scheduler will now be running. */ /* Do some indication to user that something bad just happened */ while (1) { #if defined(PIOS_LED_HEARTBEAT) PIOS_LED_Toggle(PIOS_LED_HEARTBEAT); #endif /* PIOS_LED_HEARTBEAT */ PIOS_DELAY_WaitmS(100); } return 0; }
/** * Initialization task. * * Runs board and module initialization, then terminates. */ void initTask(void *parameters) { /* board driver init */ PIOS_Board_Init(); /* Initialize modules */ MODULE_INITIALISE_ALL(PIOS_WDG_Clear); /* terminate this task */ PIOS_Thread_Delete(NULL); }
/** * Initialisation task. * * Runs board and module initialisation, then terminates. */ void initTask(void *parameters) { /* board driver init */ PIOS_Board_Init(); #ifdef ERASE_FLASH 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(PIOS_WDG_Clear); /* terminate this task */ PIOS_Thread_Delete(NULL); }