Changelog
Version | Changes |
---|---|
1.0 | Initial version |
1.1 | Clarification of naming |
1.2 | List of components and examples |
Table of Contents |
---|
Introduction
uGOAL describes a software package, which allows integration of of the irj45/SoM module into applications without using a full GOAL framework platform. By stripping down the required dependencies from the GOAL industrial communication framework, integration is possible into a wide range of platforms from a simple ATMEGA 8-bit CPU with 2KB of RAM up to a linux PC.
uGOAL mimics the required functionality from the GOAL framework specifically needed by the application controller framework. It is configurable in different ways to ensure compatibility with a wide range of targets. Most GOAL functionality is not available, however the CCM specific examples for fieldbus applications can be reused mostly without adaption.
Components
uGOAL contains a core which includes the basic GOAL framework functionality required for RPC wrappers. Following RPC wrappers are available for uGOAL:
RPC wrapper | functionality | remarks |
---|---|---|
pnio | Profinet Stack | fully supported |
ecat | EtherCAT Stack | fully supported |
eip | EtherNet/IP Stack | fully supported |
http | Web Server | only recommended for targets with > 32kByte RAM available |
net | UDP and TCP channels | only recommended for targets with > 32kByte RAM available |
ccm | ccm module management | fully supported |
API
The uGOAL based software delivery is API compatible with the GOAL based software delivery. Therefore all existing application and examples can be reused with minimal adaption. Thus the communication module user manual also applies to the uGOAL software delivery: iRJ45/SoM - User Manual .
Examples
Many examples are available:
...
Examples under the goal folder are developed with uGOAL in scope, thus they are generally more suitable for smaller targets (up to only 8kByte of RAM). Additional description can be found here: iRJ45 / SoM - uGOAL Examples .
Platform porting
The platform interface required for integration into an platform contains of the following functions:
Function | Signature | Remark | |||||
---|---|---|---|---|---|---|---|
plat_init |
| This function is called upon start of the application. It is required to initialize the required hardware peripherals here:
| |||||
plat_spiTransfer |
| This function needs to transfer the given data (txBuf) with a length of size to the CCM module. The response data needs to be propagated into the rxBuf buffer. Only the amount of data (size) is allowed to write into rxBuf. This function is called cyclically by the uGOAL framework. | |||||
plat_ledSet |
| This function can be used to set LED states acquired from the CC module, which may be required for some fieldbus protocol implementations. | |||||
plat_heapAllocDone |
| This function is called when dynamic memory allocation is done. It can be used to evaluate the memory utilisation. | |||||
plat_getMsTimer |
| This function needs to return the number of milliseconds from start of the system. It is needed for timed operations and timeouts. |
Multitasking
The software delivery does not specifically consider issues of multi tasking systems. Thus if one wants to integration the code into a multitasking application, all uGOAL relevant functions should be concentrated and called from one single task. Data exchange with other tasks should be done in a protected way (locking, messages, semaphores, queues). This is not scope of the software delivery.
Configuration
Following table shows the most important configuration options of the software. Those are defined with a default value in ugoal/ugoal_default.h.
...