This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
runtime_library:os:start [2020/12/10 18:52] – [Interrupts] ursgraf | runtime_library:os:start [2021/12/27 15:27] (current) – [System Sanity Checks] ursgraf | ||
---|---|---|---|
Line 2: | Line 2: | ||
You can program the processor either using interrupts in a foreground/ | You can program the processor either using interrupts in a foreground/ | ||
When choosing an operating system you can select a simple, robust and very efficient non-preemtive tasking system (class '' | When choosing an operating system you can select a simple, robust and very efficient non-preemtive tasking system (class '' | ||
- | The minimum task period is limited to one millisecond. For fast control applications you can use the decrementer on the PowerPC architecture as a fast running timer and produce exceptions at a very high frequency. | + | The minimum task period is limited to one millisecond. For fast control applications you can use the decrementer on the PowerPC architecture |
The basic modules are all written in Java. All the necessary hardware resources can be accessed through special built-in methods. | The basic modules are all written in Java. All the necessary hardware resources can be accessed through special built-in methods. | ||
Line 14: | Line 14: | ||
<code java> | <code java> | ||
- | public class TestTask extends Task{ | + | public class TestTask extends Task { |
public void action () { | public void action () { | ||
Line 29: | Line 29: | ||
===== Interrupts ===== | ===== Interrupts ===== | ||
- | A processor might have some sort of a hardware priorization scheme when dealing with interrupts. Some of the potential internal and external interrupt sources use vectoring or get vectored to the same memory location and are dealt with by a software scheduler. You have to assign a priority level to each of the interrupts. A low level means a high priority. In order to achieve highest efficiency, interrupt nesting is switched off. That makes it necessary to write small interrupt service routines. | + | A processor might have some sort of a hardware priorization scheme when dealing with interrupts. Some of the potential internal and external interrupt sources use vectoring or get vectored to the same memory location and are dealt with by a software scheduler. You have to assign a priority level to each of the interrupts. A low level means a high priority. In order to achieve highest efficiency, interrupt nesting is switched off. That makes it necessary to write small interrupt service routines. Further, never allocate objects within an interrupt routine or in a method called by an interrupt routine, because the heap allocation methods are not thread safe for efficiency reasons. |
==== Interrupts in the ARM Architecture ==== | ==== Interrupts in the ARM Architecture ==== | ||
=== Zynq7000 Interrupts === | === Zynq7000 Interrupts === | ||
A Zynq7000 processor has private peripheral and shared peripheral interrupts and assigns each peripheral a interrupt number, see the [[https:// | A Zynq7000 processor has private peripheral and shared peripheral interrupts and assigns each peripheral a interrupt number, see the [[https:// | ||
+ | |||
<code java> | <code java> | ||
public class IntTest extends IrqInterrupt{ | public class IntTest extends IrqInterrupt{ | ||
Line 48: | Line 49: | ||
} | } | ||
</ | </ | ||
+ | |||
==== Interrupts in the PowerPC Architecture ==== | ==== Interrupts in the PowerPC Architecture ==== | ||
=== Internal Interrupts === | === Internal Interrupts === | ||
Line 125: | Line 127: | ||
=====System Sanity Checks ===== | =====System Sanity Checks ===== | ||
- | | + | |
- | | + | |