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

📄 main_entry.c

📁 一个比较好的三星s3c4510的启动代码
💻 C
📖 第 1 页 / 共 3 页
字号:
		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;

/**********************************User Flash S1 *********************************************/
	if(CNT>64*0)
		{
		i_printf(">>>Erase User Flash Area S1,Please Wait...");
		Flash_Unlock();
		*((unsigned short *)AM_SECTOR_ADDR_1) = AM_SECTOR_ERASE;	//0x3030	
		i_printf(",Blank Check...");

EUS1:	
		Delay(50000);		         
		for(address=(unsigned short *)AM_SECTOR_ADDR_1;address<(unsigned short *)AM_SECTOR_ADDR_2;address++)
			{
			if(*address!=0xffff)
				{goto EUS1;}
			}
		i_printf(", OK!\r\n");    
		}

/**********************************User Flash S2 *********************************************/
        if(CNT>64*1)
		{
		i_printf(">>>Erase User Flash Area S2,Please Wait...");
		Flash_Unlock();
		*((unsigned short *)AM_SECTOR_ADDR_2) = AM_SECTOR_ERASE;	//0x3030
		i_printf(",Blank Check...");
EUS2:
	        	Delay(50000);         
		for(address=(unsigned short *)AM_SECTOR_ADDR_2;address<(unsigned short *)AM_SECTOR_ADDR_3;address++)
			{
			if(*address!=0xffff)
				{goto EUS2;}
			}
		i_printf(", OK!\r\n");    
		}

/**********************************User Flash S3 *********************************************/
        	if(CNT>64*2)
		{
		i_printf(">>>Erase User Flash Area S3,Please Wait...");
		Flash_Unlock();
		*((unsigned short *)AM_SECTOR_ADDR_3) = AM_SECTOR_ERASE;	//0x3030
   		i_printf(",Blank Check...");
EUS3:
		Delay(50000);        
		for(address=(unsigned short *)AM_SECTOR_ADDR_3;address<(unsigned short *)AM_SECTOR_ADDR_4;address++)
			{
			if(*address!=0xffff)
				{goto EUS3;}
			}
		i_printf(", OK!\r\n");    

		}

/**********************************User Flash S4 *********************************************/
	if(CNT>64*3)
		{


		i_printf(">>>Erase User Flash Area S4,Please Wait...");
		Flash_Unlock();
		*((unsigned short *)AM_SECTOR_ADDR_4) = AM_SECTOR_ERASE;	//0x3030
	       	i_printf(",Blank Check...");
EUS4:
	         Delay(50000);
		for(address=(unsigned short *)AM_SECTOR_ADDR_4;address<(unsigned short *)AM_SECTOR_ADDR_5;address++)
			{
			if(*address!=0xffff)
				{goto EUS4;}
			}
		i_printf(", OK!\r\n");    

		}

/**********************************User Flash S5*********************************************/
	
	if(CNT>64*4)
		{

		i_printf(">>>Erase User Flash Area S5,Please Wait...");
		Flash_Unlock();
		*((unsigned short *)AM_SECTOR_ADDR_5) = AM_SECTOR_ERASE;	//0x3030
		i_printf(",Blank Check...");
EUS5:
         	Delay(50000);         
		for(address=(unsigned short *)AM_SECTOR_ADDR_5;address<(unsigned short *)AM_SECTOR_ADDR_6;address++)
			{
			if(*address!=0xffff)
				{goto EUS5;}
			}
		i_printf(", OK!\r\n");    

		}

 /**********************************User Flash S6 *********************************************/        
         if(CNT>64*5)
		{

		i_printf(">>>Erase User Flash Area S6,Please Wait...");
		Flash_Unlock();
		*((unsigned short *)AM_SECTOR_ADDR_6) = AM_SECTOR_ERASE;	//0x3030
	         i_printf(",Blank Check...");
EUS6:
         	Delay(50000);
		for(address=(unsigned short *)AM_SECTOR_ADDR_6;address<(unsigned short *)AM_SECTOR_ADDR_7;address++)
			{
			if(*address!=0xffff)
				{goto EUS6;}
			}
		i_printf(", OK!\r\n");    

		}
/**********************************User Flash S7 *********************************************/
	if(CNT>64*6)
		{

		i_printf(">>>Erase User Flash Area S7,Please Wait...");
		Flash_Unlock();
		*((unsigned short *)AM_SECTOR_ADDR_7) = AM_SECTOR_ERASE;	//0x3030
	         i_printf(",Blank Check...");
 EUS7:
         	Delay(50000);
		for(address=(unsigned short *)AM_SECTOR_ADDR_7;address<(unsigned short *)AM_SECTOR_ADDR_8;address++)
			{
			if(*address!=0xffff)
				{goto EUS7;}
			}
		i_printf(", OK!\r\n");    

		}

/**********************************User Flash S8 *********************************************/
	if(CNT>64*7)
		{         

		i_printf(">>>Erase User Flash Area S8,Please Wait...");
		Flash_Unlock();
		*((unsigned short *)AM_SECTOR_ADDR_8) = AM_SECTOR_ERASE;	//0x3030
		i_printf(",Blank Check...");
EUS8:
         	Delay(50000);         
		for(address=(unsigned short *)AM_SECTOR_ADDR_8;address<(unsigned short *)AM_SECTOR_ADDR_9;address++)
			{
			if(*address!=0xffff)
				{goto EUS8;}
			}
		i_printf(", OK!\r\n");    

		}

/**********************************User Flash S9 *********************************************/
 	if(CNT>64*8)
		{         

		i_printf(">>>Erase User Flash Area S9,Please Wait...");
		Flash_Unlock();
		*((unsigned short *)AM_SECTOR_ADDR_9) = AM_SECTOR_ERASE;	//0x3030
	         i_printf(",Blank Check...");
EUS9:
         	Delay(50000);
		for(address=(unsigned short *)AM_SECTOR_ADDR_9;address<(unsigned short *)AM_SECTOR_ADDR_10;address++)
			{
			if(*address!=0xffff)
				{goto EUS9;}
			}
		i_printf(", OK!\r\n");   

		}

/**********************************User Flash S10 *********************************************/	
  	if(CNT>64*9)
		{         

		i_printf(">>>Erase User Flash Area S10,Please Wait...");
		Flash_Unlock();
		*((unsigned short *)AM_SECTOR_ADDR_10) = AM_SECTOR_ERASE;	//0x3030
	         i_printf(",Blank Check...");
EUS10:
         	Delay(50000);
		for(address=(unsigned short *)AM_SECTOR_ADDR_10;address<(unsigned short *)AM_SECTOR_ADDR_11;address++)
			{
			if(*address!=0xffff)
				{goto EUS10;}
			}
		i_printf(", OK!\r\n");    

		}

/**********************************User Flash S11 *********************************************/
  	if(CNT>64*10)
		{         

		i_printf(">>>Erase User Flash Area S11,Please Wait...");
		Flash_Unlock();
		*((unsigned short *)AM_SECTOR_ADDR_11) = AM_SECTOR_ERASE;	//0x3030
	         i_printf(",Blank Check...");
EUS11:
        		Delay(50000);

		for(address=(unsigned short *)AM_SECTOR_ADDR_11;address<(unsigned short *)AM_SECTOR_ADDR_12;address++)
			{
			if(*address!=0xffff)
				{goto EUS11;}
			}
		i_printf(", OK!\r\n");    

		}
/**********************************User Flash S12 *********************************************/
  	if(CNT>64*11)
		{         

		i_printf(">>>Erase User Flash Area S12,Please Wait...");
		Flash_Unlock();
		*((unsigned short *)AM_SECTOR_ADDR_12) = AM_SECTOR_ERASE;	//0x3030
		i_printf(",Blank Check...");
EUS12:
         	Delay(50000);         
		for(address=(unsigned short *)AM_SECTOR_ADDR_12;address<(unsigned short *)AM_SECTOR_ADDR_13;address++)
			{
			if(*address!=0xffff)
				{goto EUS12;}
			}
		i_printf(", OK!\r\n");    

		}

/**********************************User Flash S13 *********************************************/
   	if(CNT>64*12)
		{         

		i_printf(">>>Erase User Flash Area S13,Please Wait...");
		Flash_Unlock();
		*((unsigned short *)AM_SECTOR_ADDR_13) = AM_SECTOR_ERASE;	//0x3030
		i_printf(",Blank Check...");
EUS13:
         	Delay(50000);       
		for(address=(unsigned short *)AM_SECTOR_ADDR_13;address<(unsigned short *)AM_SECTOR_ADDR_14;address++)
			{
			if(*address!=0xffff)
				{goto EUS13;}
			}
		i_printf(", OK!\r\n");    

		}


/**********************************User Flash S14 *********************************************/
  	if(CNT>64*13)
		{         

		i_printf(">>>Erase User Flash Area S14,Please Wait...");
		Flash_Unlock();
		*((unsigned short *)AM_SECTOR_ADDR_14) = AM_SECTOR_ERASE;	//0x3030
	         i_printf(",Blank Check...");
EUS14:
         	Delay(50000);
		for(address=(unsigned short *)AM_SECTOR_ADDR_14;address<(unsigned short *)AM_SECTOR_ADDR_15;address++)
			{
			if(*address!=0xffff)
				{goto EUS14;}
			}
		i_printf(", OK!\r\n");    

		}
/**********************************User Flash S15 *********************************************/
  	if(CNT>64*14)
		{         

		i_printf(">>>Erase User Flash Area S15,Please Wait...");
		Flash_Unlock();
		*((unsigned short *)AM_SECTOR_ADDR_15) = AM_SECTOR_ERASE;	//0x3030
	         i_printf(",Blank Check...");
EUS15:
       		Delay(50000);
		for(address=(unsigned short *)AM_SECTOR_ADDR_15;address<(unsigned short *)AM_SECTOR_ADDR_16;address++)
			{
			if(*address!=0xffff)
				{goto EUS15;}
			}
		i_printf(", OK!\r\n");    

		}

⌨️ 快捷键说明

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