Files
E3/e3_176_ref/drivers/source/flexray/sdrv_low_level.h
2025-10-21 19:40:27 +08:00

138 lines
3.6 KiB
C

/**
* @file low_level.h
*
* @copyright Copyright (c) 2022 Semidrive Semiconductor.
* All rights reserved.
*/
#ifndef LOW_LEVEL_H_
#define LOW_LEVEL_H_
/* current file used for SSDK/MCAL */
#define LOW_LEVEL_PLATFORM SSDK
#if (LOW_LEVEL_PLATFORM == SSDK)
#include "irq.h"
#include "reg.h"
#include "armv7-r/cache.h"
#include <udelay/udelay.h>
#ifndef TRUE
#define TRUE (1u)
#endif
#ifndef FALSE
#define FALSE (0u)
#endif
#define CPU_TYPE_8 8u
#define CPU_TYPE_16 16u
#define CPU_TYPE_32 32u
#define CPU_TYPE_64 64u
#define MSB_FIRST 0u
#define LSB_FIRST 1u
#define HIGH_BYTE_FIRST 0u
#define LOW_BYTE_FIRST 1u
#define CPU_BIT_ORDER (LSB_FIRST)
#define CPU_BYTE_ORDER (LOW_BYTE_FIRST)
#define CPU_TYPE CPU_TYPE_32
#if (CPU_TYPE == CPU_TYPE_64)
typedef unsigned char boolean;
typedef unsigned char uint8;
typedef unsigned short uint16;
typedef unsigned int uint32;
typedef unsigned long long uint64;
typedef signed char sint8;
typedef signed short sint16;
typedef signed int sint32;
typedef signed long long sint64;
typedef unsigned int uint8_least;
typedef unsigned int uint16_least;
typedef unsigned int uint32_least;
typedef signed int sint8_least;
typedef signed int sint16_least;
typedef signed int sint32_least;
typedef float float32;
typedef double float64;
#elif (CPU_TYPE == CPU_TYPE_32)
typedef unsigned char boolean;
typedef unsigned char uint8;
typedef unsigned short uint16;
typedef unsigned long uint32;
typedef unsigned long long uint64;
typedef signed char sint8;
typedef signed short sint16;
typedef signed long sint32;
typedef signed long long sint64;
typedef unsigned long uint8_least;
typedef unsigned long uint16_least;
typedef unsigned long uint32_least;
typedef signed long sint8_least;
typedef signed long sint16_least;
typedef signed long sint32_least;
typedef float float32;
typedef double float64;
#elif (CPU_TYPE == CPU_TYPE_16)
#error "This SSDK release has no CPU_TYPE_16 support."
#endif
#define E_OK 0x00u
#define E_NOT_OK 0x01u
typedef uint8 Std_ReturnType;
#define SchM_Enter_EXCLUSIVE_AREA() IRQ_SAVE
#define SchM_Exit_EXCLUSIVE_AREA() IRQ_RESTORE
static inline void arch_clean_cache_range_pri(const void *start, uint32 len)
{
arch_clean_invalidate_cache_range((uint32)start, len);
}
static inline void arch_invalidate_cache_range_pri(const void *start,
uint32 len)
{
arch_invalidate_cache_range((addr_t)start, len);
}
#elif (LOW_LEVEL_PLATFORM == MCAL)
#include "types.h"
#include "SchM_Fr.h"
#include "RegHelper.h"
#include "arch.h"
#if defined(AUTOSAR_OS_NOT_USED)
#define SchM_Enter_EXCLUSIVE_AREA() SchM_Enter_EXCLUSIVE_AREA();
#define SchM_Exit_EXCLUSIVE_AREA() SchM_Exit_EXCLUSIVE_AREA();
#else
#define SchM_Enter_EXCLUSIVE_AREA() SuspendAllInterrupts();
#define SchM_Exit_EXCLUSIVE_AREA() ResumeAllInterrupts();
#endif
static inline void arch_clean_cache_range_pri(const void *start, uint32 len)
{
arch_clean_invalidate_cache_range(start, len);
}
static inline void arch_invalidate_cache_range_pri(const void *start,
uint32 len)
{
arch_invalidate_cache_range(start, len);
}
#else
#define SchM_Enter_EXCLUSIVE_AREA()
#define SchM_Exit_EXCLUSIVE_AREA()
#endif
#endif /* LOW_LEVEL_H_ */