GOAL model

GOAL is designed for the usage on

  • single-core or multi-core systems

  • systems with an operating system in single- or multithreaded design

  • embedded systems without an operating system

Figure: GOAL model shows the relationship between the GOAL components.

 

Figure: GOAL model


The colored arrows demonstrate different possibilities to apply GOAL components.
GOAL defines several types of components with a specific functionality:

GOAL core

The GOAL core modules provide basic middleware functionality as memory handling, timers, tasks, list etc. Those modules can be used from all GOAL components and from the application.

GOAL media adapter

Media adapter define an interface for drivers. Drivers in GOAL create a media adapter during registration. Upper layers use drivers through this unified interface, thus drivers and platforms are replaceable. Media adapters do not implement any additional logic, only provide a generic interface.

GOAL media interface

Media interfaces implement functionality based on media adapters or other media interfaces. This functionality may be a filesystem, an RPC implementation or even a communication stack. Media interfaces can be used by applications or other GOAL components.

GOAL extension modules

GOAL extension modules are additional software components, that implement application functions based on goal. These are for example:

  • Communication stacks (TCP/IP, PROFINET, EtherNet/IP, EtherCAT, …)

  • GOAL firewall

  • GOAL log emitter

  • GOAL Device Detection

  • GOAL Web Server

GOAL architectures

These modules implent the architecture adaption layer between GOAL and the actual targets. There the platform specific parts of GOAL core module functionality are implemented.

GOAL boards

A board represents an actual hardware implementation of a CPU with additional peripherals and connectors, e.g. a development board. The code within this board file initializes peripherals and registers used drivers.

GOAL drivers

Drivers implement hardware access and provide the functionality through a media adapter to other layers of the stack.