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

📄 net_test.c

📁 Embest EudKit-II教学系统配Samsung S3C2410处理器的部分测试程序。
💻 C
字号:
/*********************************************************************************************
* File:	netapp.c
* Author:	Embest	
* Desc:	network test application 
* History:	
*			Y.J.Guo, Programming modify, April 12, 2005
*********************************************************************************************/
#include "2410lib.h"

/*------------------------------------------------------------------------------------------*/
/*	 								external variables					 				    */
/*------------------------------------------------------------------------------------------*/
extern unsigned long server_ip;
extern unsigned long local_ip;

/*------------------------------------------------------------------------------------------*/
/*	 								static global variables                                 */
/*------------------------------------------------------------------------------------------*/
static unsigned char sector_buf[64*1024];

/*********************************************************************************************
* name:		dhcp_test
* func:		Dhcp test 
* para:		none
* ret:		none
* modify:
* comment:		
*********************************************************************************************/
void dhcp_test()
{
	change_value_MPLL(150,3,1);	// Fin=12MHz FCLK=200MHz
	uart_init(200000000/4, 115200, UART0);

	uart_printf("\n Ethernet DCHP Protocol Test Example\n");
	NicInit();
	NetInit();

	uart_printf("\n Waiting DHCP server to Respond.\n");
	DhcpQuery();
	uart_printf("\nReceive DHCP Message from server %d.%d.%d.%d",
	            (char)(server_ip>>0),
	            (char)(server_ip>>8),
	            (char)(server_ip>>16),
	            (char)(server_ip>>24));
	uart_printf("\nConfig local ip address %d.%d.%d.%d\n",
	            (char)(local_ip>>0),
	            (char)(local_ip>>8),
	            (char)(local_ip>>16),
	            (char)(local_ip>>24));
	change_value_MPLL(M_MDIV,M_PDIV,M_SDIV);	// Fin=12MHz FCLK=202.8MHz
	uart_init(PCLK, 115200, UART0);

#ifdef BOARDTEST
	sprintf(&sector_buf, "%d.%d.%d.%d",
	            (char)(server_ip>>0),
	            (char)(server_ip>>8),
	            (char)(server_ip>>16),
	            (char)(server_ip>>24));
	print_lcd(195,170,0x1c,"DHCP Server:");	
	print_lcd(195,180,0x1c,&sector_buf);	
	sprintf(&sector_buf, "%d.%d.%d.%d\n",
	            (char)(local_ip>>0),
	            (char)(local_ip>>8),
	            (char)(local_ip>>16),
	            (char)(local_ip>>24));
	print_lcd(195,190,0x1c,"Set Board IP:");	
	print_lcd(195,200,0x1c,&sector_buf);	
#endif		

	uart_printf(" end.\n");
}

/*********************************************************************************************
* name:		tftp_test
* func:		Tftp test 
* para:		none
* ret:		none
* modify:
* comment:		
*********************************************************************************************/
void tftp_test()
{
	char* pData;
	unsigned long write_addr;
	char input_string[64];
	char tmp_ip[4] = {0,0,0,0};	
	int  tmp,len,i,j,num=0;
	int  b10 =0; int b100 =0; int flag=0;
	
	change_value_MPLL(150,3,1);	// Fin=12MHz FCLK=200MHz
	uart_init(200000000/4, 115200, UART0);

	uart_printf("\n Ethernet TFTP File Transport Test Example\n");
	NicInit();
	NetInit();
	
	uart_printf("\n Do you want to configure local IP ?\n");
	uart_printf(" Y/y to configure local IP addr; D/d to use Default IP addr(192.168.0.200).\n");	
	uart_printf(" Press any key to continue ...\n");	
	uart_printf(" ( %c )",i = uart_getch());
	if( i == 'Y' || i == 'y')
	{
		uart_printf(" Please input IP address(xxx.xxx.xxx.xxx) then press ENTER:\n");	

		for( i = 16; i != 0; i--)
			input_string[i] = 0xaa;	   	   
		uart_getstring(&input_string);
		for( i = 0;((i <16)&(input_string[i] != 0xAA)); i++)
			if(input_string[i] == '.') num +=1;
		   
		if(num != 3) flag = 1; 
		else
		{
			num = i - 2; j =0;
			for( i = num; i >= 0; i--)
			{
				if(input_string[i] != '.' )
				{
					if((input_string[i] < '0' | input_string[i] > '9')) flag = 1;     
					else
					{
						tmp = (input_string[i] - 0x30);
						if (b100) { tmp *=100; b10 =0;}
						if (b10)  { tmp *= 10; b100 =1;}
						b10 = 1;
						if(tmp < 256) tmp_ip[j] += tmp; else local_ip = 0x4dc0c0c0;
					}
				}else { j++; b10 =0; b100 =0;}
			}
		}

		if(!flag)
		{
			uart_printf("\nManual Set local ip %d.%d.%d.%d\n",
				tmp_ip[3],tmp_ip[2],tmp_ip[1],tmp_ip[0]);
			local_ip = ((tmp_ip[0]<<24))+((tmp_ip[1]<<16))\
				+((tmp_ip[2]<<8))+tmp_ip[3];
		}else
			uart_printf("\nIP address error (xxx.xxx.xxx.xxx)!\n");
	}// yes
	else if(i == 'D' || i == 'd')
	{
		local_ip = 0xc800a8c0;		// config local ip 192.168.0.200
	
		uart_printf("\nDefault Set local ip %d.%d.%d.%d\n",
	            local_ip&0x000000FF,(local_ip&0x0000FF00)>>8,
	            (local_ip&0x00FF0000)>>16,(local_ip&0xFF000000)>>24);
	}
	uart_printf("\nPress any key to exit ...\n");	
		
	for( ; ; )
	{
		if(uart_getkey())
			break;
		
		pData = (char *)TftpRecv(&len);
		if( (pData == 0) || (len <= 0) )
			continue;
		
		write_addr = (pData[0])+(pData[1]<<8)+(pData[2]<<16)+(pData[3]<<24);
		pData = pData + sizeof(long);
		len -= 4;

		if(write_addr >= 0x31000000 && write_addr < 0x37fffc00)
		{
			memcpy((void *)write_addr, pData, len);
		}
		else if(FlashID(write_addr))
		{
			int write_ptr, offset_ptr, write_len, sector_size;
			char *data_ptr;

			data_ptr = pData;
			write_ptr = write_addr;
			while(write_ptr < write_addr+len)
			{
				sector_size = FlashSectorBackup(write_ptr, sector_buf);
				offset_ptr = (write_ptr & ~(0 - sector_size));
				write_len =  sector_size - offset_ptr;
				if(write_len > len - (write_ptr - write_addr))
					write_len = len - (write_ptr - write_addr);
				memcpy(&sector_buf[offset_ptr], data_ptr, write_len);
				FlashEraseSector(write_ptr);
				FlashProgram(write_ptr & (0 - sector_size), sector_buf, sector_size);
				data_ptr += write_len;
				write_ptr += write_len;
			}
		}
		else
		{
			continue;
		}

		if(memcmp((void *)write_addr, pData, len) == 0)
			MakeAnswer();
	}
	change_value_MPLL(M_MDIV,M_PDIV,M_SDIV);	// Fin=12MHz FCLK=202.8MHz
	uart_init(PCLK, 115200, UART0);
	
	uart_printf(" end.\n");
}

⌨️ 快捷键说明

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