-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
9 changed files
with
270 additions
and
9 deletions.
There are no files selected for viewing
Large diffs are not rendered by default.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,176 @@ | ||
/** | ||
****************************************************************************** | ||
* @file syscalls.c | ||
* @author Auto-generated by STM32CubeMX | ||
* @brief Minimal System calls file | ||
* | ||
* For more information about which c-functions | ||
* need which of these lowlevel functions | ||
* please consult the Newlib libc-manual | ||
****************************************************************************** | ||
* @attention | ||
* | ||
* Copyright (c) 2020-2024 STMicroelectronics. | ||
* All rights reserved. | ||
* | ||
* This software is licensed under terms that can be found in the LICENSE file | ||
* in the root directory of this software component. | ||
* If no LICENSE file comes with this software, it is provided AS-IS. | ||
* | ||
****************************************************************************** | ||
*/ | ||
|
||
/* Includes */ | ||
#include <sys/stat.h> | ||
#include <stdlib.h> | ||
#include <errno.h> | ||
#include <stdio.h> | ||
#include <signal.h> | ||
#include <time.h> | ||
#include <sys/time.h> | ||
#include <sys/times.h> | ||
|
||
|
||
/* Variables */ | ||
extern int __io_putchar(int ch) __attribute__((weak)); | ||
extern int __io_getchar(void) __attribute__((weak)); | ||
|
||
|
||
char *__env[1] = { 0 }; | ||
char **environ = __env; | ||
|
||
|
||
/* Functions */ | ||
void initialise_monitor_handles() | ||
{ | ||
} | ||
|
||
int _getpid(void) | ||
{ | ||
return 1; | ||
} | ||
|
||
int _kill(int pid, int sig) | ||
{ | ||
(void)pid; | ||
(void)sig; | ||
errno = EINVAL; | ||
return -1; | ||
} | ||
|
||
void _exit (int status) | ||
{ | ||
_kill(status, -1); | ||
while (1) {} /* Make sure we hang here */ | ||
} | ||
|
||
__attribute__((weak)) int _read(int file, char *ptr, int len) | ||
{ | ||
(void)file; | ||
int DataIdx; | ||
|
||
for (DataIdx = 0; DataIdx < len; DataIdx++) | ||
{ | ||
*ptr++ = __io_getchar(); | ||
} | ||
|
||
return len; | ||
} | ||
|
||
__attribute__((weak)) int _write(int file, char *ptr, int len) | ||
{ | ||
(void)file; | ||
int DataIdx; | ||
|
||
for (DataIdx = 0; DataIdx < len; DataIdx++) | ||
{ | ||
__io_putchar(*ptr++); | ||
} | ||
return len; | ||
} | ||
|
||
int _close(int file) | ||
{ | ||
(void)file; | ||
return -1; | ||
} | ||
|
||
|
||
int _fstat(int file, struct stat *st) | ||
{ | ||
(void)file; | ||
st->st_mode = S_IFCHR; | ||
return 0; | ||
} | ||
|
||
int _isatty(int file) | ||
{ | ||
(void)file; | ||
return 1; | ||
} | ||
|
||
int _lseek(int file, int ptr, int dir) | ||
{ | ||
(void)file; | ||
(void)ptr; | ||
(void)dir; | ||
return 0; | ||
} | ||
|
||
int _open(char *path, int flags, ...) | ||
{ | ||
(void)path; | ||
(void)flags; | ||
/* Pretend like we always fail */ | ||
return -1; | ||
} | ||
|
||
int _wait(int *status) | ||
{ | ||
(void)status; | ||
errno = ECHILD; | ||
return -1; | ||
} | ||
|
||
int _unlink(char *name) | ||
{ | ||
(void)name; | ||
errno = ENOENT; | ||
return -1; | ||
} | ||
|
||
int _times(struct tms *buf) | ||
{ | ||
(void)buf; | ||
return -1; | ||
} | ||
|
||
int _stat(char *file, struct stat *st) | ||
{ | ||
(void)file; | ||
st->st_mode = S_IFCHR; | ||
return 0; | ||
} | ||
|
||
int _link(char *old, char *new) | ||
{ | ||
(void)old; | ||
(void)new; | ||
errno = EMLINK; | ||
return -1; | ||
} | ||
|
||
int _fork(void) | ||
{ | ||
errno = EAGAIN; | ||
return -1; | ||
} | ||
|
||
int _execve(char *name, char **argv, char **env) | ||
{ | ||
(void)name; | ||
(void)argv; | ||
(void)env; | ||
errno = ENOMEM; | ||
return -1; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,79 @@ | ||
/** | ||
****************************************************************************** | ||
* @file sysmem.c | ||
* @author Generated by STM32CubeMX | ||
* @brief System Memory calls file | ||
* | ||
* For more information about which C functions | ||
* need which of these lowlevel functions | ||
* please consult the newlib libc manual | ||
****************************************************************************** | ||
* @attention | ||
* | ||
* Copyright (c) 2024 STMicroelectronics. | ||
* All rights reserved. | ||
* | ||
* This software is licensed under terms that can be found in the LICENSE file | ||
* in the root directory of this software component. | ||
* If no LICENSE file comes with this software, it is provided AS-IS. | ||
* | ||
****************************************************************************** | ||
*/ | ||
|
||
/* Includes */ | ||
#include <errno.h> | ||
#include <stdint.h> | ||
|
||
/** | ||
* Pointer to the current high watermark of the heap usage | ||
*/ | ||
static uint8_t *__sbrk_heap_end = NULL; | ||
|
||
/** | ||
* @brief _sbrk() allocates memory to the newlib heap and is used by malloc | ||
* and others from the C library | ||
* | ||
* @verbatim | ||
* ############################################################################ | ||
* # .data # .bss # newlib heap # MSP stack # | ||
* # # # # Reserved by _Min_Stack_Size # | ||
* ############################################################################ | ||
* ^-- RAM start ^-- _end _estack, RAM end --^ | ||
* @endverbatim | ||
* | ||
* This implementation starts allocating at the '_end' linker symbol | ||
* The '_Min_Stack_Size' linker symbol reserves a memory for the MSP stack | ||
* The implementation considers '_estack' linker symbol to be RAM end | ||
* NOTE: If the MSP stack, at any point during execution, grows larger than the | ||
* reserved size, please increase the '_Min_Stack_Size'. | ||
* | ||
* @param incr Memory size | ||
* @return Pointer to allocated memory | ||
*/ | ||
void *_sbrk(ptrdiff_t incr) | ||
{ | ||
extern uint8_t _end; /* Symbol defined in the linker script */ | ||
extern uint8_t _estack; /* Symbol defined in the linker script */ | ||
extern uint32_t _Min_Stack_Size; /* Symbol defined in the linker script */ | ||
const uint32_t stack_limit = (uint32_t)&_estack - (uint32_t)&_Min_Stack_Size; | ||
const uint8_t *max_heap = (uint8_t *)stack_limit; | ||
uint8_t *prev_heap_end; | ||
|
||
/* Initialize heap end at first call */ | ||
if (NULL == __sbrk_heap_end) | ||
{ | ||
__sbrk_heap_end = &_end; | ||
} | ||
|
||
/* Protect heap from growing into the reserved MSP stack */ | ||
if (__sbrk_heap_end + incr > max_heap) | ||
{ | ||
errno = ENOMEM; | ||
return (void *)-1; | ||
} | ||
|
||
prev_heap_end = __sbrk_heap_end; | ||
__sbrk_heap_end += incr; | ||
|
||
return (void *)prev_heap_end; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -203,7 +203,6 @@ SECTIONS | |
libgcc.a ( * ) | ||
} | ||
|
||
.ARM.attributes 0 : { *(.ARM.attributes) } | ||
} | ||
|
||
|