Commit Graph

5 Commits

Author SHA1 Message Date
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 7aada07d23 VxKernel 0.6.0-7 : First version of the timer API + update INTC API
@add
<> include/vhex/driver/mpu/sh/sh7305/intc
  | add interruption priority primitives
  | add all interruption configuration available
<> src/driver/mpu/sh/sh7305/intc
  | remove the install.c source file (merge its content in driver definition)
  | add proper priority primitive
  | add priority information

@update
<> include/vhex/timer
  | force TIMER_CONTINUE at 0
  | force TIMER_STOP at 1
<> src/driver/mpu/sh/sh7305/keysc
  | use the new interrupt priority primitives

@fix
<> src/driver/mpu/sh/sh7305/tmu
  | fix interrupt handler assembly crash for ETMUx
  | fix timer ID check security
  | fix timer available check
  | fix ETMUx interrupt handlers installation runtime patch
  | add timer interrupt level (enable interrupt)
<> src/modules/display/text/dtext
  | fix string cache reallocation
<> src/module/timer
  | fix driver flag check
  | fix module definition
2022-06-14 21:56:06 +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