From 20020524 on, see the ChangeLog file. The project is now hosted on http://savannah.gnu.org/projects/uisp/ . Changes in uisp-20020524: - add (GPL) copyright notices to all files, as required before the project can be added to savannah.gnu.org (again, thanks to Theodore A. Roth) - add preliminary ATmega8515 and ATmega162 support (untested, not yet supported by pavr/stk500, just added signature bytes to the list) - add a few items to the TODO list :) Changes in uisp-20020420: - add preliminary ATtiny26 and ATmega32 support (untested, not yet supported by pavr/stk500) - another parallel port programmer (MAXI - http://www.invtech.com.au/), thanks to Hamish Moffatt - fix upload/verify of >64K srec/ihex files, fix STK500 swapped signature bytes, and support case-insensitive AVR device names, thanks to Theodore A. Roth - ATtiny15 has a calibration byte, too (was not in an older version of the datasheet), thanks to Alexander Popov Changes in uisp-20020303: - add support for fuse bits with avr910/pavr programmers, and fix NULL pointer segfaults with no -dprog, thanks to Bryce Denney Changes in uisp-20011025: - DASA2 (aka PonyProg interface) fixes (thanks to Uwe Bonnes): AVR RESET# = inverted TXD (so sending BREAK resets the AVR) -dinvert=sck,miso,mosi,reset (invert each specified line) -dt_reset=N (reset inactive high time in microseconds) - add S2/S3 record support necessary for ATmega103 (thanks to Uwe Bonnes) - add ATmega64 to the device table (untested) - read/write ATmega64/128 extended fuse bits (untested, no pavr support yet) - tested on ATmega323 (thanks to Lars Thore W. Aarrestad for sending me samples) Changes in uisp-20011006: - add ATmega103-old back (bad sig bytes), these chips still exist :) - comment out free(argv_ok) to work around a segfault Changes in uisp-20010909: - add preliminary ATmega8/ATmega16/ATmega128 support based on recently released datasheets (not tested, no extended fuse bits, no pavr yet) - add support for yet another parallel port cable (DT006) - include pavr firmware source (hacked a little by me) as part of uisp (should also work in existing old "Atmel low cost" programmers after 1200 -> 2313 upgrade, assuming the original 1200 was in a socket...) Changes in uisp-20010818: - clear O_NONBLOCK flag with fcntl() instead of re-opening serial ports (failed with "Permission denied" on Cygwin, reported by Jason Kyle) - enable direct serial support only if TIOCMGET is defined, remove dummy TIOCM* defines added for Cygwin port Changes in uisp-20010813: - STK500 support (not yet complete, reverse-engineered communication protocol), thanks to Daniel Berntsson - Win9x/ME/NT/2K (Cygwin) port (needs the giveio.sys driver for direct I/O port access), thanks to Dean Ferreyra Changes in uisp-20010805: - fix recent termios changes (forgot to clear CRTSCTS and set VMIN, VTIME), also now set termios modes for dasa, dasa2 (still untested) - rename ATmega32 to ATmega323 (now that the official datasheet is out) - accept -dprog=pavr (for now as alias for -dprog=avr910, but may include more features in the future, see http://avr.jpk.co.nz/pavr/pavr.html) Changes in uisp-20010715: - rename AVR3 to FBPRG (-dprog=fbprg), as it seems that smartcard development boards might have illegal uses in some countries ;) - fix avr910 page write for ATmega163 (please test ATmega103 too!) - save/restore termios modes on serial ports, please test - change -datmel to -dprog=avr910 - uisp --help now prints to stdout, not stderr - change #include to #include - #include in Terminal.C - fix -dspeed handling in Serial.C Changes in uisp-20010701: - fix compile with g++ 3.0 - fix Programming Enable error message after 32 retries - add yet another parallel port interface (FBPRG/AVR3) - more about --download of=file in uisp --help Changes in uisp-20010616: - hopefully fix serial support (can't test), broken by my 20010211 -dpart changes, in code common to both serial and parallel modes that use different AVR device names :( - CHANGES -> CHANGES.old, README -> CHANGES, TODO - document FBPRG interface (not yet supported), and possible new design using tables to make adding these new cables easier, in DAPA.C comments Changes in uisp-20010501: - direct serial support: -dlpt=/dev/ttyS0 -dprog=dasa (or dasa2, see help) warning: completely untested, might or might not work - incompatible change: programmer type (for all these dummy parallel and serial programmers) is specified with -dprog=... (-dstk200 etc. is gone) - more portability changes (please test especially on non-x86 Linux and FreeBSD, and send me patches if I broke something...) - fix AT90S2323 signature byte (0x02 not 0x04) - increase SCK delay (4us to 5us) for devices with slow RC oscillators - don't skip 0xFF for page write - fix a few typos - remove OLD_DELAY_LOOP - longer timeout for -datmel (500ms -> 1s) Changes in uisp-20010211: - now available from http://www.amelek.gda.pl/avr/uisp/ and officially maintained by me (many thanks to Uros for all previous work) - device type can be specified if auto-detection fails, necessary for AT90S1200 and other parts with erased signature bytes: -dpart=at90s1200 - assume -dno-retry -dno-poll for AT90S1200 (data polling should work according to the datasheet, but bug reports indicate it doesn't, and 1K of program memory doesn't take that long to write anyway...) - support for yet another AVR ISP parallel port cable (not tested), based on information from http://www.bsdhome.com/avrprog/ - FreeBSD support (not tested, uncomment -DHAVE_PPI in the Makefile and tell me if it works, or send me a patch if it doesn't :) Changes in uisp-20001216: - ATmega163 now supported, and tested (many thanks to Odd Jostein Svendsli of Atmel Norway for help - sending me two samples of these new chips) - reading Flash and EEPROM contents to a srec file (--download of=file) - read/write fuse bits and boot lock bits, read calibration byte (use --segment=fuse, address 0 = fuse low, 1 = fuse high, 2 = calibration, 3 = lock bits: 1 1 BLB12 BLB11 BLB02 BLB01 LB2 LB1) - data polling with page write, if supported by device - added timer{add,sub,cmp} macros for systems that don't have them - security fix, drop privileges before opening the serial device too (warning: installation setuid root still not recommended, these are just random fixes, and not a complete review for security holes; using ppdev instead of direct I/O is highly recommended) Changes in uisp-20001125: - fix a bug where erasing a locked device (not possible to identify) might fail, now always wait 200 ms for chip erase - add support for "Atmel AVR ISP" parallel port cable - various cleanups (duplicated code to report statistics, etc.) Changes in uisp-20001118: - make it possible to compile without direct I/O port access for non-PC architectures, but still allow parallel port access via /dev/parportX (Linux ppdev driver) - include the latest ppdev driver (kernel patch) for Linux 2.2.17 - security: drop privileges before opening /dev/parportX (only matters if accidentally installed setuid root - still not recommended!) - data polling statistics reworked: min/avg/max ms/byte (so you can compare them with datasheet specs - maybe it helps in detecting chips that were programmed too many times) - fix a longstanding bug in data polling that caused random programming failures (could be worked around by specifying longer t_wd_flash - no, that really wasn't the chips failing :) - update write timing specs from the current datasheets (flash 8ms -> 4ms for most chips, programs a bit faster - now that the above bug is gone) - add more device codes for "Atmel low cost" (serial port) programmer (still looking for updated avr910.asm - it must exist somewhere, as avrprog.exe from AVR Studio claims to support all devices...) - started work on fuse bits (not finished yet), will be needed for ATmega163 (internal RC oscillator enabled by default) Changes in uisp-20001014: - fix some stupid bugs (SCK delay, writing lock bits) - avoid "invalid parameter" errors for -dt_wd_flash etc. if device locked - updated help and version information Changes in uisp-20000930: - compiles with g++ 2.95.2 (tested on Debian 2.2), does not depend on kernel header files for parallel port bit definitions - as in PonyProg, support for the "ppdev" Linux driver (included in pre-2.4.0 kernels, available separately for 2.2.x - please bug Alan to add it to 2.2.18 :), as well as the old direct I/O port access (works with any kernel, but requires root privileges) - more reliable delays on very fast machines, using gettimeofday() (programming may be very slow on <=486 but should work otherwise) - support for more new devices, such as ATmega161 (not tested) - support for programming lock bits with --lock option (currently only both at the same time, and no ATmega161 BLBxx bits yet) - when not programming, try to disable (PS/2) parallel port data outputs - this may allow cheap cables (no 74HC244 inside) to work if the ISP pins are also used for other things (not tested) - removed endian_bug backwards compatibility, various other cleanups