/********************************************************
* Function for Programming of section by simple longs
*
********************************************************/
LWord FLASH_ProgramSectionByLongs(LWord destination, LWord* pSource, LWord size)
{ 
  while(size--)
  {
    if(FLASH_ProgramLongWord(destination, *pSource++) != FLASH_OK)
      return FLASH_FAIL;
    destination += 4;
  }
  return FLASH_OK;
}
/********************************************************
* Function for Programming of section by simple longs
*
********************************************************/
LWord FLASH_ProgramSectionByLongs(LWord destination, LWord* pSource, LWord size)
{ 

  LWord *pdata;

  pdata = pSource;
  
  
  
  while(size--)
  {  
/*
  	if(destination == 0x500)
  	{
  		data = *(uint32_t *)0x1fffff00;
		//FLASH_EraseSector(0x5000);
		FLASH_ProgramLongWord(0x6008, data);
        FLASH_ProgramLongWord(0x600c, *pdata);
		FLASH_ProgramLongWord(0x6010, (LWord)pdata);
	}
*/	
	data = *pdata;
    
    if(FLASH_ProgramLongWord(destination, *pdata++) != FLASH_OK)
    {
		return FLASH_FAIL;
    }
	
    destination += 4;

	//don't program sec bit
	if(destination == 0x40C)
	{
          
          if(HWFSEC == LOCK_MCU)
  	  {
		*pdata = 0xFFFFFFFD;
	  }
	  else
	  {
		  *pdata = 0xFFFFFFFE;

	  }
          
	}
        

  }
  return FLASH_OK;
}