diff --git a/Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_nand.c b/Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_nand.c
index 24f406c02..60d927b8e 100644
--- a/Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_nand.c
+++ b/Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_nand.c
@@ -635,7 +635,7 @@ HAL_StatusTypeDef HAL_NAND_Read_Page_8b(NAND_HandleTypeDef *hnand, NAND_AddressT
/* Get Data into Buffer */
for (index = 0U; index < hnand->Config.PageSize; index++)
{
- *buff = *(uint8_t *)deviceaddress;
+ *buff = *(__IO uint8_t *)deviceaddress;
buff++;
}
@@ -1285,7 +1285,7 @@ HAL_StatusTypeDef HAL_NAND_Read_SpareArea_8b(NAND_HandleTypeDef *hnand, NAND_Add
/* Get Data into Buffer */
for (index = 0U; index < hnand->Config.SpareAreaSize; index++)
{
- *buff = *(uint8_t *)deviceaddress;
+ *buff = *(__IO uint8_t *)deviceaddress;
buff++;
}
diff --git a/Projects/STM32746G-Discovery/Examples/UART/UART_TwoBoards_ComDMA/SW4STM32/STM32746G_DISCOVERY/.project b/Projects/STM32746G-Discovery/Examples/UART/UART_TwoBoards_ComDMA/SW4STM32/STM32746G_DISCOVERY/.project
index 91a7771e6..e8e5ee787 100644
--- a/Projects/STM32746G-Discovery/Examples/UART/UART_TwoBoards_ComDMA/SW4STM32/STM32746G_DISCOVERY/.project
+++ b/Projects/STM32746G-Discovery/Examples/UART/UART_TwoBoards_ComDMA/SW4STM32/STM32746G_DISCOVERY/.project
@@ -68,6 +68,10 @@
Example/User/main.c
1
PARENT-2-PROJECT_LOC/Src/main.c
+
+ Example/SW4STM32/syscalls.c
+ 1
+ PARENT-1-PROJECT_LOC/syscalls.c
Drivers/CMSIS/system_stm32f7xx.c
1
diff --git a/Projects/STM32746G-Discovery/Examples/UART/UART_TwoBoards_ComDMA/SW4STM32/syscalls.c b/Projects/STM32746G-Discovery/Examples/UART/UART_TwoBoards_ComDMA/SW4STM32/syscalls.c
new file mode 100644
index 000000000..d5a72c4b6
--- /dev/null
+++ b/Projects/STM32746G-Discovery/Examples/UART/UART_TwoBoards_ComDMA/SW4STM32/syscalls.c
@@ -0,0 +1,186 @@
+/**
+*****************************************************************************
+**
+** File : syscalls.c
+**
+** Abstract : System Workbench Minimal System calls file
+**
+** For more information about which c-functions
+** need which of these lowlevel functions
+** please consult the Newlib libc-manual
+**
+** Environment : System Workbench for MCU
+**
+** Distribution: The file is distributed “as is,” without any warranty
+** of any kind.
+**
+** (c)Copyright System Workbench for MCU.
+** You may use this file as-is or modify it according to the needs of your
+** project. Distribution of this file (unmodified or modified) is not
+** permitted. System Workbench for MCU permit registered System Workbench(R) users the
+** rights to distribute the assembled, compiled & linked contents of this
+** file as part of an application binary file, provided that it is built
+** using the System Workbench for MCU toolchain.
+**
+*****************************************************************************
+*/
+
+/* Includes */
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+
+
+/* Variables */
+//#undef errno
+extern int errno;
+extern int __io_putchar(int ch) __attribute__((weak));
+extern int __io_getchar(void) __attribute__((weak));
+
+register char * stack_ptr asm("sp");
+
+char *__env[1] = { 0 };
+char **environ = __env;
+
+
+/* Functions */
+void initialise_monitor_handles()
+{
+}
+
+int _getpid(void)
+{
+ return 1;
+}
+
+int _kill(int pid, int sig)
+{
+ errno = EINVAL;
+ return -1;
+}
+
+void _exit (int status)
+{
+ _kill(status, -1);
+ while (1) {} /* Make sure we hang here */
+}
+
+int _read (int file, char *ptr, int len)
+{
+ int DataIdx;
+
+ for (DataIdx = 0; DataIdx < len; DataIdx++)
+ {
+ *ptr++ = __io_getchar();
+ }
+
+return len;
+}
+
+int _write(int file, char *ptr, int len)
+{
+ int DataIdx;
+
+ for (DataIdx = 0; DataIdx < len; DataIdx++)
+ {
+ __io_putchar(*ptr++);
+ }
+ return len;
+}
+
+caddr_t _sbrk(int incr)
+{
+ extern char end asm("end");
+ static char *heap_end;
+ char *prev_heap_end;
+
+ if (heap_end == 0)
+ heap_end = &end;
+
+ prev_heap_end = heap_end;
+ if (heap_end + incr > stack_ptr)
+ {
+// write(1, "Heap and stack collision\n", 25);
+// abort();
+ errno = ENOMEM;
+ return (caddr_t) -1;
+ }
+
+ heap_end += incr;
+
+ return (caddr_t) prev_heap_end;
+}
+
+int _close(int file)
+{
+ return -1;
+}
+
+
+int _fstat(int file, struct stat *st)
+{
+ st->st_mode = S_IFCHR;
+ return 0;
+}
+
+int _isatty(int file)
+{
+ return 1;
+}
+
+int _lseek(int file, int ptr, int dir)
+{
+ return 0;
+}
+
+int _open(char *path, int flags, ...)
+{
+ /* Pretend like we always fail */
+ return -1;
+}
+
+int _wait(int *status)
+{
+ errno = ECHILD;
+ return -1;
+}
+
+int _unlink(char *name)
+{
+ errno = ENOENT;
+ return -1;
+}
+
+int _times(struct tms *buf)
+{
+ return -1;
+}
+
+int _stat(char *file, struct stat *st)
+{
+ st->st_mode = S_IFCHR;
+ return 0;
+}
+
+int _link(char *old, char *new)
+{
+ errno = EMLINK;
+ return -1;
+}
+
+int _fork(void)
+{
+ errno = EAGAIN;
+ return -1;
+}
+
+int _execve(char *name, char **argv, char **env)
+{
+ errno = ENOMEM;
+ return -1;
+}
diff --git a/Projects/STM32746G-Discovery/Examples/UART/UART_TwoBoards_ComIT/SW4STM32/STM32746G_DISCOVERY/.project b/Projects/STM32746G-Discovery/Examples/UART/UART_TwoBoards_ComIT/SW4STM32/STM32746G_DISCOVERY/.project
index 91a7771e6..e8e5ee787 100644
--- a/Projects/STM32746G-Discovery/Examples/UART/UART_TwoBoards_ComIT/SW4STM32/STM32746G_DISCOVERY/.project
+++ b/Projects/STM32746G-Discovery/Examples/UART/UART_TwoBoards_ComIT/SW4STM32/STM32746G_DISCOVERY/.project
@@ -68,6 +68,10 @@
Example/User/main.c
1
PARENT-2-PROJECT_LOC/Src/main.c
+
+ Example/SW4STM32/syscalls.c
+ 1
+ PARENT-1-PROJECT_LOC/syscalls.c
Drivers/CMSIS/system_stm32f7xx.c
1
diff --git a/Projects/STM32746G-Discovery/Examples/UART/UART_TwoBoards_ComIT/SW4STM32/syscalls.c b/Projects/STM32746G-Discovery/Examples/UART/UART_TwoBoards_ComIT/SW4STM32/syscalls.c
new file mode 100644
index 000000000..d5a72c4b6
--- /dev/null
+++ b/Projects/STM32746G-Discovery/Examples/UART/UART_TwoBoards_ComIT/SW4STM32/syscalls.c
@@ -0,0 +1,186 @@
+/**
+*****************************************************************************
+**
+** File : syscalls.c
+**
+** Abstract : System Workbench Minimal System calls file
+**
+** For more information about which c-functions
+** need which of these lowlevel functions
+** please consult the Newlib libc-manual
+**
+** Environment : System Workbench for MCU
+**
+** Distribution: The file is distributed “as is,” without any warranty
+** of any kind.
+**
+** (c)Copyright System Workbench for MCU.
+** You may use this file as-is or modify it according to the needs of your
+** project. Distribution of this file (unmodified or modified) is not
+** permitted. System Workbench for MCU permit registered System Workbench(R) users the
+** rights to distribute the assembled, compiled & linked contents of this
+** file as part of an application binary file, provided that it is built
+** using the System Workbench for MCU toolchain.
+**
+*****************************************************************************
+*/
+
+/* Includes */
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+
+
+/* Variables */
+//#undef errno
+extern int errno;
+extern int __io_putchar(int ch) __attribute__((weak));
+extern int __io_getchar(void) __attribute__((weak));
+
+register char * stack_ptr asm("sp");
+
+char *__env[1] = { 0 };
+char **environ = __env;
+
+
+/* Functions */
+void initialise_monitor_handles()
+{
+}
+
+int _getpid(void)
+{
+ return 1;
+}
+
+int _kill(int pid, int sig)
+{
+ errno = EINVAL;
+ return -1;
+}
+
+void _exit (int status)
+{
+ _kill(status, -1);
+ while (1) {} /* Make sure we hang here */
+}
+
+int _read (int file, char *ptr, int len)
+{
+ int DataIdx;
+
+ for (DataIdx = 0; DataIdx < len; DataIdx++)
+ {
+ *ptr++ = __io_getchar();
+ }
+
+return len;
+}
+
+int _write(int file, char *ptr, int len)
+{
+ int DataIdx;
+
+ for (DataIdx = 0; DataIdx < len; DataIdx++)
+ {
+ __io_putchar(*ptr++);
+ }
+ return len;
+}
+
+caddr_t _sbrk(int incr)
+{
+ extern char end asm("end");
+ static char *heap_end;
+ char *prev_heap_end;
+
+ if (heap_end == 0)
+ heap_end = &end;
+
+ prev_heap_end = heap_end;
+ if (heap_end + incr > stack_ptr)
+ {
+// write(1, "Heap and stack collision\n", 25);
+// abort();
+ errno = ENOMEM;
+ return (caddr_t) -1;
+ }
+
+ heap_end += incr;
+
+ return (caddr_t) prev_heap_end;
+}
+
+int _close(int file)
+{
+ return -1;
+}
+
+
+int _fstat(int file, struct stat *st)
+{
+ st->st_mode = S_IFCHR;
+ return 0;
+}
+
+int _isatty(int file)
+{
+ return 1;
+}
+
+int _lseek(int file, int ptr, int dir)
+{
+ return 0;
+}
+
+int _open(char *path, int flags, ...)
+{
+ /* Pretend like we always fail */
+ return -1;
+}
+
+int _wait(int *status)
+{
+ errno = ECHILD;
+ return -1;
+}
+
+int _unlink(char *name)
+{
+ errno = ENOENT;
+ return -1;
+}
+
+int _times(struct tms *buf)
+{
+ return -1;
+}
+
+int _stat(char *file, struct stat *st)
+{
+ st->st_mode = S_IFCHR;
+ return 0;
+}
+
+int _link(char *old, char *new)
+{
+ errno = EMLINK;
+ return -1;
+}
+
+int _fork(void)
+{
+ errno = EAGAIN;
+ return -1;
+}
+
+int _execve(char *name, char **argv, char **env)
+{
+ errno = ENOMEM;
+ return -1;
+}
diff --git a/Projects/STM32746G-Discovery/Examples/UART/UART_TwoBoards_ComPolling/SW4STM32/STM32746G_DISCOVERY/.project b/Projects/STM32746G-Discovery/Examples/UART/UART_TwoBoards_ComPolling/SW4STM32/STM32746G_DISCOVERY/.project
index 91a7771e6..e8e5ee787 100644
--- a/Projects/STM32746G-Discovery/Examples/UART/UART_TwoBoards_ComPolling/SW4STM32/STM32746G_DISCOVERY/.project
+++ b/Projects/STM32746G-Discovery/Examples/UART/UART_TwoBoards_ComPolling/SW4STM32/STM32746G_DISCOVERY/.project
@@ -68,6 +68,10 @@
Example/User/main.c
1
PARENT-2-PROJECT_LOC/Src/main.c
+
+ Example/SW4STM32/syscalls.c
+ 1
+ PARENT-1-PROJECT_LOC/syscalls.c
Drivers/CMSIS/system_stm32f7xx.c
1
diff --git a/Projects/STM32746G-Discovery/Examples/UART/UART_TwoBoards_ComPolling/SW4STM32/syscalls.c b/Projects/STM32746G-Discovery/Examples/UART/UART_TwoBoards_ComPolling/SW4STM32/syscalls.c
new file mode 100644
index 000000000..d5a72c4b6
--- /dev/null
+++ b/Projects/STM32746G-Discovery/Examples/UART/UART_TwoBoards_ComPolling/SW4STM32/syscalls.c
@@ -0,0 +1,186 @@
+/**
+*****************************************************************************
+**
+** File : syscalls.c
+**
+** Abstract : System Workbench Minimal System calls file
+**
+** For more information about which c-functions
+** need which of these lowlevel functions
+** please consult the Newlib libc-manual
+**
+** Environment : System Workbench for MCU
+**
+** Distribution: The file is distributed “as is,” without any warranty
+** of any kind.
+**
+** (c)Copyright System Workbench for MCU.
+** You may use this file as-is or modify it according to the needs of your
+** project. Distribution of this file (unmodified or modified) is not
+** permitted. System Workbench for MCU permit registered System Workbench(R) users the
+** rights to distribute the assembled, compiled & linked contents of this
+** file as part of an application binary file, provided that it is built
+** using the System Workbench for MCU toolchain.
+**
+*****************************************************************************
+*/
+
+/* Includes */
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+
+
+/* Variables */
+//#undef errno
+extern int errno;
+extern int __io_putchar(int ch) __attribute__((weak));
+extern int __io_getchar(void) __attribute__((weak));
+
+register char * stack_ptr asm("sp");
+
+char *__env[1] = { 0 };
+char **environ = __env;
+
+
+/* Functions */
+void initialise_monitor_handles()
+{
+}
+
+int _getpid(void)
+{
+ return 1;
+}
+
+int _kill(int pid, int sig)
+{
+ errno = EINVAL;
+ return -1;
+}
+
+void _exit (int status)
+{
+ _kill(status, -1);
+ while (1) {} /* Make sure we hang here */
+}
+
+int _read (int file, char *ptr, int len)
+{
+ int DataIdx;
+
+ for (DataIdx = 0; DataIdx < len; DataIdx++)
+ {
+ *ptr++ = __io_getchar();
+ }
+
+return len;
+}
+
+int _write(int file, char *ptr, int len)
+{
+ int DataIdx;
+
+ for (DataIdx = 0; DataIdx < len; DataIdx++)
+ {
+ __io_putchar(*ptr++);
+ }
+ return len;
+}
+
+caddr_t _sbrk(int incr)
+{
+ extern char end asm("end");
+ static char *heap_end;
+ char *prev_heap_end;
+
+ if (heap_end == 0)
+ heap_end = &end;
+
+ prev_heap_end = heap_end;
+ if (heap_end + incr > stack_ptr)
+ {
+// write(1, "Heap and stack collision\n", 25);
+// abort();
+ errno = ENOMEM;
+ return (caddr_t) -1;
+ }
+
+ heap_end += incr;
+
+ return (caddr_t) prev_heap_end;
+}
+
+int _close(int file)
+{
+ return -1;
+}
+
+
+int _fstat(int file, struct stat *st)
+{
+ st->st_mode = S_IFCHR;
+ return 0;
+}
+
+int _isatty(int file)
+{
+ return 1;
+}
+
+int _lseek(int file, int ptr, int dir)
+{
+ return 0;
+}
+
+int _open(char *path, int flags, ...)
+{
+ /* Pretend like we always fail */
+ return -1;
+}
+
+int _wait(int *status)
+{
+ errno = ECHILD;
+ return -1;
+}
+
+int _unlink(char *name)
+{
+ errno = ENOENT;
+ return -1;
+}
+
+int _times(struct tms *buf)
+{
+ return -1;
+}
+
+int _stat(char *file, struct stat *st)
+{
+ st->st_mode = S_IFCHR;
+ return 0;
+}
+
+int _link(char *old, char *new)
+{
+ errno = EMLINK;
+ return -1;
+}
+
+int _fork(void)
+{
+ errno = EAGAIN;
+ return -1;
+}
+
+int _execve(char *name, char **argv, char **env)
+{
+ errno = ENOMEM;
+ return -1;
+}
diff --git a/Projects/STM32756G_EVAL/Examples/UART/UART_HyperTerminal_DMA/SW4STM32/STM327x6G_EVAL/.project b/Projects/STM32756G_EVAL/Examples/UART/UART_HyperTerminal_DMA/SW4STM32/STM327x6G_EVAL/.project
index ee0084a03..537b22d4a 100644
--- a/Projects/STM32756G_EVAL/Examples/UART/UART_HyperTerminal_DMA/SW4STM32/STM327x6G_EVAL/.project
+++ b/Projects/STM32756G_EVAL/Examples/UART/UART_HyperTerminal_DMA/SW4STM32/STM327x6G_EVAL/.project
@@ -88,6 +88,10 @@
Example/User/main.c
1
PARENT-2-PROJECT_LOC/Src/main.c
+
+ Example/SW4STM32/syscalls.c
+ 1
+ PARENT-1-PROJECT_LOC/syscalls.c
Drivers/STM32F7xx_HAL_Driver/stm32f7xx_hal_cortex.c
1
diff --git a/Projects/STM32756G_EVAL/Examples/UART/UART_HyperTerminal_DMA/SW4STM32/syscalls.c b/Projects/STM32756G_EVAL/Examples/UART/UART_HyperTerminal_DMA/SW4STM32/syscalls.c
new file mode 100644
index 000000000..d5a72c4b6
--- /dev/null
+++ b/Projects/STM32756G_EVAL/Examples/UART/UART_HyperTerminal_DMA/SW4STM32/syscalls.c
@@ -0,0 +1,186 @@
+/**
+*****************************************************************************
+**
+** File : syscalls.c
+**
+** Abstract : System Workbench Minimal System calls file
+**
+** For more information about which c-functions
+** need which of these lowlevel functions
+** please consult the Newlib libc-manual
+**
+** Environment : System Workbench for MCU
+**
+** Distribution: The file is distributed “as is,” without any warranty
+** of any kind.
+**
+** (c)Copyright System Workbench for MCU.
+** You may use this file as-is or modify it according to the needs of your
+** project. Distribution of this file (unmodified or modified) is not
+** permitted. System Workbench for MCU permit registered System Workbench(R) users the
+** rights to distribute the assembled, compiled & linked contents of this
+** file as part of an application binary file, provided that it is built
+** using the System Workbench for MCU toolchain.
+**
+*****************************************************************************
+*/
+
+/* Includes */
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+
+
+/* Variables */
+//#undef errno
+extern int errno;
+extern int __io_putchar(int ch) __attribute__((weak));
+extern int __io_getchar(void) __attribute__((weak));
+
+register char * stack_ptr asm("sp");
+
+char *__env[1] = { 0 };
+char **environ = __env;
+
+
+/* Functions */
+void initialise_monitor_handles()
+{
+}
+
+int _getpid(void)
+{
+ return 1;
+}
+
+int _kill(int pid, int sig)
+{
+ errno = EINVAL;
+ return -1;
+}
+
+void _exit (int status)
+{
+ _kill(status, -1);
+ while (1) {} /* Make sure we hang here */
+}
+
+int _read (int file, char *ptr, int len)
+{
+ int DataIdx;
+
+ for (DataIdx = 0; DataIdx < len; DataIdx++)
+ {
+ *ptr++ = __io_getchar();
+ }
+
+return len;
+}
+
+int _write(int file, char *ptr, int len)
+{
+ int DataIdx;
+
+ for (DataIdx = 0; DataIdx < len; DataIdx++)
+ {
+ __io_putchar(*ptr++);
+ }
+ return len;
+}
+
+caddr_t _sbrk(int incr)
+{
+ extern char end asm("end");
+ static char *heap_end;
+ char *prev_heap_end;
+
+ if (heap_end == 0)
+ heap_end = &end;
+
+ prev_heap_end = heap_end;
+ if (heap_end + incr > stack_ptr)
+ {
+// write(1, "Heap and stack collision\n", 25);
+// abort();
+ errno = ENOMEM;
+ return (caddr_t) -1;
+ }
+
+ heap_end += incr;
+
+ return (caddr_t) prev_heap_end;
+}
+
+int _close(int file)
+{
+ return -1;
+}
+
+
+int _fstat(int file, struct stat *st)
+{
+ st->st_mode = S_IFCHR;
+ return 0;
+}
+
+int _isatty(int file)
+{
+ return 1;
+}
+
+int _lseek(int file, int ptr, int dir)
+{
+ return 0;
+}
+
+int _open(char *path, int flags, ...)
+{
+ /* Pretend like we always fail */
+ return -1;
+}
+
+int _wait(int *status)
+{
+ errno = ECHILD;
+ return -1;
+}
+
+int _unlink(char *name)
+{
+ errno = ENOENT;
+ return -1;
+}
+
+int _times(struct tms *buf)
+{
+ return -1;
+}
+
+int _stat(char *file, struct stat *st)
+{
+ st->st_mode = S_IFCHR;
+ return 0;
+}
+
+int _link(char *old, char *new)
+{
+ errno = EMLINK;
+ return -1;
+}
+
+int _fork(void)
+{
+ errno = EAGAIN;
+ return -1;
+}
+
+int _execve(char *name, char **argv, char **env)
+{
+ errno = ENOMEM;
+ return -1;
+}
diff --git a/Projects/STM32756G_EVAL/Examples/UART/UART_HyperTerminal_IT/SW4STM32/STM327x6G_EVAL/.project b/Projects/STM32756G_EVAL/Examples/UART/UART_HyperTerminal_IT/SW4STM32/STM327x6G_EVAL/.project
index ee0084a03..537b22d4a 100644
--- a/Projects/STM32756G_EVAL/Examples/UART/UART_HyperTerminal_IT/SW4STM32/STM327x6G_EVAL/.project
+++ b/Projects/STM32756G_EVAL/Examples/UART/UART_HyperTerminal_IT/SW4STM32/STM327x6G_EVAL/.project
@@ -88,6 +88,10 @@
Example/User/main.c
1
PARENT-2-PROJECT_LOC/Src/main.c
+
+ Example/SW4STM32/syscalls.c
+ 1
+ PARENT-1-PROJECT_LOC/syscalls.c
Drivers/STM32F7xx_HAL_Driver/stm32f7xx_hal_cortex.c
1
diff --git a/Projects/STM32756G_EVAL/Examples/UART/UART_HyperTerminal_IT/SW4STM32/syscalls.c b/Projects/STM32756G_EVAL/Examples/UART/UART_HyperTerminal_IT/SW4STM32/syscalls.c
new file mode 100644
index 000000000..d5a72c4b6
--- /dev/null
+++ b/Projects/STM32756G_EVAL/Examples/UART/UART_HyperTerminal_IT/SW4STM32/syscalls.c
@@ -0,0 +1,186 @@
+/**
+*****************************************************************************
+**
+** File : syscalls.c
+**
+** Abstract : System Workbench Minimal System calls file
+**
+** For more information about which c-functions
+** need which of these lowlevel functions
+** please consult the Newlib libc-manual
+**
+** Environment : System Workbench for MCU
+**
+** Distribution: The file is distributed “as is,” without any warranty
+** of any kind.
+**
+** (c)Copyright System Workbench for MCU.
+** You may use this file as-is or modify it according to the needs of your
+** project. Distribution of this file (unmodified or modified) is not
+** permitted. System Workbench for MCU permit registered System Workbench(R) users the
+** rights to distribute the assembled, compiled & linked contents of this
+** file as part of an application binary file, provided that it is built
+** using the System Workbench for MCU toolchain.
+**
+*****************************************************************************
+*/
+
+/* Includes */
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+
+
+/* Variables */
+//#undef errno
+extern int errno;
+extern int __io_putchar(int ch) __attribute__((weak));
+extern int __io_getchar(void) __attribute__((weak));
+
+register char * stack_ptr asm("sp");
+
+char *__env[1] = { 0 };
+char **environ = __env;
+
+
+/* Functions */
+void initialise_monitor_handles()
+{
+}
+
+int _getpid(void)
+{
+ return 1;
+}
+
+int _kill(int pid, int sig)
+{
+ errno = EINVAL;
+ return -1;
+}
+
+void _exit (int status)
+{
+ _kill(status, -1);
+ while (1) {} /* Make sure we hang here */
+}
+
+int _read (int file, char *ptr, int len)
+{
+ int DataIdx;
+
+ for (DataIdx = 0; DataIdx < len; DataIdx++)
+ {
+ *ptr++ = __io_getchar();
+ }
+
+return len;
+}
+
+int _write(int file, char *ptr, int len)
+{
+ int DataIdx;
+
+ for (DataIdx = 0; DataIdx < len; DataIdx++)
+ {
+ __io_putchar(*ptr++);
+ }
+ return len;
+}
+
+caddr_t _sbrk(int incr)
+{
+ extern char end asm("end");
+ static char *heap_end;
+ char *prev_heap_end;
+
+ if (heap_end == 0)
+ heap_end = &end;
+
+ prev_heap_end = heap_end;
+ if (heap_end + incr > stack_ptr)
+ {
+// write(1, "Heap and stack collision\n", 25);
+// abort();
+ errno = ENOMEM;
+ return (caddr_t) -1;
+ }
+
+ heap_end += incr;
+
+ return (caddr_t) prev_heap_end;
+}
+
+int _close(int file)
+{
+ return -1;
+}
+
+
+int _fstat(int file, struct stat *st)
+{
+ st->st_mode = S_IFCHR;
+ return 0;
+}
+
+int _isatty(int file)
+{
+ return 1;
+}
+
+int _lseek(int file, int ptr, int dir)
+{
+ return 0;
+}
+
+int _open(char *path, int flags, ...)
+{
+ /* Pretend like we always fail */
+ return -1;
+}
+
+int _wait(int *status)
+{
+ errno = ECHILD;
+ return -1;
+}
+
+int _unlink(char *name)
+{
+ errno = ENOENT;
+ return -1;
+}
+
+int _times(struct tms *buf)
+{
+ return -1;
+}
+
+int _stat(char *file, struct stat *st)
+{
+ st->st_mode = S_IFCHR;
+ return 0;
+}
+
+int _link(char *old, char *new)
+{
+ errno = EMLINK;
+ return -1;
+}
+
+int _fork(void)
+{
+ errno = EAGAIN;
+ return -1;
+}
+
+int _execve(char *name, char **argv, char **env)
+{
+ errno = ENOMEM;
+ return -1;
+}
diff --git a/Projects/STM32F722ZE-Nucleo/Examples/UART/UART_TwoBoards_ComDMA/SW4STM32/STM32F722ZE_Nucleo/.project b/Projects/STM32F722ZE-Nucleo/Examples/UART/UART_TwoBoards_ComDMA/SW4STM32/STM32F722ZE_Nucleo/.project
index 39a173fe1..94824b693 100644
--- a/Projects/STM32F722ZE-Nucleo/Examples/UART/UART_TwoBoards_ComDMA/SW4STM32/STM32F722ZE_Nucleo/.project
+++ b/Projects/STM32F722ZE-Nucleo/Examples/UART/UART_TwoBoards_ComDMA/SW4STM32/STM32F722ZE_Nucleo/.project
@@ -80,6 +80,10 @@
Example/User/main.c
1
PARENT-2-PROJECT_LOC/Src/main.c
+
+ Example/SW4STM32/syscalls.c
+ 1
+ PARENT-1-PROJECT_LOC/syscalls.c
Drivers/BSP/STM32F7xx_Nucleo_144/stm32f7xx_nucleo_144.c
1
diff --git a/Projects/STM32F722ZE-Nucleo/Examples/UART/UART_TwoBoards_ComDMA/SW4STM32/syscalls.c b/Projects/STM32F722ZE-Nucleo/Examples/UART/UART_TwoBoards_ComDMA/SW4STM32/syscalls.c
new file mode 100644
index 000000000..d5a72c4b6
--- /dev/null
+++ b/Projects/STM32F722ZE-Nucleo/Examples/UART/UART_TwoBoards_ComDMA/SW4STM32/syscalls.c
@@ -0,0 +1,186 @@
+/**
+*****************************************************************************
+**
+** File : syscalls.c
+**
+** Abstract : System Workbench Minimal System calls file
+**
+** For more information about which c-functions
+** need which of these lowlevel functions
+** please consult the Newlib libc-manual
+**
+** Environment : System Workbench for MCU
+**
+** Distribution: The file is distributed “as is,” without any warranty
+** of any kind.
+**
+** (c)Copyright System Workbench for MCU.
+** You may use this file as-is or modify it according to the needs of your
+** project. Distribution of this file (unmodified or modified) is not
+** permitted. System Workbench for MCU permit registered System Workbench(R) users the
+** rights to distribute the assembled, compiled & linked contents of this
+** file as part of an application binary file, provided that it is built
+** using the System Workbench for MCU toolchain.
+**
+*****************************************************************************
+*/
+
+/* Includes */
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+
+
+/* Variables */
+//#undef errno
+extern int errno;
+extern int __io_putchar(int ch) __attribute__((weak));
+extern int __io_getchar(void) __attribute__((weak));
+
+register char * stack_ptr asm("sp");
+
+char *__env[1] = { 0 };
+char **environ = __env;
+
+
+/* Functions */
+void initialise_monitor_handles()
+{
+}
+
+int _getpid(void)
+{
+ return 1;
+}
+
+int _kill(int pid, int sig)
+{
+ errno = EINVAL;
+ return -1;
+}
+
+void _exit (int status)
+{
+ _kill(status, -1);
+ while (1) {} /* Make sure we hang here */
+}
+
+int _read (int file, char *ptr, int len)
+{
+ int DataIdx;
+
+ for (DataIdx = 0; DataIdx < len; DataIdx++)
+ {
+ *ptr++ = __io_getchar();
+ }
+
+return len;
+}
+
+int _write(int file, char *ptr, int len)
+{
+ int DataIdx;
+
+ for (DataIdx = 0; DataIdx < len; DataIdx++)
+ {
+ __io_putchar(*ptr++);
+ }
+ return len;
+}
+
+caddr_t _sbrk(int incr)
+{
+ extern char end asm("end");
+ static char *heap_end;
+ char *prev_heap_end;
+
+ if (heap_end == 0)
+ heap_end = &end;
+
+ prev_heap_end = heap_end;
+ if (heap_end + incr > stack_ptr)
+ {
+// write(1, "Heap and stack collision\n", 25);
+// abort();
+ errno = ENOMEM;
+ return (caddr_t) -1;
+ }
+
+ heap_end += incr;
+
+ return (caddr_t) prev_heap_end;
+}
+
+int _close(int file)
+{
+ return -1;
+}
+
+
+int _fstat(int file, struct stat *st)
+{
+ st->st_mode = S_IFCHR;
+ return 0;
+}
+
+int _isatty(int file)
+{
+ return 1;
+}
+
+int _lseek(int file, int ptr, int dir)
+{
+ return 0;
+}
+
+int _open(char *path, int flags, ...)
+{
+ /* Pretend like we always fail */
+ return -1;
+}
+
+int _wait(int *status)
+{
+ errno = ECHILD;
+ return -1;
+}
+
+int _unlink(char *name)
+{
+ errno = ENOENT;
+ return -1;
+}
+
+int _times(struct tms *buf)
+{
+ return -1;
+}
+
+int _stat(char *file, struct stat *st)
+{
+ st->st_mode = S_IFCHR;
+ return 0;
+}
+
+int _link(char *old, char *new)
+{
+ errno = EMLINK;
+ return -1;
+}
+
+int _fork(void)
+{
+ errno = EAGAIN;
+ return -1;
+}
+
+int _execve(char *name, char **argv, char **env)
+{
+ errno = ENOMEM;
+ return -1;
+}
diff --git a/Projects/STM32F723E-Discovery/Examples/UART/UART_TwoBoards_ComDMA/SW4STM32/STM32F723E_DISCOVERY/.project b/Projects/STM32F723E-Discovery/Examples/UART/UART_TwoBoards_ComDMA/SW4STM32/STM32F723E_DISCOVERY/.project
index 108f0d663..a544360a4 100644
--- a/Projects/STM32F723E-Discovery/Examples/UART/UART_TwoBoards_ComDMA/SW4STM32/STM32F723E_DISCOVERY/.project
+++ b/Projects/STM32F723E-Discovery/Examples/UART/UART_TwoBoards_ComDMA/SW4STM32/STM32F723E_DISCOVERY/.project
@@ -108,6 +108,10 @@
Example/User/main.c
1
PARENT-2-PROJECT_LOC/Src/main.c
+
+ Example/SW4STM32/syscalls.c
+ 1
+ PARENT-1-PROJECT_LOC/syscalls.c
diff --git a/Projects/STM32F723E-Discovery/Examples/UART/UART_TwoBoards_ComDMA/SW4STM32/syscalls.c b/Projects/STM32F723E-Discovery/Examples/UART/UART_TwoBoards_ComDMA/SW4STM32/syscalls.c
new file mode 100644
index 000000000..d5a72c4b6
--- /dev/null
+++ b/Projects/STM32F723E-Discovery/Examples/UART/UART_TwoBoards_ComDMA/SW4STM32/syscalls.c
@@ -0,0 +1,186 @@
+/**
+*****************************************************************************
+**
+** File : syscalls.c
+**
+** Abstract : System Workbench Minimal System calls file
+**
+** For more information about which c-functions
+** need which of these lowlevel functions
+** please consult the Newlib libc-manual
+**
+** Environment : System Workbench for MCU
+**
+** Distribution: The file is distributed “as is,” without any warranty
+** of any kind.
+**
+** (c)Copyright System Workbench for MCU.
+** You may use this file as-is or modify it according to the needs of your
+** project. Distribution of this file (unmodified or modified) is not
+** permitted. System Workbench for MCU permit registered System Workbench(R) users the
+** rights to distribute the assembled, compiled & linked contents of this
+** file as part of an application binary file, provided that it is built
+** using the System Workbench for MCU toolchain.
+**
+*****************************************************************************
+*/
+
+/* Includes */
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+
+
+/* Variables */
+//#undef errno
+extern int errno;
+extern int __io_putchar(int ch) __attribute__((weak));
+extern int __io_getchar(void) __attribute__((weak));
+
+register char * stack_ptr asm("sp");
+
+char *__env[1] = { 0 };
+char **environ = __env;
+
+
+/* Functions */
+void initialise_monitor_handles()
+{
+}
+
+int _getpid(void)
+{
+ return 1;
+}
+
+int _kill(int pid, int sig)
+{
+ errno = EINVAL;
+ return -1;
+}
+
+void _exit (int status)
+{
+ _kill(status, -1);
+ while (1) {} /* Make sure we hang here */
+}
+
+int _read (int file, char *ptr, int len)
+{
+ int DataIdx;
+
+ for (DataIdx = 0; DataIdx < len; DataIdx++)
+ {
+ *ptr++ = __io_getchar();
+ }
+
+return len;
+}
+
+int _write(int file, char *ptr, int len)
+{
+ int DataIdx;
+
+ for (DataIdx = 0; DataIdx < len; DataIdx++)
+ {
+ __io_putchar(*ptr++);
+ }
+ return len;
+}
+
+caddr_t _sbrk(int incr)
+{
+ extern char end asm("end");
+ static char *heap_end;
+ char *prev_heap_end;
+
+ if (heap_end == 0)
+ heap_end = &end;
+
+ prev_heap_end = heap_end;
+ if (heap_end + incr > stack_ptr)
+ {
+// write(1, "Heap and stack collision\n", 25);
+// abort();
+ errno = ENOMEM;
+ return (caddr_t) -1;
+ }
+
+ heap_end += incr;
+
+ return (caddr_t) prev_heap_end;
+}
+
+int _close(int file)
+{
+ return -1;
+}
+
+
+int _fstat(int file, struct stat *st)
+{
+ st->st_mode = S_IFCHR;
+ return 0;
+}
+
+int _isatty(int file)
+{
+ return 1;
+}
+
+int _lseek(int file, int ptr, int dir)
+{
+ return 0;
+}
+
+int _open(char *path, int flags, ...)
+{
+ /* Pretend like we always fail */
+ return -1;
+}
+
+int _wait(int *status)
+{
+ errno = ECHILD;
+ return -1;
+}
+
+int _unlink(char *name)
+{
+ errno = ENOENT;
+ return -1;
+}
+
+int _times(struct tms *buf)
+{
+ return -1;
+}
+
+int _stat(char *file, struct stat *st)
+{
+ st->st_mode = S_IFCHR;
+ return 0;
+}
+
+int _link(char *old, char *new)
+{
+ errno = EMLINK;
+ return -1;
+}
+
+int _fork(void)
+{
+ errno = EAGAIN;
+ return -1;
+}
+
+int _execve(char *name, char **argv, char **env)
+{
+ errno = ENOMEM;
+ return -1;
+}
diff --git a/Projects/STM32F723E-Discovery/Examples/UART/UART_TwoBoards_ComIT/SW4STM32/STM32F723E_DISCOVERY/.project b/Projects/STM32F723E-Discovery/Examples/UART/UART_TwoBoards_ComIT/SW4STM32/STM32F723E_DISCOVERY/.project
index 108f0d663..a544360a4 100644
--- a/Projects/STM32F723E-Discovery/Examples/UART/UART_TwoBoards_ComIT/SW4STM32/STM32F723E_DISCOVERY/.project
+++ b/Projects/STM32F723E-Discovery/Examples/UART/UART_TwoBoards_ComIT/SW4STM32/STM32F723E_DISCOVERY/.project
@@ -108,6 +108,10 @@
Example/User/main.c
1
PARENT-2-PROJECT_LOC/Src/main.c
+
+ Example/SW4STM32/syscalls.c
+ 1
+ PARENT-1-PROJECT_LOC/syscalls.c
diff --git a/Projects/STM32F723E-Discovery/Examples/UART/UART_TwoBoards_ComIT/SW4STM32/syscalls.c b/Projects/STM32F723E-Discovery/Examples/UART/UART_TwoBoards_ComIT/SW4STM32/syscalls.c
new file mode 100644
index 000000000..d5a72c4b6
--- /dev/null
+++ b/Projects/STM32F723E-Discovery/Examples/UART/UART_TwoBoards_ComIT/SW4STM32/syscalls.c
@@ -0,0 +1,186 @@
+/**
+*****************************************************************************
+**
+** File : syscalls.c
+**
+** Abstract : System Workbench Minimal System calls file
+**
+** For more information about which c-functions
+** need which of these lowlevel functions
+** please consult the Newlib libc-manual
+**
+** Environment : System Workbench for MCU
+**
+** Distribution: The file is distributed “as is,” without any warranty
+** of any kind.
+**
+** (c)Copyright System Workbench for MCU.
+** You may use this file as-is or modify it according to the needs of your
+** project. Distribution of this file (unmodified or modified) is not
+** permitted. System Workbench for MCU permit registered System Workbench(R) users the
+** rights to distribute the assembled, compiled & linked contents of this
+** file as part of an application binary file, provided that it is built
+** using the System Workbench for MCU toolchain.
+**
+*****************************************************************************
+*/
+
+/* Includes */
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+
+
+/* Variables */
+//#undef errno
+extern int errno;
+extern int __io_putchar(int ch) __attribute__((weak));
+extern int __io_getchar(void) __attribute__((weak));
+
+register char * stack_ptr asm("sp");
+
+char *__env[1] = { 0 };
+char **environ = __env;
+
+
+/* Functions */
+void initialise_monitor_handles()
+{
+}
+
+int _getpid(void)
+{
+ return 1;
+}
+
+int _kill(int pid, int sig)
+{
+ errno = EINVAL;
+ return -1;
+}
+
+void _exit (int status)
+{
+ _kill(status, -1);
+ while (1) {} /* Make sure we hang here */
+}
+
+int _read (int file, char *ptr, int len)
+{
+ int DataIdx;
+
+ for (DataIdx = 0; DataIdx < len; DataIdx++)
+ {
+ *ptr++ = __io_getchar();
+ }
+
+return len;
+}
+
+int _write(int file, char *ptr, int len)
+{
+ int DataIdx;
+
+ for (DataIdx = 0; DataIdx < len; DataIdx++)
+ {
+ __io_putchar(*ptr++);
+ }
+ return len;
+}
+
+caddr_t _sbrk(int incr)
+{
+ extern char end asm("end");
+ static char *heap_end;
+ char *prev_heap_end;
+
+ if (heap_end == 0)
+ heap_end = &end;
+
+ prev_heap_end = heap_end;
+ if (heap_end + incr > stack_ptr)
+ {
+// write(1, "Heap and stack collision\n", 25);
+// abort();
+ errno = ENOMEM;
+ return (caddr_t) -1;
+ }
+
+ heap_end += incr;
+
+ return (caddr_t) prev_heap_end;
+}
+
+int _close(int file)
+{
+ return -1;
+}
+
+
+int _fstat(int file, struct stat *st)
+{
+ st->st_mode = S_IFCHR;
+ return 0;
+}
+
+int _isatty(int file)
+{
+ return 1;
+}
+
+int _lseek(int file, int ptr, int dir)
+{
+ return 0;
+}
+
+int _open(char *path, int flags, ...)
+{
+ /* Pretend like we always fail */
+ return -1;
+}
+
+int _wait(int *status)
+{
+ errno = ECHILD;
+ return -1;
+}
+
+int _unlink(char *name)
+{
+ errno = ENOENT;
+ return -1;
+}
+
+int _times(struct tms *buf)
+{
+ return -1;
+}
+
+int _stat(char *file, struct stat *st)
+{
+ st->st_mode = S_IFCHR;
+ return 0;
+}
+
+int _link(char *old, char *new)
+{
+ errno = EMLINK;
+ return -1;
+}
+
+int _fork(void)
+{
+ errno = EAGAIN;
+ return -1;
+}
+
+int _execve(char *name, char **argv, char **env)
+{
+ errno = ENOMEM;
+ return -1;
+}
diff --git a/Projects/STM32F723E-Discovery/Examples/UART/UART_TwoBoards_ComPolling/SW4STM32/STM32F723E_DISCOVERY/.project b/Projects/STM32F723E-Discovery/Examples/UART/UART_TwoBoards_ComPolling/SW4STM32/STM32F723E_DISCOVERY/.project
index 108f0d663..a544360a4 100644
--- a/Projects/STM32F723E-Discovery/Examples/UART/UART_TwoBoards_ComPolling/SW4STM32/STM32F723E_DISCOVERY/.project
+++ b/Projects/STM32F723E-Discovery/Examples/UART/UART_TwoBoards_ComPolling/SW4STM32/STM32F723E_DISCOVERY/.project
@@ -108,6 +108,10 @@
Example/User/main.c
1
PARENT-2-PROJECT_LOC/Src/main.c
+
+ Example/SW4STM32/syscalls.c
+ 1
+ PARENT-1-PROJECT_LOC/syscalls.c
diff --git a/Projects/STM32F723E-Discovery/Examples/UART/UART_TwoBoards_ComPolling/SW4STM32/syscalls.c b/Projects/STM32F723E-Discovery/Examples/UART/UART_TwoBoards_ComPolling/SW4STM32/syscalls.c
new file mode 100644
index 000000000..d5a72c4b6
--- /dev/null
+++ b/Projects/STM32F723E-Discovery/Examples/UART/UART_TwoBoards_ComPolling/SW4STM32/syscalls.c
@@ -0,0 +1,186 @@
+/**
+*****************************************************************************
+**
+** File : syscalls.c
+**
+** Abstract : System Workbench Minimal System calls file
+**
+** For more information about which c-functions
+** need which of these lowlevel functions
+** please consult the Newlib libc-manual
+**
+** Environment : System Workbench for MCU
+**
+** Distribution: The file is distributed “as is,” without any warranty
+** of any kind.
+**
+** (c)Copyright System Workbench for MCU.
+** You may use this file as-is or modify it according to the needs of your
+** project. Distribution of this file (unmodified or modified) is not
+** permitted. System Workbench for MCU permit registered System Workbench(R) users the
+** rights to distribute the assembled, compiled & linked contents of this
+** file as part of an application binary file, provided that it is built
+** using the System Workbench for MCU toolchain.
+**
+*****************************************************************************
+*/
+
+/* Includes */
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+
+
+/* Variables */
+//#undef errno
+extern int errno;
+extern int __io_putchar(int ch) __attribute__((weak));
+extern int __io_getchar(void) __attribute__((weak));
+
+register char * stack_ptr asm("sp");
+
+char *__env[1] = { 0 };
+char **environ = __env;
+
+
+/* Functions */
+void initialise_monitor_handles()
+{
+}
+
+int _getpid(void)
+{
+ return 1;
+}
+
+int _kill(int pid, int sig)
+{
+ errno = EINVAL;
+ return -1;
+}
+
+void _exit (int status)
+{
+ _kill(status, -1);
+ while (1) {} /* Make sure we hang here */
+}
+
+int _read (int file, char *ptr, int len)
+{
+ int DataIdx;
+
+ for (DataIdx = 0; DataIdx < len; DataIdx++)
+ {
+ *ptr++ = __io_getchar();
+ }
+
+return len;
+}
+
+int _write(int file, char *ptr, int len)
+{
+ int DataIdx;
+
+ for (DataIdx = 0; DataIdx < len; DataIdx++)
+ {
+ __io_putchar(*ptr++);
+ }
+ return len;
+}
+
+caddr_t _sbrk(int incr)
+{
+ extern char end asm("end");
+ static char *heap_end;
+ char *prev_heap_end;
+
+ if (heap_end == 0)
+ heap_end = &end;
+
+ prev_heap_end = heap_end;
+ if (heap_end + incr > stack_ptr)
+ {
+// write(1, "Heap and stack collision\n", 25);
+// abort();
+ errno = ENOMEM;
+ return (caddr_t) -1;
+ }
+
+ heap_end += incr;
+
+ return (caddr_t) prev_heap_end;
+}
+
+int _close(int file)
+{
+ return -1;
+}
+
+
+int _fstat(int file, struct stat *st)
+{
+ st->st_mode = S_IFCHR;
+ return 0;
+}
+
+int _isatty(int file)
+{
+ return 1;
+}
+
+int _lseek(int file, int ptr, int dir)
+{
+ return 0;
+}
+
+int _open(char *path, int flags, ...)
+{
+ /* Pretend like we always fail */
+ return -1;
+}
+
+int _wait(int *status)
+{
+ errno = ECHILD;
+ return -1;
+}
+
+int _unlink(char *name)
+{
+ errno = ENOENT;
+ return -1;
+}
+
+int _times(struct tms *buf)
+{
+ return -1;
+}
+
+int _stat(char *file, struct stat *st)
+{
+ st->st_mode = S_IFCHR;
+ return 0;
+}
+
+int _link(char *old, char *new)
+{
+ errno = EMLINK;
+ return -1;
+}
+
+int _fork(void)
+{
+ errno = EAGAIN;
+ return -1;
+}
+
+int _execve(char *name, char **argv, char **env)
+{
+ errno = ENOMEM;
+ return -1;
+}
diff --git a/Projects/STM32F746ZG-Nucleo/Examples/UART/UART_Printf/SW4STM32/STM32746ZG_Nucleo/.project b/Projects/STM32F746ZG-Nucleo/Examples/UART/UART_Printf/SW4STM32/STM32746ZG_Nucleo/.project
index 1b04563ed..486dededc 100644
--- a/Projects/STM32F746ZG-Nucleo/Examples/UART/UART_Printf/SW4STM32/STM32746ZG_Nucleo/.project
+++ b/Projects/STM32F746ZG-Nucleo/Examples/UART/UART_Printf/SW4STM32/STM32746ZG_Nucleo/.project
@@ -28,6 +28,10 @@
Example/User/main.c
1
PARENT-2-PROJECT_LOC/Src/main.c
+
+ Example/SW4STM32/syscalls.c
+ 1
+ PARENT-1-PROJECT_LOC/syscalls.c
Drivers/STM32F7xx_HAL_Driver/stm32f7xx_hal_rcc_ex.c
1
diff --git a/Projects/STM32F746ZG-Nucleo/Examples/UART/UART_Printf/SW4STM32/syscalls.c b/Projects/STM32F746ZG-Nucleo/Examples/UART/UART_Printf/SW4STM32/syscalls.c
new file mode 100644
index 000000000..d5a72c4b6
--- /dev/null
+++ b/Projects/STM32F746ZG-Nucleo/Examples/UART/UART_Printf/SW4STM32/syscalls.c
@@ -0,0 +1,186 @@
+/**
+*****************************************************************************
+**
+** File : syscalls.c
+**
+** Abstract : System Workbench Minimal System calls file
+**
+** For more information about which c-functions
+** need which of these lowlevel functions
+** please consult the Newlib libc-manual
+**
+** Environment : System Workbench for MCU
+**
+** Distribution: The file is distributed “as is,” without any warranty
+** of any kind.
+**
+** (c)Copyright System Workbench for MCU.
+** You may use this file as-is or modify it according to the needs of your
+** project. Distribution of this file (unmodified or modified) is not
+** permitted. System Workbench for MCU permit registered System Workbench(R) users the
+** rights to distribute the assembled, compiled & linked contents of this
+** file as part of an application binary file, provided that it is built
+** using the System Workbench for MCU toolchain.
+**
+*****************************************************************************
+*/
+
+/* Includes */
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+
+
+/* Variables */
+//#undef errno
+extern int errno;
+extern int __io_putchar(int ch) __attribute__((weak));
+extern int __io_getchar(void) __attribute__((weak));
+
+register char * stack_ptr asm("sp");
+
+char *__env[1] = { 0 };
+char **environ = __env;
+
+
+/* Functions */
+void initialise_monitor_handles()
+{
+}
+
+int _getpid(void)
+{
+ return 1;
+}
+
+int _kill(int pid, int sig)
+{
+ errno = EINVAL;
+ return -1;
+}
+
+void _exit (int status)
+{
+ _kill(status, -1);
+ while (1) {} /* Make sure we hang here */
+}
+
+int _read (int file, char *ptr, int len)
+{
+ int DataIdx;
+
+ for (DataIdx = 0; DataIdx < len; DataIdx++)
+ {
+ *ptr++ = __io_getchar();
+ }
+
+return len;
+}
+
+int _write(int file, char *ptr, int len)
+{
+ int DataIdx;
+
+ for (DataIdx = 0; DataIdx < len; DataIdx++)
+ {
+ __io_putchar(*ptr++);
+ }
+ return len;
+}
+
+caddr_t _sbrk(int incr)
+{
+ extern char end asm("end");
+ static char *heap_end;
+ char *prev_heap_end;
+
+ if (heap_end == 0)
+ heap_end = &end;
+
+ prev_heap_end = heap_end;
+ if (heap_end + incr > stack_ptr)
+ {
+// write(1, "Heap and stack collision\n", 25);
+// abort();
+ errno = ENOMEM;
+ return (caddr_t) -1;
+ }
+
+ heap_end += incr;
+
+ return (caddr_t) prev_heap_end;
+}
+
+int _close(int file)
+{
+ return -1;
+}
+
+
+int _fstat(int file, struct stat *st)
+{
+ st->st_mode = S_IFCHR;
+ return 0;
+}
+
+int _isatty(int file)
+{
+ return 1;
+}
+
+int _lseek(int file, int ptr, int dir)
+{
+ return 0;
+}
+
+int _open(char *path, int flags, ...)
+{
+ /* Pretend like we always fail */
+ return -1;
+}
+
+int _wait(int *status)
+{
+ errno = ECHILD;
+ return -1;
+}
+
+int _unlink(char *name)
+{
+ errno = ENOENT;
+ return -1;
+}
+
+int _times(struct tms *buf)
+{
+ return -1;
+}
+
+int _stat(char *file, struct stat *st)
+{
+ st->st_mode = S_IFCHR;
+ return 0;
+}
+
+int _link(char *old, char *new)
+{
+ errno = EMLINK;
+ return -1;
+}
+
+int _fork(void)
+{
+ errno = EAGAIN;
+ return -1;
+}
+
+int _execve(char *name, char **argv, char **env)
+{
+ errno = ENOMEM;
+ return -1;
+}
diff --git a/Projects/STM32F769I-Discovery/Examples/UART/UART_TwoBoards_ComDMA/SW4STM32/STM32F769I_Discovery/.project b/Projects/STM32F769I-Discovery/Examples/UART/UART_TwoBoards_ComDMA/SW4STM32/STM32F769I_Discovery/.project
index ce61e62a6..fe60ac762 100644
--- a/Projects/STM32F769I-Discovery/Examples/UART/UART_TwoBoards_ComDMA/SW4STM32/STM32F769I_Discovery/.project
+++ b/Projects/STM32F769I-Discovery/Examples/UART/UART_TwoBoards_ComDMA/SW4STM32/STM32F769I_Discovery/.project
@@ -92,6 +92,10 @@
Example/User/main.c
1
PARENT-2-PROJECT_LOC/Src/main.c
+
+ Example/SW4STM32/syscalls.c
+ 1
+ PARENT-1-PROJECT_LOC/syscalls.c
Drivers/BSP/STM32F769I-Discovery/stm32f769i_discovery.c
1
diff --git a/Projects/STM32F769I-Discovery/Examples/UART/UART_TwoBoards_ComDMA/SW4STM32/syscalls.c b/Projects/STM32F769I-Discovery/Examples/UART/UART_TwoBoards_ComDMA/SW4STM32/syscalls.c
new file mode 100644
index 000000000..d5a72c4b6
--- /dev/null
+++ b/Projects/STM32F769I-Discovery/Examples/UART/UART_TwoBoards_ComDMA/SW4STM32/syscalls.c
@@ -0,0 +1,186 @@
+/**
+*****************************************************************************
+**
+** File : syscalls.c
+**
+** Abstract : System Workbench Minimal System calls file
+**
+** For more information about which c-functions
+** need which of these lowlevel functions
+** please consult the Newlib libc-manual
+**
+** Environment : System Workbench for MCU
+**
+** Distribution: The file is distributed “as is,” without any warranty
+** of any kind.
+**
+** (c)Copyright System Workbench for MCU.
+** You may use this file as-is or modify it according to the needs of your
+** project. Distribution of this file (unmodified or modified) is not
+** permitted. System Workbench for MCU permit registered System Workbench(R) users the
+** rights to distribute the assembled, compiled & linked contents of this
+** file as part of an application binary file, provided that it is built
+** using the System Workbench for MCU toolchain.
+**
+*****************************************************************************
+*/
+
+/* Includes */
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+
+
+/* Variables */
+//#undef errno
+extern int errno;
+extern int __io_putchar(int ch) __attribute__((weak));
+extern int __io_getchar(void) __attribute__((weak));
+
+register char * stack_ptr asm("sp");
+
+char *__env[1] = { 0 };
+char **environ = __env;
+
+
+/* Functions */
+void initialise_monitor_handles()
+{
+}
+
+int _getpid(void)
+{
+ return 1;
+}
+
+int _kill(int pid, int sig)
+{
+ errno = EINVAL;
+ return -1;
+}
+
+void _exit (int status)
+{
+ _kill(status, -1);
+ while (1) {} /* Make sure we hang here */
+}
+
+int _read (int file, char *ptr, int len)
+{
+ int DataIdx;
+
+ for (DataIdx = 0; DataIdx < len; DataIdx++)
+ {
+ *ptr++ = __io_getchar();
+ }
+
+return len;
+}
+
+int _write(int file, char *ptr, int len)
+{
+ int DataIdx;
+
+ for (DataIdx = 0; DataIdx < len; DataIdx++)
+ {
+ __io_putchar(*ptr++);
+ }
+ return len;
+}
+
+caddr_t _sbrk(int incr)
+{
+ extern char end asm("end");
+ static char *heap_end;
+ char *prev_heap_end;
+
+ if (heap_end == 0)
+ heap_end = &end;
+
+ prev_heap_end = heap_end;
+ if (heap_end + incr > stack_ptr)
+ {
+// write(1, "Heap and stack collision\n", 25);
+// abort();
+ errno = ENOMEM;
+ return (caddr_t) -1;
+ }
+
+ heap_end += incr;
+
+ return (caddr_t) prev_heap_end;
+}
+
+int _close(int file)
+{
+ return -1;
+}
+
+
+int _fstat(int file, struct stat *st)
+{
+ st->st_mode = S_IFCHR;
+ return 0;
+}
+
+int _isatty(int file)
+{
+ return 1;
+}
+
+int _lseek(int file, int ptr, int dir)
+{
+ return 0;
+}
+
+int _open(char *path, int flags, ...)
+{
+ /* Pretend like we always fail */
+ return -1;
+}
+
+int _wait(int *status)
+{
+ errno = ECHILD;
+ return -1;
+}
+
+int _unlink(char *name)
+{
+ errno = ENOENT;
+ return -1;
+}
+
+int _times(struct tms *buf)
+{
+ return -1;
+}
+
+int _stat(char *file, struct stat *st)
+{
+ st->st_mode = S_IFCHR;
+ return 0;
+}
+
+int _link(char *old, char *new)
+{
+ errno = EMLINK;
+ return -1;
+}
+
+int _fork(void)
+{
+ errno = EAGAIN;
+ return -1;
+}
+
+int _execve(char *name, char **argv, char **env)
+{
+ errno = ENOMEM;
+ return -1;
+}
diff --git a/Projects/STM32F769I_EVAL/Examples/UART/UART_HyperTerminal_DMA/SW4STM32/STM32F769I_EVAL/.project b/Projects/STM32F769I_EVAL/Examples/UART/UART_HyperTerminal_DMA/SW4STM32/STM32F769I_EVAL/.project
index 6d51d950d..3dfaff888 100644
--- a/Projects/STM32F769I_EVAL/Examples/UART/UART_HyperTerminal_DMA/SW4STM32/STM32F769I_EVAL/.project
+++ b/Projects/STM32F769I_EVAL/Examples/UART/UART_HyperTerminal_DMA/SW4STM32/STM32F769I_EVAL/.project
@@ -72,6 +72,10 @@
Example/User/main.c
1
PARENT-2-PROJECT_LOC/Src/main.c
+
+ Example/SW4STM32/syscalls.c
+ 1
+ PARENT-1-PROJECT_LOC/syscalls.c
Drivers/STM32F7xx_HAL_Driver/stm32f7xx_hal_pwr_ex.c
1
diff --git a/Projects/STM32F769I_EVAL/Examples/UART/UART_HyperTerminal_DMA/SW4STM32/syscalls.c b/Projects/STM32F769I_EVAL/Examples/UART/UART_HyperTerminal_DMA/SW4STM32/syscalls.c
new file mode 100644
index 000000000..d5a72c4b6
--- /dev/null
+++ b/Projects/STM32F769I_EVAL/Examples/UART/UART_HyperTerminal_DMA/SW4STM32/syscalls.c
@@ -0,0 +1,186 @@
+/**
+*****************************************************************************
+**
+** File : syscalls.c
+**
+** Abstract : System Workbench Minimal System calls file
+**
+** For more information about which c-functions
+** need which of these lowlevel functions
+** please consult the Newlib libc-manual
+**
+** Environment : System Workbench for MCU
+**
+** Distribution: The file is distributed “as is,” without any warranty
+** of any kind.
+**
+** (c)Copyright System Workbench for MCU.
+** You may use this file as-is or modify it according to the needs of your
+** project. Distribution of this file (unmodified or modified) is not
+** permitted. System Workbench for MCU permit registered System Workbench(R) users the
+** rights to distribute the assembled, compiled & linked contents of this
+** file as part of an application binary file, provided that it is built
+** using the System Workbench for MCU toolchain.
+**
+*****************************************************************************
+*/
+
+/* Includes */
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+
+
+/* Variables */
+//#undef errno
+extern int errno;
+extern int __io_putchar(int ch) __attribute__((weak));
+extern int __io_getchar(void) __attribute__((weak));
+
+register char * stack_ptr asm("sp");
+
+char *__env[1] = { 0 };
+char **environ = __env;
+
+
+/* Functions */
+void initialise_monitor_handles()
+{
+}
+
+int _getpid(void)
+{
+ return 1;
+}
+
+int _kill(int pid, int sig)
+{
+ errno = EINVAL;
+ return -1;
+}
+
+void _exit (int status)
+{
+ _kill(status, -1);
+ while (1) {} /* Make sure we hang here */
+}
+
+int _read (int file, char *ptr, int len)
+{
+ int DataIdx;
+
+ for (DataIdx = 0; DataIdx < len; DataIdx++)
+ {
+ *ptr++ = __io_getchar();
+ }
+
+return len;
+}
+
+int _write(int file, char *ptr, int len)
+{
+ int DataIdx;
+
+ for (DataIdx = 0; DataIdx < len; DataIdx++)
+ {
+ __io_putchar(*ptr++);
+ }
+ return len;
+}
+
+caddr_t _sbrk(int incr)
+{
+ extern char end asm("end");
+ static char *heap_end;
+ char *prev_heap_end;
+
+ if (heap_end == 0)
+ heap_end = &end;
+
+ prev_heap_end = heap_end;
+ if (heap_end + incr > stack_ptr)
+ {
+// write(1, "Heap and stack collision\n", 25);
+// abort();
+ errno = ENOMEM;
+ return (caddr_t) -1;
+ }
+
+ heap_end += incr;
+
+ return (caddr_t) prev_heap_end;
+}
+
+int _close(int file)
+{
+ return -1;
+}
+
+
+int _fstat(int file, struct stat *st)
+{
+ st->st_mode = S_IFCHR;
+ return 0;
+}
+
+int _isatty(int file)
+{
+ return 1;
+}
+
+int _lseek(int file, int ptr, int dir)
+{
+ return 0;
+}
+
+int _open(char *path, int flags, ...)
+{
+ /* Pretend like we always fail */
+ return -1;
+}
+
+int _wait(int *status)
+{
+ errno = ECHILD;
+ return -1;
+}
+
+int _unlink(char *name)
+{
+ errno = ENOENT;
+ return -1;
+}
+
+int _times(struct tms *buf)
+{
+ return -1;
+}
+
+int _stat(char *file, struct stat *st)
+{
+ st->st_mode = S_IFCHR;
+ return 0;
+}
+
+int _link(char *old, char *new)
+{
+ errno = EMLINK;
+ return -1;
+}
+
+int _fork(void)
+{
+ errno = EAGAIN;
+ return -1;
+}
+
+int _execve(char *name, char **argv, char **env)
+{
+ errno = ENOMEM;
+ return -1;
+}
diff --git a/Projects/STM32F769I_EVAL/Examples/UART/UART_HyperTerminal_IT/SW4STM32/STM32F769I_EVAL/.project b/Projects/STM32F769I_EVAL/Examples/UART/UART_HyperTerminal_IT/SW4STM32/STM32F769I_EVAL/.project
index 7391cb2ca..b45344893 100644
--- a/Projects/STM32F769I_EVAL/Examples/UART/UART_HyperTerminal_IT/SW4STM32/STM32F769I_EVAL/.project
+++ b/Projects/STM32F769I_EVAL/Examples/UART/UART_HyperTerminal_IT/SW4STM32/STM32F769I_EVAL/.project
@@ -76,6 +76,10 @@
Example/User/main.c
1
PARENT-2-PROJECT_LOC/Src/main.c
+
+ Example/SW4STM32/syscalls.c
+ 1
+ PARENT-1-PROJECT_LOC/syscalls.c
Drivers/STM32F7xx_HAL_Driver/stm32f7xx_hal_pwr_ex.c
1
diff --git a/Projects/STM32F769I_EVAL/Examples/UART/UART_HyperTerminal_IT/SW4STM32/syscalls.c b/Projects/STM32F769I_EVAL/Examples/UART/UART_HyperTerminal_IT/SW4STM32/syscalls.c
new file mode 100644
index 000000000..d5a72c4b6
--- /dev/null
+++ b/Projects/STM32F769I_EVAL/Examples/UART/UART_HyperTerminal_IT/SW4STM32/syscalls.c
@@ -0,0 +1,186 @@
+/**
+*****************************************************************************
+**
+** File : syscalls.c
+**
+** Abstract : System Workbench Minimal System calls file
+**
+** For more information about which c-functions
+** need which of these lowlevel functions
+** please consult the Newlib libc-manual
+**
+** Environment : System Workbench for MCU
+**
+** Distribution: The file is distributed “as is,” without any warranty
+** of any kind.
+**
+** (c)Copyright System Workbench for MCU.
+** You may use this file as-is or modify it according to the needs of your
+** project. Distribution of this file (unmodified or modified) is not
+** permitted. System Workbench for MCU permit registered System Workbench(R) users the
+** rights to distribute the assembled, compiled & linked contents of this
+** file as part of an application binary file, provided that it is built
+** using the System Workbench for MCU toolchain.
+**
+*****************************************************************************
+*/
+
+/* Includes */
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+
+
+/* Variables */
+//#undef errno
+extern int errno;
+extern int __io_putchar(int ch) __attribute__((weak));
+extern int __io_getchar(void) __attribute__((weak));
+
+register char * stack_ptr asm("sp");
+
+char *__env[1] = { 0 };
+char **environ = __env;
+
+
+/* Functions */
+void initialise_monitor_handles()
+{
+}
+
+int _getpid(void)
+{
+ return 1;
+}
+
+int _kill(int pid, int sig)
+{
+ errno = EINVAL;
+ return -1;
+}
+
+void _exit (int status)
+{
+ _kill(status, -1);
+ while (1) {} /* Make sure we hang here */
+}
+
+int _read (int file, char *ptr, int len)
+{
+ int DataIdx;
+
+ for (DataIdx = 0; DataIdx < len; DataIdx++)
+ {
+ *ptr++ = __io_getchar();
+ }
+
+return len;
+}
+
+int _write(int file, char *ptr, int len)
+{
+ int DataIdx;
+
+ for (DataIdx = 0; DataIdx < len; DataIdx++)
+ {
+ __io_putchar(*ptr++);
+ }
+ return len;
+}
+
+caddr_t _sbrk(int incr)
+{
+ extern char end asm("end");
+ static char *heap_end;
+ char *prev_heap_end;
+
+ if (heap_end == 0)
+ heap_end = &end;
+
+ prev_heap_end = heap_end;
+ if (heap_end + incr > stack_ptr)
+ {
+// write(1, "Heap and stack collision\n", 25);
+// abort();
+ errno = ENOMEM;
+ return (caddr_t) -1;
+ }
+
+ heap_end += incr;
+
+ return (caddr_t) prev_heap_end;
+}
+
+int _close(int file)
+{
+ return -1;
+}
+
+
+int _fstat(int file, struct stat *st)
+{
+ st->st_mode = S_IFCHR;
+ return 0;
+}
+
+int _isatty(int file)
+{
+ return 1;
+}
+
+int _lseek(int file, int ptr, int dir)
+{
+ return 0;
+}
+
+int _open(char *path, int flags, ...)
+{
+ /* Pretend like we always fail */
+ return -1;
+}
+
+int _wait(int *status)
+{
+ errno = ECHILD;
+ return -1;
+}
+
+int _unlink(char *name)
+{
+ errno = ENOENT;
+ return -1;
+}
+
+int _times(struct tms *buf)
+{
+ return -1;
+}
+
+int _stat(char *file, struct stat *st)
+{
+ st->st_mode = S_IFCHR;
+ return 0;
+}
+
+int _link(char *old, char *new)
+{
+ errno = EMLINK;
+ return -1;
+}
+
+int _fork(void)
+{
+ errno = EAGAIN;
+ return -1;
+}
+
+int _execve(char *name, char **argv, char **env)
+{
+ errno = ENOMEM;
+ return -1;
+}