Artifact 15a365c60cc44024d1d380c04ce9df10cb13c0b1:

Wiki page [binconvert] by erikj 2017-11-30 02:13:30.
0000: 44 20 32 30 31 37 2d 31 31 2d 33 30 54 30 32 3a  D 2017-11-30T02:
0010: 31 33 3a 33 30 2e 34 31 33 0a 4c 20 62 69 6e 63  13:30.413.L binc
0020: 6f 6e 76 65 72 74 0a 4e 20 74 65 78 74 2f 78 2d  onvert.N text/x-
0030: 6d 61 72 6b 64 6f 77 6e 0a 50 20 64 34 63 31 61  markdown.P d4c1a
0040: 62 66 65 65 61 39 66 65 31 62 38 33 33 35 33 36  bfeea9fe1b833536
0050: 63 36 61 64 35 37 65 38 32 33 37 62 33 35 37 32  c6ad57e8237b3572
0060: 32 39 65 0a 55 20 65 72 69 6b 6a 0a 57 20 32 34  29e.U erikj.W 24
0070: 35 38 0a 23 20 62 69 6e 63 6f 6e 76 65 72 74 0d  58.# binconvert.
0080: 0a 0d 0a 54 68 69 73 20 70 61 63 6b 61 67 65 20  ...This package 
0090: 69 73 20 69 6e 20 74 68 65 20 6c 61 74 65 20 73  is in the late s
00a0: 74 61 67 65 73 20 6f 66 20 64 65 76 65 6c 6f 70  tages of develop
00b0: 6d 65 6e 74 20 74 65 73 74 69 6e 67 2c 20 61 6e  ment testing, an
00c0: 64 20 69 73 20 61 76 61 69 6c 61 62 6c 65 20 66  d is available f
00d0: 6f 72 20 67 65 6e 65 72 61 6c 20 75 73 65 2e 20  or general use. 
00e0: 20 41 73 20 6f 66 20 76 65 72 73 69 6f 6e 20 30   As of version 0
00f0: 2e 32 2e 31 2c 20 49 6e 74 65 6c 20 48 65 78 2c  .2.1, Intel Hex,
0100: 20 53 52 45 43 2c 20 26 20 54 49 20 54 65 78 74   SREC, & TI Text
0110: 20 66 6f 72 6d 61 74 73 20 61 72 65 20 61 6c 6c   formats are all
0120: 20 74 65 73 74 65 64 20 61 6e 64 20 61 70 70 65   tested and appe
0130: 61 72 20 74 6f 20 62 65 20 77 6f 72 6b 69 6e 67  ar to be working
0140: 2e 20 20 52 61 77 62 69 6e 20 68 61 73 20 6e 6f  .  Rawbin has no
0150: 74 20 79 65 74 20 62 65 65 6e 20 76 65 72 69 66  t yet been verif
0160: 69 65 64 2e 20 20 4f 6e 63 65 20 74 68 69 73 20  ied.  Once this 
0170: 66 6f 72 6d 61 74 20 69 73 20 76 65 72 69 66 69  format is verifi
0180: 65 64 2c 20 49 27 6c 6c 20 61 73 73 65 6d 62 6c  ed, I'll assembl
0190: 65 20 74 68 65 20 70 61 63 6b 61 67 65 20 69 6e  e the package in
01a0: 74 6f 20 61 20 74 65 61 63 75 70 20 61 72 63 68  to a teacup arch
01b0: 69 76 65 20 66 6f 72 20 66 75 6c 6c 20 72 65 6c  ive for full rel
01c0: 65 61 73 65 2e 0d 0a 0d 0a 59 6f 75 72 20 66 65  ease.....Your fe
01d0: 65 64 62 61 63 6b 20 61 6e 64 20 62 75 67 20 72  edback and bug r
01e0: 65 70 6f 72 74 73 20 61 72 65 20 61 70 70 72 65  eports are appre
01f0: 63 69 61 74 65 64 2e 0d 0a 0d 0a 23 23 23 20 41  ciated.....### A
0200: 62 6f 75 74 0d 0a 0d 0a 42 69 6e 63 6f 6e 76 65  bout....Binconve
0210: 72 74 20 69 73 20 61 20 54 63 6c 20 70 61 63 6b  rt is a Tcl pack
0220: 61 67 65 20 74 68 61 74 20 72 65 61 64 73 20 26  age that reads &
0230: 20 77 72 69 74 65 73 20 45 45 50 52 4f 4d 20 6d   writes EEPROM m
0240: 65 6d 6f 72 79 20 66 69 6c 65 73 20 69 6e 20 6d  emory files in m
0250: 75 6c 74 69 70 6c 65 20 66 6f 72 6d 61 74 73 20  ultiple formats 
0260: 28 4d 6f 74 6f 72 6f 6c 61 20 53 2d 52 45 43 2c  (Motorola S-REC,
0270: 20 49 6e 74 65 6c 20 48 65 78 2c 20 54 49 20 54   Intel Hex, TI T
0280: 78 74 2c 20 72 61 77 20 62 69 6e 61 72 79 29 2e  xt, raw binary).
0290: 20 20 57 69 74 68 69 6e 20 54 63 6c 2c 20 74 68    Within Tcl, th
02a0: 65 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 69 6e  e information in
02b0: 20 74 68 65 20 66 69 6c 65 73 20 69 73 20 61 76   the files is av
02c0: 61 69 6c 61 62 6c 65 20 66 6f 72 20 75 73 65 20  ailable for use 
02d0: 61 73 20 61 20 53 65 67 6d 65 6e 74 20 4c 69 73  as a Segment Lis
02e0: 74 2c 20 69 2e 65 2e 20 61 20 6c 69 73 74 20 6f  t, i.e. a list o
02f0: 66 20 73 65 67 6d 65 6e 74 73 20 69 6e 20 73 74  f segments in st
0300: 61 72 74 41 64 64 72 65 73 73 2f 64 61 74 61 4c  artAddress/dataL
0310: 69 73 74 20 70 61 69 72 73 2e 20 20 54 68 65 20  ist pairs.  The 
0320: 62 69 6e 63 6f 6e 76 65 72 74 20 73 74 72 75 63  binconvert struc
0330: 74 75 72 65 20 61 6e 64 20 69 6e 74 65 72 66 61  ture and interfa
0340: 63 65 20 68 61 76 65 20 68 6f 6f 6b 73 20 66 6f  ce have hooks fo
0350: 72 20 61 64 64 69 6e 67 20 6e 65 77 20 66 6f 72  r adding new for
0360: 6d 61 74 73 20 74 72 61 6e 73 70 61 72 65 6e 74  mats transparent
0370: 6c 79 2c 20 77 69 74 68 6f 75 74 20 68 61 76 69  ly, without havi
0380: 6e 67 20 74 6f 20 6d 6f 64 69 66 79 20 74 68 65  ng to modify the
0390: 20 70 61 63 6b 61 67 65 20 6f 72 20 72 65 6c 65   package or rele
03a0: 61 73 65 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20  ase information 
03b0: 61 62 6f 75 74 20 70 72 69 76 61 74 65 20 66 6f  about private fo
03c0: 72 6d 61 74 73 2e 0d 0a 0d 0a 23 23 23 20 44 6f  rmats.....### Do
03d0: 63 75 6d 65 6e 74 61 74 69 6f 6e 0d 0a 0d 0a 42  cumentation....B
03e0: 69 6e 63 6f 6e 76 65 72 74 20 69 73 20 77 72 69  inconvert is wri
03f0: 74 74 65 6e 20 66 6f 72 20 75 73 65 20 77 69 74  tten for use wit
0400: 68 20 74 68 65 20 5b 70 79 63 63 6f 5d 28 68 74  h the [pycco](ht
0410: 74 70 73 3a 2f 2f 70 79 63 63 6f 2d 64 6f 63 73  tps://pycco-docs
0420: 2e 67 69 74 68 75 62 2e 69 6f 2f 70 79 63 63 6f  .github.io/pycco
0430: 2f 29 20 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e  /) documentation
0440: 20 67 65 6e 65 72 61 74 6f 72 20 69 6e 20 61 20   generator in a 
0450: 6c 69 74 65 72 61 74 65 20 70 72 6f 67 72 61 6d  literate program
0460: 6d 69 6e 67 20 73 74 79 6c 65 2e 20 20 47 65 6e  ming style.  Gen
0470: 65 72 61 74 65 64 20 64 6f 63 75 6d 65 6e 74 61  erated documenta
0480: 74 69 6f 6e 20 63 61 6e 20 62 65 20 66 6f 75 6e  tion can be foun
0490: 64 20 5b 68 65 72 65 20 66 6f 72 20 74 68 65 20  d [here for the 
04a0: 6d 61 69 6e 20 65 6e 67 69 6e 65 5d 28 68 74 74  main engine](htt
04b0: 70 73 3a 2f 2f 63 68 69 73 65 6c 61 70 70 2e 63  ps://chiselapp.c
04c0: 6f 6d 2f 75 73 65 72 2f 65 72 69 6b 6a 2f 72 65  om/user/erikj/re
04d0: 70 6f 73 69 74 6f 72 79 2f 62 69 6e 63 6f 6e 76  pository/binconv
04e0: 65 72 74 2f 64 6f 63 2f 74 69 70 2f 64 6f 63 73  ert/doc/tip/docs
04f0: 2f 62 69 6e 63 6f 6e 76 65 72 74 2e 68 74 6d 6c  /binconvert.html
0500: 29 20 61 6e 64 20 5b 68 65 72 65 20 66 6f 72 20  ) and [here for 
0510: 61 6c 6c 20 66 69 6c 65 73 5d 28 68 74 74 70 73  all files](https
0520: 3a 2f 2f 63 68 69 73 65 6c 61 70 70 2e 63 6f 6d  ://chiselapp.com
0530: 2f 75 73 65 72 2f 65 72 69 6b 6a 2f 72 65 70 6f  /user/erikj/repo
0540: 73 69 74 6f 72 79 2f 62 69 6e 63 6f 6e 76 65 72  sitory/binconver
0550: 74 2f 64 6f 63 2f 74 69 70 2f 64 6f 63 73 2f 69  t/doc/tip/docs/i
0560: 6e 64 65 78 2e 68 74 6d 6c 29 2e 0d 0a 0d 0a 23  ndex.html).....#
0570: 23 23 20 49 6e 73 74 61 6c 6c 61 74 69 6f 6e 0d  ## Installation.
0580: 0a 0d 0a 44 6f 77 6e 6c 6f 61 64 20 74 68 65 20  ...Download the 
0590: 74 65 61 63 75 70 20 66 69 6c 65 20 74 6f 20 79  teacup file to y
05a0: 6f 75 72 20 6c 6f 63 61 6c 20 73 79 73 74 65 6d  our local system
05b0: 2e 20 20 46 72 6f 6d 20 61 20 63 6f 6d 6d 61 6e  .  From a comman
05c0: 64 20 6c 69 6e 65 20 69 6e 20 74 68 61 74 20 64  d line in that d
05d0: 69 72 65 63 74 6f 72 79 3a 0d 0a 0d 0a 20 20 20  irectory:....   
05e0: 20 74 65 61 63 75 70 20 69 6e 73 74 61 6c 6c 20   teacup install 
05f0: 62 69 6e 63 6f 6e 76 65 72 74 2e 74 6d 0d 0a 0d  binconvert.tm...
0600: 0a 4e 4f 54 45 3a 20 49 20 68 61 76 65 20 6e 6f  .NOTE: I have no
0610: 74 20 72 65 6c 65 61 73 65 64 20 74 68 69 73 20  t released this 
0620: 70 61 63 6b 61 67 65 20 69 6e 20 74 65 61 63 75  package in teacu
0630: 70 20 66 6f 72 6d 61 74 20 79 65 74 2e 20 20 54  p format yet.  T
0640: 6f 20 75 73 65 2c 20 64 6f 77 6e 6c 6f 61 64 20  o use, download 
0650: 61 6c 6c 20 66 69 6c 65 73 20 69 6e 74 6f 20 61  all files into a
0660: 20 64 69 72 65 63 74 6f 72 79 20 69 6e 20 79 6f   directory in yo
0670: 75 72 20 54 43 4c 4c 49 42 50 41 54 48 2e 20 20  ur TCLLIBPATH.  
0680: 49 20 70 6c 61 6e 20 74 6f 20 67 65 6e 65 72 61  I plan to genera
0690: 74 65 20 61 6e 20 69 6e 69 74 69 61 6c 20 74 65  te an initial te
06a0: 61 63 75 70 20 66 69 6c 65 20 6f 6e 63 65 20 49  acup file once I
06b0: 27 76 65 20 74 65 73 74 65 64 20 74 68 65 20 66  've tested the f
06c0: 69 6e 61 6c 20 66 6f 72 6d 61 74 2c 20 70 72 6f  inal format, pro
06d0: 62 61 62 6c 79 20 69 6e 20 44 65 63 65 6d 62 65  bably in Decembe
06e0: 72 20 32 30 31 37 2e 0d 0a 0d 0a 23 23 23 20 45  r 2017.....### E
06f0: 78 61 6d 70 6c 65 20 75 73 61 67 65 0d 0a 0d 0a  xample usage....
0700: 20 20 20 20 70 61 63 6b 61 67 65 20 72 65 71 75      package requ
0710: 69 72 65 20 62 69 6e 63 6f 6e 76 65 72 74 0d 0a  ire binconvert..
0720: 20 20 20 20 0d 0a 20 20 20 20 23 20 2e 2e 2e 6c      ..    # ...l
0730: 61 74 65 72 20 69 6e 20 74 68 65 20 63 6f 64 65  ater in the code
0740: 2e 2e 2e 0d 0a 20 20 20 20 0d 0a 20 20 20 20 73  .....    ..    s
0750: 65 74 20 73 65 67 6d 65 6e 74 6c 69 73 74 20 5b  et segmentlist [
0760: 62 69 6e 63 6f 6e 76 65 72 74 20 72 65 61 64 66  binconvert readf
0770: 69 6c 65 20 73 72 65 63 20 69 6e 70 75 74 46 69  ile srec inputFi
0780: 6c 65 2e 53 32 38 5d 0d 0a 20 20 20 20 73 65 74  le.S28]..    set
0790: 20 6e 65 77 73 65 67 6d 65 6e 74 6c 69 73 74 20   newsegmentlist 
07a0: 5b 70 72 6f 63 65 73 73 5f 62 69 6e 5f 64 61 74  [process_bin_dat
07b0: 61 20 24 73 65 67 6d 65 6e 74 6c 69 73 74 5d 0d  a $segmentlist].
07c0: 0a 20 20 20 20 62 69 6e 63 6f 6e 76 65 72 74 20  .    binconvert 
07d0: 77 72 69 74 65 66 69 6c 65 20 69 31 36 68 65 78  writefile i16hex
07e0: 20 24 6e 65 77 73 65 67 6d 65 6e 74 6c 69 73 74   $newsegmentlist
07f0: 20 6f 75 74 70 75 74 46 69 6c 65 2e 68 65 78 0d   outputFile.hex.
0800: 0a 0d 0a 23 23 23 20 45 78 74 65 6e 64 69 6e 67  ...### Extending
0810: 20 74 6f 20 4e 65 77 20 46 6f 72 6d 61 74 73 0d   to New Formats.
0820: 0a 0d 0a 42 69 6e 63 6f 6e 76 65 72 74 20 69 73  ...Binconvert is
0830: 20 77 72 69 74 74 65 6e 20 69 6e 20 61 20 6d 6f   written in a mo
0840: 64 75 6c 61 72 20 77 61 79 20 74 68 61 74 20 61  dular way that a
0850: 6c 6c 6f 77 73 20 65 61 73 79 20 65 78 74 65 6e  llows easy exten
0860: 73 69 6f 6e 20 74 6f 20 6e 65 77 20 66 6f 72 6d  sion to new form
0870: 61 74 73 2e 20 20 49 66 20 79 6f 75 20 63 72 65  ats.  If you cre
0880: 61 74 65 20 61 20 66 6f 72 6d 61 74 20 64 72 69  ate a format dri
0890: 76 65 72 20 66 6f 72 20 61 20 70 75 62 6c 69 63  ver for a public
08a0: 6c 79 2d 64 6f 63 75 6d 65 6e 74 65 64 20 66 6f  ly-documented fo
08b0: 72 6d 61 74 2c 20 49 20 65 6e 63 6f 75 72 61 67  rmat, I encourag
08c0: 65 20 79 6f 75 20 74 6f 20 73 75 62 6d 69 74 20  e you to submit 
08d0: 69 74 20 74 6f 20 62 65 20 61 64 64 65 64 20 74  it to be added t
08e0: 6f 20 74 68 65 20 62 61 73 65 20 70 61 63 6b 61  o the base packa
08f0: 67 65 2e 20 20 42 75 74 20 65 76 65 6e 20 69 66  ge.  But even if
0900: 20 79 6f 75 72 20 66 6f 72 6d 61 74 20 69 73 20   your format is 
0910: 70 72 6f 70 72 69 65 74 61 72 79 2c 20 79 6f 75  proprietary, you
0920: 20 63 61 6e 20 65 61 73 69 6c 79 20 65 78 74 65   can easily exte
0930: 6e 64 20 62 69 6e 63 6f 6e 76 65 72 74 20 74 6f  nd binconvert to
0940: 20 72 65 61 64 20 61 6e 64 20 77 72 69 74 65 20   read and write 
0950: 74 68 61 74 20 66 6f 72 6d 61 74 20 69 6e 20 65  that format in e
0960: 78 61 63 74 6c 79 20 74 68 65 20 73 61 6d 65 20  xactly the same 
0970: 77 61 79 20 61 73 20 61 6e 79 20 73 75 70 70 6f  way as any suppo
0980: 72 74 65 64 20 66 6f 72 6d 61 74 2c 20 75 73 69  rted format, usi
0990: 6e 67 20 5b 74 68 65 20 70 72 6f 76 69 64 65 64  ng [the provided
09a0: 20 69 6e 74 65 72 66 61 63 65 5d 28 68 74 74 70   interface](http
09b0: 73 3a 2f 2f 63 68 69 73 65 6c 61 70 70 2e 63 6f  s://chiselapp.co
09c0: 6d 2f 75 73 65 72 2f 65 72 69 6b 6a 2f 72 65 70  m/user/erikj/rep
09d0: 6f 73 69 74 6f 72 79 2f 62 69 6e 63 6f 6e 76 65  ository/binconve
09e0: 72 74 2f 64 6f 63 2f 74 69 70 2f 64 6f 63 73 2f  rt/doc/tip/docs/
09f0: 62 69 6e 63 6f 6e 76 65 72 74 2e 68 74 6d 6c 23  binconvert.html#
0a00: 61 64 64 70 61 72 73 65 72 29 2e 20 20 0a 5a 20  addparser).  .Z 
0a10: 31 61 37 39 61 33 36 30 35 36 63 61 64 33 37 32  1a79a36056cad372
0a20: 39 32 66 65 37 34 33 31 64 37 33 65 38 36 33 39  92fe7431d73e8639
0a30: 0a                                               .