| MINIPRO(1) | General Commands Manual | MINIPRO(1) |
minipro - free and open command-line program for controlling chip programmers by Xgecu
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 is very experimental.
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.eeprom.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 programming 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.
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 format (ihex8, ihex16, or ihex32) are also automatically detected.
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 circuit boards and are updated whenever the programmer's firmware is updated. The T56 is different in that it requires its algorithms to be loaded from the controlling program. Those algorithms are installed 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 provided.
To allow minipro to get needed algorithms into a T58 programmer, 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". Suppose 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.
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.
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.eeprom.bin and filename.fuses.conf correspondingly. If -c is omitted and -w is specified, then -c code is assumed.
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 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_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>
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 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 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 device use -r with -c config to get your current fuse values. This also shows you what the text format looks like.
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).
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 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.
minipro was created by Valentin Dudouyt in 2014. Many others have contributed code and bug reports. Development is currently coordinated by David Griffith.
The TL866A/CS, TL866II+, T48, and T56 chip programmers are distributed by Xgecu, formerly Autoelectric. Its website is
http://www.xgecu.com/en/
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 |