Tool/software: TI-RTOS
When we use J6 DSP, we cannot load dspdce firmware on DSP2 correctly. Thank you!
We compile the most primitive dspdce_1_00_00_08 on ti-processor-sdk-linux-automotive-dra7xx-evm-03_01_00_03, and generate the dra7xx-c66x-dsp.xe66.
Using the following command to load the firmware to DSP1, we can find the device node rpmsg-dce-dsp, and also run normally.
Echo 40800000.dsp > unbind
Ln -s /opt/demos/sv/dra7xx-c66x-dsp.xe66 /lib/firmware/dra7-dsp1-fw.xe66
Echo 40800000.dsp > bind
But, when we change the config.bld and the dce_dsp.cfg file (see Annex) related settings, recompile dspdce_1_00_00_08 to generate dra7xx-c66x-dsp.xe66, and then,
using the following command to load the firmware to DSP2, it can not generation device node rpmsg-dce-dsp, and can not run normally.
Echo 41000000.dsp > unbind;
Ln -s /opt/demos/sv/dra7xx-c66x-dsp.xe66 /lib/firmware/dra7-dsp2-fw.xe66
Echo 41000000.dsp > bind
We also encounter the same problem in ti-processor-sdk-linux-automotive-dra7xx-evm-03_02_00_03.
config.bld
==========================================================================
var Build = xdc.useModule('xdc.bld.BuildEnvironment');
var commonBld = xdc.loadCapsule("../build/common.bld");
var commonOpts = "-g";
var hw_VAYU = 2;
var ES10 = 1;
for (x = 0; x < arguments.length; x++)
{
if (arguments[x].match(/^trace_level=/) )
{
// [1] operation is used on the return value of split(), which is an
// array.
var trace_level = arguments[x].split("=")[1];
}
}
/************************************
* Memory Map Information
************************************/
/* Memory Map for ti.platforms.evmDRA7XX:dsp1
*
* --- External Memory ---
* Virtual Physical Size Comment
* ------------------------------------------------------------------------
* 9500_0000 ????_???? 20_0000 ( ~2 MB) EXT_CODE
* 9520_0000 ????_???? 20_0000 ( 2 MB) EXT_DATA
* 9540_0000 ????_???? 280_0000 ( 40 MB) EXT_HEAP
* 9F00_0000 9F00_0000 6_0000 ( 384 kB) TRACE_BUF
* 9F06_0000 9F06_0000 1_0000 ( 64 kB) EXC_DATA
* 9F07_0000 9F07_0000 2_0000 ( 128 kB) PM_DATA (Power mgmt)
*/
var evmDRA7XX_ExtMemMapDsp1 = {
EXT_CODE: { name: "EXT_CODE", base: 0x95000000, len: 0x200000, space: "code", access: "RWX" },
EXT_DATA: { name: "EXT_DATA", base: 0x95200000, len: 0x00200000, space: "data", access: "RW" },
EXT_HEAP: { name: "EXT_HEAP", base: 0x95400000, len: 0x02800000, space: "data", access: "RW" },
TRACE_BUF: { name: "TRACE_BUF", base: 0x9F000000, len: 0x00060000, space: "data", access: "RW" },
EXC_DATA: { name: "EXC_DATA", base: 0x9F060000, len: 0x00010000, space: "data", access: "RW" },
PM_DATA: { name: "PM_DATA", base: 0x9F070000, len: 0x00020000, space: "data", access: "RWX" }
};
Build.platformTable["ti.platforms.evmDRA7XX:dsp1"] = {
externalMemoryMap: [
[ "EXT_CODE", evmDRA7XX_ExtMemMapDsp1.EXT_CODE ],
[ "EXT_DATA", evmDRA7XX_ExtMemMapDsp1.EXT_DATA ],
[ "EXT_HEAP", evmDRA7XX_ExtMemMapDsp1.EXT_HEAP ],
[ "TRACE_BUF", evmDRA7XX_ExtMemMapDsp1.TRACE_BUF ],
[ "EXC_DATA", evmDRA7XX_ExtMemMapDsp1.EXC_DATA ],
[ "PM_DATA", evmDRA7XX_ExtMemMapDsp1.PM_DATA ]
],
codeMemory: "EXT_CODE",
dataMemory: "EXT_DATA",
stackMemory: "EXT_DATA",
// modified by baron 20170425
l1PMode: "32k",
l1DMode: "32k",
l2Mode: "256k"
};
Build.platformTable["ti.platforms.evmDRA7XX:dsp2"] = Build.platformTable["ti.platforms.evmDRA7XX:dsp1"];
var TargetBuild = commonBld.getTargetBuild(arguments);
commonOpts += " -DHOST_TYPE=HOST_UNKNOWN "
/************************************
* Setup for dsp target
************************************/
var dsp_tgt = xdc.useModule('ti.targets.elf.C66');
dsp_tgt.rootDir = java.lang.System.getenv("C66XCGTOOLSPATH");
dsp_tgt.ccOpts.suffix += " --gcc -D___DSPBIOS___ -DDSP";
dsp_tgt.ccOpts.suffix += " -ms ";
//dsp_tgt.ccOpts.suffix += " -pden -pds=48 ";
//dsp_tgt.ccOpts.suffix += " -pdew "; //Convert warn to err; Supported in 4.9 version
dsp_tgt.ccOpts.suffix += commonOpts;
dsp_tgt.lnkOpts.suffix += " -x ";
dsp_tgt.lnkOpts.prefix += " --retain=.resource_table";
//dsp_tgt.lnkOpts.prefix += " --zero_init=off ";
//dsp_tgt.lnkOpts.prefix += " --cinit_compression=off";
dsp_tgt.platforms = [
"ti.platforms.evmDRA7XX:dsp2", //0
];
/***************** Tracing ********************/
if(trace_level == 0) {
dsp_tgt.ccOpts.suffix += " -DDCE_DEBUG_LEVEL=0";
} else if(trace_level == 1) {
dsp_tgt.ccOpts.suffix += " -DDCE_DEBUG_ENABLE";
dsp_tgt.ccOpts.suffix += " -DDCE_DEBUG_LEVEL=1";
} else if(trace_level == 2) {
dsp_tgt.ccOpts.suffix += " -DDCE_DEBUG_ENABLE";
dsp_tgt.ccOpts.suffix += " -DDCE_DEBUG_LEVEL=2";
} else if(trace_level == 3) {
dsp_tgt.ccOpts.suffix += " -DDCE_DEBUG_ENABLE";
dsp_tgt.ccOpts.suffix += " -DDCE_DEBUG_LEVEL=3";
} else if(trace_level >= 4) {
dsp_tgt.ccOpts.suffix += " -DDCE_DEBUG_ENABLE";
dsp_tgt.ccOpts.suffix += " -DDCE_DEBUG_LEVEL=4";
}
/***************** Tracing ********************/
{
HwType = hw_VAYU;
HwVer = ES10;
var build_vayu = true;
print("Selected Vayu for ES10");
dsp_tgt.ccOpts.suffix += " -DBUILD_FOR_VAYU";
dsp_tgt.ccOpts.suffix += " -DVAYU_ES10";
dsp_tgt.platform = dsp_tgt.platforms[0];
}
Build.targets = [
dsp_tgt,
];
var Pkg = xdc.module("xdc.bld.PackageContents");
==========================================================================
dce_dsp.cfg
===========================================================================
/* -------------------------------- DSP ----------------------------------*/
MultiProc.setConfig("DSP2", ["HOST", "IPU2", "IPU1", "DSP2", "DSP1"]);
===========================================================================