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.

how to strip .xem3 and .xe674?

Hi,

I'm trying to strip down some stuff for my NAND images.  I noticed that the M3 and DSP files are quite large:

-rw-rw-r-- 1 bob bob 19M Feb 21 16:51 ./board-support/prebuilt-images/dm814x-firmware_05_02_00_48/dm814x_c6xdsp.xe674
-rw-rw-r-- 1 bob bob 17M Feb 21 16:51 ./board-support/prebuilt-images/dm814x-firmware_05_02_00_48/dm814x_hdvicp.xem3
-rw-rw-r-- 1 bob bob 20M Feb 21 16:51 ./board-support/prebuilt-images/dm814x-firmware_05_02_00_48/dm814x_hdvpss_v4l2.xem3
-rw-rw-r-- 1 bob bob 20M Feb 21 16:51 ./board-support/prebuilt-images/dm814x-firmware_05_02_00_48/dm814x_hdvpss.xem3
-rw-rw-r-- 1 bob bob 19M Feb 25 11:02 ./component-sources/omx_05_02_00_48/bin/dm81xx/bin/ti814x-evm/dm81xx_c6xdsp_debug.xe674
-rw-rw-r-- 1 bob bob 9.5M Feb 25 11:05 ./component-sources/rpe_1_00_01_13/lib/dm81xx/bin/ti814x-evm/dm81xx_c6xdsp_debug.xe674

When I did an e2e search on "strip", I found indications that some DVRRDK people appear to have stripped versions of these.  However, I have EZSDK 5.05, so some of these are pre-built binaries, not compiled.  I tried to run arm-none-linux-gnueabi-strip to reduce at least the .xem3 file sizes - but then I got errors at run time that cause boot-up to halt:

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
<< DLOAD >> WARNING: Mandatory dynamic tag DT_STRTAB/DT_STRSZ not found!
FIRMWARE: Could not load: ProcMgr status 0x8485f003
FIRMWARE: Could not start: -1
Loading HDVPSS Firmware
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: Vp<< DLOAD >> WARNING: ss-M3
<LocatioMandatory dynamic tag DT_STRTAB/DT_STRSZ not found!
n 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: Could not load: ProcMgr status 0x8485f003
FIRMWARE: Could not start: -1

Can you tell me how EZSDK users can strip .xem3 and .xe674 files?

Dan -



  • In DVRRDK we use strip6x -p dm814x_c6xdsp.xe674 and strip470 -p dm814x_hdvicp.xem3 for c674 and M3 respectively. The strip utility are part of the c674 and M3 codegen tools. 

    You can find them under <ccs_v5_install>\tools\compiler\c6000_7.3.4\bin & <ccs_v5_install>\tools\compiler\tms470_4.9.5\bin. Syslink can still load the firmware after stripping symbols but I am not sure if EZSDK has some dependency which prevents stripped binaries from working.

  • Badri,

    Thanks for the prompt reply.

    > In DVRRDK we use strip6x -p dm814x_c6xdsp.xe674 and strip470 -p dm814x_hdvicp.xem3 for c674 and M3 respectively.

    I found strip6x in my EZSDK 5.05, at dsp-devkit/cgt6x_7_3_4/bin/strip6x. It ran with no warnings, shrank the image size, and at least RPE audio still works. So, seems like success.

    I did not find strip470 in the EZSDK. So I installed Linux CCS5. The installed result did not give me <ccs_v5_install>\tools\compiler\tms470_4.9.5\bin\strip470. However, I CCS5 now has <ccs_v5_install>/tools/compiler/arm_5.0.1/bin/armstrip. This seems to work for me. It seems like just a name change, like this entry in the ReleaseNote.htm:

    SDSCM00042313 IDE 5.1.0 ARM Cortex M3 Replace "TMS470" references in project properties dialog with "ARM"

    For anyone who finds this post on an e2e search, see also http://processors.wiki.ti.com/index.php/EZSDK_Reducing_Size_Of_Media_Controller_Firmware - though, I think Badri's advice was more helpful to me.

    Thanks!

    Dan -