This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

Can I check if firmware is already loaded on the DSP?



Hello,

when I use firmware_loader twice to load my firmware to the DSP, it crashes:

# firmware_loader 0 App_debug.xe674 start
FIRMWARE: I2cInit will be done by M3
FIRMWARE: Memory map bin file not passed
Usage : firmware_loader <Processor Id> <Location of Firmware> <start|stop> [-mmap <memory_map_file>] [-i2c <0|1>]
===Mandatory arguments===
<Processor Id>         0: DSP, 1: Video-M3, 2: Vpss-M3
<Location of Firmware> firmware binary file
<start|stop>           to start/stop the firmware
===Optional arguments===
-mmap                  input memory map bin file name
-i2c                   0: i2c init not done by M3, 1(default): i2c init done by M3
FIRMWARE: isI2cInitRequiredOnM3: 1
FIRMWARE: Default memory configuration is used
Firmware Loader debugging not configured
Default FL_DEBUG: warning
Allowed FL_DEBUG levels: error, warning, info, debug, log
MemCfg: DCMM (Dynamically Configurable Memory Map) Version :  2.1.2.1
FIRMWARE: 0 start Successful
# firmware_loader 0 App_debug.xe674 start
FIRMWARE: I2cInit will be done by M3
FIRMWARE: Memory map bin file not passed
Usage : firmware_loader <Processor Id> <Location of Firmware> <start|stop> [-mmap <memory_map_file>] [-i2c <0|1>]
===Mandatory arguments===
<Processor Id>         0: DSP, 1: Video-M3, 2: Vpss-M3
<Location of Firmware> firmware binary file
<start|stop>           to start/stop the firmware
===Optional arguments===
-mmap                  input memory map bin file name
-i2c                   0: i2c init not done by M3, 1(default): i2c init done by M3
FIRMWARE: isI2cInitRequiredOnM3: 1
FIRMWARE: Default memory configuration is used
Firmware Loader debugging not configured
Default FL_DEBUG: warning
Allowed FL_DEBUG levels: error, warning, info, debug, log
MemCfg: DCMM (Dynamically Configurable Memory Map) Version :  2.1.2.1
FIRMWARE: Ipc_CONTROLCMD_STARTCALLBACK Error: ProcMgr status 0xffffffff
FIRMWARE: Could not start: -1
#

It's similar when calling # firmware_loader 0 App_debug.xe674 stop when no firmware is loaded: firmware_loader never returns in this case>

Is there a way to prevent this? Can I check if the firmware is already loaded, from the commandline?

  • Hi Markus,

    I'm not familiar with this setup? Are you using a DSP/BIOS or SYS/BIOS product, if so, which version? Also, what device are you using?

  • Hi,

    1. For the case when you are loading the slave core the second time without unloading it first, the behavior looks normal/expected (i.e. it is returning an error status with IPC diagnostics)

    2. For the case you are using firmware_loader to 'stop' a core that was never loaded it looks like the firmware_loader utility should act similar to (1) and indicate an error instead of hanging.

    Irrespectively, it sounds like you are looking for a command line or runtime utility to check the state the core in, in order to avoid (1) or (2). I am not sure if the firmware_laoder has a command to call that state of the core (perhaps someone from ezsdk support can help), however you might be able to refer to the syslink distribution and perhaps add this in your application by calling ProcMgr::  ProcMgr_getState() API, which returns the state of the core as it is known from the Host side. You can also take a look at the "slaveloader" utility that is distributed as a sample application it SysLink, which has a command line option: 'list', which iterates through the slave cores and lists the state they are in from the ProcMgr perspective, by using the ProcMgr_getState() API. You can use the implementation of this feature as a reference from your application.

    You can look through the following link to the ProcMgr APIs:

    http://software-dl.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/syslink/2_10_05_26/exports/syslink_2_10_05_26/docs/html/index.html  

    Best regards,

    Murat