st_readme.txt 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427
  1. @verbatim
  2. ******************************************************************************
  3. *
  4. * Portions Copyright © 2019 STMicroelectronics International N.V. All rights reserved.
  5. * Portions Copyright (C) 2016 Real Time Engineers Ltd, All rights reserved
  6. *
  7. * @file st_readme.txt
  8. * @author MCD Application Team
  9. * @brief This file lists the main modification done by STMicroelectronics on
  10. * FreeRTOS for integration with STM32Cube solution.
  11. * For more details on FreeRTOS implementation on STM32Cube, please refer
  12. * to UM1722 "Developing Applications on STM32Cube with FreeRTOS"
  13. ******************************************************************************
  14. *
  15. * Copyright (c) 2019 STMicroelectronics. All rights reserved.
  16. *
  17. * This software component is licensed by ST under BSD 3-Clause license,
  18. * the "License"; You may not use this file except in compliance with the
  19. * License. You may obtain a copy of the License at:
  20. * opensource.org/licenses/BSD-3-Clause
  21. *
  22. ******************************************************************************
  23. @endverbatim
  24. =======
  25. ### 18-August-2023 ###
  26. =========================
  27. + LICENSE update
  28. - Add a LICENSE.md file at the root of the directory
  29. ### 31-August-2020 ###
  30. =========================
  31. + Bug fix for G0 compilation error due to IRQn_Type mismatch between G0 and other families
  32. - Source/CMSIS_RTOS_V2/cmsis_os2.c
  33. + Bug fix when using systick as timebasse for HAL
  34. - Source/CMSIS_RTOS_V2/cmsis_os2.c
  35. ### 20-July-2020 ###
  36. =========================
  37. + FreeRTOS: Update to FreeRTOS v10.3.1
  38. + CMSIS_RTOS_V2: update against the latest CMSIS-FreeRTOS v10.3.0 release
  39. - CMSIS_RTOS_V2/cmsis_os2.c
  40. - CMSIS_RTOS_V2/freertos_mpool.h
  41. - CMSIS_RTOS_V2/freertos_os2.h
  42. - CMSIS_RTOS_V2/os_systick.c
  43. + Add Tickless Idle support for CM23/CM33
  44. - GCC/ARM_CM23/non_secure/port.c
  45. - GCC/ARM_CM23/non_secure/portmacro.h
  46. - GCC/ARM_CM23_NTZ/non_secure/port.c
  47. - GCC/ARM_CM23_NTZ/non_secure/portmacro.h
  48. - GCC/ARM_CM33/non_secure/port.c
  49. - GCC/ARM_CM33/non_secure/portmacro.h
  50. - GCC/ARM_CM33_NTZ/non_secure/port.c
  51. - GCC/ARM_CM33_NTZ/non_secure/portmacro.h
  52. - IAR/ARM_CM23/non_secure/port.c
  53. - IAR/ARM_CM23/non_secure/portmacro.h
  54. - IAR/ARM_CM23_NTZ/non_secure/port.c
  55. - IAR/ARM_CM23_NTZ/non_secure/portmacro.h
  56. - IAR/ARM_CM33/non_secure/port.c
  57. - IAR/ARM_CM33/non_secure/portmacro.h
  58. - IAR/ARM_CM33_NTZ/non_secure/port.c
  59. - IAR/ARM_CM33_NTZ/non_secure/portmacro.h
  60. + Fix MPU hardfault bug for Cortex-M4 MPU
  61. - GCC\ARM_CM4_MPU\port.c
  62. - IAR\ARM_CM4_MPU\port.c
  63. - RVDS\ARM_CM4_MPU\port.c
  64. + Add support for 16 MPU regions to Cortex-M4 MPU ports
  65. - GCC/ARM_CM4_MPU/portmacro.h
  66. - IAR/ARM_CM4_MPU/portmacro.h
  67. - RVDS/ARM_CM4_MPU/portmacro.h
  68. + Update ARM_CM7_MPU source files for all compilers
  69. - GCC/ARM_CM7_MPU/r0p1/port.c
  70. - GCC/ARM_CM7_MPU/r0p1/portmacro.h
  71. - IAR/ARM_CM7_MPU/r0p1/port.c
  72. - IAR/ARM_CM7_MPU/r0p1/portasm.s
  73. - IAR/ARM_CM7_MPU/r0p1/portmacro.h
  74. - RVDS/ARM_CM7_MPU/r0p1/port.c
  75. - RVDS/ARM_CM7_MPU/r0p1/portmacro.h
  76. ### 17-January-2020 ###
  77. =========================
  78. + Fix compile error in the GCC CM7_MPU port caused by a duplicated variable declaration
  79. - Source/portable/GCC/ARM_CM7_MPU/r0p1/port.c
  80. ### 13-December-2019 ###
  81. =========================
  82. + Remove warnings thrown by EWARM for CM33/CM23 ports
  83. - IAR/ARM_CM23/non_secure/portmacro.h
  84. - IAR/ARM_CM23_NTZ/non_secure/portmacro.h
  85. - IAR/ARM_CM33/non_secure/portmacro.h
  86. - IAR/ARM_CM33_NTZ/non_secure/portmacro.h
  87. ### 19-July-2019 ###
  88. =========================
  89. + Fix runtime error in the IAR/CM4_MPU port
  90. - IAR/ARM_CM4_MPU/port.c
  91. ### 12-July-2019 ###
  92. =========================
  93. + FreeRTOS: Update against the FreeRTOS v10.2.1 release
  94. - support for the CM33 and CM23 cores
  95. + CMSIS_RTOS_V2: update against the latest CMSIS-FreeRTOS v10.2.0 release
  96. + Add MPU support for the CM7/r0p1:
  97. - GCC/ARM_CM7_MPU/r0p1/port.c
  98. - GCC/ARM_CM7_MPU/r0p1/portmacro.h
  99. - IAR/ARM_CM7_MPU/r0p1/port.c
  100. - IAR/ARM_CM7_MPU/r0p1/portasm.s
  101. - IAR/ARM_CM7_MPU/r0p1/portmacro.h
  102. - RVDS/ARM_CM7_MPU/r0p1/port.c
  103. - RVDS/ARM_CM7_MPU/r0p1/portmacro.h
  104. + cmsis_os.c: Fix compile errors by using the correct TimerCallbackFunction_t type for timer creation
  105. ### 29-Mars-2019 ###
  106. =========================
  107. + cmsis_os.c : Fix bug in osPoolAlloc(): memory blocks can't be reused after being free'd
  108. + Source/CMSIS_RTOS_V2/cmsis_os, Source/CMSIS_RTOS_V2/cmsis_os1.c, Source/CMSIS_RTOS_V2/cmsis_os2.c, Source/CMSIS_RTOS_V2/cmsis_os2.h: restore original Apache license terms
  109. + st_readme.txt: update license terms to BSD-3-Clause
  110. ### 13-August-2018 ###
  111. =========================
  112. + Add empty implementation for the missing function osThreadGetStackSize()
  113. to avoid link errors when using CMSIS-RTOS V2.
  114. + Update the FreeRTOSConfig_template.h with specific defines for the
  115. CMSIS-RTOS V2.
  116. + Rename the "RTE_RTOS_FreeRTOS_XXXX" macros to "USE_FreeRTOS_XXXX" in
  117. cmsis_os2.c.
  118. ### 30-July-2018 ###
  119. =========================
  120. + Update License.txt file to MIT license instead of GPLv2
  121. ### 23-July-2018 ###
  122. =========================
  123. + Fix compiler warnings thrown by IAR compiler 8.20
  124. + Add MPU support for the CM7/r0p1:
  125. - GCC/ARM_CM7_MPU/r0p1/port.c
  126. - GCC/ARM_CM7_MPU/r0p1/portmacro.h
  127. - IAR/ARM_CM7_MPU/r0p1/port.c
  128. - IAR/ARM_CM7_MPU/r0p1/portasm.s
  129. - IAR/ARM_CM7_MPU/r0p1/portmacro.h
  130. - RVDS/ARM_CM7_MPU/r0p1/port.c
  131. - RVDS/ARM_CM7_MPU/r0p1/portmacro.h
  132. ### 09-April-2018 ###
  133. =========================
  134. Update the FreeRTOS against the latest release 10.0.1
  135. more details are available in: https://www.freertos.org/History.txt
  136. + Integrate support for tickless mode for ARM_CM0 core:
  137. - GCC/ARM_CM0/port.c
  138. - GCC/ARM_CM0/portmacro.h
  139. - IAR/ARM_CM0/port.c
  140. - IAR/ARM_CM0/portmacro.h
  141. - RVDS/ARM_CM0/port.c
  142. Integrate CMSIS-RTOSv2 wrapper based on: https://github.com/ARM-software/CMSIS-FreeRTOS/releases/tag/10.0.1
  143. + Add new files:
  144. - CMSIS_RTOS_V2/cmsis_os.h
  145. - CMSIS_RTOS_V2/cmsis_os1.c
  146. - CMSIS_RTOS_V2/cmsis_os2.c
  147. - CMSIS_RTOS_V2/cmsis_os2.h
  148. "cmsis_os1.c" and "cmsis_os1.h" contains the reference implementation of
  149. CMSIS-RTOSv1,i.e as released by ARM, using the CMSIS-RTOSV2 API.
  150. + The ST customized CMSIS-RTOSv1 is maintained under:
  151. - CMSIS_RTOS/cmsis_os.c
  152. - CMSIS_RTOS/cmsis_os.h
  153. + When using CMSIS-RTOSv2 APIs, the following FreeRTOS defines are required:
  154. - #define configMAX_PRIORITIES 56
  155. - #define configSUPPORT_STATIC_ALLOCATION 0
  156. - #define configUSE_PORT_OPTIMISED_TASK_SELECTION 0
  157. ### 10-August-2017 ###
  158. =========================
  159. Update FreeRTOS to support MPU feature with IAR compiler.
  160. + Add the following ports:
  161. - IAR/ARM_CM4_MPU
  162. - IAR/ARM_CM7_MPU
  163. - RVDS/ARM_CM7_MPU
  164. ### 03-March-2017 ###
  165. =========================
  166. Update CMSIS-RTOS drivers to support both CMSIS Core V4.x and V5.x
  167. Bug fixes:
  168. + CMSIS-RTOS: Wrong return value for osSignalWait()
  169. + CMSIS-RTOS: Not all queue size is 0 initialized with osMailCAlloc()
  170. Limitation:
  171. + CMSIS-RTOS: osSignalWAit() function is not fully compliant with the specification
  172. ### 30-September-2016 ###
  173. =========================
  174. The purpose of this release is to Upgrade to use FreeRTOS V9.0.0, this version
  175. is a drop-in compatible replacement for FreeRTOS V8.2.3.
  176. For more details please refer to http://www.freertos.org/History.txt
  177. + Add support to tickless mode for MPU ports:
  178. - GCC/ARM_CM3_MPU/port.c
  179. - GCC/ARM_CM4_MPU/port.c
  180. - RVDS/ARM_CM4_MPU/port.c
  181. + Update CM0 ports, add possibility to use a timebase different than Systick:
  182. - IAR/ARM_CM0/port.c
  183. - RVDS/ARM_CM0/port.c
  184. - GCC/ARM_CM0/port.c
  185. + Fix compilation error in CM3_MPU and CM4_MPU ports:
  186. - GCC/ARM_CM3_MPU/portmacro.h
  187. - GCC/ARM_CM4_MPU/portmacro.h
  188. - RVDS/ARM_CM4_MPU/portmacro.h
  189. - Add "Source\portable\Common\" directory
  190. + cmsis_os.c
  191. - Add support of Statically Allocated Systems introduced with FreeRTOS V9.0.0
  192. - Add new wrappers CMSIS-RTOS APIs
  193. FreeRTOS APIs | CMSIS-RTOS APIs | Description
  194. ==================================================================================================================
  195. uxQueueMessagesWaiting() | osMessageWaiting() | Return the number of messages stored in a queue
  196. ------------------------------------------------------------------------------------------------------------------
  197. xTaskAbortDelay() | osAbortDelay() | Force a thread to get out the blocked state immediately
  198. ------------------------------------------------------------------------------------------------------------------
  199. uxSemaphoreGetCount() | osSemaphoreGetCount() | Return the current count of a semaphore
  200. ------------------------------------------------------------------------------------------------------------------
  201. uxQueueSpacesAvailable() | osMessageAvailableSpace() | Return the available space in a message queue
  202. ------------------------------------------------------------------------------------------------------------------
  203. vQueueDelete() | osMessageDelete() | Delete a message Queue
  204. ------------------------------------------------------------------------------------------------------------------
  205. ### 22-January-2016 ###
  206. =======================
  207. The purpose of this release is to Upgrade to use FreeRTOS V8.2.3.
  208. It also provides fixes for minor issues.
  209. + cmsis_os.c
  210. - Implementation of functions "osSignalSet" and "osSignalWait" are now delimited by
  211. #define configUSE_TASK_NOTIFICATIONS.
  212. - Function "osTimerStart" : fix for an assert issue when called from an ISR.
  213. - Function "osMailCreate" : internal variables initialization.
  214. - Function "osSignalWait" : signals value is now compared versus integer zero for error checking.
  215. + freeRTOS sources
  216. - FreeRTOS.h file : Add configuration sanity check in case of configUSE_RECURSIVE_MUTEXES set
  217. and configUSE_MUTEXES not set.
  218. + STMicroelectronics license simplifications, see license disclaimer within this file's header
  219. ### 27-March-2015 ###
  220. =====================
  221. The purpose of this release is to Upgrade to use FreeRTOS V8.2.1.
  222. + Major change of the version 8.2.1 is the support of CM7 core.
  223. For STM32F746xx/STM32F756xx devices, need to use port files under Source/Portable/XXX/ARM_CM7/r0p1,
  224. where XXX refers to the compiler used.
  225. + It also provides implementation of osSignal management APIs, osSignalSet() and osSignalWait(),
  226. fixes osMassage queue size, osMailQDef macro and osDelayUntil parameters.
  227. + In this release an alignment has been done in ARM_CM4 and ARM_CM3 port.c versus ARM_CM0 port.c
  228. regarding the use of macros configPRE_SLEEP_PROCESSING and configPOST_SLEEP_PROCESSING, these tow macros
  229. are now taking as parameter as pointer to TickType_t.
  230. + cmsis_os.c
  231. - Add implementation of osSignalSet() and osSignalWait() APIs
  232. - Fix massage queue size in osMessageCreate API
  233. - osDelayUntil: parameter PreviousWakeTime is now passed as a pointer.
  234. - Enabling Mail queue management APIs (temporary removed in previous version).
  235. - Function "osThreadGetPriority" uses now uxTaskPriorityGetFromISR if called from an interrupt handler, if not use uxTaskPriorityGet.
  236. + cmsis_os.h
  237. - osFeature_Wait is defined to 0 to indicate that osWait function is not available (as specified by cmsis_os template by ARM)
  238. - Fix compilation issue with osMailQDef macro.
  239. - Enabling Mail queue management APIs (temporary removed in previous version)
  240. + freeRTOS sources
  241. - ARM_CM3 port.c and ARM_CM4 port.c:
  242. function vPortSuppressTicksAndSleep : configPRE_SLEEP_PROCESSING and configPOST_SLEEP_PROCESSING are now taking
  243. as parameter as pointer to TickType_t.
  244. The purpose of this change is to align the CM3 and CM4 implementation with CM0 one.
  245. + Note
  246. - osSignalSet returns an int32_t value which is a a status (osOK or osError)
  247. instead of the previous signal value as specified in cmsis_os template by ARM.
  248. This is mainly due to freeRTOS implementation, the return value will be aligned (with the cmsis os template by ARM) as soon as the freeRTOS next version will allow it.
  249. - osThreadDef() macro is defined in the freeRTOS cmsis_os.h wrapper as follow :
  250. osThreadDef(name, thread, priority, instances, stacksz)
  251. the macro osThreadDef() as defined in ARM cmsis_os.h is defined with 4 parameters :
  252. name : name of the thread function.
  253. priority : initial priority of the thread function.
  254. instances : number of possible thread instances.
  255. stacksz : stack size (in bytes) requirements for the thread function.
  256. - osThreadDef as defined in the ARM template file cmsis_os.h assumes that the thread name is the same as the thread function name.
  257. where the freeRTOS implementation gives separate parameters for the thread name and the thread function name.
  258. care must be taken when porting an application from/to another OS to/from freeRTOS cmsis_os regarding this macro.
  259. the macro osThreadDef() as defined in ARM cmsis_os.h template is defined with 4 parameters :
  260. name : name of the thread function.
  261. priority : initial priority of the thread function.
  262. instances : number of possible thread instances.
  263. stacksz : stack size (in bytes) requirements for the thread function.
  264. the macro osThreadDef() as defined in freeRTOS cmsis_os.h is defined with 5 parameters :
  265. name : name of the thread (used for debugging and trace).
  266. thread : name of the thread function
  267. priority : initial priority of the thread function.
  268. instances : number of possible thread instances.
  269. stacksz : stack size (in bytes) requirements for the thread function.
  270. ### 25-December-2014 ###
  271. ========================
  272. The purpose of this release is to remove compilation errors and warning. It also reintroduces
  273. the function osThreadIsSuspended() which has been removed in the version V1.2.0.
  274. + cmsis_os.c
  275. - osThreadGetPriority() and makeCmsisPriority(): replace INCLUDE_vTaskPriorityGet by the correct
  276. freeRTOS constant uxTaskPriorityGet.
  277. The version 1.2.2 is using a wrong constant INCLUDE_vTaskPriorityGet, while the correct freeRTOS
  278. constant is uxTaskPriorityGet.
  279. This fix ensure a safe use of osThreadGetPriority() function.
  280. - osThreadIsSuspended(): this function has been removed in version V1.2.0, it is now available gain.
  281. User can either use this function to check if a Thread is suspended either use function osThreadGetState,
  282. which is more generic, to check the exact state of a thread.
  283. - osThreadList(): this function is now taking as argument a pointer to uint8_t instead of a pointer to int8_t.
  284. The change is made to remove a compilation warning.
  285. - osRecursiveMutexCreate(): the prototype has been changed to osMutexId osRecursiveMutexCreate (const osMutexDef_t *mutex_def)
  286. This change is made to make osRecursiveMutexCreate() compatible with function MutexCreate().
  287. It also allow the better use of the function in conjunction with the macro osMutex, note that osMutex return a
  288. "const osMutexDef_t *mutex_def".
  289. example : osMutex1Id = osRecursiveMutexCreate (osMutex(Mutex1));
  290. - Fix implementation of functions osSemaphoreWait(), osMutexRelease() and osMutexWait() by using the appropriate
  291. freeRTOS “FromISR” APIs when called from an interrupt.
  292. - Fix compilation warning when the constant INCLUDE_eTaskGetState is not defined
  293. + cmsis_os.h
  294. - osThreadIsSuspended(): add function prototype.
  295. - osThreadList(): function prototype modified as described in cmsis_os.c section.
  296. - osRecursiveMutexCreate(): function modified as described in cmsis_os.c section.
  297. + Important note:
  298. Mail Queue Management Functions are not supported in this cmsis_os version, will be added in the next release.
  299. ### 04-December-2014 ###
  300. ========================
  301. + cmsis_os.c, osSemaphoreCreate(): use vSemaphoreCreateBinary() instead of xSemaphoreCreateBinary(),
  302. to keep compatibility with application code developed on FreeRTOS V7.6.0.
  303. ### 07-November-2014 ###
  304. ========================
  305. + cmsis_os.h: modify the osThreadState enum to fix warning generated by ARMCC compiler
  306. + task.c: add preprocessor compilation condition for prvTaskIsTaskSuspended() function
  307. (it's build only when INCLUDE_vTaskSuspend option is enabled in FreeRTOSConfig.h file)
  308. ### 04-November-2014 ###
  309. ========================
  310. + Upgrade to use FreeRTOS V8.1.2 and CMSIS-RTOS V1.02.
  311. + cmsis_os.c
  312. - Almost of CMSIS-RTOS APIs are implemented for FreeRTOS
  313. - Additional wrapper APIs created for FreeRTOS
  314. + Important note:
  315. When upgrading existing application code to use this last version, the following
  316. update should be considered:
  317. - osThreadIsSuspended() is no longer public API in FreeRTOS and it should
  318. be replaced by the wrapping of eTaskGetState()
  319. - osKernelStart() API changed, must be updated
  320. - update FreeRTOSConfig.h file, taking FreeRTOSConfig_template.h file as reference
  321. ### 13-June-2014 ###
  322. ====================
  323. + FreeRTOSConfig_template.h: add this definition #define INCLUDE_xTaskGetSchedulerState 1
  324. to enable the use of xTaskGetSchedulerState() API in the
  325. application code.
  326. ### 30-April-2014 ###
  327. =====================
  328. + cmsis_os.c: add preprocessor compilation condition when calling some FreeRTOS APIs, to avoid link
  329. errors with MDK-ARM when some FreeRTOS features are not enabled in FreeRTOSConfig.h
  330. ### 22-April-2014 ###
  331. =====================
  332. + Add Tickles mode for CM0 port (IAR, GCC, RVDS).
  333. ### 18-February-2014 ###
  334. ========================
  335. + FreeRTOS V7.6.0 customized version for STM32Cube solution.
  336. * <h3><center>&copy; COPYRIGHT STMicroelectronics</center></h3>
  337. */