summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Buesch <mb@bu3sch.de>2011-01-01 17:13:59 +0100
committerMichael Buesch <mb@bu3sch.de>2011-01-01 17:13:59 +0100
commit0f58f7d7ea61aa6ec2954bda3fb48eaf70fb26c2 (patch)
tree4ae66b1f860d95900ca84b69d9b7111d8d078ec0
parent4c5896f875b4b083cc2567a1349aca0273ad8610 (diff)
downloadtoprammer-0f58f7d7ea61aa6ec2954bda3fb48eaf70fb26c2.tar.xz
toprammer-0f58f7d7ea61aa6ec2954bda3fb48eaf70fb26c2.zip
Add support for lockbit/fuse descriptions
Signed-off-by: Michael Buesch <mb@bu3sch.de>
-rw-r--r--README-DEVELOPERS.lyx10
-rw-r--r--README-DEVELOPERS.ps419
-rw-r--r--libtoprammer/chip.py17
-rw-r--r--libtoprammer/chip_at89c2051dip20.py2
-rw-r--r--libtoprammer/chip_atmega32dip40.py2
-rw-r--r--libtoprammer/chip_atmega88dip28.py2
-rw-r--r--libtoprammer/chip_atmega8dip28.py35
-rw-r--r--libtoprammer/chip_attiny13dip8.py2
-rw-r--r--libtoprammer/chip_attiny26dip20.py2
-rw-r--r--libtoprammer/chip_m2764a.py2
-rw-r--r--libtoprammer/chip_m8cissp.py2
-rw-r--r--libtoprammer/chip_unitest.py2
-rw-r--r--libtoprammer/chip_w29ee011dip32.py2
-rw-r--r--libtoprammer/toprammer_main.py2
-rwxr-xr-xtoprammer2
-rwxr-xr-xtoprammer-gui72
-rwxr-xr-xtoprammer-layout2
17 files changed, 320 insertions, 257 deletions
diff --git a/README-DEVELOPERS.lyx b/README-DEVELOPERS.lyx
index a2c62c3..0e5e2b5 100644
--- a/README-DEVELOPERS.lyx
+++ b/README-DEVELOPERS.lyx
@@ -1,4 +1,4 @@
-#LyX 1.6.5 created this file. For more info see http://www.lyx.org/
+#LyX 1.6.7 created this file. For more info see http://www.lyx.org/
\lyxformat 345
\begin_document
\begin_header
@@ -500,11 +500,11 @@ Chip
\end_inset
-derived class you need to register it.
- This is done by calling RegisteredChip():
+ This is done by defining a ChipDescription():
\end_layout
\begin_layout LyX-Code
-RegisteredChip(Chip_MyDevice, bitfile =
+ChipDescription(Chip_MyDevice, bitfile =
\begin_inset Quotes eld
\end_inset
@@ -524,11 +524,11 @@ myChipID
\end_layout
\begin_layout Standard
-The class (_not_ an instance of it) is passed as first parameter.
+The chip class (_not_ an instance of it) is passed as first parameter.
The ID string of the required bitfile is past as second parameter.
A chipID might also be passed.
If the chipID is omitted, the bitfileID is used as chipID.
- There are more optional parameters to RegisteredChip().
+ There are more optional parameters to ChipDescription().
See the inline sourcecode documentation for details.
\end_layout
diff --git a/README-DEVELOPERS.ps b/README-DEVELOPERS.ps
index 7c4e68a..45f8b7f 100644
--- a/README-DEVELOPERS.ps
+++ b/README-DEVELOPERS.ps
@@ -1,7 +1,7 @@
%!PS-Adobe-2.0
%%Creator: dvips(k) 5.98 Copyright 2009 Radical Eye Software
%%Title: README-DEVELOPERS.dvi
-%%CreationDate: Sun Mar 21 14:07:49 2010
+%%CreationDate: Sat Jan 1 16:40:21 2011
%%Pages: 6
%%PageOrder: Ascend
%%BoundingBox: 0 0 596 842
@@ -11,7 +11,7 @@
%DVIPSWebPage: (www.radicaleye.com)
%DVIPSCommandLine: dvips -o README-DEVELOPERS.ps README-DEVELOPERS.dvi
%DVIPSParameters: dpi=600
-%DVIPSSource: TeX output 2010.03.21:1407
+%DVIPSSource: TeX output 2011.01.01:1640
%%BeginProcSet: tex.pro 0 0
%!
/TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S
@@ -317,8 +317,8 @@ cleartomark
%%EndFont
TeXDict begin 39158280 55380996 1000 600 600 (README-DEVELOPERS.dvi)
@start
-%DVIPSBitmapFont: Fa ectt1000 10 39
-/Fa 39 122 df<007000001C01F800007E03F80000FE07F80001FE0FF00003FC1FC00007
+%DVIPSBitmapFont: Fa ectt1000 10 37
+/Fa 37 122 df<007000001C01F800007E03F80000FE07F80001FE0FF00003FC1FC00007
F03F80000FE03F00000FC07E00001F807C00001F00FC00003F00F800003E00FFC0003FF0
FFE0003FF8FFF0003FFCFFF8003FFEFFF8003FFEFFF8003FFE7FF8001FFE7FF8001FFE3F
F0000FFC1FE00007F807C00001F027177FB22C>16 D<1F000007C03FC0000FF07FE0001F
@@ -396,157 +396,140 @@ E00FBC007BE00FBC007BE00FBC007BE00FBC007BE00F9E00F3E00F9E00F3E00F9E00F3E0
EF03E00F81FF03E00F80FE03E00F80FE03E00F80FE03E00F807C03E00F803803E00F8000
03E00F800003E00F800003E00F800003E00F800003E00F800003E00F800003E00F800003
E00F800003E00F800003E00F800003E00F800003E07FF0001FFCFFF8003FFEFFF8003FFE
-FFF8003FFE7FF0001FFC27337EB22C>77 D<7FFFFC000000FFFFFF800000FFFFFFE00000
-FFFFFFF800007FFFFFFC000007E007FE000007E001FE000007E0007F000007E0003F8000
-07E0001F800007E0001F800007E0000FC00007E0000FC00007E0000FC00007E0000FC000
-07E0000FC00007E0000FC00007E0001F800007E0001F800007E0003F800007E0007F0000
-07E001FE000007E007FE000007FFFFFC000007FFFFF8000007FFFFE0000007FFFFF00000
-07FFFFF8000007E007FC000007E001FE000007E000FE000007E0007F000007E0003F0000
-07E0003F000007E0003F000007E0003F000007E0003F000007E0003F000007E0003F0000
-07E0003F000007E0003F0F0007E0003F1F8007E0003F1F8007E0003F1F8007E0003F1F80
-07E0003F1F807FFE001FBF80FFFF001FFF00FFFF000FFF00FFFF000FFE007FFE0007FC00
-00000001F00029347EB22C>82 D<7FFFFFFF00FFFFFFFF80FFFFFFFF80FFFFFFFF80FFFF
-FFFF807FFFFFFF0021067B7D2C>95 D<01FFF0000007FFFE00001FFFFF80001FFFFFE000
-3FFFFFF0003FC01FF8003FC007F8003FC001FC001F8000FC00060000FE000000007E0000
-00007E000000007E000000FFFE00001FFFFE0000FFFFFE0003FFFFFE000FFFFFFE001FFF
-807E003FF8007E007FC0007E007F00007E00FE00007E00FC00007E00FC00007E00FC0000
-7E00FC00007E00FE00007E007F0000FE007F8003FE003FE01FFE001FFFFFFFFC0FFFFFFF
-FE07FFFFBFFE01FFFE1FFE003FF007FC27247CA32C>97 D<7FF0000000FFF8000000FFF8
-000000FFF80000007FF800000001F800000001F800000001F800000001F800000001F800
-000001F800000001F800000001F800000001F800000001F800000001F81FE00001F8FFF8
-0001FBFFFE0001FFFFFF0001FFFFFF8001FFF07FC001FF801FE001FF0007F001FE0003F8
-01FC0003F801FC0001FC01F80000FC01F80000FC01F80000FE01F800007E01F800007E01
-F800007E01F800007E01F800007E01F800007E01F800007E01F800007E01F80000FE01FC
-0000FC01FC0000FC01FC0001F801FE0003F801FF0007F001FF000FF001FF801FE001FFE0
-7FC001FFFFFF8001FFFFFF0001FBFFFE0001F8FFF80000F03FC00027337FB22C>I<0003
-FFE000001FFFF800007FFFFE0001FFFFFE0003FFFFFF0007FE00FF000FF000FF001FE000
-FF001FC0007E003F800018003F000000007F000000007E000000007E00000000FC000000
-00FC00000000FC00000000FC00000000FC00000000FC00000000FC00000000FC00000000
-7E000000007E000000007F000000003F00000F003F80001F801FC0001F801FE0003F800F
-F0007F0007FE03FF0003FFFFFE0001FFFFFC00007FFFF800001FFFE0000003FF00002124
-7AA32C>I<00000FFE0000001FFF0000001FFF0000001FFF0000000FFF000000003F0000
-00003F000000003F000000003F000000003F000000003F000000003F000000003F000000
-003F000000003F000007F83F00003FFE3F0000FFFFBF0001FFFFFF0003FFFFFF0007FC0F
-FF000FF003FF001FE001FF001FC000FF003F80007F003F00007F007E00003F007E00003F
-00FE00003F00FC00003F00FC00003F00FC00003F00FC00003F00FC00003F00FC00003F00
-FC00003F00FC00003F00FE00003F007E00007F007E00007F007F0000FF003F8000FF003F
-8001FF001FC003FF000FF007FF0007FC1FFF0003FFFFFFFC01FFFFBFFE00FFFF3FFE003F
-FC3FFE000FF01FFC27337DB22C>I<0003FE0000001FFFC000007FFFF00001FFFFF80003
-FFFFFC0007FE03FE000FF800FF001FE0003F801FC0003F803F80001FC03F00000FC07F00
-000FC07E00000FE07E000007E0FC000007E0FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0FFFFFF
-FFE0FFFFFFFFC0FC00000000FE000000007E000000007E000000007F000000003F000003
-C03F800007E01FC00007E00FF0000FE007F8003FC007FF00FFC001FFFFFF8000FFFFFF00
-003FFFFC00000FFFF0000001FF800023247CA32C>I<00000FF80000003FFE000000FFFF
-000001FFFF800003FFFF800007FC7F800007F07F80000FE03F00000FC03F00000FC00000
-000FC00000000FC00000000FC00000000FC00000000FC000007FFFFFFE00FFFFFFFF00FF
-FFFFFF00FFFFFFFF007FFFFFFE00000FC00000000FC00000000FC00000000FC00000000F
-C00000000FC00000000FC00000000FC00000000FC00000000FC00000000FC00000000FC0
-0000000FC00000000FC00000000FC00000000FC00000000FC00000000FC00000000FC000
+FFF8003FFE7FF0001FFC27337EB22C>77 D<7FFFFFFF00FFFFFFFF80FFFFFFFF80FFFFFF
+FF80FFFFFFFF807FFFFFFF0021067B7D2C>95 D<01FFF0000007FFFE00001FFFFF80001F
+FFFFE0003FFFFFF0003FC01FF8003FC007F8003FC001FC001F8000FC00060000FE000000
+007E000000007E000000007E000000FFFE00001FFFFE0000FFFFFE0003FFFFFE000FFFFF
+FE001FFF807E003FF8007E007FC0007E007F00007E00FE00007E00FC00007E00FC00007E
+00FC00007E00FC00007E00FE00007E007F0000FE007F8003FE003FE01FFE001FFFFFFFFC
+0FFFFFFFFE07FFFFBFFE01FFFE1FFE003FF007FC27247CA32C>97
+D<7FF0000000FFF8000000FFF8000000FFF80000007FF800000001F800000001F8000000
+01F800000001F800000001F800000001F800000001F800000001F800000001F800000001
+F800000001F81FE00001F8FFF80001FBFFFE0001FFFFFF0001FFFFFF8001FFF07FC001FF
+801FE001FF0007F001FE0003F801FC0003F801FC0001FC01F80000FC01F80000FC01F800
+00FE01F800007E01F800007E01F800007E01F800007E01F800007E01F800007E01F80000
+7E01F800007E01F80000FE01FC0000FC01FC0000FC01FC0001F801FE0003F801FF0007F0
+01FF000FF001FF801FE001FFE07FC001FFFFFF8001FFFFFF0001FBFFFE0001F8FFF80000
+F03FC00027337FB22C>I<0003FFE000001FFFF800007FFFFE0001FFFFFE0003FFFFFF00
+07FE00FF000FF000FF001FE000FF001FC0007E003F800018003F000000007F000000007E
+000000007E00000000FC00000000FC00000000FC00000000FC00000000FC00000000FC00
+000000FC00000000FC000000007E000000007E000000007F000000003F00000F003F8000
+1F801FC0001F801FE0003F800FF0007F0007FE03FF0003FFFFFE0001FFFFFC00007FFFF8
+00001FFFE0000003FF000021247AA32C>I<00000FFE0000001FFF0000001FFF0000001F
+FF0000000FFF000000003F000000003F000000003F000000003F000000003F000000003F
+000000003F000000003F000000003F000000003F000007F83F00003FFE3F0000FFFFBF00
+01FFFFFF0003FFFFFF0007FC0FFF000FF003FF001FE001FF001FC000FF003F80007F003F
+00007F007E00003F007E00003F00FE00003F00FC00003F00FC00003F00FC00003F00FC00
+003F00FC00003F00FC00003F00FC00003F00FC00003F00FE00003F007E00007F007E0000
+7F007F0000FF003F8000FF003F8001FF001FC003FF000FF007FF0007FC1FFF0003FFFFFF
+FC01FFFFBFFE00FFFF3FFE003FFC3FFE000FF01FFC27337DB22C>I<0003FE0000001FFF
+C000007FFFF00001FFFFF80003FFFFFC0007FE03FE000FF800FF001FE0003F801FC0003F
+803F80001FC03F00000FC07F00000FC07E00000FE07E000007E0FC000007E0FFFFFFFFE0
+FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0FFFFFFFFC0FC00000000FE000000007E000000007E
+000000007F000000003F000003C03F800007E01FC00007E00FF0000FE007F8003FC007FF
+00FFC001FFFFFF8000FFFFFF00003FFFFC00000FFFF0000001FF800023247CA32C>I<00
+000FF80000003FFE000000FFFF000001FFFF800003FFFF800007FC7F800007F07F80000F
+E03F00000FC03F00000FC00000000FC00000000FC00000000FC00000000FC00000000FC0
+00007FFFFFFE00FFFFFFFF00FFFFFFFF00FFFFFFFF007FFFFFFE00000FC00000000FC000
00000FC00000000FC00000000FC00000000FC00000000FC00000000FC00000000FC00000
-3FFFFFF0007FFFFFF8007FFFFFF8007FFFFFF8003FFFFFF00021337DB22C>I<00000003
-F80007F80FFC001FFE3FFE007FFFFFFF01FFFFFFFF03FFFFFE7F03FC0FF87F07F003F83E
-0FE001FC1C0FC000FC001FC000FE001F80007E001F80007E001F80007E001F80007E001F
-80007E001F80007E001FC000FE000FC000FC000FE001FC0007F003F80003FC0FF00007FF
-FFF00007FFFFE0000FFFFF80000F9FFE00000F87F800000F800000000F800000000F8000
-00000FC000000007E000000007FFFFF00003FFFFFE0007FFFFFF800FFFFFFFE01FFFFFFF
-F03FC0001FF87F000003FC7E000000FC7C0000007CFC0000007EF80000003EF80000003E
-F80000003EF80000003EFC0000007E7E000000FC7F800003FC3FE0000FF81FFC007FF00F
-FFFFFFE003FFFFFF8001FFFFFF00003FFFF8000007FFC00028387EA42C>I<7FF0000000
-00FFF800000000FFF800000000FFF8000000007FF80000000001F80000000001F8000000
-0001F80000000001F80000000001F80000000001F80000000001F80000000001F8000000
-0001F80000000001F80000000001F81FE0000001F87FFC000001F9FFFE000001FBFFFF00
-0001FFFFFF000001FFF03F800001FFC01F800001FF801FC00001FF000FC00001FE000FC0
-0001FC000FC00001FC000FC00001F8000FC00001F8000FC00001F8000FC00001F8000FC0
-0001F8000FC00001F8000FC00001F8000FC00001F8000FC00001F8000FC00001F8000FC0
-0001F8000FC00001F8000FC00001F8000FC00001F8000FC00001F8000FC00001F8000FC0
-0001F8000FC00001F8000FC00001F8000FC0007FFFE0FFFF00FFFFF1FFFF80FFFFF1FFFF
-80FFFFF1FFFF807FFFE0FFFF0029337FB22C>I<00070000001FC000001FC000003FE000
-003FE000003FE000001FC000001FC0000007000000000000000000000000000000000000
-0000000000000000000000007FFFC0007FFFE000FFFFE0007FFFE0007FFFE0000007E000
-0007E0000007E0000007E0000007E0000007E0000007E0000007E0000007E0000007E000
-0007E0000007E0000007E0000007E0000007E0000007E0000007E0000007E0000007E000
-0007E0000007E0000007E0000007E0000007E0000007E0000007E0007FFFFFFCFFFFFFFE
-FFFFFFFEFFFFFFFE7FFFFFFC1F3479B32C>I<7FFFE00000FFFFF00000FFFFF00000FFFF
-F000007FFFF000000003F000000003F000000003F000000003F000000003F000000003F0
+000FC00000000FC00000000FC00000000FC00000000FC00000000FC00000000FC0000000
+0FC00000000FC00000000FC00000000FC00000000FC00000000FC00000000FC00000000F
+C00000000FC00000000FC000003FFFFFF0007FFFFFF8007FFFFFF8007FFFFFF8003FFFFF
+F00021337DB22C>I<7FF000000000FFF800000000FFF800000000FFF8000000007FF800
+00000001F80000000001F80000000001F80000000001F80000000001F80000000001F800
+00000001F80000000001F80000000001F80000000001F80000000001F81FE0000001F87F
+FC000001F9FFFE000001FBFFFF000001FFFFFF000001FFF03F800001FFC01F800001FF80
+1FC00001FF000FC00001FE000FC00001FC000FC00001FC000FC00001F8000FC00001F800
+0FC00001F8000FC00001F8000FC00001F8000FC00001F8000FC00001F8000FC00001F800
+0FC00001F8000FC00001F8000FC00001F8000FC00001F8000FC00001F8000FC00001F800
+0FC00001F8000FC00001F8000FC00001F8000FC00001F8000FC00001F8000FC0007FFFE0
+FFFF00FFFFF1FFFF80FFFFF1FFFF80FFFFF1FFFF807FFFE0FFFF0029337FB22C>104
+D<00070000001FC000001FC000003FE000003FE000003FE000001FC000001FC000000700
+00000000000000000000000000000000000000000000000000000000007FFFC0007FFFE0
+00FFFFE0007FFFE0007FFFE0000007E0000007E0000007E0000007E0000007E0000007E0
+000007E0000007E0000007E0000007E0000007E0000007E0000007E0000007E0000007E0
+000007E0000007E0000007E0000007E0000007E0000007E0000007E0000007E0000007E0
+000007E0000007E0007FFFFFFCFFFFFFFEFFFFFFFEFFFFFFFE7FFFFFFC1F3479B32C>I<
+7FFFE00000FFFFF00000FFFFF00000FFFFF000007FFFF000000003F000000003F0000000
+03F000000003F000000003F000000003F000000003F000000003F000000003F000000003
+F000000003F000000003F000000003F000000003F000000003F000000003F000000003F0
00000003F000000003F000000003F000000003F000000003F000000003F000000003F000
000003F000000003F000000003F000000003F000000003F000000003F000000003F00000
0003F000000003F000000003F000000003F000000003F000000003F000000003F0000000
-03F000000003F000000003F000000003F000000003F000000003F000000003F000000003
-F000000003F000000003F000000003F000000003F000000003F000000003F000007FFFFF
-FF80FFFFFFFFC0FFFFFFFFC0FFFFFFFFC07FFFFFFF8022337BB22C>108
-D<7F83F007E0007FCFFC1FF800FFDFFE3FFC007FFFFEFFFC007FFFFFFFFE0007FE1FFC3E
-0007FC1FF83F0007F80FF01F0007F00FE01F0007E00FC01F0007E00FC01F0007E00FC01F
-0007C00F801F0007C00F801F0007C00F801F0007C00F801F0007C00F801F0007C00F801F
-0007C00F801F0007C00F801F0007C00F801F0007C00F801F0007C00F801F0007C00F801F
-0007C00F801F0007C00F801F0007C00F801F0007C00F801F0007C00F801F0007C00F801F
-0007C00F801F007FFC3FF87FF07FFC7FF8FFF0FFFE7FFCFFF87FFC7FF8FFF07FFC3FF87F
-F02D2481A32C>I<7FF01FE00000FFF87FFC0000FFF9FFFE0000FFFBFFFF00007FFFFFFF
-000001FFF03F800001FFC01F800001FF801FC00001FF000FC00001FE000FC00001FC000F
-C00001FC000FC00001F8000FC00001F8000FC00001F8000FC00001F8000FC00001F8000F
-C00001F8000FC00001F8000FC00001F8000FC00001F8000FC00001F8000FC00001F8000F
-C00001F8000FC00001F8000FC00001F8000FC00001F8000FC00001F8000FC00001F8000F
-C00001F8000FC00001F8000FC0007FFFE0FFFF00FFFFF1FFFF80FFFFF1FFFF80FFFFF1FF
-FF807FFFE0FFFF0029247FA32C>I<0007FC0000001FFF0000007FFFC00001FFFFF00003
-FFFFF80007FC07FC000FF001FE001FE000FF001F80003F003F80003F803F00001F807E00
-000FC07E00000FC07E00000FC0FC000007E0FC000007E0FC000007E0FC000007E0FC0000
-07E0FC000007E0FC000007E0FE00000FE07E00000FC07E00000FC07F00001FC03F00001F
-803F80003F801FC0007F001FE000FF000FF001FE0007FC07FC0003FFFFF80001FFFFF000
-007FFFC000001FFF00000007FC000023247CA32C>I<7FF01FE000FFF8FFF800FFFBFFFE
-00FFFFFFFF007FFFFFFF8001FFF07FC001FF801FE001FF0007F001FE0003F801FC0003F8
-01FC0001FC01F80000FC01F80000FC01F80000FE01F800007E01F800007E01F800007E01
-F800007E01F800007E01F800007E01F800007E01F800007E01F80000FE01FC0000FC01FC
-0000FC01FC0001F801FE0003F801FF0007F001FF000FF001FF801FE001FFE07FC001FFFF
-FF8001FFFFFF0001FBFFFE0001F8FFF80001F83FC00001F800000001F800000001F80000
-0001F800000001F800000001F800000001F800000001F800000001F800000001F8000000
-01F800000001F800000001F80000007FFFE00000FFFFF00000FFFFF00000FFFFF000007F
-FFE0000027367FA32C>I<7FFE003FC0FFFF01FFF0FFFF07FFF8FFFF1FFFFC7FFF3FFFFC
-003F7FE1FC003FFF01FC003FFC00F8003FF80070003FF00000003FE00000003FE0000000
-3FC00000003F800000003F800000003F800000003F000000003F000000003F000000003F
-000000003F000000003F000000003F000000003F000000003F000000003F000000003F00
-0000003F000000003F000000003F000000003F0000007FFFFFE000FFFFFFF000FFFFFFF0
-00FFFFFFF0007FFFFFE00026247EA32C>114 D<007FF87003FFFFF80FFFFFF81FFFFFF8
-3FFFFFF87FC00FF87E0003F8FC0001F8F80001F8F80001F8F80001F8FC0000F07F000000
-7FF000003FFFC0001FFFFE000FFFFF8003FFFFE0007FFFF80001FFFC000007FC000000FE
-7800007FFC00003FFC00001FFE00001FFE00001FFF00003FFF80003EFFC000FEFFF007FC
-FFFFFFFCFFFFFFF8FFFFFFE0F8FFFF80701FFC0020247AA32C>I<001E000000003F0000
-00003F000000003F000000003F000000003F000000003F000000003F000000003F000000
-003F0000007FFFFFFF00FFFFFFFF80FFFFFFFF80FFFFFFFF807FFFFFFF00003F00000000
+03F000000003F000000003F000007FFFFFFF80FFFFFFFFC0FFFFFFFFC0FFFFFFFFC07FFF
+FFFF8022337BB22C>108 D<7F83F007E0007FCFFC1FF800FFDFFE3FFC007FFFFEFFFC00
+7FFFFFFFFE0007FE1FFC3E0007FC1FF83F0007F80FF01F0007F00FE01F0007E00FC01F00
+07E00FC01F0007E00FC01F0007C00F801F0007C00F801F0007C00F801F0007C00F801F00
+07C00F801F0007C00F801F0007C00F801F0007C00F801F0007C00F801F0007C00F801F00
+07C00F801F0007C00F801F0007C00F801F0007C00F801F0007C00F801F0007C00F801F00
+07C00F801F0007C00F801F0007C00F801F007FFC3FF87FF07FFC7FF8FFF0FFFE7FFCFFF8
+7FFC7FF8FFF07FFC3FF87FF02D2481A32C>I<7FF01FE00000FFF87FFC0000FFF9FFFE00
+00FFFBFFFF00007FFFFFFF000001FFF03F800001FFC01F800001FF801FC00001FF000FC0
+0001FE000FC00001FC000FC00001FC000FC00001F8000FC00001F8000FC00001F8000FC0
+0001F8000FC00001F8000FC00001F8000FC00001F8000FC00001F8000FC00001F8000FC0
+0001F8000FC00001F8000FC00001F8000FC00001F8000FC00001F8000FC00001F8000FC0
+0001F8000FC00001F8000FC00001F8000FC00001F8000FC0007FFFE0FFFF00FFFFF1FFFF
+80FFFFF1FFFF80FFFFF1FFFF807FFFE0FFFF0029247FA32C>I<0007FC0000001FFF0000
+007FFFC00001FFFFF00003FFFFF80007FC07FC000FF001FE001FE000FF001F80003F003F
+80003F803F00001F807E00000FC07E00000FC07E00000FC0FC000007E0FC000007E0FC00
+0007E0FC000007E0FC000007E0FC000007E0FC000007E0FE00000FE07E00000FC07E0000
+0FC07F00001FC03F00001F803F80003F801FC0007F001FE000FF000FF001FE0007FC07FC
+0003FFFFF80001FFFFF000007FFFC000001FFF00000007FC000023247CA32C>I<7FF01F
+E000FFF8FFF800FFFBFFFE00FFFFFFFF007FFFFFFF8001FFF07FC001FF801FE001FF0007
+F001FE0003F801FC0003F801FC0001FC01F80000FC01F80000FC01F80000FE01F800007E
+01F800007E01F800007E01F800007E01F800007E01F800007E01F800007E01F800007E01
+F80000FE01FC0000FC01FC0000FC01FC0001F801FE0003F801FF0007F001FF000FF001FF
+801FE001FFE07FC001FFFFFF8001FFFFFF0001FBFFFE0001F8FFF80001F83FC00001F800
+000001F800000001F800000001F800000001F800000001F800000001F800000001F80000
+0001F800000001F800000001F800000001F800000001F80000007FFFE00000FFFFF00000
+FFFFF00000FFFFF000007FFFE0000027367FA32C>I<7FFE003FC0FFFF01FFF0FFFF07FF
+F8FFFF1FFFFC7FFF3FFFFC003F7FE1FC003FFF01FC003FFC00F8003FF80070003FF00000
+003FE00000003FE00000003FC00000003F800000003F800000003F800000003F00000000
3F000000003F000000003F000000003F000000003F000000003F000000003F000000003F
-000000003F000000003F000000003F000000003F000000003F000000003F000000003F00
-0000003F000000003F0003C0003F0007E0003F0007E0003F0007E0003F0007E0003F0007
-E0003F800FE0001F801FC0001FE07FC0000FFFFF80000FFFFF000003FFFE000001FFF800
-00003FE000232E7EAD2C>I<7FF003FF8000FFF807FFC000FFF807FFC000FFF807FFC000
-7FF803FFC00001F8000FC00001F8000FC00001F8000FC00001F8000FC00001F8000FC000
-01F8000FC00001F8000FC00001F8000FC00001F8000FC00001F8000FC00001F8000FC000
-01F8000FC00001F8000FC00001F8000FC00001F8000FC00001F8000FC00001F8000FC000
-01F8000FC00001F8000FC00001F8000FC00001F8000FC00001F8001FC00001F8001FC000
-01F8003FC00001FC007FC00000FE03FFC00000FFFFFFFF00007FFFFFFF80003FFFFFFF80
-001FFFCFFF800003FE07FF0029247FA32C>I<7FFF01FFFCFFFF01FFFEFFFF83FFFEFFFF
-01FFFE7FFF01FFFC03E0000F8003E0000F8003F0001F8001F0001F0001F0001F0001F800
-3F0000F8003E0000F8003E0000FC007E00007C007C00007C007C00007E00FC00003E00F8
-00003E00F800003F01F800001F01F000001F01F000001F83F000000F83E000000F83E000
-000FC7E0000007C7C0000007C7C0000007EFC0000003EF80000003EF80000003FF800000
-01FF00000001FF00000000FE000000007C000027247EA32C>I<7FFF007FFF007FFF80FF
-FF00FFFF80FFFF807FFF80FFFF007FFF007FFF0007C00001F00007C00001F00007C00001
-F00007C00001F00007C00001F00007C00001F00003E00003E00003E00003E00003E00003
-E00003E03E03E00003E07F03E00003E07F03E00001F07F07C00001F0FF87C00001F0FF87
-C00001F0F787C00001F0F787C00001F1F7C7C00000F1F7C7800000F9E3CF800000F9E3CF
-800000FBE3EF800000FBE3EF800000FBE3EF8000007BC1EF0000007FC1FF0000007FC1FF
-0000007F80FF0000007F80FF0000003F80FE0000001F007C000029247FA32C>I<3FFF03
-FFF07FFF87FFF87FFF87FFF87FFF87FFF83FFF03FFF000FC007E0000FC00FC00007E01F8
-00003F01F000001F83F000001F87E000000FCFC0000007EF80000003FF80000001FF0000
-0001FE00000000FC000000007C00000000FE00000001FE00000001FF00000003EF800000
-07CFC000000FC7C000000F83E000001F01F000003F01F800007E00F800007C007C0000F8
-007E0001F8003F007FFF01FFFC7FFF83FFFCFFFF83FFFE7FFF83FFFC7FFF01FFFC27247E
-A32C>I<7FFF01FFFCFFFF81FFFEFFFF83FFFEFFFF81FFFE7FFF01FFFC03E0000F8001F0
-000F8001F0001F8001F8001F0000F8001F0000F8003F0000FC003E00007C003E00007E00
-7E00003E007C00003E007C00003F00FC00001F00F800001F00F800000F81F800000F81F0
-00000F81F0000007C1F0000007C3E0000007C3E0000003E3E0000003E7C0000001E7C000
-0001F7C0000001F780000000FF80000000FF80000000FF000000007F000000007F000000
-003E000000003E000000007E000000007C000000007C00000000FC00000000F800000000
-F800000C01F800003F01F000007F83F000007F87E000007E0FE000007E1FC000007FFF80
-00003FFF0000001FFE0000000FFC00000007E000000027367EA32C>I
-E
+000000003F000000003F000000003F000000003F000000003F000000003F0000007FFFFF
+E000FFFFFFF000FFFFFFF000FFFFFFF0007FFFFFE00026247EA32C>114
+D<007FF87003FFFFF80FFFFFF81FFFFFF83FFFFFF87FC00FF87E0003F8FC0001F8F80001
+F8F80001F8F80001F8FC0000F07F0000007FF000003FFFC0001FFFFE000FFFFF8003FFFF
+E0007FFFF80001FFFC000007FC000000FE7800007FFC00003FFC00001FFE00001FFE0000
+1FFF00003FFF80003EFFC000FEFFF007FCFFFFFFFCFFFFFFF8FFFFFFE0F8FFFF80701FFC
+0020247AA32C>I<001E000000003F000000003F000000003F000000003F000000003F00
+0000003F000000003F000000003F000000003F0000007FFFFFFF00FFFFFFFF80FFFFFFFF
+80FFFFFFFF807FFFFFFF00003F000000003F000000003F000000003F000000003F000000
+003F000000003F000000003F000000003F000000003F000000003F000000003F00000000
+3F000000003F000000003F000000003F000000003F000000003F0003C0003F0007E0003F
+0007E0003F0007E0003F0007E0003F0007E0003F800FE0001F801FC0001FE07FC0000FFF
+FF80000FFFFF000003FFFE000001FFF80000003FE000232E7EAD2C>I<7FF003FF8000FF
+F807FFC000FFF807FFC000FFF807FFC0007FF803FFC00001F8000FC00001F8000FC00001
+F8000FC00001F8000FC00001F8000FC00001F8000FC00001F8000FC00001F8000FC00001
+F8000FC00001F8000FC00001F8000FC00001F8000FC00001F8000FC00001F8000FC00001
+F8000FC00001F8000FC00001F8000FC00001F8000FC00001F8000FC00001F8000FC00001
+F8000FC00001F8001FC00001F8001FC00001F8003FC00001FC007FC00000FE03FFC00000
+FFFFFFFF00007FFFFFFF80003FFFFFFF80001FFFCFFF800003FE07FF0029247FA32C>I<
+7FFF01FFFCFFFF01FFFEFFFF83FFFEFFFF01FFFE7FFF01FFFC03E0000F8003E0000F8003
+F0001F8001F0001F0001F0001F0001F8003F0000F8003E0000F8003E0000FC007E00007C
+007C00007C007C00007E00FC00003E00F800003E00F800003F01F800001F01F000001F01
+F000001F83F000000F83E000000F83E000000FC7E0000007C7C0000007C7C0000007EFC0
+000003EF80000003EF80000003FF80000001FF00000001FF00000000FE000000007C0000
+27247EA32C>I<7FFF007FFF007FFF80FFFF00FFFF80FFFF807FFF80FFFF007FFF007FFF
+0007C00001F00007C00001F00007C00001F00007C00001F00007C00001F00007C00001F0
+0003E00003E00003E00003E00003E00003E00003E03E03E00003E07F03E00003E07F03E0
+0001F07F07C00001F0FF87C00001F0FF87C00001F0F787C00001F0F787C00001F1F7C7C0
+0000F1F7C7800000F9E3CF800000F9E3CF800000FBE3EF800000FBE3EF800000FBE3EF80
+00007BC1EF0000007FC1FF0000007FC1FF0000007F80FF0000007F80FF0000003F80FE00
+00001F007C000029247FA32C>I<3FFF03FFF07FFF87FFF87FFF87FFF87FFF87FFF83FFF
+03FFF000FC007E0000FC00FC00007E01F800003F01F000001F83F000001F87E000000FCF
+C0000007EF80000003FF80000001FF00000001FE00000000FC000000007C00000000FE00
+000001FE00000001FF00000003EF80000007CFC000000FC7C000000F83E000001F01F000
+003F01F800007E00F800007C007C0000F8007E0001F8003F007FFF01FFFC7FFF83FFFCFF
+FF83FFFE7FFF83FFFC7FFF01FFFC27247EA32C>I<7FFF01FFFCFFFF81FFFEFFFF83FFFE
+FFFF81FFFE7FFF01FFFC03E0000F8001F0000F8001F0001F8001F8001F0000F8001F0000
+F8003F0000FC003E00007C003E00007E007E00003E007C00003E007C00003F00FC00001F
+00F800001F00F800000F81F800000F81F000000F81F0000007C1F0000007C3E0000007C3
+E0000003E3E0000003E7C0000001E7C0000001F7C0000001F780000000FF80000000FF80
+000000FF000000007F000000007F000000003E000000003E000000007E000000007C0000
+00007C00000000FC00000000F800000000F800000C01F800003F01F000007F83F000007F
+87E000007E0FE000007E1FC000007FFF8000003FFF0000001FFE0000000FFC00000007E0
+00000027367EA32C>I E
%EndDVIPSBitmapFont
%DVIPSBitmapFont: Fb ecbx1200 12 52
/Fb 52 122 df<000001E0000003E000000FC000001F8000003F0000007E000000FC0000
@@ -2929,8 +2912,8 @@ F80000000000003FF00000000000003FF00000000000001FE00000000000001FE0000000
000000000FFFF0000000000003FFC0000000000000FE0000000000003E4D7DB445>121
D E
%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fg ecrm1200 12 9
-/Fg 9 115 df<1E007F80FF80FFC0FFC0FFE0FFE0FFE07FE01E60006000600060006000
+%DVIPSBitmapFont: Fg ecrm1200 12 10
+/Fg 10 122 df<1E007F80FF80FFC0FFC0FFE0FFE0FFE07FE01E60006000600060006000
E000C000C000C001C0018003800300070006000E001C003800700060000B1D78891B>44
D<0000FF00000007FFE000001F81F800003E007C0000FC003F0001F8001F8001F0000F80
03E00007C007C00003E007C00003E00FC00003F00F800001F01F800001F81F800001F83F
@@ -2958,58 +2941,57 @@ FFC00003FC7F800007FC3F000007FC00000007FC00000007F800000007F80000000FF800
800000003F000000007C00000000F800000000F000000001E000000003C0000000078000
00000F00000C001E00000C003C00000C0038000018007000001800E000001801C0000018
038000003807000000300E000000701FFFFFFFF01FFFFFFFF03FFFFFFFF07FFFFFFFF0FF
-FFFFFFE0FFFFFFFFE0FFFFFFFFE026427BC131>I<FFFF800000000007FFFCFFFFC00000
-00000FFFFCFFFFC0000000000FFFFC01FFC0000000000FFE00006FE0000000001BF80000
-6FE0000000001BF800006FE0000000001BF8000067F00000000033F8000067F000000000
-33F8000063F80000000063F8000063F80000000063F8000063F80000000063F8000061FC
-00000000C3F8000061FC00000000C3F8000061FC00000000C3F8000060FE0000000183F8
-000060FE0000000183F80000607F0000000303F80000607F0000000303F80000607F0000
-000303F80000603F8000000603F80000603F8000000603F80000603F8000000603F80000
-601FC000000C03F80000601FC000000C03F80000600FE000001803F80000600FE0000018
-03F80000600FE000001803F800006007F000003003F800006007F000003003F800006007
-F000003003F800006003F800006003F800006003F800006003F800006001FC0000C003F8
-00006001FC0000C003F800006001FC0000C003F800006000FE00018003F800006000FE00
-018003F800006000FE00018003F8000060007F00030003F8000060007F00030003F80000
-60003F80060003F8000060003F80060003F8000060003F80060003F8000060001FC00C00
-03F8000060001FC00C0003F8000060001FC00C0003F8000060000FE0180003F800006000
-0FE0180003F80000600007F0300003F80000600007F0300003F80000600007F0300003F8
-0000600003F8600003F80000600003F8600003F80000600003F8600003F80000600001FC
-C00003F80000600001FCC00003F80000600000FF800003F80000600000FF800003F80000
-600000FF800003F800006000007F000003F80000F000007F000003F80000F000007F0000
-03F80001F800003E000003F8000FFF00003E00000FFE00FFFFF0001C0007FFFFFCFFFFF0
-001C0007FFFFFCFFFFF0001C0007FFFFFC4E447BC359>77 D<0007FC000000003FFF8000
-0000F80FE0000003C003F00000070001F800000E0000FC00000FC0007E00001FE0007F00
-001FF0003F80001FF0003F80001FF0003F80001FF0001FC0001FF0001FC0000FE0001FC0
-000380001FC0000000001FC0000000001FC0000000001FC0000000001FC00000000FFFC0
-000001FFFFC000000FFE1FC000003FC01FC00000FF001FC00003FC001FC00007F8001FC0
-000FF0001FC0001FE0001FC0003FC0001FC0007FC0001FC0007F80001FC0007F80001FC0
-60FF00001FC060FF00001FC060FF00001FC060FF00003FC060FF00003FC060FF00003FC0
-60FF80007FC0607F8000EFC0607FC000C7E0C03FC001C7E0C01FE00783F1C007F81E03FF
-8001FFFC01FF00001FE0007C002B2E7CAC31>97 D<00007F80000003FFF000000FC07C00
-003F000F0000FC00038001F80001C003F8000FC007F0001FE007E0003FE00FE0003FE01F
-C0003FE01FC0003FE03F80003FE03F80001FC07F800007007F800000007F800000007F00
+FFFFFFE0FFFFFFFFE0FFFFFFFFE026427BC131>I<000FFFFFFE000FFFFFFE000FFFFFFE
+000003FF80000001FF00000000FF00000000FF00000000FF00000000FF00000000FF0000
+0000FF00000000FF00000000FF00000000FF00000000FF00000000FF00000000FF000000
+00FF00000000FF00000000FF00000000FF00000000FF00000000FF00000000FF00000000
+FF00000000FF00000000FF00000000FF00000000FF00000000FF00000000FF00000000FF
+00000000FF00000000FF00000000FF00000000FF00000000FF00000000FF00000000FF00
000000FF00000000FF00000000FF00000000FF00000000FF00000000FF00000000FF0000
-0000FF00000000FF00000000FF00000000FF000000007F000000007F800000007F800000
-003F800000003F800000303FC00000301FC00000700FE00000600FE00000E007F00000C0
-03F80001C001F800038000FC000700003F001E00001FC078000007FFF0000000FF800024
-2E7DAC2B>99 D<01FC00000000FFFC00000000FFFC00000000FFFC0000000007FC000000
-0003FC0000000001FC0000000001FC0000000001FC0000000001FC0000000001FC000000
-0001FC0000000001FC0000000001FC0000000001FC0000000001FC0000000001FC000000
-0001FC0000000001FC0000000001FC0000000001FC0000000001FC0000000001FC000000
-0001FC0000000001FC0000000001FC01FE000001FC07FFC00001FC1E07F00001FC3801F8
-0001FC7001FC0001FCE000FC0001FDC000FE0001FD8000FE0001FF80007F0001FF00007F
-0001FF00007F0001FE00007F0001FE00007F0001FE00007F0001FC00007F0001FC00007F
-0001FC00007F0001FC00007F0001FC00007F0001FC00007F0001FC00007F0001FC00007F
-0001FC00007F0001FC00007F0001FC00007F0001FC00007F0001FC00007F0001FC00007F
-0001FC00007F0001FC00007F0001FC00007F0001FC00007F0001FC00007F0001FC00007F
-0001FC00007F0001FC00007F0001FC00007F0001FC00007F0001FC00007F0001FC00007F
-0003FE0000FF80FFFFF83FFFFEFFFFF83FFFFEFFFFF83FFFFE2F457DC436>104
+0000FF00000000FF00000000FF00000000FF00000000FF00000000FF003F0000FF007F80
+00FF00FFC000FF00FFC000FF00FFC000FF00FFC000FF00FFC001FE00FF8001FE00FF0001
+FE006C0003FC00700003F800380007F8001C0007F0000E000FE00007001F800003E07F00
+0000FFFC0000001FE0000027467BC332>74 D<0007FC000000003FFF80000000F80FE000
+0003C003F00000070001F800000E0000FC00000FC0007E00001FE0007F00001FF0003F80
+001FF0003F80001FF0003F80001FF0001FC0001FF0001FC0000FE0001FC0000380001FC0
+000000001FC0000000001FC0000000001FC0000000001FC00000000FFFC0000001FFFFC0
+00000FFE1FC000003FC01FC00000FF001FC00003FC001FC00007F8001FC0000FF0001FC0
+001FE0001FC0003FC0001FC0007FC0001FC0007F80001FC0007F80001FC060FF00001FC0
+60FF00001FC060FF00001FC060FF00003FC060FF00003FC060FF00003FC060FF80007FC0
+607F8000EFC0607FC000C7E0C03FC001C7E0C01FE00783F1C007F81E03FF8001FFFC01FF
+00001FE0007C002B2E7CAC31>97 D<01FC01FE0000FFFC07FFC000FFFC1E07F000FFFC38
+01F80007FC7001FC0003FCE000FC0001FDC000FE0001FD8000FE0001FF80007F0001FF00
+007F0001FF00007F0001FE00007F0001FE00007F0001FE00007F0001FC00007F0001FC00
+007F0001FC00007F0001FC00007F0001FC00007F0001FC00007F0001FC00007F0001FC00
+007F0001FC00007F0001FC00007F0001FC00007F0001FC00007F0001FC00007F0001FC00
+007F0001FC00007F0001FC00007F0001FC00007F0001FC00007F0001FC00007F0001FC00
+007F0001FC00007F0001FC00007F0001FC00007F0001FC00007F0001FC00007F0001FC00
+007F0003FE0000FF80FFFFF83FFFFEFFFFF83FFFFEFFFFF83FFFFE2F2C7DAB36>110
D<03F803F0FFF81FFCFFF83C3EFFF8707F07F8E0FF03F9C0FF01F980FF01FB80FF01FB00
7E01FB003C01FF000001FE000001FE000001FE000001FE000001FC000001FC000001FC00
0001FC000001FC000001FC000001FC000001FC000001FC000001FC000001FC000001FC00
0001FC000001FC000001FC000001FC000001FC000001FC000001FC000001FC000001FC00
0001FC000001FC000001FC000001FC000003FF0000FFFFFE00FFFFFE00FFFFFE00202C7D
-AB26>114 D E
+AB26>114 D<01FC00007F00FFFC003FFF00FFFC003FFF00FFFC003FFF0007FC0001FF00
+03FC0000FF0001FC00007F0001FC00007F0001FC00007F0001FC00007F0001FC00007F00
+01FC00007F0001FC00007F0001FC00007F0001FC00007F0001FC00007F0001FC00007F00
+01FC00007F0001FC00007F0001FC00007F0001FC00007F0001FC00007F0001FC00007F00
+01FC00007F0001FC00007F0001FC00007F0001FC00007F0001FC00007F0001FC00007F00
+01FC00007F0001FC00007F0001FC00007F0001FC0000FF0001FC0000FF0001FC0000FF00
+01FC0001FF0001FC0001FF0000FC0001FF0000FE0003FF00007E00077F80007F000E7FC0
+003F001C7FFE000FC0787FFE0003FFF07FFE00007F807F002F2D7DAB36>117
+D<FFFFF001FFFCFFFFF001FFFCFFFFF001FFFC07FF00007FE003FE00001F8001FE00001F
+0001FE00000E0000FE00000C0000FF00001C00007F00001800007F00001800007F800038
+00003F80003000003F80003000001FC0006000001FC0006000001FE000E000000FE000C0
+00000FE000C0000007F00180000007F00180000007F80380000003F80300000003F80300
+000001FC0600000001FC0600000001FE0E00000000FE0C00000000FE0C000000007F1800
+0000007F18000000007FB8000000003FB0000000003FB0000000001FE0000000001FE000
+0000001FE0000000000FC0000000000FC000000000078000000000078000000000078000
+0000000300000000000300000000000600000000000600000000000600000000000C0000
+0000000C0000000000180000000000180000003C00180000007E0030000000FF00300000
+00FF0060000000FF0060000000FF00C0000000FE01C00000007C03800000007007000000
+003C1E000000000FFC0000000003F0000000002E3F7EAA33>121
+D E
%EndDVIPSBitmapFont
%DVIPSBitmapFont: Fh ecrm1728 17.28 16
/Fh 16 119 df<FFFFFFFFF0FFFFFFFFF0FFFFFFFFF0FFFFFFFFF0FFFFFFFFF0FFFFFFFF
@@ -3300,11 +3282,11 @@ ifelse
%%EndSetup
%%Page: 1 1
TeXDict begin 1 0 bop 1038 872 a Fh(T)-11 b(oprammer)45
-b(-)g(Dev)l(elop)t(ers)h(guide)1619 1307 y Fg(Marc)m(h)33
-b(21,)g(2010)515 1659 y Ff(1)131 b(De\034nitions)515
-1841 y Fe(DUT)42 b Fd(Device)19 b(Under)f(T)-7 b(est.)34
-b(The)18 b(device)h(put)g(in)n(to)f(the)h(ZIF)f(so)r(c)n(k)n(et)f(of)i
-(the)g(programmer)515 2004 y Fe(VPP)42 b Fd(Programming)26
+b(-)g(Dev)l(elop)t(ers)h(guide)1608 1307 y Fg(Jan)m(uary)33
+b(1,)f(2011)515 1659 y Ff(1)131 b(De\034nitions)515 1841
+y Fe(DUT)42 b Fd(Device)19 b(Under)f(T)-7 b(est.)34 b(The)18
+b(device)h(put)g(in)n(to)f(the)h(ZIF)f(so)r(c)n(k)n(et)f(of)i(the)g
+(programmer)515 2004 y Fe(VPP)42 b Fd(Programming)26
b(v)n(oltage)f(for)j(the)f(DUT)i(\(usually)e(12V\))515
2168 y Fe(V)m(CCX)42 b Fd(Supply)28 b(v)n(oltage)e(for)h(the)h(DUT)515
2332 y Fe(GND)41 b Fd(Ground)27 b(for)g(the)h(DUT)515
@@ -3495,21 +3477,22 @@ b(the)f(Lo)r(c)n(kbit)g(memory)-7 b(.)41 b(Reimplemen)n(t)29
b(this,)h(if)g(y)n(our)d(DUT)722 886 y(has)g(Lo)r(c)n(kbits)g(and)h
(supp)r(orts)f(writing)g(them.)515 1049 y(After)f(de\034ning)g(y)n(our)
e(\020Chip\021-deriv)n(ed)h(class)g(y)n(ou)g(need)h(to)f(register)g
-(it.)36 b(This)26 b(is)g(done)f(b)n(y)515 1148 y(calling)i
-(RegisteredChip\(\):)722 1426 y Fa(RegisteredChip\(Ch)o(ip)o(_M)o(yDe)o
-(vi)o(ce)o(,)38 b(bitfile)i(=)j(\020bitfileID\021,)c(chipID)i(=)i
-(\020myChipID\021\))515 1604 y Fd(The)20 b(class)g(\(_not_)f(an)i
-(instance)f(of)g(it\))h(is)g(passed)e(as)h(\034rst)g(parameter.)33
-b(The)21 b(ID)f(string)g(of)515 1703 y(the)25 b(required)e(bit\034le)i
-(is)f(past)g(as)g(second)g(parameter.)34 b(A)25 b(c)n(hipID)f(migh)n(t)
-h(also)e(b)r(e)i(passed.)515 1803 y(If)e(the)g(c)n(hipID)f(is)h
-(omitted,)h(the)f(bit\034leID)g(is)g(used)f(as)g(c)n(hipID.)h(There)f
-(are)f(more)h(optional)515 1903 y(parameters)31 b(to)h
-(RegisteredChip\(\).)53 b(See)33 b(the)g(inline)g(sourceco)r(de)e(do)r
-(cumen)n(tation)i(for)515 2002 y(details.)515 2234 y
-Fb(5.2)112 b(FPGA)37 b(b)s(ottom-half)g(implemen)m(tation)515
-2387 y Fd(F)-7 b(or)25 b(the)i(FPGA)h(part)e(y)n(ou)f(need)i(to)f(get)g
-(the)h(Xilinx)g(dev)n(elopmen)n(t)f(suite)g(\(ISE\))i(v)n(ersion)515
+(it.)36 b(This)26 b(is)g(done)f(b)n(y)515 1148 y(de\034ning)i(a)g
+(ChipDescription\(\):)722 1426 y Fa(ChipDescription\(C)o(hi)o(p_)o(MyD)
+o(ev)o(ic)o(e,)37 b(bitfile)k(=)i(\020bitfileID\021,)38
+b(chipID)j(=)j(\020myChipID\021\))515 1604 y Fd(The)39
+b(c)n(hip)g(class)f(\(_not_)g(an)h(instance)g(of)g(it\))g(is)g(passed)f
+(as)h(\034rst)f(parameter.)70 b(The)515 1703 y(ID)33
+b(string)f(of)g(the)h(required)f(bit\034le)h(is)g(past)f(as)g(second)g
+(parameter.)50 b(A)33 b(c)n(hipID)g(migh)n(t)515 1803
+y(also)28 b(b)r(e)h(passed.)41 b(If)29 b(the)g(c)n(hipID)h(is)f
+(omitted,)h(the)f(bit\034leID)h(is)f(used)g(as)f(c)n(hipID.)i(There)515
+1903 y(are)g(more)h(optional)g(parameters)e(to)j(ChipDescription\(\).)
+49 b(See)31 b(the)h(inline)g(sourceco)r(de)515 2002 y(do)r(cumen)n
+(tation)27 b(for)g(details.)515 2234 y Fb(5.2)112 b(FPGA)37
+b(b)s(ottom-half)g(implemen)m(tation)515 2387 y Fd(F)-7
+b(or)25 b(the)i(FPGA)h(part)e(y)n(ou)f(need)i(to)f(get)g(the)h(Xilinx)g
+(dev)n(elopmen)n(t)f(suite)g(\(ISE\))i(v)n(ersion)515
2487 y(9.2i.)35 b(It)25 b(can)g(b)r(e)g(do)n(wnloaded)f(as)g("W)-7
b(ebP)g(A)n(CK")25 b(for)f(free)h(\(as)f(in)i(b)r(eer\))f(from)f(the)i
(Xilinx)515 2586 y(homepage)g(in)i(the)g("arc)n(hiv)n(e")d(section.)722
diff --git a/libtoprammer/chip.py b/libtoprammer/chip.py
index c9c6f7c..70eea5b 100644
--- a/libtoprammer/chip.py
+++ b/libtoprammer/chip.py
@@ -227,12 +227,18 @@ class Chip:
registeredChips = []
-class RegisteredChip:
+class BitDescription:
+ def __init__(self, bitNr, description):
+ self.bitNr = bitNr
+ self.description = description
+
+class ChipDescription:
def __init__(self, chipImplClass, bitfile, chipID="",
runtimeID=(0,0),
- description="", packages=None, comment="",
+ description="", fuseDesc=(), lockbitDesc=(),
+ packages=None, comment="",
broken=False, internal=False):
- """Register a chip implementation class.
+ """Chip implementation class description.
chipImplClass => The implementation class of the chip.
bitfile => The bitfile ID string of the chip.
chipID => The chip-ID string. Will default to the bitfile ID string.
@@ -240,6 +246,8 @@ class RegisteredChip:
identifies a loaded FPGA configuration. The first number in the
tuple is an ID number and the second number is a revision number.
description => Human readable chip description string.
+ fuseDesc => Tuple of fuse bits descriptions (BitDescription(), ...)
+ lockbitDesc => Tuple of lock bits descriptions (BitDescription(), ...)
packages => List of supported packages.
Each entry is a tuple of two strings: ("PACKAGE", "description")
comment => Additional comment string.
@@ -254,6 +262,8 @@ class RegisteredChip:
self.chipID = chipID
self.runtimeID = runtimeID
self.description = description
+ self.fuseDesc = fuseDesc
+ self.lockbitDesc = lockbitDesc
self.packages = packages
self.comment = comment
self.broken = broken
@@ -326,4 +336,3 @@ class RegisteredChip:
fd.write("%25s: %s\n" % ("Support for", description))
if verbose >= 2 and self.comment:
fd.write("%25s: %s\n" % ("Comment", self.comment))
-
diff --git a/libtoprammer/chip_at89c2051dip20.py b/libtoprammer/chip_at89c2051dip20.py
index b72742f..4bc00ba 100644
--- a/libtoprammer/chip_at89c2051dip20.py
+++ b/libtoprammer/chip_at89c2051dip20.py
@@ -225,7 +225,7 @@ class Chip_AT89C2051dip20(Chip):
self.top.delay(0.001)
self.throwError("Timeout in busywait.")
-RegisteredChip(
+ChipDescription(
Chip_AT89C2051dip20,
bitfile = "at89c2051dip20",
runtimeID = (0x0005, 0x01),
diff --git a/libtoprammer/chip_atmega32dip40.py b/libtoprammer/chip_atmega32dip40.py
index f8505b1..65909fc 100644
--- a/libtoprammer/chip_atmega32dip40.py
+++ b/libtoprammer/chip_atmega32dip40.py
@@ -36,7 +36,7 @@ class Chip_ATMega32DIP40(Chip_ATMega_common):
eepromPageSize = 4,
eepromPages = 256)
-RegisteredChip(
+ChipDescription(
Chip_ATMega32DIP40,
bitfile = "atmega32dip40",
runtimeID = (0x0004, 0x01),
diff --git a/libtoprammer/chip_atmega88dip28.py b/libtoprammer/chip_atmega88dip28.py
index dcae792..3acf426 100644
--- a/libtoprammer/chip_atmega88dip28.py
+++ b/libtoprammer/chip_atmega88dip28.py
@@ -36,7 +36,7 @@ class Chip_ATMega88DIP28(Chip_ATMega_common):
eepromPageSize = 4,
eepromPages = 128)
-RegisteredChip(
+ChipDescription(
Chip_ATMega88DIP28,
bitfile = "atmega8dip28",
chipID = "atmega88dip28",
diff --git a/libtoprammer/chip_atmega8dip28.py b/libtoprammer/chip_atmega8dip28.py
index 55c5ab6..9bf2cc4 100644
--- a/libtoprammer/chip_atmega8dip28.py
+++ b/libtoprammer/chip_atmega8dip28.py
@@ -36,10 +36,43 @@ class Chip_ATMega8DIP28(Chip_ATMega_common):
eepromPageSize = 4,
eepromPages = 128)
-RegisteredChip(
+fuseDesc = (
+ BitDescription(0, "CKSEL0"),
+ BitDescription(1, "CKSEL1"),
+ BitDescription(2, "CKSEL2"),
+ BitDescription(3, "CKSEL3"),
+ BitDescription(4, "SUT0"),
+ BitDescription(5, "SUT1"),
+ BitDescription(6, "BODEN"),
+ BitDescription(7, "BODLEVEL"),
+ BitDescription(8, "BOOTRST"),
+ BitDescription(9, "BOOTSZ0"),
+ BitDescription(10, "BOOTSZ1"),
+ BitDescription(11, "EESAVE"),
+ BitDescription(12, "CKOPT"),
+ BitDescription(13, "SPIEN"),
+ BitDescription(14, "WDTON"),
+ BitDescription(15, "RSTDISBL"),
+)
+
+lockbitDesc = (
+ BitDescription(0, "LB1"),
+ BitDescription(1, "LB2"),
+ BitDescription(2, "BLB01"),
+ BitDescription(3, "BLB02"),
+ BitDescription(4, "BLB11"),
+ BitDescription(5, "BLB12"),
+ BitDescription(6, "Unused"),
+ BitDescription(7, "Unused"),
+ BitDescription(8, "Unused"),
+)
+
+ChipDescription(
Chip_ATMega8DIP28,
bitfile = "atmega8dip28",
runtimeID = (0x0003, 0x01),
description = "Atmel AtMega8",
+ fuseDesc = fuseDesc,
+ lockbitDesc = lockbitDesc,
packages = ( ("DIP28", ""), )
)
diff --git a/libtoprammer/chip_attiny13dip8.py b/libtoprammer/chip_attiny13dip8.py
index 911430e..f4cccda 100644
--- a/libtoprammer/chip_attiny13dip8.py
+++ b/libtoprammer/chip_attiny13dip8.py
@@ -358,7 +358,7 @@ class Chip_AtTiny13dip8(Chip):
self.top.delay(0.01)
self.throwError("Timeout waiting for SDO.")
-RegisteredChip(
+ChipDescription(
Chip_AtTiny13dip8,
bitfile = "attiny13dip8",
runtimeID = (0x0001, 0x01),
diff --git a/libtoprammer/chip_attiny26dip20.py b/libtoprammer/chip_attiny26dip20.py
index dec5bf3..3461545 100644
--- a/libtoprammer/chip_attiny26dip20.py
+++ b/libtoprammer/chip_attiny26dip20.py
@@ -36,7 +36,7 @@ class Chip_ATTiny26DIP20(Chip_ATMega_common):
eepromPageSize = 4,
eepromPages = 32)
-RegisteredChip(
+ChipDescription(
Chip_ATTiny26DIP20,
bitfile = "attiny26dip20",
runtimeID = (0x0002, 0x01),
diff --git a/libtoprammer/chip_m2764a.py b/libtoprammer/chip_m2764a.py
index 90bbb4f..8c97f68 100644
--- a/libtoprammer/chip_m2764a.py
+++ b/libtoprammer/chip_m2764a.py
@@ -170,7 +170,7 @@ class Chip_M2764A(Chip):
self.top.delay(0.01)
self.throwError("Timeout in busywait.")
-RegisteredChip(
+ChipDescription(
Chip_M2764A,
bitfile = "m2764a",
runtimeID = (0x0006, 0x01),
diff --git a/libtoprammer/chip_m8cissp.py b/libtoprammer/chip_m8cissp.py
index 504056d..a3d5102 100644
--- a/libtoprammer/chip_m8cissp.py
+++ b/libtoprammer/chip_m8cissp.py
@@ -352,7 +352,7 @@ class Chip_M8C_ISSP(Chip):
self.__loadVectorInputMask(inputMask)
self.__loadVector(vector)
-RegisteredChip(
+ChipDescription(
Chip_M8C_ISSP,
bitfile = "m8c-issp",
runtimeID = (0x0007, 0x01),
diff --git a/libtoprammer/chip_unitest.py b/libtoprammer/chip_unitest.py
index a6ced82..6507f6a 100644
--- a/libtoprammer/chip_unitest.py
+++ b/libtoprammer/chip_unitest.py
@@ -139,7 +139,7 @@ class Chip_Unitest(Chip):
self.__updateOut()
self.top.flushCommands()
-RegisteredChip(
+ChipDescription(
Chip_Unitest,
bitfile = "unitest",
runtimeID = (0x0008, 0x01),
diff --git a/libtoprammer/chip_w29ee011dip32.py b/libtoprammer/chip_w29ee011dip32.py
index afa27cc..a4802b6 100644
--- a/libtoprammer/chip_w29ee011dip32.py
+++ b/libtoprammer/chip_w29ee011dip32.py
@@ -222,7 +222,7 @@ class Chip_w29ee011dip32(Chip):
self.top.delay(0.01)
self.throwError("Timeout in busywait.")
-RegisteredChip(
+ChipDescription(
Chip_w29ee011dip32,
bitfile = "w29ee011dip32",
runtimeID = (0x0009, 0x01),
diff --git a/libtoprammer/toprammer_main.py b/libtoprammer/toprammer_main.py
index 8aec53d..9f06495 100644
--- a/libtoprammer/toprammer_main.py
+++ b/libtoprammer/toprammer_main.py
@@ -121,7 +121,7 @@ class TOP:
if self.chip:
self.shutdownChip()
# Find the implementation of the chip.
- (descriptor, self.chip) = RegisteredChip.find(self.topType, chipID, self.usebroken)
+ (descriptor, self.chip) = ChipDescription.find(self.topType, chipID, self.usebroken)
if not self.chip:
raise TOPException("Did not find an implementation for the chip %s" % chipID)
self.chip.setTOP(self)
diff --git a/toprammer b/toprammer
index b1ecaa8..be3ea5d 100755
--- a/toprammer
+++ b/toprammer
@@ -204,7 +204,7 @@ def main(argv):
try:
if opt_action == "print-list":
- RegisteredChip.dumpAll(sys.stdout, verbose=opt_verbose, showBroken=True)
+ ChipDescription.dumpAll(sys.stdout, verbose=opt_verbose, showBroken=True)
return 0
top = TOP(busDev = opt_device,
diff --git a/toprammer-gui b/toprammer-gui
index 2c9e007..0e6f7da 100755
--- a/toprammer-gui
+++ b/toprammer-gui
@@ -375,6 +375,7 @@ class Console(QDockWidget):
class BufferWidget(QWidget):
def __init__(self, mainWindow, name):
QWidget.__init__(self, mainWindow)
+ self.mainWindow = mainWindow
self.name = name
self.hide()
self.setLayout(QGridLayout(self))
@@ -419,11 +420,17 @@ class InfoBufferWidget(BufferWidget):
l = QLabel("Chip name:", self)
self.layout().addWidget(l, 0, 1)
self.chipName = QLabel(self)
+ font = self.chipName.font()
+ font.setBold(True)
+ self.chipName.setFont(font)
self.layout().addWidget(self.chipName, 0, 2)
l = QLabel("Chip signature bytes:", self)
self.layout().addWidget(l, 1, 1)
self.chipSig = QLabel(self)
+ font = self.chipSig.font()
+ font.setBold(True)
+ self.chipSig.setFont(font)
self.layout().addWidget(self.chipSig, 1, 2)
self.layout().setColumnStretch(3, 99)
@@ -501,8 +508,9 @@ class ImageBufferWidget(BufferWidget):
self.loadImage(None)
class BitBufferWidget(BufferWidget):
- def __init__(self, mainWindow, name):
+ def __init__(self, mainWindow, name, bitDescriptionsAttr):
BufferWidget.__init__(self, mainWindow, name)
+ self.bitDescriptionsAttr = bitDescriptionsAttr
self.bitsAreaScroll = QScrollArea(self)
self.layout().addWidget(self.bitsAreaScroll, 0, 0)
@@ -513,6 +521,19 @@ class BitBufferWidget(BufferWidget):
self.image = None
self.checkboxes = []
+ def __getBitDescription(self, bitNr):
+ if not self.mainWindow.currentChipDescription:
+ return ""
+ bitDescList = getattr(self.mainWindow.currentChipDescription,
+ self.bitDescriptionsAttr, None)
+ if not bitDescList:
+ return ""
+ bitDesc = filter(lambda x: x.bitNr == bitNr,
+ bitDescList)
+ if not bitDesc:
+ return ""
+ return bitDesc[0].description
+
def loadImage(self, image):
self.image = image
for checkbox in self.checkboxes:
@@ -525,14 +546,29 @@ class BitBufferWidget(BufferWidget):
return
self.bitsArea = QWidget(self)
self.bitsArea.setLayout(QGridLayout(self.bitsArea))
+ self.bitsArea.layout().addWidget(QLabel("Currently set %s:" % self.getName(),
+ self.bitsArea),
+ 0, 0)
+ self.hexView = QLabel(self.bitsArea)
+ font = self.hexView.font()
+ font.setBold(True)
+ self.hexView.setFont(font)
+ self.bitsArea.layout().addWidget(self.hexView, 0, 1)
for i in range(0, len(image) * 8):
- checkbox = QCheckBox("Bit %d programmed" % i, self.bitsArea)
+ desc = self.__getBitDescription(i)
+ if desc:
+ desc = " (%s)" % desc
+ checkbox = QCheckBox("bit %d%s" % (i, desc), self.bitsArea)
if ord(image[i // 8]) & (1 << (i % 8)):
checkbox.setCheckState(Qt.Checked)
- self.bitsArea.layout().addWidget(checkbox, i, 0)
+ self.bitsArea.layout().addWidget(checkbox, 1 + i, 0, 1, 2)
self.connect(checkbox, SIGNAL("stateChanged(int)"),
self.__bitStateChanged)
self.checkboxes.append(checkbox)
+ self.__updateHexView()
+
+ def __updateHexView(self):
+ self.hexView.setText(bin2hex(self.image))
self.bitsAreaScroll.setWidget(self.bitsArea)
def __bitStateChanged(self, unused):
@@ -548,6 +584,7 @@ class BitBufferWidget(BufferWidget):
i = 0
tmp = 0
assert(i == 0)
+ self.__updateHexView()
def getRawData(self):
return self.image
@@ -571,8 +608,8 @@ class BufferTabWidget(QTabWidget):
self.infoBuffer = InfoBufferWidget(mainWindow, "chip info")
self.progmemBuffer = ImageBufferWidget(mainWindow, "program memory")
self.eepromBuffer = ImageBufferWidget(mainWindow, "(E)EPROM memory")
- self.fuseBuffer = BitBufferWidget(mainWindow, "fuse bits")
- self.lockBuffer = BitBufferWidget(mainWindow, "lock bits")
+ self.fuseBuffer = BitBufferWidget(mainWindow, "fuse bits", "fuseDesc")
+ self.lockBuffer = BitBufferWidget(mainWindow, "lock bits", "lockbitDesc")
self.setTabPosition(self.South)
self.__addBufferTab(self.infoBuffer)
@@ -655,14 +692,14 @@ class ChipSelectDialog(QDialog):
self.setLayout(QGridLayout(self))
self.chipList = QListWidget(self)
- for registeredChip in registeredChips:
- if registeredChip.broken:
+ for chipDescription in registeredChips:
+ if chipDescription.broken:
continue
- if registeredChip.internal:
+ if chipDescription.internal:
continue
- item = QListWidgetItem(registeredChip.description,
+ item = QListWidgetItem(chipDescription.description,
self.chipList)
- item.setData(Qt.UserRole, registeredChip)
+ item.setData(Qt.UserRole, chipDescription)
self.chipList.sortItems()
self.layout().addWidget(self.chipList, 0, 0, 1, 2)
@@ -691,8 +728,8 @@ class ChipSelectDialog(QDialog):
item = self.chipList.currentItem()
if not item:
return None
- registeredChip = item.data(Qt.UserRole).toPyObject()
- return registeredChip
+ chipDescription = item.data(Qt.UserRole).toPyObject()
+ return chipDescription
class StatusBar(QStatusBar):
def __init__(self, mainWindow):
@@ -730,6 +767,7 @@ class MainWindow(QMainWindow):
self.setWindowTitle("TOPrammer - Open Source programming suite")
self.chipSupportFlags = 0 # Chip.SUPPORT_... for the loaded chip
+ self.currentChipDescription = None
self.setStatusBar(StatusBar(self))
self.topToolBar = TopToolBar(self)
@@ -869,12 +907,12 @@ class MainWindow(QMainWindow):
dlg = ChipSelectDialog(self)
if dlg.exec_() != QDialog.Accepted:
return
- registeredChip = dlg.getSelectedChip()
- if not registeredChip:
+ chipDescription = dlg.getSelectedChip()
+ if not chipDescription:
return
- self.currentRegisteredChip = registeredChip
+ self.currentChipDescription = chipDescription
self.runHardwareTask(HwThread.TASK_INITCHIP,
- registeredChip.chipID)
+ chipDescription.chipID)
def readChip(self):
self.runHardwareTask(HwThread.TASK_READALL)
@@ -958,7 +996,7 @@ class MainWindow(QMainWindow):
(self.chipSupportFlags, asciiArtLayout) = returnValue
self.bufferTab.setupBuffers(self.chipSupportFlags)
self.bufferTab.infoBuffer.clear()
- self.bufferTab.infoBuffer.setChipName(self.currentRegisteredChip.description)
+ self.bufferTab.infoBuffer.setChipName(self.currentChipDescription.description)
self.bufferTab.infoBuffer.setChipLayout(asciiArtLayout)
elif task == HwThread.TASK_ERASE:
pass # Nothing to do
diff --git a/toprammer-layout b/toprammer-layout
index 68961df..e8dc640 100755
--- a/toprammer-layout
+++ b/toprammer-layout
@@ -96,7 +96,7 @@ def main(argv):
raise ValueError()
generator = None
- (unused, chip) = RegisteredChip.find(programmer, package, allowBroken=True)
+ (unused, chip) = ChipDescription.find(programmer, package, allowBroken=True)
if not chip:
if vccxPin is None or gndPin is None:
print "-v|--vccx and -g|--gnd " +\
bues.ch cgit interface