Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 6 additions & 3 deletions .github/workflows/checks.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,14 +14,17 @@ jobs:
runs-on: ubuntu-latest

container:
image: px4io/px4-dev-nuttx-focal:2021-09-08
image: igormisic/improject:v1.0.2
options: --privileged --ulimit core=-1 --security-opt seccomp=unconfined

steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v4
with:
token: ${{ secrets.GITHUB_TOKEN }}


- name: Mark repository as safe
run: git config --global --add safe.directory $GITHUB_WORKSPACE

- name: Check format
run: make check_format

Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/compile.yml
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ jobs:
]

container:
image: px4io/px4-dev-nuttx-focal:2021-09-08
image: igormisic/improject:v1.0.2
options: --privileged --ulimit core=-1 --security-opt seccomp=unconfined
steps:
- uses: actions/checkout@v2
Expand Down
172 changes: 172 additions & 0 deletions Bootloader/STM32/Src/syscalls.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,172 @@
/**
******************************************************************************
* @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;
}
77 changes: 77 additions & 0 deletions Bootloader/STM32/Src/sysmem.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
/**
******************************************************************************
* @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;
}
12 changes: 7 additions & 5 deletions Linker/STM32F7xx.ld
Original file line number Diff line number Diff line change
Expand Up @@ -79,21 +79,23 @@ SECTIONS
. = ALIGN(4);
} >FLASH

.ARM.extab : {
.ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >FLASH

.ARM : {
.ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
__exidx_end = .;
. = ALIGN(4);
} >FLASH

.preinit_array :
.preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
Expand All @@ -102,7 +104,7 @@ SECTIONS
. = ALIGN(4);
} >FLASH

.init_array :
.init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
Expand All @@ -112,7 +114,7 @@ SECTIONS
. = ALIGN(4);
} >FLASH

.fini_array :
.fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
Expand Down
12 changes: 7 additions & 5 deletions Linker/STM32F7xx_RAM.ld
Original file line number Diff line number Diff line change
Expand Up @@ -81,21 +81,23 @@ SECTIONS
. = ALIGN(4);
} >RAM2

.ARM.extab : {
.ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >RAM2

.ARM : {
.ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
__exidx_end = .;
. = ALIGN(4);
} >RAM2

.preinit_array :
.preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
Expand All @@ -104,7 +106,7 @@ SECTIONS
. = ALIGN(4);
} >RAM2

.init_array :
.init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
Expand All @@ -114,7 +116,7 @@ SECTIONS
. = ALIGN(4);
} >RAM2

.fini_array :
.fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
Expand Down
Loading