Beispiel #1
0
int main(int argc, char *argv[])
{
	const char *src_file, *dest_file;

	assert(argc > 2 && argv[1][0] == '-');

	switch (argv[1][1])
	{
	case 'b':
	case 'B':
	case 's':
	case 'S':
	case 'r':
	case 'R':
		assert(argc == 4);
		src_file = argv[2];
		dest_file = argv[3];
		break;
	case 'z':
	case 'Z':
		assert(argc == 3);
		src_file = "/dev/zero";
		dest_file = argv[2];
		break;
	default:
		error_msg("unknown option");
		return -1;
	}

	return cavan_dd(src_file, dest_file, 0, 0, 512);
}
Beispiel #2
0
static inline int copy_to_emmc(const char *img_name, const char *img_path, const char *target_device, off_t seek_out)
{
	if (img_path) {
		img_name = img_path;
	}

	return cavan_dd(img_name, target_device, 0, seek_out, 0);
}
Beispiel #3
0
int main(int argc, char *argv[])
{
	int ret;
	const char *target_device;
	const char *img_path;

	if (argv[1][0] != '-')
	{
		printf("Unknown Option\n");
		return -1;
	}

	if (argc >= 4)
	{
		target_device = get_device(argv[2][0] - '0');
		img_path = argv[3];
	}
	else
	{
		target_device = get_device(0);
		if (argc >= 3)
		{
			img_path = argv[2];
		}
		else
		{
			img_path = NULL;
		}
	}

	switch (argv[1][1])
	{
	case 'u':
	case 'U':
		if (img_path == NULL)
		{
			return cavan_dd("u-boot-no-padding.bin", target_device, 0, UBOOT_OFFSET, 0);
		}
		else if (strcmp(text_basename(img_path), "u-boot.bin") == 0)
		{
			return cavan_dd(img_path, target_device, UBOOT_PADDING_SIZE, UBOOT_OFFSET, 0);
		}
		else
		{
			return cavan_dd(img_path, target_device, 0, UBOOT_OFFSET, 0);
		}

	case 'k':
	case 'K':
		return copy_to_emmc("uImage", img_path, target_device, UIMAGE_OFFSET);

	case 'l':
	case 'L':
		return copy_to_emmc("logo.bmp", img_path, target_device, LOGO_OFFSET);

	case 'b':
	case 'B':
		return copy_to_emmc("busybox.img", img_path, target_device, BUSYBOX_OFFSET);

	case 'c':
	case 'C':
		return copy_to_emmc("charge.bmps", img_path, target_device, CARTOON_OFFSET);

	case 's':
	case 'S':
		target_device = format_text("%sp2", target_device);
		ret = copy_to_emmc("system.img", img_path, target_device, 0);
		if (ret < 0)
		{
			error_msg("copy_to_emmc");
			return ret;
		}
		break;

	case 'd':
	case 'D':
		target_device = format_text("%sp5", target_device);
		ret = copy_to_emmc("userdata.img", img_path, target_device, 0);
		if (ret < 0)
		{
			error_msg("copy_to_emmc");
			return ret;
		}
		break;

	case 'r':
	case 'R':
		switch (argv[1][2])
		{
		case 'a':
		case 'A':
			return copy_to_emmc("uramdisk.img", img_path, target_device, RAMDISK_OFFSET);

		case 'e':
		case 'E':
			target_device = format_text("%sp4", target_device);
			ret = copy_to_emmc("recovery.img", img_path, target_device, 0);
			if (ret < 0)
			{
				error_msg("copy_to_emmc");
				return ret;
			}
			break;

		default:
			printf("Unknown Option\n");
			return -1;
		}
		break;

	default:
		printf("Unknown Option\n");
		return -1;
	}

	return extend_partition(target_device);
}
Beispiel #4
0
int main(int argc, char *argv[])
{
	int i;
	int ret;
	char input_file[100];
	char output_file[100];
	off_t bs = 1, seek = 0, skip = 0, count = 0;

	assert(argc >= 3);

	for (i = 1; i < argc; i++) {
		char c, *p;

		parse_parameter(argv[i]);

		c = para_option[0];
		p = para_option + 1;

		switch (c) {
		case 'i':
			if (strcmp(p, "f") == 0) {
				strcpy(input_file, para_value);
			} else {
				goto out_unknown_option;
			}
			break;
		case 'o':
			if (strcmp(p, "f") == 0) {
				strcpy(output_file, para_value);
			} else {
				goto out_unknown_option;
			}
			break;
		case 'b':
			if (strcmp(p, "s") == 0) {
				bs = text2size(para_value, NULL);
			} else {
				goto out_unknown_option;
			}
			break;
		case 's':
			if (strcmp(p, "kip") == 0) {
				skip = text2size(para_value, NULL);
			} else if (strcmp(p, "eek") == 0) {
				seek = text2size(para_value, NULL);
			} else {
				goto out_unknown_option;
			}
			break;
		case 'c':
			if (strcmp(p, "ount") == 0) {
				count = text2size(para_value, NULL);
			} else {
				goto out_unknown_option;
			}
			break;
		default:
			goto out_unknown_option;
		}
	}

	ret = cavan_dd(input_file, output_file, skip * bs, seek * bs, count * bs);
	if (ret < 0) {
		pr_err_info("cavan_dd");
		return ret;
	}

	return 0;

out_unknown_option:
	pr_err_info("unknown option \"%s\"", para_option);
	return -EINVAL;
}