Compare commits

...

4 Commits

3 changed files with 17 additions and 7 deletions

View File

@ -1,4 +1,6 @@
cmake_minimum_required(VERSION 3.21)
include(CheckLinkerFlag)
project(mnrs-bsp LANGUAGES ASM C)
set(LINKER_SCRIPT "${CMAKE_CURRENT_SOURCE_DIR}/env/${BOARD}/link.lds"
CACHE FILEPATH "Linker script to use for BSP linking")
@ -30,7 +32,13 @@ add_subdirectory(libwrap)
add_library(bsp STATIC env/${BOARD}/init.c)
target_link_libraries(bsp PUBLIC startup wrap)
target_include_directories(bsp PUBLIC env/${BOARD})
target_link_options(bsp INTERFACE LINKER:--no-warn-rwx-segments -nostartfiles -T ${LINKER_SCRIPT})
check_linker_flag(C "LINKER:--no-warn-rwx-segments" HAS_NO_WARN_RWX_SEGMENTS)
if(HAS_NO_WARN_RWX_SEGMENTS)
target_link_options(bsp INTERFACE LINKER:--no-warn-rwx-segments)
endif()
target_link_options(bsp INTERFACE LINKER: -nostartfiles -T ${LINKER_SCRIPT})
if(SEMIHOSTING)
target_include_directories(bsp INTERFACE include)

View File

@ -5,8 +5,8 @@ ENTRY( _start )
MEMORY
{
rom (rxai!w) : ORIGIN = 0xFFFFE000, LENGTH = 2k
flash (rxai!w) : ORIGIN = 0xE0000000, LENGTH = 16M
ram (wxa!ri) : ORIGIN = 0xC0000000, LENGTH = 128K
flash (rxai!w) : ORIGIN = 0x30000000, LENGTH = 16M
ram (wxa!ri) : ORIGIN = 0x10000000, LENGTH = 128K
dram (wxa!ri) : ORIGIN = 0x00000000, LENGTH = 2048M
}

View File

@ -2,10 +2,12 @@
#include <string.h>
#include <unistd.h>
extern ssize_t _bsp_write(int, const void *, size_t);
extern ssize_t _bsp_write(int, const void*, size_t);
int __wrap_puts(const char *s) {
int len = strlen(s);
return _bsp_write(STDOUT_FILENO, s, len);
int __wrap_puts(const char* s) {
const char* str = s;
while(*str)
str++;
return _bsp_write(STDOUT_FILENO, s, str - s);
}
weak_under_alias(puts);