deep

a Cross Development Platform for Java

User Tools

Site Tools


runtime_library:os:start

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
runtime_library:os:start [2020/12/10 19:03] – [System Sanity Checks] ursgrafruntime_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/background system or means of an operating system. Some classes will be linked and loaded in either case. This is true for the class ''Kernel'' for basic initializations, the class ''Heap'' for dynamic memory allocation and the classes for exception handling. \\ You can program the processor either using interrupts in a foreground/background system or means of an operating system. Some classes will be linked and loaded in either case. This is true for the class ''Kernel'' for basic initializations, the class ''Heap'' for dynamic memory allocation and the classes for exception handling. \\
 When choosing an operating system you can select a simple, robust and very efficient non-preemtive tasking system (class ''Task''). The very popular MicroC/OSII will be also available on request. When choosing an operating system you can select a simple, robust and very efficient non-preemtive tasking system (class ''Task''). The very popular MicroC/OSII will be also available on request.
-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 or on the Zynq7000 platform as a fast running timer and produce exceptions at a very high frequency.
 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 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 ====
Line 127: Line 127:
  
 =====System Sanity Checks ===== =====System Sanity Checks =====
-  The stack size is set by the configuration. In order to check, whether this size is enough at all times for a running system, you can call a target command in your kernel, e.g. //org.deepjava.runtime.mpc555.Kernel.checkStack//. \\ If the stack size was ever bigger than the maximum stack size this check fails and the signalling LED on the board starts blinking, see [[runtime_library:exceptions:start#signaling_with_led|Exceptions and Errors]]. +  The stack size is set by the configuration. In order to check, whether this size is enough at all times for a running system, you can call a target command in your kernel, e.g. //org.deepjava.runtime.mpc555.Kernel.checkStack//. \\ If the stack size was ever bigger than the maximum stack size this check fails and the signalling LED on the board starts blinking, see [[runtime_library:exceptions:start#signaling_with_led|Signaling with LED]]. 
-  The heap manager includes an automatic garbage collection. If the heap gets too fragmented or to large chunks of heap memory are requested and no free block can be found, the LED on the 555 board starts blinking and programm excecution stops.+  The heap manager includes an automatic garbage collection. If the heap gets too fragmented or to large chunks of heap memory are requested and no free block can be found, the signaling LED on the board starts blinking and program execution stops, see [[runtime_library:exceptions:start#signaling_with_led|Signaling with LED]].
  
runtime_library/os/start.1607623420.txt.gz · Last modified: 2020/12/10 19:03 by ursgraf