📄 encode.c
字号:
/*********************************************************************************/
void initiCache()
{
*(volatile unsigned int *)(Cache_CCFG_ADDR)=0x00000000; //L2 memory is configured as 64K byte SRAM
*(volatile unsigned int *) MAR0_ADDR=0;
*(volatile unsigned int *) MAR8_ADDR=0;
return;
}
/*********************************************************************************/
extern unsigned int far RESET,NMI,RESV1,RESV2,ERROR4,ERROR5,ERROR6,ERROR7;
extern unsigned int far ERROR8,ERROR9,ERROR10,ERROR11,ERROR12,ERROR13,ERROR14,ERROR15;
//extern unsigned int far _INT4,_INT5,_INT6,_INT7,_INT8,_INT9,_INT10;
//extern unsigned int _INT11,_INT12,_INT13,_INT14,_INT15;
unsigned int far *my_isr_jump_table[16]={
(unsigned int *) (&RESET),
(unsigned int *) (&NMI),
(unsigned int *) (&RESV1),
(unsigned int *) (&RESV2),
(unsigned int *) (&ERROR4),
(unsigned int *) (&ERROR5),
(unsigned int *) (&ERROR6),
(unsigned int *) (&ERROR7),
(unsigned int *) (&ERROR8),
(unsigned int *) (&ERROR9),
(unsigned int *) (&ERROR10),
(unsigned int *) (&ERROR11),
(unsigned int *) (&ERROR12),
(unsigned int *) (&ERROR13),
(unsigned int *) (&ERROR14),
(unsigned int *) (&ERROR15)};
/*********************************************************************************/
void my_intr_hook(void (*fp)(void),int cpu_intr)
{
if((cpu_intr>0)&&(cpu_intr<16))
*((unsigned int *)my_isr_jump_table+cpu_intr)=(unsigned int)fp;
return;
}
void initiInterrupt()
{
/*As for Interrupt multiplexer Register setting,we use default interrupt mapping*/
/*EXT_INT4 is mapped to INT4,EXT_INT4 is ADV601_INT which interrupt C6211 for reading data from ADV601*/
/*EXT_INT5 is mapped to INT5,EXT_INT5 is CPLD_INT1 which interrupt C6211 for reading the state of ADV601*/
/*EXT_INT6 is mapped to INT6,EXT_INT6 is USB_INT which is used for USB*/
/*EXT_INT7 is mapped to INT7,EXT_INT7 is UART_INT which is used for UART*/
/*EDMA_INT is mapped to INT8*/
/*SD_INT(SDRAM timer interrupt) is mapped to INT10*/
/*DSPINT(host port to DSP interrupt) is mapped to INT13*/
/*MCBSP1_SEND is mapped to INT14*/
/*MCBSP1_REC is mapped to INT15*/
// my_intr_reset();
// my_intr_hook(,CPU_INT5);
// my_intr_hook(,CPU_INT14);
// my_intr_hook(USB_interrupt,CPU_INT6); //hook USB_interrupt function with CPU_INT6
// my_intr_hook(Isr_Mcbsp0_rec,CPU_INT13);
*(unsigned int *) 0x019c0000=0x3dcd3143;//0x3dc02d43;//0x35802d43;
*(unsigned int *) 0x019c0004=0x250718a4;
INTR_ENABLE(CPU_INT_NMI);
INTR_DISABLE(CPU_INT4);
INTR_DISABLE(CPU_INT5);
INTR_DISABLE(CPU_INT6);
INTR_DISABLE(CPU_INT7);
INTR_ENABLE(CPU_INT8);
INTR_DISABLE(CPU_INT9);
INTR_DISABLE(CPU_INT10);
INTR_DISABLE(CPU_INT11);
INTR_DISABLE(CPU_INT12);
INTR_ENABLE(CPU_INT13);
INTR_DISABLE(CPU_INT14);
INTR_DISABLE(CPU_INT15);
INTR_GLOBAL_DISABLE();
return;
}
/***********************************************************************************/
void my_intr_reset()
{
/*CSR=02,IER=1,ICR=0xfff0*/
unsigned int val;
INTR_GLOBAL_DISABLE();
/*disable interrupt*/
SET_REG(IER,1); //disabel all interrupt except reset
SET_REG(ICR,0xfff0); //clear Interrupt clear register
*(volatile unsigned int *)(INTR_MULTIPLEX_HIGH_ADDR)=0x3dc02d43;
/*initiate interrupt service table pointer*/
val=0;
SET_REG(ISTP,val);
*(volatile unsigned int *)(EXTERNAL_INTR_POL_ADDR)=0x00000000; //from low to high trigger interrupt
return;
}
void emptyAdvFifo( int datanum)
{
unsigned int temp;
unsigned int *ptemp;
int i;
ptemp=gpAddVideo[0];
temp=*(volatile unsigned int *) ADV601_DIR_REG3_ADDR;
if ((temp&0x00000008)==8)
{
*(volatile unsigned int *)(EDMA_CIPR_ADDR)=2;
*(volatile unsigned int *)(ParaForEvent0_start )=0x40210001;
*(volatile unsigned int *)(ParaForEvent0_start+0x4 )=ADV601_DIR_REG2_ADDR;
*(volatile unsigned int *)(ParaForEvent0_start+0x8 )=datanum;
*(volatile unsigned int *)(ParaForEvent0_start+0xc )=(unsigned int )ptemp+2;
*(volatile unsigned int *)(ParaForEvent0_start+0x10)=0;
*(volatile unsigned int *)(ParaForEvent0_start+0x14)=0;
*(volatile unsigned int *)(EDMA_ESR_ADDR)=0x2;
}
temp=*(volatile unsigned int *)(EDMA_CIPR_ADDR);
while ((temp&0x2)==0)
{
temp=*(volatile unsigned int *)(EDMA_CIPR_ADDR);
i++;
if (i>=250) temp=2;
}
}
void emptydatabuf()
{
unsigned int i;
unsigned int* ptemp1;
unsigned int* ptemp2;
ptemp1=(unsigned int*)gpAddVideo[0];
ptemp2=(unsigned int*)gpAddVideo[1];
for(i=0;i<2500;i++)
{
ptemp1[i]=0;
ptemp2[i]=0;
}
}
//=========================== Default Bin Widths: =======================
unsigned short BWC4Dcomp[84] =
{
0x0157, 0x02FC, 0x002F, 0x15BB, 0x002F, 0x15A1, 0x02C0, 0x0175, 0x008E, 0x0739,
0x008E, 0x0733, 0x02CE, 0x016D, 0x008D, 0x073E, 0x008E, 0x0735, 0x02C9, 0x0170,
0x008E, 0x0739, 0x008E, 0x0733, 0x0597, 0x00B7, 0x016F, 0x02CB, 0x0170, 0x02C9,
0x059D, 0x00B6, 0x016F, 0x02CB, 0x0170, 0x02C9, 0x0599, 0x00B7, 0x016F, 0x02CB,
0x0170, 0x02C9, 0x0B38, 0x005B, 0x031B, 0x014A, 0x031D, 0x0149, 0x0B31, 0x005C,
0x031A, 0x014A, 0x031D, 0x0149, 0x0B36, 0x005B, 0x031A, 0x014A, 0x031D, 0x0149,
0x1661, 0x002E, 0x0659, 0x00A1, 0x065E, 0x00A1, 0x1670, 0x002E, 0x065A, 0x00A1,
0x065E, 0x00A1, 0x167D, 0x002E, 0x065B, 0x00A1, 0x065F, 0x00A1, 0x1522, 0x0030,
0x0656, 0x00A2, 0x065C, 0x00A1
};
/*
{
0x0006, 0xa417, 0x0005, 0xc62b, 0x0005, 0xc62b, 0x001d, 0x23d5, 0x0018, 0x2b46,
0x0018, 0x2b46, 0x0022, 0x1ddc, 0x001c, 0x2410, 0x001c, 0x2410, 0x0022, 0x1ddc,
0x001c, 0x2410, 0x001c, 0x2410, 0x0055, 0x0c1a, 0x0046, 0x0e9d, 0x0046, 0x0e9d,
0x0066, 0x0a16, 0x0054, 0x0c2e, 0x0054, 0x0c2e, 0x0066, 0x0a16, 0x0054, 0x0c2e,
0x0054, 0x0c2e, 0x0155, 0x0301, 0x011a, 0x03a1, 0x011a, 0x03a1, 0x0199, 0x0281,
0x0153, 0x0306, 0x0153, 0x0306, 0x0199, 0x0281, 0x0153, 0x0306, 0x0153, 0x0306,
0x047e, 0x00e4, 0x03b6, 0x0114, 0x03b6, 0x0114, 0x0564, 0x00be, 0x0474, 0x00e6,
0x0474, 0x00e6, 0x0564, 0x00be, 0x0474, 0x00e6, 0x0474, 0x00e6, 0x0810, 0x007f,
0x06a6, 0x009a, 0x06a6, 0x009a
};
*/
unsigned short BWC4Lcomp[84] =
{
0x0157, 0x02FC, 0x002F, 0x15BB, 0x002F, 0x15A1, 0x02C0, 0x0175, 0x008E, 0x0739,
0x008E, 0x0733, 0x02CE, 0x016D, 0x008D, 0x073E, 0x008E, 0x0735, 0x02C9, 0x0170,
0x008E, 0x0739, 0x008E, 0x0733, 0x0597, 0x00B7, 0x016F, 0x02CB, 0x0170, 0x02C9,
0x059D, 0x00B6, 0x016F, 0x02CB, 0x0170, 0x02C9, 0x0599, 0x00B7, 0x016F, 0x02CB,
0x0170, 0x02C9, 0x0B38, 0x005B, 0x031B, 0x014A, 0x031D, 0x0149, 0x0B31, 0x005C,
0x031A, 0x014A, 0x031D, 0x0149, 0x0B36, 0x005B, 0x031A, 0x014A, 0x031D, 0x0149,
0x1661, 0x002E, 0x0659, 0x00A1, 0x065E, 0x00A1, 0x1670, 0x002E, 0x065A, 0x00A1,
0x065E, 0x00A1, 0x167D, 0x002E, 0x065B, 0x00A1, 0x065F, 0x00A1, 0x1522, 0x0030,
0x0656, 0x00A2, 0x065C, 0x00A1
};
/*
{
0x0006, 0xa417, 0x0005, 0xc62b, 0x0005, 0xc62b, 0x001d, 0x23d5, 0x0018, 0x2b46,
0x0018, 0x2b46, 0x0022, 0x1ddc, 0x001c, 0x2410, 0x001c, 0x2410, 0x0022, 0x1ddc,
0x001c, 0x2410, 0x001c, 0x2410, 0x0055, 0x0c1a, 0x0046, 0x0e9d, 0x0046, 0x0e9d,
0x0066, 0x0a16, 0x0054, 0x0c2e, 0x0054, 0x0c2e, 0x0066, 0x0a16, 0x0054, 0x0c2e,
0x0054, 0x0c2e, 0x0155, 0x0301, 0x011a, 0x03a1, 0x011a, 0x03a1, 0x0199, 0x0281,
0x0153, 0x0306, 0x0153, 0x0306, 0x0199, 0x0281, 0x0153, 0x0306, 0x0153, 0x0306,
0x047e, 0x00e4, 0x03b6, 0x0114, 0x03b6, 0x0114, 0x0564, 0x00be, 0x0474, 0x00e6,
0x0474, 0x00e6, 0x0564, 0x00be, 0x0474, 0x00e6, 0x0474, 0x00e6, 0x0810, 0x007f,
0x06a6, 0x009a, 0x06a6, 0x009a
};
*/
/*******************EDMA USAGE*******************************/
/* *(volatile unsigned int *)(EDMA_CIPR_ADDR)=2;
*(volatile unsigned int *)(ParaForEvent0_start )=0x40210001;
*(volatile unsigned int *)(ParaForEvent0_start+0x4 )=ADV601_DIR_REG2_ADDR;
*(volatile unsigned int *)(ParaForEvent0_start+0x8 )=250;
*(volatile unsigned int *)(ParaForEvent0_start+0xc )=(unsigned int )ptemp+2;
*(volatile unsigned int *)(ParaForEvent0_start+0x10)=0;
*(volatile unsigned int *)(ParaForEvent0_start+0x14)=0;
*(volatile unsigned int *)(EDMA_ESR_ADDR)=0x2;
databuflong=databuflong+250;
*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -