⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tsip_main.c

📁 dsp tms320c6486的csl例程
💻 C
📖 第 1 页 / 共 2 页
字号:
            *(Uint32 *) (xbitmapa0 + j/16 + GEM_ID * 0x1000000/4 + 0x10000000/4) = bitmap;
            *(Uint32 *) (rbitmapa0 + j/16 + GEM_ID * 0x1000000/4 + 0x10000000/4) = bitmap;
            bitmap = 0;
        }
    }
    bitmappos += bitmapcount;
//        VAL_TRACE(bitmappos);
    xchannela.bitmap = ((xbitmapa0 + GEM_ID * 0x1000000/4 + 0x10000000/4));
    rchannela.bitmap = (rbitmapa0 + GEM_ID * 0x1000000/4 + 0x10000000/4);
#if 0
        DataInc =0x04030201;
        for (j = 0; j < 8 * 16; j++)
        {
            bitmap = (xbitmapa0 [j/16]);
            bitmapcount = 0;
            InputDataInc = 0;
            VAL_TRACE(j);
            VAL_TRACE(bitmap);
            if(((bitmap >> ((j%16) * 2)) & 0x03) != 0)
            {
              
              InputDataInc |= (DataInc << ((j %4)* 8));
              DataInc++;
              VAL_TRACE(InputDataInc);
              VAL_TRACE(DataInc);
              VAL_TRACE(bitmapcount);
              VAL_TRACE(((bitmap >> ((bitmapcount%16) * 2)) & 0x03));
            }
            bitmapcount++;
              VAL_TRACE(InputDataInc);
              VAL_TRACE(DataInc);
              VAL_TRACE(bitmapcount);
              VAL_TRACE(((bitmap >> ((j%16) * 2)) & 0x03));
            if ((j % 4) == 3)
            {
                VAL_TRACE(0x1013);
                VAL_TRACE(j);
                VAL_TRACE(SrcDataIncPtr + (j/4) + 1 + GEM_ID * 0x1000000/4 + 0x10000000/4);
                *(Uint32*)(SrcDataIncPtr + (j/4) + 1 + GEM_ID * 0x1000000/4 + 0x10000000/4) = InputDataInc; 
            }

        }
#endif
        xchannelb.baseaddr = (Uint32) (Xmt0bSrcAddr + GEM_ID * 0x1000000 + 0x10000000);
        xchannelb.falloc = 0x10;
        xchannelb.fsize = 0x10;
        xchannelb.fcount = 0x4;
        for (j = 0; j < CSL_TSIP_BITMAP_SIZE; j++) {
             *(Uint32 *) (xbitmapb0 + j + GEM_ID * 0x1000000/4 + 0x10000000/4) = 0x0;
//             *(Uint32 *) (xbitmapb0 + j ) = 0x0;
        }
        xchannelb.bitmap = ((xbitmapb0 + GEM_ID * 0x1000000/4 + 0x10000000/4));
//        xchannelb.bitmap = ((xbitmapb0 ));

        rchannelb.baseaddr = (Uint32) (Rcv1bDestAddr + GEM_ID * 0x1000000 + 0x10000000);
//        rchannelb.baseaddr = (Uint32) (Rcv1bDestAddr);
        rchannelb.falloc = 0x10;
        rchannelb.fsize = 0x10;
        rchannelb.fcount = 0x1;
        for (j = 0; j < CSL_TSIP_BITMAP_SIZE; j++) {
            *(Uint32 *) (rbitmapb0 + j + GEM_ID * 0x1000000/4 + 0x10000000/4) = 0x0;
//            *(Uint32 *) (rbitmapb0 + j ) = 0x0;
        }
        rchannelb.bitmap = (rbitmapb0 + GEM_ID * 0x1000000/4 + 0x10000000/4);
//        rchannelb.bitmap = (rbitmapb0 );

        tsipSetup.xchana = (CSL_TsipChanSetup*) &(xchannela);
        tsipSetup.xchanb = (CSL_TsipChanSetup*) &(xchannelb);
        tsipSetup.rchana = (CSL_TsipChanSetup*) &(rchannela);
        tsipSetup.rchanb = (CSL_TsipChanSetup*) &(rchannelb);
    
//      VAL_TRACE(*(tsipSetup.ChannelNumber));
}

void CID_Init()
{
    Uint32 i;   //,j,k;

    for (i = 0; i <= Test_List[0].xmt_frame_count ; i++) {
       *(Uint32*)(Xmt0aSrcAddr + 
                  i * (Test_List[0].xmt_frame_size + 9)/4 + 
                   GEM_ID * 0x1000000/4 + 0x10000000/4) = (((TSIP_ID + GEM_ID << 24)) | (i+1));
    }
    for (i = 0; i <= Test_List[1].xmt_frame_count ; i++) {
       *(Uint32*)(Xmt1aSrcAddr + i * (Test_List[1].xmt_frame_size + 9)/4 
                 + GEM_ID * 0x1000000/4+ 0x10000000/4 ) = (((TSIP_ID + GEM_ID << 24)) | (i+1));
    }
    for (i = 0; i <= Test_List[2].xmt_frame_count ; i++) {
       *(Uint32*)(Xmt2aSrcAddr + i * (Test_List[2].xmt_frame_size + 9)/4 
                 + GEM_ID * 0x1000000/4 + 0x10000000/4) = (((TSIP_ID + GEM_ID << 24)) | (i+1));
    }
    for (i = 0; i <= Test_List[3].xmt_frame_count ; i++) {
       *(Uint32*)(Xmt3aSrcAddr + i * (Test_List[3].xmt_frame_size + 9)/4 
                 + GEM_ID * 0x1000000/4 + 0x10000000/4) = (((TSIP_ID + GEM_ID << 24)) | (i+1));
    }
    for (i = 0; i <= Test_List[4].xmt_frame_count ; i++) {
       *(Uint32*)(Xmt4aSrcAddr + i * (Test_List[4].xmt_frame_size + 9)/4 
                 + GEM_ID * 0x1000000/4 + 0x10000000/4) = (((TSIP_ID + GEM_ID << 24)) | (i+1));
    }
    for (i = 0; i <= Test_List[5].xmt_frame_count ; i++) {
       *(Uint32*)(Xmt5aSrcAddr + i * (Test_List[5].xmt_frame_size + 9)/4 
                 + GEM_ID * 0x1000000/4 + 0x10000000/4) = (((TSIP_ID + GEM_ID << 24)) | (i+1));
    }
    CSL_FINST(hTsip0->regs->XCHEN[0].XCHEN, TSIP_XCHEN_CHENB, ENB);
    CSL_FINS(hTsip0->regs->XCHEN[0].XCHEN, TSIP_XCHEN_CID, ((TSIP_ID + GEM_ID << 24)));
    CSL_FINST(hTsip0->regs->XCHEN[1].XCHEN, TSIP_XCHEN_CHENB, ENB);
    CSL_FINS(hTsip0->regs->XCHEN[1].XCHEN, TSIP_XCHEN_CID, ((TSIP_ID + GEM_ID << 24)));
    CSL_FINST(hTsip0->regs->XCHEN[2].XCHEN, TSIP_XCHEN_CHENB, ENB);
    CSL_FINS(hTsip0->regs->XCHEN[2].XCHEN, TSIP_XCHEN_CID, ((TSIP_ID + GEM_ID << 24)));
    CSL_FINST(hTsip0->regs->XCHEN[3].XCHEN, TSIP_XCHEN_CHENB, ENB);
    CSL_FINS(hTsip0->regs->XCHEN[3].XCHEN, TSIP_XCHEN_CID, ((TSIP_ID + GEM_ID << 24)));
    CSL_FINST(hTsip0->regs->XCHEN[4].XCHEN, TSIP_XCHEN_CHENB, ENB);
    CSL_FINS(hTsip0->regs->XCHEN[4].XCHEN, TSIP_XCHEN_CID, ((TSIP_ID + GEM_ID << 24)));
    CSL_FINST(hTsip0->regs->XCHEN[5].XCHEN, TSIP_XCHEN_CHENB, ENB);
    CSL_FINS(hTsip0->regs->XCHEN[5].XCHEN, TSIP_XCHEN_CID, ((TSIP_ID + GEM_ID << 24)));

    CSL_FINST(hTsip0->regs->RCHEN[0].RCHEN, TSIP_RCHEN_CHENB, ENB);
    CSL_FINS(hTsip0->regs->RCHEN[0].RCHEN, TSIP_RCHEN_CID, ((TSIP_ID + GEM_ID << 24)));
    CSL_FINST(hTsip0->regs->RCHEN[1].RCHEN, TSIP_RCHEN_CHENB, ENB);
    CSL_FINS(hTsip0->regs->RCHEN[1].RCHEN, TSIP_RCHEN_CID, ((TSIP_ID + GEM_ID << 24)));
    CSL_FINST(hTsip0->regs->RCHEN[2].RCHEN, TSIP_RCHEN_CHENB, ENB);
    CSL_FINS(hTsip0->regs->RCHEN[2].RCHEN, TSIP_RCHEN_CID, ((TSIP_ID + GEM_ID << 24)));
    CSL_FINST(hTsip0->regs->RCHEN[3].RCHEN, TSIP_RCHEN_CHENB, ENB);
    CSL_FINS(hTsip0->regs->RCHEN[3].RCHEN, TSIP_RCHEN_CID, ((TSIP_ID + GEM_ID << 24)));
    CSL_FINST(hTsip0->regs->RCHEN[4].RCHEN, TSIP_RCHEN_CHENB, ENB);
    CSL_FINS(hTsip0->regs->RCHEN[4].RCHEN, TSIP_RCHEN_CID, ((TSIP_ID + GEM_ID << 24)));
    CSL_FINST(hTsip0->regs->RCHEN[5].RCHEN, TSIP_RCHEN_CHENB, ENB);
    CSL_FINS(hTsip0->regs->RCHEN[5].RCHEN, TSIP_RCHEN_CID, ((TSIP_ID + GEM_ID << 24)));
}

#if 0
void ComputeExpDataInc()
{
    Uint32* datainput0ptr;
    Uint32* datainput1ptr;
    Uint32* Expdata0ptr;
    Uint32* Expdata1ptr;
    Uint32 i,j,k;

       datainput0ptr = (Uint32*) (Xmt0aSrcAddr + GEM_ID * 0x1000000/4 + 0x10000000/4);
       datainput1ptr = (Uint32*) (Xmt1aSrcAddr + GEM_ID * 0x1000000/4 + 0x10000000/4);

       Expdata0ptr = (Uint32*) (ExpectedBuffer0 + GEM_ID * 0x1000000/4 + 0x10000000/4);
       Expdata1ptr = (Uint32*) (ExpectedBuffer1 + GEM_ID * 0x1000000/4 + 0x10000000/4);

       for(i = 0; i < Test_List[0].xmt_frame_count ; i++)
       {
          *(Uint32*)(Expdata0ptr++) = (((TSIP_ID + GEM_ID << 24)) | (i+1));
          *(Uint32*)(Expdata1ptr++) = (((TSIP_ID + GEM_ID << 24)) | (i+1));

          for(j = 0; j < CSL_TSIP_BITMAP_SIZE; j++)
          {
             switch(xbitmapa0[j])
             {

                   case 1 :
                   {
                        *(Uint32*)(Expdata0ptr++) = *(Uint32*)(datainput0ptr++) ; 
                        break;
                   }

                   case 2 :
                   {
                        *(Uint32*)(Expdata0ptr++) = *(Uint32*)(datainput0ptr++) ; 
                        break;
                   }

                   case 3 :
                   {
                        *(Uint32*)(Expdata0ptr++) = *(Uint32*)(datainput0ptr++) ; 
                        break;
                   }
                   default :
                   {
                        break;
                   }
             }
             switch(xbitmapa1[j])
             {

                   case 1 :
                   {
                        *(Uint32*)(Expdata0ptr++) = *(Uint32*)(datainput0ptr++) ;
                        break;
                   }

                   case 2 :
                   {
                        *(Uint32*)(Expdata0ptr++) = *(Uint32*)(datainput0ptr++) ;
                        break;
                   }

                   case 3 :
                   {
                        *(Uint32*)(Expdata0ptr++) = *(Uint32*)(datainput0ptr++) ;
                        break;
                   }
                   default :
                   {
                        break;
                   }
             }
             switch(xbitmapa2[j])
             {

                   case 1 :
                   {
                        *(Uint32*)(Expdata0ptr++) = *(Uint32*)(datainput0ptr++) ;
                        break;
                   }

                   case 2 :
                   {
                        *(Uint32*)(Expdata0ptr++) = *(Uint32*)(datainput0ptr++) ;
                        break;
                   }

                   case 3 :
                   {
                        *(Uint32*)(Expdata0ptr++) = *(Uint32*)(datainput0ptr++) ;
                        break;
                   }
                   default :
                   {
                        break;
                   }
             }
             switch(xbitmapa3[j])
             {

                   case 1 :
                   {
                        *(Uint32*)(Expdata0ptr++) = *(Uint32*)(datainput0ptr++) ;
                        break;
                   }

                   case 2 :
                   {
                        *(Uint32*)(Expdata0ptr++) = *(Uint32*)(datainput0ptr++) ;
                        break;
                   }

                   case 3 :
                   {
                        *(Uint32*)(Expdata0ptr++) = *(Uint32*)(datainput0ptr++) ;
                        break;
                   }
                   default :
                   {
                        break;
                   }
             }
             switch(xbitmapa4[j])
             {

                   case 1 :
                   {
                        *(Uint32*)(Expdata0ptr++) = *(Uint32*)(datainput0ptr++) ;
                        break;
                   }

                   case 2 :
                   {
                        *(Uint32*)(Expdata0ptr++) = *(Uint32*)(datainput0ptr++) ;
                        break;
                   }

                   case 3 :
                   {
                        *(Uint32*)(Expdata0ptr++) = *(Uint32*)(datainput0ptr++) ;
                        break;
                   }
                   default :
                   {
                        break;
                   }
             }
             switch(xbitmapa5[j])
             {

                   case 1 :
                   {
                        *(Uint32*)(Expdata0ptr++) = *(Uint32*)(datainput0ptr++) ;
                        break;
                   }

                   case 2 :
                   {
                        *(Uint32*)(Expdata0ptr++) = *(Uint32*)(datainput0ptr++) ;
                        break;
                   }

                   case 3 :
                   {
                        *(Uint32*)(Expdata0ptr++) = *(Uint32*)(datainput0ptr++) ;
                        break;
                   }
                   default :
                   {
                        break;
                   }
             }
          }
          *(Uint32*)(Expdata0ptr++) = (((TSIP_ID + GEM_ID << 24)) | (i+1));
       }
}
#endif

void main(
    void
)
{
    Uint32 result = FALSE;

//	psc_enable(PSC_TSIP0);
//	wait_domain_enable(PSC_TSIP0);

    result = DoTest();
	if (result == FALSE)
	   printf("Functionality Test... Failed");
}



/********************NG NEW ***********/
CSL_GpioHandle hGpio;
void set_design_done () {//    CSL_Status                  intStat;
//    CSL_GpioPinConfig           config;
//    CSL_GpioPinNum              pinNum;
    CSL_Status                  status;
//    CSL_GpioContext             pContext;
    CSL_GpioObj                 gpioObj;
//    CSL_GpioHwSetup             hwSetup;

//  gpio_handle_t gpio_handle;//  gpio_handle = gpio_open(gpio_instance);    hGpio = CSL_gpioOpen(&gpioObj, CSL_GPIO, NULL, &status);
//  gpio_dir_setup ( gpio_handle,//                   gpio_out_pin_num,//                   GPIO_DIR_OUT,//                   gpio_bnum );
#if 0
    config.pinNum = (CSL_GpioPinNum)gpio_out_pin_num;
    config.trigger = CSL_GPIO_TRIG_RISING_EDGE;
    config.direction = CSL_GPIO_DIR_OUTPUT;
    
    status = CSL_gpioHwControl(hGpio, CSL_GPIO_CMD_CONFIG_BIT, &config);
#endif
//CSL_FINS (hGpio->regs->DIR, GPIO_DIR_DIR12, GPIO_DIR_OUT);
CSL_FINS (hGpio->regs->DIR, GPIO_DIR_DIR12, 0x0);
//  gpio_setclr_data ( gpio_handle,//		     gpio_bnum,//		     gpio_out_pin_num,//		     GPIO_SET_BIT );//    status = CSL_gpioHwControl (hGpio, CSL_GPIO_CMD_SET_BIT, &gpio_out_pin_num);
CSL_FINS (hGpio->regs->SET_DATA, GPIO_SET_DATA_SET12, 1);

//  while((gpio_handle->gpio_regs->BANK.IN_DATA & (1 << gpio_in_pin_num)) == 0){  while ((hGpio->regs->IN_DATA) == 0){
    ;  }//  gpio_setclr_data ( gpio_handle,//		     gpio_bnum,//		     gpio_out_pin_num,//		     GPIO_CLR_BIT );#if 0
    status = CSL_gpioHwControl(hGpio, CSL_GPIO_CMD_CLEAR_BIT, &gpio_out_pin_num);
#endif
CSL_FINS (hGpio->regs->CLR_DATA, GPIO_CLR_DATA_CLR12, 1);
//  while((gpio_handle->gpio_regs->BANK.IN_DATA & (1 << gpio_in_pin_num)) != 0){  while((hGpio->regs->IN_DATA ) != 0){    ;  }//  gpio_close(gpio_handle);  CSL_gpioClose(hGpio);  return;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -