コード例 #1
0
ファイル: boot.c プロジェクト: carlobar/milkymist
void fsboot(int devnr)
{
	int size;
	unsigned int cmdline_adr, initrdstart_adr, initrdend_adr;

	printf("I: Booting from filesystem...\n");
	if(!fatfs_init(devnr)) {
		printf("E: Unable to initialize filesystem\n");
		return;
	}

	if(tryload("BOOT.BIN", SDRAM_BASE) <= 0) {
		printf("E: Firmware image not found\n");
		fatfs_done();
		return;
	}

	cmdline_adr = SDRAM_BASE+0x1000000;
	size = tryload("CMDLINE.TXT", cmdline_adr);
	if(size <= 0) {
		printf("I: No command line parameters found (CMDLINE.TXT)\n");
		cmdline_adr = 0;
	} else
		*((char *)(cmdline_adr+size)) = 0x00;

	initrdstart_adr = SDRAM_BASE+0x1002000;
	size = tryload("INITRD.BIN", initrdstart_adr);
	if(size <= 0) {
		printf("I: No initial ramdisk found (INITRD.BIN)\n");
		initrdstart_adr = 0;
		initrdend_adr = 0;
	} else
		initrdend_adr = initrdstart_adr + size - 1;

	fatfs_done();
	printf("I: Booting...\n");
	boot(cmdline_adr, initrdstart_adr, initrdend_adr, rescue, SDRAM_BASE);
}
コード例 #2
0
ファイル: main.c プロジェクト: gbraad/milkymist
static void load(char *filename, char *addr, char *dev)
{
	char *c;
	unsigned int *addr2;

	if((*filename == 0) || (*addr == 0)) {
		printf("load <filename> <address>\n");
		return;
	}
	addr2 = (unsigned *)strtoul(addr, &c, 0);
	if(*c != 0) {
		printf("incorrect address\n");
		return;
	}
	if(!fatfs_init(BLOCKDEV_MEMORY_CARD)) return;
	fatfs_load(filename, (char *)addr2, 16*1024*1024, NULL);
	fatfs_done();
}
コード例 #3
0
ファイル: main.c プロジェクト: gbraad/milkymist
static void ls(char *dev)
{
	if(!fatfs_init(BLOCKDEV_MEMORY_CARD)) return;
	fatfs_list_files(lscb, NULL);
	fatfs_done();
}