Example #1
0
int Read_UpdateBin_toCheck(INT8U *md5)
{ 
  int i = 0;
  int len_left = 512;

  {
    md5_starts( &ctx_rc );

    for(i = 0; i < soft_len; i += len_left)
    {	
	    if( i + len_left > soft_len) len_left = soft_len - i;
			FlashBufferRead((u8*)temp, zone_soft +i, len_left);//成功读出512个字节
	    md5_update( &ctx_rc, temp, len_left);	
    }				    
  
    md5_finish( &ctx_rc, md5_check );
    memset( &ctx_rc, 0, sizeof( md5_context ) );
  }
	
  for(i = 0; i < 16; i++)
  {
  	if(md5_check[i] != *(md5 + i))
	  {
	    return 0;
	  }
  }
	
  return 1;
}
Example #2
0
void CopyBin_toSd(void){
	int i = 0;
	int len_left = 512;
	
	Feed_IWDG();
	
  if(f_mount(0, &fs) != FR_OK) return;
	f_open(&soft_fsrc, "update.bin", FA_CREATE_ALWAYS | FA_WRITE);
  
	for(i = 0; i < soft_len; i += len_left)
  {	
	    if( i + len_left > soft_len) len_left = soft_len - i;
			FlashBufferRead((u8*)temp, zone_soft +i, len_left);//成功读出512个字节
			Write_Soft_Date(temp,  i, len_left);
  }				    
	
  f_close(&soft_fsrc);
	
	f_open(&soft_fsrc, "md5.dat", FA_CREATE_ALWAYS | FA_WRITE);

	f_write(&soft_fsrc, soft_md5, 17, &bw);
  f_close(&soft_fsrc);
	f_mount(0, NULL);
}
Example #3
0
//#pragma vector=RESET_VECTOR
//#define PROGRAMDEBUG  1
int main(void)
{
  INT16U i,temp,second;
  INT16U count,oldDI;
  INT8U RUN;
  //RUNRECORD runlog;
  unsigned char old__second;
	unsigned char old__minute;
	unsigned char old__hour;
	unsigned char old__day;
	unsigned char minute_counter=0;
	//unsigned char hour_counter=0;
  unsigned int DI_Convert=0;

  char checkcode[6]="vh11+\0";
	char DI_C[4]="DI=\0";
	char d[5];

	unsigned int Prog_Circle=0;
	//unsigned char cps[]="DataTime=\0";
	INT8U DI_Alter=0;
  INT8U Save_Hourdata=0;
  INT8U Save_Daydata=0;

  //INT8U a[16]="123456789ABCDEF";
  //INT8U b[17];
   // INT8U c[3]={0xf8,0x10,0x10};
  INT8U checknum[7];
  /***********************************************
                     device initializing
  ************************************************/
  CPU_init();
  P4OUT |=BIT0;   //flash rst
  GPRS_POWERON;
  RealData.R_D.DO=0;
  DIInput();
	DOOutput(RealData.R_D.DO);
   init_lcd ();
   clrram();
   LCD_light_ON;
   disp_img(0x01e0+960,30,64,zimo240128);
   //MemoryClear(Modbustore,sizeof(Modbustore));
   Modbustore =0;
   MemoryClear(local_mma_H,sizeof(local_mma_H));
   MemoryClear(local_mma_D,sizeof(local_mma_D));
   MemoryClear(local_mma_M,sizeof(local_mma_M));//100504
   MemoryClear(dev_mma_D,sizeof(dev_mma_D));
   MemoryClear(dev_mma_H,sizeof(dev_mma_H));
   MemoryClear(dev_mma_M,sizeof(dev_mma_M));  //100504
   MemoryClear(Hour_COD_avg,sizeof(Hour_COD_avg));
   MemoryClear(Hour_B01_avg,sizeof(Hour_B01_avg));
	delay11(3200);
  //GPRS_POWEROFF;
 //test

#ifdef PROGRAMDEBUG
 char c[3]={0x00,0,0};
 char aa='A';
 FlashBufferWrite(c,"abcdefg",7,0);
 //c[0]=0xf0;
 //FlashBuffertoMemory(c,0);
 Delay_N_mS(20000);
 c[0]=0;
 FlashBufferRead(c,checknum,5,0);
 checknum[0]=0;

 c[0]=0xf0;
 FlashMemorytoBuffer(c,0);
 c[0]=0;
 FlashBufferRead(c,checknum,5,0);
 checknum[0]=0;
 c[0]=0xf0;
 FlashMemoryRead(c,checknum,5);
 //FlashMemoryWrite(c,checkcode,5,0);
 Delay_N_mS(20000);
   //c[2]=0x05;
 //FlashMemoryWrite(c,&aa,1,0);
 Delay_N_mS(20000);
 c[2]=0;
 FlashMemoryRead(c,checknum,5);
#endif
 //---------------------------
 /****************************************************
                  system initializing
 ****************************************************/
 AT24C64_RS(checknum,0x00,6);
 Delay_N_mS(2000);
 AT24C64_RS(checknum,0x00,6);
 if(strcmp(checknum,checkcode)!=0)
	{
    v_charge1302();
		v_Set1302();
		
		for(count=0;count<6;count++)
			SPARA.pw[count]=(count+1)|0x30;  //初始密码123456
		
		for(count=0;count<9;count++)
		{
			SPARA.mn[count]=(count+1)|0x30;  //mn 12345678901234
			ml_mn[count]=parameter.sys_parameter.mn[count];
		}
			
		for(count=0;count<5;count++)
		{
			SPARA.mn[count+9]=count|0x30;
			ml_mn[count+9]=parameter.sys_parameter.mn[count+9];
		}
		
		SPARA.st[0]='3';             //st 32
		SPARA.st[1]='2';
		ml_st[0]='3';
		ml_st[1]='2';
		for(count=0;count<9;count++)
			SPARA.sim[count]=(count+1)|0x30;  //sim 123456789
		
		SPARA.rd_interval[0]='3';     //实时数据上报时间 60秒
		SPARA.rd_interval[1]='0';
		SPARA.rd_interval[2]='0';
		
		for(count=0;count<5;count++)
			SPARA.overtime[count]='0';    //超时时间 5秒
		SPARA.overtime[4]='5';
		SPARA.resendtime[0]='0';		//重发次数 3次
		SPARA.resendtime[1]='3';
		for(count=0;count<5;count++)
			SPARA.warntime[count]='0';    //报警时间 5
		SPARA.warntime[4]='5';
		
		for(count=0;count<4;count++)
			SPARA.reporttime[count]='0';	//上报时间 5
		SPARA.reporttime[3]='5';
		for(count=0;count<2;count++)
			SPARA.alarmtarge[count]=0x30+count;		//仪表污染物编号
		SPARA.alarmtarge[2]='\0';
		SPARA.alarmtarge[3]='\0';
							
		for(count=0;count<8;count++)
		{
			//ADPARA(count).po_id[0]='P';
			//ADPARA(count).po_id[1]=0x31+count;
			//ADPARA(count).po_id[2]='\0';
                        ADPARA(count).po_id[0]='0';
			ADPARA(count).po_id[1]='0';
			ADPARA(count).po_id[2]='0';
			ADPARA(count).ADUV.b=16.0;
			ADPARA(count).ADLV.b=0.0;
			ADPARA(count).U_Alarmlimt.b=10.0;
			ADPARA(count).L_Alarmlimt.b=0.0;
			ADPARA(count).rate.b=(16.0-0.0)/0x666;
					
			ADPARA(count).AI_Type=2;
			
		}
    for(count=0;count<6;count++)
    SPARA.Serial_Baud[count]=0;
		//LCD_Baud=0;
		for(checknum[0]=0;checknum[0]<6;checknum[0]++)
			for(count=0;count<16;count++)
				SPARA.PO_SerialNum[checknum[0]][count]=0xff;		

    SPARA.PO_SerialNum[0][0]=0x05;
		
    for(count=0;count<6;count++)
		{
			SPARA.PO_Type[count]=0;
			Channel_Num[count]=0;
		}
    SPARA.PO_Type[0]=1; //水,哈希
			Channel_Num[0]=1;
		SPARA.alarmtarge[10]=0;//baud rate
    SPARA.LCD_Backtime=1;
		
		AT24C64_W(parameter.sys_setting,0x10,sizeof(PARAMETER));	
                /*初始化历史数据标志组结构体,存储于Flash第一页(页地址0x00)*/
                INT8U  Rdaddr[3]={0,0,0};
                INT16U pageaddr=0;
                HISDATAFLAGS Sighisdata;
                MemoryClear(&Sighisdata,sizeof(Sighisdata));
                for(count=0;count<7;)
                {
                  Sighisdata.page =0x10+count*31*24;
                  Rdaddr[1]=(INT8U)(pageaddr>>8);
                  Rdaddr[2]=(INT8U)(pageaddr);
                  FlashBufferWrite(Rdaddr,&Sighisdata,sizeof(Sighisdata),FLASHBUFFER1);
                  FlashBufferWrite(Rdaddr,&Sighisdata,sizeof(Sighisdata),FLASHBUFFER1);
                  count++;
                  pageaddr=count*120;
                }
                Rdaddr[0]=0;
                Rdaddr[1]=0;
                Rdaddr[2]=0;
                FlashBuffertoMemory(Rdaddr,FLASHBUFFER1);

                HISDATAFLAGS_D sig_d;
                pageaddr=0;
                MemoryClear(&sig_d,sizeof(sig_d));
                for(count=0;count<13;)
                {
                  sig_d.page =5400+count*31;
                  Rdaddr[0]=0;
                  Rdaddr[1]=((INT8U)(pageaddr>>8))|0x28;  //page 5
                  Rdaddr[2]=(INT8U)(pageaddr);
                  FlashBufferWrite(Rdaddr,&sig_d,sizeof(sig_d),FLASHBUFFER1);
                  count++;
                  pageaddr=count*80;
                }
                Rdaddr[0]=0;
                Rdaddr[1]=0x28;
                Rdaddr[2]=0;
                FlashBuffertoMemory(Rdaddr,FLASHBUFFER1);

                HISDATAFLAGS_R sig_r;
                MemoryClear(&sig_r,sizeof(sig_r));
                pageaddr=0;
                for(count=0;count<3;)
                {
                  sig_r.page =6000+count*24*12;
                  Rdaddr[0]=0;
                  Rdaddr[1]=((INT8U)(pageaddr>>8))|0x50;
                  Rdaddr[2]=(INT8U)(pageaddr);
                  FlashBufferWrite(Rdaddr,&sig_r,sizeof(sig_r),FLASHBUFFER1);
                  count++;
                  pageaddr=count*200;
                }
                Rdaddr[0]=0;
                Rdaddr[1]=0x50; // page 10
                Rdaddr[2]=0;
                FlashBuffertoMemory(Rdaddr,FLASHBUFFER1);
                
                //运行日志存储于8190页(1FFE)
                RUNRECORD runlog;
                MemoryClear(&runlog,sizeof(runlog));
                pageaddr=0; 
                for(count=0;count<10;count++)
                {
                  pageaddr=count*64;
                  Rdaddr[0]=0xff;
                  Rdaddr[1]=((INT8U)(pageaddr>>8))|0xf0;
                  Rdaddr[2]=(INT8U)(pageaddr);
                  FlashBufferWrite(Rdaddr,&runlog,sizeof(runlog),FLASHBUFFER1);
                }
                Rdaddr[0]=0xff;
                Rdaddr[1]=0xf0;
                Rdaddr[2]=0;
                FlashBuffertoMemory(Rdaddr,FLASHBUFFER1);
                
                //Sighisdata.page =0;
                //FlashBufferWrite(Rdaddr,&Sighisdata,sizeof(Sighisdata),FLASHBUFFER1);
		AT24C64_W(checkcode,0x00,6);


	}