diff options
| -rw-r--r-- | tools/mkimage.c | 19 | ||||
| -rw-r--r-- | tools/mkimage.h | 8 | 
2 files changed, 22 insertions, 5 deletions
| diff --git a/tools/mkimage.c b/tools/mkimage.c index 2f3310175..c307a3761 100644 --- a/tools/mkimage.c +++ b/tools/mkimage.c @@ -248,6 +248,9 @@ main (int argc, char **argv)  					usage ();  				params.imagename = *++argv;  				goto NXTARG; +			case 's': +				params.skipcpy = 1; +				break;  			case 'v':  				params.vflag++;  				break; @@ -361,11 +364,15 @@ NXTARG:		;  	}  	/* -	 * Must be -w then: -	 * -	 * write dummy header, to be fixed later +	 * In case there an header with a variable +	 * length will be added, the corresponding +	 * function is called. This is responsible to +	 * allocate memory for the header itself.  	 */ -	memset (tparams->hdr, 0, tparams->header_size); +	if (tparams->vrec_header) +		tparams->vrec_header(¶ms, tparams); +	else +		memset(tparams->hdr, 0, tparams->header_size);  	if (write(ifd, tparams->hdr, tparams->header_size)  					!= tparams->header_size) { @@ -374,7 +381,9 @@ NXTARG:		;  		exit (EXIT_FAILURE);  	} -	if (params.type == IH_TYPE_MULTI || params.type == IH_TYPE_SCRIPT) { +	if (!params.skipcpy && +		(params.type == IH_TYPE_MULTI || +			params.type == IH_TYPE_SCRIPT)) {  		char *file = params.datafile;  		uint32_t size; diff --git a/tools/mkimage.h b/tools/mkimage.h index e59a91913..213baf003 100644 --- a/tools/mkimage.h +++ b/tools/mkimage.h @@ -60,6 +60,7 @@ struct mkimage_params {  	int lflag;  	int vflag;  	int xflag; +	int skipcpy;  	int os;  	int arch;  	int type; @@ -122,6 +123,13 @@ struct image_type_params {  	int (*check_image_type) (uint8_t);  	/* This callback function will be executed if fflag is defined */  	int (*fflag_handle) (struct mkimage_params *); +	/* +	 * This callback function will be executed for variable size record +	 * It is expected to build this header in memory and return its length +	 * and a pointer to it +	 */ +	int (*vrec_header) (struct mkimage_params *, +		struct image_type_params *);  	/* pointer to the next registered entry in linked list */  	struct image_type_params *next;  }; |