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.

problem booting the ndk "helloworld" example

Hello,

I am currently working with the TMDSEVM66788L (The processor is multicore DSP TMS320C6678L) . I have ccs v6 on my pc with  mcsdk_2_01_02_05 and ndk 2_24_03_35.

After I successfully managed to compile and run the hello world example. I saw that I have a connection (there was a ping) between my EVM and my pc.

Now I want to boot this example from flash using the link I used for booting my project:

e2e.ti.com/support/dsp/c6000_multi-core_dsps/f/639/p/430837/1544042

Unfortunately, I see that after making the same steps for booting that worked in my project I see no connection in the cmd.

Could anyone please tell why is that happening? and if someone managed to boot this example from flash and saw a connection?

NOTE: The path of the example I use is:  C:\ti\mcsdk_2_01_02_05\examples\ndk\helloWorld\evmc6678l

  • Yes I have seen customers who are used to boot the NDK examples from flash.
    You need to use IBL bootloader and need to convert .out to binary.
    C:\ti\mcsdk_2_01_02_06\tools\boot_loader\ibl

    C:\ti\mcsdk_2_01_02_06\tools\program_evm\binaries\evm6678l

    NAND writer:
    C:\ti\mcsdk_2_01_02_06\tools\writer\nand\evmc6678l

    Please try to use the latest processor SDK based NDK examples:

    processors.wiki.ti.com/.../Processor_SDK_RTOS_BOOT_C66x

    Refer to this FAQ for .out to .bin conversion.

    http://processors.wiki.ti.com/index.php/KeystoneI_Bootloader_Resources_and_FAQ#I_have_programmed_IBL_and_want_to_boot_application_from_NOR_flash._How_to_convert_my_.out_to_.bin_to_flash_it.3F

  • Thank you for the quick replay Titus,

    I am using the newest pdk examples and I did convert the .out file into binary.

    I followed the instruction given by  in this link

    e2e.ti.com/support/dsp/c6000_multi-core_dsps/f/639/p/430837/1544042.

    I am using the utils given in this path:

    C:\ti\mcsdk_2_01_02_05\tools\boot_loader\ibl\src\util

    and I am using the NOR writer located in 

    C:\ti\mcsdk_2_01_02_05\tools\writer\nor\evmc6678l

    Is there a problem using NOR writer instead of the NAND writer?

    NOTE: I did mange to use the NOR write to boot my project (which does not contain DDR) and the led_play project from a "spiboot" example I downloaded. 

    But when I make the same steps as before and reconnect the board in spi mode (using the sw) there is no ping (I do get a ping when I debug the project in no boot mode)


  • Unfortunately, I see that after making the same steps for booting that worked in my project I see no connection in the cmd.

    Able to get the NDK logs in terminal and only not getting the IP address ?
  • I added additional indications in the code like led blinking (which is running in debug in no boot mode). But after I use NOR writer and reconnect the board I do not see any led blinking. (The code for the led blinking is from the led_play example I mentioned before).

    Unfortunately I do not have any possibility to see the logs in the terminal. Just the verification methods I mentioned and the ping in the cmd window on my pc

  • I think there is a problem with the DDR3 configuration when booting using the method I am using (specified in the link in my previous posts)

    What I did to verify this is to change the memory form DDR3 to MSMCSRAM, used by the hello world project in the .cfg file.

    This is the original section in the .cfg file

    Memory.defaultHeapInstance = Program.global.heap0;
    Program.sectMap["sharedL2"] = "DDR3";
    Program.sectMap["systemHeap"] = "DDR3";
    Program.sectMap[".sysmem"] = "DDR3";
    Program.sectMap[".args"] = "DDR3";
    Program.sectMap[".cio"] = "DDR3";
    Program.sectMap[".far"] = "DDR3";
    Program.sectMap[".rodata"] = "DDR3";
    Program.sectMap[".neardata"] = "DDR3";
    Program.sectMap[".cppi"] = "DDR3";
    Program.sectMap[".init_array"] = "DDR3";
    Program.sectMap[".qmss"] = "DDR3";
    Program.sectMap[".cinit"] = "DDR3";
    Program.sectMap[".bss"] = "DDR3";
    Program.sectMap[".const"] = "DDR3";
    Program.sectMap[".text"] = "DDR3";
    Program.sectMap[".code"] = "DDR3";
    Program.sectMap[".switch"] = "DDR3";
    Program.sectMap[".data"] = "DDR3";
    Program.sectMap[".fardata"] = "DDR3";
    Program.sectMap[".args"] = "DDR3";
    Program.sectMap[".cio"] = "DDR3";
    Program.sectMap[".vecs"] = "DDR3";
    Program.sectMap["platform_lib"] = "DDR3";
    Program.sectMap[".far:taskStackSection"] = "L2SRAM";
    Program.sectMap[".stack"] = "L2SRAM";
    Program.sectMap[".nimu_eth_ll2"] = "L2SRAM";
    Program.sectMap[".resmgr_memregion"] = {loadSegment: "L2SRAM", loadAlign:128}; /* QMSS descriptors region */
    Program.sectMap[".resmgr_handles"] = {loadSegment: "L2SRAM", loadAlign:16}; /* CPPI/QMSS/PA Handles */
    Program.sectMap[".resmgr_pa"] = {loadSegment: "L2SRAM", loadAlign:8}; /* PA Memory */
    Program.sectMap[".far:IMAGEDATA"] = {loadSegment: "L2SRAM", loadAlign: 8};
    Program.sectMap[".far:NDK_OBJMEM"] = {loadSegment: "L2SRAM", loadAlign: 8};
    Program.sectMap[".far:NDK_PACKETMEM"] = {loadSegment: "L2SRAM", loadAlign: 128};

    And this is the changed configuration

    Memory.defaultHeapInstance = Program.global.heap0;
    Program.sectMap["sharedL2"] = "MSMCSRAM";
    Program.sectMap["systemHeap"] = "MSMCSRAM";
    Program.sectMap[".sysmem"] = "MSMCSRAM";
    Program.sectMap[".args"] = "MSMCSRAM";
    Program.sectMap[".cio"] = "MSMCSRAM";
    Program.sectMap[".far"] = "MSMCSRAM";
    Program.sectMap[".rodata"] = "MSMCSRAM";
    Program.sectMap[".neardata"] = "MSMCSRAM";
    Program.sectMap[".cppi"] = "MSMCSRAM";
    Program.sectMap[".init_array"] = "MSMCSRAM";
    Program.sectMap[".qmss"] = "MSMCSRAM";
    Program.sectMap[".cinit"] = "MSMCSRAM";
    Program.sectMap[".bss"] = "MSMCSRAM";
    Program.sectMap[".const"] = "MSMCSRAM";
    Program.sectMap[".text"] = "MSMCSRAM";
    Program.sectMap[".code"] = "MSMCSRAM";
    Program.sectMap[".switch"] = "MSMCSRAM";
    Program.sectMap[".data"] = "MSMCSRAM";
    Program.sectMap[".fardata"] = "MSMCSRAM";
    Program.sectMap[".args"] = "MSMCSRAM";
    Program.sectMap[".cio"] = "MSMCSRAM";
    Program.sectMap[".vecs"] = "MSMCSRAM";
    Program.sectMap["platform_lib"] = "MSMCSRAM";
    Program.sectMap[".far:taskStackSection"] = "L2SRAM";
    Program.sectMap[".stack"] = "L2SRAM";
    Program.sectMap[".nimu_eth_ll2"] = "L2SRAM";
    Program.sectMap[".resmgr_memregion"] = {loadSegment: "L2SRAM", loadAlign:128}; /* QMSS descriptors region */
    Program.sectMap[".resmgr_handles"] = {loadSegment: "L2SRAM", loadAlign:16}; /* CPPI/QMSS/PA Handles */
    Program.sectMap[".resmgr_pa"] = {loadSegment: "L2SRAM", loadAlign:8}; /* PA Memory */
    Program.sectMap[".far:IMAGEDATA"] = {loadSegment: "L2SRAM", loadAlign: 8};
    Program.sectMap[".far:NDK_OBJMEM"] = {loadSegment: "L2SRAM", loadAlign: 8};
    Program.sectMap[".far:NDK_PACKETMEM"] = {loadSegment: "L2SRAM", loadAlign: 128};

    After this change I managed to boot the program using the NOR writer method. I got a ping and also the leds were blinking (which was an additional indication that I added in order to see of the code was loaded and booted successfully ).

    Does anyone know of any restrictions or additional configuration that must be done in order to work with DDR3 When booting this way?