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

📄 sblock_test.c

📁 s3c6400 ADS下官方测试程序
💻 C
📖 第 1 页 / 共 5 页
字号:
		Disp("DES");
		DispOperMode(eDesOperMode);
		Disp("_CPU_ENC Failed..\n");
		}
	}
	else
	{
		if(uRet == false)
			{
				printf("DES");
				DispOperMode(eDesOperMode);
				printf("_CPU_ENC Failed..\n");
				g_sblock_err =1;
				UART_Getc();
			}
	}

	/////////////////////////////////
	// Decryption
	SBLK_Init(DES, eDesOperMode, DEC);

	for (i=0; i<8; i++)
	{
		SBLK_PutDataToInReg(OUTPUT_BUF+i*4*2, 2, LASTBYTE_1ST);
		SBLK_StartByManual();

		while(!SBLK_IsOutputReady());

		SBLK_GetDataFromOutReg(INPUT_BUF+i*4*2, 2);
	}
	Copy((u32)uDesPlainText, GOLDEN_BUF, 16);
	uRet = Compare(INPUT_BUF, GOLDEN_BUF, 16);


	if(eTest == eTest_Manual)
	{
		if (uRet)
		{
		Disp("DES_");
		DispOperMode(eDesOperMode);
		Disp("_CPU_DEC Success..\n");
		}
		else
		{
		Disp("DES");
		DispOperMode(eDesOperMode);
			Disp("_CPU_DEC Failed..\n");
		}
	}
	else
	{
		if(uRet == false)
			{
				printf("DES");
				DispOperMode(eDesOperMode);
				printf("_CPU_DEC Failed..\n");
				g_sblock_err =1;
				UART_Getc();
			}
	}

}


void SBLK_PutDataToRxFifo_Temp(u32 uSrcAddr, u32 uSize)
{	
	u32 i, uRemainedSize, uInputSize;
	u32 *pSrcAddr;

	pSrcAddr = (u32 *)uSrcAddr;
	uRemainedSize = uSize;


	SBLK_GetAvailableRxFifoSize(&uInputSize);
//	printf("uInputSize = 0x%x\n", uInputSize);
	uInputSize = uRemainedSize;
//	printf("uInputSize = 0x%x\n", uInputSize);
//	Delay(100000);
	
	for(i=0; i<uInputSize; i++)
	{
		//Outp32(rFIFO_RX_WR_BUF, *pSrcAddr++);
		Outp32(0x7D400040, *pSrcAddr++);
	}


/*	
	while(uRemainedSize > 0)
	{
		SBLK_GetAvailableRxFifoSize(&uInputSize);
		printf("uInputSize = 0x%x\n", uInputSize);
		
		if (uInputSize >= uRemainedSize)
		{
			uInputSize = uRemainedSize;
			uRemainedSize = 0;
		}
		else
		{
			uRemainedSize -= uInputSize;
		}

		for(i=0; i<uInputSize; i++)
			{
			//Outp32(rFIFO_RX_WR_BUF, *pSrcAddr++);
			Outp32(0x7D400040, *pSrcAddr++);
			}
	}
*/	
}


//////////
// Function Name : Test_DES_FIFO
// Function Description : DES FIFO mode Test
// Input : 	None
// Output :	None 
// Version : v0.1
//////////
// Function Name : Test_DES_FIFO
// Function Description : DES FIFO mode Test
// Input : 	None
// Output :	None 
// Version : v0.1
void Test_DES_FIFO(eFunction_Test eTest, oFunctionT_AutoVar oAutoVar)
{
	u32 uRet, usel;

	//g_sblock_err=0;

	if(eTest == eTest_Manual)
	{
		printf("[SBLOCK - DES FIFO Mode Test]\n");

		printf("Select DES Operating Mode  : 1)ECB   2)CBC    \n");
		usel=GetIntNum();
		if (usel == 1) eDesOperMode = ECB;
		else if (usel == 2) eDesOperMode = CBC;

		printf("Your selection is ");
		DispOperMode(eDesOperMode);
		printf("\n");
	}
	else
	{
		eDesOperMode = (OPER_MODE)oAutoVar.Test_Parameter[0];
	}

	//////////////////////////////////
	// Encryption

	SBLK_Init(DES, eDesOperMode, ENC);
	SBLK_SetFifo(16, 2, 16, 2, LASTBYTE_1ST);
	SBLK_StartFifo();
	SBLK_PutDataToRxFifo((u32)uDesPlainText, 16);

	while(!SBLK_IsFifoTransDone());

	SBLK_GetDataFromTxFifo(OUTPUT_BUF, 16);
	Copy((u32)uDesCipherText[eDesOperMode], GOLDEN_BUF, 16);
	uRet = Compare(OUTPUT_BUF, GOLDEN_BUF, 16);

	if(eTest == eTest_Manual)
	{
		if (uRet)
		{
		Disp("DES_");
		DispOperMode(eDesOperMode);
		Disp("_FIFO_ENC Success..\n");
		}
		else
		{
		Disp("DES");
		DispOperMode(eDesOperMode);
		Disp("_FIFO_ENC Failed..\n");
		}
	}
	else
	{
		if(uRet == false)
			{
				printf("DES");
				DispOperMode(eDesOperMode);
				printf("_FIFO_ENC Failed..\n");
				g_sblock_err =1;
				UART_Getc();
			}
	}
	////////////////////////////////
	// Decryption
	SBLK_Init(DES, eDesOperMode, DEC);

	SBLK_SetFifo(16, 2, 16, 2, LASTBYTE_1ST);
	SBLK_StartFifo();
	SBLK_PutDataToRxFifo(OUTPUT_BUF, 16);

	while(!SBLK_IsFifoTransDone());

	SBLK_GetDataFromTxFifo(INPUT_BUF, 16);
	Copy((u32)uDesPlainText, GOLDEN_BUF, 16);
	uRet = Compare(INPUT_BUF, GOLDEN_BUF, 16);

	if(eTest == eTest_Manual)
	{
		if (uRet)
		{
		Disp("DES_");
		DispOperMode(eDesOperMode);
		Disp("_FIFO_DEC Success..\n");
		}
		else
		{
		Disp("DES");
		DispOperMode(eDesOperMode);
		Disp("_FIFO_DEC Failed..\n");
		}
	}
	else
	{
		if(uRet == false)
			{
				printf("DES");
				DispOperMode(eDesOperMode);
				printf("_FIFO_DEC Failed..\n");
				g_sblock_err =1;
				UART_Getc();
			}
	}

}

//////////
// Function Name : Test_DES_DMA
// Function Description : DES DMA mode Test
// Input : 	None
// Output :	None 
// Version : v0.1
void Test_DES_DMA(eFunction_Test eTest, oFunctionT_AutoVar oAutoVar)
{
	u32 uRet, usel;


	//g_sblock_err=0;

	if(eTest == eTest_Manual)
	{
		printf("[SBLOCK - DES FIFO Mode Test]\n");

		printf("Select DES Operating Mode  : 1)ECB   2)CBC    \n");
		usel=GetIntNum();
		if (usel == 1) eDesOperMode = ECB;
		else if (usel == 2) eDesOperMode = CBC;

		printf("Your selection is ");
		DispOperMode(eDesOperMode);
		printf("\n");
	}
	else
	{
		eDesOperMode = (OPER_MODE)oAutoVar.Test_Parameter[0];
	}

	INTC_SetVectAddr(NUM_SDMA1, Isr_SDMA1); //Rx Operation 
	INTC_Enable(NUM_SDMA1);
	
	//////////////////////////////
	// Encryption
	SBLK_Init(DES, eDesOperMode, ENC);
	SBLK_SetFifo(16, 2, 16, 2, LASTBYTE_1ST);
	SBLK_SetSDMA(INPUT_BUF, 16, OUTPUT_BUF, 16);
	Copy((u32)uDesPlainText, INPUT_BUF, 16);

	g_SDma1Done = 0;

	SBLK_StartFifo();
	SBLK_StartSDMA();

	while(!g_SDma1Done);

	Copy((u32)uDesCipherText[eDesOperMode], GOLDEN_BUF, 16);
	uRet = Compare(OUTPUT_BUF, GOLDEN_BUF, 16);

	if(eTest == eTest_Manual)
	{
		if (uRet)
		{
		Disp("DES_");
		DispOperMode(eDesOperMode);
		Disp("_DMA_ENC Success..\n");
		}
		else
		{
		Disp("DES");
		DispOperMode(eDesOperMode);
		Disp("_DMA_ENC Failed..\n");
		}
	}
	else
	{
		if(uRet == false)
			{
				printf("DES");
				DispOperMode(eDesOperMode);
				printf("_DMA_ENC Failed..\n");
				g_sblock_err =1;
				UART_Getc();
			}
	}
	
	////////////////////////////////
	// Decryption
	SBLK_Init(DES, eDesOperMode, DEC);
	SBLK_SetFifo(16, 2, 16, 2, LASTBYTE_1ST);
	SBLK_SetSDMA(OUTPUT_BUF, 16, INPUT_BUF, 16);

	g_SDma1Done = 0;

	SBLK_StartFifo();
	SBLK_StartSDMA();

	while(!g_SDma1Done);

	Copy((u32)uDesPlainText, GOLDEN_BUF, 16);
	uRet = Compare(INPUT_BUF, GOLDEN_BUF, 16);

	if(eTest == eTest_Manual)
	{
		if (uRet)
		{
		Disp("DES_");
		DispOperMode(eDesOperMode);
		Disp("_DMA_DEC Success..\n");
		}
		else
		{
		Disp("DES");
		DispOperMode(eDesOperMode);
		Disp("_DMA_DEC Failed..\n");
		}
	}
	else
	{
		if(uRet == false)
			{
				printf("DES");
				DispOperMode(eDesOperMode);
				printf("_DMA_DEC Failed..\n");
				g_sblock_err =1;
				UART_Getc();
			}
	}
	
}

//////////
// Function Name : Test_HASH_CPU
// Function Description : HASH CPU mode Test
// Input : 	None
// Output :	None 
// Version : v0.1
void Test_HASH_CPU(eFunction_Test eTest, oFunctionT_AutoVar oAutoVar)
{
	u32 uRet, usel;

	//g_sblock_err=0;
	
	if(eTest == eTest_Manual)
	{
		printf("[SBLOCK - HASH CPU Mode Test]\n");

		printf("Select HASH Operating Mode  : 1)HMAC  2)SHA1  3)PRNG \n");
		usel=GetIntNum();
		if (usel == 1) eHashOperMode = HMAC;
		else if (usel == 2) eHashOperMode = SHA1;
		else if (usel == 3) eHashOperMode = PRNG;

		printf("Your selection is ");
		DispOperMode(eHashOperMode);
		printf("\n");
	}
	else
	{
		eHashOperMode = (OPER_MODE)oAutoVar.Test_Parameter[0];
	}

	SBLK_Init(HASH, eHashOperMode, ENC);
	if (eHashOperMode == HMAC)
		SBLK_PutDataToInReg((u32)uHmacPlainText19, 19, LASTBYTE_1ST);
	else if (eHashOperMode == SHA1)
		SBLK_PutDataToInReg((u32)uSha1PlainText16, 16, LASTBYTE_4TH);

	while(!SBLK_IsOutputReady());

	if (eHashOperMode == PRNG)
	{
		SBLK_GetDataFromOutReg(OUTPUT_BUF, 10);
 		if(eTest == eTest_Manual)
 			{
			Dump32(OUTPUT_BUF, 10);
 			}
		return;
	}
	SBLK_GetDataFromOutReg(OUTPUT_BUF, 5);
	if (eHashOperMode == HMAC)
		Copy((u32)uHmacCiperText19, GOLDEN_BUF, 5);
	else if (eHashOperMode == SHA1)
		Copy((u32)uSha1CipherText16, GOLDEN_BUF, 5);
	uRet = Compare(OUTPUT_BUF, GOLDEN_BUF, 5);

	if(eTest == eTest_Manual)
	{
		if (uRet)
		{
		Disp("HASH_");
		DispOperMode(eHashOperMode);
		if (eHashOperMode == HMAC)
			Disp("_CPU 19 Success..\n");
		else if (eHashOperMode == SHA1)
			Disp("_CPU 16 Success..\n");
		}
		else
		{
		Disp("HASH_");
		DispOperMode(eHashOperMode);
		if (eHashOperMode == HMAC)
			Disp("_CPU 19 Failed..\n");
		else if (eHashOperMode == SHA1)
			Disp("_CPU 16 Failed..\n");
		}
	}
	else
	{
		if(uRet == false)
			{
			Disp("HASH_");
			DispOperMode(eHashOperMode);
			if (eHashOperMode == HMAC)
				Disp("_CPU 19 Failed..\n");
			else if (eHashOperMode == SHA1)
				Disp("_CPU 16 Failed..\n");

				g_sblock_err =1;
				UART_Getc();
			}
	}

	SBLK_Init(HASH, eHashOperMode, ENC);
	if (eHashOperMode == HMAC)
		SBLK_PutDataToInReg((u32)uHmacPlainText47, 47, LASTBYTE_4TH);
	else if (eHashOperMode == SHA1)
		SBLK_PutDataToInReg((u32)uSha1PlainText47, 47, LASTBYTE_4TH);

	while(!SBLK_IsOutputReady());

	SBLK_GetDataFromOutReg(OUTPUT_BUF, 5);
	if (eHashOperMode == HMAC)
		Copy((u32)uHmacCiperText47, GOLDEN_BUF, 5);
	else if (eHashOperMode == SHA1)
		Copy((u32)uSha1CipherText47, GOLDEN_BUF, 5);
	uRet = Compare(OUTPUT_BUF, GOLDEN_BUF, 5);

	if(eTest == eTest_Manual)
	{
		if (uRet)
		{
		Disp("HASH_");
		DispOperMode(eHashOperMode);
		Disp("_CPU 47 Success..\n");
		}
		else
		{
		Disp("HASH_");
		DispOperMode(eHashOperMode);
		Disp("_CPU 47 Failed..\n");
		}
	}
	else
	{
		if(uRet == false)
			{
			Disp("HASH_");
			DispOperMode(eHashOperMode);
			Disp("_CPU 47 Failed..\n");
			g_sblock_err =1;
			UART_Getc();
			}
	}

}

//////////
// Function Name : Test_HASH_FIFO
// Function Description : HASH FIFO mode Test
// Input : 	None
// Output :	None 
// Version : v0.1
void Test_HASH_FIFO(eFunction_Test eTest, oFunctionT_AutoVar oAutoVar)
{
	u32 uRet, usel;

	//g_sblock_err=0;
	
	if(eTest == eTest_Manual)
	{
		printf("[SBLOCK - HASH FIFO Mode Test]\n");

		printf("Select HASH Operating Mode  : 1)HMAC  2)SHA1  3)PRNG \n");
		usel=GetIntNum();
		if (usel == 1) eHashOperMode = HMAC;
		else if (usel == 2) eHashOperMode = SHA1;
		else if (usel == 3) eHashOperMode = PRNG;

		printf("Your selection is ");
		DispOperMode(eHashOperMode);
		printf("\n");
	}
	else
	{
		eHashOperMode = (OPER_MODE)oAutoVar.Test_Parameter[0];
	}

	SBLK_Init(HASH, eHashOperMode, ENC);
	if (eHashOperMode == HMAC)
	{
		SBLK_SetFifo(19, 16, 5, 16, LASTBYTE_1ST);
		SBLK_StartFifo();
		SBLK_PutDataToRxFifo((u32)uHmacPlainText19, 19);
	}
	else if (eHashOperMode == SHA1)
	{
		SBLK_SetFifo(16, 16, 5, 16, LASTBYTE_4TH);
		SBLK_StartFifo();
		SBLK_PutDataToRxFifo((u32)uSha1PlainText16, 16);
	}
	else if (eHashOperMode == PRNG)
	{
		SBLK_SetFifo(10, 10, 10, 10, LASTBYTE_1ST);
		SBLK_StartFifo();
	}

	while(!SBLK_IsFifoTransDone());

	if (eHashOperMode == PRNG)
	{
		SBLK_GetDataFromTxFifo(OUTPUT_BUF, 10);
		SBLK_GetDataFromOutReg(GOLDEN_BUF, 10);
		uRet = Compare(OUTPUT_BUF, GOLDEN_BUF, 10);
		if(eTest == eTest_Manual)
		{
			if (uRet)
			{
			Disp("HASH_PRNG_FIFO Success..\n");
			}
			else
			{
			Disp("HASH_PRNG_FIFO Failed..\n");
			}
		}
		else
		{
			if(uRet == false)
				{
				Disp("HASH_PRNG_FIFO Failed..\n");
				g_sblock_err =1;
				UART_Getc();
				}
		}
		return;
	}

	SBLK_GetDataFromTxFifo(OUTPUT_BUF, 5);
	if (eHashOperMode == HMAC)
		Copy((u32)uHmacCiperText19, GOLDEN_BUF, 5);
	else if (eHashOperMode == SHA1)
		Copy((u32)uSha1CipherText16, GOLDEN_BUF, 5);
	uRet = Compare(OUTPUT_BUF, GOLDEN_BUF, 5);
	if(eTest == eTest_Manual)
	{
		if (uRet)
		{
			Disp("HASH_");
			DispOperMode(eHashOperMode);
			if (eHashOperMode == HMAC)
				Disp("_FIFO 19 Success..\n");
			else if (eHashOperMode == SHA1)
				Disp("_FIFO 16 Success..\n");
		}
		else
		{
			Disp("HASH_");
			DispOperMode(eHashOperMode);
			if (eHashOperMode == HMAC)
				Disp("_FIFO 19 Failed..\n");
			else if (eHashOperMode == SHA1)
				Disp("_FIFO 16 Failed..\n");
		}
	}
	else
	{
		if(uRet == false)
			{
			Disp("HASH_");
			DispOperMode(eHashOperMode);
			if (eHashOperMode == HMAC)
				Disp("_FIFO 19 Failed..\n");
			else if (eHashOperMode == SHA1)
				Disp("_FIFO 16 Failed..\n");

			g_sblock_err =1;
			UART_Getc();
			}
	}

	
	SBLK_Init(HASH, eHashOperMode, ENC);
	if (eHashOperMode == HMAC)
	{
		SBLK_SetFifo(47, 16, 5, 16, LASTBYTE_4TH);
		SBLK_StartFifo();
		SBLK_PutDataToRxFifo((u32)uHmacPlainText47, 47);
	}
	else if (eHashOperMode == SHA1)
	{
		SBLK_SetFifo(47, 16, 5, 16, LASTBYTE_4TH);
		SBLK_StartFifo();
		SBLK_PutDataToRxFifo((u32)uSha1PlainText47, 47);
	}

⌨️ 快捷键说明

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