Arm Community
Site
Search
User
Site
Search
User
Arm Developer
Documentation
Learning Paths
On-Demand Videos
Groups
Arm Ambassadors
Education Hub
Open Source Software and Platforms
Research Collaboration and Enablement
Forums
AI forum
Architectures and Processors forum
Arm Development Platforms forum
Arm Development Studio forum
Automotive forum
Compilers and Libraries forum
Embedded and Microcontrollers forum
High Performance Computing (HPC) forum
Internet of Things (IoT) forum
Keil forum
Laptops and Desktops forum
Mobile, Graphics, and Gaming forum
Morello forum
Operating Systems forum
Servers and Cloud Computing forum
SoC Design and Simulation forum
SystemReady Forum
Blogs
AI blog
Announcements
Architectures and Processors blog
Automotive blog
Embedded and Microcontrollers blog
Internet of Things (IoT) blog
Laptops and Desktops blog
Mobile, Graphics, and Gaming blog
Operating Systems blog
Servers and Cloud Computing blog
SoC Design and Simulation blog
Tools, Software and IDEs blog
Support
Arm Support Services
Documentation
Downloads
Training
Arm Approved program
Arm Design Reviews
Community Help
More
Cancel
Support forums
Arm Development Studio forum
Cortex A9 FIQ and IRQ interrupts
Jump...
Cancel
Locked
Locked
Replies
4 replies
Subscribers
120 subscribers
Views
8070 views
Users
0 members are here
Options
Share
More actions
Cancel
Related
How was your experience today?
This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion
Cortex A9 FIQ and IRQ interrupts
Eugen Mandrenko
over 11 years ago
Parents
Vaibhav Malik
over 11 years ago
Note: This was originally posted on 10th September 2012 at
http://forums.arm.com
Hi
I find this relevant to my problem. I am also trying to configure GIC for my system. From the background, the system has legacy interrupt controller which is deployed in the new system with Cortex-A9 MPCore (x1).
[ Legacy Interrupt Controller ] --> [ GIC { Distributor --> CPU Interface} ] --> Processor
If I use GIC in the default configuration where both the distributor and cpu interface is kept as disabled (i.e bypass mode), I am able to see the nIRQ and nFIQ as legacy interrupts are passed successfully to the CPU and the corresponding interrupt handlers get executed successfully.
I tried configuring GIC distributor with the following sequence
[1] Disable the whole controller by disabling the distributor
[2] Clear all the pending interrupts with distributor by writing 0xffff_ffff
[3] Enable all the interrupts
[4] Reset the priority for all the interrupts by writing 0x0000_0000
[5] Interrupt targets are silent for write as CortexA9 MPCore has only one processor (as per specs)
[6] Enabling the distributor
Then I follow the following sequence to configure GIC CPU interface
[7] CPU configuration 0 & 1 for PPI, SPI and SGI level/edge sensitive
[8] Disable the CPU interface
[9] Set the higher priority as 0x1f with PRM register
[10] Enable the CPU Interface
I do this configuration in the firmware when I am sure that there is no possibility of an interrupt in the system and when the system reaches to the area where interrupt is expected, legacy interrupt controller generates an interrupt to the distributor. I can confirm from the pending interrupt register of the distributor and from the PPI status register as well. The pending status of the interrupt against ID31 is set to 1 (as per specification this is when CPU interface is not in bypass mode for legacy interrupts). The problem I am having is that the corresponding interrupt handler in the system for IRQ and FIQ never get control i.e. interrupt remains pending on the distributor, I believe.
Is there anything I have missed from the initial setup? Is there any way we can say whether the interrupt has been forwarded from the distributor to the CPU interface i.e. whether it is within distributor or CPU interface boundary?
Thanks in advance,
Vaibhav
Cancel
Vote up
0
Vote down
Cancel
Reply
Vaibhav Malik
over 11 years ago
Note: This was originally posted on 10th September 2012 at
http://forums.arm.com
Hi
I find this relevant to my problem. I am also trying to configure GIC for my system. From the background, the system has legacy interrupt controller which is deployed in the new system with Cortex-A9 MPCore (x1).
[ Legacy Interrupt Controller ] --> [ GIC { Distributor --> CPU Interface} ] --> Processor
If I use GIC in the default configuration where both the distributor and cpu interface is kept as disabled (i.e bypass mode), I am able to see the nIRQ and nFIQ as legacy interrupts are passed successfully to the CPU and the corresponding interrupt handlers get executed successfully.
I tried configuring GIC distributor with the following sequence
[1] Disable the whole controller by disabling the distributor
[2] Clear all the pending interrupts with distributor by writing 0xffff_ffff
[3] Enable all the interrupts
[4] Reset the priority for all the interrupts by writing 0x0000_0000
[5] Interrupt targets are silent for write as CortexA9 MPCore has only one processor (as per specs)
[6] Enabling the distributor
Then I follow the following sequence to configure GIC CPU interface
[7] CPU configuration 0 & 1 for PPI, SPI and SGI level/edge sensitive
[8] Disable the CPU interface
[9] Set the higher priority as 0x1f with PRM register
[10] Enable the CPU Interface
I do this configuration in the firmware when I am sure that there is no possibility of an interrupt in the system and when the system reaches to the area where interrupt is expected, legacy interrupt controller generates an interrupt to the distributor. I can confirm from the pending interrupt register of the distributor and from the PPI status register as well. The pending status of the interrupt against ID31 is set to 1 (as per specification this is when CPU interface is not in bypass mode for legacy interrupts). The problem I am having is that the corresponding interrupt handler in the system for IRQ and FIQ never get control i.e. interrupt remains pending on the distributor, I believe.
Is there anything I have missed from the initial setup? Is there any way we can say whether the interrupt has been forwarded from the distributor to the CPU interface i.e. whether it is within distributor or CPU interface boundary?
Thanks in advance,
Vaibhav
Cancel
Vote up
0
Vote down
Cancel
Children
No data