示例#1
0
文件: api.c 项目: thomask77/xboot
uint8_t xboot_write_user_signature_row(uint8_t *data)
{
        uint8_t saved_status = SREG;
        cli();
        
        Flash_LoadFlashPage(data);
        Flash_EraseUserSignatureRow();
        Flash_WaitForSPM();
        Flash_WriteUserSignatureRow();
        Flash_WaitForSPM();
        
        NVM_CMD = NVM_CMD_NO_OPERATION_gc;
        
        SREG = saved_status;
        return XB_SUCCESS;
}
示例#2
0
文件: flash.c 项目: robertquaas/TinyG
void Flash_ProgramPage(uint32_t page, uint8_t *buf, uint8_t erase)
{
	Flash_LoadFlashPage(buf);
	if (erase)
	{
		Flash_EraseWriteApplicationPage(page);
	}
	else
	{
		Flash_WriteApplicationPage(page);
	}
	Flash_WaitForSPM();
}
示例#3
0
文件: api.c 项目: thomask77/xboot
// Higher level firmware update functions
uint8_t xboot_app_temp_erase(void)
{
        uint8_t saved_status = SREG;
        cli();
        
        for (uint32_t addr = XB_APP_TEMP_START; addr < XB_APP_TEMP_END; addr += SPM_PAGESIZE)
        {
                Flash_EraseApplicationPage(addr);
                Flash_WaitForSPM();
        }
        
#ifdef __AVR_XMEGA__
        NVM_CMD = NVM_CMD_NO_OPERATION_gc;
#endif // __AVR_XMEGA__
        
        SREG = saved_status;
        return XB_SUCCESS;
}
示例#4
0
文件: api.c 项目: thomask77/xboot
uint8_t xboot_erase_application_page(uint32_t address)
{
        uint8_t saved_status = SREG;
        
        if (address > BOOT_SECTION_START)
                return XB_INVALID_ADDRESS;
        
        cli();
        
        Flash_EraseApplicationPage(address);
        Flash_WaitForSPM();
        
#ifdef __AVR_XMEGA__
        NVM_CMD = NVM_CMD_NO_OPERATION_gc;
#endif // __AVR_XMEGA__
        
        SREG = saved_status;
        return XB_SUCCESS;
}