116 lines
		
	
	
		
			6.7 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			116 lines
		
	
	
		
			6.7 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| #ifndef FREERTOS_CONFIG_H
 | |
| #define FREERTOS_CONFIG_H
 | |
| 
 | |
| /*-----------------------------------------------------------
 | |
|  * Application specific definitions.
 | |
|  *
 | |
|  * These definitions should be adjusted for your particular hardware and
 | |
|  * application requirements.
 | |
|  *
 | |
|  * THESE PARAMETERS ARE DESCRIBED WITHIN THE 'CONFIGURATION' SECTION OF THE
 | |
|  * FreeRTOS API DOCUMENTATION AVAILABLE ON THE FreeRTOS.org WEB SITE.
 | |
|  *
 | |
|  * See http://www.freertos.org/a00110.html.
 | |
|  *----------------------------------------------------------*/
 | |
| 
 | |
| // Scheduler Configuration
 | |
| #define configUSE_PREEMPTION                    1    // 1: Preemptive scheduler, 0: Cooperative scheduler
 | |
| #define configUSE_PORT_OPTIMISED_TASK_SELECTION 0    // Use optimized task selection if available
 | |
| #define configUSE_IDLE_HOOK                     0    // 1: Use Idle hook function
 | |
| #define configUSE_TICK_HOOK                     0    // 1: Use Tick hook function
 | |
| #define configIDLE_SHOULD_YIELD                 1    // 1: Idle task yields to same priority tasks
 | |
| #define configUSE_PASSIVE_IDLE_HOOK             0    // No passive idle hook (SMP-specific)
 | |
| 
 | |
| // System Clock Configuration
 | |
| #define configCPU_CLOCK_HZ                      ((unsigned long)150000000) // CPU frequency: 150 MHz for RP2350
 | |
| #define configTICK_RATE_HZ                      ((TickType_t)1000)         // RTOS tick frequency (1000 Hz = 1ms tick)
 | |
| 
 | |
| // Task Configuration
 | |
| #define configMAX_PRIORITIES                    5    // Maximum number of priority levels
 | |
| #define configMINIMAL_STACK_SIZE                ((unsigned short)256)      // Minimum stack size in words
 | |
| #define configMAX_TASK_NAME_LEN                 (16) // Maximum length of task names
 | |
| 
 | |
| // Memory Configuration
 | |
| #define configTOTAL_HEAP_SIZE                   ((size_t)(16 * 1024)) // Total RTOS heap size (16 KB)
 | |
| #define configSUPPORT_DYNAMIC_ALLOCATION        1     // 1: Enable dynamic memory allocation
 | |
| 
 | |
| // Synchronization Primitives
 | |
| #define configUSE_MUTEXES                       1    // 1: Enable mutexes
 | |
| #define configUSE_RECURSIVE_MUTEXES             1    // 1: Enable recursive mutexes
 | |
| #define configUSE_COUNTING_SEMAPHORES           1    // 1: Enable counting semaphores
 | |
| #define configQUEUE_REGISTRY_SIZE               8    // Number of queues/semaphores that can be registered
 | |
| 
 | |
| // Debugging and Diagnostics
 | |
| #define configUSE_TRACE_FACILITIES              0    // 1: Enable trace/debug facilities
 | |
| #define configCHECK_FOR_STACK_OVERFLOW          2    // Stack overflow checking method (0=off, 1=method1, 2=method2)
 | |
| #define configUSE_MALLOC_FAILED_HOOK            0    // 1: Use memory allocation failure hook
 | |
| #define configUSE_APPLICATION_TASK_TAG          0    // 1: Enable task tagging
 | |
| #define configGENERATE_RUN_TIME_STATS           0    // 1: Generate run-time statistics
 | |
| 
 | |
| // Timer Configuration
 | |
| #define configUSE_TIMERS                        1    // 1: Enable software timers
 | |
| #define configTIMER_TASK_PRIORITY               (2)  // Timer service task priority
 | |
| #define configTIMER_QUEUE_LENGTH                10   // Timer command queue length
 | |
| #define configTIMER_TASK_STACK_DEPTH            (configMINIMAL_STACK_SIZE * 2) // Timer task stack size
 | |
| 
 | |
| // Co-routine Configuration
 | |
| #define configUSE_CO_ROUTINES                   0    // 1: Enable co-routines
 | |
| #define configMAX_CO_ROUTINE_PRIORITIES         (2)  // Maximum co-routine priorities
 | |
| 
 | |
| // Hardware Specific Configuration
 | |
| #define configENABLE_FPU                        1    // 1: Enable Floating Point Unit
 | |
| #define configUSE_TASK_FPU_SUPPORT              1    // Enable FPU context save/restore
 | |
| #define configENABLE_TRUSTZONE                  0    // 1: Enable TrustZone
 | |
| #define configRUN_FREERTOS_SECURE_ONLY          1    // 1: Run in secure mode only
 | |
| #define configENABLE_MPU                        0    // 1: Enable Memory Protection Unit (defined twice in original)
 | |
| #define configUSE_16_BIT_TICKS                  0    // 0: Use 32-bit ticks, 1: Use 16-bit ticks
 | |
| 
 | |
| // SMP Configuration
 | |
| #define configNUMBER_OF_CORES                   2    // RP2350 has 2 cores
 | |
| #if configNUMBER_OF_CORES > 1
 | |
| #define configUSE_SMP                           1    // Enable Symmetric Multiprocessing
 | |
| #define configUSE_CORE_AFFINITY                 1
 | |
| #define configSMP_SPINLOCK_0                    0    // Spinlock 0 for SMP synchronization
 | |
| #define configSMP_SPINLOCK_1                    1    // Spinlock 1 (optional, depending on port)
 | |
| 
 | |
| /* Fallback for missing portmacro.h definition */
 | |
| #ifndef taskDISABLE_INTERRUPTS
 | |
| #define taskDISABLE_INTERRUPTS() __asm volatile ("cpsid i" ::: "memory")
 | |
| #endif
 | |
| #endif
 | |
| 
 | |
| // API Inclusion Configuration
 | |
| #define INCLUDE_vTaskPrioritySet                1    // Include task priority set API
 | |
| #define INCLUDE_uxTaskPriorityGet               1    // Include task priority get API
 | |
| #define INCLUDE_vTaskDelete                     1    // Include task delete API
 | |
| #define INCLUDE_vTaskCleanUpResources           0    // Include task cleanup API
 | |
| #define INCLUDE_vTaskSuspend                    1    // Include task suspend API
 | |
| #define INCLUDE_vTaskDelayUntil                 1    // Include delay until API
 | |
| #define INCLUDE_vTaskDelay                      1    // Include delay API
 | |
| #define INCLUDE_xTaskGetSchedulerState          1    // Include scheduler state API
 | |
| #define INCLUDE_xTaskGetCurrentTaskHandle       1    // Include current task handle API
 | |
| #define INCLUDE_uxTaskGetStackHighWaterMark     0    // Include stack high water mark API
 | |
| #define INCLUDE_xTaskGetIdleTaskHandle          0    // Include idle task handle API
 | |
| #define INCLUDE_eTaskGetState                   0    // Include task state API
 | |
| #define INCLUDE_xSemaphoreGetMutexHolder        0    // Include mutex holder API
 | |
| #define INCLUDE_xTimerPendFunctionCall          1    // Include timer pend function call API (defined twice in original)
 | |
| #define INCLUDE_xQueueGetMutexHolder            0    // Include queue mutex holder API
 | |
| #define INCLUDE_xEventGroupSetBitFromISR        1    // Include event group set bit from ISR API
 | |
| 
 | |
| // Cortex-M Interrupt Configuration
 | |
| #ifdef __NVIC_PRIO_BITS
 | |
|     #define configPRIO_BITS             __NVIC_PRIO_BITS    // Use CMSIS defined priority bits
 | |
| #else
 | |
|     #define configPRIO_BITS             3                   // 7 priority levels (default)
 | |
| #endif
 | |
| 
 | |
| #define configLIBRARY_LOWEST_INTERRUPT_PRIORITY         0x7    // Lowest interrupt priority
 | |
| #define configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY    5      // Highest priority for FreeRTOS API calls
 | |
| 
 | |
| #define configKERNEL_INTERRUPT_PRIORITY         (configLIBRARY_LOWEST_INTERRUPT_PRIORITY << (8 - configPRIO_BITS))
 | |
| #define configMAX_SYSCALL_INTERRUPT_PRIORITY    (configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY << (8 - configPRIO_BITS))
 | |
| 
 | |
| // Assertion Definition
 | |
| #define configASSERT(x) if((x) == 0) { taskDISABLE_INTERRUPTS(); for(;;); } // Basic assert implementation
 | |
| 
 | |
| #endif /* FREERTOS_CONFIG_H */ | 
