99--------
1010
1111In Nuclei SDK, we have support four most-used RTOSes in the world,
12- **FreeRTOS **, **UCOSII **, **ThreadX ** and **RT-Thread from China **.
12+ **FreeRTOS **, **UCOSII **, **ThreadX ** and **RT-Thread Nano **.
1313
1414Our RTOS port require Nuclei ECLIC interrupt controller, please make sure
1515your Nuclei CPU is configured with ECLIC present.
@@ -19,9 +19,11 @@ of the supported RTOSes.
1919
2020.. note ::
2121
22- When you want to develop RTOS application in Nuclei SDK, please
23- don't reconfigure ``SysTimer `` and ``SysTimer Software Interrupt ``,
24- since it is already used by RTOS portable code.
22+ - From 0.9.0, we have fixed task stack alignment to match psABI requirement,
23+ please see changes happened in ``RTOS `` folder in git repo.
24+ - When you want to develop RTOS application in Nuclei SDK, please
25+ don't reconfigure ``SysTimer `` and ``SysTimer Software Interrupt ``,
26+ since it is already used by RTOS portable code.
2527
2628.. _design_rtos_freertos :
2729
@@ -44,7 +46,7 @@ In our FreeRTOS porting, we also allow FreeRTOS configuration variable
4446The ``configMAX_SYSCALL_INTERRUPT_PRIORITY `` should be set to be a
4547absolute interrupt level range from 1 to (2^lvlbits-1) while ``lvlbits = min(nlbits, CLICINTCTLBITS) ``.
4648
47- If you set configMAX_SYSCALL_INTERRUPT_PRIORITY to value above the accepted
49+ If you set `` configMAX_SYSCALL_INTERRUPT_PRIORITY `` to value above the accepted
4850value range, it will use the max value.
4951
5052If you want to learn about how to use FreeRTOS APIs, you need to go to
@@ -70,6 +72,8 @@ for details, please check ``OS/FreeRTOS/build.mk``.
7072
7173.. note ::
7274
75+ * From 0.9.0, when ``configMAX_SYSCALL_INTERRUPT_PRIORITY >= 255 ``, the FreeRTOS interrupt masking will
76+ use MSTATUS.MIE to disable/enable interrupts, otherwise it will use ECLIC MTH as before.
7377 * You can check the ``application\freertos\ `` for freertos application reference
7478 * From Nuclei SDK 0.6.0, we introduced FreeRTOS SMP support, both Nuclei RV32 and RV64 processors are supported.
7579 * Current version of FreeRTOS used in Nuclei SDK is ``V11.1.0 ``
@@ -106,6 +110,8 @@ And in your application code, you need to do the following things:
106110
107111.. note ::
108112
113+ * From 0.9.0, we have fixed UCOS-II interrupt masking to use MSTATUS.MIE only,
114+ no longer mess up with ECLIC MTH.
109115 * You can check the ``application\ucosii\ `` for ucosii application reference
110116 * The UCOS-II application configuration template files can also be found in
111117 https://github.com/SiliconLabs/uC-OS2/tree/master/Cfg/Template
@@ -209,6 +215,19 @@ And in your application code, you need to do the following things:
209215 * You can check the ``application\threadx\ `` for threadx application reference
210216 * Currently we only support single core version, the SMP version is not yet supported.
211217
218+ .. _design_rtos_others :
219+
220+ Others
221+ ------
222+
223+ We also support other RTOSes, but not maintained in Nuclei SDK, please see following links:
224+
225+ - **OpenHarmony LiteOS-M **: https://github.com/riscv-mcu/kernel_liteos_m/tree/nuclei/OpenHarmony-3.0-LTS/targets/riscv_nuclei_evalsoc_gcc
226+ - **RT-Thread **: https://github.com/riscv-mcu/rt-thread/issues/1
227+ - **Nuttx variants such Appache NuttX, Xiaomi Vela, LiAuto HaloOS **: https://github.com/riscv-mcu/nuttx/tree/nuclei_trunk/Documentation/platforms/risc-v/nuclei-evalsoc/boards/nuclei-fpga-eval
228+ - **Zephyr RTOS **: https://github.com/riscv-mcu/zephyr/blob/nuclei/4.1-branch/boards/nuclei/fpga_eval/doc/index.rst
229+ - **Little Kernel **: https://github.com/littlekernel/lk/pull/281
230+
212231.. _FreeRTOS : https://www.freertos.org/
213232.. _UCOSII : https://www.micrium.com/
214233.. _RT_Thread : https://www.rt-thread.org/
0 commit comments