-
Notifications
You must be signed in to change notification settings - Fork 149
/
Copy pathavrdude.conf.in
23618 lines (20817 loc) · 844 KB
/
avrdude.conf.in
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
# AVRDUDE Configuration File -*- text -*-
#
avrdude_conf_version = "@AVRDUDE_FULL_VERSION@";
# This file contains AVRDUDE's default configuration data describing
# programming hardware pinouts and part definitions. Normally, it
# requires AVRDUDE be of the same or higher version than above string.
# AVRDUDE's -C command line option specifies the location of the
# configuration file. The -c option names the programmer configuration
# which must match one of the entry's id parameter. The -p option
# identifies which part AVRDUDE is going to be programming and must
# match one of the parts' id parameters.
#
# DO NOT MODIFY THIS FILE. Modifications will be overwritten the next
# time a "make install" is run. For user-specific additions, use the
# "-C +filename" command line option.
#
# Possible entry formats are:
#
# programmer
# parent <id> # optional parent
# id = <id1> [, <id2> ... ] ; # <idN> are quoted strings
# desc = <description> ; # quoted string
# type = <type>; # programmer type, quoted string
# # list known types with -c ?type
# prog_modes = PM_<i/f> {| PM_<i/f>} # interfaces, eg, PM_SPM|PM_PDI (1)
# is_serialadapter = <yes|no> # programmer is also a serialadapter
# extra_features = HAS_<fea> {| HAS_<fea>} # extra features, eg, HAS_SUFFER (2)
# connection_type = parallel | serial | usb | spi
# baudrate = <num> ; # baudrate for avr910-programmer
# vcc = <pin1> [, <pin2> ... ] ; # pin number(s) (3)
# buff = <pin1> [, <pin2> ... ] ; # pin number(s)
# reset = <pin> ; # pin number
# sck = <pin> ; # pin number
# sdo|pico = <pin> ; # pin number
# sdi|poci = <pin> ; # pin number
# tck = <pin> ; # pin number
# tdi = <pin> ; # pin number
# tdo = <pin> ; # pin number
# tms = <pin> ; # pin number
# errled = <pin> ; # pin number
# rdyled = <pin> ; # pin number
# pgmled = <pin> ; # pin number
# vfyled = <pin> ; # pin number
# usbvid = <hexnum> ; # USB vendor ID
# usbpid = <hexnum> [, <hexnum> ...] ; # USB product ID (4)
# usbdev = <interface> ; # USB interface or other device info
# usbvendor = <vendorname> ; # USB Vendor Name
# usbproduct = <productname> ; # USB Product Name
# usbsn = <serialno> ; # USB Serial Number
# hvupdi_support = <num> [, <num>, ... ] ; # UPDI HV Variants Support
# ;
#
# # Notes
# #
# # (1) The following program modes are known:
# # - PM_SPM: Bootloaders, self-programming with SPM opcodes or NVM Controllers
# # - PM_TPI: Tiny Programming Interface (t4, t5, t9, t10, t20, t40, t102, t104)
# # - PM_ISP: SPI programming for In-System Programming (almost all classic parts)
# # - PM_PDI: Program and Debug Interface (xmega parts)
# # - PM_UPDI: Unified Program and Debug Interface
# # - PM_HVSP: High Voltage Serial Programming (some classic parts)
# # - PM_HVPP: High Voltage Parallel Programming (most non-HVSP classic parts)
# # - PM_debugWIRE: Simpler alternative to JTAG (a subset of HVPP/HVSP parts)
# # - PM_JTAG: Joint Test Action Group standard (some classic parts)
# # - PM_JTAGmkI: Subset of PM_JTAG, older parts, Atmel ICE mkI
# # - PM_XMEGAJTAG: JTAG, some XMEGA parts
# # - PM_AVR32JTAG: JTAG for 32-bit AVRs
# # - PM_aWire: AVR32 parts
# #
# # (2) The following extra programmer features are known:
# # - HAS_SUFFER: Only present on Xplained Mini/Nano programmers.
# # The Super User Fantastic Feature Enable Register allows the user to modify
# # the behavior of the mEDBG programmer/debugger chip. See the Xplained Mini/Nano
# # documentation for more information
# # - HAS_VTARG_SWITCH: Programer has a programmable target power switch
# # - HAS_VTARG_READ: Programmer can read the target voltage
# # - HAS_VTARG_ADJ: Programmer has an adjustable target power source that can
# # be controlled with Avrdude
# # - HAS_FOSC_ADJ: Programmer has a programable frequency generator that
# # can clock an AVR directly through its XTAL1 pin
# # - HAS_VAREF_ADJ: Programmer has an adjustable analog reference voltage that
# # can be controlled with Avrdude
# #
# # (3) To invert the polarity of a pin use a tilde: ~<num>
# # To invert the polarity of all pins in a list use ~(<num1> [, <num2> ... ])
# #
# # (4) Not all programmer types can process a list of PIDs
#
# serialadapter # same as programmer albeit only for usb parameters
# parent <id> # optional serialadapter or programmer parent
# id = <id1> [, <id2> ... ] ; # <idN> are quoted strings
# desc = <description> ; # quoted string
# baudrate = <num> ; # optional default baudrate, eg, in .avrduderc
# usbvid = <hexnum> ; # USB vendor ID
# usbpid = <hexnum> [, <hexnum> ...] ; # list of USB product IDs
# usbsn = <serialno> ; # USB Serial Number in per-user .avrduderc
# ;
#
# part
# desc = <description> ; # quoted string, the long part name, eg, "ATmega328p"
# id = <id> ; # quoted string, normally an abbreviated part name
# variants = <str1> [, <str2> ...]; # quoted strings, each starts with "<alt-name>: ..."
# family_id = <id> ; # quoted string, eg, "megaAVR" or "tinyAVR"
# prog_modes = PM_<i/f> {| PM_<i/f>} # interfaces, eg, PM_SPM|PM_ISP|PM_HVPP|PM_debugWIRE
# mcuid = <num>; # unique id in 0..2039 for 8-bit AVRs
# archnum = <num>; # avr-gcc architecture number for the part
# n_interrupts = <num>; # number of interrupts, used for vector bootloaders
# n_page_erase = <num>; # if set, number of pages erased during SPM erase
# n_boot_sections = <num>; # Number of boot sections
# boot_section_size = <num>; # Size of (smallest) boot section, if any
# hvupdi_variant = <num> ; # numeric -1 (n/a) or 0..2
# stk500_devcode = <num> ; # numeric
# avr910_devcode = <num> ; # numeric
# is_at90s1200 = <yes/no> ; # AT90S1200 part
# signature = <num> <num> <num> ; # signature bytes
# usbpid = <num> ; # DFU USB PID
# chip_erase_delay = <num> ; # microseconds
# reset = dedicated | io ;
# retry_pulse = reset | sck ;
# # STK500 parameters (parallel programming IO lines)
# pagel = <num> ; # page load pin name in hex, eg, 0xD7
# bs2 = <num> ; # byte select 2 pin name in hex, eg, 0xA0
# serial = <yes/no> ; # can use serial programming
# parallel = <yes/no/pseudo> ; # can use parallel programming
# # STK500v2 parameters, to be taken from Atmel's ATDF files
# timeout = <num> ;
# stabdelay = <num> ;
# cmdexedelay = <num> ;
# synchloops = <num> ;
# bytedelay = <num> ;
# pollvalue = <num> ;
# pollindex = <num> ;
# predelay = <num> ;
# postdelay = <num> ;
# pollmethod = <num> ;
# hvspcmdexedelay = <num> ;
# # STK500v2 HV programming parameters, from ATDFs
# pp_controlstack = <num>, <num>, ... ; # PP only
# hvsp_controlstack = <num>, <num>, ... ; # HVSP only
# flash_instr = <num>, <num>, <num> ;
# eeprom_instr = <num>, <num>, ... ;
# hventerstabdelay = <num> ;
# progmodedelay = <num> ; # PP only
# latchcycles = <num> ;
# togglevtg = <num> ;
# poweroffdelay = <num> ;
# resetdelayms = <num> ;
# resetdelayus = <num> ;
# hvleavestabdelay = <num> ;
# resetdelay = <num> ;
# synchcycles = <num> ; # HVSP only
# chiperasepulsewidth = <num> ; # PP only
# chiperasepolltimeout = <num> ;
# chiperasetime = <num> ; # HVSP only
# programfusepulsewidth = <num> ; # PP only
# programfusepolltimeout = <num> ;
# programlockpulsewidth = <num> ; # PP only
# programlockpolltimeout = <num> ;
# # debugWIRE and/or JTAG ICE mkII parameters, also from ATDF files
# allowfullpagebitstream = <yes/no> ;
# enablepageprogramming = <yes/no> ;
# idr = <num> ; # IO addr of IDR (OCD) reg
# rampz = <num> ; # IO addr of RAMPZ reg
# spmcr = <num> ; # mem addr of SPMC[S]R reg
# eecr = <num> ; # mem addr of EECR reg
# eind = <num> ; # mem addr of EIND reg
# mcu_base = <num> ; # MCU control block in ATxmega devices
# nvm_base = <num> ; # NVM controller in ATxmega devices
# ocd_base = <num> ; # OCD module in AVR8X/UPDI devices
# syscfg_base = <num> ; # Chip revision ID in AVR8X/UPDI devices
# ocdrev = <num> ; # JTAGICE3 parameter from ATDF files
# pgm_enable = <instruction format> ;
# chip_erase = <instruction format> ;
# # parameters for bootloaders
# autobaud_sync = <num> ; # autobaud detection byte, default 0x30
# factory_fcpu = <num> ; # F_CPU in Hz on reset and factory-set fuses
#
# memory <memstr>
# paged = <yes/no> ; # yes/no (flash of classic parts only)
# offset = <num> ; # memory offset
# size = <num> ; # bytes
# page_size = <num> ; # bytes
# num_pages = <num> ; # numeric
# initval = <num> ; # factory setting of fuses and lockbits
# bitmask = <num> ; # bits used (only in fuses and lockbits)
# n_word_writes = <num> ; # TPI only: if set, number of words to write
# min_write_delay = <num> ; # micro-seconds
# max_write_delay = <num> ; # micro-seconds
# readback = <num> <num> ; # pair of byte values
# readback_p1 = <num> ; # byte value (first component)
# readback_p2 = <num> ; # byte value (second component)
# pwroff_after_write = <yes/no> ; # yes/no
# mode = <num> ; # STK500 v2 file parameter from ATDF files
# delay = <num> ; # "
# blocksize = <num> ; # "
# readsize = <num> ; # "
# read = <instruction format> ;
# write = <instruction format> ;
# read_lo = <instruction format> ;
# read_hi = <instruction format> ;
# write_lo = <instruction format> ;
# write_hi = <instruction format> ;
# loadpage_lo = <instruction format> ;
# loadpage_hi = <instruction format> ;
# writepage = <instruction format> ;
# ;
# ;
#
# If any of the above parameters are not specified, the default value
# of 0 is used for numerics (except for mcuid, hvupdi_variant, ocdrev,
# initval and bitmask, all of which default to -1, and for autobaud_sync
# which defaults to 0x30), or the empty string "" for string values. If
# a required parameter is left empty, AVRDUDE will complain. Almost all
# occurrences of numbers (with the exception of pin numbers and where
# they are separated by space, eg, in signature and readback) can also
# be given as simple expressions involving arithemtic and bitwise
# operators.
#
# Parts can also inherit parameters from previously defined parts
# using the following syntax. In this case specified integer and
# string values override parameter values from the parent part. New
# memory definitions are added to the definitions inherited from the
# parent. If, however, a new memory definition refers to an existing
# one of the same name for that part then, from v7.1, the existing
# memory definition is extended, and components overwritten with new
# values. Assigning NULL removes an inherited SPI instruction format,
# memory definition, control stack, eeprom or flash instruction, eg,
# as in memory "efuse" = NULL;
#
# part parent <id> # quoted string
# id = <id> ; # quoted string
# <any set of other parameters from the list above>
# ;
#
# NOTES:
# * Not all memories will implement all instructions
# * AVR Fuse bits and Lock bits are implemented as a type of memory
# * Example memories are:
# "flash", "eeprom", "fuse", "lfuse" (low fuse), "hfuse" (high
# fuse), "signature", "calibration", "lock"
# * The memory specified on the avrdude command line must match
# one of the memories defined for the specified chip
# * The pwroff_after_write flag causes avrdude to attempt to
# power the device off and back on after an unsuccessful write to
# the affected memory area if VCC programmer pins are defined. If
# VCC pins are not defined for the programmer, a message
# indicating that the device needs a power-cycle is printed out.
# This flag was added to work around a problem with the
# at90s4433/2333's; see the at90s4433 errata at:
#
# https://www.microchip.com/content/dam/mchp/documents/OTH/ProductDocuments/DataSheets/doc1042.pdf
#
# INSTRUCTION FORMATS
#
# Instruction formats are specified as a comma separated list of
# string values containing information (bit specifiers) about each
# of the 32 bits of the instruction. Bit specifiers may be one of
# the following formats:
#
# '1' = the bit is always set on input as well as output
#
# '0' = the bit is always clear on input as well as output
#
# 'x' = the bit is ignored on input and output and set as 0
#
# 'a' = the bit is an address bit; from v 7.1 the bit-number
# is set to match the right bit position for the
# instruction to "just work"
#
# 'aN' = the bit is the Nth address bit, bit-number = N, i.e., a12
# is address bit 12 on input, a0 is address bit 0.
#
# 'i' = the bit is an input data bit (can optionally be followed
# by a memory bit position between 0 and 7 if that differs
# from the bit-position in the SPI write command byte)
#
# 'o' = the bit is an output data bit (can optionally be followed
# by a memory bit position between 0 and 7)
#
# Each instruction must be composed of 32 bit specifiers. The
# instruction specification closely follows the instruction data
# provided in Atmel's data sheets for their parts. Note that flash
# addresses always refer to *word* addresses whilst all other
# memory types specify *byte* addresses.
#
# Example for signature read on the ATmega328P:
# read = "0 0 1 1 0 0 0 0", "0 0 0 x x x x x",
# "x x x x x x a1 a0", "o o o o o o o o";
#
# As the address bit numbers in the SPI opcodes are highly
# systematic, they don't really need to be specified. A compact
# version of the format specification neither uses bit-numbers for
# address lines nor spaces. If such a string is longer than 7
# characters, then the characters 0, 1, x, a, i and o will be
# recognised as the corresponding bit, whilst any of the characters
# ., -, _ or / can act as arbitrary visual separators, which are
# ignored. Examples:
#
# loadpage_lo = "0100.0000--000x.xxxx--xxaa.aaaa--iiii.iiii";
#
# loadpage_lo = "0100.0000", "000x.xxxx", "xxaa.aaaa", "iiii.iiii";
#
#
# The following are STK500 part device codes to use for the
# stk500_devcode field of the part. These came from Atmel's software
# section avr061.zip which accompanies the application note
# AVR061 available from:
#
# https://ww1.microchip.com/downloads/en/Appnotes/doc2525.pdf
#
#define ATTINY10 0x10 /* the _old_ one that never existed! */
#define ATTINY11 0x11
#define ATTINY12 0x12
#define ATTINY15 0x13
#define ATTINY13 0x14
#define ATTINY22 0x20
#define ATTINY26 0x21
#define ATTINY28 0x22
#define ATTINY2313 0x23
#define AT90S1200 0x33
#define AT90S2313 0x40
#define AT90S2323 0x41
#define AT90S2333 0x42
#define AT90S2343 0x43
#define AT90S4414 0x50
#define AT90S4433 0x51
#define AT90S4434 0x52
#define ATMEGA48 0x59
#define AT90S8515 0x60
#define AT90S8535 0x61
#define AT90C8534 0x62
#define ATMEGA8515 0x63
#define ATMEGA8535 0x64
#define ATMEGA8 0x70
#define ATMEGA88 0x73
#define ATMEGA168 0x86
#define ATMEGA161 0x80
#define ATMEGA163 0x81
#define ATMEGA16 0x82
#define ATMEGA162 0x83
#define ATMEGA169 0x84
#define ATMEGA323 0x90
#define ATMEGA32 0x91
#define ATMEGA64 0xA0
#define ATMEGA103 0xB1
#define ATMEGA128 0xB2
#define AT90CAN128 0xB3
#define AT90CAN64 0xB3
#define AT90CAN32 0xB3
#define AT86RF401 0xD0
#define AT89START 0xE0
#define AT89S51 0xE0
#define AT89S52 0xE1
# The following table lists the devices in the original AVR910
# appnote:
# |Device |Signature | Code |
# +-------+----------+------+
# |tiny12 | 1E 90 05 | 0x55 |
# |tiny15 | 1E 90 06 | 0x56 |
# | | | |
# | S1200 | 1E 90 01 | 0x13 |
# | | | |
# | S2313 | 1E 91 01 | 0x20 |
# | S2323 | 1E 91 02 | 0x48 |
# | S2333 | 1E 91 05 | 0x34 |
# | S2343 | 1E 91 03 | 0x4C |
# | | | |
# | S4414 | 1E 92 01 | 0x28 |
# | S4433 | 1E 92 03 | 0x30 |
# | S4434 | 1E 92 02 | 0x6C |
# | | | |
# | S8515 | 1E 93 01 | 0x38 |
# | S8535 | 1E 93 03 | 0x68 |
# | | | |
# |mega32 | 1E 95 01 | 0x72 |
# |mega83 | 1E 93 05 | 0x65 |
# |mega103| 1E 97 01 | 0x41 |
# |mega161| 1E 94 01 | 0x60 |
# |mega163| 1E 94 02 | 0x64 |
# Appnote AVR109 also has a table of AVR910 device codes, which
# lists:
# dev avr910 signature
# ATmega8 0x77 0x1E 0x93 0x07
# ATmega8515 0x3B 0x1E 0x93 0x06
# ATmega8535 0x6A 0x1E 0x93 0x08
# ATmega16 0x75 0x1E 0x94 0x03
# ATmega162 0x63 0x1E 0x94 0x04
# ATmega163 0x66 0x1E 0x94 0x02
# ATmega169 0x79 0x1E 0x94 0x05
# ATmega32 0x7F 0x1E 0x95 0x02
# ATmega323 0x73 0x1E 0x95 0x01
# ATmega64 0x46 0x1E 0x96 0x02
# ATmega128 0x44 0x1E 0x97 0x02
#
# These codes refer to "BOOT" device codes which are apparently
# different than standard device codes, for whatever reasons
# (often one above the standard code).
# There are several extended versions of AVR910 implementations around
# in the Internet. These add the following codes (only devices that
# actually exist are listed):
# ATmega8515 0x3A
# ATmega128 0x43
# ATmega64 0x45
# ATtiny26 0x5E
# ATmega8535 0x69
# ATmega32 0x72
# ATmega16 0x74
# ATmega8 0x76
# ATmega169 0x78
#
# Overall avrdude defaults; suitable for ~/.config/avrdude/avrdude.rc
#
default_parallel = "@DEFAULT_PAR_PORT@";
default_serial = "@DEFAULT_SER_PORT@";
default_spi = "@DEFAULT_SPI_PORT@";
# default_baudrate = 115200;
# default_bitclock = 2.5;
default_linuxgpio = "@DEFAULT_LINUXGPIO_PORT@";
allow_subshells = no;
@HAVE_PARPORT_BEGIN@
# Parallel port programmers
#------------------------------------------------------------
# bsd
#------------------------------------------------------------
# Brian Dean, June 2023: "The programmer was a simple parallel port
# programmer and was the first programmer that AVRDUDE supported by
# bit-banging the pins. Before releasing it open-source, I wrote the
# driver interface with the yacc definitions so that it would be easy
# to support multiple programmers without having to modify too much
# code, one would mainly just need to fill in the appropriate driver
# functions for any new programmer and retain the API. And then added
# support for the STK500 programmer which was the dominant serial port
# programmer at that time. The parallel port was attractive because the
# STK500 was fairly expensive at the time and people could build a
# parallel port programmer for very little cost in parts if they didn't
# already have them on-hand."
#
# Here a 2003 webpage about the bsd programmer:
# http://web.archive.org/web/20030217002616/http://www.bsdhome.com/avrdude/
#
# The internet archive seems to have lost the schematic drawn by Joerg
# Wunsch, but here is still a copy of the pdf created on 2001-04-25:
# https://github.com/avrdudes/avrdude/blob/main/supporting-docs/avrprog.pdf
#
programmer # bsd
id = "bsd";
desc = "Brian S. Dean's parallel programmer";
type = "par";
prog_modes = PM_TPI | PM_ISP;
vcc = 2, 3, 4, 5;
reset = 7;
sck = 8;
sdo = 9;
sdi = 10;
;
#------------------------------------------------------------
# stk200
#------------------------------------------------------------
# The Atmel STK200 is a starter kit designed for the 40-pin
# AT89 and AT90 series microcontrollers. It was shipped with
# a parallel port to ISP adapter. The original STK200 board
# and programmer may be difficult to source due to being
# end of life, but there exist third-party boards, and the
# parallel port adapter can be DIY'ed. See
# https://www.kanda.com/products/Kanda/STK200-X.html
# https://ponty.github.io/MyElectronicProjects/projects/stk200/stk200.html
# for details.
programmer # stk200
id = "stk200";
desc = "STK200 starter kit";
type = "par";
prog_modes = PM_TPI | PM_ISP;
buff = 4, 5;
reset = 9;
sck = 6;
sdo = 7;
sdi = 10;
;
#------------------------------------------------------------
# pony-stk200
#------------------------------------------------------------
# The programming dongle used by the popular Ponyprog
# utility. It is almost similar to the STK200 one,
# except that there is a LED indicating that the
# programming is currently in progress. See
# https://www.lancos.com/prog.html
# https://www.olimex.com/Products/AVR/Programmers/AVR-PG2B/
# for details.
programmer parent "stk200" # pony-stk200
id = "pony-stk200";
desc = "Pony Prog STK200";
pgmled = 8;
;
#------------------------------------------------------------
# dt006
#------------------------------------------------------------
# Dontronics DT006 programmer. See
# https://www.dontronics.com/dt006.html
# https://www.dontronics.com/dt006_programming.html
# for details.
programmer # dt006
id = "dt006";
desc = "Dontronics DT006";
type = "par";
prog_modes = PM_TPI | PM_ISP;
reset = 4;
sck = 5;
sdo = 2;
sdi = 11;
;
#------------------------------------------------------------
# bascom
#------------------------------------------------------------
# Identical to the Dontronics DT006 wiring. See
# https://avrhelp.mcselec.com/index.html?sample_electronics_cable_programmer.htm
# for details.
programmer parent "dt006" # bascom
id = "bascom";
desc = "Bascom SAMPLE programming cable";
;
#------------------------------------------------------------
# alf
#------------------------------------------------------------
# PC Parallel Port Programmer
# https://web.archive.org/web/20050928233713fw_/http://nightshade.homeip.net/ALF-PgmAVR.htm
programmer # alf
id = "alf";
desc = "Nightshade ALF-PgmAVR via PC parallel port";
type = "par";
prog_modes = PM_TPI | PM_ISP;
vcc = 2, 3, 4, 5;
buff = 6;
reset = 7;
sck = 8;
sdo = 9;
sdi = 10;
errled = 1;
rdyled = 14;
pgmled = 16;
vfyled = 17;
;
#------------------------------------------------------------
# sp12
#------------------------------------------------------------
# DIY parallel port programmer solution. See
# https://web.archive.org/web/20210324041016/https://sbolt.home.xs4all.nl/e-spider_prog.html
# for details.
programmer # sp12
id = "sp12";
desc = "Steve Bolt's Programmer";
type = "par";
prog_modes = PM_TPI | PM_ISP;
vcc = 4, 5, 6, 7, 8;
reset = 3;
sck = 2;
sdo = 9;
sdi = 11;
;
#------------------------------------------------------------
# picoweb
#------------------------------------------------------------
# Programmer option for flashing the on-board AVR
# microcontroller on the PicoWeb hardware. See
# https://www.picoweb.net/downloads.html
# https://www.lightner.net/picoweb/article/picoweb.htm
# for details.
programmer # picoweb
id = "picoweb";
desc = "Picoweb Programming Cable";
type = "par";
prog_modes = PM_TPI | PM_ISP;
reset = 2;
sck = 3;
sdo = 4;
sdi = 13;
;
#------------------------------------------------------------
# abcmini
#------------------------------------------------------------
# Parallel port based ISP and TPI programmer. See
# https://www.bipom.com/appnotes/bascomavr/an0108.php
# https://web.archive.org/web/20050615231426/http://invtech.com.au/
# for details.
programmer # abcmini
id = "abcmini";
desc = "ABCmini Board, aka Dick Smith HOTCHIP";
type = "par";
prog_modes = PM_TPI | PM_ISP;
reset = 4;
sck = 3;
sdo = 2;
sdi = 10;
;
#------------------------------------------------------------
# futurlec
#------------------------------------------------------------
# Not able to find any information online. Do you own this
# cable or have information about it? Please report it here:
# https://github.com/avrdudes/avrdude/issues
programmer # futurlec
id = "futurlec";
desc = "Futurlec.com programming cable";
type = "par";
prog_modes = PM_TPI | PM_ISP;
reset = 3;
sck = 2;
sdo = 1;
sdi = 10;
;
#------------------------------------------------------------
# xil
#------------------------------------------------------------
# From the contributor of the "xil" jtag cable:
# The "vcc" definition isn't really vcc (the cable gets its power from
# the programming circuit) but is necessary to switch one of the
# buffer lines (trying to add it to the "buff" lines doesn't work in
# avrdude versions before 5.5j).
# With this, TMS connects to RESET, TDI to SDO, TDO to SDI and TCK
# to SCK (plus vcc/gnd of course)
programmer # xil
id = "xil";
desc = "Xilinx JTAG cable";
type = "par";
prog_modes = PM_TPI | PM_ISP;
vcc = 6;
buff = 5;
reset = 4;
sck = 3;
sdo = 2;
sdi = 13;
;
#------------------------------------------------------------
# dapa
#------------------------------------------------------------
# DIY parallel port based ISP and TPI programmer solution. See
# https://ponty.github.io/MyElectronicProjects/projects/dapa/dapa.html
# https://importgeek.wordpress.com/2013/07/12/diy-avr-parallel-port-programmer/
# for details.
programmer # dapa
id = "dapa";
desc = "Direct AVR Parallel Access cable";
type = "par";
prog_modes = PM_TPI | PM_ISP;
vcc = 3;
reset = 16;
sck = 1;
sdo = 2;
sdi = 11;
;
#------------------------------------------------------------
# atisp
#------------------------------------------------------------
# A programming cable from https://micro-research.co.th
# Not able to find any information online. Do you own this
# cable or have information about it? Please report it here:
# https://github.com/avrdudes/avrdude/issues
programmer # atisp
id = "atisp";
desc = "AT-ISP v1.1 programming cable for AVR-SDK1";
type = "par";
prog_modes = PM_TPI | PM_ISP;
reset = ~6;
sck = ~8;
sdo = ~7;
sdi = ~10;
;
#------------------------------------------------------------
# ere-isp-avr
#------------------------------------------------------------
# No longer exists: http://www.ere.co.th/download/sch050713.pdf
programmer # ere-isp-avr
id = "ere-isp-avr";
desc = "ERE ISP-AVR";
type = "par";
prog_modes = PM_TPI | PM_ISP;
reset = ~4;
sck = 3;
sdo = 2;
sdi = 10;
;
#------------------------------------------------------------
# blaster
#------------------------------------------------------------
# Altera parallel port based ISP/TPI programmer.
# Compatible with ByteBlaster I and II. See
# https://web.archive.org/web/20070906144849/http://www.ln.com.ua/~real/avreal/adapters_e.html#ABB
# for details.
programmer # blaster
id = "blaster";
desc = "Altera ByteBlaster";
type = "par";
prog_modes = PM_TPI | PM_ISP;
buff = 14;
reset = 3;
sck = 2;
sdo = 8;
sdi = 11;
;
#------------------------------------------------------------
# frank-stk200
#------------------------------------------------------------
# It is almost same as pony-stk200, except vcc on pin 5 to auto
# disconnect port, see http://electropol.free.fr/spip/spip.php?article27
programmer parent "pony-stk200" # frank-stk200
id = "frank-stk200";
desc = "Frank STK200";
vcc = 5;
buff = ; # delete buff pin assignment
;
#------------------------------------------------------------
# 89isp
#------------------------------------------------------------
# The AT89ISP Cable is a simple parallel dongle for AT89 family
# https://www.microchip.com/en-us/development-tool/AT89ISP
# https://ww1.microchip.com/downloads/en/appnotes/doc3310.pdf
# https://ww1.microchip.com/downloads/en/DeviceDoc/AT89ISP_Update3.3.zip
programmer # 89isp
id = "89isp";
desc = "Atmel at89isp cable";
type = "par";
prog_modes = PM_TPI | PM_ISP;
reset = 17;
sck = 1;
sdo = 2;
sdi = 10;
;
@HAVE_PARPORT_END@
@HAVE_LINUXGPIO_BEGIN@
# This programmer bitbangs GPIO lines using the Linux libgpiod or sysfs GPIO interface
#
# To enable it set the configuration below to match the GPIO lines connected
# to the relevant ISP header pins and uncomment the entry definition. In case
# you don't have the required permissions to edit this system wide config
# file put the entry in a separate <your name>.conf file and use it with
# -C+<your name>.conf on the command line.
#
# To check if your avrdude build has support for the linuxgpio programmer
# compiled in, use -c?type on the command line and look for linuxgpio in the
# list. If it's not available you need pass the --enable-linuxgpio=yes option
# to configure and recompile avrdude.
#
#
# #------------------------------------------------------------
# # linuxgpio
# #------------------------------------------------------------
#
# programmer
# id = "linuxgpio";
# desc = "Linux sysfs/libgpiod to bitbang GPIO lines";
# type = "linuxgpio";
# prog_modes = PM_ISP;
# connection_type = linuxgpio;
# reset = ?;
# sck = ?;
# sdo = ?;
# sdi = ?;
# ;
#------------------------------------------------------------
# Program from a Raspberry Pi GPIO port using linuxgpio
#------------------------------------------------------------
programmer # raspberry_pi_gpio
id = "raspberry_pi_gpio";
desc = "Raspberry Pi GPIO via sysfs/libgpiod";
type = "linuxgpio";
prog_modes = PM_ISP;
connection_type = linuxgpio;
reset = 22;
sck = 24;
sdo = 23;
sdi = 18;
;
@HAVE_LINUXGPIO_END@
@HAVE_LINUXSPI_BEGIN@
#------------------------------------------------------------
# linuxspi
#------------------------------------------------------------
# This programmer uses the built in linux SPI bus devices to program an
# attached AVR. The reset pin must be attached to a GPIO pin that
# is otherwise unused (see gpioinfo(1)); the SPI bus CE pins are not
# suitable since they would release /RESET too early.
#
programmer # linuxspi
id = "linuxspi";
desc = "Use Linux SPI device in /dev/spidev*";
type = "linuxspi";
prog_modes = PM_TPI | PM_ISP;
connection_type = spi;
reset = 25; # Pi GPIO number - this is J8:22
;
@HAVE_LINUXSPI_END@
#
# PROGRAMMER DEFINITIONS
#
#------------------------------------------------------------
# dryrun
#------------------------------------------------------------
# Using -c dryrun is a good way to get acquainted with AVRDUDE and its
# command line -U memory operations, -T terminal commands or the
# interactive terminal -t. No hardware needs to be connected, as the
# dryrun programmer emulates what can be expected to happen with a real
# -c programmer and a corresponding connected physical programmer or a
# directly connected board when it has a bootloader.
#
# Examples:
# avrdude -c dryrun -p ATmega328P -t # Interactive terminal: enter help
# avrdude -c dryrun -p ATmega2560 -U flash:w:myapplication.hex:i
# avrdude -c dryrun -p AVR64DB48 -Tconfig
programmer # dryrun
id = "dryrun";
desc = "Emulates programming without a programmer";
type = "dryrun";
prog_modes = PM_TPI | PM_ISP | PM_PDI | PM_UPDI | PM_HVSP | PM_HVPP | PM_aWire;
;
#------------------------------------------------------------
# dryboot
#------------------------------------------------------------
# Like -c dryrun the -c dryboot programmer only emulates programming,
# albeit for communicating to bootloaders, ie, without a physical
# programmer between the host and the target AVR part. AVRDUDE behaves
# slightly different when talking to a bootloader: Whilst for most classic
# parts the flash memory looks like NOR-memory, ie, cleared bits cannot be
# set and therefore programming requires a chip erase first, bootloaders
# do have the power of erasing a flash page (setting it to all 0xff)
# before writing a page. This requires AVRDUDE to behave differently when
# talking to a bootloader, which it recognises by the prog_modes = PM_SPM
# setting below. -c dryboot allows exploring these differences at an
# emulation level.
programmer # dryboot
id = "dryboot";
desc = "Emulates bootloader programming without the part";
type = "dryrun";
prog_modes = PM_SPM;
;
#------------------------------------------------------------
# wiring
#------------------------------------------------------------
# http://wiring.org.co/
# Basically STK500v2 protocol, with some glue to trigger the bootloader
programmer # wiring
id = "wiring";
desc = "Wiring bootloader using STK500 v2 protocol";
type = "wiring";
prog_modes = PM_SPM;
connection_type = serial;
;
#------------------------------------------------------------
# arduino
#------------------------------------------------------------
# Serves optiboot bootloaders and others using the STK500v1 protocol;
# it is superseded by the more modern -c urclock programmer, see below.
# The programmer is named after the popular embedded programming
# environment Arduino that has for a long time used optiboot
# bootloaders. Same as the stk500v1 except that it resets the attached
# board and treats EEPROM as the optiboot bootloaders expect.
programmer # arduino
id = "arduino";
desc = "Arduino bootloader using STK500 v1 protocol";
type = "arduino";
prog_modes = PM_SPM;
connection_type = serial;
;
#------------------------------------------------------------
# urclock
#------------------------------------------------------------
# Serves urboot and optiboot bootloaders
# - Reads/writes flash/EEPROM via the MCU bootloader and a serial connection
# - Automatically resets an attached board via RTS/DTR into bootloader mode
# - Implements urprotocol, a skeleton version of STK500v1
# - Supports vector bootloaders by patching interrupt vectors on flash writes
# + Vector bootloaders run on all parts, no need for a HW boot section
# + Can be much smaller than the smallest HW boot section of a part, eg,
# 256 bytes for ATmega2560 (smallest HW boot section is 1024 bytes)
# - Checks sizes of applications so they don't overwrite the bootloader
# - Keeps the bootloader alive during interactive terminal sessions
# - Provides a 4-byte metadata interface in top flash for
# + Allowing applications to utilise unused flash similar to EEPROM
# + Storing in top flash the file name and its last-modified date
# + Displaying file name and date of the last programmed application
#
# See https://github.com/stefanrueger/urboot
programmer # urclock
id = "urclock";
desc = "Urboot bootloaders using urprotocol";
type = "urclock";
prog_modes = PM_SPM;
connection_type = serial;
;
#------------------------------------------------------------
# xbee
#------------------------------------------------------------
# The XBeeBoot bootloader provides XBee Series 2 Over-The-Air
# firmware update capability as well as supporting direct
# firmware update via the stk500v1 protocol. See
# https://github.com/davidsainty/xbeeboot
# for details.
programmer # xbee
id = "xbee";
desc = "XBeeBoot Over-The-Air bootloader (STK500 v1)";
type = "xbee";
prog_modes = PM_SPM;
connection_type = serial;