diff --git a/BSP/Debug/debug.c b/BSP/Debug/debug.c index 82c3df5..b46422e 100644 --- a/BSP/Debug/debug.c +++ b/BSP/Debug/debug.c @@ -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; } - +*/ diff --git a/CMakeLists.txt b/CMakeLists.txt index a09b683..0832ac7 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -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" diff --git a/program.cfg b/program.cfg new file mode 100644 index 0000000..552cfb3 --- /dev/null +++ b/program.cfg @@ -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 \ No newline at end of file diff --git a/riscv64-unknown-elf.cmake b/riscv64-unknown-elf.cmake new file mode 100644 index 0000000..58ac87e --- /dev/null +++ b/riscv64-unknown-elf.cmake @@ -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") \ No newline at end of file diff --git a/src/syscalls.c b/src/syscalls.c deleted file mode 100644 index 977632e..0000000 --- a/src/syscalls.c +++ /dev/null @@ -1,7 +0,0 @@ -#include - -int _fstat(int file, struct stat *st) { - st->st_mode = S_IFCHR; - - return 0; -} \ No newline at end of file