Man Linux: Main Page and Category List

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
       optional.  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
       format defaults to Motorola S‐Record  if  not  specified.   The  format
       specifiers 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.

       -BRecord
               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
               format.

       -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 srec_input to  guess  the  input
               format.   This is slower than specifying an explicit format, as
               it may open and close the file a number of times.

       -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.

       -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
               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
               format.

       -Motorola [ width ]
               This  option  says  to use the Motorola S‐Record format to read
               the   file.    (May   also   be   written   -S‐Record.)     See
               srec_motorola(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
               cannot 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
               format 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.

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

       -SPAsm  This option says to  use  the  SPASM  assembler  output  format
               (commonly  used  by  PIC programmers).  See srec_spasm(5) for a
               description of this file format.

       -SPAsm_LittleEndian
               This option says to  use  the  SPASM  assembler  output  format
               (commonly  used  by  PIC  programmers).   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
               format.

       -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
               description 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)
               format  to read the file.  See srec_ti_txt(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
       anywhere else on the command line, it applies to all following files.

   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
       generator specification looks like this:

         -GENerate addressrange -datasource

       The -datasource may be one of the following:

       -CONSTant bytevalue
               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 bytevalue...
               This  generator  manufactures  data  with the given byte values
               repeating 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
               generator and an -exclude filter, such as the command

                 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.

       -Litte_Endian_CONSTant 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 -l‐e‐constant $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.

       -Big_Endian_CONSTant 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
       applied in the order the user specifies.

       -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.

       -Big_Endian_Adler_16 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
               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
               almost 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
               address range.

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

       -Big_Endian_Adler_32 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
               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
               almost  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
               address range.

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

       -Big_Endian_Checksum_BitNot 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
               contains bytes at the checksum location, you  need  to  use  an
               exclude  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.

       -Big_Endian_Checksum_Negative address [ nbytes [ width ]]
               This  filter  may  be  used  to  insert  the  two’s  complement
               (negative)  checksum  of  the  data  into  the data.  Otherwise
               similar to the above.

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

       -Big_Endian_CRC16 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
               order (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.

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

               -Least_To_Most
                       The  CRC  calculation  is  performed  with  the   least
                       significant  bit in each byte processed first, and then
                       proceeding 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.   The
                       initial seed is 0x84CF.

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

               -NoAUGment
                       The CRC is not augmented at the end of the calculation.
                       This    is   less   standard   conforming,   but   some
                       implementations 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
               address range.

               Note  that  there  are  a  great many CRC16 implementations out
               there, see http://www.joegeluso.com/software/articles/ccitt.htm
               for  more  information.   If  all  else  fails, SRecord is open
               source software: read  the  SRecord  source  code.   The  CRC16
               source code (found in the lib/crc16.cc file of the distribution
               tarball) has a great many explanatory comments.

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

       -Big_Endian_CRC32 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
               order  (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.

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

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

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

       -Big_Endian_Fletcher_16 address
               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
               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
               important  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
               address range.

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

       -Big_Endian_Fletcher_32 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
               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
               important  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
               address range.

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

       -Big_Endian_Length 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
               location, 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 defaults to 1, and is divided into the actual lenght,
               thus you can insert the width in units of words  (2)  or  longs
               (4).

       -Big_Endian_MAXimum 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
               number of bytes defaults to 4.

       -Big_Endian_MINimum address [ nbytes ]
               This filter may be used to insert the minimum  address  of  the
               data  (low  water)  into  the  data.  This includes the minimum
               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 number of bytes defaults to 4.

       -bit_reverse [ width ]
               This  filter  maye  be used to reverse the order of the bits in
               each data byte.   By  specifying  a  width  (in  bytes)  it  is
               possible  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
               excess  of  8  are  assumed  to  be number of bits.)  It is not
               possible to swap non‐power‐of‐two  addresses.   To  change  the
               alignment, use the offset filter before and after.

       -Crop addressrange
               This  filter  may  be  used  to  isolate a section of data, and
               discard the rest.

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

       -eXclusiveOR 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
               existing data is altered, no holes are filled.

       -Fill value addressrange
               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.

       -Little_Endian_Adler_16 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
               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
               almost always want to use the -fill filter before  any  of  the
               Adler  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
               address range.

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

       -Little_Endian_Adler_32 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
               almost  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
               address range.

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

       -Little_Endian_Checksum_BitNot 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.

       -Little_Endian_Checksum_Negative address [ nbytes [ width ]]
               This  filter  may  be  used  to  insert  the  two’s  complement
               (negative) checksum of  the  data  into  the  data.   Otherwise
               similar to the above.

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

       -Little_Endian_CRC16 address [ modifier... ]
               The same as the -Big_Endian_CRC16 filter, except  little‐endian
               order.

       -Little_Endian_CRC32 address
               The  same as the -Big_Endian_CRC32 filter, except little‐endian
               order.

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

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

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

       -Little_Endian_Fletcher_16 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
               important  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
               address range.

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

       -Little_Endian_Fletcher_32 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
               important 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
               address range.

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

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

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

       -Little_Endian_MINimum address [ nbytes ]
               The same as the -Big_Endian_MINimum 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.

       -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
               existing 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
               -executionstartaddress 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 addressrange
               This filter may be used to fill  any  gaps  in  the  data  with
               random  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
               specification.

       -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
               specification.

       -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
               specification.

       -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
               multiple 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.

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

       -UnFill value [ minrunlength ]
               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 minrunlength 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
               between 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 inputspecification
               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
               precedence.

       -OVER inputspecification
               This says to use the specified input file as a mask.  The range
               extends from the minimum to the maximum  address  used  by  the
               input,  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 inputspecification 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
               associative).

       addressrange -RAngePADding number
               It is also possible to pad ranges to be whole aligned multiples
               of the given number.  For example
                      inputfile -fill 0xFF -within inputfile -range‐pad 512
               will  fill the inputfile 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
               operator.

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

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

       addressrange -DIFference addressrange
               You  can  difference  two  address  ranges to produce a smaller
               address 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).

       addressrange addressrange
               In  addition,  all  of these methods may be used, and used more
               than once, and the results will  be  combined  (implicit  union
               operator, 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
               argument: 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 ’)’.

       -MINimumAddress inputspecification
               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
               precedence.

       -MAXimumAddress inputspecification
               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
               precedence.

       -Length inputspecification
               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
               precedence.

       For example, the -OVER inputspecification option can be thought of  as
       short‐hand  for  ’(-min  file  -max file)’, except that it is much
       easier 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
       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,  as
       ’(’ and ’)’.

COPYRIGHT

       srec_input version 1.55
       Copyright  (C)  1998,  1999,  2000, 2001, 2002, 2003, 2004, 2005, 2006,
       2007, 2008, 2009, 2010 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.

AUTHOR

       Peter Miller   E‐Mail:   pmiller@opensource.org.au
       /\/\*             WWW:   http://miller.emu.id.au/pmiller/