www.pudn.com > SJF2443.zip > pin2443.c


/* - 16/05/2002 [Jaewook Cheong] : first writing for S3C2443 */ 
 
#include  
#include "..\include\def.h" 
#include "..\include\pin2443.h" 
#include "..\include\Jtag.h" 
 
// Boundary Scan Cell In/Out Interface     
char outCellValue[S2443_MAX_CELL_INDEX+2]; //691+2 => 692(#BSC of 2443) + 1(End of String) 
char inCellValue[S2443_MAX_CELL_INDEX+2]; //691+2 => 692(#BSC of 2443) + 1(End of String) 
 
// Index Array for RData In/Out and RAddr BSC       
int  rdataOutCellIndex[16]; 
int  rdataInCellIndex[16]; 
int  raddrCellIndex[26]; 
 
// Index Array for SData In/Out and SAddr BSC       
int  sdataOutCellIndex[32]; 
int  sdataInCellIndex[32]; 
int  saddrCellIndex[16]; 
 
 
void S2443_InitCell(void) 
{ 
    int i; 
	 
	// ROM bus addr & data cell index 
	rdataOutCellIndex[0] = RDATA0_OUT;  //refer to S3C2443_jtag_buf.bsd 
    rdataOutCellIndex[1] = RDATA1_OUT;  
    rdataOutCellIndex[2] = RDATA2_OUT; 
    rdataOutCellIndex[3] = RDATA3_OUT; 
    rdataOutCellIndex[4] = RDATA4_OUT; 
    rdataOutCellIndex[5] = RDATA5_OUT; 
    rdataOutCellIndex[6] = RDATA6_OUT; 
    rdataOutCellIndex[7] = RDATA7_OUT;	 
    rdataOutCellIndex[8] = RDATA8_OUT; 
    rdataOutCellIndex[9] = RDATA9_OUT; 
    rdataOutCellIndex[10] = RDATA10_OUT; 
    rdataOutCellIndex[11] = RDATA11_OUT; 
    rdataOutCellIndex[12] = RDATA12_OUT; 
    rdataOutCellIndex[13] = RDATA13_OUT; 
    rdataOutCellIndex[14] = RDATA14_OUT; 
    rdataOutCellIndex[15] = RDATA15_OUT;	 
 
    rdataInCellIndex[0] = RDATA0_IN;	//refer to S3C2443_jtag_buf.bsd  
    rdataInCellIndex[1] = RDATA1_IN; 
    rdataInCellIndex[2] = RDATA2_IN; 
    rdataInCellIndex[3] = RDATA3_IN; 
    rdataInCellIndex[4] = RDATA4_IN; 
    rdataInCellIndex[5] = RDATA5_IN; 
    rdataInCellIndex[6] = RDATA6_IN; 
    rdataInCellIndex[7] = RDATA7_IN; 
    rdataInCellIndex[8] = RDATA8_IN;   
    rdataInCellIndex[9] = RDATA9_IN; 
    rdataInCellIndex[10] = RDATA10_IN; 
    rdataInCellIndex[11] = RDATA11_IN; 
    rdataInCellIndex[12] = RDATA12_IN; 
    rdataInCellIndex[13] = RDATA13_IN; 
    rdataInCellIndex[14] = RDATA14_IN; 
    rdataInCellIndex[15] = RDATA15_IN; 
 
    raddrCellIndex[0]=RADDR0;  //refer to S3C2443_jtag_buf.bsd 
    raddrCellIndex[1]=RADDR1; 
    raddrCellIndex[2]=RADDR2; 
    raddrCellIndex[3]=RADDR3; 
    raddrCellIndex[4]=RADDR4; 
    raddrCellIndex[5]=RADDR5; 
    raddrCellIndex[6]=RADDR6; 
    raddrCellIndex[7]=RADDR7; 
    raddrCellIndex[8]=RADDR8; 
    raddrCellIndex[9]=RADDR9; 
    raddrCellIndex[10]=RADDR10; 
    raddrCellIndex[11]=RADDR11; 
    raddrCellIndex[12]=RADDR12; 
    raddrCellIndex[13]=RADDR13; 
    raddrCellIndex[14]=RADDR14; 
    raddrCellIndex[15]=RADDR15; 
    raddrCellIndex[16]=RADDR16; 
    raddrCellIndex[17]=RADDR17; 
    raddrCellIndex[18]=RADDR18; 
    raddrCellIndex[19]=RADDR19; 
    raddrCellIndex[20]=RADDR20; 
    raddrCellIndex[21]=RADDR21; 
    raddrCellIndex[22]=RADDR22; 
    raddrCellIndex[23]=RADDR23; 
    raddrCellIndex[24]=RADDR24; 
    raddrCellIndex[25]=RADDR25; 
 
	// SDRAM bus addr & data cell index 
    sdataOutCellIndex[0] = SDATA0_OUT;  //refer to S3C2443_jtag_buf.bsd 
    sdataOutCellIndex[1] = SDATA1_OUT;  
    sdataOutCellIndex[2] = SDATA2_OUT; 
    sdataOutCellIndex[3] = SDATA3_OUT; 
    sdataOutCellIndex[4] = SDATA4_OUT; 
    sdataOutCellIndex[5] = SDATA5_OUT; 
    sdataOutCellIndex[6] = SDATA6_OUT; 
    sdataOutCellIndex[7] = SDATA7_OUT;	 
    sdataOutCellIndex[8] = SDATA8_OUT; 
    sdataOutCellIndex[9] = SDATA9_OUT; 
    sdataOutCellIndex[10] = SDATA10_OUT; 
    sdataOutCellIndex[11] = SDATA11_OUT; 
    sdataOutCellIndex[12] = SDATA12_OUT; 
    sdataOutCellIndex[13] = SDATA13_OUT; 
    sdataOutCellIndex[14] = SDATA14_OUT; 
    sdataOutCellIndex[15] = SDATA15_OUT;	 
    sdataOutCellIndex[16] = SDATA16_OUT; 
    sdataOutCellIndex[17] = SDATA17_OUT; 
    sdataOutCellIndex[18] = SDATA18_OUT; 
    sdataOutCellIndex[19] = SDATA19_OUT; 
    sdataOutCellIndex[20] = SDATA20_OUT; 
    sdataOutCellIndex[21] = SDATA21_OUT; 
    sdataOutCellIndex[22] = SDATA22_OUT; 
    sdataOutCellIndex[23] = SDATA23_OUT;	 
    sdataOutCellIndex[24] = SDATA24_OUT; 
    sdataOutCellIndex[25] = SDATA25_OUT; 
    sdataOutCellIndex[26] = SDATA26_OUT; 
    sdataOutCellIndex[27] = SDATA27_OUT; 
    sdataOutCellIndex[28] = SDATA28_OUT; 
    sdataOutCellIndex[29] = SDATA29_OUT; 
    sdataOutCellIndex[30] = SDATA30_OUT; 
    sdataOutCellIndex[31] = SDATA31_OUT;	 
 
    sdataInCellIndex[0] = SDATA0_IN;	//refer to S3C2443_jtag_buf.bsd  
    sdataInCellIndex[1] = SDATA1_IN; 
    sdataInCellIndex[2] = SDATA2_IN; 
    sdataInCellIndex[3] = SDATA3_IN; 
    sdataInCellIndex[4] = SDATA4_IN; 
    sdataInCellIndex[5] = SDATA5_IN; 
    sdataInCellIndex[6] = SDATA6_IN; 
    sdataInCellIndex[7] = SDATA7_IN; 
    sdataInCellIndex[8] = SDATA8_IN;   
    sdataInCellIndex[9] = SDATA9_IN; 
    sdataInCellIndex[10] = SDATA10_IN; 
    sdataInCellIndex[11] = SDATA11_IN; 
    sdataInCellIndex[12] = SDATA12_IN; 
    sdataInCellIndex[13] = SDATA13_IN; 
    sdataInCellIndex[14] = SDATA14_IN; 
    sdataInCellIndex[15] = SDATA15_IN; 
    sdataInCellIndex[16] = SDATA16_IN;   
    sdataInCellIndex[17] = SDATA17_IN; 
    sdataInCellIndex[18] = SDATA18_IN; 
    sdataInCellIndex[19] = SDATA19_IN; 
    sdataInCellIndex[20] = SDATA20_IN; 
    sdataInCellIndex[21] = SDATA21_IN; 
    sdataInCellIndex[22] = SDATA22_IN; 
    sdataInCellIndex[23] = SDATA23_IN; 
    sdataInCellIndex[24] = SDATA24_IN;   
    sdataInCellIndex[25] = SDATA25_IN; 
    sdataInCellIndex[26] = SDATA26_IN; 
    sdataInCellIndex[27] = SDATA27_IN; 
    sdataInCellIndex[28] = SDATA28_IN; 
    sdataInCellIndex[29] = SDATA29_IN; 
    sdataInCellIndex[30] = SDATA30_IN; 
    sdataInCellIndex[31] = SDATA31_IN; 
   
    saddrCellIndex[0]=SADDR0;  //refer to S3C2443_jtag_buf.bsd 
    saddrCellIndex[1]=SADDR1; 
    saddrCellIndex[2]=SADDR2; 
    saddrCellIndex[3]=SADDR3; 
    saddrCellIndex[4]=SADDR4; 
    saddrCellIndex[5]=SADDR5; 
    saddrCellIndex[6]=SADDR6; 
    saddrCellIndex[7]=SADDR7; 
    saddrCellIndex[8]=SADDR8; 
    saddrCellIndex[9]=SADDR9; 
    saddrCellIndex[10]=SADDR10; 
    saddrCellIndex[11]=SADDR11; 
    saddrCellIndex[12]=SADDR12; 
    saddrCellIndex[13]=SADDR13; 
    saddrCellIndex[14]=SADDR14; 
    saddrCellIndex[15]=SADDR15; 
 
    //outCellValue[] must be initialized by dummy values for JTAG_ShiftDRState(); 
    for(i=0;i<=S2443_MAX_CELL_INDEX;i++) //From i=0 to i=691 
    { 
		outCellValue[i]=HIGH; //'1' 
		inCellValue[i]='u'; 
    } 
 
    outCellValue[S2443_MAX_CELL_INDEX+1]='\0'; 
    inCellValue[S2443_MAX_CELL_INDEX+1]='\0'; 
 
    JTAG_RunTestldleState(); 
     
	JTAG_ShiftIRState(SAMPLE_PRELOAD); 
 
	//for(i=0;i<=S2443_MAX_CELL_INDEX;i++) 
	//	printf("\nBefor: inCellValue[%d]=%c", i, inCellValue[i]); 
 
    JTAG_ShiftDRState(outCellValue,inCellValue); //inCellValue[] is initialized. 
 
    //for(i=0;i<=S2443_MAX_CELL_INDEX;i++) 
		//printf("\nAfter: inCellValue[%d]=%c", i, inCellValue[i]); 
 
    for(i=0;i<=S2443_MAX_CELL_INDEX;i++) 
    { 
		outCellValue[i]=inCellValue[i];	//outCellValue[] is initialized. 
    } 
 
    //Memory control signal initialization. 
	S2443_ContRDataBus(HIGH); // RData input 
	S2443_ContSDataBus(HIGH); // SData input 
	S2443_ContRAddrBus(LOW); // RAddr output 
 
    S2443_SetPin(nRCS5_CON,LOW);  
    S2443_SetPin(nRCS5,HIGH);  
    S2443_SetPin(nRCS4_CON,LOW);  
    S2443_SetPin(nRCS4,HIGH);  
    S2443_SetPin(nRCS3_CON,LOW);  
    S2443_SetPin(nRCS3,HIGH);  
    S2443_SetPin(nRCS2_CON,LOW);  
    S2443_SetPin(nRCS2,HIGH);  
    S2443_SetPin(nRCS1_CON,LOW);  
    S2443_SetPin(nRCS1,HIGH);  
    S2443_SetPin(nRCS0_CON,LOW); 
    S2443_SetPin(nRCS0,HIGH);  
     
	S2443_SetPin(nWE,HIGH);  
    S2443_SetPin(nOE,HIGH);  
     
	S2443_SetPin(nBE0,HIGH);  
    S2443_SetPin(nBE1,HIGH);  
 
    S2443_SetPin(nFRE,HIGH);  
    S2443_SetPin(nFWE,HIGH);  
    S2443_SetPin(nFCE,HIGH);  
 
	S2443_SetPin(nSCS1_CON,LOW);  
    S2443_SetPin(nSCS1,HIGH);  
	S2443_SetPin(nSCS0_CON,LOW);  
    S2443_SetPin(nSCS0,HIGH);  
 
} 
 
void S2443_ContRAddrBus(U8 cmd) // RAddr[25:0] LOW=output 
{ 
    S2443_SetPin(RADDR0_CON,cmd); 
    S2443_SetPin(RADDR1_CON,cmd); 
    S2443_SetPin(RADDR2_CON,cmd); 
    S2443_SetPin(RADDR3_CON,cmd); 
    S2443_SetPin(RADDR4_CON,cmd); 
    S2443_SetPin(RADDR5_CON,cmd); 
    S2443_SetPin(RADDR6_CON,cmd); 
    S2443_SetPin(RADDR7_CON,cmd); 
    S2443_SetPin(RADDR8_CON,cmd); 
    S2443_SetPin(RADDR9_CON,cmd); 
    S2443_SetPin(RADDR10_CON,cmd); 
    S2443_SetPin(RADDR11_CON,cmd); 
    S2443_SetPin(RADDR12_CON,cmd); 
    S2443_SetPin(RADDR13_CON,cmd); 
    S2443_SetPin(RADDR14_CON,cmd); 
    S2443_SetPin(RADDR15_CON,cmd); 
    S2443_SetPin(RADDR16_CON,cmd); 
    S2443_SetPin(RADDR17_CON,cmd); 
    S2443_SetPin(RADDR18_CON,cmd); 
    S2443_SetPin(RADDR19_CON,cmd); 
    S2443_SetPin(RADDR20_CON,cmd); 
    S2443_SetPin(RADDR21_CON,cmd); 
    S2443_SetPin(RADDR22_CON,cmd); 
    S2443_SetPin(RADDR23_CON,cmd); 
    S2443_SetPin(RADDR24_CON,cmd); 
    S2443_SetPin(RADDR25_CON,cmd); 
} 
 
 
void S2443_ContRDataBus(U8 cmd) // RData[15:0] HIGH=input, LOW=output 
{ 
	S2443_SetPin(RDATA0_CON ,cmd);  
    S2443_SetPin(RDATA1_CON ,cmd);  
    S2443_SetPin(RDATA2_CON ,cmd);  
    S2443_SetPin(RDATA3_CON ,cmd);  
    S2443_SetPin(RDATA4_CON ,cmd);  
    S2443_SetPin(RDATA5_CON ,cmd);  
    S2443_SetPin(RDATA6_CON ,cmd);  
    S2443_SetPin(RDATA7_CON ,cmd);  
	S2443_SetPin(RDATA8_CON ,cmd); 
    S2443_SetPin(RDATA9_CON ,cmd);  
    S2443_SetPin(RDATA10_CON ,cmd);  
    S2443_SetPin(RDATA11_CON ,cmd);  
    S2443_SetPin(RDATA12_CON ,cmd);  
    S2443_SetPin(RDATA13_CON ,cmd);  
    S2443_SetPin(RDATA14_CON ,cmd);  
    S2443_SetPin(RDATA15_CON ,cmd);  
} 
 
 
void S2443_ContSDataBus(U8 cmd) // SData[31:0] HIGH=input, LOW=output 
{ 
    S2443_SetPin(SDATA0_CON ,cmd);  
    S2443_SetPin(SDATA1_CON ,cmd);  
    S2443_SetPin(SDATA2_CON ,cmd);  
    S2443_SetPin(SDATA3_CON ,cmd);  
    S2443_SetPin(SDATA4_CON ,cmd);  
    S2443_SetPin(SDATA5_CON ,cmd);  
    S2443_SetPin(SDATA6_CON ,cmd);  
    S2443_SetPin(SDATA7_CON ,cmd);  
    S2443_SetPin(SDATA8_CON ,cmd); 
    S2443_SetPin(SDATA9_CON ,cmd);  
    S2443_SetPin(SDATA10_CON ,cmd);  
    S2443_SetPin(SDATA11_CON ,cmd);  
    S2443_SetPin(SDATA12_CON ,cmd);  
    S2443_SetPin(SDATA13_CON ,cmd);  
    S2443_SetPin(SDATA14_CON ,cmd);  
    S2443_SetPin(SDATA15_CON ,cmd);  
    S2443_SetPin(SDATA16_CON ,cmd);  
    S2443_SetPin(SDATA17_CON ,cmd);  
    S2443_SetPin(SDATA18_CON ,cmd);  
    S2443_SetPin(SDATA19_CON ,cmd);  
    S2443_SetPin(SDATA20_CON ,cmd);  
    S2443_SetPin(SDATA21_CON ,cmd);  
    S2443_SetPin(SDATA22_CON ,cmd);  
    S2443_SetPin(SDATA23_CON ,cmd);  
    S2443_SetPin(SDATA24_CON ,cmd);  
    S2443_SetPin(SDATA25_CON ,cmd);  
    S2443_SetPin(SDATA26_CON ,cmd);  
    S2443_SetPin(SDATA27_CON ,cmd);  
    S2443_SetPin(SDATA28_CON ,cmd);  
    S2443_SetPin(SDATA29_CON ,cmd);  
    S2443_SetPin(SDATA30_CON ,cmd);  
    S2443_SetPin(SDATA31_CON ,cmd);  
} 
 
 
void S2443_SetPin(int index, char value) 
{ 
    outCellValue[index] = value; 
} 
 
 
char S2443_GetPin(int index) 
{ 
    return inCellValue[index]; 
} 
 
 
void S2443_SetRAddr(U32 raddr) 
{ 
    int i; 
 
    for(i=0;i<=25;i++) 
    { 
    	if(raddr & (1<