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.

CCS/66AK2G12: using MPMCL.

Part Number: 66AK2G12

Tool/software: Code Composer Studio

I want to load the out file into DSP using MPMCL in linux. 

I put the code in DDR(DDR3_DSP_CODE) as shown below. (I used 2GB DDR memory)

         name            origin    length      used     unused   attr    fill
----------------------  --------  ---------  --------  --------  ----  --------
  MSMCSRAM              0c000000   00100000  00020010  000dfff0  RW X
  L2SRAM                10800000   00100000  0003d00c  000c2ff4  RW X
  DDR3_DSP_CODE         a0000000   10000000  0050f1ea  0faf0e16  RW X
  DDR3                  b0000000   50000000  075d9278  48a26d88  RW X
run origin  load origin   length   init length attrs members
----------  ----------- ---------- ----------- ----- -------
a0000000    a0000000    00343660   00000000    rw-
a0000000    a0000000    0028364c   00000000    rw- .fardata
a0283650    a0283650    00080000   00000000    rw- .section_DDR2_CODE
a0303650    a0303650    00040000   00000000    rw- .stack
a0343650    a0343650    00000010   00000000    rw- .far.1
a0343660    a0343660    0002be20   0002be20    r-x
a0343660    a0343660    0002be20   0002be20    r-x .text
a036f480    a036f480    00003f1c   00000000    rw-
a036f480    a036f480    00003f1c   00000000    rw- .far.2
a03733a0    a03733a0    000031a4   000031a4    r--
a03733a0    a03733a0    00002c62   00002c62    r-- .const
a0376004    a0376004    00000540   00000540    r-- .switch
a0376548    a0376548    00000224   00000000    rw-
a0376548    a0376548    00000120   00000000    rw- .cio
a0376668    a0376668    00000014   00000000    rw- .bss
a0376680    a0376680    000000ec   00000000    rw- .neardata
a037676c    a037676c    00000024   00000024    r--
a037676c    a037676c    00000024   00000024    r-- .init_array
a0376800    a0376800    00198a68   00198a68    r-x
a0376800    a0376800    00000200   00000200    r-x .vecs
a0376a00    a0376a00    00198868   00198868    r-- .cinit
b26fed68    b26fed68    04cda510   00000000    rw-
b26fed68    b26fed68    04cda510   00000000    rw- .section_DDR2

And I modified the evm.dts file

form 

reserved-memory {
	#address-cells = <2>;
	#size-cells = <2>;
	ranges;

	dsp_common_memory: dsp-common-memory@81d000000 {
		compatible = "ti,keystone-dsp-mem-pool";
		reg = <0x00000008 0x1d000000 0x00000000 0x2800000>;
		reusable;
		status = "okay";
	};
	
	dsp_common_memory: dsp-common-memory@81f800000 {
		compatible = "shared-dma-pool";
		reg = <0x00000008 0x1f800000 0x00000000 0x800000>;
		reusable;
		status = "okay";
	};
};

to

reserved-memory {
	#address-cells = <2>;
	#size-cells = <2>;
	ranges;

	dsp_common_mpm_memory: dsp-common-mpm-memory@a00000000 {
		compatible = "ti,keystone-dsp-mem-pool";
		reg = <0x0000000A 0x00000000 0x00000000 0x10000000>;
		no-map;
		status = "okay";
	};

	dsp_common_memory: dsp-common-memory@b0000000 {
		compatible = "shared-dma-pool";
		reg = <0x0000000b 0x00000000 0x00000000 0x50000000>;
		reusable;
		status = "okay";
	};
};

but occurs error -104  when mpmcl load.

ex

:~# mpmcl reset dsp0
reset succeeded
:~# mpmcl load dsp0 thunderDSP.out
load failed (error: -104)

Feb 27 08:22:27 k2g-evm daemon.info mpmsrv[325]: mpmsrv.c:134:mpm_server: received load command for dsp0 filename /home/root/ETS10DSP.out
Feb 27 08:22:27 k2g-evm daemon.err mpmsrv[325]: mpmdlif.c:197:map_and_copy_segment: transport mmap failed for addr 0xa0000000 size 3421792 (err: No such file or directory)
Feb 27 08:22:27 k2g-evm daemon.err mpmsrv[325]: mpmdlif.c:1279:DLIF_allocate: map and copy failed for image /home/root/ETS10DSP.out with addr 0xa0000000, size 0x343660
Feb 27 08:22:27 k2g-evm daemon.err mpmsrv[325]: mpmdlif.c:1442:DLIF_error: << D L O A D >> ERROR:
Feb 27 08:22:27 k2g-evm daemon.err mpmsrv[325]: mpmdlif.c:1445:DLIF_error: Failed to allocate target memory for static executable.
Feb 27 08:22:27 k2g-evm daemon.err mpmsrv[325]: mpmdlif.c:864:mpm_dlif_load: Image loading failed for file /home/root/ETS10DSP.out
Feb 27 08:22:27 k2g-evm daemon.err mpmsrv[325]: mpmssm.c:510:mpm_load_slave: Image loading failed for dsp0 : image
Feb 27 08:22:27 k2g-evm daemon.err mpmsrv[325]: mpmssm.c:419:mpm_ssm_state_error: entered error state for dsp0
Feb 27 08:22:27 k2g-evm daemon.info mpmsrv[325]: mpmsrv.c:77:mpm_server: waiting for slave message

Is there anything else I need to do ? or Did I correct it wrong?

Thanks,

DG

  • Hi, DaeGyu,

    Could you try change the reserved memory address to 0x00000000 0xA0000000 ? The reserved memory address cell is 2 and size cell is 2. I believe the first address word is for LPAE. Based on the memory map in the datasheet, using LPAE 8GB maps to area between 0x08 0000 0000 0x09 FFFF FFFF, and first 2GB (0x08 0000 0000 ~ 0x08 7FFF FFFF) is aliased of address 0x8000 0000 - 0xFFFF FFFF (memory map note 5). The area starting from 0x0A 0000 0000 is reserved. 

    Rex

  • Hi Rex 

    I change to 

    reserved-memory {
        #address-cells = <2>;
        #size-cells = <2>;
        ranges;
    
        dsp_common_mpm_memory: dsp-common-mpm-memory@a00000000 {
            compatible = "ti,keystone-dsp-mem-pool";
            reg = <0x00000000 0xA0000000 0x00000000 0x10000000>;
            no-map;
            status = "okay";
        };
    
        dsp_common_memory: dsp-common-memory@b0000000 {
            compatible = "shared-dma-pool";
            reg = <0x0000000b 0x00000000 0x00000000 0x50000000>;
            reusable;
            status = "okay";
        };
    };

    However, the same error still occurs. It print the same log msg.
    I think there is a problem if I put the code in a place other than l2(0x10800000).

    Do I need to modify the mpm_config.json file when moving the code area to DDR?

    I didn't touch mpm_config ,it is a default

  • Hello anybody Here ?? I did post five days ago but I didn't get a reply.

  • Hi, DaeGyu,

    There were a few obvious errors which i thought you would have spotted when I asked you to modify the LPAE address to non-LPAE. The dsp_common_memory still has LPAE address configured which should be corrected. Besides, your mpm_memory has length of 0x1000 0000, but your DSP memory map go beyond that. Could you try to correct them and give it another try?

    Rex