We’re going to investigate the BCM2835/6 interrupt process and implement an interrupt for the ARM Timer peripheral to blink the LED.
I appreciate that blinking an LED is probably starting to get boring, but small steps are the way to learn a big system, and learning how to handle interrupts will be enough of a learning curve without having to change what we’re doing at the same time.
Please note, that on the ARM documentation website all you’ll see is a reference to ARMv6-M or ARMv5.
ARMv6-M is for the Cortex-M range of processors which are designed to be more heavily embedded than the application processors (The Cortex-A range), so make sure you get the ARMv5 document which also covers the ARMv6 architecture (which is what the ARM1176JZF-S is).
The note above the table in the document reads: NOTE: The normal vector at address 0x00000014 and the high vector at address 0x FFFF0014 are reserved for future expansion.
Vectors are only 4-bytes (one 32-bit instruction) apart.
Update Star has been tested to meet all of the technical requirements to be compatible with Windows 10, 8.1, Windows 8, Windows 7, Windows Vista, Windows Server 2003, 2008, and Windows XP, 32 bit and 64 bit editions.
For the Raspberry-pi 2 which uses the Cortex A7 processor the same table can be found in the ARMv7 reference manual in section B1.8.1 (Table B1-3). As you can see, as we’ve been discussing, the reset vector is at address 0.
The next vector is for us to deal with an undefined instruction exception, an unlikely scenario, but something we can at least trap and debug at some point.
Otherwise you can grab the zip of the latest code instead – but you won’t be able to get fixes when they’re released! In terms of the ARM processor we’re using an interrupt is simply a type of exception.
😉 Some of the code that’s specific to the tutorial and differs from the last tutorial will be discussed here. An exception in the processor causes the PC (Program Counter) to be set to a pre-defined value.Update Star includes support for many languages such as English, German, French, Italian, Hungarian, Russian and many more.