Fix libnosys linkage and remove unneeded fstat & sbrk

This commit is contained in:
Jiajie Chen 2022-04-20 14:04:45 +08:00
parent c7ba52be62
commit 4cbc967415
5 changed files with 36 additions and 10 deletions

View File

@ -176,6 +176,8 @@ __attribute__((used)) int _write(int fd, char *buf, int size)
*
* @return size: Data length
*/
// _sbrk is provided by libnosys
/*
void *_sbrk(ptrdiff_t incr)
{
extern char _end[];
@ -188,6 +190,6 @@ void *_sbrk(ptrdiff_t incr)
curbrk += incr;
return curbrk - incr;
}
*/

View File

@ -48,7 +48,6 @@ set(TARGET_C_SOURCES
"src/board.c"
"src/ch32v30x_it.c"
"src/main.c"
"src/syscalls.c"
"src/system_ch32v30x.c"
)
@ -96,7 +95,7 @@ set(CMAKE_EXE_LINKER_FLAGS_RELEASE "-flto")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${TARGET_CFLAGS_HARDWARE} ${TARGET_CFLAGS_EXTRA} -Wall -fdata-sections -ffunction-sections")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${TARGET_CFLAGS_HARDWARE} ${TARGET_CXXFLAGS_EXTRA} -Wall -fdata-sections -ffunction-sections")
set(CMAKE_ASM_FLAGS "${CMAKE_ASM_FLAGS} ${CMAKE_C_FLAGS} -x assembler-with-cpp")
set(CMAKE_EXE_LINKER_FLAGS "-Wl,--gc-sections -lc -lm -lnosys -nostartfiles ${TARGET_LDFLAGS_EXTRA}")
set(CMAKE_EXE_LINKER_FLAGS "-Wl,--gc-sections -nostdlib -nostartfiles ${TARGET_LDFLAGS_EXTRA}")
# Include sub directories here
@ -116,6 +115,9 @@ target_link_options("${CMAKE_PROJECT_NAME}_FLASH.elf"
PRIVATE "-T${TARGET_LDSCRIPT_FLASH}"
PRIVATE "-Wl,-Map=${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_PROJECT_NAME}_FLASH.map,--cref"
)
target_link_libraries("${CMAKE_PROJECT_NAME}_FLASH.elf"
PRIVATE "-lnosys -lc -lgcc -lnosys"
)
add_custom_command(OUTPUT "${CMAKE_PROJECT_NAME}_FLASH.hex"
COMMAND ${CMAKE_OBJCOPY} "-O" "ihex" "${CMAKE_PROJECT_NAME}_FLASH.elf" "${CMAKE_PROJECT_NAME}_FLASH.hex"

24
program.cfg Normal file
View File

@ -0,0 +1,24 @@
#interface wlink
adapter driver wlink
wlink_set
set _CHIPNAME riscv
jtag newtap $_CHIPNAME cpu -irlen 5 -expected-id 0x00001
set _TARGETNAME $_CHIPNAME.cpu
target create $_TARGETNAME.0 riscv -chain-position $_TARGETNAME
$_TARGETNAME.0 configure -work-area-phys 0x80000000 -work-area-size 10000 -work-area-backup 1
set _FLASHNAME $_CHIPNAME.flash
flash bank $_FLASHNAME wch_riscv 0x00000000 0 0 0 $_TARGETNAME.0
echo "Ready for Remote Connections"
init
halt
flash erase_sector wch_riscv 0 last
program ./build/ch32v307_template_FLASH.hex
verify_image ./build/ch32v307_template_FLASH.hex
wlink_reset_resume
exit

View File

@ -0,0 +1,5 @@
set(CMAKE_SYSTEM_NAME Generic)
set(CMAKE_C_COMPILER riscv64-unknown-elf-gcc)
set(CMAKE_CXX_COMPILER riscv64-unknown-elf-g++)
# Make CMake happy about those compilers
set(CMAKE_TRY_COMPILE_TARGET_TYPE "STATIC_LIBRARY")

View File

@ -1,7 +0,0 @@
#include <sys/stat.h>
int _fstat(int file, struct stat *st) {
st->st_mode = S_IFCHR;
return 0;
}