Exemple #1
0
int cov_conf_parse(struct skyeye_option_t *option, int num_params, const char *params[]) 
{
	int i;
	char *p;
	char name[MAX_PARAM_NAME], value[MAX_PARAM_NAME];

	for (i = 0; i < num_params; i++) {
		if (split_param (params[i], name, value) < 0)
			SKYEYE_ERR
				("Error: code_coverage option has wrong parameter \"%s\".\n",
				 name);
		if (!strncmp ("start", name, strlen (name))) {
			sscanf (value, "%x", &prof_start);
		}
		else if (!strncmp ("end", name, strlen (name))) {
			sscanf (value, "%x", &prof_end);
		}
		else if (!strncmp ("filename", name, strlen (name))) {
			strcpy(cov_filename, value);
		}
		else
			SKYEYE_ERR ("Cov_conf Error: Unkonw load_addr option  \"%s\"\n", params[i]);
	}

	
	return 0;
}
Exemple #2
0
/* set load address for elf image */
int
do_load_addr_option (skyeye_option_t * this_option, int num_params,
		 const char *params[])
{
	int i;
	char name[MAX_PARAM_NAME], value[MAX_PARAM_NAME];
	unsigned long load_base;
	unsigned long load_mask;
	for (i = 0; i < num_params; i++) {
		if (split_param (params[i], name, value) < 0)
			SKYEYE_ERR
				("Error: sound has wrong parameter \"%s\".\n",
				 name);
		if (!strncmp ("base", name, strlen (name))) {
			sscanf (value, "%x", &load_base);
		}
		else if (!strncmp ("mask", name, strlen (name))) {
			sscanf (value, "%x", &load_mask);
		}
		else
                        SKYEYE_ERR ("Error: Unkonw load_addr option  \"%s\"\n", params[i]);
	}
	/* FIXME, we should update load_base and load_mask to preference of SkyEye */
	fprintf(stderr, "%s not finished.\n", __FUNCTION__);
	//printf("Your elf file will be load to: base address=0x%x,mask=0x%x\n", load_base, load_mask);
	return 0;
}
Exemple #3
0
/** 
 * setup device option.
 * all device options may have common parameters. Here we handle these common parameters.
 * 
 */
int
setup_device_option (char *option_name, void *dev_option,
		     int num_params, const char *params[])
{
	char name[MAX_PARAM_NAME], value[MAX_PARAM_NAME];
	struct common_config conf;
	int i;

	memset (&conf, 0, sizeof (conf));
	conf.type = NULL;
	conf.name = NULL;

	for (i = 0; i < num_params; i++) {
		if (split_param (params[i], name, value) < 0)
			SKYEYE_ERR
				("Error: \"%s\" has wrong parameter \"%s\".\n",
				 option_name, name);
		if (!strncmp ("type", name, strlen (name))) {
			conf.type = strdup (value);
		}
		else if (!strncmp ("name", name, strlen (name))) {
			conf.name = strdup (value);
		}
		else if (!strncmp ("base", name, strlen (name))) {
			conf.base = strtoul (value, NULL, 0);
		}
		else if (!strncmp ("size", name, strlen (name))) {
			conf.size = strtoul (value, NULL, 0);
		}
		else if (!strncmp ("int", name, strlen (name))) {
			get_interrupts (value, conf.interrupts);
		}
	}
	skyeye_config_t* config;
	config = get_current_config();
	setup_device (option_name, &conf, dev_option, config->mach);
	if (conf.type)
		free (conf.type);
	if (conf.name)
		free (conf.name);
	return 0;

}
static int 
bfin_parse_mem(int num_params, const char* params[])
{
#if 0
	char name[MAX_PARAM_NAME], value[MAX_PARAM_NAME];
	int i, num;
	bfin_mem_config_t *mc = &bfin_mem_config;
	bfin_mem_bank_t *mb = mc->mem_banks;

	mc->bank_num = mc->current_num++;

	num = mc->current_num - 1;	/*mem_banks should begin from 0. */
	mb[num].filename[0] = '\0';
	for (i = 0; i < num_params; i++) {
		if (split_param (params[i], name, value) < 0)
			SKYEYE_ERR
				("Error: mem_bank %d has wrong parameter \"%s\".\n",
				 num, name);

		if (!strncmp ("map", name, strlen (name))) {
			if (!strncmp ("M", value, strlen (value))) {
				mb[num].read_byte = bfin_real_read_byte;
				mb[num].write_byte = bfin_real_write_byte;
				mb[num].read_halfword = bfin_real_read_halfword;
				mb[num].write_halfword = bfin_real_write_halfword;
				mb[num].read_word = bfin_real_read_word;
				mb[num].write_word = bfin_real_write_word;
				mb[num].read_doubleword = bfin_real_read_doubleword;
				mb[num].write_doubleword = bfin_real_write_doubleword;
				mb[num].type = MEMTYPE_RAM;
			}
			else if (!strncmp ("I", value, strlen (value))) {
				mb[num].read_byte = bfin_io_read_byte;
				mb[num].write_byte = bfin_io_write_byte;
				mb[num].read_halfword = bfin_io_read_halfword;
				mb[num].write_halfword = bfin_io_write_halfword;
				mb[num].read_word = bfin_io_read_word;
				mb[num].write_word = bfin_io_write_word;
				mb[num].read_doubleword = bfin_io_read_doubleword;
				mb[num].write_doubleword = bfin_io_write_doubleword;

				mb[num].type = MEMTYPE_IO;

				/*ywc 2005-03-30 */
			}
			else if (!strncmp ("F", value, strlen (value))) {
				mb[num].read_byte = bfin_flash_read_byte;
				mb[num].write_byte = bfin_flash_write_byte;
				mb[num].read_halfword = bfin_flash_read_halfword;
				mb[num].write_halfword = bfin_flash_write_halfword;
				mb[num].read_word = bfin_flash_read_word;
				mb[num].write_word = bfin_flash_write_word;
				mb[num].read_doubleword = bfin_flash_read_doubleword;
				mb[num].write_doubleword = bfin_flash_write_doubleword;
				mb[num].type = MEMTYPE_FLASH;

			}
			else {
				SKYEYE_ERR
					("Error: mem_bank %d \"%s\" parameter has wrong value \"%s\"\n",
					 num, name, value);
			}
		}
		else if (!strncmp ("type", name, strlen (name))) {
			//chy 2003-09-21: process type
			if (!strncmp ("R", value, strlen (value))) {
				if (mb[num].type == MEMTYPE_RAM)
					mb[num].type = MEMTYPE_ROM;
				mb[num].write_byte = bfin_warn_write_byte;
				mb[num].write_halfword = bfin_warn_write_halfword;
				mb[num].write_word = bfin_warn_write_word;
			}
		}
		else if (!strncmp ("addr", name, strlen (name))) {

			if (value[0] == '0' && value[1] == 'x')
				mb[num].addr = strtoul (value, NULL, 16);
			else
				mb[num].addr = strtoul (value, NULL, 10);

		}
		else if (!strncmp ("size", name, strlen (name))) {

			if (value[0] == '0' && value[1] == 'x')
				mb[num].len = strtoul (value, NULL, 16);
			else
				mb[num].len = strtoul (value, NULL, 10);

		}
		else if (!strncmp ("file", name, strlen (name))) {
			strncpy (mb[num].filename, value, strlen (value) + 1);
		}
		else if (!strncmp ("boot", name, strlen (name))) {
			/*this must be the last parameter. */
			if (!strncmp ("yes", value, strlen (value)))
				skyeye_config.start_address = mb[num].addr;
		}
		else {
			SKYEYE_ERR
				("Error: mem_bank %d has unknow parameter \"%s\".\n",
				 num, name);
		}
	}
#endif
	return 0;
}
Exemple #5
0
/**
 * parse_mem - parse the option from skyeye.conf to get mem info
 * @num_params: number of parameters
 * @params: parameter array
 */
static int 
parse_mem(int num_params, const char* params[])
{
	char name[MAX_PARAM_NAME], value[MAX_PARAM_NAME];
	int i, num;
	mem_config_t *mc = get_global_memmap();

	mem_bank_t *mb = mc->mem_banks;
	skyeye_config_t* config = get_current_config();
	mc->bank_num = mc->current_num++;

	num = mc->current_num - 1;	/*mem_banks should begin from 0. */
	mb[num].filename[0] = '\0';
	for (i = 0; i < num_params; i++) {
		if (split_param (params[i], name, value) < 0)
			SKYEYE_ERR
				("Error: mem_bank %d has wrong parameter \"%s\".\n",
				 num, name);

		if (!strncmp ("map", name, strlen (name))) {
			if (!strncmp ("M", value, strlen (value))) {
				mb[num].bank_read = mem_read;
				mb[num].bank_write = mem_write;
				mb[num].type = MEMTYPE_RAM;
			}
			else if (!strncmp ("I", value, strlen (value))) {
				mb[num].bank_read = io_read;
				mb[num].bank_write = io_write;
				mb[num].type = MEMTYPE_IO;
			}
			else if (!strncmp ("F", value, strlen (value))) {
				mb[num].bank_read = flash_read;
				mb[num].bank_write = flash_write;
				mb[num].type = MEMTYPE_FLASH;
			}
			else {
				SKYEYE_ERR
					("Error: mem_bank %d \"%s\" parameter has wrong value \"%s\"\n",
					 num, name, value);
			}
		}
		else if (!strncmp ("type", name, strlen (name))) {
			//chy 2003-09-21: process type
			if (!strncmp ("R", value, strlen (value))) {
				if (mb[num].type == MEMTYPE_RAM)
					mb[num].type = MEMTYPE_ROM;
				mb[num].bank_write = warn_write;
			}
		}
		else if (!strncmp ("addr", name, strlen (name))) {

			if (value[0] == '0' && value[1] == 'x')
				mb[num].addr = strtoul (value, NULL, 16);
			else
				mb[num].addr = strtoul (value, NULL, 10);

		}
		else if (!strncmp ("size", name, strlen (name))) {

			if (value[0] == '0' && value[1] == 'x')
				mb[num].len = strtoul (value, NULL, 16);
			else
				mb[num].len = strtoul (value, NULL, 10);

		}
		else if (!strncmp ("file", name, strlen (name))) {
			strncpy (mb[num].filename, value, strlen (value) + 1);
		}
		else if (!strncmp ("boot", name, strlen (name))) {
			/*this must be the last parameter. */
			if (!strncmp ("yes", value, strlen (value)))
				config->start_address = mb[num].addr;
		}
		else {
			SKYEYE_ERR
				("Error: mem_bank %d has unknow parameter \"%s\".\n",
				 num, name);
		}
	}
	return 0;
}
Exemple #6
0
int
do_log_option (skyeye_option_t * this_option, int num_params,
	       const char *params[])
{
	char name[MAX_PARAM_NAME], value[MAX_PARAM_NAME];
	int i, fd, logon, memlogon;
	unsigned long long start, end, length;
#if 0
	/*2004-08-09 chy init skyeye_config.log */
	skyeye_config.log.log_fd = 0;
	skyeye_config.log.logon = 0;
	skyeye_config.log.memlogon = 0;
	skyeye_config.log.start = 0;
	skyeye_config.log.end = 0;
	skyeye_config.log.length = 0;

	for (i = 0; i < num_params; i++) {
		if (split_param (params[i], name, value) < 0)
			SKYEYE_ERR
				("log_info: Error: log has wrong parameter \"%s\".\n",
				 name);
		if (!strncmp ("logon", name, strlen (name))) {
			sscanf (value, "%d", &logon);
			if (logon != 0 && logon != 1)
				SKYEYE_ERR
					("log_info: Error logon value %d\n",
					 logon);
			if (logon == 1) {
				SKYEYE_INFO ("log_info: log is on.\n");
			}
			else {
				SKYEYE_INFO ("log_info: log is off.\n");
			}
			skyeye_config.log.logon = logon;
		}
		else if (!strncmp ("memlogon", name, strlen (name))) {
			sscanf (value, "%d", &memlogon);
			if (memlogon != 0 && memlogon != 1)
				SKYEYE_ERR
					("log_info: Error logon value %d\n",
					 memlogon);
			if (memlogon == 1) {
				SKYEYE_INFO ("log_info: memory klog is on.\n");
			}
			else {
				SKYEYE_INFO ("log_info: memory log is off.\n");
			}
			skyeye_config.log.memlogon = memlogon;
		}
		else if (!strncmp ("logfile", name, strlen (name))) {
			if ((skyeye_logfd = fopen (value, "w+")) == NULL) {
				//SKYEYE_DBG("SkyEye Error when open log file %s\n", value);
				perror ("SkyEye: Error when open log file:  ");
				skyeye_exit (-1);
			}
			skyeye_config.log.log_fd = skyeye_logfd;
			SKYEYE_INFO ("log_info:log file is %s, fd is 0x%x\n",
				     value, skyeye_logfd);
		}
		else if (!strncmp ("start", name, strlen (name))) {
			start = strtoul (value, NULL, 0);
			skyeye_config.log.start = start;
			SKYEYE_INFO ("log_info: log start clock %llu\n",
				     start);
		}
		else if (!strncmp ("end", name, strlen (name))) {
			end = strtoul (value, NULL, 0);
			skyeye_config.log.end = end;
			SKYEYE_INFO ("log_info: log end clock %llu\n", end);
		}
		else if (!strncmp ("length", name, strlen (name))) {
			sscanf (value, "%llu", &length);
			skyeye_config.log.length = length;
			SKYEYE_INFO ("log_info: log instr length %llu\n",
				     length);
		}
		else
			SKYEYE_ERR ("Error: Unknown cpu name \"%s\"\n", params[0]);
	}
#endif
	return 0;
}