/* * @Date: 2025-06-26 14:24:13 * @Author: mypx * @LastEditors: mypx mypx_coder@163.com * @LastEditTime: 2025-09-24 13:08:52 * @FilePath: syscalls.c * @Description: * Copyright (c) 2025 by mypx, All Rights Reserved. */ /** ****************************************************************************** * @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 // #include // #include #ifndef clock_t typedef long clock_t; // 或typedef unsigned long clock_t; #endif #include #include #include #include #include "SEGGER_RTT.h" #include "rthw.h" //int errno; /* 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; 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; } #ifndef USING_RTT_AS_CONSOLE #define USING_RTT_AS_CONSOLE #endif __attribute__((weak)) int _write(int file, char *ptr, int len) { (void)file; #ifdef USING_RTT_AS_CONSOLE SEGGER_RTT_Write(0, ptr, len); #else rt_hw_console_output(ptr); #endif 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; return -1; } int _unlink(char *name) { (void)name; 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; return -1; } int _fork(void) { return -1; } int _execve(char *name, char **argv, char **env) { (void)name; (void)argv; (void)env; return -1; }