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; +}