Hello,
this is my first port in absolute in the forum, and I am a beginner in ARM developing.
I did read the ARM GICv3-v4 overview and the ARM GICv3-v4 software overview, together with the 900pages Generic Interrupt ControllerArchitecture Specification v3-4.
However, I have plenty of difficulties in implementing a simple project from scratch:
1- A gicv3
+
2- A simple timer which assert a IRQ each second.
Basically, the reading that I gave you doesn't give me a starting point/an example.
The only example I have is this one: https://github.com/NienfengYao/armv8-bare-metal but it is a GICv2! I am trying to convert it in GICv3 but I am failing to capture the IRQ..... this example runs in QEMU, virt, aarch64, cortexA-57.
Basically, I have some questions:
1- Do you have a coding example of a gicv3 I can use as a reference? The guides are not enough for me....
2- The Git example with GICv2 does not configure the redistributor.... only GICC and GICD, but not GICR. Is it normal?
3- In my process of conversion from GICv2 to GICv3, I have to write the code to enable the IRQs. So I set the REG_GIC_GICD_ISENABLER register for each IRQ number and I set the bit 0 of GIC_GICC_IGRPEN1_EL1 register. Do I miss something? I can't find nowhere a tutorial "how to enable IRQs in GICv3"....
Thanks for your help
First of all, I would suggest reading following document for starters,
https://developer.arm.com/documentation/dai0492/latest/
https://developer.arm.com/documentation/198123/latest
Secondly, there are some good examples in arm DS installed folder, you could download arm DS here,
https://developer.arm.com/tools-and-software/embedded/arm-development-studio
And then you can find the example here
C:\Program Files\ARM\Development Studio 2020.1\examples\Bare-metal_examples_Armv8.zip\startup_Armv8-A_AArch64_GCC\