Clean up portmacro.h
This commit is contained in:
parent
3a5b46a09a
commit
c636adf42c
1 changed files with 28 additions and 48 deletions
|
@ -71,12 +71,11 @@ extern "C" {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include "esp_common.h"
|
#include "esp_common.h"
|
||||||
|
|
||||||
#include <xtruntime.h>
|
#include <xtruntime.h>
|
||||||
#include "xtensa_rtos.h"
|
#include "xtensa_rtos.h"
|
||||||
|
|
||||||
/*-----------------------------------------------------------
|
/*-----------------------------------------------------------
|
||||||
* Port specific definitions.
|
* Port specific definitions for ESP8266
|
||||||
*
|
*
|
||||||
* The settings in this file configure FreeRTOS correctly for the
|
* The settings in this file configure FreeRTOS correctly for the
|
||||||
* given hardware and compiler.
|
* given hardware and compiler.
|
||||||
|
@ -95,8 +94,8 @@ extern "C" {
|
||||||
#define portBASE_TYPE long
|
#define portBASE_TYPE long
|
||||||
|
|
||||||
typedef unsigned portLONG portTickType;
|
typedef unsigned portLONG portTickType;
|
||||||
typedef unsigned int INT32U;
|
|
||||||
#define portMAX_DELAY ( portTickType ) 0xffffffff
|
#define portMAX_DELAY (( portTickType ) UINT32_MAX)
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
/* Architecture specifics. */
|
/* Architecture specifics. */
|
||||||
|
@ -105,44 +104,36 @@ typedef unsigned int INT32U;
|
||||||
#define portBYTE_ALIGNMENT 8
|
#define portBYTE_ALIGNMENT 8
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
#define ICACHE_FLASH_ATTR __attribute__((section(".irom0.text")))
|
|
||||||
|
|
||||||
enum SVC_ReqType {
|
enum SVC_ReqType {
|
||||||
SVC_Software = 1,
|
SVC_Software = 1,
|
||||||
SVC_MACLayer = 2,
|
SVC_MACLayer = 2,
|
||||||
};
|
};
|
||||||
|
|
||||||
/* Scheduler utilities. */
|
/* Scheduler utilities. */
|
||||||
extern void PendSV(enum SVC_ReqType);
|
void PendSV(enum SVC_ReqType);
|
||||||
//#define portYIELD() vPortYield()
|
|
||||||
#define portYIELD() PendSV(SVC_Software)
|
#define portYIELD() PendSV(SVC_Software)
|
||||||
|
|
||||||
/* Task utilities. */
|
/* Task utilities. */
|
||||||
#define portEND_SWITCHING_ISR( xSwitchRequired ) \
|
#define portEND_SWITCHING_ISR( xSwitchRequired ) \
|
||||||
{ \
|
{ \
|
||||||
extern void vTaskSwitchContext( void ); \
|
extern void vTaskSwitchContext( void ); \
|
||||||
\
|
\
|
||||||
if( xSwitchRequired ) \
|
if( xSwitchRequired ) \
|
||||||
{ \
|
{ \
|
||||||
vTaskSwitchContext(); \
|
vTaskSwitchContext(); \
|
||||||
} \
|
} \
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
/* Critical section management. */
|
|
||||||
extern void vPortEnterCritical( void );
|
|
||||||
extern void vPortExitCritical( void );
|
|
||||||
|
|
||||||
//DYC_ISR_DBG
|
|
||||||
void PortDisableInt_NoNest( void );
|
|
||||||
void PortEnableInt_NoNest( void );
|
|
||||||
|
|
||||||
extern char NMIIrqIsOn;
|
extern char NMIIrqIsOn;
|
||||||
extern char level1_int_disabled;
|
extern char level1_int_disabled;
|
||||||
extern unsigned cpu_sr;
|
extern unsigned cpu_sr;
|
||||||
|
|
||||||
|
/* ESPTODO: Currently we store the old interrupt level (ps) in a global variable
|
||||||
|
cpu_sr. It may not be necessary to do this, but it depends on how the blob libraries
|
||||||
|
call into these functions.
|
||||||
|
*/
|
||||||
inline static __attribute__((always_inline)) void _esp_disable_interrupts(void)
|
inline static __attribute__((always_inline)) void _esp_disable_interrupts(void)
|
||||||
{
|
{
|
||||||
if(!NMIIrqIsOn && !level1_int_disabled) {
|
if(!NMIIrqIsOn && !level1_int_disabled) {
|
||||||
|
@ -165,24 +156,13 @@ inline static __attribute__((always_inline)) void _esp_enable_interrupts(void)
|
||||||
/* Restore interrupts to previous level saved in cpu_sr */
|
/* Restore interrupts to previous level saved in cpu_sr */
|
||||||
#define portENABLE_INTERRUPTS() _esp_enable_interrupts()
|
#define portENABLE_INTERRUPTS() _esp_enable_interrupts()
|
||||||
|
|
||||||
|
/* Critical section management. */
|
||||||
|
void vPortEnterCritical( void );
|
||||||
|
void vPortExitCritical( void );
|
||||||
|
|
||||||
#define portENTER_CRITICAL() vPortEnterCritical()
|
#define portENTER_CRITICAL() vPortEnterCritical()
|
||||||
#define portEXIT_CRITICAL() vPortExitCritical()
|
#define portEXIT_CRITICAL() vPortExitCritical()
|
||||||
|
|
||||||
// no need to disable/enable lvl1 isr again in ISR
|
|
||||||
//#define portSET_INTERRUPT_MASK_FROM_ISR() PortDisableInt_NoNest()
|
|
||||||
//#define portCLEAR_INTERRUPT_MASK_FROM_ISR(x) PortEnableInt_NoNest()
|
|
||||||
|
|
||||||
|
|
||||||
/*-----------------------------------------------------------*/
|
|
||||||
|
|
||||||
/* Tickless idle/low power functionality. */
|
|
||||||
|
|
||||||
/*-----------------------------------------------------------*/
|
|
||||||
|
|
||||||
/* Port specific optimisations. */
|
|
||||||
|
|
||||||
/*-----------------------------------------------------------*/
|
|
||||||
|
|
||||||
/* Task function macros as described on the FreeRTOS.org WEB site. These are
|
/* Task function macros as described on the FreeRTOS.org WEB site. These are
|
||||||
not necessary for to use this port. They are defined so the common demo files
|
not necessary for to use this port. They are defined so the common demo files
|
||||||
(which build with all the ports) will build. */
|
(which build with all the ports) will build. */
|
||||||
|
|
Loading…
Reference in a new issue