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
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.
|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)|
|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:
In the case for External loader,
ProcMgr_attach() is internally called by
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.
- 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;