Exemple #1
0
static int
cmd_writemem_run( chain_t *chain, char *params[] )
{
	uint32_t adr;
	uint32_t len;
	FILE *f;

	if (cmd_params( params ) != 4)
		return -1;

	if (!bus) {
		printf( _("Error: Bus driver missing.\n") );
		return 1;
	}

	if (cmd_get_number( params[1], &adr) || cmd_get_number( params[2], &len))
		return -1;

	f = fopen( params[3], "r" );
	if (!f) {
		printf( _("Unable to open file `%s'!\n"), params[3] );
		return 1;
	}
	writemem( bus, f, adr, len );
	fclose( f );

	return 1;
}
Exemple #2
0
static int
cmd_part_run( char *params[] )
{
	unsigned int n;

	if (cmd_params( params ) != 2)
		return -1;

	if (!cmd_test_cable())
		return 1;

	if (!chain->parts) {
		printf( _("Run \"detect\" first.\n") );
		return 1;
	}

	if (cmd_get_number( params[1], &n ))
		return -1;

	if (n >= chain->parts->len) {
		printf( _("%s: invalid part number\n"), "part" );
		return 1;
	}

	chain->active_part = n;

	return 1;
}
Exemple #3
0
static int
cmd_bus_run( chain_t *chain, char *params[] )
{
	unsigned int n;

	if (cmd_params( params ) != 2)
		return -1;

	if (!cmd_test_cable( chain ))
		return 1;

	if (!chain->parts) {
		printf( _("Run \"detect\" first.\n") );
		return 1;
	}

	if (cmd_get_number( params[1], &n ))
		return -1;

	if (n >= buses.len) {
		printf( _("%s: invalid bus number\n"), "bus" );
		return 1;
	}

	bus = buses.buses[n];

	return 1;
}
Exemple #4
0
static int
cmd_eraseflash_run( chain_t *chain, char *params[] )
{
	uint32_t adr = 0;
	unsigned int number = 0;

	if (cmd_params( params ) != 3)
		return -1;
	if (!cmd_test_cable( chain ))
		return 1;
	if (!bus) {
		printf( _("Error: Bus driver missing.\n") );
		return 1;
	}
	if (cmd_get_number( params[1], &adr ))
		return -1;
	if (cmd_get_number( params[2], &number ))
		return -1;
	flasherase( bus, adr, number );

	return 1;
}
Exemple #5
0
static int
cmd_detectflash_run( char *params[] )
{
	uint32_t adr;

	if (cmd_params( params ) != 2)
		return -1;

	if (!bus) {
		printf( _("Error: Bus driver missing.\n") );
		return 1;
	}

	if (cmd_get_number( params[1], &adr ))
		return -1;

	detectflash( bus, adr );

	return 1;
}
Exemple #6
0
static int
cmd_frequency_run( char *params[] )
{
	unsigned int freq;

	if (cmd_params( params ) == 1) {
		printf( _("Current TCK frequency is %u Hz\n"), frequency );
		return 1;
	}

	if (cmd_params( params ) != 2)
		return -1;

	if (cmd_get_number( params[1], &freq ))
		return -1;

	printf( _("Setting TCK frequency to %u Hz\n"), freq );
	frequency = freq;

	return 1;
}
Exemple #7
0
static int
cmd_flashmem_run( chain_t *chain, char *params[] )
{
	int msbin;
	int noverify = 0;
	uint32_t adr = 0;
	FILE *f;
	int paramc = cmd_params( params );

	if (paramc < 3)
		return -1;

	if (!bus) {
		printf( _("Error: Bus driver missing.\n") );
		return 1;
	}

	msbin = strcasecmp( "msbin", params[1] ) == 0;
	if (!msbin && cmd_get_number( params[1], &adr ))
			return -1;

	if (paramc > 3)
		noverify = strcasecmp( "noverify", params[3] ) == 0;
	else
		noverify = 0;

	f = fopen( params[2], "rb" );
	if (!f) {
		printf( _("Unable to open file `%s'!\n"), params[2] );
		return 1;
	}
	if (msbin)
		flashmsbin( bus, f, noverify );
	else
		flashmem( bus, f, adr, noverify );
	fclose( f );

	return 1;
}
Exemple #8
0
static int
cmd_instruction_run( chain_t *chain, char *params[] )
{
	part_t *part;

	if (!cmd_test_cable( chain ))
		return 1;

	if (!chain->parts) {
		printf( _("Run \"detect\" first.\n") );
		return 1;
	}

	if (chain->active_part >= chain->parts->len) {
		printf( _("%s: no active part\n"), "instruction" );
		return 1;
	}

	part = chain->parts->parts[chain->active_part];

	if (cmd_params( params ) == 2) {
		part_set_instruction( part, params[1] );
		if (part->active_instruction == NULL)
			printf( _("%s: unknown instruction '%s'\n"), "instruction", params[1] );
		return 1;
	}
	
	if (cmd_params( params ) == 3) {
		unsigned int len;

		if (strcasecmp( params[1], "length" ) != 0)
			return -1;

		if (part->instructions != NULL) {
			printf( _("instruction length is already set and used\n") );
			return 1;
		}

		if (cmd_get_number( params[2], &len ))
			return -1;

		part->instruction_length = len;
		return 1;
	}

	if (cmd_params( params ) == 4) {
		instruction *i;

		if (strlen( params[2] ) != part->instruction_length) {
			printf( _("invalid instruction length\n") );
			return 1;
		}

		if (part_find_instruction( part, params[1] ) != NULL) {
			printf( _("Instruction '%s' already defined\n"), params[1] );
			return 1;
		}

		i = instruction_alloc( params[1], part->instruction_length, params[2] );
		if (!i) {
			printf( _("out of memory\n") );
			return 1;
		}

		i->next = part->instructions;
		part->instructions = i;

		i->data_register = part_find_data_register( part, params[3] );
		if (i->data_register == NULL) {
			printf( _("unknown data register '%s'\n"), params[3] );
			return 1;
		}

		return 1;
	}

	return -1;
}