iLLD_TC29x
1.0
|
CPU basic functionality. More...
#include "_Impl/IfxCpu_cfg.h"
#include "IfxSrc_reg.h"
#include "IfxScu_reg.h"
#include "Scu/Std/IfxScuWdt.h"
#include "_Impl/IfxScu_cfg.h"
#include "_Utilities/Ifx_Assert.h"
Go to the source code of this file.
Data Structures | |
struct | IfxCpu_Counter |
struct | IfxCpu_Perf |
Performance counter result. More... | |
Macros | |
#define | IFXCPU_GLB_ADDR_DSPR(cpu, address) ((((((unsigned)(address) & 0xF0000000) == 0xD0000000) ? ((((unsigned)(address) & 0x000fffff) | 0x70000000) - ((cpu) * 0x10000000)) : (unsigned)(address)))) |
Convert local DSPR address to global DSPR address which can be accessed from the SRI bus. Use this macro to convert a local DSPR address (in segment 0xd00.....) to a global DSPR address (in segment 0x700....., 0x600....., 0x500..... downwards) depending on the CPU number. Example usage: More... | |
#define | IFXCPU_GLB_ADDR_PSPR(cpu, address) ((((unsigned)(address) & 0x000fffff) | 0x70100000) - ((cpu) * 0x10000000)) |
Convert local PSPR address to global PSPR address which can be accessed from the SRI bus. Use this macro to convert a local PSPR address (in segment 0xc......) to a global PSPR address (in segment 0x701....., 0x601....., 0x501..... downwards) depending on the CPU number. More... | |
Typedefs | |
typedef unsigned int | IfxCpu_spinLock |
Lock type Spin lock. More... | |
typedef unsigned int | IfxCpu_mutexLock |
Lock type Mutex lock. More... | |
Enumerations | |
enum | IfxCpu_CoreMode { IfxCpu_CoreMode_halt, IfxCpu_CoreMode_run, IfxCpu_CoreMode_idle, IfxCpu_CoreMode_sleep, IfxCpu_CoreMode_stby, IfxCpu_CoreMode_unknown } |
Enumeration for the Cpu mode. More... | |
enum | IfxCpu_CounterMode { IfxCpu_CounterMode_normal = 0, IfxCpu_CounterMode_task = 1 } |
Performance conunter modes. More... | |
Functions | |
IFX_INLINE IfxCpu_ResourceCpu | IfxCpu_getCoreId (void) |
API to get core id of the CPU of the caller. Caution: Core id of the cpus may not be continguous and shouldn't be used to index cpu. Use IfxCpu_getCoreIndex() to get cpu no. More... | |
IFX_INLINE IfxCpu_ResourceCpu | IfxCpu_getCoreIndex (void) |
API to get cpu index of the caller CPU. Note: This api can be used whereever cpu no/index is needed. More... | |
IFX_INLINE void | IfxCpu_initCSA (uint32 *csaBegin, uint32 *csaEnd) |
API to initialize the context save area of the CPU where this is called. More... | |
IFX_INLINE void | IfxCpu_setSafetyTaskIdentifier (boolean safetyId) |
Set/Clear safety task identifier (PSW.S) on current CPU. More... | |
IFX_INLINE void | IfxCpu_triggerSwReset (void) |
Triggers Software Reset. More... | |
IFX_EXTERN Ifx_CPU * | IfxCpu_getAddress (IfxCpu_ResourceCpu cpu) |
API to get the address for CPU HW module register memory map. More... | |
IFX_EXTERN IfxCpu_CoreMode | IfxCpu_getCoreMode (Ifx_CPU *cpu) |
API to get current mode of CPU. More... | |
IFX_EXTERN IfxCpu_ResourceCpu | IfxCpu_getIndex (Ifx_CPU *cpu) |
API to get current mode of CPU. More... | |
IFX_EXTERN boolean | IfxCpu_setCoreMode (Ifx_CPU *cpu, IfxCpu_CoreMode mode) |
API to set mode of the CPU. More... | |
IFX_EXTERN boolean | IfxCpu_setProgramCounter (Ifx_CPU *cpu, uint32 programCounter) |
API to set the program counter for the CPU specified. More... | |
IFX_EXTERN boolean | IfxCpu_startCore (Ifx_CPU *cpu, uint32 programCounter) |
API to set the program counter for the CPU specified and start the CPU. More... | |
IFX_INLINE boolean | IfxCpu_areInterruptsEnabled (void) |
API to get the status of global interrupt enable (ICR.IE) for the CPU which calls this API This API provides the status of CPU where this API is called. More... | |
IFX_INLINE boolean | IfxCpu_disableInterrupts (void) |
API to disable global interrupt and return the previous status. More... | |
IFX_INLINE void | IfxCpu_enableInterrupts (void) |
API to enable global interrupt. This API simply enables the global interrupt. More... | |
IFX_INLINE void | IfxCpu_forceDisableInterrupts (void) |
Disable the Global Interrupt. More... | |
IFX_INLINE void | IfxCpu_restoreInterrupts (boolean enabled) |
API to restore global interrupt with that of the passed parameter. More... | |
IFX_INLINE void | IfxCpu_enableSegmentSpecificDataAccessCacheability (uint16 segmentNumberMask, boolean enable) |
API to enable/ disable the data cacheability for selected segments With this API cacheability for one or more segment can be enabled/disabled for the CPU core where this API is called. More... | |
IFX_INLINE void | IfxCpu_enableSegmentSpecificInstructionAccessCacheability (uint16 segmentNumberMask, boolean enable) |
API to enable/ disable the instruction cacheability for selected segments With this API cacheability for one or more segment can be enabled/disabled for the CPU core where this API is called. More... | |
IFX_INLINE void | IfxCpu_invalidateProgramCache (void) |
API to invalidate the program cache. More... | |
IFX_INLINE boolean | IfxCpu_isAddressCachable (void *address) |
API to determine if an address is in a cachable or non-cachable Flash/LMU section. More... | |
IFX_INLINE void | IfxCpu_setDataCache (boolean enable) |
API to enable or bypass the data cache for the CPU which calls this API. More... | |
IFX_INLINE void | IfxCpu_setProgramCache (boolean enable) |
API to enable or bypass the program cache for the CPU which calls this API. More... | |
IFX_INLINE uint32 | IfxCpu_getClockCounter (void) |
API to read the clock counter for the CPU which calls this API. More... | |
IFX_INLINE boolean | IfxCpu_getClockCounterStickyOverflow (void) |
API to get sticky overflow bit of clock counter for the CPU, which calls this API. More... | |
IFX_INLINE uint32 | IfxCpu_getInstructionCounter (void) |
API to read the instruction counter for the CPU which calls this API. More... | |
IFX_INLINE boolean | IfxCpu_getInstructionCounterStickyOverflow (void) |
API to get sticky overflow bit of Instruction counter for the CPU, which calls this API. More... | |
IFX_INLINE uint32 | IfxCpu_getPerformanceCounter (uint32 address) |
API to read the performance counter for the CPU which calls this API. More... | |
IFX_INLINE boolean | IfxCpu_getPerformanceCounterStickyOverflow (uint32 address) |
API to get sticky overflow bit of performance counter for the CPU, which calls this API. This is generic function to get sticky overflow bit of any performance counters. More... | |
IFX_INLINE void | IfxCpu_resetAndStartCounters (IfxCpu_CounterMode mode) |
Reset and start instruction, clock and multi counters. More... | |
IFX_INLINE void | IfxCpu_setPerformanceCountersEnableBit (uint32 enable) |
API to enable or disable performance counter for the CPU which calls this API. More... | |
IFX_INLINE IfxCpu_Perf | IfxCpu_stopCounters (void) |
Stop instruction and clock counters, return their values. More... | |
IFX_INLINE void | IfxCpu_updateClockCounter (uint32 count) |
API to update clock counter for the CPU which calls this API. More... | |
IFX_INLINE void | IfxCpu_updateInstructionCounter (uint32 count) |
API to update Instruction counter for the CPU which calls this API. More... | |
IFX_INLINE void | IfxCpu_updatePerformanceCounter (uint32 address, uint32 count) |
API to update performance counter for the CPU which calls this API. This is generic function to update any of the performance counters. More... | |
IFX_EXTERN boolean | IfxCpu_acquireMutex (IfxCpu_mutexLock *lock) |
API to acquire the mutex (binary semaphore). More... | |
IFX_EXTERN void | IfxCpu_releaseMutex (IfxCpu_mutexLock *lock) |
API to unlock the mutex . More... | |
IFX_EXTERN void | IfxCpu_resetSpinLock (IfxCpu_spinLock *lock) |
API to unlock the resource . More... | |
IFX_EXTERN boolean | IfxCpu_setSpinLock (IfxCpu_spinLock *lock, uint32 timeoutCount) |
API to lock the resource in spin mode with the given timeout. More... | |
IFX_EXTERN uint32 | IfxCpu_getRandomValue (uint32 *seed) |
API to get random value. More... | |
IFX_EXTERN uint32 | IfxCpu_getRandomValueWithinRange (uint32 *seed, uint32 min, uint32 max) |
API to get random value with in the range. More... | |
CPU basic functionality.
IMPORTANT NOTICE
Infineon Technologies AG (Infineon) is supplying this file for use exclusively with Infineon's microcontroller products. This file can be freely distributed within development tools that are supporting such microcontroller products.
THIS SOFTWARE IS PROVIDED "AS IS". NO WARRANTIES, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. INFINEON SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER.
Definition in file IfxCpu.h.
#define IFXCPU_GLB_ADDR_DSPR | ( | cpu, | |
address | |||
) | ((((((unsigned)(address) & 0xF0000000) == 0xD0000000) ? ((((unsigned)(address) & 0x000fffff) | 0x70000000) - ((cpu) * 0x10000000)) : (unsigned)(address)))) |
Convert local DSPR address to global DSPR address which can be accessed from the SRI bus. Use this macro to convert a local DSPR address (in segment 0xd00.....) to a global DSPR address (in segment 0x700....., 0x600....., 0x500..... downwards) depending on the CPU number. Example usage:
Definition at line 71 of file IfxCpu.h.
Referenced by IfxEth_RxDescr_setBuffer(), and IfxEth_TxDescr_setBuffer().
#define IFXCPU_GLB_ADDR_PSPR | ( | cpu, | |
address | |||
) | ((((unsigned)(address) & 0x000fffff) | 0x70100000) - ((cpu) * 0x10000000)) |
Convert local PSPR address to global PSPR address which can be accessed from the SRI bus. Use this macro to convert a local PSPR address (in segment 0xc......) to a global PSPR address (in segment 0x701....., 0x601....., 0x501..... downwards) depending on the CPU number.
Example usage:
typedef unsigned int IfxCpu_mutexLock |
typedef unsigned int IfxCpu_spinLock |