view loadtools/clmain.c @ 47:53b8d61c16a0

toolchain: -mthumb-interwork multilib enabled, matching OsmocomBB's version
author Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
date Sat, 22 Jun 2013 23:36:22 +0000
parents 16315ed6401a
children 604648026e9c
line wrap: on
line source

/*
 * This module contains the main() function for the XRAM chain-loading
 * utility fc-xram.
 */

#include <sys/types.h>
#include <stdint.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include "srecreader.h"

extern char *target_ttydev;
extern struct srecreader iramimage;
extern char default_loadagent_image[];
extern struct srecreader xramimage;
extern char hw_init_script[];

main(argc, argv)
	char **argv;
{
	extern char *optarg;
	extern int optind;
	int c;

	while ((c = getopt(argc, argv, "a:h:H:i:")) != EOF)
		switch (c) {
		case 'a':
			iramimage.filename = optarg;
			continue;
		case 'h':
			read_hwparam_file_shortname(optarg);
			continue;
		case 'H':
			read_hwparam_file_fullpath(optarg);
			continue;
		case 'i':
			set_beacon_interval(optarg);
			continue;
		case '?':
		default:
usage:			fprintf(stderr,
			"usage: fc-xram [options] ttyport xramimage.srec\n");
			exit(1);
		}
	if (argc - optind != 2)
		goto usage;
	target_ttydev = argv[optind];
	xramimage.filename = argv[optind+1];
	if (!iramimage.filename)
		iramimage.filename = default_loadagent_image;

	open_target_serial();
	perform_romload();
	/* loadagent should be running now */
	if (tpinterf_pass_output(1) < 0)
		exit(1);
	if (hw_init_script[0]) {
		printf("Executing init script %s\n", hw_init_script);
		c = exec_init_script(hw_init_script);
		if (c)
			exit(1);
	}
	printf("Sending XRAM image to loadagent\n");
	perform_chain_load();
	tty_passthru();
	exit(0);
}

/* called from hwparam.c config file parser */
/* stub needed for fc-xram to link */
void
set_default_exit_mode()
{
}