Version 4 (modified by 10 years ago) (diff) | ,
---|
GIET_VM / Peripherals Drivers
The GIET_VM supports two types of peripheral components: External peripherals are located in one single cluster (called cluster_io, and identified by the X_IO,Y_IO variables). Internal peripherals are replicated in all clusters.
Each driver xxx_driver define two low-level functions _xxx_get_register() and _xxx_set_register() to access the peripheral addressable registers. These functions are in charge to compute the peripheral registers addresses, taking into account the peripheral base address, the register index, and the cluster coordinates:
- External peripherals: All accesses use virtual addresses if the MMU (Memory management Unit) is activated, or physical addresses if it is not. In this case, the physical address is computed as pbase = SEG_XXX_BASE + cluster_io << 32.
- Internal peripherals: All accesses use virtual addresses, and the MMU must be activated. The peripheral virtual base address is computed as vbase = SEG_XXX_BASE + cluster_xy * PERI_CLUSTER_INCREMENT.
The X_IO, Y_IO, and PERI_CLUSTER_INCREMENT variables must be defined in the hard_config.h" file.
BDV (Block Device controller)