FreeRTOSConfig.h 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133
  1. #ifndef FREERTOS_CONFIG_H
  2. #define FREERTOS_CONFIG_H
  3. #include <stdint.h>
  4. /**
  5. * @brief RyanJson 单元测试的 FreeRTOS 内核配置入口(固定 Linux POSIX 端口)。
  6. * @note 该文件不是业务代码接口,而是 FreeRTOS 内核编译期配置表。
  7. * @details xmake 会编译 FreeRTOS Kernel + POSIX port,并由这里的宏控制调度、
  8. * 内存、断言和 API 裁剪行为。
  9. */
  10. /**
  11. * @brief 统一断言出口。
  12. * @note 具体实现由 `test/unityTest/runner/main.c` 提供。
  13. * @details 内核触发 `configASSERT()` 时会回调 `vAssertCalled()`,便于在单元测试日志里
  14. * 精确定位断言文件和行号。
  15. */
  16. extern void vAssertCalled(const char *file, int32_t line);
  17. #define configASSERT(x) \
  18. do \
  19. { \
  20. if ((x) == 0) { vAssertCalled(__FILE__, (int32_t)__LINE__); } \
  21. } while (0)
  22. /**
  23. * @brief 调度与时基配置。
  24. * @note 这里采用抢占式调度和 1ms Tick,优先覆盖并发场景下的测试行为。
  25. * @details `configCHECK_HANDLER_INSTALLATION` 在支持的移植层上可增加中断处理器安装检查。
  26. */
  27. #define configUSE_PREEMPTION 1
  28. #define configUSE_PORT_OPTIMISED_TASK_SELECTION 0
  29. #define configUSE_TIME_SLICING 1
  30. #define configUSE_16_BIT_TICKS 0
  31. #define configUSE_TICK_HOOK 0
  32. #define configUSE_IDLE_HOOK 0
  33. #define configCHECK_HANDLER_INSTALLATION 1
  34. #define configUSE_LIST_DATA_INTEGRITY_CHECK_BYTES 1
  35. #define configCPU_CLOCK_HZ 1000000UL
  36. #define configTICK_RATE_HZ 1000UL
  37. #define configMAX_PRIORITIES 16
  38. #define configMINIMAL_STACK_SIZE 256U
  39. #define configMAX_TASK_NAME_LEN 32
  40. #define configIDLE_SHOULD_YIELD 1
  41. #define configRECORD_STACK_HIGH_ADDRESS 1
  42. /**
  43. * @brief 内核对象能力开关。
  44. * @note 测试模式下尽量打开常用同步原语,覆盖更多内核交互路径。
  45. */
  46. #define configUSE_TASK_NOTIFICATIONS 1
  47. #define configTASK_NOTIFICATION_ARRAY_ENTRIES 1
  48. #define configUSE_MUTEXES 1
  49. #define configUSE_RECURSIVE_MUTEXES 1
  50. #define configUSE_COUNTING_SEMAPHORES 1
  51. #define configUSE_QUEUE_SETS 1
  52. #define configUSE_APPLICATION_TASK_TAG 1
  53. #define configQUEUE_REGISTRY_SIZE 16
  54. #define configENABLE_BACKWARD_COMPATIBILITY 0
  55. #define configUSE_MINI_LIST_ITEM 0
  56. #define configSTACK_DEPTH_TYPE size_t
  57. #define configMESSAGE_BUFFER_LENGTH_TYPE size_t
  58. /**
  59. * @brief 诊断与观测能力。
  60. * @note 栈溢出与分配失败 hook 已在 runner 中实现,会在失败时直接终止并打日志。
  61. */
  62. #define configCHECK_FOR_STACK_OVERFLOW 2
  63. #define configUSE_MALLOC_FAILED_HOOK 1
  64. #define configUSE_SB_COMPLETED_CALLBACK 1
  65. #define configUSE_TRACE_FACILITY 1
  66. #define configUSE_STATS_FORMATTING_FUNCTIONS 1
  67. #define configGENERATE_RUN_TIME_STATS 0
  68. #define configSTATS_BUFFER_MAX_LENGTH 0xFFFFU
  69. /**
  70. * @brief 内存分配模型配置(固定 `heap_4`)。
  71. * @details
  72. * - 单测链路统一使用 FreeRTOS `heap_4`(可释放且支持空闲块合并)。
  73. * - `heap_4` 依赖 `configTOTAL_HEAP_SIZE` 定义的静态堆区。
  74. * - `configHEAP_CLEAR_MEMORY_ON_FREE` 与 `configENABLE_HEAP_PROTECTOR`
  75. * 可增强 UAF/越界类问题暴露能力。
  76. */
  77. #define configSUPPORT_STATIC_ALLOCATION 0
  78. #define configSUPPORT_DYNAMIC_ALLOCATION 1
  79. #define configAPPLICATION_ALLOCATED_HEAP 0
  80. #define configTOTAL_HEAP_SIZE (64U * 1024U * 1024U)
  81. #define configHEAP_CLEAR_MEMORY_ON_FREE 1
  82. #define configENABLE_HEAP_PROTECTOR 1
  83. #define configUSE_CO_ROUTINES 0
  84. /**
  85. * @brief 软件定时器配置。
  86. * @note 定时器任务使用较高优先级,避免测试中的计时行为被长时间饿死。
  87. */
  88. #define configUSE_TIMERS 1
  89. #define configTIMER_TASK_PRIORITY (configMAX_PRIORITIES - 1)
  90. #define configTIMER_QUEUE_LENGTH 20
  91. #define configTIMER_TASK_STACK_DEPTH (configMINIMAL_STACK_SIZE * 2U)
  92. /**
  93. * @brief POSIX 端辅助能力。
  94. * @note 开启 `configUSE_POSIX_ERRNO` 后,每个任务可维护自己的 errno 语义。
  95. */
  96. #define configNUM_THREAD_LOCAL_STORAGE_POINTERS 5
  97. #define configUSE_POSIX_ERRNO 1
  98. /**
  99. * @brief API 暴露开关。
  100. * @note 测试目标倾向开启更多 API,便于未来补充内核交互类单测。
  101. */
  102. #define INCLUDE_vTaskPrioritySet 1
  103. #define INCLUDE_uxTaskPriorityGet 1
  104. #define INCLUDE_vTaskDelete 1
  105. #define INCLUDE_vTaskSuspend 1
  106. #define INCLUDE_xTaskDelayUntil 1
  107. #define INCLUDE_vTaskDelay 1
  108. #define INCLUDE_xTaskGetSchedulerState 1
  109. #define INCLUDE_xTaskGetCurrentTaskHandle 1
  110. #define INCLUDE_xTaskGetIdleTaskHandle 1
  111. #define INCLUDE_eTaskGetState 1
  112. #define INCLUDE_xTaskGetHandle 1
  113. #define INCLUDE_xTaskAbortDelay 1
  114. #define INCLUDE_uxTaskGetStackHighWaterMark 1
  115. #define INCLUDE_uxTaskGetStackHighWaterMark2 1
  116. #define INCLUDE_xTimerPendFunctionCall 1
  117. #define INCLUDE_xTaskResumeFromISR 1
  118. #define INCLUDE_xSemaphoreGetMutexHolder 1
  119. #endif