Commit Graph

5 Commits

Author SHA1 Message Date
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 0bf4f487c7 VxKernel 0.6.0-20 : Add POWER management
@add
<> driver/mpu/sh/sh7305
  | [power] add power hardware module
<> driver/screen
  | [r61524] add triple buffering (DMA)

@update
<> driver/mpu/sh/sh7305
  | [dma] proper power handling
  | [intc] proper power handling
  | [keysc] proper power handling
  | [intc] proper power handling
  | [tmu] proper power handling
  | [tmu] isolate FPS API
  | [tmu] isolate profiling API

@fix
<> driver/mpu/sh/sh7305
  | [tmu] proper expose FPS functions
2022-08-24 10:17:50 +02:00
Yann MAGNIN 7e01fb8444 VxKernel 0.6.0-18 : Add Vhex indirect call + prepare DMA driver
@add
<> vhex/defs/call
  | add common `vhex_call_t` which allow indirect call invocation
  | add default helper macros to generate internal struct
  | add default helper macros to involve manually the vhex call
<> vhex/dma
  | add DMA user-level API
  | add DMA user-level types
  | add DNA driver-level interface
<> vhex/driver/mpu/sh/sh7305
  | [dma] add hardware definition
  | [dma] prepare DMA driver definition (WIP)
  | [dma] add DMA driver declaration (WIP)
  | [dma] prepare DMA primitives     (WIP)
<> src/dma
  | wrap the DMA driver
  | expose the DMA user-level API
  | expose the DMA module

@update
<> board/fxcg50/fxcg50.ld
  | expose the two VRAM for the future frame render which use the triple
     buffering. For now, this method add ~347ko in the generated ELF, but it's a
     temporary.
<> driver/mpu/sh/sh7305
  | [intc] rename some kernel-level function
  | [intc] use the new vhex call mechanism instead of timer-specific indirect call
  | [intc] update the generic interrupt handler installation
  | [intc] isolate the generic interrupt handler
  | [rtc] use the new vhex call mechanism instead of rtc-specific indirect call
  | [keysc] use the new vhex call mechanism

@fix
<> src
  | [keyboard] fix key_t type definition
  | [keyboard] fix the driver priority
  | [timer] fix the driver priority
2022-08-11 19:21:02 +02:00
Yann MAGNIN 752757e0ef VxKernel 0.6.0-13 : Add keyboard API + update timer API
@add
<> include/vhex/driver/mpu/sh/sh7305/keysc
  | add internal driver primitives
<> include/vhex/driver/mpu/sh/sh7305/tmu
  | add internal driver primitives
<> include/vhex/keyboard
  | add getkey* (high-level) API
  | add key event API
  | add key status API
  | add keycode information
  | add keyboard driver interface

@update
<> include/vhex/driver
  | add KEYBOARD driver flags
<> include/vhex/keyboard
  | isolate each part of the keyboard module
  | link the keycache part with the driver-provided keycache information
<> src/drivers/mpu/sh/sh7305/keysc
  | use the new keycache API (high-level interrupt handler)
  | update keycache API
  | link the new API in the driver device
<> src/drivers/mpu/sh/sh7305/tmu
  | add timer reservation (WIP)
  | use a "reservation" cache to known which timer is free instead of hardware
  | rename internal functions
<> src/module/display
  | Now, by default, DSTACK_CALL() create a pointer on a dstack_call_t
  | use dsubimage dstack primitive in dimage()

@fix
<> board/fxcg50/fxcg50.ld
  | remove the IL-memory and allow only the X-memory area. This because the
      bootloader uses the IL-memory for DMA transfer and other "low-level"
      routine used by Gint.
      Moreover, I originally try to move each "display-driver" in this place,
      but after some profiling and tests, the dclear()/dupdate() combo went from
      9155us up to 33250us (for many reason). So, I keep this area free, but I
      moved-back from RAM display routines.
<> board/fxcg50/initialize
  | remove "section" copy. This role has been delegated to the bootload (vxBoot)
      because, in the final ELF file generated by GCC, many relocalization
      information for the IL/X memory has been set and the bootloader cannot
      performs general relocalization.
      So, all "special section/memory" displacement has been moved in the
      bootloader and we don't have to worrying about the section copy.
<> src/drivers/mpu/sh/sh7305/tmu
  | fix delay calculation in timer reload primitive
  | disable interruption for profiling timer
<> src/module/dislay/
  | fix shader index used during the dstack_render()
  | fix many errors in dimage() shadow render (WIP)
2022-06-24 15:33:36 +02:00
Yann MAGNIN cb4af4f7bb VxKernel 0.6.0-5 : Clock driver + TMU/ETMU driver (WIP) + timer API
@add
<> include/vhex/driver/mpu/sh/sh7305/cpg
  | add hardware description
  | add kernel-level API to fetch clocks information
<> include/vhex/driver/mpu/sh/sh7305/tmu
  | add hardware description
<> include/vhex/timer
  | add timer API
  | add timer callback definition
  | add timer types information
<> src/drivers/mpu/sh/sh7305/cpg
  | add CPG driver declaration
  | add CPG driver kernel-API
  | prepare "real" driver installation hook
<> src/drivers/mpu/sh/sh7305/cpu/sleep
  | add CPU sleep primitives
<> src/drivers/mpu/sh/sh7305/intc/inth_callback
  | add special interrupt handler callback manager
<> src/drivers/mpu/sh/sh7305/tmu
  | add TMU interrupt handlers
  | add ETMU interrupt handlers
  | add TMU/ETMU driver-level API code
<> src/modules/timer
  | add timer API code (simply a binding to the TMU/ETMU driver)

@update
<> include/vhex/driver
  | add TIMER flags information
<> include/vhex/driver/cpu
  | add sleep primitive
<> include/vhex/driver/mpu/sh/sh7305/intc
  | return the address where the handle has been installed
<> src/driver/screen/r61524
  | perform the "sprite" VRAM merging before sending all pixel on screen

@fix
<> include/vhex/hardware
  | add workaround to allow this header to be included in ASM source file (.S)
<> src/modules/display/text/dfont
  | fix line discipline with \n
  | fix string size when a bad character is detected
2022-06-13 21:15:36 +02:00