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.

Using platform_write in MessageQ Sample project

Other Parts Discussed in Thread: SYSBIOS

Good day to all,

I have created a MessageQ project from the IPC MessageQ Single Image example project. In the project, the messageQ bounce messages between cores and uses System_printf to output the messages. Is it possible for me to use platform_write instead? But platform_write uses printf, so i just #include <stdio.h> in my messageQ project will do? I wanted to try using platform_write and burn the program into my DSP EVM6678LE, so that i can check for the output via serial.

When i added platform_write and compile, i receive the error stating that the program cannot fit into the memory. So i went to other sys/bios projects and copied sections of codes from the .cfg file over to the MessageQ's .cfg file. Code copied are shown below:

var heapMem = xdc.useModule('ti.sysbios.heaps.HeapMem');
var heapMemParams = new HeapMemParams();
heapMemParams.size = 0x200000;
heapMemParams.SectionName = "systemHeap";
Program.global.heap0 = HeapMem.create(heapMemParams);

Program.sectMap["sharedL2"] = "DDR3";
....
....
<all the various sectMaps here, my workstation isnt connected to the internet so i couldn't copy and paste>
....
....
Program.sectMap["far:NDK_PACKETMEM"] = {loadSegment: "L2SRAM", loadAlign: 128};

After adding the above codes, the error regarding unable to fit program to memory is gone. But when i tried doing a few printf etc the following error appears: (as i could not copy and paste the exact error message from my offline workstation, the following code is copied online, just to give a rough idea what kind of error message i'm seeing)

  • [C66xx_2] A0=0x0 A1=0x0
  • [C66xx_2] A2=0x0 A3=0x0
  • [C66xx_2] A4=0x0 A5=0x1
  • [C66xx_2] A6=0x193 A7=0x0
  • [C66xx_2] A8=0xc0006ec A9=0x1
  • [C66xx_2] A10=0xfffffffc A11=0x2
  • [C66xx_2] A12=0x0 A13=0xc0000b8
  • [C66xx_2] A14=0xc0006ec A15=0xc195830
  • [C66xx_2] A16=0xc205780 A17=0x10
  • [C66xx_2] A18=0x806780 A19=0x30
  • [C66xx_2] A20=0x6c A21=0x4c
  • [C66xx_2] A22=0x40100581 A23=0xb040
  • [C66xx_2] A24=0x420880 A25=0x8031000c
  • [C66xx_2] A26=0x84605 A27=0x60800006
  • [C66xx_2] A28=0x20000 A29=0x0
  • [C66xx_2] A30=0xc1932dc A31=0x0
  • [C66xx_2] B0=0x1 B1=0x0
  • [C66xx_2] B2=0x0 B3=0xc323e24
  • [C66xx_2] B4=0x2 B5=0xc1930a8
  • [C66xx_2] B6=0xf580010 B7=0xc192af0
  • [C66xx_2] B8=0x0 B9=0x0
  • [C66xx_2] B10=0x90 B11=0x1
  • [C66xx_2] B12=0x2 B13=0xc37b1e0
  • [C66xx_2] B14=0x806f98 B15=0x8068c8
  • [C66xx_2] B16=0x8068b8 B17=0x0
  • [C66xx_2] B18=0xc0004f0 B19=0xc
  • [C66xx_2] B20=0x69 B21=0x3
  • [C66xx_2] B22=0x3 B23=0x0
  • [C66xx_2] B24=0x9c002cc4 B25=0xc4002200
  • [C66xx_2] B26=0x304482 B27=0x22400302
  • [C66xx_2] B28=0x420a0900 B29=0x8005202a
  • [C66xx_2] B30=0x0 B31=0x1
  • [C66xx_2] NTSR=0x1000c
  • [C66xx_2] ITSR=0x0
  • [C66xx_2] IRP=0x0
  • [C66xx_2] SSR=0x0
  • [C66xx_2] AMR=0x0
  • [C66xx_2] RILC=0x0
  • [C66xx_2] ILC=0x0
  • [C66xx_2] Exception at 0x0
  • [C66xx_2] EFR=0x2 NRP=0x0
  • [C66xx_2] Internal exception: IERR=0x1
  • [C66xx_2] Instruction fetch exception
  • [C66xx_2] ti.sysbios.family.c64p.Exception: line 248: E_exceptionMin: pc = 0x00000000, sp = 0x008068c8.
  • [C66xx_2] xdc.runtime.Error.raise: terminating execution

Am i doing things wrongly? If so how do i rectify them?

  • What versions of SYS/BIOS and XDCtools are you using?

    Can you put a breakpoint at address 0x0 and see where you're trying to execute a NULL function pointer?

  • Hi Tom, thanks for replying.

    xdctools_3_25_03_72
    SYS/BIOS 6.33.6.50

    Hmm.. Sorry for being a noob lol, but how do i put a breakpoint at address 0x0? And how to i even go to address 0x0?

    ps: sorry and thanks for your patience >_<

  • Jing,

    you might want to become familiar with CCS here.

    From the register dump you posted, take a look at the assembly instruction prior to  B3=0xc323e24. If you open the disassembly window and go to 0xc323e24 you can see what function you were when you called a NULL function pointer.

  • Hmm.. I don't understand assembly language, and i have no idea what the display means.

                                 $C$RL207
    B3 = 0x8090fbe8  0500A358  MVK.L1  0,A10

    Why is this so difficult? Is there any simplier solution to this? All i wanted was to try using the default MessageQ sample project and use 'platform_write' instead of 'System_printf' so that when i flash it into the board i can view the results thru serial.