Esempio n. 1
0
void run_task(uint8_t *Task)
{
	switch(Task[2])
	{
		case '0':
		send_string("boot");
		break;
		case '1':
		page_address = Task[9] << 8;
		page_address |= Task[8];
		readFlashPage(page_address, 128);
		send_buff(gBuffer, 128);
		Task[2] = 0;
		break;
		case '2':
		Task[2] = 0;
		break;
		case '3':
		page_address = Task[9] << 8;
		page_address |= Task[8];
		for (uint16_t i = 0; i < SPM_PAGESIZE; i++)
		gBuffer[i] = data_buffer[i + 16];
		writeFlashPage(page_address,SPM_PAGESIZE);
		send_string("page done");
		Task[2] = 0;
		break;
		case '4':
		eraseFlash();
		send_string("erase ok");
		Task[2] = 0;
		break;
		case '5':
		Task[2] = 0;
		break;
		case '6':
		fill_page();
		send_buff(gBuffer, 256);
		Task[2] = 0;
		break;
		case '7':
		blink_led();
		Task[2] = 0;
		break;
		case '8':
		MCUCR |= 1<<IVCE;
		MCUCR = 0<<IVSEL;
		send_string("jump ok");
		jump_to_app();		// Jump to application sector
		Task[2] = 0;
		break;
		default:
		Task[2] = 0;
	}
}
Esempio n. 2
0
static void chunkInFlashLog(UINT8 inOW)
{
    uart_print("chunkInFlashLog\r\n");
    UINT32 chunksInPage=1;
    UINT32 srcChunkByteOffsets[CHUNKS_PER_PAGE];
    UINT32 chunkIdxs[CHUNKS_PER_PAGE];
    UINT8 decreaseInOW[CHUNKS_PER_PAGE];
    srcChunkByteOffsets[0]=ChunkToSectOffset(oldChunkAddr_)*BYTES_PER_SECTOR;
    chunkIdxs[0]=chunkIdx_;
    decreaseInOW[0] = inOW;
    setupFlashPageRead(&chunksInPage, srcChunkByteOffsets, chunkIdxs, decreaseInOW);
    readFlashPage(&chunksInPage, srcChunkByteOffsets, chunkIdxs, decreaseInOW);
}
Esempio n. 3
0
void readPage(uint16_t address)
{
	uint16_t length = (getch() << 8) | getch();

	uint8_t memtype = getch();

	if (!receiveEop())
		return;

	switch (memtype)
	{
	case 'F':
		readFlashPage(address, length);
		break;
	case 'E':
		readEepromPage(address, length);
		break;
	default:
		Serial.write(STK_FAILED);
		break;
	}
}