Commit graph

5 commits

Author SHA1 Message Date
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 70d31c5268 VxKernel 0.6.0-15 : Add FPS API
@add
<> include/timer
  | add FPS primitives
  | update driver interface (link FPS primitives)
<> src/driver/mpu/sh/sh7305/tmu
  | add hardware-specific primitive for FPS handling
  | add CPU atomic security

@update
<> src/display/image/shader/shadow
  | finish approximately the algorithm
  | support X/Y offset
<> src/timer
  | isolate timer API, profiling API and FPS API

@fix
<> include/timer/types
  | fix special attribute declaration
  | fix types definition
2022-06-25 16:48:44 +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 392925ac3e VxKernel 0.6.0-8 : Add profiling primitives in timer API
@add
<> include/vhex/timer
  | add profiling API
  | add the profiling primitives in driver interface
  | add profiling type
<> src/driver/mpu/sh/sh7305/tmu
  | add profiling primitives
  | add profiling information in driver definition
<> src/module/timer
  | add profiling driver binding
2022-06-15 12:03:21 +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