コード例 #1
0
ファイル: NVM_Config.c プロジェクト: Jack67/Sumobot
uint8_t NVMC_SaveStatus(void *data, uint16_t dataSize)
{
	if (dataSize>NVMC_STATUS_DATA_SIZE)
	{
		return ERR_OVERFLOW;
	}
	return IFsh1_SetBlockFlash(data, (IFsh1_TAddress)(NVMC_STATUS_DATA_START_ADDR), dataSize);
}
コード例 #2
0
ファイル: Bootloader.c プロジェクト: ADeadCat/mcuoneclipse
/*!
 * \brief Performs flash programming
 * \param flash_addr Destination address for programming.
 * \param data_addr Pointer to data.
 * \param nofDataBytes Number of data bytes.
 * \return ERR_OK if everything was ok, ERR_FAILED otherwise.
 */
static byte BL_Flash_Prog(dword flash_addr, uint8_t *data_addr, uint16_t nofDataBytes) {
  /* only flash into application space. Everything else will be ignored */
  if(BL_ValidAppAddress(flash_addr)) {
    if (IFsh1_SetBlockFlash((IFsh1_TDataAddress)data_addr, flash_addr, nofDataBytes) != ERR_OK) {
      return ERR_FAILED; /* flash programming failed */
    }
  }
  return ERR_OK;
}
コード例 #3
0
ファイル: Bootloader.c プロジェクト: 210221030/mcuoneclipse
/* dword(32bit) programming */
static byte BL_Flash_Prog(dword flash_addr, dword data_addr, byte number) {
  /* only flash into application space. Everything else will be ignored */
#ifdef S08_CORE
  if (   ((flash_addr >= MIN_FLASH2_ADDRESS) && (flash_addr <= MAX_FLASH2_ADDRESS)) 
      || ((flash_addr >= MIN_FLASH1_ADDRESS) && (flash_addr < FLASH_PROTECTED_ADDRESS))
     ) 
  {
#elif defined CF_CORE
  if((flash_addr > FLASH_PROTECTED_ADDRESS) && (flash_addr <= MAX_FLASH1_ADDRESS)) {
#endif /* S08_CORE */
    if (IFsh1_SetBlockFlash((IFsh1_TDataAddress)data_addr, flash_addr, (word)(number*4)) != ERR_OK) {
      return ERR_FAILED; /* flash programming failed */
    }
  }
  return ERR_OK;
}
    
static byte Flash_Verify(dword dst_addr, dword data_addr, byte length) {
  do {
    if(*(dword *)dst_addr != *(dword *)data_addr) { /* compare two values */
      return ERR_FAILED;
    } 
    dst_addr +=4;
    data_addr +=4; 
  } while(--length);
  return 0x01;
}

/*********************************************************
* Name: EraseFlash
* Desc: Erases all unprotected pages of flash
* Parameter: None
* Return: None
**********************************************************/
static byte BL_EraseFlash(void) {
  dword addr;

  /* erase each page of flash */
  for(addr=MIN_FLASH1_ADDRESS;addr<=MAX_FLASH1_ADDRESS;addr+=FLASH_PAGE_SIZE) {
    if(addr > FLASH_PROTECTED_ADDRESS) {
      if(IFsh1_EraseSector(addr) != ERR_OK) {
        /* Error Erasing Flash */
        return ERR_FAILED;
      }
    } 
  }
  return ERR_OK;
}
コード例 #4
0
ファイル: main.c プロジェクト: alsancho/mcuoneclipse
static void TestFlash(void) {
    //IFsh1_Init();
	LED3_On();
	WAIT1_Waitms(500);
#if 1
	if (IFsh1_EraseSector(FLASH_ADDR)!=ERR_OK) {
		  for(;;) {
			  LED1_Neg();
			  WAIT1_Waitms(50);
		  }
	}
	if (IFsh1_SetBlockFlash(&data[0], FLASH_ADDR, sizeof(data))!=ERR_OK) {
		  for(;;) {
			  LED2_Neg();
			  WAIT1_Waitms(100);
		  }
	}
#endif
	LED3_Off();
}
コード例 #5
0
ファイル: NVM_Config.c プロジェクト: Jack67/Sumobot
uint8_t NVMC_SaveReflectanceData(void *data, uint16_t dataSize) {
  if (dataSize>NVMC_REFLECTANCE_DATA_SIZE) {
    return ERR_OVERFLOW;
  }
  return IFsh1_SetBlockFlash(data, (IFsh1_TAddress)(NVMC_REFLECTANCE_DATA_START_ADDR), dataSize);  
}