示例#1
0
文件: fx2.c 项目: kulp/libfpgalink
// Save the EEPROM to an .iic file
DLLEXPORT(FLStatus) flSaveFirmware(
	struct FLContext *handle, uint32 eepromSize, const char *saveFile, const char **error)
{
	FLStatus retVal = FL_SUCCESS;
	struct Buffer i2cBuf = {0,};
	BufferStatus bStatus;
	FX2Status fxStatus;
	const char *const ext = saveFile + strlen(saveFile) - 4;
	CHECK_STATUS(
		strcmp(".iic", ext), FL_FX2_ERR, cleanup,
		"flSaveFirmware(): Filename should have .iic extension");
	eepromSize <<= 7;  // convert from kbits to bytes
	bStatus = bufInitialise(&i2cBuf, eepromSize, 0x00, error);
	CHECK_STATUS(bStatus, FL_ALLOC_ERR, cleanup, "flSaveFirmware()");
	fxStatus = fx2ReadEEPROM(handle->device, eepromSize, &i2cBuf, error);
	CHECK_STATUS(fxStatus, FL_FX2_ERR, cleanup, "flSaveFirmware()");
	bStatus = bufWriteBinaryFile(&i2cBuf, saveFile, 0UL, i2cBuf.length, error);
	CHECK_STATUS(bStatus, FL_FILE_ERR, cleanup, "flSaveFirmware()");
cleanup:
	bufDestroy(&i2cBuf);
	return retVal;
}
示例#2
0
int main(int argc, const char *argv[]) {
	int retVal = 0;
	struct Buffer csvfBuf = {0,};
	BufferStatus bStatus;
	FLStatus fStatus;
	const char *error = NULL;
	uint32 csvfBufSize = 0;
	const char *srcFile, *dstFile;
	const char *ext;
   if ( argc != 3 ) {
		fprintf(stderr, "Synopsis: %s [-u] <src.xsvf|src.svf> <dst.csvf>\n", argv[0]);
		FAIL(1, cleanup);
	}
	srcFile = argv[1];
	dstFile = argv[2];
	ext = srcFile + strlen(srcFile) - 5;
	bStatus = bufInitialise(&csvfBuf, 10240, 0x00, &error);
	CHECK_STATUS(bStatus, 2, cleanup);
	if ( strcmp(".svf", ext+1) == 0 ) {
		fStatus = flLoadSvfAndConvertToCsvf(srcFile, &csvfBuf, &csvfBufSize, &error);
	} else if ( strcmp(".xsvf", ext) == 0 ) {
		fStatus = flLoadXsvfAndConvertToCsvf(srcFile, &csvfBuf, &csvfBufSize, &error);
	} else {
		fprintf(stderr, "Source filename should have an .svf or an .xsvf extension\n");
		FAIL(3, cleanup);
	}
	CHECK_STATUS(fStatus, 4, cleanup);
	//printf("CSVF_BUF_SIZE = %d\n", csvfBufSize);
	bStatus = bufWriteBinaryFile(&csvfBuf, dstFile, 0, csvfBuf.length, &error);
	CHECK_STATUS(bStatus, 6, cleanup);

cleanup:
	bufDestroy(&csvfBuf);
	if ( error ) {
		fprintf(stderr, "%s\n", error);
		bufFreeError(error);
	}
	return retVal;
}