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]__ == |