| 9 | | 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. |
| 10 | | |
| 11 | | Each driver xxx_driver define two low-level functions ''_xxx_get_register()'' and ''_xxx_set_register()'' |
| 12 | | 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: |
| 13 | | |
| 14 | | * '''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. |
| 15 | | |
| 16 | | * '''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. |
| 17 | | |
| 18 | | The X_IO, Y_IO, and PERI_CLUSTER_INCREMENT variables must be defined in the ''hard_config.h" file. |
| 19 | | |
| 20 | | === [wiki:bdv_driver BDV (Block Device controller)] |
| 21 | | |
| 22 | | === [wiki:cma_driver CMA (Chained Buffer DMA controller)] |
| 23 | | |
| 24 | | === [wiki:dma_driver DMA (Multi-Channels DMA controller)] |
| 25 | | |
| 26 | | === [wiki:fbf_driver FBF (Frame Buffer controller)] |
| 27 | | |
| 28 | | === [wiki:hba_driver HBA (AHCI Disk controller)] |
| 29 | | |
| 30 | | === [wiki:icu_driver ICU (Interrupt controller)] |
| 31 | | |
| 32 | | === [wiki:iob_driver IOB (I/O Bridge controller)] |
| 33 | | |
| 34 | | === [wiki:ioc_driver IOC (Generic I/O controller)] |
| 35 | | |
| 36 | | === [wiki:mmc_driver MMC (Memory Cache controller)] |
| 37 | | |
| 38 | | === [wiki:nic_driver NIC (Gigabit Ethernet Network controller)] |
| 39 | | |
| 40 | | === [wiki:pic_driver PIC (External Peripherals Interrupt controller)] |
| 41 | | |
| 42 | | === [wiki:rdk_driver RDK (RamDisk)] |
| 43 | | |
| 44 | | === [wiki:sim_driver SIM (Monitor controller)] |
| 45 | | |
| 46 | | === [wiki:sdc_driver SDC (SDC Disk controller)] |
| 47 | | |
| 48 | | === [wiki:tim_driver TIM (Multi Timers controller)] |
| 49 | | |
| 50 | | === [wiki:tty_driver TTY (Multi Terminals TTY controller)] |
| 51 | | |
| 52 | | === [wiki:xcu_driver XCU (Extended Interrupt controller)] |
| 53 | | |
| 54 | | == __C) Shared kernel functions__ == |
| | 9 | == __C) [wiki:common_functions Shared kernel functions]__ == |