Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
tools:freertos [2023/11/26 11:36] – [Resources] darrontools:freertos [2024/10/18 15:24] (current) – [Install] darron
Line 3: Line 3:
 ===Install=== ===Install===
  
-==current==+==Current==
  
 <code> <code>
Line 11: Line 11:
 </code> </code>
  
-===LTS===+==LTS==
  
 <code> <code>
Line 19: Line 19:
 </code> </code>
  
-==git==+==GIT==
  
 <code> <code>
Line 25: Line 25:
 git clone --recurse-submodules https://github.com/FreeRTOS/FreeRTOS git clone --recurse-submodules https://github.com/FreeRTOS/FreeRTOS
 </code> </code>
-===Configuration=== 
  
-Configuration for FreeRTOS on STM32F302R8 using timer tick instead +==KERNEL==
-of SysTick for multitasking.+
  
 <code> <code>
-/* +cd /opt 
- * FreeRTOS V202212.01 +git clone --recurse-submodules https://github.com/FreeRTOS/FreeRTOS-Kernel 
- * Copyright (C) 2020 Amazon.com, Inc. or its affiliates.  All Rights Reserved. +</code>
- * +
- * Permission is hereby granted, free of charge, to any person obtaining a copy of +
- * this software and associated documentation files (the "Software"), to deal in +
- * the Software without restriction, including without limitation the rights to +
- * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +
- * the Software, and to permit persons to whom the Software is furnished to do so, +
- * subject to the following conditions: +
- * +
- * The above copyright notice and this permission notice shall be included in all +
- * copies or substantial portions of the Software. +
- * +
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +
- * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +
- * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +
- * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +
- * +
- * https://www.FreeRTOS.org +
- https://github.com/FreeRTOS +
- +
- */+
  
-#ifndef FREERTOS_CONFIG_H +==RPi==
-#define FREERTOS_CONFIG_H+
  
-/*----------------------------------------------------------- +<code> 
- * Application specific definitions. +cd /opt 
- * +git clone --recurse-submodules https://github.com/raspberrypi/FreeRTOS-Kernel FreeRTOS-Kernel.rpi 
- * These definitions should be adjusted for your particular hardware and +</code>
- * application requirements. +
- * +
- * THESE PARAMETERS ARE DESCRIBED WITHIN THE 'CONFIGURATION' SECTION OF THE +
- * FreeRTOS API DOCUMENTATION AVAILABLE ON THE FreeRTOS.org WEB SITE. +
- * +
- * See https://www.freertos.org/a00110.html +
- *----------------------------------------------------------*/+
  
-/* Pre-emptive, else co-operative multi-tasking */ 
-#define configUSE_PREEMPTION                            1 
  
-/* Idle task: void vApplicationIdleHook(void); */ +===Update===
-#define configUSE_IDLE_HOOK                             0+
  
-/* Tick task: void vApplicationTickHook(void); */ +<code> 
-#define configUSE_TICK_HOOK                             0 +git pull --recurse-submodules
- +
-/* Core frequency for SysTick */ +
-#define configCPU_CLOCK_HZ                              (72000000) +
- +
-/* SysTick/Timer tick frequency */ +
-#define configTICK_RATE_HZ                              ((TickType_t)(1000)) +
- +
-/* Highest priority (1..32) */ +
-#define configMAX_PRIORITIES                            (4) /* 0..3 */ +
- +
-/* Idle task stack size */ +
-#define configMINIMAL_STACK_SIZE                        ((unsigned short)(128)) +
- +
-/* Memory heap size */ +
-#define configTOTAL_HEAP_SIZE                           ((size_t)(12 * 1024)) +
- +
-/* Task name length (1=DISABLE) */ +
-#define configMAX_TASK_NAME_LEN                         (3) +
- +
-/* Enable trace */ +
-#define configUSE_TRACE_FACILITY                        0 +
- +
-/* Tick counter size */ +
-#define configUSE_16_BIT_TICKS                          0 /* 0=32-bit */ +
- +
-/* Idle task yields to other tasks at idle priority */ +
-#define configIDLE_SHOULD_YIELD                         1 +
- +
-/* Enable mutexes */ +
-#define configUSE_MUTEXES                               1 +
- +
-/* Queue registry for debugging */ +
-#define configQUEUE_REGISTRY_SIZE                       8 +
- +
-/* Overflow task: void vApplicationStackOverflowHook(TaskHandle_t xTask, signed char *pcTaskName); */ +
-#define configCHECK_FOR_STACK_OVERFLOW                  0 /* 0..2 */ +
- +
-/* Enable recursive mutexes */ +
-#define configUSE_RECURSIVE_MUTEXES                     1 +
- +
-/* OOM task: void vApplicationMallocFailedHook(void); */ +
-#define configUSE_MALLOC_FAILED_HOOK                    0 +
- +
-/* Enable task tagging */ +
-#define configUSE_APPLICATION_TASK_TAG                  0 +
- +
-/* Enable semaphores */ +
-#define configUSE_COUNTING_SEMAPHORES                   1 +
- +
-/* See: https://www.freertos.org/rtos-run-time-stats.html */ +
-#define configGENERATE_RUN_TIME_STATS                   0 +
- +
-/* +
- * Software timer definitions. +
- * +
- * See: https://www.freertos.org/RTOS-software-timer.html +
- */ +
-#define configUSE_TIMERS                                1 +
-#define configTIMER_TASK_PRIORITY                       (2) +
-#define configTIMER_QUEUE_LENGTH                        10 +
-#define configTIMER_TASK_STACK_DEPTH                    (configMINIMAL_STACK_SIZE * 2) +
- +
-/* +
- * Set the following definitions to 1 to include the API function, or zero to +
- * exclude the API function. +
- */ +
-#define INCLUDE_vTaskPrioritySet                        1 +
-#define INCLUDE_uxTaskPriorityGet                       1 +
-#define INCLUDE_vTaskDelete                             1 +
-#define INCLUDE_vTaskCleanUpResources                   1 +
-#define INCLUDE_vTaskSuspend                            1 +
-#define INCLUDE_vTaskDelayUntil                         1 +
-#define INCLUDE_vTaskDelay                              1 +
- +
-/* +
- * Cortex-M4 specific definitions. +
- */ +
-#define configPRIO_BITS                                 4 /* 15 priority levels */ +
- +
-/* +
- * The lowest interrupt priority that can be used in a call to a "set priority" +
- * function. +
- */ +
-#define configLIBRARY_LOWEST_INTERRUPT_PRIORITY         0xf +
- +
-/* +
- * The highest interrupt priority that can be used by any interrupt service +
- * routine that makes calls to interrupt safe FreeRTOS API functions. DO NOT +
- * CALL * INTERRUPT SAFE FREERTOS API FUNCTIONS FROM ANY INTERRUPT THAT HAS A +
- * HIGHER PRIORITY THAN THIS! (higher priorities are lower numeric values. +
- */ +
-#define configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY    5 +
- +
-/* +
- * Interrupt priorities used by the kernel port layer itself. These are generic +
- * to all Cortex-M ports, and do not rely on any particular library functions. +
- */ +
-#define configKERNEL_INTERRUPT_PRIORITY         (configLIBRARY_LOWEST_INTERRUPT_PRIORITY << (8 - configPRIO_BITS)) +
- +
-/* +
- * !!!! configMAX_SYSCALL_INTERRUPT_PRIORITY must not be set to zero !!!! +
- * +
- * See http://www.FreeRTOS.org/RTOS-Cortex-M3-M4.html. +
- */ +
-#define configMAX_SYSCALL_INTERRUPT_PRIORITY    (configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY << (8 - configPRIO_BITS)) +
- +
-/* +
- * Normal assert() semantics without relying on the provision of an assert.h +
- * header file. +
- */ +
-#define configASSERT(x) if ((x) == 0) { taskDISABLE_INTERRUPTS(); for (;;); } +
- +
-/* +
- * Definitions that map the FreeRTOS port interrupt handlers to their CMSIS +
- * standard names. +
- */ +
-#define vPortSVCHandler         SVC_Handler +
-#define xPortPendSVHandler      PendSV_Handler +
-#if 0 /* Tick setup task: void vPortSetupTimerInterrupt(void); */ +
-#define xPortSysTickHandler     SysTick_Handler +
-#endif +
- +
-#endif /* !FREERTOS_CONFIG_H */+
 </code> </code>
 ====Resources==== ====Resources====
Line 208: Line 50:
 [[https://www.freertos.org/fr-content-src/uploads/2018/07/161204_Mastering_the_FreeRTOS_Real_Time_Kernel-A_Hands-On_Tutorial_Guide.pdf|Documentation]] [[https://www.freertos.org/fr-content-src/uploads/2018/07/161204_Mastering_the_FreeRTOS_Real_Time_Kernel-A_Hands-On_Tutorial_Guide.pdf|Documentation]]
  
-[[https://github.com/jefftenney/LPTIM-Tick|STM32 LPTIMER]]+[[https://github.com/jefftenney/LPTIM-Tick|STM32 LPTIM Tickless Idle]]