NOTICE: The Processors Wiki will End-of-Life in December of 2020. It is recommended to download any files or other content you may need that are hosted on processors.wiki.ti.com. The site is now set to read only.
What is SysLink?
SysLink is runtime software and an associated porting kit that simplifies the development of embedded applications in which either General-Purpose microprocessors (GPP) or DSPs communicate with each other. The SysLink product provides software connectivity between multiple processors. Each processor may run either an HLOS such as Linux, QNX, etc. or an RTOS such as SYS/BIOS. In addition, a processor may also be designated as the master for another slave processor, and may be responsible for controlling the slave processor's execution (including boot-loading the slave).
The SysLink product provides the following services to frameworks and applications:
- Processor Manager
- Inter-Processor Communication
- Utility modules
SYS/BIOS operating system is expected to be running on the slaves with all of these platforms.
Target configurations: SysLink provides reusable & portable modules for:
- Processor may be GPP or DSP, running HLOS or SYS/BIOS
- OMAP3530, TI81xx
How is SysLink different from DSPLink
SysLink is the next generation of DSPLink. New multi-core device architectures such as TI81XX are complex with one master core running HLOS and 3+ cores running SYS/BIOS. They require:
- All to all IPC communication
- Processor Manager master for a slave core may be on any other core in the device, and may not always be on the host processor.
- It should be possible to communicate between two cores running SYS/BIOS in exactly the same way as the communication would happen between cores running two different OSes.
- Only some basic IPCs may be required between a pair of cores, while others may need more complex IPCs. It should be possible to pick and choose which IPC is required without pulling in the full software
The above requirements inherently make usage of DSPLink for such devices impossible, since the DSPLink architecture does not support all of the above requirements.
Services provided by SysLink
Depending on the supported platform, OS and SysLink version, SysLink provides a subset of the following services to its clients:
- ProcMgr: Basic slave processor control
- Host process attaches to the slave processor: Sets up the system to allow access to slave resources from the host process
- Host loads the slave with slave executable present in host file system
- Host starts the slave
- Host stops the slave execution
- Host unloads the slave
- Host process detaches from the slave
- Inter-Processor Communication protocols
- Complete protocols for different types of data transfer between the processors
- Each protocol meets a different data transfer need
- MessageQ: Message Queue (Recommended)
- RingIO: Circular ring buffer based data streaming
- FrameQ: Connecting component designed to carry video frames from one processing component in the system to another. (Discouraged for new development)
- Inter-Processor Communication building blocks
- Low-level building blocks used by the protocols
- Each building block is also exposed as APIs to allow framework writers to define their own application-specific protocols
- Notify: Interrupt abstraction and de-multiplexing for notification of user events
- Multi-processor heaps: Memory managers that can be used from any processor in the device
- HeapMemMP: Variable sized memory allocator
- HeapBufMP: Fixed size buffers memory allocator
- Multi-processor gates (GateMP): Multi-processor critical section for mutually exclusive access to shared objects
- GatePeterson: Peterson's algortithm based software multi-processor critical section lock. Can only be used for protection between two processors.
- GateHWSpinlock: Abstracts the hardware spinlocks available on device (such as TI81XX) into the GateMP module. Can be used for protection from any processors in the device.
- ListMP: Multi-processor doubly linked circular list
- ProcMgr_read/ProcMgr_write: Read from or write to slave memory
Why use SysLink?
SysLink provides several features and capabilities that make it easier and more convenient for developers using a multi-core system:
- Provides a generic API interface to applications
- Hides platform/hardware specific details from applications
- Hides operating system specific details from applications, otherwise needed for talking to the hardware (e.g. interrupt services)
- Applications written on SysLink for one platform can directly work on other platforms/OS combinations requiring no or minor changes in application code
- Makes applications portable
- Allows flexibility to applications of choosing and using the most appropriate high/low level protocol
Migration between DSPLink and SysLink
A Migration Guide is provided for detailed migration information between DSPLink and SysLink.