diff --git a/FreeRTOS-Plus/Demo/AWS/Device_Shadow_Windows_Simulator/Device_Shadow_Demo/FreeRTOSConfig.h b/FreeRTOS-Plus/Demo/AWS/Device_Shadow_Windows_Simulator/Device_Shadow_Demo/FreeRTOSConfig.h
index 03c7548c66..ea45aec6ea 100644
--- a/FreeRTOS-Plus/Demo/AWS/Device_Shadow_Windows_Simulator/Device_Shadow_Demo/FreeRTOSConfig.h
+++ b/FreeRTOS-Plus/Demo/AWS/Device_Shadow_Windows_Simulator/Device_Shadow_Demo/FreeRTOSConfig.h
@@ -20,7 +20,8 @@
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*
* https://www.FreeRTOS.org
- * https://aws.amazon.com/freertos
+ * https://github.com/FreeRTOS
+ *
*/
#ifndef FREERTOS_CONFIG_H
@@ -101,15 +102,7 @@
#define INCLUDE_xEventGroupSetBitsFromISR 1
#define INCLUDE_xTimerPendFunctionCall 1
#define INCLUDE_pcTaskGetTaskName 1
-
-/* This demo makes use of one or more example stats formatting functions. These
- * format the raw data provided by the uxTaskGetSystemState() function in to human
- * readable ASCII form. See the notes in the implementation of vTaskList() within
- * FreeRTOS/Source/tasks.c for limitations. configUSE_STATS_FORMATTING_FUNCTIONS
- * is set to 2 so the formatting functions are included without the stdio.h being
- * included in tasks.c. That is because this project defines its own sprintf()
- * functions. */
-#define configUSE_STATS_FORMATTING_FUNCTIONS 1
+#define configUSE_STATS_FORMATTING_FUNCTIONS 0
/* Assert call defined for debug builds. */
#ifdef _DEBUG
diff --git a/FreeRTOS-Plus/Demo/AWS/Jobs_Windows_Simulator/Jobs_Demo/FreeRTOSConfig.h b/FreeRTOS-Plus/Demo/AWS/Jobs_Windows_Simulator/Jobs_Demo/FreeRTOSConfig.h
index 03c7548c66..ea45aec6ea 100644
--- a/FreeRTOS-Plus/Demo/AWS/Jobs_Windows_Simulator/Jobs_Demo/FreeRTOSConfig.h
+++ b/FreeRTOS-Plus/Demo/AWS/Jobs_Windows_Simulator/Jobs_Demo/FreeRTOSConfig.h
@@ -20,7 +20,8 @@
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*
* https://www.FreeRTOS.org
- * https://aws.amazon.com/freertos
+ * https://github.com/FreeRTOS
+ *
*/
#ifndef FREERTOS_CONFIG_H
@@ -101,15 +102,7 @@
#define INCLUDE_xEventGroupSetBitsFromISR 1
#define INCLUDE_xTimerPendFunctionCall 1
#define INCLUDE_pcTaskGetTaskName 1
-
-/* This demo makes use of one or more example stats formatting functions. These
- * format the raw data provided by the uxTaskGetSystemState() function in to human
- * readable ASCII form. See the notes in the implementation of vTaskList() within
- * FreeRTOS/Source/tasks.c for limitations. configUSE_STATS_FORMATTING_FUNCTIONS
- * is set to 2 so the formatting functions are included without the stdio.h being
- * included in tasks.c. That is because this project defines its own sprintf()
- * functions. */
-#define configUSE_STATS_FORMATTING_FUNCTIONS 1
+#define configUSE_STATS_FORMATTING_FUNCTIONS 0
/* Assert call defined for debug builds. */
#ifdef _DEBUG
diff --git a/FreeRTOS-Plus/Demo/AWS/Ota_Windows_Simulator/Ota_Over_Http_Demo/FreeRTOSConfig.h b/FreeRTOS-Plus/Demo/AWS/Ota_Windows_Simulator/Ota_Over_Http_Demo/FreeRTOSConfig.h
index b7bd694d7c..95be42e82b 100644
--- a/FreeRTOS-Plus/Demo/AWS/Ota_Windows_Simulator/Ota_Over_Http_Demo/FreeRTOSConfig.h
+++ b/FreeRTOS-Plus/Demo/AWS/Ota_Windows_Simulator/Ota_Over_Http_Demo/FreeRTOSConfig.h
@@ -102,15 +102,7 @@
#define INCLUDE_xEventGroupSetBitsFromISR 1
#define INCLUDE_xTimerPendFunctionCall 1
#define INCLUDE_pcTaskGetTaskName 1
-
-/* This demo makes use of one or more example stats formatting functions. These
- * format the raw data provided by the uxTaskGetSystemState() function in to human
- * readable ASCII form. See the notes in the implementation of vTaskList() within
- * FreeRTOS/Source/tasks.c for limitations. configUSE_STATS_FORMATTING_FUNCTIONS
- * is set to 2 so the formatting functions are included without the stdio.h being
- * included in tasks.c. That is because this project defines its own sprintf()
- * functions. */
-#define configUSE_STATS_FORMATTING_FUNCTIONS 1
+#define configUSE_STATS_FORMATTING_FUNCTIONS 0
/* Assert call defined for debug builds. */
#ifdef _DEBUG
diff --git a/FreeRTOS-Plus/Demo/AWS/Ota_Windows_Simulator/Ota_Over_Mqtt_Demo/FreeRTOSConfig.h b/FreeRTOS-Plus/Demo/AWS/Ota_Windows_Simulator/Ota_Over_Mqtt_Demo/FreeRTOSConfig.h
index a6e41b74c9..ea45aec6ea 100644
--- a/FreeRTOS-Plus/Demo/AWS/Ota_Windows_Simulator/Ota_Over_Mqtt_Demo/FreeRTOSConfig.h
+++ b/FreeRTOS-Plus/Demo/AWS/Ota_Windows_Simulator/Ota_Over_Mqtt_Demo/FreeRTOSConfig.h
@@ -102,15 +102,7 @@
#define INCLUDE_xEventGroupSetBitsFromISR 1
#define INCLUDE_xTimerPendFunctionCall 1
#define INCLUDE_pcTaskGetTaskName 1
-
-/* This demo makes use of one or more example stats formatting functions. These
- * format the raw data provided by the uxTaskGetSystemState() function in to human
- * readable ASCII form. See the notes in the implementation of vTaskList() within
- * FreeRTOS/Source/tasks.c for limitations. configUSE_STATS_FORMATTING_FUNCTIONS
- * is set to 2 so the formatting functions are included without the stdio.h being
- * included in tasks.c. That is because this project defines its own sprintf()
- * functions. */
-#define configUSE_STATS_FORMATTING_FUNCTIONS 1
+#define configUSE_STATS_FORMATTING_FUNCTIONS 0
/* Assert call defined for debug builds. */
#ifdef _DEBUG
diff --git a/FreeRTOS-Plus/Demo/FreeRTOS_Cellular_Interface_Windows_Simulator/Common/FreeRTOSConfig.h b/FreeRTOS-Plus/Demo/FreeRTOS_Cellular_Interface_Windows_Simulator/Common/FreeRTOSConfig.h
index b55331c036..802a6af235 100644
--- a/FreeRTOS-Plus/Demo/FreeRTOS_Cellular_Interface_Windows_Simulator/Common/FreeRTOSConfig.h
+++ b/FreeRTOS-Plus/Demo/FreeRTOS_Cellular_Interface_Windows_Simulator/Common/FreeRTOSConfig.h
@@ -102,15 +102,7 @@
#define INCLUDE_xEventGroupSetBitsFromISR 1
#define INCLUDE_xTimerPendFunctionCall 1
#define INCLUDE_pcTaskGetTaskName 1
-
-/* This demo makes use of one or more example stats formatting functions. These
- * format the raw data provided by the uxTaskGetSystemState() function in to human
- * readable ASCII form. See the notes in the implementation of vTaskList() within
- * FreeRTOS/Source/tasks.c for limitations. configUSE_STATS_FORMATTING_FUNCTIONS
- * is set to 2 so the formatting functions are included without the stdio.h being
- * included in tasks.c. That is because this project defines its own sprintf()
- * functions. */
-#define configUSE_STATS_FORMATTING_FUNCTIONS 1
+#define configUSE_STATS_FORMATTING_FUNCTIONS 0
/* Assert call defined for debug builds. */
#ifdef _DEBUG
diff --git a/FreeRTOS-Plus/Demo/coreHTTP_Windows_Simulator/HTTP_Mutual_Auth/FreeRTOSConfig.h b/FreeRTOS-Plus/Demo/coreHTTP_Windows_Simulator/HTTP_Mutual_Auth/FreeRTOSConfig.h
index a6e41b74c9..ea45aec6ea 100644
--- a/FreeRTOS-Plus/Demo/coreHTTP_Windows_Simulator/HTTP_Mutual_Auth/FreeRTOSConfig.h
+++ b/FreeRTOS-Plus/Demo/coreHTTP_Windows_Simulator/HTTP_Mutual_Auth/FreeRTOSConfig.h
@@ -102,15 +102,7 @@
#define INCLUDE_xEventGroupSetBitsFromISR 1
#define INCLUDE_xTimerPendFunctionCall 1
#define INCLUDE_pcTaskGetTaskName 1
-
-/* This demo makes use of one or more example stats formatting functions. These
- * format the raw data provided by the uxTaskGetSystemState() function in to human
- * readable ASCII form. See the notes in the implementation of vTaskList() within
- * FreeRTOS/Source/tasks.c for limitations. configUSE_STATS_FORMATTING_FUNCTIONS
- * is set to 2 so the formatting functions are included without the stdio.h being
- * included in tasks.c. That is because this project defines its own sprintf()
- * functions. */
-#define configUSE_STATS_FORMATTING_FUNCTIONS 1
+#define configUSE_STATS_FORMATTING_FUNCTIONS 0
/* Assert call defined for debug builds. */
#ifdef _DEBUG
diff --git a/FreeRTOS-Plus/Demo/coreHTTP_Windows_Simulator/HTTP_Plaintext/FreeRTOSConfig.h b/FreeRTOS-Plus/Demo/coreHTTP_Windows_Simulator/HTTP_Plaintext/FreeRTOSConfig.h
index a6e41b74c9..ea45aec6ea 100644
--- a/FreeRTOS-Plus/Demo/coreHTTP_Windows_Simulator/HTTP_Plaintext/FreeRTOSConfig.h
+++ b/FreeRTOS-Plus/Demo/coreHTTP_Windows_Simulator/HTTP_Plaintext/FreeRTOSConfig.h
@@ -102,15 +102,7 @@
#define INCLUDE_xEventGroupSetBitsFromISR 1
#define INCLUDE_xTimerPendFunctionCall 1
#define INCLUDE_pcTaskGetTaskName 1
-
-/* This demo makes use of one or more example stats formatting functions. These
- * format the raw data provided by the uxTaskGetSystemState() function in to human
- * readable ASCII form. See the notes in the implementation of vTaskList() within
- * FreeRTOS/Source/tasks.c for limitations. configUSE_STATS_FORMATTING_FUNCTIONS
- * is set to 2 so the formatting functions are included without the stdio.h being
- * included in tasks.c. That is because this project defines its own sprintf()
- * functions. */
-#define configUSE_STATS_FORMATTING_FUNCTIONS 1
+#define configUSE_STATS_FORMATTING_FUNCTIONS 0
/* Assert call defined for debug builds. */
#ifdef _DEBUG
diff --git a/FreeRTOS-Plus/Demo/coreHTTP_Windows_Simulator/HTTP_S3_Download/FreeRTOSConfig.h b/FreeRTOS-Plus/Demo/coreHTTP_Windows_Simulator/HTTP_S3_Download/FreeRTOSConfig.h
index a6e41b74c9..ea45aec6ea 100644
--- a/FreeRTOS-Plus/Demo/coreHTTP_Windows_Simulator/HTTP_S3_Download/FreeRTOSConfig.h
+++ b/FreeRTOS-Plus/Demo/coreHTTP_Windows_Simulator/HTTP_S3_Download/FreeRTOSConfig.h
@@ -102,15 +102,7 @@
#define INCLUDE_xEventGroupSetBitsFromISR 1
#define INCLUDE_xTimerPendFunctionCall 1
#define INCLUDE_pcTaskGetTaskName 1
-
-/* This demo makes use of one or more example stats formatting functions. These
- * format the raw data provided by the uxTaskGetSystemState() function in to human
- * readable ASCII form. See the notes in the implementation of vTaskList() within
- * FreeRTOS/Source/tasks.c for limitations. configUSE_STATS_FORMATTING_FUNCTIONS
- * is set to 2 so the formatting functions are included without the stdio.h being
- * included in tasks.c. That is because this project defines its own sprintf()
- * functions. */
-#define configUSE_STATS_FORMATTING_FUNCTIONS 1
+#define configUSE_STATS_FORMATTING_FUNCTIONS 0
/* Assert call defined for debug builds. */
#ifdef _DEBUG
diff --git a/FreeRTOS-Plus/Demo/coreHTTP_Windows_Simulator/HTTP_S3_Download_Multithreaded/FreeRTOSConfig.h b/FreeRTOS-Plus/Demo/coreHTTP_Windows_Simulator/HTTP_S3_Download_Multithreaded/FreeRTOSConfig.h
index a6e41b74c9..ea45aec6ea 100644
--- a/FreeRTOS-Plus/Demo/coreHTTP_Windows_Simulator/HTTP_S3_Download_Multithreaded/FreeRTOSConfig.h
+++ b/FreeRTOS-Plus/Demo/coreHTTP_Windows_Simulator/HTTP_S3_Download_Multithreaded/FreeRTOSConfig.h
@@ -102,15 +102,7 @@
#define INCLUDE_xEventGroupSetBitsFromISR 1
#define INCLUDE_xTimerPendFunctionCall 1
#define INCLUDE_pcTaskGetTaskName 1
-
-/* This demo makes use of one or more example stats formatting functions. These
- * format the raw data provided by the uxTaskGetSystemState() function in to human
- * readable ASCII form. See the notes in the implementation of vTaskList() within
- * FreeRTOS/Source/tasks.c for limitations. configUSE_STATS_FORMATTING_FUNCTIONS
- * is set to 2 so the formatting functions are included without the stdio.h being
- * included in tasks.c. That is because this project defines its own sprintf()
- * functions. */
-#define configUSE_STATS_FORMATTING_FUNCTIONS 1
+#define configUSE_STATS_FORMATTING_FUNCTIONS 0
/* Assert call defined for debug builds. */
#ifdef _DEBUG
diff --git a/FreeRTOS-Plus/Demo/coreHTTP_Windows_Simulator/HTTP_S3_Upload/FreeRTOSConfig.h b/FreeRTOS-Plus/Demo/coreHTTP_Windows_Simulator/HTTP_S3_Upload/FreeRTOSConfig.h
index a6e41b74c9..ea45aec6ea 100644
--- a/FreeRTOS-Plus/Demo/coreHTTP_Windows_Simulator/HTTP_S3_Upload/FreeRTOSConfig.h
+++ b/FreeRTOS-Plus/Demo/coreHTTP_Windows_Simulator/HTTP_S3_Upload/FreeRTOSConfig.h
@@ -102,15 +102,7 @@
#define INCLUDE_xEventGroupSetBitsFromISR 1
#define INCLUDE_xTimerPendFunctionCall 1
#define INCLUDE_pcTaskGetTaskName 1
-
-/* This demo makes use of one or more example stats formatting functions. These
- * format the raw data provided by the uxTaskGetSystemState() function in to human
- * readable ASCII form. See the notes in the implementation of vTaskList() within
- * FreeRTOS/Source/tasks.c for limitations. configUSE_STATS_FORMATTING_FUNCTIONS
- * is set to 2 so the formatting functions are included without the stdio.h being
- * included in tasks.c. That is because this project defines its own sprintf()
- * functions. */
-#define configUSE_STATS_FORMATTING_FUNCTIONS 1
+#define configUSE_STATS_FORMATTING_FUNCTIONS 0
/* Assert call defined for debug builds. */
#ifdef _DEBUG
diff --git a/FreeRTOS-Plus/Demo/coreMQTT_Windows_Simulator/Common/FreeRTOSConfig.h b/FreeRTOS-Plus/Demo/coreMQTT_Windows_Simulator/Common/FreeRTOSConfig.h
index 3bcee4a972..ba7a2b15b1 100644
--- a/FreeRTOS-Plus/Demo/coreMQTT_Windows_Simulator/Common/FreeRTOSConfig.h
+++ b/FreeRTOS-Plus/Demo/coreMQTT_Windows_Simulator/Common/FreeRTOSConfig.h
@@ -104,15 +104,7 @@
#define INCLUDE_xEventGroupSetBitsFromISR 1
#define INCLUDE_xTimerPendFunctionCall 1
#define INCLUDE_pcTaskGetTaskName 1
-
-/* This demo makes use of one or more example stats formatting functions. These
- * format the raw data provided by the uxTaskGetSystemState() function in to human
- * readable ASCII form. See the notes in the implementation of vTaskList() within
- * FreeRTOS/Source/tasks.c for limitations. configUSE_STATS_FORMATTING_FUNCTIONS
- * is set to 2 so the formatting functions are included without the stdio.h being
- * included in tasks.c. That is because this project defines its own sprintf()
- * functions. */
-#define configUSE_STATS_FORMATTING_FUNCTIONS 1
+#define configUSE_STATS_FORMATTING_FUNCTIONS 0
/* Assert call defined for debug builds. */
#ifdef _DEBUG
diff --git a/FreeRTOS-Plus/Demo/coreMQTT_Windows_Simulator/MQTT_Mutual_Auth_wolfSSL/FreeRTOSConfig.h b/FreeRTOS-Plus/Demo/coreMQTT_Windows_Simulator/MQTT_Mutual_Auth_wolfSSL/FreeRTOSConfig.h
index 056a7a2bb9..b52a70a7dd 100644
--- a/FreeRTOS-Plus/Demo/coreMQTT_Windows_Simulator/MQTT_Mutual_Auth_wolfSSL/FreeRTOSConfig.h
+++ b/FreeRTOS-Plus/Demo/coreMQTT_Windows_Simulator/MQTT_Mutual_Auth_wolfSSL/FreeRTOSConfig.h
@@ -102,15 +102,7 @@
#define INCLUDE_xEventGroupSetBitsFromISR 1
#define INCLUDE_xTimerPendFunctionCall 1
#define INCLUDE_pcTaskGetTaskName 1
-
-/* This demo makes use of one or more example stats formatting functions. These
- * format the raw data provided by the uxTaskGetSystemState() function in to human
- * readable ASCII form. See the notes in the implementation of vTaskList() within
- * FreeRTOS/Source/tasks.c for limitations. configUSE_STATS_FORMATTING_FUNCTIONS
- * is set to 2 so the formatting functions are included without the stdio.h being
- * included in tasks.c. That is because this project defines its own sprintf()
- * functions. */
-#define configUSE_STATS_FORMATTING_FUNCTIONS 1
+#define configUSE_STATS_FORMATTING_FUNCTIONS 0
/* Assert call defined for debug builds. */
#ifdef _DEBUG
diff --git a/FreeRTOS-Plus/Demo/coreMQTT_Windows_Simulator/MQTT_Serializer/FreeRTOSConfig.h b/FreeRTOS-Plus/Demo/coreMQTT_Windows_Simulator/MQTT_Serializer/FreeRTOSConfig.h
index 059ceea238..25d31a7eb1 100644
--- a/FreeRTOS-Plus/Demo/coreMQTT_Windows_Simulator/MQTT_Serializer/FreeRTOSConfig.h
+++ b/FreeRTOS-Plus/Demo/coreMQTT_Windows_Simulator/MQTT_Serializer/FreeRTOSConfig.h
@@ -20,7 +20,7 @@
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*
* https://www.FreeRTOS.org
- * https://aws.amazon.com/freertos
+ * https://github.com/FreeRTOS
*
*/
@@ -102,15 +102,7 @@
#define INCLUDE_xEventGroupSetBitsFromISR 1
#define INCLUDE_xTimerPendFunctionCall 1
#define INCLUDE_pcTaskGetTaskName 1
-
-/* This demo makes use of one or more example stats formatting functions. These
- * format the raw data provided by the uxTaskGetSystemState() function in to human
- * readable ASCII form. See the notes in the implementation of vTaskList() within
- * FreeRTOS/Source/tasks.c for limitations. configUSE_STATS_FORMATTING_FUNCTIONS
- * is set to 2 so the formatting functions are included without the stdio.h being
- * included in tasks.c. That is because this project defines its own sprintf()
- * functions. */
-#define configUSE_STATS_FORMATTING_FUNCTIONS 1
+#define configUSE_STATS_FORMATTING_FUNCTIONS 0
/* Assert call defined for debug builds. */
#ifdef _DEBUG
diff --git a/FreeRTOS-Plus/Demo/corePKCS11_MQTT_Mutual_Auth_Windows_Simulator/FreeRTOSConfig.h b/FreeRTOS-Plus/Demo/corePKCS11_MQTT_Mutual_Auth_Windows_Simulator/FreeRTOSConfig.h
index 03c7548c66..ea45aec6ea 100644
--- a/FreeRTOS-Plus/Demo/corePKCS11_MQTT_Mutual_Auth_Windows_Simulator/FreeRTOSConfig.h
+++ b/FreeRTOS-Plus/Demo/corePKCS11_MQTT_Mutual_Auth_Windows_Simulator/FreeRTOSConfig.h
@@ -20,7 +20,8 @@
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*
* https://www.FreeRTOS.org
- * https://aws.amazon.com/freertos
+ * https://github.com/FreeRTOS
+ *
*/
#ifndef FREERTOS_CONFIG_H
@@ -101,15 +102,7 @@
#define INCLUDE_xEventGroupSetBitsFromISR 1
#define INCLUDE_xTimerPendFunctionCall 1
#define INCLUDE_pcTaskGetTaskName 1
-
-/* This demo makes use of one or more example stats formatting functions. These
- * format the raw data provided by the uxTaskGetSystemState() function in to human
- * readable ASCII form. See the notes in the implementation of vTaskList() within
- * FreeRTOS/Source/tasks.c for limitations. configUSE_STATS_FORMATTING_FUNCTIONS
- * is set to 2 so the formatting functions are included without the stdio.h being
- * included in tasks.c. That is because this project defines its own sprintf()
- * functions. */
-#define configUSE_STATS_FORMATTING_FUNCTIONS 1
+#define configUSE_STATS_FORMATTING_FUNCTIONS 0
/* Assert call defined for debug builds. */
#ifdef _DEBUG
diff --git a/FreeRTOS-Plus/Demo/corePKCS11_Windows_Simulator/FreeRTOSConfig.h b/FreeRTOS-Plus/Demo/corePKCS11_Windows_Simulator/FreeRTOSConfig.h
index 70c4fd8b34..9dab58e75f 100644
--- a/FreeRTOS-Plus/Demo/corePKCS11_Windows_Simulator/FreeRTOSConfig.h
+++ b/FreeRTOS-Plus/Demo/corePKCS11_Windows_Simulator/FreeRTOSConfig.h
@@ -20,7 +20,7 @@
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*
* https://www.FreeRTOS.org
- * https://aws.amazon.com/freertos
+ * https://github.com/FreeRTOS
*
*/
@@ -99,15 +99,7 @@ to exclude the API function. */
#define INCLUDE_xEventGroupSetBitsFromISR 1
#define INCLUDE_xTimerPendFunctionCall 1
#define INCLUDE_pcTaskGetTaskName 1
-
-/* This demo makes use of one or more example stats formatting functions. These
-format the raw data provided by the uxTaskGetSystemState() function in to human
-readable ASCII form. See the notes in the implementation of vTaskList() within
-FreeRTOS/Source/tasks.c for limitations. configUSE_STATS_FORMATTING_FUNCTIONS
-is set to 2 so the formatting functions are included without the stdio.h being
-included in tasks.c. That is because this project defines its own sprintf()
-functions. */
-#define configUSE_STATS_FORMATTING_FUNCTIONS 1
+#define configUSE_STATS_FORMATTING_FUNCTIONS 0
/* Assert call defined for debug builds. */
#ifdef _DEBUG
diff --git a/FreeRTOS/Demo/RISC-V_RV32_SiFive_HiFive1-RevB_IAR/README.md b/FreeRTOS/Demo/RISC-V_RV32_SiFive_HiFive1-RevB_IAR/README.md
new file mode 100644
index 0000000000..70b04ccc33
--- /dev/null
+++ b/FreeRTOS/Demo/RISC-V_RV32_SiFive_HiFive1-RevB_IAR/README.md
@@ -0,0 +1,2 @@
+# RISC-V SiFive HiFive1 Rev B Demo
+View https://www.freertos.org/RTOS-RISC-V-FreedomStudio-IAR-HiFive-RevB.html for more information on how to run this demo
\ No newline at end of file
diff --git a/FreeRTOS/Demo/RISC-V_RV32_SiFive_HiFive1-RevB_IAR/RTOSDemo.ewd b/FreeRTOS/Demo/RISC-V_RV32_SiFive_HiFive1-RevB_IAR/RTOSDemo.ewd
index f9e73bae53..137a3096b9 100644
--- a/FreeRTOS/Demo/RISC-V_RV32_SiFive_HiFive1-RevB_IAR/RTOSDemo.ewd
+++ b/FreeRTOS/Demo/RISC-V_RV32_SiFive_HiFive1-RevB_IAR/RTOSDemo.ewd
@@ -454,7 +454,7 @@
@@ -2009,4 +2009,7 @@
$PROJ_DIR$\main.c
+
+ $PROJ_DIR$\vector_table.S
+
diff --git a/FreeRTOS/Demo/RISC-V_RV32_SiFive_HiFive1-RevB_IAR/main.c b/FreeRTOS/Demo/RISC-V_RV32_SiFive_HiFive1-RevB_IAR/main.c
index 852b7e2a22..aff103dccd 100644
--- a/FreeRTOS/Demo/RISC-V_RV32_SiFive_HiFive1-RevB_IAR/main.c
+++ b/FreeRTOS/Demo/RISC-V_RV32_SiFive_HiFive1-RevB_IAR/main.c
@@ -58,6 +58,17 @@
or 0 to run the more comprehensive test and demo application. */
#define mainCREATE_SIMPLE_BLINKY_DEMO_ONLY 0
+/* Set to 1 to use direct mode and set to 0 to use vectored mode.
+ *
+ * VECTOR MODE=Direct --> all traps into machine mode cause the pc to be set to the
+ * vector base address (BASE) in the mtvec register.
+ *
+ * VECTOR MODE=Vectored --> all synchronous exceptions into machine mode cause the
+ * pc to be set to the BASE, whereas interrupts cause the pc to be set to the
+ * address BASE plus four times the interrupt cause number.
+*/
+#define mainVECTOR_MODE_DIRECT 0
+
/* UART hardware constants. */
#define mainUART_BASE_ADDRESS ( *( volatile uint32_t * ) 0x20000000UL )
#define mainUART_TX_DATA 0x00
@@ -99,6 +110,9 @@ or 0 to run the more comprehensive test and demo application. */
/*-----------------------------------------------------------*/
+extern void freertos_risc_v_trap_handler( void );
+extern void freertos_vector_table( void );
+
/*
* main_blinky() is used when mainCREATE_SIMPLE_BLINKY_DEMO_ONLY is set to 1.
* main_full() is used when mainCREATE_SIMPLE_BLINKY_DEMO_ONLY is set to 0.
@@ -172,6 +186,16 @@ static void prvSetupHardware( void )
mainUART0_TXCTRL_REG |= mainUART_TXEN_BIT;
mainUART0_GPIO_SEL_REG &= mainUART0_PIN;
mainUART0_GPIO_SEL_EN |= mainUART0_PIN;
+
+ #if( mainVECTOR_MODE_DIRECT == 1 )
+ {
+ __asm__ volatile( "csrw mtvec, %0" :: "r"( freertos_risc_v_trap_handler ) );
+ }
+ #else
+ {
+ __asm__ volatile( "csrw mtvec, %0" :: "r"( ( uintptr_t )freertos_vector_table | 0x1 ) );
+ }
+ #endif
}
/*-----------------------------------------------------------*/
@@ -263,19 +287,26 @@ void vApplicationTickHook( void )
}
/*-----------------------------------------------------------*/
-/* Called from the kernel's port layer to handle device specific external
- * interrupts. */
-void vApplicationHandleTrap( uint32_t mcause )
+void freertos_risc_v_application_interrupt_handler( uint32_t ulMcause )
{
char pcCause[ 20 ];
- #warning vApplicationHandleTrap not implemented.
/* Not implemented yet! */
- sprintf( pcCause, "%u", mcause );
- vSendString( pcCause );
- configASSERT( mcause == 0 );
+ sprintf( pcCause, "%u", ulMcause );
+ configPRINT_STRING( pcCause );
+ configASSERT( ulMcause == 0 );
}
+/*-----------------------------------------------------------*/
+
+void freertos_risc_v_application_exception_handler( uint32_t ulMcause )
+{
+char pcCause[ 20 ];
+ /* Not implemented yet! */
+ sprintf( pcCause, "%u", ulMcause );
+ configPRINT_STRING( pcCause );
+ configASSERT( ulMcause == 0 );
+}
/*-----------------------------------------------------------*/
void *malloc( size_t xSize )
diff --git a/FreeRTOS/Demo/RISC-V_RV32_SiFive_HiFive1-RevB_IAR/vector_table.S b/FreeRTOS/Demo/RISC-V_RV32_SiFive_HiFive1-RevB_IAR/vector_table.S
new file mode 100644
index 0000000000..fd67784b56
--- /dev/null
+++ b/FreeRTOS/Demo/RISC-V_RV32_SiFive_HiFive1-RevB_IAR/vector_table.S
@@ -0,0 +1,101 @@
+/*
+ * FreeRTOS V202112.00
+ * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ *
+ * 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
+ *
+ */
+
+ EXTERN freertos_risc_v_exception_handler
+ EXTERN freertos_risc_v_interrupt_handler
+ EXTERN freertos_risc_v_mtimer_interrupt_handler
+
+ SECTION `.text`:CODE:ROOT(7)
+ CODE
+ .option norvc
+ PUBLIC freertos_vector_table
+
+freertos_vector_table:
+IRQ_0:
+ j freertos_risc_v_exception_handler
+IRQ_1:
+ j freertos_risc_v_interrupt_handler
+IRQ_2:
+ j freertos_risc_v_interrupt_handler
+IRQ_3:
+ j freertos_risc_v_interrupt_handler
+IRQ_4:
+ j freertos_risc_v_interrupt_handler
+IRQ_5:
+ j freertos_risc_v_interrupt_handler
+IRQ_6:
+ j freertos_risc_v_interrupt_handler
+IRQ_7:
+ j freertos_risc_v_mtimer_interrupt_handler
+IRQ_8:
+ j freertos_risc_v_interrupt_handler
+IRQ_9:
+ j freertos_risc_v_interrupt_handler
+IRQ_10:
+ j freertos_risc_v_interrupt_handler
+IRQ_11:
+ j freertos_risc_v_interrupt_handler
+IRQ_12:
+ j freertos_risc_v_interrupt_handler
+IRQ_13:
+ j freertos_risc_v_interrupt_handler
+IRQ_14:
+ j freertos_risc_v_interrupt_handler
+IRQ_15:
+ j freertos_risc_v_interrupt_handler
+IRQ_LC0:
+ j freertos_risc_v_interrupt_handler
+IRQ_LC1:
+ j freertos_risc_v_interrupt_handler
+IRQ_LC2:
+ j freertos_risc_v_interrupt_handler
+IRQ_LC3:
+ j freertos_risc_v_interrupt_handler
+IRQ_LC4:
+ j freertos_risc_v_interrupt_handler
+IRQ_LC5:
+ j freertos_risc_v_interrupt_handler
+IRQ_LC6:
+ j freertos_risc_v_interrupt_handler
+IRQ_LC7:
+ j freertos_risc_v_interrupt_handler
+IRQ_LC8:
+ j freertos_risc_v_interrupt_handler
+IRQ_LC9:
+ j freertos_risc_v_interrupt_handler
+IRQ_LC10:
+ j freertos_risc_v_interrupt_handler
+IRQ_LC11:
+ j freertos_risc_v_interrupt_handler
+IRQ_LC12:
+ j freertos_risc_v_interrupt_handler
+IRQ_LC13:
+ j freertos_risc_v_interrupt_handler
+IRQ_LC14:
+ j freertos_risc_v_interrupt_handler
+IRQ_LC15:
+ j freertos_risc_v_interrupt_handler
+/*-----------------------------------------------------------*/
diff --git a/FreeRTOS/Source b/FreeRTOS/Source
index b0a8bd8f28..f789a0e790 160000
--- a/FreeRTOS/Source
+++ b/FreeRTOS/Source
@@ -1 +1 @@
-Subproject commit b0a8bd8f28d0138b5eb70e8b53da3e9d17ce8d40
+Subproject commit f789a0e7907feca1a9019637219f0fd113a6c380
diff --git a/FreeRTOS/Test/CBMC/patches/FreeRTOSConfig.h b/FreeRTOS/Test/CBMC/patches/FreeRTOSConfig.h
index 8e84e1c621..914b691e25 100644
--- a/FreeRTOS/Test/CBMC/patches/FreeRTOSConfig.h
+++ b/FreeRTOS/Test/CBMC/patches/FreeRTOSConfig.h
@@ -118,15 +118,7 @@
#define INCLUDE_xTimerPendFunctionCall 1
#define INCLUDE_xTaskGetCurrentTaskHandle 1
#define INCLUDE_xTaskAbortDelay 1
-
-/* This demo makes use of one or more example stats formatting functions. These
- * format the raw data provided by the uxTaskGetSystemState() function in to human
- * readable ASCII form. See the notes in the implementation of vTaskList() within
- * FreeRTOS/Source/tasks.c for limitations. configUSE_STATS_FORMATTING_FUNCTIONS
- * is set to 2 so the formatting functions are included without the stdio.h being
- * included in tasks.c. That is because this project defines its own sprintf()
- * functions. */
-#define configUSE_STATS_FORMATTING_FUNCTIONS 1
+#define configUSE_STATS_FORMATTING_FUNCTIONS 0
/* Assert call defined for debug builds. */
extern void vAssertCalled( const char * pcFile,
diff --git a/manifest.yml b/manifest.yml
index bf776033fe..3babe5ce4a 100644
--- a/manifest.yml
+++ b/manifest.yml
@@ -4,7 +4,7 @@ description: "This is the standard distribution of FreeRTOS."
dependencies:
- name: "FreeRTOS-Kernel"
- version: "b0a8bd8"
+ version: "f789a0e79"
repository:
type: "git"
url: "https://github.com/FreeRTOS/FreeRTOS-Kernel.git"