📄 main_entry.c
字号:
return;}
put_char(0, ch);
i_printf("\r\n>>>Please Send the New Bootloader to Board by Xmodem Protocol...");
if (XModemReceive((char *)0x900000, 0xfffff) == -1)
{i_printf("\nTRANSFER FAILURE"); exit(0);}
i_printf(",...OK!\r\n");
flash_erase_Bootloader();
i_printf(">>>Bootloader Flash Area Program,Please Wait...");
flash_prg_bootloader(64);
i_printf(",OK!\r\n");
i_printf("\n\r>>>Bootloader Update Successfully, Please Reset the System. Thank you!\r\n");
}
/************************************************************************/
/*Function Description: System Information */
/*Date: 2003-12-2 */
/************************************************************************/
void Sys_Info()
{
i_printf("\r\n");
i_printf("*******************************************************\n\r");
i_printf("* System Information *\n\r");
i_printf("* CPU: S3C4510B Speed: 50MHz *\n\r");
i_printf("* Flash: 4MB SDRAM: 16MB *\n\r");
i_printf("* Ethernet: 10M/100M Working Volt: DC 5V *\n\r");
i_printf("*******************************************************\n\r");
i_printf("* After Remap *\n\r");
i_printf("* SDRAM Address: 0x0000,0000~0x0100,0000-1 *\n\r");
i_printf("* Flash Address: 0x0100,0000~0x0140,0000-1 *\n\r");
i_printf("*******************************************************\n\r");
i_printf("\n\rPress Any Key to Continue...\r\n");
get_char(0);
}
/************************************************************************/
/*Function Description: Test LED */
/*Date: 2003-12-2 */
/************************************************************************/
void Test_LED(void)
{
int i;
int p_de;
unsigned int coun=0,co_t=0,pm=21;
i_printf("\r\n\r\nLED Testing...,Please Wait...");
IOPMOD=0xff;
for(i=0;i<2;i++)
{
IOPDATA=0x1;
Delay(500000);
IOPDATA=0x2;
Delay(500000);
IOPDATA=0x0;
Delay(500000);
}
for(i=0;i<3;i++)
{
for(pm=0;pm<255;pm++)
{
for(co_t=0;co_t<=22;co_t++)
{
while(coun<254)
{
if(coun==pm)
{IOPDATA=0x03;}
coun++;
}
coun=0;
IOPDATA=0x00;
}
}
for(pm=255;pm>0;pm--)
{
for(co_t=0;co_t<=22;co_t++)
{
while(coun<254)
{
if(coun==pm)
{IOPDATA=0x03;}
coun++;
}
coun=0;
IOPDATA=0x00;
}
}
}
i_printf(",OK!\r\n\r\n");
}
void Delay(int i)
{ int j,k;
for(j=0;j<i;j++)
{
k=0;
}
}
/************************************************************************/
/*Function Description: Erase bootloader area */
/*Date: 2003-12-5 */
/************************************************************************/
void flash_erase_Bootloader()
{
int i;
unsigned short *address;
/************************************************************************/
i_printf(">>>Erase Bootloader Flash Area S1,Please Wait...");
Flash_Unlock();
*((unsigned short *)AM_SECTOR_ADDR_01) = AM_SECTOR_ERASE; //0x3030
i_printf(",Blank Check...");
CHKB1:
Delay(50000);
for(address=(unsigned short *)AM_SECTOR_ADDR_01;address<(unsigned short *)AM_SECTOR_ADDR_02;address++)
{
if(*address!=0xffff)
{goto CHKB1;}
}
i_printf(", OK!\r\n");
/************************************************************************/
i_printf(">>>Erase Bootloader Flash Area S2,Please Wait...");
Flash_Unlock();
*((volatile unsigned short *)AM_SECTOR_ADDR_02) = AM_SECTOR_ERASE; //0x3030
i_printf(",Blank Check...");
CHKB2:
Delay(50000);
for(address=(unsigned short *)AM_SECTOR_ADDR_02;address<(unsigned short *)AM_SECTOR_ADDR_03;address++)
{
if(*address!=0xffff)
{goto CHKB2;}
}
i_printf(", OK!\r\n");
/************************************************************************/
i_printf(">>>Erase Bootloader Flash Area S3,Please Wait...");
Flash_Unlock();
*((volatile unsigned short *)AM_SECTOR_ADDR_03) = AM_SECTOR_ERASE; //0x3030
i_printf(",Blank Check...");
CHKB3:
Delay(50000);
for(address=(unsigned short *)AM_SECTOR_ADDR_03;address<(unsigned short *)AM_SECTOR_ADDR_04;address++)
{
if(*address!=0xffff)
{goto CHKB3;}
}
i_printf(", OK!\r\n");
/************************************************************************/
i_printf(">>>Erase Bootloader Flash Area S4,Please Wait...");
Flash_Unlock();
*((volatile unsigned short *)AM_SECTOR_ADDR_04) = AM_SECTOR_ERASE; //0x3030
i_printf(",Blank Check...");
CHKB4:
Delay(50000);
for(address=(unsigned short *)AM_SECTOR_ADDR_04;address<(unsigned short *)AM_SECTOR_ADDR_1;address++)
{
if(*address!=0xffff)
{goto CHKB4;}
}
i_printf(", OK!\r\n");
}
/************************************************************************/
/*Function Description: Flash Sector Unlock. */
/*Date: 2003-12-2 */
/************************************************************************/
void Flash_Unlock(void)
{
*((volatile unsigned short *)AM_START_ADDR+ AM_ADDR_UNLOCK1) = AM_DATA_UNLOCK1; //0xaaaa
*((volatile unsigned short *)AM_START_ADDR+ AM_ADDR_UNLOCK2) = AM_DATA_UNLOCK2; //0x5555
*((volatile unsigned short *)AM_START_ADDR+ AM_ADDR_UNLOCK1) = AM_SETUP_ERASE; //0x8080
*((volatile unsigned short *)AM_START_ADDR+ AM_ADDR_UNLOCK1) = AM_DATA_UNLOCK1; //0xaaaa
*((volatile unsigned short *)AM_START_ADDR+ AM_ADDR_UNLOCK2) = AM_DATA_UNLOCK2; //0x5555
}
/************************************************************************/
/*Function Name: flash_erase() */
/*Function Description: Flash User Program Areas. */
/*Date: 2003-12-5 */
/************************************************************************/
void flash_erase(int CNT)
{
int i;
unsigned short *address;
i_printf("\r\n>>>请稍后,擦除用户存储区...\r\n");
i_printf(">>>Please Wait,Now Erasing User Flash Area... ");
/**********************************User Flash S1 *********************************************/
if(CNT>64*0)
{
put_char(0, 0x08);put_char(0, 0x08); i_printf("S 1");
Flash_Unlock();
*((unsigned short *)AM_SECTOR_ADDR_1) = AM_SECTOR_ERASE; //0x3030
EUS1:
Delay(8000);
for(address=(unsigned short *)AM_SECTOR_ADDR_1;address<(unsigned short *)AM_SECTOR_ADDR_2;address++)
{
if(*address!=0xffff)
{goto EUS1;}
}
}
/**********************************User Flash S2 *********************************************/
if(CNT>64*1)
{
put_char(0, 0x08);put_char(0, 0x08); i_printf(" 2");
Flash_Unlock();
*((unsigned short *)AM_SECTOR_ADDR_2) = AM_SECTOR_ERASE; //0x3030
EUS2:
Delay(8000);
for(address=(unsigned short *)AM_SECTOR_ADDR_2;address<(unsigned short *)AM_SECTOR_ADDR_3;address++)
{
if(*address!=0xffff)
{goto EUS2;}
}
}
/**********************************User Flash S3 *********************************************/
if(CNT>64*2)
{
put_char(0, 0x08);put_char(0, 0x08); i_printf(" 3");
Flash_Unlock();
*((unsigned short *)AM_SECTOR_ADDR_3) = AM_SECTOR_ERASE; //0x3030
EUS3:
Delay(8000);
for(address=(unsigned short *)AM_SECTOR_ADDR_3;address<(unsigned short *)AM_SECTOR_ADDR_4;address++)
{
if(*address!=0xffff)
{goto EUS3;}
}
}
/**********************************User Flash S4 *********************************************/
if(CNT>64*3)
{
put_char(0, 0x08);put_char(0, 0x08); i_printf(" 4");
Flash_Unlock();
*((unsigned short *)AM_SECTOR_ADDR_4) = AM_SECTOR_ERASE; //0x3030
EUS4:
Delay(8000);
for(address=(unsigned short *)AM_SECTOR_ADDR_4;address<(unsigned short *)AM_SECTOR_ADDR_5;address++)
{
if(*address!=0xffff)
{goto EUS4;}
}
}
/**********************************User Flash S5*********************************************/
if(CNT>64*4)
{
put_char(0, 0x08);put_char(0, 0x08); i_printf(" 5");
Flash_Unlock();
*((unsigned short *)AM_SECTOR_ADDR_5) = AM_SECTOR_ERASE; //0x3030
EUS5:
Delay(8000);
for(address=(unsigned short *)AM_SECTOR_ADDR_5;address<(unsigned short *)AM_SECTOR_ADDR_6;address++)
{
if(*address!=0xffff)
{goto EUS5;}
}
}
/**********************************User Flash S6 *********************************************/
if(CNT>64*5)
{
put_char(0, 0x08);put_char(0, 0x08); i_printf(" 6");
Flash_Unlock();
*((unsigned short *)AM_SECTOR_ADDR_6) = AM_SECTOR_ERASE; //0x3030
EUS6:
Delay(8000);
for(address=(unsigned short *)AM_SECTOR_ADDR_6;address<(unsigned short *)AM_SECTOR_ADDR_7;address++)
{
if(*address!=0xffff)
{goto EUS6;}
}
}
/**********************************User Flash S7 *********************************************/
if(CNT>64*6)
{
put_char(0, 0x08);put_char(0, 0x08); i_printf(" 7");
Flash_Unlock();
*((unsigned short *)AM_SECTOR_ADDR_7) = AM_SECTOR_ERASE; //0x3030
EUS7:
Delay(8000);
for(address=(unsigned short *)AM_SECTOR_ADDR_7;address<(unsigned short *)AM_SECTOR_ADDR_8;address++)
{
if(*address!=0xffff)
{goto EUS7;}
}
}
/**********************************User Flash S8 *********************************************/
if(CNT>64*7)
{
put_char(0, 0x08);put_char(0, 0x08); i_printf(" 8");
Flash_Unlock();
*((unsigned short *)AM_SECTOR_ADDR_8) = AM_SECTOR_ERASE; //0x3030
EUS8:
Delay(8000);
for(address=(unsigned short *)AM_SECTOR_ADDR_8;address<(unsigned short *)AM_SECTOR_ADDR_9;address++)
{
if(*address!=0xffff)
{goto EUS8;}
}
}
/**********************************User Flash S9 *********************************************/
if(CNT>64*8)
{
put_char(0, 0x08);put_char(0, 0x08); i_printf(" 9");
Flash_Unlock();
*((unsigned short *)AM_SECTOR_ADDR_9) = AM_SECTOR_ERASE; //0x3030
EUS9:
Delay(8000);
for(address=(unsigned short *)AM_SECTOR_ADDR_9;address<(unsigned short *)AM_SECTOR_ADDR_10;address++)
{
if(*address!=0xffff)
{goto EUS9;}
}
}
/**********************************User Flash S10 *********************************************/
if(CNT>64*9)
{
put_char(0, 0x08);put_char(0, 0x08); i_printf("10");
Flash_Unlock();
*((unsigned short *)AM_SECTOR_ADDR_10) = AM_SECTOR_ERASE; //0x3030
EUS10:
Delay(8000);
for(address=(unsigned short *)AM_SECTOR_ADDR_10;address<(unsigned short *)AM_SECTOR_ADDR_11;address++)
{
if(*address!=0xffff)
{goto EUS10;}
}
}
/**********************************User Flash S11 *********************************************/
if(CNT>64*10)
{
put_char(0, 0x08);put_char(0, 0x08); i_printf("11");
Flash_Unlock();
*((unsigned short *)AM_SECTOR_ADDR_11) = AM_SECTOR_ERASE; //0x3030
EUS11:
Delay(8000);
for(address=(unsigned short *)AM_SECTOR_ADDR_11;address<(unsigned short *)AM_SECTOR_ADDR_12;address++)
{
if(*address!=0xffff)
{goto EUS11;}
}
}
/**********************************User Flash S12 *********************************************/
if(CNT>64*11)
{
put_char(0, 0x08);put_char(0, 0x08); i_printf("12");
Flash_Unlock();
*((unsigned short *)AM_SECTOR_ADDR_12) = AM_SECTOR_ERASE; //0x3030
EUS12:
Delay(8000);
for(address=(unsigned short *)AM_SECTOR_ADDR_12;address<(unsigned short *)AM_SECTOR_ADDR_13;address++)
{
if(*address!=0xffff)
{goto EUS12;}
}
}
/**********************************User Flash S13 *********************************************/
if(CNT>64*12)
{
put_char(0, 0x08);put_char(0, 0x08); i_printf("13");
Flash_Unlock();
*((unsigned short *)AM_SECTOR_ADDR_13) = AM_SECTOR_ERASE; //0x3030
EUS13:
Delay(8000);
for(address=(unsigned short *)AM_SECTOR_ADDR_13;address<(unsigned short *)AM_SECTOR_ADDR_14;address++)
{
if(*address!=0xffff)
{goto EUS13;}
}
}
/**********************************User Flash S14 *********************************************/
if(CNT>64*13)
{
put_char(0, 0x08);put_char(0, 0x08); i_printf("14");
Flash_Unlock();
*((unsigned short *)AM_SECTOR_ADDR_14) = AM_SECTOR_ERASE; //0x3030
EUS14:
Delay(8000);
for(address=(unsigned short *)AM_SECTOR_ADDR_14;address<(unsigned short *)AM_SECTOR_ADDR_15;address++)
{
if(*address!=0xffff)
{goto EUS14;}
}
}
/**********************************User Flash S15 *********************************************/
if(CNT>64*14)
{
put_char(0, 0x08);put_char(0, 0x08); i_printf("15");
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -