if( FREERTOS_PORT STREQUAL "GCC_RISC_V_GENERIC" ) include( GCC/RISC-V/chip_extensions.cmake ) endif() if( FREERTOS_PORT STREQUAL "IAR_RISC_V_GENERIC" ) include( IAR/RISC-V/chip_extensions.cmake ) endif() # FreeRTOS internal cmake file. Do not use it in user top-level project if (FREERTOS_PORT STREQUAL "A_CUSTOM_PORT") message(STATUS "Using a custom FREERTOS_PORT.") return() endif() # FreeRTOS internal cmake file. Do not use it in user top-level project add_library(freertos_kernel_port STATIC # TEMPLATE Port $<$: template/port.c> # 16-Bit DOS ports for BCC $<$: BCC/16BitDOS/common/portcomn.c BCC/16BitDOS/Flsh186/port.c> $<$: BCC/16BitDOS/common/portcomn.c BCC/16BitDOS/PC/port.c> # ARMv7-M port for Texas Instruments Code Composer Studio $<$: CCS/ARM_CM3/port.c CCS/ARM_CM3/portasm.asm> # ARMv7E-M port for Texas Instruments Code Composer Studio $<$: CCS/ARM_CM4F/port.c CCS/ARM_CM4F/portasm.asm> # ARMv7-R port for Texas Instruments Code Composer Studio $<$: CCS/ARM_Cortex-R4/port.c CCS/ARM_Cortex-R4/portASM.asm> # Texas Instruments MSP430 port for Texas Instruments Code Composer Studio $<$: CCS/MSP430X/port.c CCS/MSP430X/portext.asm> # NXP (formerly Motorola, Freescale) Cold Fire and 68HCS12 ports for Code Warrior $<$: CodeWarrior/ColdFire_V1/port.c CodeWarrior/ColdFire_V1/portasm.S> $<$: CodeWarrior/ColdFire_V2/port.c CodeWarrior/ColdFire_V2/portasm.S> $<$: CodeWarrior/HCS12/port.c> # ARMv7-A port for GCC $<$: GCC/ARM_CA9/port.c GCC/ARM_CA9/portASM.S> # ARMv8-A ports for GCC $<$: GCC/Arm_AARCH64/port.c GCC/Arm_AARCH64/portASM.S> $<$: GCC/Arm_AARCH64_SRE/port.c GCC/Arm_AARCH64_SRE/portASM.S> # ARMv6-M port for GCC $<$: GCC/ARM_CM0/port.c> # ARMv6-M / Cortex-M0 Raspberry PI RP2040 port for GCC $<$: ThirdParty/GCC/RP2040/port.c> # ARMv7-M ports for GCC $<$: GCC/ARM_CM3/port.c> $<$: GCC/ARM_CM3_MPU/port.c GCC/ARM_CM3_MPU/mpu_wrappers_v2_asm.c> # ARMv7E-M ports for GCC $<$: GCC/ARM_CM4_MPU/port.c GCC/ARM_CM4_MPU/mpu_wrappers_v2_asm.c> $<$: GCC/ARM_CM4F/port.c> $<$: GCC/ARM_CM7/r0p1/port.c> # ARMv8-M ports for GCC $<$: GCC/ARM_CM23/non_secure/port.c GCC/ARM_CM23/non_secure/portasm.c GCC/ARM_CM23/non_secure/mpu_wrappers_v2_asm.c> $<$: GCC/ARM_CM23/secure/secure_context_port.c GCC/ARM_CM23/secure/secure_context.c GCC/ARM_CM23/secure/secure_heap.c GCC/ARM_CM23/secure/secure_init.c> $<$: GCC/ARM_CM23_NTZ/non_secure/port.c GCC/ARM_CM23_NTZ/non_secure/portasm.c GCC/ARM_CM23_NTZ/non_secure/mpu_wrappers_v2_asm.c> $<$: GCC/ARM_CM33/non_secure/port.c GCC/ARM_CM33/non_secure/portasm.c GCC/ARM_CM33/non_secure/mpu_wrappers_v2_asm.c> $<$: GCC/ARM_CM33/secure/secure_context_port.c GCC/ARM_CM33/secure/secure_context.c GCC/ARM_CM33/secure/secure_heap.c GCC/ARM_CM33/secure/secure_init.c> $<$: GCC/ARM_CM33_NTZ/non_secure/port.c GCC/ARM_CM33_NTZ/non_secure/portasm.c GCC/ARM_CM33_NTZ/non_secure/mpu_wrappers_v2_asm.c> $<$: GCC/ARM_CM33_NTZ/non_secure/port.c GCC/ARM_CM33_NTZ/non_secure/portasm.c GCC/ARM_CM33_NTZ/non_secure/mpu_wrappers_v2_asm.c ThirdParty/GCC/ARM_TFM/os_wrapper_freertos.c> $<$: GCC/ARM_CM35P/non_secure/port.c GCC/ARM_CM35P/non_secure/portasm.c GCC/ARM_CM35P/non_secure/mpu_wrappers_v2_asm.c> $<$: GCC/ARM_CM35P/secure/secure_context_port.c GCC/ARM_CM35P/secure/secure_context.c GCC/ARM_CM35P/secure/secure_heap.c GCC/ARM_CM35P/secure/secure_init.c> $<$: GCC/ARM_CM35P_NTZ/non_secure/port.c GCC/ARM_CM35P_NTZ/non_secure/portasm.c GCC/ARM_CM35P_NTZ/non_secure/mpu_wrappers_v2_asm.c> # ARMv8.1-M ports for GCC $<$: GCC/ARM_CM55/non_secure/port.c GCC/ARM_CM55/non_secure/portasm.c GCC/ARM_CM55/non_secure/mpu_wrappers_v2_asm.c> $<$: GCC/ARM_CM55/secure/secure_context_port.c GCC/ARM_CM55/secure/secure_context.c GCC/ARM_CM55/secure/secure_heap.c GCC/ARM_CM55/secure/secure_init.c> $<$: GCC/ARM_CM55_NTZ/non_secure/port.c GCC/ARM_CM55_NTZ/non_secure/portasm.c GCC/ARM_CM55_NTZ/non_secure/mpu_wrappers_v2_asm.c> $<$: GCC/ARM_CM55_NTZ/non_secure/port.c GCC/ARM_CM55_NTZ/non_secure/portasm.c GCC/ARM_CM55_NTZ/non_secure/mpu_wrappers_v2_asm.c ThirdParty/GCC/ARM_TFM/os_wrapper_freertos.c> $<$: GCC/ARM_CM85/non_secure/port.c GCC/ARM_CM85/non_secure/portasm.c GCC/ARM_CM85/non_secure/mpu_wrappers_v2_asm.c> $<$: GCC/ARM_CM85/secure/secure_context_port.c GCC/ARM_CM85/secure/secure_context.c GCC/ARM_CM85/secure/secure_heap.c GCC/ARM_CM85/secure/secure_init.c> $<$: GCC/ARM_CM85_NTZ/non_secure/port.c GCC/ARM_CM85_NTZ/non_secure/portasm.c GCC/ARM_CM85_NTZ/non_secure/mpu_wrappers_v2_asm.c> $<$: GCC/ARM_CM85_NTZ/non_secure/port.c GCC/ARM_CM85_NTZ/non_secure/portasm.c GCC/ARM_CM85_NTZ/non_secure/mpu_wrappers_v2_asm.c ThirdParty/GCC/ARM_TFM/os_wrapper_freertos.c> # ARMv7-R ports for GCC $<$: GCC/ARM_CR5/port.c GCC/ARM_CR5/portASM.S> $<$: GCC/ARM_CRx_No_GIC/port.c GCC/ARM_CRx_No_GIC/portASM.S> # ARMv4T ARM7TDMI ports for GCC $<$: GCC/ARM7_AT91FR40008/port.c GCC/ARM7_AT91FR40008/portISR.c> $<$: GCC/ARM7_AT91SAM7S/lib_AT91SAM7X256.c GCC/ARM7_AT91SAM7S/port.c GCC/ARM7_AT91SAM7S/portISR.c> $<$: GCC/ARM7_LPC2000/port.c GCC/ARM7_LPC2000/portISR.c> $<$: GCC/ARM7_LPC23xx/port.c GCC/ARM7_LPC23xx/portISR.c> $<$: GCC/STR75x/port.c GCC/STR75x/portISR.c> # Microchip (formerly Ateml) AVR8 ports for GCC $<$: GCC/ATMega323/port.c> $<$: ThirdParty/GCC/ATmega/port.c> $<$: ThirdParty/Partner-Supported-Ports/GCC/AVR_AVRDx/port.c> $<$: ThirdParty/Partner-Supported-Ports/GCC/AVR_Mega0/port.c> # Microchip (formerly Ateml) AVR32 port for GCC $<$: GCC/AVR32_UC3/exception.S GCC/AVR32_UC3/port.c> # NXP (formerly Motorola, Freescale) Cold Fire and 68HCS12 ports for GCC $<$: GCC/ColdFire_V2/port.c GCC/ColdFire_V2/portasm.S> $<$: GCC/HCS12/port.c> # Cortus APS3 soft core port for GCC $<$: GCC/CORTUS_APS3/port.c> # Renesas (formerly Hitach) H8S port for GCC $<$: GCC/H8S2329/port.c> # x86 / IA32 flat memory model port for GCC $<$: GCC/IA32_flat/port.c GCC/IA32_flat/portASM.S> # Xilinx MicroBlaze soft core ports for GCC $<$: GCC/MicroBlaze/port.c GCC/MicroBlaze/portasm.s> $<$: GCC/MicroBlazeV8/port.c GCC/MicroBlazeV8/port_exceptions.c GCC/MicroBlazeV8/portasm.S> $<$: GCC/MicroBlazeV9/port.c GCC/MicroBlazeV9/port_exceptions.c GCC/MicroBlazeV9/portasm.S> # Xilinx PCC4XX soft core ports for GCC $<$: GCC/PPC405_Xilinx/port.c GCC/PPC405_Xilinx/portasm.S> $<$: GCC/PPC440_Xilinx/port.c GCC/PPC440_Xilinx/portasm.S> # Texas Instruments MSP430 port for GCC $<$: GCC/MSP430F449/port.c> # Intel (formerly Altera) NIOS II soft core port for GCC $<$: GCC/NiosII/port.c GCC/NiosII/port_asm.S> # RISC-V architecture ports for GCC $<$: GCC/RISC-V/port.c GCC/RISC-V/portASM.S> $<$: GCC/RISC-V/port.c GCC/RISC-V/portASM.S> $<$: GCC/RISC-V/port.c GCC/RISC-V/portASM.S> # Renesas RL78 port for GCC $<$: GCC/RL78/port.c GCC/RL78/portasm.S> # Renesas RX architecture ports for GCC $<$: GCC/RX100/port.c> $<$: GCC/RX200/port.c> $<$: GCC/RX600/port.c> $<$: GCC/RX600v2/port.c> $<$: GCC/RX700v3_DPFPU/port.c> # Infineon TriCore 1782 port for GCC $<$: GCC/TriCore_1782/port.c GCC/TriCore_1782/porttrap.c> # Synopsys ARC architecture ports for GCC $<$: ThirdParty/GCC/ARC_EM_HS/arc_freertos_exceptions.c ThirdParty/GCC/ARC_EM_HS/arc_support.s ThirdParty/GCC/ARC_EM_HS/freertos_tls.c ThirdParty/GCC/ARC_EM_HS/port.c> $<$: ThirdParty/GCC/ARC_v1/arc_freertos_exceptions.c ThirdParty/GCC/ARC_v1/arc_support.s ThirdParty/GCC/ARC_v1/port.c> # Posix Simulator port for GCC $<$: ThirdParty/GCC/Posix/port.c ThirdParty/GCC/Posix/utils/wait_for_event.c> # Xtensa LX / Espressif ESP32 port for GCC $<$: ThirdParty/GCC/Xtensa_ESP32/FreeRTOS-openocd.c ThirdParty/GCC/Xtensa_ESP32/port.c ThirdParty/GCC/Xtensa_ESP32/portasm.S ThirdParty/GCC/Xtensa_ESP32/xtensa_context.S ThirdParty/GCC/Xtensa_ESP32/xtensa_init.c ThirdParty/GCC/Xtensa_ESP32/xtensa_intr_asm.S ThirdParty/GCC/Xtensa_ESP32/xtensa_intr.c ThirdParty/GCC/Xtensa_ESP32/xtensa_loadstore_handler.S ThirdParty/GCC/Xtensa_ESP32/xtensa_overlay_os_hook.c ThirdParty/GCC/Xtensa_ESP32/xtensa_vector_defaults.S ThirdParty/GCC/Xtensa_ESP32/xtensa_vectors.S> # Renesas (formerly NEC) 78K port for IAR EW78K $<$: IAR/78K0R/port.c IAR/78K0R/portasm.s26> # ARMv7-A ports for IAR EWARM $<$: IAR/ARM_CA5_No_GIC/port.c IAR/ARM_CA5_No_GIC/portASM.s> $<$: IAR/ARM_CA9/port.c IAR/ARM_CA9/portASM.s> # ARMv6-M port for IAR EWARM $<$: IAR/ARM_CM0/port.c IAR/ARM_CM0/portasm.s> # ARMv7-M port for IAR EWARM $<$: IAR/ARM_CM3/port.c IAR/ARM_CM3/portasm.s> # ARMv7E-M ports for IAR EWARM $<$: IAR/ARM_CM4F/port.c IAR/ARM_CM4F/portasm.s> $<$: IAR/ARM_CM4F_MPU/port.c IAR/ARM_CM4F_MPU/portasm.s IAR/ARM_CM4F_MPU/mpu_wrappers_v2_asm.S> $<$: IAR/ARM_CM7/r0p1/port.c IAR/ARM_CM7/r0p1/portasm.s> # ARMv8-M Ports for IAR EWARM $<$: IAR/ARM_CM23/non_secure/port.c IAR/ARM_CM23/non_secure/portasm.s IAR/ARM_CM23/non_secure/mpu_wrappers_v2_asm.S> $<$: IAR/ARM_CM23/secure/secure_context_port_asm.s IAR/ARM_CM23/secure/secure_context.c IAR/ARM_CM23/secure/secure_heap.c IAR/ARM_CM23/secure/secure_init.c> $<$: IAR/ARM_CM23_NTZ/non_secure/port.c IAR/ARM_CM23_NTZ/non_secure/portasm.s IAR/ARM_CM23_NTZ/non_secure/mpu_wrappers_v2_asm.S> $<$: IAR/ARM_CM33/non_secure/port.c IAR/ARM_CM33/non_secure/portasm.s IAR/ARM_CM33/non_secure/mpu_wrappers_v2_asm.S> $<$: IAR/ARM_CM33/secure/secure_context_port_asm.s IAR/ARM_CM33/secure/secure_context.c IAR/ARM_CM33/secure/secure_heap.c IAR/ARM_CM33/secure/secure_init.c> $<$: IAR/ARM_CM33_NTZ/non_secure/port.c IAR/ARM_CM33_NTZ/non_secure/portasm.s IAR/ARM_CM33_NTZ/non_secure/mpu_wrappers_v2_asm.S> $<$: IAR/ARM_CM35P/non_secure/port.c IAR/ARM_CM35P/non_secure/portasm.s IAR/ARM_CM35P/non_secure/mpu_wrappers_v2_asm.S> $<$: IAR/ARM_CM35P/secure/secure_context_port_asm.s IAR/ARM_CM35P/secure/secure_context.c IAR/ARM_CM35P/secure/secure_heap.c IAR/ARM_CM35P/secure/secure_init.c> $<$: IAR/ARM_CM35P_NTZ/non_secure/port.c IAR/ARM_CM35P_NTZ/non_secure/portasm.s IAR/ARM_CM35P_NTZ/non_secure/mpu_wrappers_v2_asm.S> # ARMv8.1-M ports for IAR EWARM $<$: IAR/ARM_CM55/non_secure/port.c IAR/ARM_CM55/non_secure/portasm.s IAR/ARM_CM55/non_secure/mpu_wrappers_v2_asm.S> $<$: IAR/ARM_CM55/secure/secure_context_port_asm.s IAR/ARM_CM55/secure/secure_context.c IAR/ARM_CM55/secure/secure_heap.c IAR/ARM_CM55/secure/secure_init.c> $<$: IAR/ARM_CM55_NTZ/non_secure/port.c IAR/ARM_CM55_NTZ/non_secure/portasm.s IAR/ARM_CM55_NTZ/non_secure/mpu_wrappers_v2_asm.S> $<$: IAR/ARM_CM85/non_secure/port.c IAR/ARM_CM85/non_secure/portasm.s IAR/ARM_CM85/non_secure/mpu_wrappers_v2_asm.S> $<$: IAR/ARM_CM85/secure/secure_context_port_asm.s IAR/ARM_CM85/secure/secure_context.c IAR/ARM_CM85/secure/secure_heap.c IAR/ARM_CM85/secure/secure_init.c> $<$: IAR/ARM_CM85_NTZ/non_secure/port.c IAR/ARM_CM85_NTZ/non_secure/portasm.s IAR/ARM_CM85_NTZ/non_secure/mpu_wrappers_v2_asm.S> # ARMv7-R Ports for IAR EWARM $<$: IAR/ARM_CRx_No_GIC/port.c IAR/ARM_CRx_No_GIC/portASM.s> # Microchip (formerly Atmel) AVR8 ports for IAR EWAVR $<$: IAR/ATMega323/port.c IAR/ATMega323/portmacro.s90> $<$: IAR/AVR_AVRDx/port.c IAR/AVR_AVRDx/portmacro.s90> $<$: IAR/AVR_Mega0/port.c IAR/AVR_Mega0/portmacro.s90> # Microchip (formerly Atmel) AVR32 port for IAR Embedded Workbench for AVR32 $<$: IAR/AVR32_UC3/exception.s82 IAR/AVR32_UC3/port.c IAR/AVR32_UC3/read.c IAR/AVR32_UC3/write.c> # Texas Instruments MSP430 ports for IAR Embedded Workbench for MSP430 $<$: IAR/MSP430/port.c IAR/MSP430/portext.s43> $<$: IAR/MSP430X/port.c IAR/MSP430X/portext.s43> # RISC-V architecture port for IAR Embedded Workbench for RISC-V $<$: IAR/RISC-V/port.c IAR/RISC-V/portASM.s> $<$: IAR/RISC-V/port.c IAR/RISC-V/portASM.s> # Renesas RL78 port for IAR EWRL78 $<$: IAR/RL78/port.c IAR/RL78/portasm.s87> # Renesas RX architecture ports for IAR EWRX $<$: IAR/RX100/port.c IAR/RX100/port_asm.s> $<$: IAR/RX600/port.c IAR/RX600/port_asm.s> $<$: IAR/RX700v3_DPFPU/port.c> $<$: IAR/RXv2/port.c IAR/RXv2/port_asm.s> # Renesas (formerly NEC) V850ES port for IAR EWV850 $<$: IAR/V850ES/port.c IAR/V850ES/portasm_Fx3.s85> $<$: IAR/V850ES/port.c IAR/V850ES/portasm_Hx2.s85> # ARMv4T ARM7TDMI ports for IAR Embedded Workbench for ARM $<$: IAR/STR71x/port.c IAR/STR71x/portasm.s79> $<$: IAR/STR75x/port.c IAR/STR75x/portasm.s79> $<$: IAR/LPC2000/port.c IAR/LPC2000/portasm.s79> $<$: IAR/AtmelSAM7S64/port.c IAR/AtmelSAM7S64/portasm.s79> # ARMv5TE ARM926 ports for IAR Embedded Workbench for ARM $<$: IAR/STR91x/port.c IAR/STR91x/portasm.s79> $<$: IAR/AtmelSAM9XE/port.c IAR/AtmelSAM9XE/portasm.s79> # ARM Cortex-M4F port for the MikroElektronika MikroC compiler $<$: MikroC/ARM_CM4F/port.c> # Microchip PIC18 8-bit MCU port for MPLAB XC8 $<$: MPLAB/PIC18F/port.c> # Microchip PIC24 16-bit MCU port for MPLAB XC16 $<$: MPLAB/PIC24_dsPIC/port.c MPLAB/PIC24_dsPIC/portasm_PIC24.S> # TODO: What to do with portasm_dsPIC.S ? # Microchip MIPS 32-Bit MCU ports for MPLAB XC32 $<$: MPLAB/PIC32MEC14xx/port.c MPLAB/PIC32MEC14xx/port_asm.S> $<$: MPLAB/PIC32MX/port.c MPLAB/PIC32MX/port_asm.S> $<$: MPLAB/PIC32MZ/port.c MPLAB/PIC32MZ/port_asm.S> # Windows Simulator for Microsoft Visual C Compiler and MinGW GCC $<$: MSVC-MingW/port.c> # 16 bit DOS ports for Open Watcom $<$: oWatcom/16BitDOS/common/portcomn.c oWatcom/16BitDOS/Flsh186/port.c> $<$: oWatcom/16BitDOS/common/portcomn.c oWatcom/16BitDOS/PC/port.c> $<$: Paradigm/Tern_EE/large_untested/port.c> $<$: Paradigm/Tern_EE/small/port.c> # Renesas RX mcu ports for Renesas CC-RX $<$: Renesas/RX100/port.c Renesas/RX100/port_asm.src> $<$: Renesas/RX200/port.c Renesas/RX200/port_asm.src> $<$: Renesas/RX600/port.c Renesas/RX600/port_asm.src> $<$: Renesas/RX600v2/port.c Renesas/RX600v2/port_asm.src> $<$: Renesas/RX700v3_DPFPU/port.c Renesas/RX700v3_DPFPU/port_asm.src> # Renesas (formerly Hitach) SHA2 SuperH port for the Renesas SH C Compiler $<$: Renesas/SH2A_FPU/port.c Renesas/SH2A_FPU/portasm.src> # Texas Instruments MSP430 port for Rowley CrossWorks $<$: Rowley/MSP430F449/port.c Rowley/MSP430F449/portext.asm> # ARMv7-A Cortex-A9 port for ARM RVDS / armcc $<$: RVDS/ARM_CA9/port.c RVDS/ARM_CA9/portASM.s> # ARMv6-M port for ARM RVDS / armcc $<$: RVDS/ARM_CM0/port.c> # ARMv7-M port for ARM RVDS / armcc $<$: RVDS/ARM_CM3/port.c> # ARMv7E-M ports for ARM RVDS / armcc $<$: RVDS/ARM_CM4_MPU/port.c RVDS/ARM_CM4_MPU/mpu_wrappers_v2_asm.c> $<$: RVDS/ARM_CM4F/port.c> $<$: RVDS/ARM_CM7/r0p1/port.c> # ARMv4T / ARM7TDMI LPC21XX port for ARM RVDS / armcc $<$: RVDS/ARM7_LPC21xx/port.c RVDS/ARM7_LPC21xx/portASM.s> # Cygnal c8051 port for SDCC (Small Device C Compiler) $<$: SDCC/Cygnal/port.c> # Infineon (formerly Fujitsu, Spansion, Cypress) MB9x ports for Softune C Compiler $<$: Softune/MB91460/__STD_LIB_sbrk.c Softune/MB91460/port.c> $<$: Softune/MB96340/__STD_LIB_sbrk.c Softune/MB96340/port.c> # ARMv7E-M (Cortex-M4F) port for TASKING VX-toolset for ARM $<$: Tasking/ARM_CM4F/port.c Tasking/ARM_CM4F/port_asm.asm> # Port for C-SKY T-HEAD CK802 $<$: ThirdParty/CDK/T-HEAD_CK802/port.c ThirdParty/CDK/T-HEAD_CK802/portasm.S> # Tensilica Xtensa port for XCC $<$: ThirdParty/XCC/Xtensa/port.c ThirdParty/XCC/Xtensa/portasm.S ThirdParty/XCC/Xtensa/portclib.c ThirdParty/XCC/Xtensa/xtensa_context.S ThirdParty/XCC/Xtensa/xtensa_init.c ThirdParty/XCC/Xtensa/xtensa_intr_asm.S ThirdParty/XCC/Xtensa/xtensa_intr.c ThirdParty/XCC/Xtensa/xtensa_overlay_os_hook.c ThirdParty/XCC/Xtensa/xtensa_vectors.S> # Microchip PIC18 port for WIZ-C $<$: WizC/PIC18/port.c WizC/PIC18/Drivers/Tick/isrTick.c WizC/PIC18/Drivers/Tick/Tick.c> ) if( FREERTOS_PORT MATCHES "GCC_ARM_CM(3|4)_MPU" OR FREERTOS_PORT STREQUAL "IAR_ARM_CM4F_MPU" OR FREERTOS_PORT STREQUAL "RVDS_ARM_CM4_MPU" OR FREERTOS_PORT MATCHES "GCC_ARM_CM(23|33|55|85)_NTZ_NONSECURE" OR FREERTOS_PORT MATCHES "GCC_ARM_CM(23|33|55|85)_NONSECURE" OR FREERTOS_PORT MATCHES "GCC_ARM_CM(33|55|85)_TFM" OR FREERTOS_PORT MATCHES "IAR_ARM_CM(23|33|55|85)_NTZ_NONSECURE" OR FREERTOS_PORT MATCHES "IAR_ARM_CM(23|33|55|85)_NONSECURE" ) target_sources(freertos_kernel_port PRIVATE Common/mpu_wrappers.c Common/mpu_wrappers_v2.c ) endif() target_include_directories(freertos_kernel_port PUBLIC # TEMPLATE Port $<$:${CMAKE_CURRENT_LIST_DIR}/template> # 16-Bit DOS ports for BCC $<$: ${CMAKE_CURRENT_LIST_DIR}/BCC/16BitDOS/common ${CMAKE_CURRENT_LIST_DIR}/BCC/16BitDOS/Flsh186> $<$: ${CMAKE_CURRENT_LIST_DIR}/BCC/16BitDOS/common ${CMAKE_CURRENT_LIST_DIR}/BCC/16BitDOS/PC> # ARMv7-M port for Texas Instruments Code Composer Studio $<$:${CMAKE_CURRENT_LIST_DIR}/CCS/ARM_CM3> # ARMv7E-M port for Texas Instruments Code Composer Studio $<$:${CMAKE_CURRENT_LIST_DIR}/CCS/ARM_CM4F> # ARMv7-R port for Texas Instruments Code Composer Studio $<$:${CMAKE_CURRENT_LIST_DIR}/CCS/ARM_Cortex-R4> # Texas Instruments MSP430 port for Texas Instruments Code Composer Studio $<$:${CMAKE_CURRENT_LIST_DIR}/CCS/MSP430X> # NXP (formerly Motorola, Freescale) Cold Fire and 68HCS12 ports for Code Warrior $<$:${CMAKE_CURRENT_LIST_DIR}/CodeWarrior/ColdFire_V1> $<$:${CMAKE_CURRENT_LIST_DIR}/CodeWarrior/ColdFire_V2> $<$:${CMAKE_CURRENT_LIST_DIR}/CodeWarrior/HCS12> # ARMv7-A port for GCC $<$:${CMAKE_CURRENT_LIST_DIR}/GCC/ARM_CA9> # ARMv8-A ports for GCC $<$:${CMAKE_CURRENT_LIST_DIR}/GCC/Arm_AARCH64> $<$:${CMAKE_CURRENT_LIST_DIR}/GCC/Arm_AARCH64_SRE> # ARMv6-M port for GCC $<$:${CMAKE_CURRENT_LIST_DIR}/GCC/ARM_CM0> # ARMv6-M / Cortex-M0 Raspberry PI RP2040 port for GCC $<$:${CMAKE_CURRENT_LIST_DIR}/ThirdParty/GCC/RP2040/include> # ARMv7-M ports for GCC $<$:${CMAKE_CURRENT_LIST_DIR}/GCC/ARM_CM3> $<$:${CMAKE_CURRENT_LIST_DIR}/GCC/ARM_CM3_MPU> # ARMv7E-M ports for GCC $<$:${CMAKE_CURRENT_LIST_DIR}/GCC/ARM_CM4_MPU> $<$:${CMAKE_CURRENT_LIST_DIR}/GCC/ARM_CM4F> $<$:${CMAKE_CURRENT_LIST_DIR}/GCC/ARM_CM7/r0p1> # ARMv8-M ports for GCC $<$:${CMAKE_CURRENT_LIST_DIR}/GCC/ARM_CM23/non_secure> $<$:${CMAKE_CURRENT_LIST_DIR}/GCC/ARM_CM23/secure> $<$:${CMAKE_CURRENT_LIST_DIR}/GCC/ARM_CM23_NTZ/non_secure> $<$:${CMAKE_CURRENT_LIST_DIR}/GCC/ARM_CM33/non_secure> $<$:${CMAKE_CURRENT_LIST_DIR}/GCC/ARM_CM33/secure> $<$:${CMAKE_CURRENT_LIST_DIR}/GCC/ARM_CM33_NTZ/non_secure> $<$:${CMAKE_CURRENT_LIST_DIR}/GCC/ARM_CM33_NTZ/non_secure> $<$:${CMAKE_CURRENT_LIST_DIR}/GCC/ARM_CM35P/non_secure> $<$:${CMAKE_CURRENT_LIST_DIR}/GCC/ARM_CM35P/secure> $<$:${CMAKE_CURRENT_LIST_DIR}/GCC/ARM_CM35P_NTZ/non_secure> # ARMv8.1-M ports for GCC $<$:${CMAKE_CURRENT_LIST_DIR}/GCC/ARM_CM55/non_secure> $<$:${CMAKE_CURRENT_LIST_DIR}/GCC/ARM_CM55/secure> $<$:${CMAKE_CURRENT_LIST_DIR}/GCC/ARM_CM55_NTZ/non_secure> $<$:${CMAKE_CURRENT_LIST_DIR}/GCC/ARM_CM55_NTZ/non_secure> $<$:${CMAKE_CURRENT_LIST_DIR}/GCC/ARM_CM85/non_secure> $<$:${CMAKE_CURRENT_LIST_DIR}/GCC/ARM_CM85/secure> $<$:${CMAKE_CURRENT_LIST_DIR}/GCC/ARM_CM85_NTZ/non_secure> $<$:${CMAKE_CURRENT_LIST_DIR}/GCC/ARM_CM85_NTZ/non_secure> # ARMv7-R ports for GCC $<$:${CMAKE_CURRENT_LIST_DIR}/GCC/ARM_CR5> $<$:${CMAKE_CURRENT_LIST_DIR}/GCC/ARM_CRx_No_GIC> # ARMv4T ARM7TDMI ports for GCC $<$:${CMAKE_CURRENT_LIST_DIR}/GCC/ARM7_AT91FR40008> $<$:${CMAKE_CURRENT_LIST_DIR}/GCC/ARM7_AT91SAM7S> $<$:${CMAKE_CURRENT_LIST_DIR}/GCC/ARM7_LPC2000> $<$:${CMAKE_CURRENT_LIST_DIR}/GCC/ARM7_LPC23xx> $<$:${CMAKE_CURRENT_LIST_DIR}/GCC/STR75x> # Microchip (formerly Ateml) AVR8 ports for GCC $<$:${CMAKE_CURRENT_LIST_DIR}/GCC/ATMega323> $<$:${CMAKE_CURRENT_LIST_DIR}/ThirdParty/GCC/ATmega> $<$:${CMAKE_CURRENT_LIST_DIR}/ThirdParty/Partner-Supported-Ports/GCC/AVR_AVRDx> $<$:${CMAKE_CURRENT_LIST_DIR}/ThirdParty/Partner-Supported-Ports/GCC/AVR_Mega0> # Microchip (formerly Ateml) AVR32 port for GCC $<$:${CMAKE_CURRENT_LIST_DIR}/GCC/AVR32_UC3> # NXP (formerly Motorola, Freescale) Cold Fire and 68HCS12 ports for GCC $<$:${CMAKE_CURRENT_LIST_DIR}/GCC/ColdFire_V2> $<$:${CMAKE_CURRENT_LIST_DIR}/GCC/HCS12> # Cortus APS3 soft core port for GCC $<$:${CMAKE_CURRENT_LIST_DIR}/GCC/CORTUS_APS3> # Renesas (formerly Hitach) H8S port for GCC $<$:${CMAKE_CURRENT_LIST_DIR}/GCC/H8S2329> # x86 / IA32 flat memory model port for GCC $<$:${CMAKE_CURRENT_LIST_DIR}/GCC/IA32_flat> # Intel (formerly Altera) NIOS II soft core port for GCC $<$:${CMAKE_CURRENT_LIST_DIR}/GCC/NiosII> # Texas Instruments MSP430 port for GCC $<$:${CMAKE_CURRENT_LIST_DIR}/GCC/MSP430F449> # Xilinx MicroBlaze soft core ports for GCC $<$:${CMAKE_CURRENT_LIST_DIR}/GCC/MicroBlaze> $<$:${CMAKE_CURRENT_LIST_DIR}/GCC/MicroBlazeV8> $<$:${CMAKE_CURRENT_LIST_DIR}/GCC/MicroBlazeV9> # Xilinx PCC4XX soft core ports for GCC $<$:${CMAKE_CURRENT_LIST_DIR}/GCC/PPC405_Xilinx> $<$:${CMAKE_CURRENT_LIST_DIR}/GCC/PPC440_Xilinx> # RISC-V architecture ports for GCC $<$: ${CMAKE_CURRENT_LIST_DIR}/GCC/RISC-V ${CMAKE_CURRENT_LIST_DIR}/GCC/RISC-V/chip_specific_extensions/RISCV_MTIME_CLINT_no_extensions> $<$: ${CMAKE_CURRENT_LIST_DIR}/GCC/RISC-V ${CMAKE_CURRENT_LIST_DIR}/GCC/RISC-V/chip_specific_extensions/Pulpino_Vega_RV32M1RM> $<$: ${CMAKE_CURRENT_LIST_DIR}/GCC/RISC-V ${CMAKE_CURRENT_LIST_DIR}/GCC/RISC-V/chip_specific_extensions/${FREERTOS_RISCV_EXTENSION}> # Renesas RL78 port for GCC $<$:${CMAKE_CURRENT_LIST_DIR}/GCC/RL78> # Renesas RX architecture ports for GCC $<$:${CMAKE_CURRENT_LIST_DIR}/GCC/RX100> $<$:${CMAKE_CURRENT_LIST_DIR}/GCC/RX200> $<$:${CMAKE_CURRENT_LIST_DIR}/GCC/RX600> $<$:${CMAKE_CURRENT_LIST_DIR}/GCC/RX600v2> $<$:${CMAKE_CURRENT_LIST_DIR}/GCC/RX700v3_DPFPU> # Infineon TriCore 1782 port for GCC $<$:${CMAKE_CURRENT_LIST_DIR}/GCC/TriCore_1782> # Synopsys ARC architecture ports for GCC $<$:${CMAKE_CURRENT_LIST_DIR}/ThirdParty/GCC/ARC_EM_HS> $<$:${CMAKE_CURRENT_LIST_DIR}/ThirdParty/GCC/ARC_v1> # Posix Simulator port for GCC $<$: ${CMAKE_CURRENT_LIST_DIR}/ThirdParty/GCC/Posix ${CMAKE_CURRENT_LIST_DIR}/ThirdParty/GCC/Posix/utils> # Xtensa LX / Espressif ESP32 port for GCC $<$: ${CMAKE_CURRENT_LIST_DIR}/ThirdParty/GCC/Xtensa_ESP32 ${CMAKE_CURRENT_LIST_DIR}/ThirdParty/GCC/Xtensa_ESP32/include> # Renesas (formerly NEC) 78K port for IAR EW78K $<$:${CMAKE_CURRENT_LIST_DIR}/IAR/78K0R> # ARMv7-A ports for IAR EWARM $<$:${CMAKE_CURRENT_LIST_DIR}/IAR/ARM_CA5_No_GIC> $<$:${CMAKE_CURRENT_LIST_DIR}/IAR/ARM_CA9> # ARMv6-M port for IAR EWARM $<$:${CMAKE_CURRENT_LIST_DIR}/IAR/ARM_CM0> # ARMv7-M port for IAR EWARM $<$:${CMAKE_CURRENT_LIST_DIR}/IAR/ARM_CM3> # ARMv7E-M ports for IAR EWARM $<$:${CMAKE_CURRENT_LIST_DIR}/IAR/ARM_CM4F> $<$:${CMAKE_CURRENT_LIST_DIR}/IAR/ARM_CM4F_MPU> $<$:${CMAKE_CURRENT_LIST_DIR}/IAR/ARM_CM7/r0p1> # ARMv8-M Ports for IAR EWARM $<$:${CMAKE_CURRENT_LIST_DIR}/IAR/ARM_CM23/non_secure> $<$:${CMAKE_CURRENT_LIST_DIR}/IAR/ARM_CM23/secure> $<$:${CMAKE_CURRENT_LIST_DIR}/IAR/ARM_CM23_NTZ/non_secure> $<$:${CMAKE_CURRENT_LIST_DIR}/IAR/ARM_CM33/non_secure> $<$:${CMAKE_CURRENT_LIST_DIR}/IAR/ARM_CM33/secure> $<$:${CMAKE_CURRENT_LIST_DIR}/IAR/ARM_CM33_NTZ/non_secure> $<$:${CMAKE_CURRENT_LIST_DIR}/IAR/ARM_CM35P/non_secure> $<$:${CMAKE_CURRENT_LIST_DIR}/IAR/ARM_CM35P/secure> $<$:${CMAKE_CURRENT_LIST_DIR}/IAR/ARM_CM35P_NTZ/non_secure> # ARMv8.1-M ports for IAR EWARM $<$:${CMAKE_CURRENT_LIST_DIR}/IAR/ARM_CM55/non_secure> $<$:${CMAKE_CURRENT_LIST_DIR}/IAR/ARM_CM55/secure> $<$:${CMAKE_CURRENT_LIST_DIR}/IAR/ARM_CM55_NTZ/non_secure> $<$:${CMAKE_CURRENT_LIST_DIR}/IAR/ARM_CM85/non_secure> $<$:${CMAKE_CURRENT_LIST_DIR}/IAR/ARM_CM85/secure> $<$:${CMAKE_CURRENT_LIST_DIR}/IAR/ARM_CM85_NTZ/non_secure> # ARMv7-R Ports for IAR EWARM $<$:${CMAKE_CURRENT_LIST_DIR}/IAR/ARM_CRx_No_GIC> # ARMv4T ARM7TDMI ports for IAR Embedded Workbench for ARM $<$:${CMAKE_CURRENT_LIST_DIR}/IAR/STR71x> $<$:${CMAKE_CURRENT_LIST_DIR}/IAR/STR75x> $<$:${CMAKE_CURRENT_LIST_DIR}/IAR/LPC2000> $<$:${CMAKE_CURRENT_LIST_DIR}/IAR/AtmelSAM7S64> # ARMv5TE ARM926 ports for IAR Embedded Workbench for ARM $<$:${CMAKE_CURRENT_LIST_DIR}/IAR/STR91x> $<$:${CMAKE_CURRENT_LIST_DIR}/IAR/AtmelSAM9XE> # Microchip (formerly Atmel) AVR8 ports for IAR EWAVR $<$:${CMAKE_CURRENT_LIST_DIR}/IAR/ATMega323> $<$:${CMAKE_CURRENT_LIST_DIR}/IAR/AVR_AVRDx> $<$:${CMAKE_CURRENT_LIST_DIR}/IAR/AVR_Mega0> # Microchip (formerly Atmel) AVR32 port for IAR Embedded Workbench for AVR32 $<$:${CMAKE_CURRENT_LIST_DIR}/IAR/AVR32_UC3> # Texas Instruments MSP430 ports for IAR Embedded Workbench for MSP430 $<$:${CMAKE_CURRENT_LIST_DIR}/IAR/MSP430> $<$:${CMAKE_CURRENT_LIST_DIR}/IAR/MSP430X> # RISC-V architecture port for IAR Embedded Workbench for RISC-V $<$: ${CMAKE_CURRENT_LIST_DIR}/IAR/RISC-V ${CMAKE_CURRENT_LIST_DIR}/IAR/RISC-V/chip_specific_extensions/RV32I_CLINT_no_extensions> $<$: ${CMAKE_CURRENT_LIST_DIR}/IAR/RISC-V ${CMAKE_CURRENT_LIST_DIR}/IAR/RISC-V/chip_specific_extensions/${FREERTOS_RISCV_EXTENSION}> # Renesas RL78 port for IAR EWRL78 $<$:${CMAKE_CURRENT_LIST_DIR}/IAR/RL78> # Renesas RX architecture ports for IAR EWRX $<$:${CMAKE_CURRENT_LIST_DIR}/IAR/RX100> $<$:${CMAKE_CURRENT_LIST_DIR}/IAR/RX600> $<$:${CMAKE_CURRENT_LIST_DIR}/IAR/RX700v3_DPFPU> $<$:${CMAKE_CURRENT_LIST_DIR}/IAR/RXv2> # Renesas (formerly NEC) V850ES port for IAR EWV850 $<$:${CMAKE_CURRENT_LIST_DIR}/IAR/V850ES> $<$:${CMAKE_CURRENT_LIST_DIR}/IAR/V850ES> # ARM Cortex-M4F port for the MikroElektronika MikroC compiler $<$:${CMAKE_CURRENT_LIST_DIR}/MikroC/ARM_CM4F> # Microchip PIC18 8-bit MCU port for MPLAB XC8 $<$:${CMAKE_CURRENT_LIST_DIR}/MPLAB/PIC18F> # Microchip PIC24 16-bit MCU port for MPLAB XC16 $<$:${CMAKE_CURRENT_LIST_DIR}/MPLAB/PIC24_dsPIC> # Microchip MIPS 32-Bit MCU ports for MPLAB XC32 $<$:${CMAKE_CURRENT_LIST_DIR}/MPLAB/PIC32MEC14xx> $<$:${CMAKE_CURRENT_LIST_DIR}/MPLAB/PIC32MX> $<$:${CMAKE_CURRENT_LIST_DIR}/MPLAB/PIC32MZ> # Windows Simulator for Microsoft Visual C Compiler and MinGW GCC $<$:${CMAKE_CURRENT_LIST_DIR}/MSVC-MingW> # 16 bit DOS ports for Open Watcom $<$: ${CMAKE_CURRENT_LIST_DIR}/oWatcom/16BitDOS/common ${CMAKE_CURRENT_LIST_DIR}/oWatcom/16BitDOS/Flsh186> $<$: ${CMAKE_CURRENT_LIST_DIR}/oWatcom/16BitDOS/common ${CMAKE_CURRENT_LIST_DIR}/oWatcom/16BitDOS/PC> $<$:${CMAKE_CURRENT_LIST_DIR}/Paradigm/Tern_EE/large_untested> $<$:${CMAKE_CURRENT_LIST_DIR}/Paradigm/Tern_EE/small> # Renesas RX mcu ports for Renesas CC-RX $<$:${CMAKE_CURRENT_LIST_DIR}/Renesas/RX100> $<$:${CMAKE_CURRENT_LIST_DIR}/Renesas/RX200> $<$:${CMAKE_CURRENT_LIST_DIR}/Renesas/RX600> $<$:${CMAKE_CURRENT_LIST_DIR}/Renesas/RX600v2> $<$:${CMAKE_CURRENT_LIST_DIR}/Renesas/RX700v3_DPFPU> # Renesas (formerly Hitach) SHA2 SuperH port for the Renesas SH C Compiler $<$:${CMAKE_CURRENT_LIST_DIR}/Renesas/SH2A_FPU> # Texas Instruments MSP430 port for Rowley CrossWorks $<$:${CMAKE_CURRENT_LIST_DIR}/Rowley/MSP430F449> # ARMv7-A Cortex-A9 port for ARM RVDS / armcc $<$:${CMAKE_CURRENT_LIST_DIR}/RVDS/ARM_CA9> # ARMv6-M port for ARM RVDS / armcc $<$:${CMAKE_CURRENT_LIST_DIR}/RVDS/ARM_CM0> # ARMv7-M port for ARM RVDS / armcc $<$:${CMAKE_CURRENT_LIST_DIR}/RVDS/ARM_CM3> # ARMv7E-M ports for ARM RVDS / armcc $<$:${CMAKE_CURRENT_LIST_DIR}/RVDS/ARM_CM4_MPU> $<$:${CMAKE_CURRENT_LIST_DIR}/RVDS/ARM_CM4F> $<$:${CMAKE_CURRENT_LIST_DIR}/RVDS/ARM_CM7/r0p1> # ARMv4T / ARM7TDMI LPC21XX port for ARM RVDS / armcc $<$:${CMAKE_CURRENT_LIST_DIR}/RVDS/ARM7_LPC21xx> # Cygnal c8051 port for SDCC (Small Device C Compiler) $<$:${CMAKE_CURRENT_LIST_DIR}/SDCC/Cygnal> # Infineon (formerly Fujitsu, Spansion, Cypress) MB9x ports for Softune C Compiler $<$:${CMAKE_CURRENT_LIST_DIR}/Softune/MB91460> $<$:${CMAKE_CURRENT_LIST_DIR}/Softune/MB96340> # ARMv7E-M (Cortex-M4F) port for TASKING VX-toolset for ARM $<$:${CMAKE_CURRENT_LIST_DIR}/Tasking/ARM_CM4F> # Port for C-SKY T-HEAD CK802 $<$:${CMAKE_CURRENT_LIST_DIR}/ThirdParty/CDK/T-HEAD_CK802> # Tensilica Xtensa port for XCC $<$:${CMAKE_CURRENT_LIST_DIR}/ThirdParty/XCC/Xtensa> # Microchip PIC18 port for WIZ-C $<$:${CMAKE_CURRENT_LIST_DIR}/WizC/PIC18> ) if(FREERTOS_PORT STREQUAL GCC_POSIX) find_package(Threads REQUIRED) endif() target_link_libraries(freertos_kernel_port PUBLIC $<$:pico_base_headers> $<$:idf::esp32> PRIVATE freertos_kernel_include $<$:Threads::Threads> "$<$:hardware_clocks;hardware_exception>" $<$:winmm> # Windows library which implements timers )