Please note as of Wednesday, August 15th, 2018 this wiki has been set to read only. If you are a TI Employee and require Edit ability please contact x0211426 from the company directory.

SysLink Boot Modes

From Texas Instruments Wiki
Jump to: navigation, search

Introduction

SysLink supports several use cases for bringing up/down slave processors and beginning/ending communication with them. This article describes the steps taken in each of these "Boot Modes", as well as several common use cases and the expected calling sequences for them.

Slave Management for each Boot Mode

The following table shows the actions that are done for each supported boot mode. It also shows the function context in which the actions are performed.

Action ProcMgr context Boot NoBoot
Assert/release global reset ProcMgr_attach/detach Yes
Assert/release slave CPU reset ProcMgr_start/stop Yes
Mapping hardware registers ProcMgr_attach/detach Yes Yes - ProcMgr_attach called internally in Ipc_control(LOADCALLBACK/STOPCALLBACK)
Loader_attach/detach ProcMgr_attach/detach Yes
PwrMgr_attach/detach ProcMgr_attach/detach Yes
Power on/off slave's global resources ProcMgr_attach/detach Yes
Power on/off slave's Ipc resources ProcMgr_attach/detach Yes Yes - ProcMgr_attach called internally in Ipc_control(LOADCALLBACK/STOPCALLBACK)

Booting Use Cases

The supported use cases are:

  • Apploader: The user application uses ProcMgr in SysLink to load/unload, power up/down slave and release/put the slave from/into reset.
  • Slaveloader: A separate utility program is created by the user to use ProcMgr to load/unload, power up/down slave and release/put the slave from/into reset. In some cases, the utility might call Ipc_control as well to connect to IPC (e.g. as in Firmware loader), and remove that responsibility from the application, but that is optional.
  • External loader: The user loads/unloads, powers up/down slave and releases/puts the slave from/into reset, without using SysLink.

API calling sequence on the host

The following figure shows the calling sequence during startup and shutdown for each use case:

Startup shutdown sequences.jpg

In the case for External loader, ProcMgr_attach() is internally called by Ipc_control(Ipc_CONTROLCMD_LOADCALLBACK) with ProcMgr_BootMode_NoBoot hence it is not necessary for the user application to call it.

Note that the Ipc_control() calls are only necessary in each use case if the user intends to use Ipc on the slave.


Common Gotchas

  • On TI81xx devices, if you are only using the VPSS-M3 and not the VIDEO-M3, and loading the VPSS-M3 using an external loader, Ipc_control(Ipc_CONTROLCMD_STARTCALLBACK) may timeout due to the slave being held in an infinite loop in Ipc_start() waiting to enter a gate. In this case, you need to add the following lines to the M3's configuration (.cfg) file to ensure that the gates shared by the M3's are properly initialized:
var GateDualCore = xdc.useModule('ti.sysbios.family.arm.ducati.GateDualCore');
GateDualCore.initGates = true;