From c7baead8b31f562402183b00bc41400d967602bf Mon Sep 17 00:00:00 2001 From: Yann MAGNIN Date: Sat, 14 Jan 2023 14:56:10 +0100 Subject: [PATCH] vxkernel - v0.6.0-28 : update vxSDK integration + "on-the-fly" kernel sources fix *update* > [boards] | [fxcg50] update board-specific header path > [scripts/core] | [cmake] proper support toolchain indication (vxSDK integration) > [vxsdk.toml] | disable verbose per default | update exported flags (WIP) | update linker script dependency for fxcg50 (WIP) *fix* > [kernel/src] | missing return values > [vxsdk.toml] | force expose libmath for SDL2 | fix ENV variable name for linker script --- CMakeLists.txt | 2 +- boards/fxcg50/src/hardware.c | 2 +- kernel/src/drivers/mpu/sh/sh7305/dma/dma.c | 2 ++ kernel/src/drivers/mpu/sh/sh7305/intc/intc.c | 2 ++ .../src/drivers/mpu/sh/sh7305/intc/inth_callback.S | 2 +- kernel/src/drivers/mpu/sh/sh7305/keysc/keycache.c | 2 ++ kernel/src/drivers/mpu/sh/sh7305/tmu/profiling.c | 1 + kernel/src/drivers/mpu/sh/sh7305/tmu/tmu.c | 1 + kernel/src/drivers/screen/R61524/r61524.c | 2 +- kernel/src/modules/fs/close.c | 1 + kernel/src/modules/fs/fugue/close.c | 1 + kernel/src/modules/fs/fugue/lseek.c | 1 + kernel/src/modules/fs/fugue/read.c | 1 + kernel/src/modules/fs/fugue/write.c | 1 + kernel/src/modules/fs/lseek.c | 1 + kernel/src/modules/fs/open.c | 1 + scripts/core/cmake.py | 5 ++++- vxsdk.toml | 12 +++++++++--- 18 files changed, 32 insertions(+), 8 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 785f820..efad471 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -76,7 +76,7 @@ endforeach() file(GLOB dir_src kernel/src/*.c kernel/src/*.S kernel/src/*.s) list(APPEND VXKERNEL_SRC_TARGETS ${dir_src}) -list(APPEND VXKERNEL_INC_TARGETS kernel/include) +list(APPEND VXKERNEL_INC_TARGETS kernel/include ./) if(EXISTS ${board_prefix}/include) list(APPEND VXKERNEL_INC_TARGETS ${board_prefix}/include) endif() diff --git a/boards/fxcg50/src/hardware.c b/boards/fxcg50/src/hardware.c index 95e343a..c2be0a2 100644 --- a/boards/fxcg50/src/hardware.c +++ b/boards/fxcg50/src/hardware.c @@ -3,7 +3,7 @@ //--- #include "vhex/driver/mpu/sh/sh7305/pfc.h" #include "vhex/driver/mmu.h" -#include "board/fxcg50/hardware.h" +#include "boards/fxcg50/include/hardware.h" #include "vhex/hardware.h" diff --git a/kernel/src/drivers/mpu/sh/sh7305/dma/dma.c b/kernel/src/drivers/mpu/sh/sh7305/dma/dma.c index 15e8db8..2ff9e3a 100644 --- a/kernel/src/drivers/mpu/sh/sh7305/dma/dma.c +++ b/kernel/src/drivers/mpu/sh/sh7305/dma/dma.c @@ -129,6 +129,7 @@ static sh7305_dma_channel_t *sh7305_dma_channel_reserve(void) return ch; } +#if 0 /* sh7305_dma_channel_release() : release DMA channel */ static int sh7305_dma_channel_release(sh7305_dma_channel_t * ch, int atomic) { @@ -138,6 +139,7 @@ static int sh7305_dma_channel_release(sh7305_dma_channel_t * ch, int atomic) ch->id.INVALID = 1; return 0; } +#endif /* sh7305_dma_channel_find() : find a channel using the ID */ sh7305_dma_channel_t *sh7305_dma_channel_find(sh7305_dma_id_t id) diff --git a/kernel/src/drivers/mpu/sh/sh7305/intc/intc.c b/kernel/src/drivers/mpu/sh/sh7305/intc/intc.c index 823924b..ceaa8a9 100644 --- a/kernel/src/drivers/mpu/sh/sh7305/intc/intc.c +++ b/kernel/src/drivers/mpu/sh/sh7305/intc/intc.c @@ -145,6 +145,7 @@ void *sh7305_intc_install_inth_generic(int event_code, vhex_call_t callback) // hardware configuration call //--- +#if 0 static bool __intc_hpowered(void) { return (SH7305_POWER.MSTPCR0.INTC == 0); @@ -161,6 +162,7 @@ static int __intc_hpoweroff(void) SH7305_POWER.MSTPCR0.INTC = 1; return 0; } +#endif /* __intc_configure() : configure the Interrupt Controller diff --git a/kernel/src/drivers/mpu/sh/sh7305/intc/inth_callback.S b/kernel/src/drivers/mpu/sh/sh7305/intc/inth_callback.S index bc47e00..e05b453 100644 --- a/kernel/src/drivers/mpu/sh/sh7305/intc/inth_callback.S +++ b/kernel/src/drivers/mpu/sh/sh7305/intc/inth_callback.S @@ -1,6 +1,6 @@ #define ASM_SOURCE #include -#include +#include "boards/fxcg50/include/hardware.h" .text .global _sh7305_inth_callback diff --git a/kernel/src/drivers/mpu/sh/sh7305/keysc/keycache.c b/kernel/src/drivers/mpu/sh/sh7305/keysc/keycache.c index 159d66d..0c1379d 100644 --- a/kernel/src/drivers/mpu/sh/sh7305/keysc/keycache.c +++ b/kernel/src/drivers/mpu/sh/sh7305/keysc/keycache.c @@ -54,6 +54,7 @@ int sh7305_keycache_init(void) ) ); sh7305_tmu_start(keyinfo.timer.id); + return 0; } /* sh7305_keycache_quit() : quit the keycache */ @@ -63,6 +64,7 @@ int sh7305_keycache_quit(void) free(keyinfo.queue.list); keyinfo.queue.idx = -1; keyinfo.queue.nb_evt_max = 0; + return 0; } diff --git a/kernel/src/drivers/mpu/sh/sh7305/tmu/profiling.c b/kernel/src/drivers/mpu/sh/sh7305/tmu/profiling.c index 0e0f3fe..cea26ec 100644 --- a/kernel/src/drivers/mpu/sh/sh7305/tmu/profiling.c +++ b/kernel/src/drivers/mpu/sh/sh7305/tmu/profiling.c @@ -131,4 +131,5 @@ int sh7305_tmu_prof_quit(timer_prof_t *prof) tmu_prof_counter = 0; } cpu_atomic_end(); + return 0; } diff --git a/kernel/src/drivers/mpu/sh/sh7305/tmu/tmu.c b/kernel/src/drivers/mpu/sh/sh7305/tmu/tmu.c index 72ead5b..4f4b7f8 100644 --- a/kernel/src/drivers/mpu/sh/sh7305/tmu/tmu.c +++ b/kernel/src/drivers/mpu/sh/sh7305/tmu/tmu.c @@ -284,6 +284,7 @@ int sh7305_tmu_wait(tid_t id) etmu_t *T = &ETMU[id-3]; while(T->TSTR) if(T->TCR.UNIE) cpu_sleep(); } + return 0; } /* sh7305_tmu_spinwait(): Start a timer and actively wait for UNF */ diff --git a/kernel/src/drivers/screen/R61524/r61524.c b/kernel/src/drivers/screen/R61524/r61524.c index 1115332..8e60943 100644 --- a/kernel/src/drivers/screen/R61524/r61524.c +++ b/kernel/src/drivers/screen/R61524/r61524.c @@ -104,8 +104,8 @@ VALIGNED(4) VWEAK int r61524_frame_frag_send(dsurface_t *surface) for (int i = 0; i < size; ++i) { r61524_write(yram[i]); } - return (0); #endif + return (0); } VALIGNED(4) int r61524_frame_end(dsurface_t *surface) diff --git a/kernel/src/modules/fs/close.c b/kernel/src/modules/fs/close.c index 21ceb4b..4e30255 100644 --- a/kernel/src/modules/fs/close.c +++ b/kernel/src/modules/fs/close.c @@ -5,6 +5,7 @@ int close(int fd) { (void)fd; + return -1; #if 0 void *data; diff --git a/kernel/src/modules/fs/fugue/close.c b/kernel/src/modules/fs/fugue/close.c index 7602aa6..c26e263 100644 --- a/kernel/src/modules/fs/fugue/close.c +++ b/kernel/src/modules/fs/fugue/close.c @@ -3,4 +3,5 @@ int fugue_close(void *data) { (void)data; + return -1; } diff --git a/kernel/src/modules/fs/fugue/lseek.c b/kernel/src/modules/fs/fugue/lseek.c index 9fdd25a..1d200a2 100644 --- a/kernel/src/modules/fs/fugue/lseek.c +++ b/kernel/src/modules/fs/fugue/lseek.c @@ -5,4 +5,5 @@ off_t fugue_lseek(void *data, off_t offset, int whence) (void)data; (void)offset; (void)whence; + return -1; } diff --git a/kernel/src/modules/fs/fugue/read.c b/kernel/src/modules/fs/fugue/read.c index 33c41be..84aa6c5 100644 --- a/kernel/src/modules/fs/fugue/read.c +++ b/kernel/src/modules/fs/fugue/read.c @@ -5,4 +5,5 @@ ssize_t fugue_write(void *data, const void *buf, size_t size) (void)data; (void)buf; (void)size; + return -1; } diff --git a/kernel/src/modules/fs/fugue/write.c b/kernel/src/modules/fs/fugue/write.c index 2d3a70b..5e73d13 100644 --- a/kernel/src/modules/fs/fugue/write.c +++ b/kernel/src/modules/fs/fugue/write.c @@ -5,4 +5,5 @@ ssize_t fugue_read(void *data, void *buf, size_t size) (void)data; (void)buf; (void)size; + return -1; } diff --git a/kernel/src/modules/fs/lseek.c b/kernel/src/modules/fs/lseek.c index 36279f6..eb810c5 100644 --- a/kernel/src/modules/fs/lseek.c +++ b/kernel/src/modules/fs/lseek.c @@ -7,6 +7,7 @@ off_t lseek(int fd, off_t offset, int whence) (void)fd; (void)offset; (void)whence; + return -1; #if 0 void *data; diff --git a/kernel/src/modules/fs/open.c b/kernel/src/modules/fs/open.c index 4babb1e..886face 100644 --- a/kernel/src/modules/fs/open.c +++ b/kernel/src/modules/fs/open.c @@ -8,6 +8,7 @@ int open(const char *pathname, int flags, ...) { (void)pathname; (void)flags; + return -1; #if 0 va_list ap; void *data; diff --git a/scripts/core/cmake.py b/scripts/core/cmake.py index 8cbcf2f..6cb28d8 100644 --- a/scripts/core/cmake.py +++ b/scripts/core/cmake.py @@ -18,7 +18,10 @@ __all__ = [ def cmake_configure(prefix_build, prefix_src): """ Abstract cmake configuration """ - shell_cmd = f"cmake -B {prefix_build} -S {prefix_src}" + toolchain_flag = '' + if toolchain_path := os.environ.get('VXSDK_HOOK_CMAKE_TOOLCHAIN'): + toolchain_flag = f"-DCMAKE_TOOLCHAIN_FILE={toolchain_path}" + shell_cmd = f"cmake {toolchain_flag} -B {prefix_build} -S {prefix_src}" return subprocess.run(shell_cmd.split(), check=False).returncode def cmake_build(prefix_build, verbose): diff --git a/vxsdk.toml b/vxsdk.toml index 529e0b9..7dc6da6 100644 --- a/vxsdk.toml +++ b/vxsdk.toml @@ -8,7 +8,7 @@ target = [ [build] configure = './vxdev configure' -build = './vxdev build --verbose' +build = './vxdev build' install = './vxdev install' uninstall = './vxdev uninstall' @@ -32,9 +32,14 @@ assets_prefix = [ ] VXSDK_PUBLIC_BUILD_LIBS = [ '@COMMON@', + '-Wl,--whole-archive', '-lvxkernel', + '-Wl,--no-whole-archive', '@sh-elf-vhex@' ] + VXSDK_PUBLIC_LINKER_SCRIPT = [ + 'fxcg50.ld' + ] [sdl2] [sdl2.env] @@ -48,8 +53,9 @@ assets_prefix = [ '-Wl,--whole-archive', '-lvxkernel', '-Wl,--no-whole-archive', - '-lSDL2' + '-lSDL2', + '-lm' ] - VXSDK_LINKER_SCRIPT = [ + VXSDK_PUBLIC_LINKER_SCRIPT = [ 'sdl2.ld' ]