Use configINCLUDE_PLATFORM_H_INSTEAD_OF_IODEFINE_H flag

This commit is contained in:
Ravishankar Bhagavandas 2020-08-21 16:16:36 -07:00
parent e7cb025db4
commit b4789ca0d2
4 changed files with 69 additions and 32 deletions

View file

@ -37,11 +37,16 @@
#include "string.h" #include "string.h"
/* Hardware specifics. */ /* Hardware specifics. */
#if defined(configINCLUDE_PLATFORM_H_INSTEAD_OF_IODEFINE_H) && (configINCLUDE_PLATFORM_H_INSTEAD_OF_IODEFINE_H == 1) #if ( configINCLUDE_PLATFORM_H_INSTEAD_OF_IODEFINE_H == 1 )
#include "platform.h" #include "platform.h"
#else
#else /* configINCLUDE_PLATFORM_H_INSTEAD_OF_IODEFINE_H */
#include "iodefine.h" #include "iodefine.h"
#endif
#endif /* configINCLUDE_PLATFORM_H_INSTEAD_OF_IODEFINE_H */
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/
@ -65,26 +70,36 @@ which would require the old IPL to be read first and stored in a local variable.
* access to registers is required. * access to registers is required.
*/ */
static void prvStartFirstTask( void ) __attribute__((naked)); static void prvStartFirstTask( void ) __attribute__((naked));
/* /*
* Software interrupt handler. Performs the actual context switch (saving and * Software interrupt handler. Performs the actual context switch (saving and
* restoring of registers). Written in asm code as direct register access is * restoring of registers). Written in asm code as direct register access is
* required. * required.
*/ */
#if defined(configTICK_VECTOR) #if ( configINCLUDE_PLATFORM_H_INSTEAD_OF_IODEFINE_H == 1 )
void vSoftwareInterruptISR( void ) __attribute__((naked, vector( R_SECNAME_INTVECTTBL, VECT_ICU_SWINT )));
#else R_BSP_PRAGMA_INTERRUPT( vSoftwareInterruptISR, VECT( ICU, SWINT ) )
R_BSP_ATTRIB_INTERRUPT void vSoftwareInterruptISR( void ) __attribute__( ( naked ) );
#else /* configINCLUDE_PLATFORM_H_INSTEAD_OF_IODEFINE_H */
void vSoftwareInterruptISR( void ) __attribute__( ( naked ) ); void vSoftwareInterruptISR( void ) __attribute__( ( naked ) );
#endif
#endif /* configINCLUDE_PLATFORM_H_INSTEAD_OF_IODEFINE_H */
/* /*
* The tick interrupt handler. * The tick ISR handler. The peripheral used is configured by the application
* via a hook/callback function.
*/ */
#if defined(configTICK_VECTOR) #if ( configINCLUDE_PLATFORM_H_INSTEAD_OF_IODEFINE_H == 1 )
void vTickISR( void ) __attribute__((interrupt( R_SECNAME_INTVECTTBL, _VECT( configTICK_VECTOR ) )));
#else R_BSP_PRAGMA_INTERRUPT( vTickISR, _VECT( configTICK_VECTOR ) )
R_BSP_ATTRIB_INTERRUPT void vTickISR( void ); /* Do not add __attribute__( ( interrupt ) ). */
#else /* configINCLUDE_PLATFORM_H_INSTEAD_OF_IODEFINE_H */
void vTickISR( void ) __attribute__( ( interrupt ) ); void vTickISR( void ) __attribute__( ( interrupt ) );
#endif
#endif /* configINCLUDE_PLATFORM_H_INSTEAD_OF_IODEFINE_H */
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/

View file

@ -43,6 +43,12 @@ extern "C" {
*----------------------------------------------------------- *-----------------------------------------------------------
*/ */
/* When the FIT configurator or the Smart Configurator is used, platform.h has to be
* used. */
#ifndef configINCLUDE_PLATFORM_H_INSTEAD_OF_IODEFINE_H
#define configINCLUDE_PLATFORM_H_INSTEAD_OF_IODEFINE_H 0
#endif
/* Type definitions - these are a bit legacy and not really used now, other than /* Type definitions - these are a bit legacy and not really used now, other than
portSTACK_TYPE and portBASE_TYPE. */ portSTACK_TYPE and portBASE_TYPE. */
#define portCHAR char #define portCHAR char

View file

@ -37,11 +37,15 @@
#include "string.h" #include "string.h"
/* Hardware specifics. */ /* Hardware specifics. */
#if defined(configINCLUDE_PLATFORM_H_INSTEAD_OF_IODEFINE_H) && (configINCLUDE_PLATFORM_H_INSTEAD_OF_IODEFINE_H == 1) #if ( configINCLUDE_PLATFORM_H_INSTEAD_OF_IODEFINE_H == 1 )
#include "platform.h" #include "platform.h"
#else
#else /* configINCLUDE_PLATFORM_H_INSTEAD_OF_IODEFINE_H */
#include "iodefine.h" #include "iodefine.h"
#endif
#endif /* configINCLUDE_PLATFORM_H_INSTEAD_OF_IODEFINE_H */
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/
@ -71,21 +75,27 @@ static void prvStartFirstTask( void ) __attribute__((naked));
* restoring of registers). Written in asm code as direct register access is * restoring of registers). Written in asm code as direct register access is
* required. * required.
*/ */
#if defined(configTICK_VECTOR) #if ( configINCLUDE_PLATFORM_H_INSTEAD_OF_IODEFINE_H == 1 )
void vSoftwareInterruptISR( void ) __attribute__((naked, vector( R_BSP_SECNAME_INTVECTTBL, VECT_ICU_SWINT ))); R_BSP_PRAGMA_INTERRUPT( vSoftwareInterruptISR, VECT( ICU, SWINT ) )
#else R_BSP_ATTRIB_INTERRUPT void vSoftwareInterruptISR( void ) __attribute__( ( naked ) );
#else /* configINCLUDE_PLATFORM_H_INSTEAD_OF_IODEFINE_H */
void vSoftwareInterruptISR( void ) __attribute__((naked)); void vSoftwareInterruptISR( void ) __attribute__((naked));
#endif #endif /* configINCLUDE_PLATFORM_H_INSTEAD_OF_IODEFINE_H */
/* /*
* The tick interrupt handler. * The tick ISR handler. The peripheral used is configured by the application
* via a hook/callback function.
*/ */
#if defined(configTICK_VECTOR) #if ( configINCLUDE_PLATFORM_H_INSTEAD_OF_IODEFINE_H == 1 )
void vTickISR( void ) __attribute__((interrupt( R_BSP_SECNAME_INTVECTTBL, _VECT( configTICK_VECTOR ) )));
#else
void vTickISR( void ) __attribute__((interrupt));
#endif
R_BSP_PRAGMA_INTERRUPT( vTickISR, _VECT( configTICK_VECTOR ) )
R_BSP_ATTRIB_INTERRUPT void vTickISR( void ); /* Do not add __attribute__( ( interrupt ) ). */
#else /* configINCLUDE_PLATFORM_H_INSTEAD_OF_IODEFINE_H */
void vTickISR( void ) __attribute__( ( interrupt ) );
#endif /* configINCLUDE_PLATFORM_H_INSTEAD_OF_IODEFINE_H */
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/
extern void *pxCurrentTCB; extern void *pxCurrentTCB;

View file

@ -43,6 +43,12 @@ extern "C" {
*----------------------------------------------------------- *-----------------------------------------------------------
*/ */
/* When the FIT configurator or the Smart Configurator is used, platform.h has to be
* used. */
#ifndef configINCLUDE_PLATFORM_H_INSTEAD_OF_IODEFINE_H
#define configINCLUDE_PLATFORM_H_INSTEAD_OF_IODEFINE_H 0
#endif
/* Type definitions - these are a bit legacy and not really used now, other than /* Type definitions - these are a bit legacy and not really used now, other than
portSTACK_TYPE and portBASE_TYPE. */ portSTACK_TYPE and portBASE_TYPE. */
#define portCHAR char #define portCHAR char