bsp: FreeRTOS: modified freertos for bug fix and openamp support
This patch modifies tcl file to correct configCLEAR_TICK_INTERRUPT API definition and added ttc stop & initialize ttc again if ttc config fails on rerun. Signed-off-by: Kinjal Pravinbhai Patel <patelki@xilinx.com> Acked by: Anirudha Sarangi <anirudh@xilinx.com>
This commit is contained in:
parent
5b3ea5f28f
commit
ab0e0327d9
2 changed files with 18 additions and 15 deletions
|
@ -585,7 +585,7 @@ proc generate {os_handle} {
|
|||
puts $config_file "void FreeRTOS_SetupTickInterrupt( void );"
|
||||
puts $config_file "#define configSETUP_TICK_INTERRUPT() FreeRTOS_SetupTickInterrupt()\n"
|
||||
puts $config_file "void FreeRTOS_ClearTickInterrupt( void );"
|
||||
puts $config_file "#define portCLEAR_TICK_INTERRUPT() FreeRTOS_ClearTickInterrupt()\n"
|
||||
puts $config_file "#define configCLEAR_TICK_INTERRUPT() FreeRTOS_ClearTickInterrupt()\n"
|
||||
|
||||
set max_api_call_interrupt_priority [common::get_property CONFIG.max_api_call_interrupt_priority $os_handle]
|
||||
xput_define $config_file "configMAX_API_CALL_INTERRUPT_PRIORITY" "($max_api_call_interrupt_priority)"
|
||||
|
|
|
@ -95,7 +95,7 @@ void vApplicationStackOverflowHook( TaskHandle_t xTask, char *pcTaskName ) __att
|
|||
|
||||
/* Timer used to generate the tick interrupt. */
|
||||
static XTtcPs xTimerInstance;
|
||||
|
||||
XScuGic xInterruptController;
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
void FreeRTOS_SetupTickInterrupt( void )
|
||||
|
@ -104,7 +104,6 @@ uint16_t usInterval;
|
|||
uint8_t ucPrescaler;
|
||||
int iStatus;
|
||||
XTtcPs_Config *pxTimerConfig;
|
||||
XScuGic xInterruptController;
|
||||
XScuGic_Config *pxInterruptControllerConfig;
|
||||
|
||||
/* Initialize the interrupt controller driver. */
|
||||
|
@ -131,22 +130,26 @@ XScuGic_Config *pxInterruptControllerConfig;
|
|||
pxTimerConfig = XTtcPs_LookupConfig( configTIMER_ID );
|
||||
|
||||
iStatus = XTtcPs_CfgInitialize( &xTimerInstance, pxTimerConfig, pxTimerConfig->BaseAddress );
|
||||
|
||||
if( iStatus != XST_SUCCESS )
|
||||
{
|
||||
xil_printf( "In %s: Timer Cfg initialization failed...\r\n", __func__ );
|
||||
XTtcPs_Stop(&xTimerInstance);
|
||||
iStatus = XTtcPs_CfgInitialize( &xTimerInstance, pxTimerConfig, pxTimerConfig->BaseAddress );
|
||||
if( iStatus != XST_SUCCESS )
|
||||
{
|
||||
xil_printf( "In %s: Timer Cfg initialization failed...\r\n", __func__ );
|
||||
return;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
XTtcPs_SetOptions( &xTimerInstance, XTTCPS_OPTION_INTERVAL_MODE | XTTCPS_OPTION_WAVE_DISABLE );
|
||||
XTtcPs_CalcIntervalFromFreq( &xTimerInstance, configTICK_RATE_HZ, &usInterval, &ucPrescaler );
|
||||
XTtcPs_SetInterval( &xTimerInstance, usInterval );
|
||||
XTtcPs_SetPrescaler( &xTimerInstance, ucPrescaler );
|
||||
XTtcPs_SetOptions( &xTimerInstance, XTTCPS_OPTION_INTERVAL_MODE | XTTCPS_OPTION_WAVE_DISABLE );
|
||||
XTtcPs_CalcIntervalFromFreq( &xTimerInstance, configTICK_RATE_HZ, &usInterval, &ucPrescaler );
|
||||
XTtcPs_SetInterval( &xTimerInstance, usInterval );
|
||||
XTtcPs_SetPrescaler( &xTimerInstance, ucPrescaler );
|
||||
/* Enable the interrupt for timer. */
|
||||
XScuGic_EnableIntr( configINTERRUPT_CONTROLLER_BASE_ADDRESS, configTIMER_INTERRUPT_ID );
|
||||
XTtcPs_EnableInterrupts( &xTimerInstance, XTTCPS_IXR_INTERVAL_MASK );
|
||||
XTtcPs_Start( &xTimerInstance );
|
||||
|
||||
/* Enable the interrupt for timer. */
|
||||
XScuGic_EnableIntr( configINTERRUPT_CONTROLLER_BASE_ADDRESS, configTIMER_INTERRUPT_ID );
|
||||
XTtcPs_EnableInterrupts( &xTimerInstance, XTTCPS_IXR_INTERVAL_MASK );
|
||||
XTtcPs_Start( &xTimerInstance );
|
||||
}
|
||||
}
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue