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

📄 main3.objdump

📁 FPGA flash 编程序,使用CYCLONE和FLASH
💻 OBJDUMP
📖 第 1 页 / 共 5 页
字号:
                 nr_flash_write((unsigned short*)na_cfi_flash_0_base,Conf_Controlstage_Address_Flash+base_temp1/2+1+i,((Conf_Controlstage_Address_Buffer[1+i*2])+(Conf_Controlstage_Address_Buffer[1+i*2+1]<<8)));

     //	    	nr_flash_write_buffer((unsigned short*)na_cfi_flash_0_base,Conf_Controlstage_Address_Flash+base_temp1/2+1,(void*)&Conf_Controlstage_Address_Buffer[1],20);  
     	    	nr_flash_write_buffer((unsigned short*)na_cfi_flash_0_base,Conf_Controlstage_Address_Flash,Conf_Controlstage_Address_Backup,base_temp1/2);            
                nr_flash_write((unsigned short*)na_cfi_flash_0_base,Conf_Controlstage_Address_Flash+base_temp1/2,temp_data);
     	    	nr_flash_write_buffer((unsigned short*)na_cfi_flash_0_base,Conf_Controlstage_Address_Flash+base_temp2/2,Conf_Controlstage_Address_Backup+base_temp2/2+1,(1312-(int)base_temp2)/2);
			}
 		  }		
        if(*(Conf_Phase1_Address_Backup+4500)!=0x00)
        nr_flash_write((unsigned short*)na_cfi_flash_0_base,Conf_Phase1_Address_Flash+4500,0x00);
		nr_flash_write_buffer((unsigned short*)na_cfi_flash_0_base,Conf_Phase1_Address_Flash,Conf_Phase1_Address_Backup,288);			
		nr_flash_write_buffer((unsigned short*)na_cfi_flash_0_base,Conf_Stage_Address_Flash,Conf_Stage_Address_Backup,1568);  
        nr_flash_write_buffer((unsigned short*)na_cfi_flash_0_base,Conf_Daydesign_Address_Flash,Conf_Daydesign_Address_Backup,1184);			
        nr_flash_write_buffer((unsigned short*)na_cfi_flash_0_base,Conf_Daydesigntable_Address_Flash,Conf_Daydesigntable_Address_Backup,30);				
	}
	
	if(CheckData[4]==0x98)
	{	
	    flag=nr_flash_erase_sector_4kB((unsigned short*)na_cfi_flash_0_base,(unsigned short*)FLASH_BASE_ADD);
		
		for(i=0; i<74; i++)
		{
	    	Conf_Daydesign_Address_Buffer[i]=CheckData[5+i];							
		}
		if(CheckData[5]==1)
		{
	    	base_temp1=74;
     		nr_flash_write_buffer((unsigned short*)na_cfi_flash_0_base,Conf_Daydesign_Address_Flash,(void*)&Conf_Daydesign_Address_Buffer[0],37);  
     		nr_flash_write_buffer((unsigned short*)na_cfi_flash_0_base,Conf_Daydesign_Address_Flash+base_temp1/2,Conf_Daydesign_Address_Backup+base_temp1/2,1147);  
	    }
	    else
	      if(CheckData[5]==32)
	      {
	    	base_temp1=74*31-1;
     		nr_flash_write_buffer((unsigned short*)na_cfi_flash_0_base,Conf_Daydesign_Address_Flash+base_temp1/2+1,(void*)&Conf_Daydesign_Address_Buffer[0],37);  
     		nr_flash_write_buffer((unsigned short*)na_cfi_flash_0_base,Conf_Daydesign_Address_Flash,Conf_Daydesign_Address_Backup,1147);  
		  }
		  else
		  {
			base_temp1=74*(CheckData[5]-1);
			base_temp2=74+base_temp1;
     		nr_flash_write_buffer((unsigned short*)na_cfi_flash_0_base,Conf_Daydesign_Address_Flash+base_temp1/2,(void*)&Conf_Daydesign_Address_Buffer[0],37);  
     		nr_flash_write_buffer((unsigned short*)na_cfi_flash_0_base,Conf_Daydesign_Address_Flash,Conf_Daydesign_Address_Backup,(int)base_temp1/2);  
     		nr_flash_write_buffer((unsigned short*)na_cfi_flash_0_base,Conf_Daydesign_Address_Flash+base_temp2/2,Conf_Daydesign_Address_Backup+base_temp2/2,(2368-(int)base_temp2)/2);  			
          }

        if(*(Conf_Phase1_Address_Backup+4500)!=0x00)
        nr_flash_write((unsigned short*)na_cfi_flash_0_base,Conf_Phase1_Address_Flash+4500,0x00);
		nr_flash_write_buffer((unsigned short*)na_cfi_flash_0_base,Conf_Phase1_Address_Flash,Conf_Phase1_Address_Backup,288);			
		nr_flash_write_buffer((unsigned short*)na_cfi_flash_0_base,Conf_Stage_Address_Flash,Conf_Stage_Address_Backup,1568);  
        nr_flash_write_buffer((unsigned short*)na_cfi_flash_0_base,Conf_Controlstage_Address_Flash,Conf_Controlstage_Address_Backup,640);		
        nr_flash_write_buffer((unsigned short*)na_cfi_flash_0_base,Conf_Daydesigntable_Address_Flash,Conf_Daydesigntable_Address_Backup,30);					
	}
	
	if(CheckData[4]==0x99)
	{	
	    flag=nr_flash_erase_sector_4kB((unsigned short*)na_cfi_flash_0_base,(unsigned short*)FLASH_BASE_ADD);	
	
		for(i=0; i<60; i++)
		{
	    	Conf_Daydesigntable_Address_Buffer[i]=CheckData[5+i];								
		}	
        if(*(Conf_Phase1_Address_Backup+4500)!=0x00)		
        nr_flash_write((unsigned short*)na_cfi_flash_0_base,Conf_Phase1_Address_Flash+4500,0x00);		
        nr_flash_write_buffer((unsigned short*)na_cfi_flash_0_base,Conf_Daydesigntable_Address_Flash,(void*)&Conf_Daydesigntable_Address_Buffer[0],30);									
		nr_flash_write_buffer((unsigned short*)na_cfi_flash_0_base,Conf_Phase1_Address_Flash,Conf_Phase1_Address_Backup,288);			
		nr_flash_write_buffer((unsigned short*)na_cfi_flash_0_base,Conf_Stage_Address_Flash,Conf_Stage_Address_Backup,1568);  
        nr_flash_write_buffer((unsigned short*)na_cfi_flash_0_base,Conf_Controlstage_Address_Flash,Conf_Controlstage_Address_Backup,640);		
        nr_flash_write_buffer((unsigned short*)na_cfi_flash_0_base,Conf_Daydesign_Address_Flash,Conf_Daydesign_Address_Backup,1184);			
	}	
	
	if(CheckData[4]==0x94)
	{
		flag=nr_flash_erase_sector_4kB((unsigned short*)na_cfi_flash_0_base,(unsigned short*)FLASH_BASE_ADD);
						
		for(i=0; i<288; i++)
		{
			if(CheckData[5]==0)
			{
			    Conf_Phase1_Address_Buffer[i]=CheckData[6+i];
		    }
		    else
		    {
			    Conf_Phase2_Address_Buffer[i]=CheckData[6+i];
		    }
		}

		if(CheckData[5]==0)
		{
			nr_flash_write_buffer((unsigned short*)na_cfi_flash_0_base,Conf_Phase1_Address_Flash,(void*)&Conf_Phase1_Address_Buffer[0],144);			
			nr_flash_write_buffer((unsigned short*)na_cfi_flash_0_base,Conf_Phase2_Address_Flash,Conf_Phase2_Address_Backup,144);  
		}
		else
		{
			for(i=0; i<144; i++)
			{
              nr_flash_write((unsigned short*)na_cfi_flash_0_base,Conf_Phase2_Address_Flash+i,((Conf_Phase2_Address_Buffer[i*2])+(Conf_Phase2_Address_Buffer[i*2+1]<<8)));
 			}
//			nr_flash_write_buffer((unsigned short*)na_cfi_flash_0_base,Conf_Phase2_Address_Flash,(void*)&Conf_Phase2_Address_Buffer[0],144);			
			nr_flash_write_buffer((unsigned short*)na_cfi_flash_0_base,Conf_Phase1_Address_Flash,Conf_Phase1_Address_Backup,144);  
		}
		nr_flash_write_buffer((unsigned short*)na_cfi_flash_0_base,Conf_Stage_Address_Flash,Conf_Stage_Address_Backup,1568);  
        nr_flash_write_buffer((unsigned short*)na_cfi_flash_0_base,Conf_Controlstage_Address_Flash,Conf_Controlstage_Address_Backup,640);		
        nr_flash_write_buffer((unsigned short*)na_cfi_flash_0_base,Conf_Daydesign_Address_Flash,Conf_Daydesign_Address_Backup,1184);			
        nr_flash_write_buffer((unsigned short*)na_cfi_flash_0_base,Conf_Daydesigntable_Address_Flash,Conf_Daydesigntable_Address_Backup,30);					
	
        if(*(Conf_Phase1_Address_Backup+4500)!=0x00)
        nr_flash_write((unsigned short*)na_cfi_flash_0_base,Conf_Phase1_Address_Flash+4500,0x00);
    }	
	

	    nr_flash_erase_sector_4kB((unsigned short*)na_cfi_flash_0_base,(unsigned short*)FLASH_BASE_ADD_bake);
        nr_flash_write_buffer((unsigned short*)na_cfi_flash_0_base,Conf_Daydesigntable_Address_Backup,Conf_Daydesigntable_Address_Flash,30);									
		nr_flash_write_buffer((unsigned short*)na_cfi_flash_0_base,Conf_Phase1_Address_Backup,Conf_Phase1_Address_Flash,144);			
		nr_flash_write_buffer((unsigned short*)na_cfi_flash_0_base,Conf_Phase2_Address_Backup,Conf_Phase2_Address_Flash,144);				
		nr_flash_write_buffer((unsigned short*)na_cfi_flash_0_base,Conf_Stage_Address_Backup,Conf_Stage_Address_Flash,1568);  
        nr_flash_write_buffer((unsigned short*)na_cfi_flash_0_base,Conf_Controlstage_Address_Backup,Conf_Controlstage_Address_Flash,640);		
        nr_flash_write_buffer((unsigned short*)na_cfi_flash_0_base,Conf_Daydesign_Address_Backup,Conf_Daydesign_Address_Flash,1184);			
        if(*(Conf_Phase1_Address_Backup+4500)!=0x00)
          nr_flash_write((unsigned short*)na_cfi_flash_0_base,Conf_Phase1_Address_Backup+4500,0x00);		
}

/******************************************************************************

经过串口发送cpu的数据

********************************************************************************/
void Write_Comm(np_uart* uartbase)
{
	int i,j;
	unsigned char Trans_Data[100];
	unsigned char Trans_Data_Final[100];
	unsigned char* Now_Read_Tail;
	int datanumber=0;
	unsigned char datanumber_final=0;
	unsigned short crcresult=0;
	unsigned char* p;
	unsigned char Data_Final=0;
	unsigned char Data_Final_Number=0;
	

	Trans_Data[0]=Parameter[0];	
	Trans_Data[1]=Parameter[1];	
	Trans_Data[2]=0xcc;	
	Trans_Data[3]=0xc1;	
	
	datanumber=4;
	
	Now_Ram_Read_Add=(unsigned char*)((unsigned int)BASE_ADD+(unsigned int)((*Tx_Head_High[Transmit_Number])<<8)+(unsigned int)(*Tx_Head_Low[Transmit_Number]));
    Now_Read_Tail=(unsigned char*)((unsigned int)BASE_ADD+(unsigned int)((*Tx_Tail_High[Transmit_Number])<<8)+(unsigned int)(*Tx_Tail_Low[Transmit_Number]));

    if((unsigned int)Now_Ram_Read_Add < (BASE_ADD+0x80) || (unsigned int)Now_Ram_Read_Add > (BASE_ADD+0x7f1))
      nr_uart_txstring("the cpu giving address is error!");
    else
	{
		while(Now_Ram_Read_Add<=Now_Read_Tail)
		{
			Trans_Data[datanumber]=*Now_Ram_Read_Add;
			Check_Ram_Read();
			datanumber++;
		}
		
	    p=&Trans_Data[0];
		crcresult=Cal_Crc(p,(unsigned int)datanumber);
		
		Trans_Data[datanumber++]=crcresult>>8;
		Trans_Data[datanumber++]=crcresult;
		Trans_Data[datanumber++]=0x7e;
		
		for(i=0;i<datanumber;i++)
		{
			for(j=0;j<8;j++)
			{
				Add_Bit=(Trans_Data[i]>>(7-j))%2;
				Add_transparences();
				Data_Final=Data_Final+(Add_Bit<<(7-Data_Final_Number++));
				if((Add_transparence_valid==1) && (i!=(datanumber-1)))
				{
					Data_Final_Number++;
				}				
				if(Data_Final_Number==8)
				{
					Trans_Data_Final[datanumber_final++]=Data_Final;
					Data_Final_Number=0;
					Data_Final=0;
				}
				
			}
		}
		if(Data_Final_Number!=0)
		{
			Trans_Data_Final[datanumber_final++]=Data_Final;
		}
		
		uartbase->np_uarttxdata=0x7e;
		delay(2000);	
			
		for(i=0;i<datanumber_final;i++)
		{
			uartbase->np_uarttxdata=Trans_Data_Final[i];
			delay(2000);				
		}
	}
}

/****************************************************************************

发送流量包的的函数

*****************************************************************************/
void Transmit_Flow_Package(np_uart* uartbase)
{
	unsigned char* Now_Read_Add;
	unsigned char* Now_Read_End;
	unsigned char data[90];
	unsigned short result;
	unsigned char Data_Final[100];
	unsigned char tempdata=0;
	int Data_Final_Number=0;
	int datanumber=0;	
	int i,j;	
	
	Now_Read_Add=(unsigned char*)Now_Flow_Information_Add;
	Now_Read_End=(unsigned char*)(((unsigned long)Now_Flow_Information_Add/16384+1)*16384);
	
	data[0]=Parameter[0];
	data[1]=Parameter[1];
	data[2]=0xcc;
	data[3]=0xc1;
	data[4]=0xcd;
	
	while(Now_Read_Add!=Now_Read_End)
	{
		for(i=71;i<0;i--)
		{
			data[i+4]=*Now_Read_Add;
			if((unsigned long)--Now_Read_Add==(unsigned long)Flow_Information_Base)
			  Now_Read_Add=(unsigned char*)Flow_Information_End;
		}
		result=Cal_Crc(&data[0],76);
		data[76]=(result>>8);
		data[77]=result;
		data[78]=0x7e;
		
		for(i=0;i<79;i++)
		{
			for(j=0;j<8;j++)
			{
				Add_Bit=(data[i]>>(7-j))%2;
				Add_transparences();
				tempdata=tempdata+(Add_Bit<<(7-Data_Final_Number++));
				if((Add_transparence_valid==1) && (i!=78))
				{
					Data_Final_Number++;
				}				
				if(Data_Final_Number==8)
				{
					Data_Final[datanumber++]=tempdata;
					Data_Final_Number=0;
					tempdata=0;
				}		
			}
		}
		if(Data_Final_Number!=0)
		{
			Data_Final[datanumber++]=tempdata;
		}	

        if(Now_Read_Add-71<Now_Read_End)
          Now_Read_Add=Now_Read_End;
		uartbase->np_uarttxdata=0x7e;
		delay(2000);		
		
		for(i=0;i<datanumber;i++)
		{
			uartbase->np_uarttxdata=Data_Final[i];
			delay(2000);				
		}	
    }
}

/****************************************************************************

发送查询信息的函数

*****************************************************************************/
void Transmit_Query_Package(np_uart* uartbase,unsigned char query_mark)
{
	unsigned short result;
	unsigned char data[300];
	unsigned char Data_Final[300];
	unsigned char tempdata=0;
	int Data_Final_Number=0;
	int datanumber=0;
	int cycle_number=0;
	int i,j;
	
	data[0]=Parameter[0];
	data[1]=Parameter[1];
	data[2]=0xcc;
	data[3]=0xc1;
	
	if(query_mark==0x84)
	{
		if(CheckData[5]==0)
		{
			data[5]=0;
		    memcpy(&data[6],Conf_Phase1_Address_Flash,288);
	    }
	    else
	    {
			data[5]=1;
		    memcpy(&data[6],Conf_Phase2_Address_Flash,288);		
		}
		data[4]=0xc4;		
		result=Cal_Crc(&data[0],294);
		data[294]=(result>>8);
		data[295]=result;
		data[296]=0x7e;	
		cycle_number=297;
    }
	if(query_mark==0x85)
	{
		memcpy(&data[5],(unsigned char*)Conf_Stage_Address_Flash+(CheckData[5]-1)*98,98);
		data[4]=0xc5;
		result=Cal_Crc(&data[0],103);
		data[103]=(result>>8);
		data[104]=result;
		data[105]=0x7e;	
		cycle_number=106;
    }	
	if(query_mark==0x86)
	{
		memcpy(&data[5],(unsigned char*)Conf_Controlstage_Address_Flash+(CheckData[5]-1)*41,41);
		data[4]=0xc6;
		result=Cal_Crc(&data[0],46);		
		data[46]=(result>>8);
		data[47]=result;
		data[48]=0x7e;	
		cycle_number=49;
    }	
	if(query_mark==0x88)
	{
		memcpy(&data[5],(unsigned char*)Conf_Daydesign_Address_Flash+(CheckData[5]-1)*74,74);
		data[4]=0xc8;
		result=Cal_Crc(&data[0],79);
		data[79]=(result>>8);
		data[80]=result;
		data[81]=0x7e;	
		cycle_number=82;
    }	
	if(query_mark==0x89)
	{
		memcpy(&data[5],Conf_Daydesigntable_Address_Flash,60);
		data[4]=0xc9;
		result=Cal_Crc(&data[0],65);
		data[65]=(result>>8);
		data[66]=result;
		data[67]=0x7e;	
		cycle_number=68;
    }		
	
	for(i=0;i<cycle_number;i++)
	{
		for(j=0;j<8;j++)
		{
			Add_Bit=(data[i]>>(7-j))%2;
			Add_transparences();
			tempdata=tempdata+(Add_Bit<<(7-Data_Final_Number++));
			if((Add_transparence_valid==1) && (i!=cycle_number-1))
			{
				Data_Final_Number++;
			}			
			if(Data_Final_Number==8)
			{
				Data_Final[datanumber++]=tempdata;
				Data_Final_Number=0;
				tempdata=0;
			}	
		}
	}
	if(Data_Final_Number!=0)
	{
		Data_Final[datanumber++]=tempdata;
	}	

	uartbase->np_uarttxdata=0x7e;
	delay(2000);		
	
	for(i=0;i<datanumber;i++)
	{
		uartbase->np_uarttxdata=Data_Final[i];
		delay(2000);				
	}
}

/*****************************************************************************

发送应答信息的函数

*****************************************************************************/
void Transmit_Answer_Package(np_uart* uartbase,unsigned char answer_mark)
{
	unsigned short result;
	unsigned char data[8]={Parameter[0],Parameter[1],0xCC,0xc1,0x0};
	unsigned char Data_Final[100];
	unsigned char tempdata=0;
	int Data_Final_Number=0;
	int datanumber=0;
	int i,j;
	
	for(i=0;i<100;i++)
	{
		Data_Final[i]=0;
	}
	
	if(answer_mark==0x94)
	   data[4]=0xd4;
	if(answer_mark==0x95)
	   data[4]=0xd5;
	if(answer_mark==0x96)
	   data[4]=0xd6;
	if(answer_mark==0x98)
	   data[4]=0xd8;
	if(answer_mark==0x99)
	   data[4]=0xd9;	

	result=Cal_Crc(&data[0],5);

⌨️ 快捷键说明

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