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

  
 
  

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

NAME
     minipro  - free and open command-line program for controlling chip program-
     mers by Xgecu

DESCRIPTION
     minipro is an Open Source tool intended to become a complete cross-platform
     replacement for the proprietary utility from Xgecu.  Currently it	supports
     more  than  13000	target devices -- including AVRs, PICs as well as a huge
     number of other microcontrollers and various memory chips.

     minipro currently supports the TL866A/CS, TL866II+, and T48.   Support  for
     the T56 and T76 is very experimental.

GENERAL OPTIONS
     -l, --list
	    List all supported devices.

     -L, --search <search>
	    List devices like this.

     -q, --programmer <version>
	    Force a programmer version when listing devices.
	    Possible values (case insensitive): TL866A TL866II T48 T56 T76.

     -Q, --query_supported
	    Query supported programmers.

     -k, --presence_check
	    Query the programmer version currently connected.

     -d, --get_info <device>
	    Show device information.

     -D, --read_id
	    Just  read	the  chip ID and do nothing else (like reading the whole
	    chip contents).  This is for use in scripts where you have for exam-
	    ple several similar chips with different IDs and want  to  check  if
	    the  currently  inserted  chip  is one in your list of allowed ones.
	    Also useful to detect if a chip is inserted at all when using the -y
	    option.

     -r, --read <filename>
	    Read from the device and write the contents to this file.  See NOTES
	    ON MEMORY TYPES below.

     -w, --write <filename>
	    Write to the device using this file.

     -m, --verify <filename>
	    Verify memory in the device against this file.

     -c, --page <type>
	    Specify memory type (optional).
	    Possible values: code, data, config, user, calibration.
	    The calibration byte(s) are Atmel AVR family specific and are  read-
	    only.  User memory type is implemented as user row or encryption ta-
	    ble  on  some  devices like Atmel AT89S8253.  Use -c user to read or
	    write this page.  See NOTES ON MEMORY TYPES below.

     -f, --format <format>
	    Specify file format.  Possible values: ihex,  srec.   See  NOTES  ON
	    FILE FORMATS below.

     -b, --blank_check
	    Blank check.
	    Optionally, you can use -c to specify a memory type.

     -a <type>, --auto_detect
	    Auto-detect SPI 25xx devices.
	    Possible values: 8, 16.

     -z, --pin_check
	    Check for bad pin contact.

     -e, --skip_erase
	    Do NOT erase device.

     -E, --erase
	    Just erase device.

     -o <option>
	    Specify  various  options.	 For  multiple	options, use -o multiple
	    times.  For example: -o vpp=12 -o vcc=5.5 or long options:	--vpp=12
	    --vcc=5.5
	    Valid options are:

	    -o vpp=<value>, --vpp <value>
		   Set the programming voltage.
		   For TL866A/CS: 10, 12.5, 13.5, 14, 15.5, 16, 17, 18, 21.
		   For	TL866II+:  9, 9.5, 10, 11, 11.5, 12, 12.5, 13, 13.5, 14,
		   14.5, 15.5, 16, 16.5, 17, 19.

	    -o vdd=<value>, --vdd <value>
		   Set the VDD write voltage (3.3, 4, 4.5, 5, 5.5, 6.5).

	    -o vcc=<value>, --vcc <value>
		   For setting the VCC verify voltage  (3.3,  4,  4.5,	5,  5.5,
		   6.5).
		   For setting the VCC logic test voltage (1.8, 2.5, 3.3, 5).

	    -o pulse=<value>, --pulse <value>
		   Programming pulse delay (0-65535 usec).

	    -o speed=<value>, --speed <value>
		   Set T48 SPI clock frequency in MHz (3, 7.5, 15, 30).

     -u, --unprotect
	    Disable protection before programming.

     -P, --protect
	    Enable protection after programming.

     -v, --skip_verify
	    Do NOT verify after write.

     -p, --device <device>
	    Specify device (use quotes to avoid mangling by the shell).

     -T, --logic_test
	    Logic  IC  test.   Erroneous  states are reported with a "-" (minus)
	    sign next to the expected pin state.

     -i, --icsp_vcc
	    Use ICSP.  Not useful for TL866CS.

     -I, --icsp_no_vcc
	    Use ICSP (without enabling Vcc).  Not useful for TL866CS.

     -s, --no_size_error
	    Do NOT error on file size mismatch (only a warning).

     -S, --no_size_warning
	    No warning message for file size mismatch (can't combine with -s).

     -x, --skip_id
	    Do NOT attempt to read ID (only valid in read mode).

     -y, --no_id_error
	    Do NOT error on ID mismatch

     -V, --version
	    Show version information

     -t, --hardware_check
	    Start hardware check

     -F, --update <filename>
	    Update firmware.  See UPDATING FIRMWARE below.

     --infoic <filename>
	    Set custom infoic.xml file.

     --logicic_out <filename>
	    Write the results of a logic IC test to this file.

     --logicic <filename>
	    Set custom logicic.xml file.

     --algorithms <filename>
	    Set custom algorithm.xml file.  See ALGORITHMS below.

     -h, --help
	    Show brief help and quit.

NOTES FOR READING AND WRITING
     If -c is omitted and -r is specified then the code,  data	(if  applicable)
     and  config (if applicable) will be written to filename.$ext, filename.eep-
     rom.bin and filename.fuses.conf correspondingly. If -c is omitted and -w is
     specified, then -c code is assumed.
     By  default, when in write mode and -c config is  specified,  no  erase  is
     performed to preserve the already programmed data.
     However, you can force an erase in this case with the -E option.

     --fuses, --uid, --lock flags will read/write/verify/blank check fuses, user
     id  or  lock  config section. User ID is Microchip PIC MPU family specific.
     For example: minipro -p atmega32 -b --fuses will check if fuse bits are  in
     their default state (that is, blank).

     Use --pulse, --vpp, --vdd, --vcc or -o <option> to specify various program-
     ming  options.  These  options  are available only in write mode ( -w ) and
     only for some devices like UV erasable EPROMs and GAL/ATF PLDs.
     Also you can specify --vcc or -o vcc with -T  to  specify	the  logic  test
     voltage.
     Use -d <device> to view if those options are supported.

NOTES ON FILE FORMATS
     If the -f or --format options are not used when reading, the resulting file
     will be saved as a raw binary file.

     If  the ihex format is chosen and the data size is 64 kilobytes or smaller,
     the file will be saved in ihex8 format.  Just plain hex records are used --
     no segment/linear address records are inserted.

     If the data size exceeds 64 kilobytes, then the ihex32 format is used.  The
     ihex16 format is not used when reading chips.  The same  strategy	is  used
     for the Motorola srecord format.

     When  writing chips, the format is automatically detected.  It is therefore
     not necessary to use the -f or --format options.  The exact Intel hex  for-
     mat (ihex8, ihex16, or ihex32) are also automatically detected.

ALGORITHMS
     All the Xgecu programmers contain an FPGA chip (Field Programmable Gate Ar-
     ray)  which  does most of the low-level work of reading and writing various
     chips.  These FPGAs require bitstreams (algorithms)  to  be  loaded  before
     they're  able  to do any work.  The TL866A/CS, TL866II+, and T48 keep their
     algorithms on a memory chip on the programmer's circuit boards and are  up-
     dated  whenever  the  programmer's firmware is updated.  The T56 and T76 is
     different in that it requires its algorithms to be loaded from the control-
     ling program.  Those algorithms are installed by the official  Xgecu  soft-
     ware  to  the host computer.  Because of the copyright on that package, the
     algorithms cannot be included in the minipro distribution.   Fortunately  a
     script for doing that is provided.

     To  allow	minipro to get needed algorithms into a T56 and T76 programmers,
     dump-alg-minipro.bash is provided to download a copy of the official  Xgecu
     software, extract the algorithms, and pack those data into "algorithm.xml".
     If  the  algorithms  were	not installed right after minipro was installed,
     this script can be used directly.	 It  should  have  been  installed  when
     minipro  was installed by whatever means.	First invoke minipro with the -V
     or --version option and see what directory is listed for "Share dir".  Sup-
     pose it's "/usr/local/share/minipro".  Invoke the script like this:

     dump-alg-minipro.bash /usr/local/share/minipro

     The script will then do its thing and install "algorithm.xml" to its proper
     place.

UPDATING FIRMWARE
     Firmware update files can be obtained from the manufacturer's website:
     http://www.xgecu.com/en/

     They can also be downloaded and extracted from the following repository:
     https://github.com/Kreeblah/XGecu_Software

     For the TL866A/CS, use the "update.dat" file.
     For the TL866IOI+, use the "updateII.dat" file.
     For the T48, use the "UpdateT48.dat" file.
     For the T56, use the "updateT56.dat" file.
     For the T76, use the "updateT76.dat" file.

     -F <filename>
	    Update firmware.  minipro will verify the firmware file and  ask  if
	    you wish to proceed with writing the file to the programmer.

NOTES ON MEMORY TYPES
     If  -c  is  omitted and -r is specified then the code, data (if applicable)
     and config (if applicable) will be written to filename.$ext,  filename.eep-
     rom.bin and filename.fuses.conf correspondingly. If -c is omitted and -w is
     specified, then -c code is assumed.

ADDING CUSTOM CHIPS
     Custom chips can be added in the infoic.xml file, but it must be noted that
     the  since  content is generated from the infoic.dll file, the custom chips
     should be added in a proper section of the XML file.

     Add any new chip as an <ic> section in a  proper  <custom	name="MyCustom">
     section of the file.

     It  must be also noted that the pinout is hardcoded in the device firmware,
     so if the chip has a custom pinout, use of a bit-banging technique  is  re-
     quired, limiting the functionality to only reading it as a PROM type.

     In  this  case,  the  <protocol_id> value must be set to 0x80000001 and the
     <variant> value must be set to the pinout value defined in  the  prom_table
     array in the prom.c file.

     For example, the D2364C PROM has a slightly different pinout than any DIP24
     PROM,  thus the pins have been exchanged in the prom.c file. The index 0x0b
     has been assigned to this pinout. So the resulting XML entry is:

	 <custom name="NEC">
	       <ic name="D2364C@DIP24"
	       type="1"
	       protocol_id="0x80000001"
	       variant="0x0c"
	       read_buffer_size="0x10"
	       write_buffer_size="0x00"
	       code_memory_size="0x2000"
	       data_memory_size="0x00"
	       data_memory2_size="0x00"
	       page_size="0x0000"
	       pages_per_block="0x0000"
	       chip_id="0x00000000"
	       voltages="0x0900"
	       pulse_delay="0x0000"
	       flags="0x00000000"
	       chip_info="0x0000"
	       pin_map="0x0017"
	       blank_value = "0x00"
	       package_details="0x18000000"
	       config="NULL"
	   />
	 </custom>

PIPES
     minipro supports reading and writing to standard input and output.   To  do
     this, use a dash (-) as a filename for the -w or -r options.

     For example:

     head -c 256k < /dev/urandom | srec_cat - -bin -o - -intel -Address_Length=4
     -obs=16 | minipro -p w49f002u -w-

     This is how the hex/srec parsers were tested for reading from stdin.  256kb
     of  random binary data is generated then converted from binary to intel hex
     by the srec_cat utility. Finally  the  converted  data  is  passed  to  our
     minipro which will read this data, convert it to binary by decoding the in-
     tel hex format from stdin and write it to the specified chip.  Note the -r-
     which  tells  it  to  read from stdin instead from a regular file.  This is
     just a test command to test the ihex/srec parsers.  Don't use this in  real
     life (convert from binary to ihex then from ihex to binary).

     You can also read a chip and write the data to stdout like this:

     minipro -p w49f002u -r- -f ihex

     You  can then pass the output to another command line tool with | for other
     processing, etc.

FUSES
     Fuses can be read and written with the -c config option. Fuse data  is  ex-
     changed  in a text format. When writing fuses all fuses on your device must
     be assigned a value. To see what fuses are supported by your device use  -r
     with  -c  config  to get your current fuse values. This also shows you what
     the text format looks like.

EXAMPLES
     minipro -p 7404 -T
     Check whether a 74(LS/HC/...)04 hex NOT gate chip works correctly.

     minipro -p AT29C256@DIP28 -w foobar.bin
     Write the contents of foobar.bin to an AT29C256 256 kilobit  (32-kilobytes)
     electrically-erasable Flash EPROM.  Remember to put single or double quotes
     around  the  device name to prevent the shell from interpreting the "@" (at
     sign).

CAVEATS
     The TL866A and TL866CS programmers appear to have a firmware bug such  that
     if  not  quite enough current is provided to them from a USB port, then the
     programmer will fail to initialize itself or reset itself after  an  opera-
     tion.   This  problem  seems  to  go hand-in-hand with newer USB 3.0 / xHCI
     ports and can be avoided by using a powered hub.

AUTHOR
     minipro was created by Valentin Dudouyt in 2014.	Many  others  have  con-
     tributed  code  and  bug  reports.  Development is currently coordinated by
     David Griffith.

HARDWARE
     The TL866A/CS, TL866II+, T48, T56 and T76 chip programmers are  distributed
     by Xgecu, formerly Autoelectric.  Its website is
     http://www.xgecu.com/en/

DISTRIBUTION
     The canonical repository for minipro is at GitLab:
     https://gitlab.com/DavidGriffith/minipro/

     It  is  distributed  under  the GNU General Public License version 3 or (at
     your option) any later version.
     https://www.gnu.org/licenses/gpl-3.0.en.html

     This software is offered as-is with no warranty or liability.  If you  find
     a bug or would like minipro to do something it doesn't currently do, please
     visit the above GitLab website and report your concerns.

				   2025-04-12			      MINIPRO(1)

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

home | help