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

📄 main.c

📁 OKI 675050 hardware accelerator sample program
💻 C
字号:
/**********************************************************************************/
/*                                                                                */
/*    Copyright (C) 2006 Oki Electric Industry Co., LTD.                          */
/*                                                                                */
/*    Module Name    :  Main Source file                                          */
/*    File   Name    :  main.c                                                    */
/*    Revision       :  1.00                                                      */
/*    Date           :  2006/03/17                                                */
/**********************************************************************************/
#include <stdlib.h>
#include <string.h>

#include "ml675050.h"

#include "main.h"

/* expect */
ULONG expect[4][MAXWORD] =
{
/*mode1*/
	{         	
		0x0C242F0D, 0x30224843, 0x77C32227, 0x52AD75E4,
		0xEE52CC51, 0x54BBA3E3, 0x117518E9, 0xF62AE9AF,
		0x73BE7F9E, 0x5F9DE6E6, 0x9D465F05, 0x2B95065C,
		0x1C3C041D, 0x11060AA0, 0x6413DE84, 0x7E88D6A4,
		0x85332E28, 0xAB563DB2, 0xF9101B51, 0x6CA4DE56,
		0x884D00ED, 0x25986CFF, 0x07BBE060, 0x3B202885,
		0x2156F028, 0xD5332184, 0xDB252E18, 0x89041CB6,
		0x6F28139C, 0x0F689C3F, 0x07AD026B, 0x08170571
	},

/*mode2*/
	{
		0x00000000, 0x00000000, 0x00000000, 0x00000000,
		0x00000000, 0x00000000, 0x00000000, 0x00000000,
		0x00000000, 0x00000000, 0x00000000, 0x00000000,
		0x00000000, 0x00000000, 0x00000000, 0x00000000,
		0x00000000, 0x00000000, 0x00000000, 0x00000000,
		0x00000000, 0x00000000, 0x00000000, 0x00000000,
		0x00000000, 0x00000000, 0x00000000, 0x00000000,
		0x00000000, 0x00000000, 0x00000000, 0x00000000
	},

/*mode3*/
	{
		0x00000000, 0x00000000, 0x00000000, 0x00000000,
		0x00000000, 0x00000000, 0x00000000, 0x00000000,
		0x00000000, 0x00000000, 0x00000000, 0x00000000,
		0x00000000, 0x00000000, 0x00000000, 0x00000000,
		0x00000000, 0x00000000, 0x00000000, 0x00000000,
		0x00000000, 0x00000000, 0x00000000, 0x00000000,
		0x00000000, 0x00000000, 0x00000000, 0x00000000,
		0x00000000, 0x00000000, 0x00000000, 0x00000000
	},

/*mode4*/	
	{
		0x9049029C, 0x4B8BE1A5, 0xDCC315BA, 0x20B5E203,
		0xAB3CE01C, 0xEF2F13CE, 0x21C25A2B, 0x40593C1D,
		0xF97DAF2C, 0x0B7A3232, 0x1566283F, 0xE5F9B938,
		0x95051136, 0x75D04CB5, 0x55ECFCBD, 0xDCF74AC9,
		0x7D7D838B, 0xB0A1602B, 0x7613E9EF, 0xDEBF7B59,
		0x62F8A5AB, 0x3EFEA3DF, 0x899F6560, 0x6E53DDFA,
		0xC5CB85A3, 0x6B696F27, 0xB6A2FE81, 0xC6916B95,
		0x65F74679, 0xDD6F82FB, 0x27FBF183, 0x75EE8DA9
	}

};
/* key P */
ULONG expect_P[MAXWORD] =
{
	0x234F99A3, 0x9D7B356B, 0x99781A7A, 0x00053AD6, 
	0x19A9FF75, 0xC0A81E4E, 0x355D1D27, 0xBB8289D7,
	0x5B8020BD, 0x6F9032B8, 0x442B8C9B, 0x6A19FA5F,
	0x90D4014D, 0xB6EBA2CE, 0x445C0061, 0xBB2E7E20,
	0x00000000, 0x00000000, 0x00000000, 0x00000000,
	0x00000000, 0x00000000, 0x00000000, 0x00000000,
	0x00000000, 0x00000000, 0x00000000, 0x00000000,
	0x00000000, 0x00000000, 0x00000000, 0x00000000
};

/* key Q */
ULONG expect_Q[MAXWORD] =
{
	0x37421C1F, 0xCFCBFD8F, 0x018F3114, 0x78F1C88E,
	0x5ECEDA9D, 0xF0FDB5BC, 0xB10E8D55, 0x4B3DC81C,
	0x102DF287, 0x93E96350, 0x9850062F, 0x83035446,
	0x0B4F9104, 0xD899FC19, 0xB3C4B4F3, 0xCC6C05C6,
	0x00000000, 0x00000000, 0x00000000, 0x00000000,
	0x00000000, 0x00000000, 0x00000000, 0x00000000,
	0x00000000, 0x00000000, 0x00000000, 0x00000000,
	0x00000000, 0x00000000, 0x00000000, 0x00000000
};

/* key n */
ULONG expect_N[MAXWORD] =
{
	0x9C776EBD, 0x5B864D6A, 0x10AFFA24, 0x5FA8B80E,
	0x58E3860A, 0x94A3FD6D, 0xD1E8F354, 0x9AEABC4E,
	0x36E42DD9, 0xBBF790FD, 0xA219BDD0, 0xE48B793C,
	0xDB84B51A, 0x51E720C1, 0xE38D3D11, 0xC7CDB1B9,
	0xB393865D, 0xA160CCBD, 0x70E083CD, 0x1F3E83E4,
	0x9B509C7F, 0xEBD37D12, 0xA2EA2B90, 0xA0E6DF5B,
	0xBB8F5412, 0xC03230DB, 0x8B87B553, 0xA5B8C5B2,
	0x3F399C3C, 0xCED80A3A, 0x1DF3AB80, 0x95780858
};

UCHAR exec_finish_flag;


/****************************************/
/*
	main()
										*/
/****************************************/
int main(void)
{
	UCHAR mode = 1;
	UCHAR error = 0;
	 
    
    
    /* Board Clear */
	init_Board();

    /* Interrupt Clear */
	init_Irq();


	reg_Irq_Handler();
	

   	/* Accelerator Initialize */
	init_Accelerator();



    do{
    	/* PQ mod N Caluculate*/
		calculate_PQmodN(expect_P,expect_Q ,expect_N , mode);

	    /* Result Compare */
    	if(mode < 3){
			error = result_Compare((ULONG*)T1REG ,expect[mode-1] , mode);
    	}
    	else{
			error = result_Compare((ULONG*)T2REG ,expect[mode-1] , mode);
	    }

	    if(error == 1){
			break;
	    }
	    
	    mode ++ ;
	    
	}while(mode < 5 );

	if(error == 0){
		/* Green LED*/
		*(ULONG*)PO3 = 0x20;
	}
	else{
		/* RED LED */
		*(ULONG*)PO3 = 0x80;
	}
	
	return(0);
}	



/****************************************/
/*
	init_Board()
										*/
/****************************************/
void init_Board(void)
{

    *(ULONG*)CLKCNT = 0x000500A8;			
	*(ULONG*)PECLKCNT = 0x00084000;			
	*(ULONG*)PM3 = 0xE0;				
	*(ULONG*)PO3 = 0x00;					
	
	return;
}




/****************************************/
/*
	result_Compare()
										*/
/****************************************/
UCHAR result_Compare(ULONG* T , ULONG* expect,UCHAR mode)
{
	int i = 0;
	ULONG tmp[MAXWORD];

	memset(tmp,0,(MAXWORD << 2) ) ;
	
	set_Reg(tmp, T ,MAXWORD);
	
    i = MAXWORD-1;
    while(i >= 0) {
        if(tmp[i] == expect[i] ) {
            i--;
        }
        else{
            return(NG);
        }
    }
	
	return(OK);
}

⌨️ 快捷键说明

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