📄 main.c
字号:
** 函数名称: GetString
** 功能描述: 接收一个以'\r'结束的字符串
** 输 入: 存储字符串指针
** 输 出: 无
** 全局变量: 无
** 调用模块: 无
**
** 作 者: 陈明计
** 日 期: 2004年2月26日
**-------------------------------------------------------------------------------------------------------
** 修改人:
** 日 期:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
void GetString1(char *s)
{
char temp1;
char *cp;
cp = s;
while (1)
{
temp1 = GetCh();
if (temp1 == '\r')
{
*cp++ = '\r';
*cp++ = '\n';
*cp = 0;
break;
}
*cp++ = temp1;
}
PrintString1(s);
cp -= 2;
*cp = 0;
}
/*********************************************************************************************************
** command
********************************************************************************************************/
void Run(void);
static char ss[1024];
void command(void)
{
uint32 temp;
char i,c;
BCFG0 = 0x1000ffef;
while(1)
{
SendChar(0x0c);
#if 0
PrintString("\r\n\r\n\r\nFlash loader Program V1.0 for EasyARM2200 Board\r\n\r\n");
PrintString("1: Chip Erase\r\n");
PrintString("2: Sector Erase\r\n");
PrintString("3: Program Chip\r\n");
PrintString("4: Check\r\n");
PrintString("5: Run\r\n");
PrintString("\r\n\r\nNotice:Flash must be in BANK0 and Ram must be in BANK1!\r\n\r\n");
PrintString(" Please choise....\r\n");
#else
PrintString("\r\n\r\n\r\nFlash loader Program V1.0 for EasyARM2200 Board\r\n\r\n1: Chip Erase\r\n2: Sector Erase\r\n3: Program Chip\r\n4: Check\r\n5: Run\r\n\r\n\r\nNotice:Flash must be in BANK0 and Ram must be in BANK1!\r\n\r\n Please choise....\r\n");
#endif
c = GetCh();
SendChar(c);
if (errno < 0)
{
return;
}
switch(c)
{
case '1':
if (ChipErase() == TRUE)
{
PrintString("\r\nSuccessfully erased SST39F160 !\r\n");
}
else
{
PrintString("\r\nChip erase error !!\r\n");
}
break;
case '2':
PrintString("\r\n Please input Sector number(0~511)...\r\n");
GetString(ss);
if (errno < 0)
{
return;
}
if (errno < 0)
{
return;
}
if (sscanf(ss, "%d", &temp) != 1)
{
PrintString("\r\nInput err!\r\n");
break;
}
if (temp >= 512)
{
PrintString("\r\nInput err!\r\n");
break;
}
if (SectorErase(temp) == TRUE)
{
PrintString("\r\nSuccessfully erased SST39F160's sector!\r\n");
}
else
{
PrintString("\r\nChip erase error !!\r\n");
}
break;
case '3':
PrintString("\r\n Please choise inter 32 hex to down...\r\n");
while (1)
{
GetString1(ss);
if (errno < 0)
{
return;
}
switch(DownloadLine(ss))
{
case DOWNLOAD_FINISH :
PrintString("\r\nready and ok\r\n");
break;
case DOWNLOAD_LINE :
continue;
break;
case FILE_FOEMAT_ERR:
PrintString("\r\nThis file is not inter 32 bit hex file!!\r\n");
break;
case CHECK_ERR :
PrintString("\r\nBad record type\r\n");
break;
case PROGRAM_ERR :
PrintString("\r\nFlash program Error\r\n");
break;
case BAD_RECORD_TYPE :
PrintString("\r\nBad record type\r\n");
break;
default:
PrintString("\r\nUnknown Error\r\n");
break;
}
break;
}
break;
case '4':
PrintString("\r\n Please choise inter 32 hex to down...\r\n");
while (1)
{
GetString1(ss);
if (errno < 0)
{
return;
}
switch(Check(ss, &temp))
{
case DOWNLOAD_FINISH :
PrintString("\r\nCheck ok\r\n");
break;
case DOWNLOAD_LINE :
continue;
break;
case FILE_FOEMAT_ERR:
PrintString("\r\nThis file is not inter 32 bit hex file!!\r\n");
break;
case CHECK_ERR :
PrintString("\r\nBad record type\r\n");
break;
case PROGRAM_ERR :
PrintString("\r\nCheck err at addr:0x");
for (i = 0; i < 8; i++)
{
c = ((temp >> 28) & 0x0f);
if (c < 0x0a)
{
c = c + '0';
}
else
{
c = c + 'A' - 0x0a;
}
SendChar(c);
temp = temp << 4;
}
PrintString("\r\n");
break;
case BAD_RECORD_TYPE :
PrintString("\r\nBad record type\r\n");
break;
default:
PrintString("\r\nUnknown Error\r\n");
break;
}
break;
}
break;
case '5':
Run();
break;
default:
PrintString("\r\nDon't Find this Command !\r\n");
break;
}
PrintString("Hit '.' to continue !!\r\n");
// while ((c = GetCh()) != '.')
while (GetCh() != '.')
{
// SendChar1(c);
if (errno < 0)
{
return;
}
}
}
}
/*********************************************************************************************************
** Task0 任务0
********************************************************************************************************/
extern uint8 tcpipinit (void);
void Task0(void *pdata)
{
unsigned int temp;
int AddrLen;
extern uint8 My_Ip_1ID[4];
extern uint8 My_Gateway_1ID[4];
extern uint8 MY_IP_MARK_1ID[4];
extern uint8 MY_MAC_1ID[6];
pdata = pdata;
(*((volatile unsigned int *) 0x80f00000)) = 0;
TargetInit();
Hard = 0;
End = 0;
My_Ip_1ID[0] = 192;
My_Ip_1ID[1] = 168;
My_Ip_1ID[2] = 15;
My_Ip_1ID[3] = 25;
My_Gateway_1ID[0] = 192;
My_Gateway_1ID[1] = 168;
My_Gateway_1ID[2] = 1;
My_Gateway_1ID[3] = 254;
MY_IP_MARK_1ID[0] = 255;
MY_IP_MARK_1ID[1] = 255;
MY_IP_MARK_1ID[2] = 0;
MY_IP_MARK_1ID[3] = 0;
MY_MAC_1ID[0] = 0x00;
MY_MAC_1ID[1] = 0x14;
MY_MAC_1ID[2] = 0x97;
MY_MAC_1ID[3] = 0x05;
MY_MAC_1ID[4] = 0x00;
MY_MAC_1ID[5] = 0x00;
ZlgipInitial();
BCFG0 = 0x1000ffef;
ServAddr.sin_family = 0;
ServAddr.sin_addr[0] = NetPort[0].My_Ip[0];
ServAddr.sin_addr[1] = NetPort[0].My_Ip[1];
ServAddr.sin_addr[2] = NetPort[0].My_Ip[2];
ServAddr.sin_addr[3] = NetPort[0].My_Ip[3];
ServAddr.sin_port = 21;
s = socket(AF_INET, SOCK_STREAM, TCP_PROTOCOL);
bind(s, (struct sockaddr*)&ServAddr,sizeof(ServAddr));
listen(s, 1);
while (1)
{
temp = accept(s, (struct sockaddr*)&CliAddr, &AddrLen);
if(temp != INVALID_SOCKET)
{
LinkHandle = temp;
command();
}
}
}
/*********************************************************************************************************
** End Of File
********************************************************************************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -