コード例 #1
0
void
main(void)
{
	int len, i, j, off, sec;
	char *addr = (char *)SDRAM_BASE + (1 << 20); /* download at + 1MB */
	char *addr2 = (char *)SDRAM_BASE + (2 << 20); /* readback to + 2MB */

	SPI_InitFlash();
	printf("Waiting for data\n");
	while ((len = xmodem_rx(addr)) == -1)
		continue;
	printf("Writing %u bytes at %u\n", len, OFFSET);
	for (i = 0; i < len; i+= FLASH_PAGE_SIZE) {
		off = i + OFFSET;
		for (j = 0; j < 10; j++) {
			SPI_WriteFlash(off, addr + i, FLASH_PAGE_SIZE);
			SPI_ReadFlash(off, addr2 + i, FLASH_PAGE_SIZE);
			if (p_memcmp(addr + i, addr2 + i, FLASH_PAGE_SIZE) == 0)
				break;
		}
		if (j >= 10)
			printf("Bad Readback at %u\n", i);
	}
	sec = GetSeconds() + 2;
	while (sec <= GetSeconds())
	    continue;
	printf("Done\n");
	reset();
}
コード例 #2
0
ファイル: main.c プロジェクト: ele7enxxh/dtrace-pf
int
main(void)
{
	printf("\nBoot\n");
	EEInit();
	SPI_InitFlash();
#ifdef TSC_FPGA
	fpga_load();
#endif
	EMAC_Init();
	LoadBootCommands();
	if (getc(1) == -1) {
		start_wdog(30);
		ExecuteEnvironmentFunctions();
	}
	Bootloader(getc);
	return (1);
}