From 0f58f7d7ea61aa6ec2954bda3fb48eaf70fb26c2 Mon Sep 17 00:00:00 2001 From: Michael Buesch Date: Sat, 1 Jan 2011 17:13:59 +0100 Subject: Add support for lockbit/fuse descriptions Signed-off-by: Michael Buesch --- README-DEVELOPERS.lyx | 10 +- README-DEVELOPERS.ps | 419 +++++++++++++++++------------------- libtoprammer/chip.py | 17 +- libtoprammer/chip_at89c2051dip20.py | 2 +- libtoprammer/chip_atmega32dip40.py | 2 +- libtoprammer/chip_atmega88dip28.py | 2 +- libtoprammer/chip_atmega8dip28.py | 35 ++- libtoprammer/chip_attiny13dip8.py | 2 +- libtoprammer/chip_attiny26dip20.py | 2 +- libtoprammer/chip_m2764a.py | 2 +- libtoprammer/chip_m8cissp.py | 2 +- libtoprammer/chip_unitest.py | 2 +- libtoprammer/chip_w29ee011dip32.py | 2 +- libtoprammer/toprammer_main.py | 2 +- toprammer | 2 +- toprammer-gui | 72 +++++-- toprammer-layout | 2 +- 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>I77 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 +D121 +D E %EndDVIPSBitmapFont %DVIPSBitmapFont: Fh ecrm1728 17.28 16 /Fh 16 119 df 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 " +\ -- cgit v1.2.3