From: http://blog.csdn.net/qdlovecsj/article/details/6856641
Iii. Interrupt prompt: The Super Terminal prompts dummy_isr error, interrupt number: 5, intmsk = 0 xffffdf
Someone asked for help in the Forum and posted a Post saying that MMU should be added. In this case, the main. c file contains the header file # include "MMU. H" and
MMU. C and MMU. H is added to the project, and then mmu_init () is called in the main function. Initialization of MMU seems to solve the problem, but I don't know why to do it.
During simulation, your program runs in the SDRAM, that is, 0x3000_0000.
Your interrupt vector table has been placed at 0x3000_0000 through the simulator,
MMU is enabled to map the value at 0x3000_0000 address to 0x0,
Because your interrupt vector table is saved at the beginning of 0x0, the first time when the interrupt occurs
The CPU will go to 0x0 to check the interrupt vector table to see what was interrupted, whether it was reset, IRQ, Fiq, or data fetch or command fetch.
If the key is an IRQ interrupt, the CPU will go to the start of IRQ to find your interrupt service function. At this time, it is time for your interrupt service function to run.
So if you do not open MMU, the service will not be interrupted.
Another method is to write a simple applet to Block 0 in nandflash. This applet must contain the interrupt vector table.
When you power on, Block 0 is copied to a place called stepping stone by the CPU, and its address is also 0.
At this time, you can simulate your program. If you do not open MMU, you can also find the interrupt service function, because you have an interrupt vector table. 3. About the interrupt prompt: The Super Terminal prompts dummy_isr error, interrupt number: 5, intmsk = 0 xffffffdf
Someone asked for help in the Forum and posted a Post saying that MMU should be added. In this case, the main. c file contains the header file # include "MMU. H" and
MMU. C and MMU. H is added to the project, and then mmu_init () is called in the main function. Initialization of MMU seems to solve the problem, but I don't know why to do it.
During simulation, your program runs in the SDRAM, that is, 0x3000_0000.
Your interrupt vector table has been placed at 0x3000_0000 through the simulator,
MMU is enabled to map the value at 0x3000_0000 address to 0x0,
Because your interrupt vector table is saved at the beginning of 0x0, the first time when the interrupt occurs
The CPU will go to 0x0 to check the interrupt vector table to see what was interrupted, whether it was reset, IRQ, Fiq, or data fetch or command fetch.
If the key is an IRQ interrupt, the CPU will go to the start of IRQ to find your interrupt service function. At this time, it is time for your interrupt service function to run.
So if you do not open MMU, the service will not be interrupted.
Another method is to write a simple applet to Block 0 in nandflash. This applet must contain the interrupt vector table.
When you power on, Block 0 is copied to a place called stepping stone by the CPU, and its address is also 0.
At this time, you can simulate your program and find the interrupt service function without opening MMU, because you have an interrupt vector table.