Commit Graph

14 Commits

Author SHA1 Message Date
Yann MAGNIN 7713e5e059 vxkernel - v0.7.0 : SDL2 and FXCG90 support
*notes*
> full project architecture update
> support the new vxSDK integration
> support 64bits architectures
> support SLD2 "fake" board
> add DMA driver and API
> add Timer driver and API
> update configuration script (now called "vxdev")
> rework Keyboard API
> rework scripts isolation
> many fixes
> many "early-optimisations"
> explicit neovim ALE linter configuration
2023-01-18 20:20:49 +01:00
Yann MAGNIN d59a8c986f vxkernel - v0.6.0-31 : fix vxdev + fix FPS synchronization API + disable DMA
*fix*
> [vxdev]
  | proper send script arguments
  | proper boards scanning
> [src/driver/screen/r61524]
  | disable double buffering per default
> [FPS]
  | fix FPS sync
2023-01-17 22:13:43 +01:00
Yann MAGNIN d656a04385 vxkernel - v0.6.0-29 : fix fxcg50 support
*fix*
> [board/fxcg50]
  | [fxcg50.ld] add ".dynamic" section support
> [kernel/src/module/kalloc]
  | [area_vhex] force first alloc block to NULL
> [vxsdk.toml]
  | [fxcg50] force little endian
  | [fxcg50] force SH4A with no-FPU instruction generation
  | [fxcg50] add missing lib dependencies (libgcc and libc)
  | [fxcg50] proper export linker flags for GCC
  | [sdl2] proper export linker script
2023-01-15 18:16:48 +01:00
Yann MAGNIN c7baead8b3 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
2023-01-14 14:57:20 +01:00
Yann MAGNIN 735c8b4103 vxkernel 0.6.0-27 : Fix assets generation
@update
> [CMakeLists.txt]
  ¦ support extra file installation request (like linker script)
> [boards]
  ¦ [sdl2] indicate that the sdl2.ld file (linker script) should be installed
> [scripts/core/board]
  ¦ support extra file installation indication
  ¦ remove useless toolchain information (handled by the vxSDK)
> [vxsdk.toml]
  ¦ indicate converter asset prefix
  ¦ use the new ENV handling
  ¦ indicate SDL2 linker script
  ¦ indicate SLD2 correct flags information
2022-12-10 13:30:44 +01:00
Yann MAGNIN 20536b601b vxkernel 0.6.0-26 : fonctional CMake build system! (candidate)
@add
> [vxdev] && [scripts]
  ¦ refacto the configuration script, now handle all compilation step
  ¦ proper cmake abstraction
  ¦ proper isolation between "core" and "command"

@update
> [CMakeLists.txt]
  ¦ support extra C flags configuration
  ¦ support installation request
  ¦ proper remove useless explicit path information
> [boards]
  ¦ [sdl2] move "toolchain" information in the vxsdk.toml (handled by vxSDK)
  ¦ [fxcg50] move "toolchain" information in the vxsdk.toml (handled by vxSDK)
> [vxsdk.toml]
  ¦ proper use of the new ENV configuration protocol
  ¦ isolate toolchain information of each board

@fix
> [.gitignore]
  ¦ use explicit exclusion instead of explicit inclusion
  ¦ add missing kernel source files (!)
2022-12-03 16:50:02 +01:00
Yann MAGNIN 693d9b0d8f vxkernel 0.6.0-25 : switch to CMake ! (WIP)
@note
  This commit doesn't provide the complet CMake support, because many
  improvements need to be done in the vxSDK. You can only build the SDL2 board
  by hardcoding environment variables (the `vxsdk.toml file is not fonctional`)
  The "shared" forms of the library will be handled as a Virtual Dynamic Shared
  Object (vDSO) and will be common for all board. This is not supported yet.

@add
> [CMakeLists.txt]
  ¦ support project architecture
  ¦ support project configuration file
  ¦ support SDL2 board (static-only)
> [scripts]
  ¦ provide proper API
  ¦ proper isolate the board manipulation
  ¦ proper isolate the "library format" selection (static or vdso)
  ¦ generate a CMake file instead of Makefile one

@update
> [common]
  ¦ rename 'board/' to 'boards/'
  ¦ move 'assets/', 'src/' and 'include' in 'kernel/'
  ¦ remove old makefile
  ¦ in 'boards/<board-name>' proper isolate :
    ¦ board description : `board.toml`
    ¦ board file to install : e.i `fxcg50.ld`
    ¦ board source file : `src`
    ¦ board include : `include`
> [configure]
  ¦ proper refacto the script
  ¦ proper isolation between vxSDK use and user

@fix
> [kernel/src]
  ¦ [drivers/common/sdl2]
    ¦ [keyboard] remove unused object
    ¦ [keyboard] proper table size declaration
    ¦ [sdl2] fix return value
    ¦ [timer] fix return value
  ¦ [modules]
    ¦ [dstack] fix return value
    ¦ [hypervisor] fix return value
2022-11-27 10:39:06 +01:00
Yann MAGNIN 2a107ad5b9 VxKernel 0.6.0-21 : Add SDL2 support (fake board) (WIP)
@add
<> board/
  | [sdl2] add fake board for the SDL2 wrapper
  | [sdl2] fake CPU atomic operation
  | [sdl2] fake hypervisor world-switch
  | [sdl2] fake kernel init
  | [sdl2] use a modified Linux linker script for adding our Vhex special sections
<> src/driver/mpu/x86/sdl2
  | add fake window driver (simple wrapper around SDL2 surface)

@update
<> vxsdk.toml
  | move board specification to the user project
  | remove the SH compiler dependency

@fix
<> board/
  | [fxcg50] move all "flags-specific" of the board in the board description file
<> src/display
  | [common] support 64-bits API!
<> src/hypervisor
  | [table] fix world initialization
<> src/timer
  | [profiling] init default structure
2022-08-25 12:51:14 +02:00
Yann MAGNIN 585254cb2e hotfix for the vxSDK 2022-08-02 14:59:03 +02:00
Yann MAGNIN d48e09cb38 VxKernel 0.6.0-14 : Update whole project architecture
@update
<> configure
  | use TOML file format instead of INI for board description
  | block configuration script if it's not involved by the vxSDK
  | comment code and write documentation (WIP)
  | allow kernel module selection
<> Makefile
  | block compilation step if it's not involved by the vxSDK
  | remove the "build/" directory creation
  | moved to the root directory of the project
<> src/modules -> src
  | moved all "kernel modules" in the root directory
  | remove "kernel/" part of the project : now linked to the interrupt controller
<> vxsdk.toml
  | change compilation steps

@fix
<> driver/mpu/sh/sh7305/intc
  | fix TLB interrupt handler freeze
  | link kernel panic (exception/TLB)
<> include/vhex/display
  | add image API by default
2022-06-25 11:26:15 +02:00
Yann MAGNIN a916120d66 VxKernel 0.6.0-1 : Rework the graphic pipeline
@add
<> board/fxcg50/fxcg50-dynamic.ld : add the "user/addin" linker script
<> include/vhex/display* : rework the graphic API/pipeline
<> include/vhex/driver/scree/r61524 : add hardware description and API
<> drivers/screen/r61524 : add r61524 driver
<> module/display/dstack : new pipeline

@update
<> board/fxcg50/board : explicitly set the DWIDTH/DHEIGHT define
<> board/fxcg50/hypervisor : API update (WIP)
<> include/vhex/driver :
   | update driver information (use bitfield instead of define and macros)
   | configure driver's primitive cannot be NULL
   | driver can embed module data (ex: r61524 embed display module primitives)
<> include/vhex/hypervisor :
   | update driver information (use bitfield instead of define and macros)
   | update world information (use bitfield instead of define and macros)
   | remove useless "restricted" keyword in prototype
<> make/Makefile : add the support of the vxSDK (0.12.0)
<> module/display/dclear  : support of the new pipeline
<> module/display/display : support of the new pipeline
<> module/display/dupdate : support of the new pipeline
<> module/hypervisor/switch : support new driver/world structure
<> module/hypervisor/table  : support new driver/world structure
<> vxsdk.toml : support of the vxSDK 0.12.0

@fix
<> drivers/mpu/sh/sh7305/cpu/cpu : mask interrupt by default (cpu_atomic_end)
2022-05-27 11:57:55 +02:00
Yann MAGNIN f851b73cba VxKernel 0.5.0 : Modules + project architecture update
@add
<> board/fxcg50/fxcg50.ld : module section
<> board/fxcg50/hypervisor : board-specific hypervisor init/quit primitives
<> board/fxcg50/kmalloc : board-specific kmalloc init/quit primitives
<> vhex/module.h : module information
<> modules/display/display.c : add "display" module
<> modules/keyboard/keyboard.c : add "keyboard" module
<> modules/hypervisor/hypervisor.c : add "hypervisor" module
<> modules/kmalloc/kmalloc.c : add "kmalloc" module

@update
<> vxsdk.toml : update the project version
<> GLOBAL : change the "src/" architecture
<> board/fxcg50/initialize.c : isolate kmalloc part
<> kernel/kernel.c : initialize all modules
2022-03-04 17:37:38 +01:00
Yann MAGNIN ef2632b5dc VxKernel 0.4.0 : Interrupt handling + KEYSC driver
@add
<> vhex/arch/sh7305/keysc.h : KEYSC module definition
<> vhex/drivers/keyboard.h : keyboard API
<> vhex/arch/sh7305/intc.h : provide hardware-specific primitive (inth install)
<> drivers/mpu/sh/sh7305/intc/exch.S : hardware-specific exception handler
<> drivers/mpu/sh/sh7305/intc/inth.S : hardware-specific interrupt handler
<> drivers/mpu/sh/sh7305/intc/tlbh.S : hardware-specific TLB exception handler
<> drivers/mpu/sh/sh7305/intc/install.c : interrupt handle installer
<> drivers/mpu/sh/sh7305/intc/intc.c : rename the exposed INTC module
<> drivers/mpu/sh/sh7305/keysc/intc.c : rename the exposed INTC module
<> drivers/mpu/sh/sh7305/intc/inth.S : rename the exposed INTC module
<> drivers/mpu/sh/sh7305/keysc/handler.c : user-level KEYSC handler
<> drivers/mpu/sh/sh7305/keysc/inth.S : kernel-level KEYSC handler
<> drivers/mpu/sh/sh7305/keysc/keysc.c : define the KEYSC module and driver
<> keyboard/keycache.c : user-level KEYSC abstraction (key event list)

@update
<> vxsdk.toml : update the project version
<> board/fxcg50/fxcg50.ld : rename interrupt section
<> hypervisor/switch.c : remove debug log
<> kernel/exch.c : common exception handler
<> kernel/tlbh.c : common TLB exception handler
<> kernel/kernel.c : add keyboard initialization

@fix
<> vhex/arch/sh7305/intc.h : fix types and names
<> render/dclear.c : remove vram definition (defined manually in the linker)
2022-03-04 11:28:32 +01:00
Yann MAGNIN df8d26ecca VxKernel 0.3.0 : Worlds
@add
<> include/vhex/arch/sh7305/cpu : add CPU hardware information
<> include/vhex/arch/sh7305/intc : add INTC hardware information
<> include/vhex/driver : add driver information
<> include/vhex/hypervisor : add hypervisor API
<> include/vhex/drivers/cpu : add CPU API
<> src/drivers/mpu/sh/sh7305/cpu/atomic : add CPU atomic primitives
<> src/drivers/mpu/sh/sh7305/cpu/cpu : add CPU driver for the hypervisor
<> src/drivers/mpu/sh/sh7305/cpu/register : add CPU registers abstraction
<> src/drivers/mpu/sh/sh7305/intc/intc : add INTC driver for the hypervisor
<> src/hypervisor/switch : add world switch
<> src/hypervisor/table : add world management

@update
<> vxsdk.toml : update the project version
<> src/kernel/kernel : hypervisor bootstrap (worlds switch between Casio / Vhex)
<> board/fxcg50/fxcg50.ld : drivers blocks

@fix
<> board/fxcg50/fxcg50.ld : generate the VRAM information (300ko -> 130ko)
<> board/fxcg50/fxcg50.ld : isolate BSS information
<> board/fxcg50/initialize : comments indentation
<> config : board and arch detection (os.walk())
<> gitignore : allow vxsdk.toml update
2022-02-13 15:01:01 +01:00