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 on share NetCP between sys/bios program and Linux c6x



Hi to all

i try to share NetCP between sys/bios program on core 1-7 and linux c6x on core 0 in c6678 EVM similar this :

(i use CCS 5.3 , PKD 1.2.1.6) 

i can boot Linux c6x on core 0 and succeed to run modified PA_multicoreExample (PDK 1_2_1_6) on core 1-4 but after run core 1-4 , packets send and receive to/from PC correctly and Linux Kernel run without problem (i connect to linux using UART rerminal) but Linux Network hanging after run PA_multicoreExample (i can't ping linux and connect it using telnet)

any body can guide me how to config NetCP and Multicore navigator (QMSS) ?

thanks

Ebi

  • Hi, Ebi,

    The example can not be run as is when there is Linux running. The example assumes DSP owns all resources, but when Linux running, it also configures NetCP. You will need to modify the example so it is not running as a master.

    Rex

  • Rex,

    Thanks for your reply

    from NetCP UG initialization procedure is:

    you are right, i debug sys/bios code (PA_multicore) and i see first problem is in cppi_qmss_mgmt.c :: Init_Qmss (Void) :: Qmss_init (LLD for Link RAM config)

    i have some questions:

    Q1: i edit memory config of sys/bios code and change "share memory" range (x0C000000-0x0C0F800 for Linux / 0x0C0F800- 0x0C400000 for sys/bios)

    if i run PA_muticoreExample on core 1-3 as slave error accured in multicore_example.c :: Setup_RX()

    i think this caused for separate memory config is it correct ?

    Q2: edit Linux kernel is necessary? (if yes please explain more)

    i search in google and E2E and can't find relate post or document .can you please explain about road map?

    (your information can be very useful for anybody that want share peripheral between Linux and sys/bios in future)

    thanks a lot

    Ebi

  • Hi, Ebi,

    It is not memory configuration. Linux downloads the NetCP firmware. When running PA_example, the firmware will be downloaded again by DSP core 0 which will wipes out what Linux has done. Linux statically takes several indexes in PA entries which the example should avoid. Also, Linux configures DMA which DSP shouldn't redo it.

    The roadmap of Linux-c6x? or C6678? There will be no roadmap for Linux-c6x because we don't see much activities on it. C6678 is TI Keystone-I family and TI has Keystone-II devices. One of the KS2 devices is K2H12 which has 4 ARM cores and 8 DSP cores. The kernel on KS2 and Sitara family will be the Linux kernel on ARM core (SMP Linux in case of multiple ARM cores) instead of ucLinux on C6678.

    Rex

  • Hi Rex,

    thanks for useful information and sorry for replying late (i was out of office)

    i understand from your post that edit Linux not necessary (answer to Q2)

    i will work on sys/bios code

    thanks

    Ebi

  • Hi to all

    i modify PA_multicoreExample :

    in cppi_qmss_mgmt.c :: Init_Qmss()  i change :

     
        qmssInitConfig.pdspFirmware[0].firmware = (void *) &acc48_le;
    

    to

          
        qmssInitConfig.pdspFirmware[0].firmware = NULL;
    

    for prevent LLD from download the firmware.after this change, Qmss_init (&qmssInitConfig, &qmssGblCfgParams) work without Linux Network hanging

    but Qmss_insertMemoryRegion(&memCfg) caused Linux Kernel panic (hang completely)

    if i remove Qmss_insertMemoryRegion , Error code -136 (CPPI_QMSS_MEMREGION_NOT_INITIALIZED) report in Cppi_initDescriptor (&cppiDescCfg, &numAllocated)) 

    anybody can guide me how to create free descriptor or how to use Linux c6x free descriptor in sys/bios

    thanks

    Ebi