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/CC2640R2F: ROV error while running example code: Target memory read failed

Part Number: CC2640R2F
Other Parts Discussed in Thread: SYSBIOS

Tool/software: Code Composer Studio

Hi,

I'm using the CC2640R2F launchpad running SDK 1.50.00.71. When I tried using the ROV, the same error was always occurring even though the application was running correctly:
"Error: java.lang.Exception: Target memory read failed at address: <addr>, length: <len> This read is at an INVALID address according to the application's section map. The application is likely either uninitialized or corrupt."


I have found similar threads regarding this problem but none of the fixes seem to be the solution to my problem.
I built my application around the simple_peripheral example. I tried running an unmodified version of the simple peripheral example, and got this same error (also when I run the host_test example from the same SDK).

Does anyone have a suggested action to overcome this issue?

Thanks in advance,

Gamli

  • I managed to fix this. If someone else is experiencing this, here is a workaround:

    The following lines of code need to be added to the package.xs file (\kernel\tirtos\packages\ti\sysbios\heaps\package.xs)

        function init()
        {
            /* Add HeapMem's primaryHeap addresses range to ROV's memory sections */
            if (xdc.om.$name == "rov") {
                var HeapMem = xdc.module('ti.sysbios.heaps.HeapMem');
        //        if (xdc.om['ti.sysbios.heaps'].HeapMem.$used) {
                    var Program = xdc.useModule('xdc.rov.Program');
                    var HeapMemCfg =  Program.getModuleConfig(HeapMem.$name);
                    if  (HeapMemCfg.primaryHeapBaseAddr != null) {
                        var base = Program.getSymbolValue(HeapMemCfg.primaryHeapBaseAddr.substr(1));
                        var end = Program.getSymbolValue(HeapMemCfg.primaryHeapEndAddr.substr(1));
                        /* Retrieve the MemoryImage java object. */
                        var Model = xdc.module("xdc.rov.Model");
                        var memReader = Model.getMemoryImageInst();
    
                        /* retrieve the sections list and add a new section */
                        var sections = memReader.getSections();
                        sections.addSection(base, end-base);
                    }
        //        }
    
                    /* Retrieve the MemoryImage java object. */
                    var Model = xdc.module("xdc.rov.Model");
                    var memReader = Model.getMemoryImageInst();
    
                    /* retrieve the sections list and add a new section */
                    var sections = memReader.getSections();
                    sections.addSection(0x20000000, 0x20005000);
            }
        }

  • Thanks for updating us with the solution! We really appreciate that!