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.

How to access peripheral(Mailbox) from C64x+ DSP

Other Parts Discussed in Thread: SYSCONFIG

Hello, I am newbie to the C64x+ DSP in OMAP35x.

I got Linux &  running on the ARM, and  µC/OS-II  running on the C64x+ DSP.  

 I want to access (read / write) the  Mailbox from the DSP-side.

i try to configure  and enable mmu,but still can not access  the Mailbox

/* MMU configuration Port */
*(int*)0x5D000050 = 0x00000000;
*(int*)0x5D000058 = 0x5D00000C;
*(int*)0x5D00005C = 0x5D000140;
*(int*)0x5D000054 = 0x00000001;

/* L4 - 0x48000000 */
*(int*)0x5D000050 = 0x00000010;
*(int*)0x5D000058 = 0x4800000C;
*(int*)0x5D00005C = 0x48000140;
*(int*)0x5D000054 = 0x00000001;


/* Enable MMU */
*(int *)0x5D000044 |= 0x2;

How & what do I need to setup on the OMAP3530 to allow the DSP to talk to the Mailbox ?

Thanks,

/Chu.

 

  • Hi Chu,

    Could you check the TRM section 14.3.4.3 Sequencer to DSP Megamodule Interrupts to clarify how to allow the DSP to correspond with the CPU.

    http://www.ti.com/lit/ug/spruf98x/spruf98x.pdf

    BR

    Tsvetolin Shulev

  • Hi Shulev,

    Thank you for your quick response.

    I Check the TRM section 14.3.4.3 Sequencer to DSP Megamodule Interrupts,but I still can solve my Problem

    Here's  I Use Mailbox code  ( Ref   from TRM section 6  Interprocessor Communication)

    Step1 : Configure Mailbox

    Mailbox_Clock = (unsigned int*)(0x48004A10);
    Mailbox_Sysconfig = (unsigned int*)(0x48094010);
    Mailbox_Sysstatus = (unsigned int*)(0x48094014);
    Mailbox_Irqenable = (unsigned int*)(0x4809410C );

    *Mailbox_Clock =(*Mailbox_Clock & 0xFFFFFF7F) | (( 1 & 0x00000001)<<7);
    *Mailbox_Sysconfig =(*Mailbox_Sysconfig & 0xFFFFFFFD) | (( 1 & 0x00000001)<<1);

    tmp=(*Mailbox_Sysstatus);
    tmp=(tmp & 0x00000001);
    while(tmp!=1)
    {
    }

    *Mailbox_Irqenable = (*Mailbox_Irqenable & 0xFFFFFFFE ) | ( ( 1 & 0x00000001));

    Step2 : Use Mailbox0( Write data into Mailbox0)

     data_value=( unsigned int*)(0x48094040);
    *data_value = data;

    Step3 : Show Number of Messages in Mailbox0 

    tmp= *(unsigned int*)(0x480940C0);

    tmp = (tmp & 0x00000007) ;
    printf("Message_Num=%d\n",tmp);

    The Message_Num is 0,

    This Result Seems I can not write  data into Mailbox0

     

    How & what do I need to setup on the OMAP3530 to allow the DSP to aceess  the Mailbox ?

    Thanks,

    /Chu.