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

FreeBSD Manual Pages

  
 
  

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

NAME
       minipro	- free and open	command-line program for controlling chip pro-
       grammers	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 example several similar chips	with different IDs and want to
	      check  if	the currently inserted chip is one in your list	of al-
	      lowed 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 en-
	      cryption table on	some devices like  Atmel  AT89S8253.   Use  -c
	      user  to read or write this page.	 See NOTES ON MEMORY TYPES be-
	      low.

       -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  applica-
       ble) and	config (if applicable) will be written to filename.$ext, file-
       name.eeprom.bin and filename.fuses.conf correspondingly.	If -c is omit-
       ted 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 pro-
       gramming	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	there-
       fore  not necessary to use the -f or --format options.  The exact Intel
       hex format (ihex8, ihex16, or ihex32) are also automatically detected.

ALGORITHMS
       All the Xgecu programmers contain an FPGA chip (Field Programmable Gate
       Array) 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 cir-
       cuit  boards  and are updated whenever the programmer's firmware	is up-
       dated.  The T56 and T76 is different in that it requires	its algorithms
       to be loaded from the controlling program.  Those  algorithms  are  in-
       stalled	by  the	official Xgecu software	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 pro-
       vided.

       To allow	minipro	to get needed algorithms into a	T56 and	 T76  program-
       mers, dump-alg-minipro.bash is provided to download a copy of the offi-
       cial  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 di-
       rectory	is  listed  for	  "Share   dir".    Suppose   it's   "/usr/lo-
       cal/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  reposi-
       tory:
       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  applica-
       ble) and	config (if applicable) will be written to filename.$ext, file-
       name.eeprom.bin and filename.fuses.conf correspondingly.	If -c is omit-
       ted 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  cus-
       tom 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="MyCus-
       tom"> 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 required, 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_ta-
       ble 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 -Ad-
       dress_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  de-
       coding  the  intel  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
       exchanged 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  de-
       vice  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-kilo-
       bytes)  electrically-erasable  Flash  EPROM.  Remember to put single or
       double quotes around the	device name to prevent the shell  from	inter-
       preting 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 af-
       ter an operation.  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 distrib-
       uted 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.0.quarterly>

home | help