Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
srec_input(1)		    General Commands Manual		 srec_input(1)

NAME
       srec_input - input file specifications

SYNOPSIS
       srec_* filename [ format	]

DESCRIPTION
       This  manual  page  describes  the  input  file	specifications for the
       srec_cat(1), srec_cmp(1)	and srec_info(1) commands.

       Input files may be qualified in a number	of ways: you may specify their
       format and you may specify filters to apply to  them.   An  input  file
       specification looks like	this:
	      filename [ format	][ -ignore-checksums ][	filter ... ]

       The  filename  may be specified as a file name, or the special name "-"
       which is	understood to mean the standard	input.

   Grouping with Parentheses
       There are some cases where operator precedence of the  filters  can  be
       ambiguous.   Input specifications may also be enclosed by ( parentheses
       ) to make grouping explicit.  Remember that  the	 parentheses  must  be
       separate	 words,	 i.e.  surrounded  by spaces, and they will need to be
       quoted to get them past the shell's interpretation of parentheses.

   Those Option	Names Sure Are Long
       All options may be abbreviated; the abbreviation	is documented  as  the
       upper  case letters, all	lower case letters and underscores (_) are op-
       tional.	You must use consecutive sequences of optional letters.

       All options are case insensitive, you may type them in  upper  case  or
       lower case or a combination of both, case is not	important.

       For example: the	arguments "-help", "-HEL" and "-h" are all interpreted
       to  mean	the -Help option.  The argument	"-hlp" will not	be understood,
       because consecutive optional characters were not	supplied.

       Options and other command line arguments	may be	mixed  arbitrarily  on
       the command line.

       The  GNU	 long option names are understood.  Since all option names for
       srec_input are long, this means ignoring	the extra  leading  "-".   The
       "--option=value"	convention is also understood.

   File	Formats
       The  format is specified	by the argument	after the file name.  The for-
       mat defaults to Motorola	S-Record if not	specified.  The	format	speci-
       fiers are:

       -Absolute_Object_Module_Format
	       This option says	to use the Intel Absolute Object Module	Format
	       (AOMF)  to  read	the file.  (See	srec_aomf(5) for a description
	       of this file format.)

       -Ascii_Hex
	       This option says	to use the Ascii-Hex format to read the	 file.
	       See srec_ascii_hex(5) for a description of this file format.

       -Atmel_Generic
	       This  option  says  to use the Atmel Generic format to read the
	       file.  See srec_atmel_genetic(5)	for a description of this file
	       format.

       -Binary This option says	the file is a raw binary file, and  should  be
	       read  literally.	  (This	option may also	be written -Raw.)  See
	       srec_binary(5) for more information.

       -B-Record
	       This option says	to  use	 the  Freescale	 MC68EZ328  Dragonball
	       bootstrap    b-record   format	to   read   the	  file.	   See
	       srec_brecord(5) for a description of this file format.

       -COsmac This option says	to use the RCA Cosmac Elf format to  read  the
	       file.   See  srec_cosmac(5) for a description of	this file for-
	       mat.

       -Dec_Binary
	       This option says	to use the DEC Binary (XXDP)  format  to  read
	       the  file.   See	 srec_dec_binary(5)  for a description of this
	       file format.

       -Elektor_Monitor52
	       This option says	to use the EMON52 format  to  read  the	 file.
	       See srec_emon52(5) for a	description of this file format.

       -FAIrchild
	       This  option  says  to use the Fairchild	Fairbug	format to read
	       the file.  See srec_fairchild(5)	for a description of this file
	       format.

       -Fast_Load
	       This option says	to use the LSI Logic Fast Load format to  read
	       the  file.  See srec_fastload(5)	for a description of this file
	       format.

       -Formatted_Binary
	       This option says	to use the Formatted Binary format to read the
	       file.  See srec_formatted_binary(5) for a description  of  this
	       file format.

       -Four_Packed_Code
	       This  option  says to use the FPC format	to read	the file.  See
	       srec_fpc(5) for a description of	this file format.

       -Guess  This option may be used to ask the command to guess  the	 input
	       format.	 This is slower	than specifying	an explicit format, as
	       it may open and scan and	close the file a number	of times.

       -HEX_Dump
	       This option says	to try to read a hexadecimal dump  file,  more
	       or less in the style output by the same option.	This is	not an
	       exact  reverse  mapping,	because	if there are ASCII equivalents
	       on the right hand side, these may be confused for  data	bytes.
	       Also,  it  doesn't understand white space representing holes in
	       the data	in the line.

       -IDT    This option says	to the the IDT/sim binary format to  read  the
	       file.  See srec_idt(5) for a description	of this	file format.

       -Intel  This  option says to use	the Intel hex format to	read the file.
	       See srec_intel(5) for a description of this file	format.

       -INtel_HeX_16
	       This option says	to use the Intel hex  16  (INHX16)  format  to
	       read  the  file.	 See srec_intel16(5) for a description of this
	       file format.

       -LOGIsim
	       This format is read and written by the open source Logisim pro-
	       gram.  See srec_logisim(5) for more informatuion.

       -Memory_Initialization_File
	       This option says	to use the Memory  Initialization  File	 (MIF)
	       format  by Altera to read the file.  See	srec_mif (5) for a de-
	       scription of this file format.

       -Mips_Flash_Big_Endian

       -Mips_Flash_Little_Endian
	       These options say to use	the MIPS Flash file format to read the
	       file.  See srec_mips_flash (5) for a description	of  this  file
	       format.

       -MOS_Technologies
	       This option says	to use the Mos Technologies format to read the
	       file.  See srec_mos_tech(5) for a description of	this file for-
	       mat.

       -Motorola [ width ]
	       This  option  says  to use the Motorola S-Record	format to read
	       the file.  (May be written -S-Record as	well.)	 See  srec_mo-
	       torola(5) for a description of this file	format.

	       The optional width argument describes the number	of bytes which
	       form each address multiple.  For	normal uses the	default	of one
	       (1)  byte  is  appropriate.  Some systems with 16-bit or	32-bit
	       targets mutilate	the addresses in the file;  this  option  will
	       correct	for that.  Unlike most other parameters, this one can-
	       not be guessed.

       -MsBin  This option says	to use the Windows CE Binary Image Data	Format
	       to read the file.  See srec_msbin(5) for	a description of  this
	       file format.

       -Needham_Hexadecimal
	       This option says	to use the Needham Electronics ASCII file for-
	       mat to read the file.  See srec_needham(5) for a	description of
	       this file format.

       -Ohio_Scientific
	       This  option  says  to  use  the	 Ohio  Scientific format.  See
	       srec_os65v(5) for a description of this file format.

       -PPB    This option says	to use the Stag	Prom Programmer	binary format.
	       See srec_ppb(5) for a description of this file format.

       -PPX    This option says	to use the Stag	 Prom  Programmer  hexadecimal
	       format.	See srec_ppx(5)	for a description of this file format.

       -SIGnetics
	       This   option   says   to   use	 the  Signetics	 format.   See
	       srec_spasm(5) for a description of this file format.

       -SPAsm  This is a synonym for the -SPAsm_Big_Endian option.

       -SPAsm_Big_Endian
	       This option says	to use the SPASM assembler output format (com-
	       monly used by PIC programmers).	See srec_spasm(5)  for	a  de-
	       scription of this file format.

       -SPAsm_Little_Endian
	       This  option says to use	the SPASM assembler output format, but
	       with the	data the other way around.

       -STewie This option says	to use the Stewie binary format	 to  read  the
	       file.   See  srec_stewie(5) for a description of	this file for-
	       mat.

       -Tektronix
	       This option says	to use the Tektronix hex format	 to  read  the
	       file.   See  srec_tektronix(5)  for  a description of this file
	       format.

       -Tektronix_Extended
	       This option says	to use the Tektronix extended  hex  format  to
	       read  the  file.	 See srec_tektronix_extended(5)	for a descrip-
	       tion of this file format.

       -Texas_Instruments_Tagged
	       This option says	to use the Texas Instruments Tagged format  to
	       read the	file.  See srec_ti_tagged(5) for a description of this
	       file format.

       -Texas_Instruments_Tagged_16
	       This option says	to use the Texas Instruments SDSMAC 320	format
	       to  read	 the file.  See	srec_ti_tagged_16(5) for a description
	       of this file format.

       -Texas_Instruments_TeXT
	       This option says	to use the Texas Instruments TXT (MSP430) for-
	       mat to read the file.  See srec_ti_txt(5) for a description  of
	       this file format.

       -TRS80  This option says	to use the Radio Shack TRS-80 object file for-
	       mat  to	read the file.	See srec_trs80(5) for a	description of
	       this file format.

       -VMem   This option says	to use the Verilog VMEM	 format	 to  read  the
	       file.  See srec_vmem(5) for a description of this file format.

       -WILson This  option  says  to  use the wilson format to	read the file.
	       See srec_wilson(5) for a	description of this file format.

   Ignore Checksums
       The -IGnore-Checksums option may	be used	to disable checksum validation
       of input	files, for those formats which have checksums  at  all.	  Note
       that  the  checksum values are still read in and	parsed (so it is still
       an error	if they	are missing) but their values are not  checked.	  Used
       after an	input file name, the option affects that file alone; used any-
       where else on the command line, it applies to all following files.

       -redundant-bytes=value
	       Use  this  option  to permit a file to contain redundant	values
	       for some	memory locations.  The default is for  this  condition
	       to be a warning.

	       ignore
		   No  warning or error	is issued whena	redundant settings are
		   detected.

	       warning
		   A warning is	issued when a redundant	settings are observed,
		   the warning includes	the problematic	address.

	       error
		   A fatal error is issued when	a redundant settings  are  ob-
		   served,  the	 fatal	error message includes the problematic
		   address and byte value.

       -contradictory-bytes=value
	       Use this	option to permit a file	to contain contradictory  val-
	       ues  for	some memory locations.	The last value in the input(s)
	       will be used.  The default is for this condition	to be a	 fatal
	       error.

	       ignore
		   No warning or error is issued when contradictory setting is
		   detected.

	       warning
		   A  warning  is issued when a	vontradictory settings are ob-
		   served, the warning includes	the problematic	 address,  and
		   values.

	       error
		   A fatal error is issued when	contradictory settings are ob-
		   served,  the	 fatal	error message includes the problematic
		   address and byte values.

   Generators
       It is also possible to generate data, rather than read it from a	 file.
       You may use a generator anywhere	you could use a	file.  An input	gener-
       ator specification looks	like this:

	 -GENerate address-range -data-source

       The -data-source	may be one of the following:

       -CONSTant byte-value
	       This  generator	manufactures data with the given byte value of
	       the the given address range.  It	is an error if the  byte-value
	       is not in the range 0..255.

	       For  example,  to  fill memory addresses	100..199 with newlines
	       (0x0A), you could use a command like

		 srec_cat -generate 100	200 -constant 10 -o newlines.srec

	       This can, of course, be combined	with data from files.

       -REPeat_Data byte-value...
	       This generator manufactures data	with the given byte values re-
	       peating over the	the given address range.  It is	 an  error  if
	       any of the the byte-values are not in the range 0..255.

	       For  example,  to  create  a  data region with 0xDE in the even
	       bytes and 0xAD in the odd bytes,	use a generator	like this:

		 srec_cat -generate 0x1000 0x2000 -repeat-data 0xDE 0xAD

	       The repeat boundaries are aligned with the base of the  address
	       range, modulo the number	of bytes.

       -REPeat_String text
	       This  generator is almost identical to -repeat-data except that
	       the data	to be repeated is the text of the given	string.

	       For example, to fill the	holes in  an  EPROM  image  eprom.srec
	       with  the text "Copyright (C) 1812 Tchaikovsky",	combine	a gen-
	       erator and an -exclude filter, such as the command

	       If you need to inject binary data into the string (e.g. a  ter-
	       minating	 NUL character), use the URL encoding that uses	% fol-
	       lowed by	two hexadeimal characters.  For	 example  a  backspace
	       would be	encoded	as "%08".

		 srec_cat eprom.srec \
		     -generate 0 0x100000 \
			 -repeat-string	'Copyright (C) 1812 Tchaikovsky. ' \
			 -exclude -within eprom.srec \
		     -o	eprom.filled.srec

	       The  thing  to  note  is	 that  we  have	 two data sources: the
	       eprom.srec file,	and generated data over	an address range which
	       covers first megabyte of	memory but excluding areas covered  by
	       the eprom.srec data.

       -CONSTant_Little_Endian value width
	       This  generator manufactures data with the given	numeric	value,
	       of a given byte width, in little-endian byte order.  It	is  an
	       error  if  the  given  value  does  not fit into	the given byte
	       width.  It will repeat over and over within the	address	 range
	       range.

	       For  example, to	insert a subversion commit number into 4 bytes
	       at 0x0008..0x000B you would use a command like

		 srec_cat -generate 8 12 -constant-l-e $VERSION	4 \
		     -o	version.srec

	       This generator is a convenience wrapper around the -REPeat_Data
	       generator.  It can, of  course,	be  combined  with  data  from
	       files.

       -CONSTant_Big_Endian value width
	       As above, but using big-endian byte ordering.

       Anything	else will result in an error.

   Input Filters
       You  may	 specify  zero or more filters to be applied.  Filters are ap-
       plied in	the order the user specifies.

       -Adler_16_Big_Endian address
	       This filter may be used to insert an "Adler" 16-bit checksum of
	       the data	into the data.	Two bytes, big-endian order,  are  in-
	       serted  at  the address given.  Holes in	the input data are ig-
	       nored.  Bytes are processed in ascending	address	order (not  in
	       the order they appear in	the input).

	       Note:  If you have holes	in your	data, you will get a different
	       Adler checksum than if there were no holes.  This is  important
	       because the in-memory EPROM image will not have holes.  You al-
	       most  always  want  to  use  the	-fill filter before any	of the
	       Adler checksum filters.	You will receive a warning if the data
	       presented for Adler checksum has	holes.

	       You should also be aware	that the lower	and  upper  bounds  of
	       your  data may not be the same as the lower and upper bounds of
	       your EPROM.  This is another reason to use  the	-fill  filter,
	       because	it  will  establish the	data across the	full EPROM ad-
	       dress range.

	       http://en.wikipedia.org/wiki/Adler-32

       -Adler_16_Little_Endian address
	       This filter may be used to insert an Adler 16-bit  checksum  of
	       the data	into the data.	Two bytes, in little-endian order, are
	       inserted	at the address given.  Holes in	the input data are ig-
	       nored.	Bytes are processed in ascending address order (not in
	       the order they appear in	the input).

	       Note: If	you have holes in your data, you will get a  different
	       Adler  checksum than if there were no holes.  This is important
	       because the in-memory EPROM image will not have holes.  You al-
	       most always want	to use the -fill  filter  before  any  of  the
	       Adler  filters.	 You  will  receive a warning if the data pre-
	       sented for Adler	checksum has holes.

	       You should also be aware	that the lower	and  upper  bounds  of
	       your  data may not be the same as the lower and upper bounds of
	       your EPROM.  This is another reason to use  the	-fill  filter,
	       because	it  will  establish the	data across the	full EPROM ad-
	       dress range.

	       http://en.wikipedia.org/wiki/Adler-32

       -Adler_32_Big_Endian address
	       This filter may be used to insert a Adler  32-bit  checksum  of
	       the  data into the data.	 Four bytes, big-endian	order, are in-
	       serted at the address given.  Holes in the input	data  are  ig-
	       nored.	Bytes are processed in ascending address order (not in
	       the order they appear in	the input).

	       Note: If	you have holes in your data, you will get a  different
	       Adler  checksum than if there were no holes.  This is important
	       because the in-memory EPROM image will not have holes.  You al-
	       most always want	to use the -fill  filter  before  any  of  the
	       Adler checksum filters.	You will receive a warning if the data
	       presented for Adler checksum has	holes.

	       You  should  also  be  aware that the lower and upper bounds of
	       your data may not be the	same as	the lower and upper bounds  of
	       your  EPROM.   This  is another reason to use the -fill filter,
	       because it will establish the data across the  full  EPROM  ad-
	       dress range.

	       http://en.wikipedia.org/wiki/Adler-32

       -Adler_32_Little_Endian address
	       This  filter  may  be used to insert a Adler 32-bit checksum of
	       the data	into the data.	Four bytes,  in	 little-endian	order,
	       are inserted at the address given.  Holes in the	input data are
	       ignored.	  Bytes	 are processed in ascending address order (not
	       in the order they appear	in the input).

	       Note: If	you have holes in your data, you will get a  different
	       Adler  checksum than if there were no holes.  This is important
	       because the in-memory EPROM image will not have holes.  You al-
	       most always want	to use the -fill  filter  before  any  of  the
	       Adler checksum filters.	You will receive a warning if the data
	       presented for Adler checksum has	holes.

	       You  should  also  be  aware that the lower and upper bounds of
	       your data may not be the	same as	the lower and upper bounds  of
	       your  EPROM.   This  is another reason to use the -fill filter,
	       because it will establish the data across the  full  EPROM  ad-
	       dress range.

	       http://en.wikipedia.org/wiki/Adler-32

       -AND value
	       This  filter  may be used to bit-wise AND a value to every data
	       byte.  This is useful if	you need to clear bits.	 Only existing
	       data is altered,	no holes are filled.

       -Bit_Reverse [ width ]
	       This filter may be used to reverse the order  of	 the  bits  in
	       each  data byte.	 By specifying a width (in bytes) it is	possi-
	       ble to reverse the order	multi-byte values; this	is implemented
	       using the byte-swap filter.

       -Byte_Swap [ width ]
	       This filter may be used to swap pairs of	odd  and  even	bytes.
	       By  specifying a	width (in bytes) it is possible	to reverse the
	       order of	4 and 8	bytes, the default is 2	bytes.	(Widths	in ex-
	       cess of 8 are assumed to	be number of bits.)  It	is not	possi-
	       ble  to	swap non-power-of-two addresses.  To change the	align-
	       ment, use the offset filter before and after.

       -Checksum_BitNot_Big_Endian address [ nbytes [ width ]]
	       This filter may be used to insert the one's complement checksum
	       of the data into	the data, most significant  byte  first.   The
	       data  is	 literally  summed; if there are duplicate bytes, this
	       will produce an incorrect result, if there are holes,  it  will
	       be as if	they were filled with zeros.  If the data already con-
	       tains  bytes  at	 the checksum location,	you need to use	an ex-
	       clude filter, or	this will generate errors.  You	need to	 apply
	       and crop	or fill	filters	before this filter.  The value will be
	       written	with  the  most	significant byte first.	 The number of
	       bytes of	resulting checksum defaults  to	 4.   The  width  (the
	       width in	bytes of the values being summed) defaults to 1.

       -Checksum_BitNot_Little_Endian address [	nbytes [ width ]]
	       This filter may be used to insert the one's complement (bitnot)
	       checksum	 of  the  data	into  the data,	least significant byte
	       first.  Otherwise similar to the	above.

       -Checksum_Negative_Big_Endian address [ nbytes [	width ]]
	       This filter may be used to insert the two's  complement	(nega-
	       tive) checksum of the data into the data.  Otherwise similar to
	       the above.

       -Checksum_Negative_Little_Endian	address	[ nbytes [ width ]]
	       This  filter  may be used to insert the two's complement	(nega-
	       tive) checksum of the data into the data.  Otherwise similar to
	       the above.

       -Checksum_Positive_Big_Endian address [ nbytes [	width ]]
	       This filter may be used to insert the simple  checksum  of  the
	       data into the data.  Otherwise similar to the above.

       -Checksum_Positive_Little_Endian	address	[ nbytes [ width ]]
	       This  filter  may  be used to insert the	simple checksum	of the
	       data into the data.  Otherwise similar to the above.

       -CRC16_Big_Endian address [ modifier... ]
	       This filter may be used to insert an industry  standard	16-bit
	       CRC  checksum of	the data into the data.	 Two bytes, big-endian
	       order, are inserted at the address given.  Holes	in  the	 input
	       data are	ignored.  Bytes	are processed in ascending address or-
	       der (not	in the order they appear in the	input).

	       The following additional	modifiers are understood:

	       number  Set the polynomial to be	used to	the given number.

	       -POLYnomial name
		       This option may be used to set the CRC polynomial to be
		       used, by	name.  The known names include:
			      ibm	0x8005
			      ansi	0x8005
			      ccitt	0x1021
			      t10-dif	0x8bb7
			      dnp	0x3d65
			      dect	0x0589

		       See	    http://en.wikipedia.org/wiki/Cyclic_redun-
		       dancy_check for a table of names	and values.

	       -Most_To_Least
		       The CRC calculation is performed	with the most signifi-
		       cant bit	in each	byte processed first,  and  then  pro-
		       ceeding towards the least significant bit.  This	is the
		       default.

	       -Least_To_Most
		       The CRC calculation is performed	with the least signif-
		       icant  bit  in each byte	processed first, and then pro-
		       ceeding towards the most	significant bit.

	       -CCITT  The CCITT calculation is	performed.  The	 initial  seed
		       is 0xFFFF.  This	is the default.

	       -XMODEM The  alternate  XMODEM  calculation  is performed.  The
		       initial seed is 0x0000.

	       -BROKEN A common-but-broken calculation is performed (see  note
		       2 below).  The initial seed is 0x84CF.

	       -AUGment
		       The CRC is augmented by sixteen zero bits at the	end of
		       the calculation.	 This is the default.

	       -No-AUGment
		       The CRC is not augmented	at the end of the calculation.
		       This  is	less standard conforming, but some implementa-
		       tions do	this.

	       Note: If	you have holes in your data, you will get a  different
	       CRC than	if there were no holes.	 This is important because the
	       in-memory  EPROM	 image will not	have holes.  You almost	always
	       want to use the -fill filter before any	of  the	 CRC  filters.
	       You  will  receive  a warning if	the data presented for CRC has
	       holes.

	       You should also be aware	that the lower	and  upper  bounds  of
	       your  data may not be the same as the lower and upper bounds of
	       your EPROM.  This is another reason to use  the	-fill  filter,
	       because	it  will  establish the	data across the	full EPROM ad-
	       dress range.

	       Note 2: there are a great many CRC16 implementations out	there,
	       see  http://www.joegeluso.com/software/articles/ccitt.htm  (now
	       gone,	 reproduced	at     http://srecord.sourceforge.net-
	       /crc16-ccitt.html) and "A painless guide	to CRC error detection
	       algorithms"  http://www.repairfaq.org/filipg/LINK/F_crc_v3.html
	       for  more  information.	 If  all  else	fails, SRecord is open
	       source software:	read  the  SRecord  source  code.   The	 CRC16
	       source code (found in the srecord/crc16.cc file of the distrib-
	       ution tarball) has a great many explanatory comments.

	       Please  try all twelve combinations of the above	options	before
	       reporting a bug in the CRC16 calculation.

       -CRC16_Little_Endian address [ modifier... ]
	       The same	as the -CRC16_Big_Endian filter, except	in  little-en-
	       dian byte order.

       -CRC32_Big_Endian address [ modifier... ]
	       This  filter  may be used to insert an industry standard	32-bit
	       CRC checksum of the data	into the data.	Four bytes, big-endian
	       order, are inserted at the address given.  Holes	in  the	 input
	       data are	ignored.  Bytes	are processed in ascending address or-
	       der  (not in the	order they appear in the input).  See also the
	       note about holes, above.

	       The following additional	modifiers are understood:

	       -CCITT  The CCITT calculation is	performed.  The	 initial  seed
		       is all one bits.	 This is the default.

	       -XMODEM An  alternate  XMODEM-style  calculation	 is performed.
		       The initial seed	is all zero bits.

       -CRC32_Little_Endian address
	       The same	as the -CRC32_Big_Endian filter, except	in  little-en-
	       dian byte order.

       -Crop address-range
	       This  filter may	be used	to isolate a section of	data, and dis-
	       card the	rest.

       -Exclude	address-range
	       This filter may be used to exclude a section of data, and  keep
	       the rest.  The is the logical complement	of the -Crop filter.

       -Exclusive_Length_Big_Endian address [ nbytes [ width ]]
	       The  same as the	-Length_Big_Endian filter, except that the re-
	       sult does not include the length	itself.

       -Exclusive_Length_Little_Endian address [ nbytes	[ width	]]
	       The same	as the -Length_Little_Endian filter, except  that  the
	       result does not include the length itself.

       -Exclusive_MAXimum_Big_Endian address [ nbytes ]
	       The same	as the -MAXimum_Big_Endian filter, except that the re-
	       sult does not include the maximum itself.

       -Exclusive_MAXimum_Little_Endian	address	[ nbytes ]
	       The  same as the	-MAXimum_Little_Endian filter, except that the
	       result does not include the maximum itself.

       -Exclusive_MINimum_Big_Endian address [ nbytes ]
	       The same	as the -MINimum_Big_Endian filter, except that the re-
	       sult does not include the minimum itself.

       -Exclusive_MINimum_Little_Endian	address	[ nbytes ]
	       The same	as the -MINimum_Little_Endian filter, except that  the
	       result does not include the minimum itself.

       -eXclusive-OR value
	       This  filter  may be used to bit-wise XOR a value to every data
	       byte.  This is useful if	you need to invert bits.  Only	exist-
	       ing data	is altered, no holes are filled.

       -Fill value address-range
	       This filter may be used to fill any gaps	in the data with bytes
	       equal  to value.	 The fill will only occur in the address range
	       given.

       -Fletcher_16_Big_Endian address [ sum1 sum2 [ answer ]]
	       This filter may be used to insert an Fletcher  16-bit  checksum
	       of  the	data  into the data.  Two bytes, big-endian order, are
	       inserted	at the address given.  Holes in	the input data are ig-
	       nored.  Bytes are processed in ascending	address	order (not  in
	       the order they appear in	the input).

	       Note:  If you have holes	in your	data, you will get a different
	       Fletcher	checksum than if there were no holes.  This is	impor-
	       tant  because  the  in-memory  EPROM image will not have	holes.
	       You almost always want to use the -fill filter  before  any  of
	       the  Fletcher  checksum filters.	 You will receive a warning if
	       the data	presented for Fletcher checksum	has holes.

	       You should also be aware	that the lower	and  upper  bounds  of
	       your  data may not be the same as the lower and upper bounds of
	       your EPROM.  This is another reason to use  the	-fill  filter,
	       because	it  will  establish the	data across the	full EPROM ad-
	       dress range.

	       http://en.wikipedia.org/wiki/Fletcher%27s_checksum

	       It is possible to select	seed values for	sum1 and sum2  in  the
	       algorithm,  by  adding  seed  values on the command line.  They
	       each default to 0xFF if not  explicitly	stated.	  The  default
	       values  (0)  means  that	 an empty EPROM	(all 0x00 or all 0xFF)
	       will sum	to zero; by changing the seeds,	an  empty  EPROM  will
	       always fail.

	       The third optional argument is the desired sum, when the	check-
	       sum  itself is summed.  A common	value is 0x0000, placed	in the
	       last two	bytes of an EPROM, so that the Fletcher	16 checksum of
	       the EPROM is exactly 0x0000.   No  manipulation	of  the	 final
	       value is	performed if this value	if not specified.

       -Fletcher_16_Little_Endian address
	       This  filter  may be used to insert an Fletcher 16-bit checksum
	       of the data into	the data.  Two bytes, in little-endian	order,
	       are inserted at the address given.  Holes in the	input data are
	       ignored.	  Bytes	 are processed in ascending address order (not
	       in the order they appear	in the input).

	       Note: If	you have holes in your data, you will get a  different
	       Fletcher	 checksum than if there	were no	holes.	This is	impor-
	       tant because the	in-memory EPROM	image  will  not  have	holes.
	       You  almost  always  want to use	the -fill filter before	any of
	       the Fletcher filters.  You will receive a warning if  the  data
	       presented for Fletcher checksum has holes.

	       You  should  also  be  aware that the lower and upper bounds of
	       your data may not be the	same as	the lower and upper bounds  of
	       your  EPROM.   This  is another reason to use the -fill filter,
	       because it will establish the data across the  full  EPROM  ad-
	       dress range.

	       http://en.wikipedia.org/wiki/Fletcher%27s_checksum

       -Fletcher_32_Big_Endian address
	       This filter may be used to insert a Fletcher 32-bit checksum of
	       the  data into the data.	 Four bytes, big-endian	order, are in-
	       serted at the address given.  Holes in the input	data  are  ig-
	       nored.	Bytes are processed in ascending address order (not in
	       the order they appear in	the input).

	       Note: If	you have holes in your data, you will get a  different
	       Fletcher	 checksum than if there	were no	holes.	This is	impor-
	       tant because the	in-memory EPROM	image  will  not  have	holes.
	       You  almost  always  want to use	the -fill filter before	any of
	       the Fletcher checksum filters.  You will	receive	a  warning  if
	       the data	presented for Fletcher checksum	has holes.

	       You  should  also  be  aware that the lower and upper bounds of
	       your data may not be the	same as	the lower and upper bounds  of
	       your  EPROM.   This  is another reason to use the -fill filter,
	       because it will establish the data across the  full  EPROM  ad-
	       dress range.

	       http://en.wikipedia.org/wiki/Fletcher%27s_checksum

       -Fletcher_32_Little_Endian address
	       This filter may be used to insert a Fletcher 32-bit checksum of
	       the  data  into	the data.  Four	bytes, in little-endian	order,
	       are inserted at the address given.  Holes in the	input data are
	       ignored.	 Bytes are processed in	ascending address  order  (not
	       in the order they appear	in the input).

	       Note:  If you have holes	in your	data, you will get a different
	       Fletcher	checksum than if there were no holes.  This is	impor-
	       tant  because  the  in-memory  EPROM image will not have	holes.
	       You almost always want to use the -fill filter  before  any  of
	       the  Fletcher  checksum filters.	 You will receive a warning if
	       the data	presented for Fletcher checksum	has holes.

	       You should also be aware	that the lower	and  upper  bounds  of
	       your  data may not be the same as the lower and upper bounds of
	       your EPROM.  This is another reason to use  the	-fill  filter,
	       because	it  will  establish the	data across the	full EPROM ad-
	       dress range.

	       http://en.wikipedia.org/wiki/Fletcher%27s_checksum

       -Length_Big_Endian address [ nbytes [ width ]]
	       This filter may be used to insert the length of the data	 (high
	       water minus low water) into the data.  This includes the	length
	       itself.	If the data already contains bytes at the length loca-
	       tion,  you need to use an exclude filter, or this will generate
	       errors.	The value will be written with	the  most  significant
	       byte  first.  The number	of bytes defaults to 4.	 The width de-
	       faults to 1, and	is divided into	the actual  length,  thus  you
	       can insert the width in units of	words (2) or longs (4).

       -Length_Little_Endian address [ nbytes [	width ]]
	       The  same  as  the  -Length_Big_Endian filter, except the value
	       will be written with the	least significant byte first.

       -MAXimum_Big_Endian address [ nbytes ]
	       This filter may be used to insert the maximum  address  of  the
	       data (high water
		+ 1) into the data.  This includes the maximum itself.	If the
	       data  already  contains bytes at	the given address, you need to
	       use an exclude filter, or this will generate errors.  The value
	       will be written with the	most significant byte first.  The num-
	       ber of bytes defaults to	4.

       -MAXimum_Little_Endian address [	nbytes ]
	       The same	as the -MAXimum_Big_Endian filter,  except  the	 value
	       will be written with the	least significant byte first.

       -Message_Digest_5 address
	       This  filter  may be used to insert a 16	byte MD5 hash into the
	       data, at	the address given.

       -MINimum_Big_Endian address [ nbytes ]
	       This filter may be used to insert the minimum  address  of  the
	       data  (low water) into the data.	 This includes the minimum it-
	       self.  If the data already contains bytes at the	given address,
	       you need	to use an exclude filter, or this  will	 generate  er-
	       rors.  The value	will be	written	with the most significant byte
	       first.  The number of bytes defaults to 4.

       -MINimum_Little_Endian address [	nbytes ]
	       The  same  as  the -MINimum_Big_Endian filter, except the value
	       will be written with the	least significant byte first.

       -NOT    This filter may be used to bit-wise NOT the value of every data
	       byte.  This is useful if	you need to invert the data.  Only ex-
	       isting data is altered, no holes	are filled.

       -OFfset nbytes
	       This filter may be used to offset the addresses	by  the	 given
	       number  of  bytes.   No	data  is lost, the addresses will wrap
	       around in 32 bits, if necessary.	 You may use negative  numbers
	       for the offset, if you wish to move data	lower in memory.

	       Please note: the	execution start	address	is a different concept
	       than  the first address in memory of your data.	If you want to
	       change where your monitor will start executing, use the -execu-
	       tion-start-address option (srec_cat(1) only).

       -OR value
	       This filter may be used to bit-wise OR a	value  to  every  data
	       byte.   This  is	useful if you need to set bits.	 Only existing
	       data is altered,	no holes are filled.

       -Random_Fill address-range
	       This filter may be used to fill any gaps	in the data with  ran-
	       dom  bytes.   The  fill	will  only  occur in the address range
	       given.

       -Ripe_Message_Digest_160	address
	       This filter may be used to insert an RMD160 hash	into the data.

       -Secure_Hash_Algorithm_1	address
	       This filter may be used to insert a 20 byte SHA1	hash into  the
	       data, at	the address given.

       -Secure_Hash_Algorithm_224 address
	       This  filter  may  be used to insert a 28 byte SHA224 hash into
	       the data, at the	address	given.	See Change Notice 1  for  FIPS
	       180-2 for the specification.

       -Secure_Hash_Algorithm_256 address
	       This  filter  may  be used to insert a 32 byte SHA256 hash into
	       the data, at the	address	given.	See FIPS 180-2 for the	speci-
	       fication.

       -Secure_Hash_Algorithm_384 address
	       This  filter  may  be used to insert a 48 byte SHA384 hash into
	       the data, at the	address	given.	See FIPS 180-2 for the	speci-
	       fication.

       -Secure_Hash_Algorithm_512 address
	       This  filter  may  be used to insert a 64 byte SHA512 hash into
	       the data, at the	address	given.	See FIPS 180-2 for the	speci-
	       fication.

       -SPlit multiple [ offset	[ width	] ]
	       This filter may be used to split	the input into a subset	of the
	       data,  and  compress  the address range so as to	leave no gaps.
	       This useful for wide data buses and memory striping.  The  mul-
	       tiple  is  the  bytes multiple to split over, the offset	is the
	       byte offset into	this range (defaults to	0), the	width  is  the
	       number of bytes to extract (defaults to 1) within the multiple.
	       In  order  to  leave no gaps, the output	addresses are (width /
	       multiple) times the input addresses.

       -STM32 address
	       This is a synonym for the -STM32_Little_Endian filter.

       -STM32_Little_Endian address

       -STM32_Big_Endian address
	       These filters many be use to generate the CRC used by the hard-
	       ware CRC	unit on	the STM32 series of ARM	MPUs.	The  algorithm
	       used  by	the STM32 hardware unit	is just	a CRC32	with a differ-
	       ent polynomial and word-fed instead of byte-fed.

	       The address is where to place the 4-byte	STM32 CRC.

	       The CRC used is documented in  "RM0041,	STM32F100xx  reference
	       manual",	 page 46, chapter "CRC Calculation Unit", which	can be
	       found at
	       http://www.st.com/internet/mcu/product/216844.jsp

       -TIGer address
	       This filter may be used to insert a 24 byte TIGER/192 hash into
	       the data	at the address given.

       -UnFill value [ min-run-length ]
	       This filter may be used to create gaps in the data  with	 bytes
	       equal  to  value.  You can think	of it as reversing the effects
	       of the -Fill filter.  The gaps will only	be created if the  are
	       at least	min-run-length bytes in	a row (defaults	to 1).

       -Un_SPlit multiple [ offset [ width ] ]
	       This  filter  may  be  used to reverse the effects of the split
	       filter.	The arguments are identical.  Note  that  the  address
	       range  is  expanded (multiple / width) times, leaving holes be-
	       tween the stripes.

       -WHIrlpool address
	       This filter may be used to insert a 64 byte WHIRLPOOL hash into
	       the data, at the	address	given.

   Address Ranges
       There are eight ways to specify an address range:

       minimum maximum
	       If you specify two number on the	command	line  (decimal,	 octal
	       and  hexadecimal	 are understood, using the C conventions) this
	       is an explicit address range.  The minimum  is  inclusive,  the
	       maximum	is exclusive (one more than the	last address).	If the
	       maximum is given	as zero	then the range extends to the  end  of
	       the address space.

       -Within input-specification
	       This says to use	the specified input file as a mask.  The range
	       includes	all the	places the specified input has data, and holes
	       where it	has holes.  The	input specification need not be	just a
	       file name, it may be anything any other input specification can
	       be.

	       See  also  the -over option for a discussion on operator	prece-
	       dence.

       -OVER input-specification
	       This says to use	the specified input file as a mask.  The range
	       extends from the	minimum	to the maximum address used by the in-
	       put, without any	holes, even if the input has holes.  The input
	       specification need not be just a	file name, it may be  anything
	       any other input specification can be.

	       You  may	 need to enclose input-specification in	parentheses to
	       make sure it can't misinterpret which arguments go  with	 which
	       input  specification.   This  is	 particularly important	when a
	       filter is to follow.  For example
		      filename -fill 0 -over filename2 -swap-bytes
	       groups as
		      filename -fill 0 -over '(' filename2 -swap-bytes ')'
	       when what you actually wanted was
		      '(' filename -fill 0 -over filename2 ')' -swap-bytes
	       The command line	expression parsing tends to  be	 "greedy"  (or
	       right  associative)  rather than	conservative (or left associa-
	       tive).

       address-range -RAnge-PADding number
	       It is also possible to pad ranges to be whole aligned multiples
	       of the given number.  For example
		      input-file -fill 0xFF -within input-file -range-pad 512
	       will fill the input-file	so that	it consists of whole  512-byte
	       blocks, aligned on 512 byte boundaries.	Any large holes	in the
	       data  will also be multiples of 512 bytes, though they may have
	       been shrunk as blocks before and	after are padded.

	       This operator has the same precedence as	the explicit union op-
	       erator.

       address-range -INTERsect	address-range
	       You can intersect two address ranges to produce a  smaller  ad-
	       dress  range.   The intersection	operator has higher precedence
	       than the	implicit union operator	(evaluated left	to right).

       address-range -UNIon address-range
	       You can union two address ranges	to produce  a  larger  address
	       range.  The union operator has lower precedence than the	inter-
	       section operator	(evaluated left	to right).

       address-range -DIFference address-range
	       You  can	difference two address ranges to produce a smaller ad-
	       dress range.  The result	is the left hand range with all	of the
	       right hand range	removed.  The difference operator has the same
	       precedence as the implicit union	operator  (evaluated  left  to
	       right).

       address-range address-range
	       In  addition,  all  of these methods may	be used, and used more
	       than once, and the results will be combined (implicit union op-
	       erator, same precedence as explicit union operator).

   Calculated Values
       Most of the places above	where a	number is expected, you	may supply one
       of the following:

       - value
	       The value of this expression is the negative of the  expression
	       argument.   Note	the space between the minus sign and its argu-
	       ment: this space	is mandatory.
		      srec_cat in.srec	-offset	 -  -minimum-addr  in.srec  -o
		      out.srec
	       This example shows how to move data to the base of memory.

       ( value )
	       You  may	use parentheses	for grouping.  When using parentheses,
	       they must each be a separate command line argument, they	 can't
	       be  within  the	text of	the preceding or following option, and
	       you will	need to	quote them to get them past the	shell, such as
	       '(' and ')'.

       -MINimum-Address	input-specification
	       This inserts the	minimum	address	of the specified  input	 file.
	       The input specification need not	be just	a file name, it	may be
	       anything	any other input	specification can be.

	       See  also  the -over option for a discussion on operator	prece-
	       dence.

       -MAXimum-Address	input-specification
	       This inserts the	maximum	address	of the specified  input	 file,
	       plus  one.   The	 input	specification  need not	be just	a file
	       name, it	may be anything	any other input	specification can be.

	       See also	the -over option for a discussion on  operator	prece-
	       dence.

       -Length input-specification
	       This  inserts  the length of the	address	range in the specified
	       input file, ignoring any	holes.	The input  specification  need
	       not  be	just  a	 file name, it may be anything any other input
	       specification can be.

	       See also	the -over option for a discussion on  operator	prece-
	       dence.

       For  example, the -OVER input-specification option can be thought of as
       short-hand for '(' -min file -max file ')', except that it is much eas-
       ier to type, and	also more efficient.

       In addition, calculated values may optionally  be  rounded  in  one  of
       three ways:

       value -Round_Down number
	       The  value  is  rounded down to the the largest integer smaller
	       than or equal to	a whole	multiple of the	number.

       value -Round_Nearest number
	       The value is rounded to the the nearest whole multiple  of  the
	       number.

       value -Round_Up number
	       The value is rounded up to the the smallest integer larger than
	       or equal	to a whole multiple of the number.

       When using parentheses, they must each be a separate command line argu-
       ment,  they  can't be within the	text of	the preceding or following op-
       tion, and you will need to quote	them to	get them past  the  shell,  as
       '(' and ')'.

COPYRIGHT
       srec_input version 1.64
       Copyright  (C)  1998,  1999,  2000, 2001, 2002, 2003, 2004, 2005, 2006,
       2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 Peter Miller

       The srec_input program comes with ABSOLUTELY NO WARRANTY;  for  details
       use  the	 'srec_input -VERSion License' command.	 This is free software
       and you are welcome to redistribute it under  certain  conditions;  for
       details use the 'srec_input -VERSion License' command.

MAINTAINER
       Scott Finneran	E-Mail:	  scottfinneran@yahoo.com.au
       Peter Miller	E-Mail:	  pmiller@opensource.org.au

Reference Manual		    SRecord			 srec_input(1)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=srec_input&sektion=1&manpath=FreeBSD+Ports+15.0>

home | help