Another late commit from bunch of updates I made over a month ago..
Most progress was on jtag lua statemachine code. From what I recall I tested and verified most state change possibilities with logic analyzer. So they should be fairly good. Possible I didn't test all later ones, or things are partly unfinished, but my best guess is they're good. Appears was able to erase MachXO CPLD. Added time delay for run test. Did some basic testing for gameboy power switching circuit. Also just got STM8S001 CIC programming working for discrete boards via A0. Pretty sure I broke EXP0 in the process for SNES boards.. So need to go back and fix that I think due to new means of changing swim pin.
This commit is contained in:
parent
3c359ac5ca
commit
fafe706481
|
|
@ -36,6 +36,7 @@ STARTUP=$(BASE)/include_stm/startup_ARM$(CORE).S
|
|||
|
||||
# -Os -flto -ffunction-sections -fdata-sections to compile for code size
|
||||
CFLAGS=$(ARCH_FLAGS) $(STARTUP_DEFS) -Os -flto -ffunction-sections -fdata-sections -g
|
||||
#CFLAGS=$(ARCH_FLAGS) $(STARTUP_DEFS) -flto -ffunction-sections -fdata-sections -g
|
||||
CXXFLAGS=$(CFLAGS)
|
||||
|
||||
# Link for code size
|
||||
|
|
|
|||
Binary file not shown.
|
|
@ -1,4 +1,4 @@
|
|||
:100000000C9476000C94950D0C9493000C94930032
|
||||
:100000000C9476000C94030F0C9493000C949300C2
|
||||
:100010000C9493000C9493000C9493000C94930014
|
||||
:100020000C9493000C9493000C9493000C94930004
|
||||
:100030000C9493000C9493000C9493000C949300F4
|
||||
|
|
@ -13,31 +13,31 @@
|
|||
:1000C00049006E00660069006E00690074006500FA
|
||||
:1000D0004E00650073004C006900760065007300F7
|
||||
:1000E0002E0063006F006D000403090411241FBE7D
|
||||
:1000F000CFEFD4E0DEBFCDBF11E0A0E0B1E0E6EA93
|
||||
:10010000FDE102C005900D92A630B107D9F723E0BA
|
||||
:10011000A6E0B1E001C01D92AD3AB207E1F70E943E
|
||||
:10012000A90E0C94D10E0C9400000F931F93CF9343
|
||||
:10013000DF93EC01FB01D9010091470110914801C7
|
||||
:1000F000CFEFD4E0DEBFCDBF11E0A0E0B1E0E4E996
|
||||
:10010000F0E202C005900D92A630B107D9F723E0C6
|
||||
:10011000A6E0B1E001C01D92AD3DB207E1F70E943B
|
||||
:1001200017100C9448100C9400000F931F93CF935A
|
||||
:10013000DF93EC01FB01D9010091490110914A01C3
|
||||
:10014000888187FF09C08E818C93442399F00481B4
|
||||
:10015000158180E883831DC08FEF8C938E818093FF
|
||||
:100160003201442309F44BC070936403609363032A
|
||||
:1001700080E9F0CFE0912001F09121018381883D59
|
||||
:10018000A1F50481158180E88383E0912001F0913D
|
||||
:1001900021011782E0912001F091210183818039B2
|
||||
:1001A000F1F48A81813711F08034C9F4E09163035E
|
||||
:1001B000F09164030480F581E02D8C818083E091CF
|
||||
:1001C0006303F09164030480F581E02D8D818183C8
|
||||
:1001D000E0916303F091640387818E5F8783C80198
|
||||
:100160003401442309F44BC0709366036093650324
|
||||
:1001700080E9F0CFE0912101F09122018381883D57
|
||||
:10018000A1F50481158180E88383E0912101F0913C
|
||||
:1001900022011782E0912101F091220183818039AF
|
||||
:1001A000F1F48A81813711F08034C9F4E09165035C
|
||||
:1001B000F09166030480F581E02D8C818083E091CD
|
||||
:1001C0006503F09166030480F581E02D8D818183C4
|
||||
:1001D000E0916503F091660387818E5F8783C80194
|
||||
:1001E000DF91CF911F910F910895803D11F41C92E2
|
||||
:1001F000CCCF8FEF8C9380E10E947A07C6CFE0913D
|
||||
:100200002001F09121018381811106C0F0936403E4
|
||||
:10021000E093630380E9B8CF883969F7E8CFE3E575
|
||||
:10022000F1E08FEF819391E0E336F907D9F78093FE
|
||||
:10023000460180932501809345018093240180939A
|
||||
:10024000360180931301809335018093120181E080
|
||||
:100250000C947A07CF93DF93FC0150E0CA01820F20
|
||||
:1001F000CCCF8FEF8C9380E10E942D09C6CFE09188
|
||||
:100200002101F09122018381811106C0F0936603E0
|
||||
:10021000E093650380E9B8CF883969F7E8CFE5E571
|
||||
:10022000F1E08FEF819391E0E536F907D9F78093FC
|
||||
:100230004801809327018093470180932601809392
|
||||
:10024000380180931401809337018093130181E07A
|
||||
:100250000C942D09CF93DF93FC0150E0CA01820F6B
|
||||
:10026000911D4197E4F52223E1F183818F3FD9F578
|
||||
:1002700082818F3FD1F5DA01AD5ABE4FED0180E0AA
|
||||
:1002700082818F3FD1F5DA01AB5ABE4FED0180E0AC
|
||||
:1002800099919F3FA1F58F5F2813FACF6283138264
|
||||
:10029000982F9295990F907E915096831782108691
|
||||
:1002A0001182108211861286138614861586168690
|
||||
|
|
@ -48,10 +48,10 @@
|
|||
:1002F000F3CFCF93DF93DC01EB019A0112969C912F
|
||||
:10030000129780ED890F803318F513968C9113970F
|
||||
:10031000813041F0E8F08230A9F08330B1F085EB14
|
||||
:10032000888346C0E2E2F1E0913509F476C048F5F1
|
||||
:10032000888346C0E4E2F1E0913509F476C048F5EF
|
||||
:10033000913309F449C078F49923B9F19033E1F18C
|
||||
:1003400084EBEECFE3E3F1E0EFCFE0E1F1E0ECCFDF
|
||||
:10035000E3E4F1E0E9CF933309F446C0E8F19035E6
|
||||
:1003400084EBEECFE5E3F1E0EFCFE1E1F1E0ECCFDC
|
||||
:10035000E5E4F1E0E9CF933309F446C0E8F19035E4
|
||||
:1003600079F7188286E0898386818A8383818B83EB
|
||||
:1003700087818C8380858D8382818E8387858F831F
|
||||
:1003800017C0903808F05FC0903708F055C090361D
|
||||
|
|
@ -61,55 +61,55 @@
|
|||
:1003C0009C9191878287F3CF14968C911497159600
|
||||
:1003D0009C9193878487EBCF14968C9114971596F4
|
||||
:1003E0009C9195878687E3CF14968C918787DFCF82
|
||||
:1003F000188281E089831496ED91FC911597ED5A4E
|
||||
:1003F000188281E089831496ED91FC911597EB5A50
|
||||
:10040000FE4F80818A83D4CF188281E08983E09176
|
||||
:100410002001F09121018381F5CF188286E0898344
|
||||
:100410002101F09122018381F5CF188286E0898342
|
||||
:1004200081858A8382858B8383858C8384858D8374
|
||||
:1004300085858E838685A3CF40E0BF01CD01DF9106
|
||||
:10044000CF910C949500892F8770813049F0F8F096
|
||||
:10045000823001F1833009F062CFE0E1F1E002C0C7
|
||||
:10046000E2E2F1E0903808F4A3CF9838B0F0905968
|
||||
:10045000823001F1833009F062CFE1E1F1E002C0C6
|
||||
:10046000E4E2F1E0903808F4A3CF9838B0F0905966
|
||||
:10047000983008F09DCF188213968C91139780873F
|
||||
:1004800014968D919C9115979183808391CFE3E48D
|
||||
:10049000F1E0E8CFE3E3F1E0E5CF14964C91149757
|
||||
:1004800014968D919C9115979183808391CFE5E48B
|
||||
:10049000F1E0E8CFE5E3F1E0E5CF14964C91149755
|
||||
:1004A00015966C91159713962C91CF010E942A01F5
|
||||
:1004B00037CF90914601809125018F3F79F481E0FB
|
||||
:1004C0009F3F09F480E0909136019F3F09F083E05F
|
||||
:1004D000909113019F3F09F084E0089582E0F3CFEB
|
||||
:1004E000623059F421E08334920749F121E08232ED
|
||||
:1004F000920789F483E491E00EC0633069F421E04F
|
||||
:1005000083349207E1F021E082329207D9F021E0B2
|
||||
:100510008333920779F308956430E9F721E0833457
|
||||
:10052000920769F021E08232920761F021E0833383
|
||||
:10053000920759F021E08031920769F7DBCF82E220
|
||||
:1005400091E0089583E391E0089580E191E00895BA
|
||||
:100550001F93CF93DF930E948007823D09F071C003
|
||||
:100560000E9459028093060183E491E09093210157
|
||||
:10057000809320010E948007823DA1F4D091060162
|
||||
:100580008091200190912101C1E0CD1708F45FC056
|
||||
:10059000909321018093200120E8FC01238380EDCA
|
||||
:1005A0000E947A070E948007823F41F480EF0E94F8
|
||||
:1005B0007A07E0912001F091210113820E948007C7
|
||||
:1005C000C82F803DE1F48091200190912101FC0130
|
||||
:1004B00037CF90914801809127018F3F79F481E0F7
|
||||
:1004C0009F3F09F480E0909138019F3F09F083E05D
|
||||
:1004D000909114019F3F09F084E0089582E0F3CFEA
|
||||
:1004E000623059F421E08534920749F121E08432E9
|
||||
:1004F000920789F485E491E00EC0633069F421E04D
|
||||
:1005000085349207E1F021E084329207D9F021E0AE
|
||||
:100510008533920779F308956430E9F721E0853453
|
||||
:10052000920769F021E08432920761F021E085337F
|
||||
:10053000920759F021E08131920769F7DBCF84E21D
|
||||
:1005400091E0089585E391E0089581E191E00895B7
|
||||
:100550001F93CF93DF930E943309823D09F071C04E
|
||||
:100560000E9459028093060185E491E09093220154
|
||||
:10057000809321010E943309823DA1F4D0910601AC
|
||||
:100580008091210190912201C1E0CD1708F45FC054
|
||||
:10059000909322018093210120E8FC01238380EDC8
|
||||
:1005A0000E942D090E943309823F41F480EF0E948E
|
||||
:1005B0002D09E0912101F091220113820E9433095B
|
||||
:1005C000C82F803DE1F48091210190912201FC012E
|
||||
:1005D00023812038A1F4609106010E94700290935B
|
||||
:1005E000210180932001FC011782C3830E943F03F5
|
||||
:1005F000E0912001F0912101882371F183830E9411
|
||||
:100600008007182F803FC9F4C0912001D0912101AB
|
||||
:1005E000220180932101FC011782C3830E943F03F3
|
||||
:1005F000E0912101F0912201882371F183830E940F
|
||||
:100600003309182F803FC9F4C0912101D0912201F4
|
||||
:100610008B81883991F460910601CE010E947002AD
|
||||
:100620009093210180932001FC0113821B83CE0152
|
||||
:100630000E94E5048823C9F08B83DF91CF911F913D
|
||||
:1006400008950E948007823F09F094CF89CF6D2FD3
|
||||
:100620009093220180932101FC0113821B83CE0150
|
||||
:100630000E941D058823C9F08B83DF91CF911F9104
|
||||
:1006400008950E943309823F09F094CF89CF6D2F1E
|
||||
:100650000E947002CF5F99CF208580819181820FA7
|
||||
:10066000911D9183808388EDC9CF84EF8B8328858A
|
||||
:1006700088819981820F911D99838883DECF0F93A2
|
||||
:10068000CF93DF93EC01688179818985823111F103
|
||||
:1006900030F4803169F08131A1F083EC05C0833101
|
||||
:1006A000D9F08431D1F780E0DF91CF910F91089597
|
||||
:1006B00060680FEF2E814A818C819D810E94E9063E
|
||||
:1006C00007C00FEF2E814A818C819D810E942007F7
|
||||
:1006B00060680FEF2E814A818C819D810E949C0889
|
||||
:1006C00007C00FEF2E814A818C819D810E94D30843
|
||||
:1006D0008F83E9CF6066EDCF8FEF84B9CB01880FB0
|
||||
:1006E000892F881F990B919585B95F9A5F9814B8E7
|
||||
:1006F00060680FEF2E814A818C819D810E94AD0A36
|
||||
:1006F00060680FEF2E814A818C819D810E94600C81
|
||||
:10070000E7CF7F928F929F92AF92BF92CF92DF926C
|
||||
:10071000EF92FF920F931F93CF93DF936A015901DA
|
||||
:10072000DA011796CC91D0E0E62EF12CFE2CEE24C7
|
||||
|
|
@ -120,7 +120,7 @@
|
|||
:100770009AE2F501099560EA85E595E5F5010995A7
|
||||
:10078000CE0199274C018E289F28D6011496ED9111
|
||||
:10079000FC911597E80FF91F6081C401F5010995D7
|
||||
:1007A0000E94760CC401F8010995782EC401F80165
|
||||
:1007A0000E94E40DC401F8010995782EC401F801F6
|
||||
:1007B00009957812F5CF2196BBCF7F928F929F92A9
|
||||
:1007C000AF92BF92CF92DF92EF92FF920F931F935F
|
||||
:1007D000CF93DF936A015901DA011796CC91D0E0EB
|
||||
|
|
@ -131,347 +131,394 @@
|
|||
:10082000F501099565E58AEA9AE0F501099560EA1E
|
||||
:1008300085E595E1F5010995CE0199274C018E28B2
|
||||
:100840009F28D6011496ED91FC911597E80FF91F9A
|
||||
:100850006081C401F50109950E94760CC401F8017C
|
||||
:100850006081C401F50109950E94E40DC401F8010D
|
||||
:100860000995782EC401F80109957812F5CF2196E3
|
||||
:10087000BBCF4F925F926F927F928F929F92AF9277
|
||||
:10088000BF92CF92DF92EF92FF920F931F93CF937D
|
||||
:10089000DF93662E7A01E901DA0117965C90852CC8
|
||||
:1008A000912CA89558986AEA8AEA9AE0F901099584
|
||||
:1008B00065E585E595E0FE01099560E28AEA9AE042
|
||||
:1008C000FE010995712C762C6624D70116968C9121
|
||||
:1008D000169790E08815990520F517965C9260E9C7
|
||||
:1008E00080E090E0FE01099560E080E090E0FE018C
|
||||
:1008F000099560EF80E090E0FE010995589A80E04C
|
||||
:10090000DF91CF911F910F91FF90EF90DF90CF90EB
|
||||
:10091000BF90AF909F908F907F906F905F904F901F
|
||||
:10092000089580EA0E94A00AC52CD12C5601A62861
|
||||
:10093000B728D7011496ED91FC911597EC0DFD1D8C
|
||||
:100940006081C501FE010995589AA8950E94760C10
|
||||
:10095000C501F80109955898D7011496ED91FC91BD
|
||||
:100960001597EC0DFD1D4080841541F0589A482ED6
|
||||
:10097000C501F80109955898481213C0D70114967B
|
||||
:100980008D919C911597C80ED91EF6018081481251
|
||||
:1009900019C05394FFEF8F1A9F0A5198599A59988A
|
||||
:1009A00094CF0000000000000000000000000000E4
|
||||
:1009B00000000000000000000000589AC501F80186
|
||||
:1009C0000995D5CF519A599A80CF0F931F93AC01B7
|
||||
:1009D000FC01608171819185923159F030F4903140
|
||||
:1009E00061F0913199F083EC05C09331B9F0943105
|
||||
:1009F000D1F780E01F910F910895606804E216E03E
|
||||
:100A000025E136E080E00E948103F3CF0CE416E09C
|
||||
:100A100020E636E080E00E94DD03EBCF8FEF84B963
|
||||
:100A2000CB01880F892F881F990B919585B95F9A03
|
||||
:100A30005F9814B860680DE51AE02EE63AE080E0B1
|
||||
:100A40000E943904D6CF14B88FEF85B93F9A4798E2
|
||||
:100A500081B911B882B914B885B914B885B9389874
|
||||
:100A6000409A3998419A3A98429A3C98449A3D98CB
|
||||
:100A7000459A3E98469A53985B9A55985D9A3B984A
|
||||
:100A8000439A3F98479A57985F9A50985898519828
|
||||
:100A9000599A08950E942305399A419A389A4098A4
|
||||
:100AA0003A9A429A3C9A449A3D9A459A14B88FEFE2
|
||||
:100AB00085B914B885B914B885B93F9A479881B9F2
|
||||
:100AC00012B884B915B8479A479814B808950E9487
|
||||
:100AD0002305399A419A3C9A449A3D9A459A589AE4
|
||||
:100AE000509A14B88FEF85B914B885B914B885B980
|
||||
:100AF0003F9A479881B912B884B915B8479A479870
|
||||
:100B000014B814B885B9579A5F9884B915B85F9A24
|
||||
:100B10005F9814B80895823031F0833011F081303D
|
||||
:100B2000A1F480E008955098589A88E08093820359
|
||||
:100B300089E290E0909381038093800381E090E0CC
|
||||
:100B400090937F0380937E03ECCF87E908955898B4
|
||||
:100B5000509A000089B15098589880FD22C0509852
|
||||
:100B6000589A59B149B1000039B10000000029B1CB
|
||||
:100B700000000000000099B100000000000000002B
|
||||
:100B800089B15098589850FD0EC040FD0EC030FD00
|
||||
:100B90000EC020FD0EC090FD0EC080FD0EC080EE88
|
||||
:100BA000089580EF089580E0089581E0089583E03E
|
||||
:100BB000089586E008958AE008958FE008950F93E0
|
||||
:100BC0001F93CF93DF931F92CDB7DEB78901823099
|
||||
:100BD00009F130F4882381F08130C1F086E910C03A
|
||||
:100BE0008330D9F08038D1F781E0F90180830E9409
|
||||
:100BF000A705F80181830CC089830E9423058981A0
|
||||
:100C00000F90DF91CF911F910F9108950E944A0597
|
||||
:100C100080E0F6CF0E946705FBCF842F0F90DF9115
|
||||
:100C2000CF911F910F910C948B0582B98FEF84B9EE
|
||||
:100C300095B9479A479814B884B965B9509A5898A5
|
||||
:100C40005098589A14B8089582B92FEF24B995B9DD
|
||||
:100C5000479A479814B8409A97FD419800000000C1
|
||||
:100C60000000000083B14098419A08955098589828
|
||||
:100C700082B92FEF24B995B9479A479814B842988A
|
||||
:100C800024B965B9409A97FD41980000000040984A
|
||||
:100C9000419A429A14B80895811520E2920708F407
|
||||
:100CA000906882B98FEF84B995B9479A479814B87C
|
||||
:100CB0004498000000000000000083B1449A0895A9
|
||||
:100CC000811520E2920708F4906882B98FEF84B909
|
||||
:100CD00095B9479A479814B884B965B90000459802
|
||||
:100CE0000000459A14B808958FEF84B994E095B93F
|
||||
:100CF000479A479814B829B1207230E084B988E047
|
||||
:100D000085B9479A479814B889B1807290E041E05C
|
||||
:100D10002115310509F040E061E0009709F060E03D
|
||||
:100D2000442311F0611116C051E0232B09F450E067
|
||||
:100D300021E0892B09F420E0552311F021110CC08A
|
||||
:100D4000662311F051110AC0442311F0211108C08B
|
||||
:100D50008FEF089580E1089581E1089582E108957B
|
||||
:100D600083E108950F931F93CF93C82FCA01890180
|
||||
:100D7000C23001F130F4CC2391F0C130B9F0C0EAB7
|
||||
:100D800010C0C238D1F0C338F1F0C138C1F721E04A
|
||||
:100D9000F80120830E942406F801818309C00E9483
|
||||
:100DA00015068C2FCF911F910F9108950E94600618
|
||||
:100DB000C0E0F7CF0E943606FBCF21E0F801208388
|
||||
:100DC0000E944C06E9CF81E0F90180830E947406FD
|
||||
:100DD000E3CFEF92FF920F93CF93DF9300D01F9258
|
||||
:100DE000CDB7DEB77C018FEF84B965B9479A4798D4
|
||||
:100DF00014B8409A67FD419842B980E0011117C0CC
|
||||
:100E00000000000093B1F701E80FF11D90834F5FE0
|
||||
:100E100042B98F5F281790F74098419A0F900F9032
|
||||
:100E20000F90DF91CF910F91FF90EF9008952B835A
|
||||
:100E30004A8389830E94760C89814A812B81E2CF83
|
||||
:100E4000EF92FF920F93CF93DF9300D01F92CDB715
|
||||
:100E5000DEB77C01603208F460688FEF84B965B951
|
||||
:100E6000479A479814B8449842B980E0011116C0D7
|
||||
:100E70000000000093B1F701E80FF11D90834F5F70
|
||||
:100E800042B98F5F281790F7449A0F900F900F90F8
|
||||
:100E9000DF91CF910F91FF90EF9008952B834A83BC
|
||||
:100EA00089830E94760C89814A812B81E3CFCF937D
|
||||
:100EB000DF93FB01DC0112962C91222329F02034D0
|
||||
:100EC00079F082ED808308C01082A0910201B09178
|
||||
:100ED0000301EC018C818C93CF01DF91CF910895B8
|
||||
:100EE000108281E08183A0910201B09103018C9175
|
||||
:100EF0008283F2CFE0910201F09103018083089593
|
||||
:100F0000E0910201F0910301808108950F931F93F6
|
||||
:100F1000D901082F10E00831110508F0C2C2F8010C
|
||||
:100F2000EC56F84F0C94CB0ECE07AC0709086408BA
|
||||
:100F3000B008FC084809F309F809FD09000A040A89
|
||||
:100F4000070A0F0A170A1B0A1E0A220A2B0A320A6C
|
||||
:100F5000360A3E0A450A490A4631510508F0A3C23D
|
||||
:100F6000FA01EB54F84F0C94CB0ECB07D107D50701
|
||||
:100F7000D907DD07E107E507E907ED07F107F50701
|
||||
:100F8000F907FD070108530A530A530A530A530A83
|
||||
:100F9000530A530A05083898409A80E01F910F9130
|
||||
:100FA00008953998419A80E0F9CF3A98429A80E0C2
|
||||
:100FB000F5CF3B98439A80E0F1CF3C98449A80E08B
|
||||
:100FC000EDCF3D98459A80E0E9CF3E98469A80E083
|
||||
:100FD000E5CF3F98479A80E0E1CF5098589A80E05B
|
||||
:100FE000DDCF5198599A80E0D9CF53985B9A80E031
|
||||
:100FF000D5CF55985D9A80E0D1CF56985E9A80E023
|
||||
:10100000CDCF57985F9A80E0C9CF5098589A80E02A
|
||||
:10101000C5CF4631510508F048C2FA01EE5EF74FE0
|
||||
:101020000C94CB0E28082C083008340838083C08EB
|
||||
:101030004008440848084C085008540858085C0800
|
||||
:10104000550A550A550A550A550A550A550A60089F
|
||||
:101050003898409880E0A2CF3998419880E09ECFA0
|
||||
:101060003A98429880E09ACF3B98439880E096CF98
|
||||
:101070003C98449880E092CF3D98459880E08ECF90
|
||||
:101080003E98469880E08ACF3F98479880E086CF88
|
||||
:101090005098589880E082CF5198599880E07ECF40
|
||||
:1010A00053985B9880E07ACF55985D9880E076CF32
|
||||
:1010B00056985E9880E072CF57985F9880E06ECF28
|
||||
:1010C0005098589880E06ACF4631510508F0EFC13A
|
||||
:1010D000FA01E359F74F0C94CB0E83088608890870
|
||||
:1010E0008C088F089208950898089B089E08A1080C
|
||||
:1010F000A408A708AA08570A570A570A570A570AFE
|
||||
:10110000570A570AAD08389A80E048CF399A80E0EC
|
||||
:1011100045CF3A9A80E042CF3B9A80E03FCF3C9A5D
|
||||
:1011200080E03CCF3D9A80E039CF3E9A80E036CFD8
|
||||
:101130003F9A80E033CF509A80E030CF519A80E0E0
|
||||
:101140002DCF539A80E02ACF559A80E027CF569A28
|
||||
:1011500080E024CF579A80E021CF509A80E01ECFC4
|
||||
:101160004631510508F0A5C1FA01E754F74F0C9438
|
||||
:10117000CB0ECF08D208D508D808DB08DE08E10876
|
||||
:10118000E408E708EA08ED08F008F308F608590A49
|
||||
:10119000590A590A590A590A590A590AF908409824
|
||||
:1011A00080E0FCCE419880E0F9CE429880E0F6CE17
|
||||
:1011B000439880E0F3CE449880E0F0CE459880E0FC
|
||||
:1011C000EDCE469880E0EACE479880E0E7CE58988A
|
||||
:1011D00080E0E4CE599880E0E1CE5B9880E0DECEFE
|
||||
:1011E0005D9880E0DBCE5E9880E0D8CE5F9880E0AE
|
||||
:1011F000D5CE589880E0D2CE4631510508F05BC17B
|
||||
:10120000FA01EB5FF64F0C94CB0E1B091E09210966
|
||||
:10121000240927092A092D09300933093609390912
|
||||
:101220003C093F0942095B0A5B0A5B0A5B0A5B0AED
|
||||
:101230005B0A5B0A4509409A80E0B0CE419A80E0A3
|
||||
:10124000ADCE429A80E0AACE439A80E0A7CE449ADF
|
||||
:1012500080E0A4CE459A80E0A1CE469A80E09ECE62
|
||||
:10126000479A80E09BCE589A80E098CE599A80E0C9
|
||||
:1012700095CE5B9A80E092CE5D9A80E08FCE5E9AAA
|
||||
:1012800080E08CCE5F9A80E089CE589A80E086CE4E
|
||||
:1012900082E08C934631510508F0A2C0FA01ED5A64
|
||||
:1012A000F64F0C94CB0E690972097B0984098D09EC
|
||||
:1012B00096099F09A809B109BA09C309CC09D5093A
|
||||
:1012C000DE09F009F009F009F009F009F009F00968
|
||||
:1012D000E70986B1817011968C93119712961C9232
|
||||
:1012E00080E05CCE86B1827090E012969C938E93E3
|
||||
:1012F000119780E053CE86B1847090E012969C9353
|
||||
:101300008E93119780E04ACE86B1887090E0129655
|
||||
:101310009C938E93119780E041CE86B1807190E0CE
|
||||
:1013200012969C938E93119780E038CE86B180728E
|
||||
:1013300090E012969C938E93119780E02FCE86B109
|
||||
:10134000807490E012969C938E93119780E026CE45
|
||||
:1013500086B1807890E012969C938E93119780E0EE
|
||||
:101360001DCE89B1817011968C93119712961C92A3
|
||||
:1013700080E014CE89B1827090E012969C938E9397
|
||||
:10138000119780E00BCE89B1887090E012969C9303
|
||||
:101390008E93119780E002CE89B1807290E0129610
|
||||
:1013A0009C938E93119780E0F9CD89B1807490E081
|
||||
:1013B00012969C938E93119780E0F0CD89B180783E
|
||||
:1013C00090E012969C938E93119780E0E7CD89B1BF
|
||||
:1013D000817011968C93119712961C9280E0DECD4D
|
||||
:1013E0001C928DE8DBCD14B88FEF85B980E0D6CDA7
|
||||
:1013F00014B88FEF85B980E0D1CD14B880E0CECDA0
|
||||
:101400008FEF84B980E0CACD45B980E0C7CD83B104
|
||||
:1014100011968C93119781E08C9380E0BFCD14B826
|
||||
:101420008FEF85B93F9A479881B980E0B7CD8FEFAC
|
||||
:1014300082B980E0B3CD11B880E0B0CD8FEF81B933
|
||||
:1014400080E0ACCD42B98FEF84B955B9479A47983F
|
||||
:1014500014B880E0A3CD14B88FEF85B9579A5F9880
|
||||
:1014600080E09CCD57985F9A80E098CD8FEF84B94B
|
||||
:1014700045B95F9A5F9814B880E090CD14B88FEFAB
|
||||
:1014800085B9579A5F9880E089CD57985F9A80E038
|
||||
:1014900085CD8FEF84B945B95F9A5F9814B880E025
|
||||
:1014A0007DCD8CE87BCD8DE879CD8DE877CD8DE84D
|
||||
:1014B00075CD8DE873CD8DE871CD82B98FEF84B98C
|
||||
:1014C00095B9479A479814B841984498000000008D
|
||||
:1014D0000000000083B1449A419A089582B98FEFC9
|
||||
:1014E00084B995B9479A479814B884B965B94598AD
|
||||
:1014F00041980000000000000000459A419A14B88D
|
||||
:101500000895CF93DF93952FE901813099F020F072
|
||||
:10151000823059F08AEA06C09FEF94B945B95F9AC4
|
||||
:101520005F9814B8DF91CF910895842F0E946E0ABE
|
||||
:1015300080E0F8CF8883842F0E945D0A8983F8CFEA
|
||||
:101540009FEF94B985B945984198000000000000CC
|
||||
:101550000000459A419A14B80895EF92FF920F93B4
|
||||
:10156000CF93DF9300D01F92CDB7DEB77C018FEF12
|
||||
:1015700084B965B9479A479814B84498419842B9D4
|
||||
:1015800080E0011119C0000000000000000093B1CC
|
||||
:10159000F701E80FF11D90834F5F42B98F5F281765
|
||||
:1015A00080F7449A419A0F900F900F90DF91CF915E
|
||||
:1015B0000F91FF90EF9008952B834A8389830E94B7
|
||||
:1015C000760C00000000000089814A812B81DFCF6A
|
||||
:1015D00020E030E02817390709F4089500000000E2
|
||||
:1015E0002F5F3F4FF7CFCF93DF934091820350E0BF
|
||||
:1015F00020E030E060E084E00E94860780E190E037
|
||||
:101600000E94E80A4091820350E020E030E060E070
|
||||
:1016100085E00E948607C4E0D0E04091820350E05C
|
||||
:1016200020E030E060E084E00E9486078EEC92E0EB
|
||||
:101630000E94E80A4091820350E020E030E060E040
|
||||
:1016400085E00E948607219741F7C4E0D0E084E658
|
||||
:1016500091E00E94E80A4091820350E020E030E0EF
|
||||
:1016600060E084E00E94860783E691E00E94E80A39
|
||||
:101670004091820350E020E030E060E085E00E948D
|
||||
:101680008607219721F7DF91CF910895409182033A
|
||||
:1016900050E020E030E060E084E00E94860780E1D6
|
||||
:1016A00090E00E94E80A4091820350E020E030E0A0
|
||||
:1016B00060E085E00C94860781E00895482F90E073
|
||||
:1016C000982F882720E0411103C0211180680895D8
|
||||
:1016D00020953FEF340F4323F6CF80E090E008954C
|
||||
:1016E0001F93CF93DF931F92CDB7DEB7182F892FAB
|
||||
:1016F00069830E945E0B812F0E945E0B6981862F99
|
||||
:101700000E945E0B81E00F90DF91CF911F910895B1
|
||||
:101710000F931F93CF93DF931F92CDB7DEB789014D
|
||||
:10172000823009F130F4882381F08130C1F082E801
|
||||
:1017300010C08131E9F08132D1F781E0F901808375
|
||||
:10174000CA010E94700BF80111C089830E94F30A3C
|
||||
:1017500089810F90DF91CF911F910F9108950E9481
|
||||
:10176000460B80E0F6CF81E0F90180838183F9CFD9
|
||||
:1017700082E0F901808312821182F3CFCF93DF934D
|
||||
:101780001F92CDB7DEB7DC018FEF80930701109277
|
||||
:10179000080187E091E0909392038093910316965D
|
||||
:1017A0008C91169789831196EC9111974E2F50E0EA
|
||||
:1017B000FA013197E830F10508F06EC0EE51F44FB0
|
||||
:1017C0000C94CB0EEA0BFA0B080C160C320C4C0CDA
|
||||
:1017D000430C240C14964D915C91159728E031E050
|
||||
:1017E00013966C91139712968C910E9486078093A2
|
||||
:1017F000070144C014964D915C91159728E031E0A3
|
||||
:1018000013966C91139712968C910E94DF05EFCF7F
|
||||
:1018100014964D915C91159728E031E013966C91E8
|
||||
:10182000139712968C910E94B206E1CF14964D91B7
|
||||
:101830005C91159728E031E013966C9113971296FE
|
||||
:101840008C910E94810AD3CF14964D915C9115978B
|
||||
:1018500028E031E013966C91139712968C910E94B8
|
||||
:10186000880BC5CFAE014F5F5F4F67E071E0CD01E0
|
||||
:101870000E947901909392038093910389810F9044
|
||||
:10188000DF91CF910895AE014F5F5F4F67E071E048
|
||||
:10189000CD010E945707EECF80E8A9CFE091630306
|
||||
:1018A000F0916403278144815581322F360F231331
|
||||
:1018B00012C0E0916303F09164038781860F8783F0
|
||||
:1018C00080913201861B8093320181110DC088E91D
|
||||
:1018D000838381E00895FC017191CF01FA01E20F49
|
||||
:1018E000F11D70832F5FE3CF80E00895CF93DF93E6
|
||||
:1018F00060919303635067FD91C080919003CCE0A9
|
||||
:10190000D0E0C81BD109C956DC4F80918F038D32BE
|
||||
:1019100009F0CFC0683009F07FC083EC8093830367
|
||||
:101920008AE58093050110920F018881807679F015
|
||||
:10193000CE010E94BE0B8F3F09F466C09F819111BA
|
||||
:1019400069C09E81981708F065C0892F63C02A81FD
|
||||
:1019500010928C03998191110AC010928D032CE88A
|
||||
:1019600033E082E03093920320939103E7CF9530E8
|
||||
:1019700029F4209394032CE833E0F4CF963099F5C2
|
||||
:101980009B81913059F48EE890E09093920380937C
|
||||
:10199000910382E190E490930F01D0CF923019F43B
|
||||
:1019A0008CE790E0F2CF9330A9F7211108C088EEC0
|
||||
:1019B00090E0909392038093910384E0EBCF2130E9
|
||||
:1019C00041F48EEB90E090939203809391038AE22E
|
||||
:1019D000E1CF2230F9F680EA90E090939203809371
|
||||
:1019E00091038EE1D7CF983059F0993019F42093B4
|
||||
:1019F0009603C1CF81E09A3009F4BDCF80E0BBCF20
|
||||
:101A000026E933E081E0AECF988197FD8E8190E8A2
|
||||
:101A100090930F018093040110929303809105012C
|
||||
:101A200084FF3AC0809104018F3FB1F1C82F893003
|
||||
:101A300008F0C8E08C1B809304018091830398E830
|
||||
:101A4000892780938303CC23D1F0809191039091D7
|
||||
:101A5000920320910F0126FF3FC0A4E8B3E0FC01F0
|
||||
:101A60002C2F34913D9331962150D9F701962FEFC9
|
||||
:101A70002C0F820F911D90939203809391036C2FF2
|
||||
:101A800084E893E00E94910DCC5FCC3019F08FEF89
|
||||
:101A900080930401C093050184E199B1947131F4FC
|
||||
:101AA0008150D9F71092940310928E03DF91CF9159
|
||||
:101AB000089580910F0187FFAFCFCE010E944E0C99
|
||||
:101AC0008F3F21F48EE180930501A6CF882309F48E
|
||||
:101AD000A3CF10920401A0CFE4E8F3E0DC012C2FA7
|
||||
:101AE0003D9131932150E1F7C1CFE9E6F0E08081EB
|
||||
:101AF00082608083E89A0895A82FB92F80E090E053
|
||||
:101B000041E050EA609530E009C02D918227979519
|
||||
:101B1000879510F084279527305EC8F36F5FA8F390
|
||||
:101B20000895EADF8D939D930895CF93CFB7CF9318
|
||||
:101B3000DF93C3954C9BE9F74C9B0BC04C9B09C0B2
|
||||
:101B40004C9B07C04C9B05C04C9B03C04C9B01C0E9
|
||||
:101B500089C06F93C0919003DD27C956DC4F2F9346
|
||||
:101B600065E54C9B03C02F916F91E6CF0F931F93B8
|
||||
:101B70004F9320E040E15F9309B1047104FB27F922
|
||||
:101B80003F9350E03BE039C0147140642F77012F40
|
||||
:101B90005F5F1EC0406819B114712F7752501FC08B
|
||||
:101BA000406409B12F770471D1F15F5F00C023C099
|
||||
:101BB000406219B12F77147191F15F5F00C025C0A9
|
||||
:101BC00004711027515012F45D5F000011502795E9
|
||||
:101BD0002C3F19B1C8F614710127015027952C3FED
|
||||
:101BE000C8F64227499309B1047110274F73115069
|
||||
:101BF00027952C3FA8F64695469519B1147179F0B2
|
||||
:101C00000127015027952C3F98F66B5A60F331500D
|
||||
:101C100009B1B0F600C011E01CBB002717C03B5053
|
||||
:101C20003195C31BD04011E01CBB0881033CF9F087
|
||||
:101C30000B34E9F020918E031981110F1213EDCFAF
|
||||
:101C4000093651F10D3211F0013E39F70093950339
|
||||
:101C50003F915F914F911F910F912F916F91CCB355
|
||||
:101C6000C0FD67CFDF91CF91CFBFCF911895209165
|
||||
:101C70009503222369F310919303112339F534302E
|
||||
:101C80003AF13093930320938F03109190033BE03C
|
||||
:101C9000311B309390031CC0009193030130B4F4C6
|
||||
:101CA0000AE53091050134FD14C000930501C3E835
|
||||
:101CB000D3E013C0052710E000C000000BB91AC024
|
||||
:101CC000052710E0221F1DC010E021C04AE502C018
|
||||
:101CD00032ED432FC4E1D0E032E01AB114615C9AD6
|
||||
:101CE0000BB11AB954E120E865E320FF05270BB9D1
|
||||
:101CF000279517951C3FF0F66695B8F7B1F720FFCA
|
||||
:101D000005270BB9279517951C3FD0F627951795F2
|
||||
:101D100017FF052700001C3F0BB9B0F629913A9533
|
||||
:101D200019F70B7E10919403110FC651D0400BB9D7
|
||||
:101D300011F010938E0311E01CBB00611AB11B7EE1
|
||||
:101D4000402F4B7E54E05A95F1F70BB91AB94BB9B5
|
||||
:101D50007FCF9EE088E10FB6F894A895809360004D
|
||||
:101D60000FBE909360000E94750D549A80E08150E0
|
||||
:101D700051F4549878940E942305A8950E94760CFB
|
||||
:101D80000E94A802FACFA895EFE9FFE03197F1F79A
|
||||
:101D900000C00000ECCFEE0FFF1F0590F491E02D86
|
||||
:061DA0000994F894FFCF46
|
||||
:061DA60063016503FF5A12
|
||||
:1008A000912CA8955898000000000000000000005E
|
||||
:1008B0000000000000006AEA8AEA9AE0F90109955E
|
||||
:1008C00065E585E595E0FE01099560E28AEA9AE032
|
||||
:1008D000FE010995712C762C6624D70116968C9111
|
||||
:1008E000169790E08815990520F517965C9260E9B7
|
||||
:1008F00080E090E0FE01099560E080E090E0FE017C
|
||||
:10090000099560EF80E090E0FE010995589A80E03B
|
||||
:10091000DF91CF911F910F91FF90EF90DF90CF90DB
|
||||
:10092000BF90AF909F908F907F906F905F904F900F
|
||||
:10093000089580EA0E94530CC52CD12C5601A6289C
|
||||
:10094000B728D7011496ED91FC911597EC0DFD1D7C
|
||||
:100950006081C501FE010995589A00000000000061
|
||||
:1009600000000000000000000000A8950E94E40DB7
|
||||
:10097000C501F8010995589800000000000000002A
|
||||
:100980000000000000000000D7011496ED91FC91DA
|
||||
:100990001597EC0DFD1D40808415C1F0589A00009C
|
||||
:1009A0000000000000000000000000000000482ED1
|
||||
:1009B000C501F8010995589848121BC000000000B5
|
||||
:1009C000000000000000000000000000D7011496A5
|
||||
:1009D0008D919C911597C80ED91EF6018081481201
|
||||
:1009E00029C05394FFEF8F1A9F0A5198599A59982A
|
||||
:1009F00074CF0000000000000000000000000000B4
|
||||
:100A000000000000000000000000000000000000E6
|
||||
:100A100000000000000000000000589A00000000E4
|
||||
:100A2000000000000000000000000000C501F80107
|
||||
:100A30000995BDCF519A599A50CF0F931F93AC018E
|
||||
:100A4000FC01608171819185923159F030F49031CF
|
||||
:100A500061F0913199F083EC05C09331B9F0943194
|
||||
:100A6000D1F780E01F910F910895606807ED17E0BE
|
||||
:100A700028EC37E080E00E948103F3CF0FEF17E00E
|
||||
:100A800023E138E080E00E94DD03EBCF8FEF84B9F3
|
||||
:100A9000CB01880F892F881F990B919585B95F9A93
|
||||
:100AA0005F9814B8606800E11CE021E23CE080E05F
|
||||
:100AB0000E943904D6CF14B88FEF85B93F9A479872
|
||||
:100AC00081B911B882B914B885B914B885B9389804
|
||||
:100AD000409A3998419A3A98429A3C98449A3D985B
|
||||
:100AE000459A3E98469A53985B9A55985D9A3B98DA
|
||||
:100AF000439A3F98479A57985F9A509858985198B8
|
||||
:100B0000599A08950E945B05399A419A389A4098FB
|
||||
:100B10003A9A429A3C9A449A3D9A459A14B88FEF71
|
||||
:100B200085B914B885B914B885B93F9A479881B981
|
||||
:100B300012B884B915B8479A479814B808950E9416
|
||||
:100B40005B05399A419A3C9A449A3D9A459A589A3B
|
||||
:100B5000509A14B88FEF85B914B885B914B885B90F
|
||||
:100B60003F9A479881B912B884B915B8479A4798FF
|
||||
:100B700014B814B885B9579A5F9884B915B85F9AB4
|
||||
:100B80005F9814B80895823081F0833061F081302D
|
||||
:100B9000A1F40898109A1092B20380E290E090932A
|
||||
:100BA000B1038093B00380E008955098589A88E08C
|
||||
:100BB0008093B20389E290E0F2CF87E90895813013
|
||||
:100BC00049F414B88FEF85B9579A5F980E94580678
|
||||
:100BD00080E0089588E908955898509A000089B1F6
|
||||
:100BE0005098589880FD22C05098589A59B149B1F0
|
||||
:100BF000000039B10000000029B100000000000031
|
||||
:100C000099B1000000000000000089B15098589888
|
||||
:100C100050FD0EC040FD0EC030FD0EC020FD0EC0C8
|
||||
:100C200090FD0EC080FD0EC080EE089580EF089507
|
||||
:100C300080E0089581E0089583E0089586E00895B6
|
||||
:100C40008AE008958FE008950F931F93CF93C82FE4
|
||||
:100C5000842F8901C230F9F030F4CC2389F0C130FF
|
||||
:100C6000B1F0C6E90FC0C430F1F0C0F0C038C9F728
|
||||
:100C700081E0F90180830E94EC05F801818309C0BD
|
||||
:100C80000E945B058C2FCF911F910F9108950E94B8
|
||||
:100C90008205C0E0F7CF0E949F05FBCFCF911F9147
|
||||
:100CA0000F910C94C305CF911F910F910C94DF0508
|
||||
:100CB000109210018FEF84B915B85F9A5F9814B83D
|
||||
:100CC0005098589A80E88093680310927603E7E77B
|
||||
:100CD000F3E0119283E0E739F807D9F708956091BE
|
||||
:100CE0007603813109F441C0109210019FEF94B94D
|
||||
:100CF0009091100195B95F9A5F9814B820E070E068
|
||||
:100D00003FEF8032C9F4E72FF0E0E958FC4F408113
|
||||
:100D100050E0022E02C0559547950A94E2F740FF35
|
||||
:100D200028C092E034B995B95F9A5F9814B82F5FE4
|
||||
:100D3000283011F47F5F20E0492F446034B945B971
|
||||
:100D40005F9A5F9814B8615034B995B95F9A5F980B
|
||||
:100D500014B86111D6CF909310014093230134B998
|
||||
:100D600015B85F9A5F9814B8089592E090931001B7
|
||||
:100D7000BDCF90E0D7CF0F931F93CF93DF934091D8
|
||||
:100D8000760310917703813109F461C0109210014C
|
||||
:100D90009FEF94B99091100195B95F9A5F9814B83C
|
||||
:100DA00020E030E05FEFA1E0B0E0803281F4E12F9D
|
||||
:100DB000F0E0022E02C0F595E7950A94E2F7E0FF15
|
||||
:100DC0004AC0916054B995B95F9A5F9814B860327F
|
||||
:100DD000B1F4211105C0E32FF0E0E958FC4F108277
|
||||
:100DE000489B0DC0E32FF0E0E958FC4F7081ED0106
|
||||
:100DF000022E01C0CC0F0A94EAF77C2B7083792F66
|
||||
:100E0000746054B975B95F9A5F9814B8415054B979
|
||||
:100E100095B95F9A5F9814B82F5F283039F43F5F17
|
||||
:100E2000E32FF0E0E958FC4F108120E04111BDCFE5
|
||||
:100E300090931001709323018FEF84B915B85F9AD6
|
||||
:100E40005F9814B8DF91CF911F910F91089591E0B1
|
||||
:100E5000909310019DCF9E7FB5CF8091680383381A
|
||||
:100E600001F5809169038630A9F188F4823019F187
|
||||
:100E700020F48130C9F08EEE12C0833011F184303D
|
||||
:100E8000D1F781E88093680360E281E11FC0883078
|
||||
:100E900059F128F1803831F08F3F69F780EF809366
|
||||
:100EA000680308950C94580681E88093680380E2F3
|
||||
:100EB0000E946F060DC081E88093680360E080E2C5
|
||||
:100EC00005C081E88093680360E280E10E94BB0670
|
||||
:100ED00082E8E5CF81E88093680360E2F0CF81E8A3
|
||||
:100EE0008093680380E1E4CF81E88093680381E127
|
||||
:100EF000DFCFCF93DF93E901843061F138F48230A2
|
||||
:100F0000E1F008F58130A1F087E80FC0873039F1B2
|
||||
:100F100028F48530C9F74093760306C0883021F164
|
||||
:100F2000803891F70E94580680E0DF91CF910895B4
|
||||
:100F30009091690399838883F7CF4093690383E88D
|
||||
:100F400080936803F1CF4093690383E8809368033B
|
||||
:100F50000E942D0780916803898381E0ECCF409344
|
||||
:100F6000770350937803E0CF809177038983809152
|
||||
:100F700078038A83809179038B8380917A038C83B1
|
||||
:100F800080917B038D8380917C038E8386E0D3CF19
|
||||
:100F900082B98FEF84B995B9479A479814B884B944
|
||||
:100FA00065B9509A58985098589A14B8089582B9CB
|
||||
:100FB0002FEF24B995B9479A479814B8409A97FDEE
|
||||
:100FC0004198000000000000000083B14098419A61
|
||||
:100FD00008955098589882B92FEF24B995B9479A37
|
||||
:100FE000479814B8429824B965B9409A97FD41983A
|
||||
:100FF000000000004098419A429A14B80895811563
|
||||
:1010000020E2920708F4906882B98FEF84B995B90D
|
||||
:10101000479A479814B84498000000000000000068
|
||||
:1010200083B1449A0895811520E2920708F49068EC
|
||||
:1010300082B98FEF84B995B9479A479814B884B9A3
|
||||
:1010400065B9000045980000459A14B808958FEFDF
|
||||
:1010500084B994E095B9479A479814B829B1207299
|
||||
:1010600030E084B988E085B9479A479814B889B1C7
|
||||
:10107000807290E041E02115310509F040E061E027
|
||||
:10108000009709F060E0442311F0611116C051E0AF
|
||||
:10109000232B09F450E021E0892B09F420E05523AB
|
||||
:1010A00011F021110CC0662311F051110AC0442324
|
||||
:1010B00011F0211108C08FEF089580E1089581E1BA
|
||||
:1010C000089582E1089583E108950F931F93CF93CC
|
||||
:1010D000C82FCA018901C23001F130F4CC2391F04C
|
||||
:1010E000C130B9F0C0EA10C0C238D1F0C338F1F055
|
||||
:1010F000C138C1F721E0F80120830E94D707F80129
|
||||
:10110000818309C00E94C8078C2FCF911F910F9136
|
||||
:1011100008950E941308C0E0F7CF0E94E907FBCFB3
|
||||
:1011200021E0F80120830E94FF07E9CF81E0F90167
|
||||
:1011300080830E942708E3CFEF92FF920F93CF9313
|
||||
:10114000DF9300D01F92CDB7DEB77C018FEF84B95B
|
||||
:1011500065B9479A479814B8409A67FD419842B9D3
|
||||
:1011600080E0011117C00000000093B1F701E80F03
|
||||
:10117000F11D90834F5F42B98F5F281790F7409819
|
||||
:10118000419A0F900F900F90DF91CF910F91FF90A8
|
||||
:10119000EF9008952B834A8389830E94E40D89810F
|
||||
:1011A0004A812B81E2CFEF92FF920F93CF93DF938F
|
||||
:1011B00000D01F92CDB7DEB77C01603208F46068C2
|
||||
:1011C0008FEF84B965B9479A479814B8449842B9E3
|
||||
:1011D00080E0011116C00000000093B1F701E80F94
|
||||
:1011E000F11D90834F5F42B98F5F281790F7449AA3
|
||||
:1011F0000F900F900F90DF91CF910F91FF90EF9094
|
||||
:1012000008952B834A8389830E94E40D89814A8152
|
||||
:101210002B81E3CFCF93DF93FB01DC0112962C915E
|
||||
:10122000222329F0203479F082ED808308C01082D7
|
||||
:10123000A0910201B0910301EC018C818C93CF014C
|
||||
:10124000DF91CF910895108281E08183A091020106
|
||||
:10125000B09103018C918283F2CFE0910201F09171
|
||||
:10126000030180830895E0910201F09103018081E0
|
||||
:1012700008950F931F93D901082F10E0083111052D
|
||||
:1012800008F0C2C2F801E95BF64F0C9442108109E4
|
||||
:101290005F09BC09170A630AAF0AFB0AA60BAB0B6E
|
||||
:1012A000B00BB30BB70BBA0BC20BCA0BCE0BD10BE7
|
||||
:1012B000D50BDE0BE50BE90BF10BF80BFC0B463104
|
||||
:1012C000510508F0A3C2FA01E859F64F0C944210F8
|
||||
:1012D0007E09840988098C099009940998099C0958
|
||||
:1012E000A009A409A809AC09B009B409060C060CA8
|
||||
:1012F000060C060C060C060C060CB8093898409A29
|
||||
:1013000080E01F910F9108953998419A80E0F9CFBC
|
||||
:101310003A98429A80E0F5CF3B98439A80E0F1CF2B
|
||||
:101320003C98449A80E0EDCF3D98459A80E0E9CF23
|
||||
:101330003E98469A80E0E5CF3F98479A80E0E1CF1B
|
||||
:101340005098589A80E0DDCF5198599A80E0D9CFD3
|
||||
:1013500053985B9A80E0D5CF55985D9A80E0D1CFC5
|
||||
:1013600056985E9A80E0CDCF57985F9A80E0C9CFBB
|
||||
:101370005098589A80E0C5CF4631510508F048C2D0
|
||||
:10138000FA01EB53F64F0C944210DB09DF09E30935
|
||||
:10139000E709EB09EF09F309F709FB09FF09030A5C
|
||||
:1013A000070A0B0A0F0A080C080C080C080C080C9A
|
||||
:1013B000080C080C130A3898409880E0A2CF39989E
|
||||
:1013C000419880E09ECF3A98429880E09ACF3B982F
|
||||
:1013D000439880E096CF3C98449880E092CF3D9827
|
||||
:1013E000459880E08ECF3E98469880E08ACF3F981F
|
||||
:1013F000479880E086CF5098589880E082CF5198E7
|
||||
:10140000599880E07ECF53985B9880E07ACF5598CA
|
||||
:101410005D9880E076CF56985E9880E072CF5798BE
|
||||
:101420005F9880E06ECF5098589880E06ACF463140
|
||||
:10143000510508F0EFC1FA01E05EF54F0C9442103F
|
||||
:10144000360A390A3C0A3F0A420A450A480A4B0A48
|
||||
:101450004E0A510A540A570A5A0A5D0A0A0C0A0C23
|
||||
:101460000A0C0A0C0A0C0A0C0A0C600A389A80E072
|
||||
:1014700048CF399A80E045CF3A9A80E042CF3B9AF4
|
||||
:1014800080E03FCF3C9A80E03CCF3D9A80E039CF6E
|
||||
:101490003E9A80E036CF3F9A80E033CF509A80E08A
|
||||
:1014A00030CF519A80E02DCF539A80E02ACF559AC1
|
||||
:1014B00080E027CF569A80E024CF579A80E021CF52
|
||||
:1014C000509A80E01ECF4631510508F0A5C1FA01BF
|
||||
:1014D000E459F54F0C944210820A850A880A8B0A57
|
||||
:1014E0008E0A910A940A970A9A0A9D0AA00AA30AE8
|
||||
:1014F000A60AA90A0C0C0C0C0C0C0C0C0C0C0C0CF9
|
||||
:101500000C0CAC0A409880E0FCCE419880E0F9CE0B
|
||||
:10151000429880E0F6CE439880E0F3CE449880E095
|
||||
:10152000F0CE459880E0EDCE469880E0EACE479830
|
||||
:1015300080E0E7CE589880E0E4CE599880E0E1CE94
|
||||
:101540005B9880E0DECE5D9880E0DBCE5E9880E048
|
||||
:10155000D8CE5F9880E0D5CE589880E0D2CE463184
|
||||
:10156000510508F05BC1FA01E854F54F0C944210A4
|
||||
:10157000CE0AD10AD40AD70ADA0ADD0AE00AE30A57
|
||||
:10158000E60AE90AEC0AEF0AF20AF50A0E0C0E0C5A
|
||||
:101590000E0C0E0C0E0C0E0C0E0CF80A409A80E08D
|
||||
:1015A000B0CE419A80E0ADCE429A80E0AACE439A76
|
||||
:1015B00080E0A7CE449A80E0A4CE459A80E0A1CEF8
|
||||
:1015C000469A80E09ECE479A80E09BCE589A80E073
|
||||
:1015D00098CE599A80E095CE5B9A80E092CE5D9A43
|
||||
:1015E00080E08FCE5E9A80E08CCE5F9A80E089CEDC
|
||||
:1015F000589A80E086CE82E08C934631510508F0FF
|
||||
:10160000A2C0FA01EA5FF44F0C9442101C0B250BA8
|
||||
:101610002E0B370B400B490B520B5B0B640B6D0B06
|
||||
:10162000760B7F0B880B910BA30BA30BA30BA30BC8
|
||||
:10163000A30BA30BA30B9A0B86B1817011968C930D
|
||||
:10164000119712961C9280E05CCE86B1827090E079
|
||||
:1016500012969C938E93119780E053CE86B184703E
|
||||
:1016600090E012969C938E93119780E04ACE86B1BB
|
||||
:10167000887090E012969C938E93119780E041CEF3
|
||||
:1016800086B1807190E012969C938E93119780E0C2
|
||||
:1016900038CE86B1807290E012969C938E9311970B
|
||||
:1016A00080E02FCE86B1807490E012969C938E934A
|
||||
:1016B000119780E026CE86B1807890E012969C93B8
|
||||
:1016C0008E93119780E01DCE89B1817011968C9315
|
||||
:1016D000119712961C9280E014CE89B1827090E02E
|
||||
:1016E00012969C938E93119780E00BCE89B18870EF
|
||||
:1016F00090E012969C938E93119780E002CE89B170
|
||||
:10170000807290E012969C938E93119780E0F9CDB1
|
||||
:1017100089B1807490E012969C938E93119780E02B
|
||||
:10172000F0CD89B1807890E012969C938E931197BA
|
||||
:1017300080E0E7CD89B1817011968C931197129654
|
||||
:101740001C9280E0DECD1C928DE8DBCD14B88FEFCB
|
||||
:1017500085B980E0D6CD14B88FEF85B980E0D1CDC2
|
||||
:1017600014B880E0CECD8FEF84B980E0CACD45B902
|
||||
:1017700080E0C7CD83B111968C93119781E08C9353
|
||||
:1017800080E0BFCD14B88FEF85B93F9A479881B9F3
|
||||
:1017900080E0B7CD8FEF82B980E0B3CD11B880E0A3
|
||||
:1017A000B0CD8FEF81B980E0ACCD42B98FEF84B975
|
||||
:1017B00055B9479A479814B880E0A3CD14B88FEF75
|
||||
:1017C00085B9579A5F9880E09CCD57985F9A80E0E2
|
||||
:1017D00098CD8FEF84B945B95F9A5F9814B880E0CF
|
||||
:1017E00090CD14B88FEF85B9579A5F9880E089CD76
|
||||
:1017F00057985F9A80E085CD8FEF84B945B95F9A9D
|
||||
:101800005F9814B880E07DCD8CE87BCD8DE879CDF4
|
||||
:101810008DE877CD8DE875CD8DE873CD8DE871CDF0
|
||||
:1018200082B98FEF84B995B9479A479814B841980F
|
||||
:101830004498000000000000000083B1449A419ADF
|
||||
:10184000089582B98FEF84B995B9479A479814B82B
|
||||
:1018500084B965B945984198000000000000000077
|
||||
:10186000459A419A14B80895CF93DF93952FE901D3
|
||||
:10187000813099F020F0823059F08AEA06C09FEF5B
|
||||
:1018800094B945B95F9A5F9814B8DF91CF910895E4
|
||||
:10189000842F0E94210C80E0F8CF8883842F0E943F
|
||||
:1018A000100C8983F8CF9FEF94B985B9459841987A
|
||||
:1018B0000000000000000000459A419A14B8089505
|
||||
:1018C000EF92FF920F93CF93DF9300D01F92CDB78B
|
||||
:1018D000DEB77C018FEF84B965B9479A479814B891
|
||||
:1018E0004498419842B980E0011119C000000000FD
|
||||
:1018F0000000000093B1F701E80FF11D90834F5FE6
|
||||
:1019000042B98F5F281780F7449A419A0F900F9041
|
||||
:101910000F90DF91CF910F91FF90EF9008952B835F
|
||||
:101920004A8389830E94E40D000000000000898141
|
||||
:101930004A812B81DFCF880F991F880F991F20E0E4
|
||||
:1019400030E02817390709F40895000000002F5FE0
|
||||
:101950003F4FF7CF20E030E02817390709F408950A
|
||||
:10196000000000002F5F3F4FF7CFCF93DF9380E160
|
||||
:1019700090E00E949B0CC4E0D0E084EF91E00E94D4
|
||||
:101980009B0C84EF91E00E949B0C2197B1F7C4E07F
|
||||
:10199000D0E08AEF90E00E949B0C8AEF90E00E94DA
|
||||
:1019A0009B0C2197B1F7DF91CF91089580E190E0F2
|
||||
:1019B0000C949B0CCF93DF931F92CDB7DEB7F90148
|
||||
:1019C000813171F038F48130C1F078F08230C9F0A3
|
||||
:1019D00082E80FC08132A9F0823299F08231C1F7DA
|
||||
:1019E00082E08083128211820AC089830E94B50C32
|
||||
:1019F00089810F90DF91CF9108950E94D60C80E0ED
|
||||
:101A0000F8CF81E080831182FACF482F90E0982FA1
|
||||
:101A1000882720E0411103C0211180680895209596
|
||||
:101A20003FEF340F4323F6CF80E090E0089580E04D
|
||||
:101A3000089560E070E0CB010895CF93DF931F928B
|
||||
:101A4000CDB7DEB7DC018FEF80930701109208015C
|
||||
:101A500087E091E09093C2038093C10316968C9126
|
||||
:101A6000169789831196EC9111974E2F50E0FA0149
|
||||
:101A70003197E930F10508F07DC0EF5BF24F0C942F
|
||||
:101A800042104A0D5A0D680D760DA00DBA0DB10D1C
|
||||
:101A9000840D920D14964D915C91159728E031E0DC
|
||||
:101AA00013966C91139712968C910E94390980932A
|
||||
:101AB000070152C014964D915C91159728E031E0D2
|
||||
:101AC00013966C91139712968C910E942406EFCF77
|
||||
:101AD00014964D915C91159728E031E013966C9126
|
||||
:101AE000139712968C910E946508E1CF14964D9140
|
||||
:101AF0005C91159728E031E013966C91139712963C
|
||||
:101B00008C910E94340CD3CF14964D915C91159713
|
||||
:101B100028E031E013966C91139712968C910E94F5
|
||||
:101B2000DA0CC5CF14964D915C91159728E031E001
|
||||
:101B300013966C91139712968C910E947907B7CFE8
|
||||
:101B4000AE014F5F5F4F67E071E0CD010E94790108
|
||||
:101B50009093C2038093C10389810F90DF91CF914D
|
||||
:101B60000895AE014F5F5F4F67E071E0CD010E94C5
|
||||
:101B70000A09EECF80E89BCFE0916503F091660300
|
||||
:101B8000278144815581322F360F231312C0E091F3
|
||||
:101B90006503F09166038781860F87838091340106
|
||||
:101BA000861B8093340181110DC088E9838381E015
|
||||
:101BB0000895FC017191CF01FA01E20FF11D7083CC
|
||||
:101BC0002F5FE3CF80E00895CF93DF936091C3034D
|
||||
:101BD000635067FD91C08091C003CCE0D0E0C81B8A
|
||||
:101BE000D109C953DC4F8091BF038D3209F0CFC0BA
|
||||
:101BF000683009F07FC083EC8093B3038AE580935B
|
||||
:101C0000050110920F018881807679F0CE010E9443
|
||||
:101C10001D0D8F3F09F466C09F81911169C09E819F
|
||||
:101C2000981708F065C0892F63C02A811092BC0301
|
||||
:101C3000998191110AC01092BD032CEB33E082E030
|
||||
:101C40003093C2032093C103E7CF953029F420934A
|
||||
:101C5000C4032CEB33E0F4CF963099F59B8191309F
|
||||
:101C600059F48EE890E09093C2038093C10382E11F
|
||||
:101C700090E490930F01D0CF923019F48CE790E06C
|
||||
:101C8000F2CF9330A9F7211108C088EE90E090932D
|
||||
:101C9000C2038093C10384E0EBCF213041F48EEB8B
|
||||
:101CA00090E09093C2038093C1038AE2E1CF223097
|
||||
:101CB000F9F680EA90E09093C2038093C1038EE12D
|
||||
:101CC000D7CF983059F0993019F42093C603C1CF7B
|
||||
:101CD00081E09A3009F4BDCF80E0BBCF26EC33E041
|
||||
:101CE00081E0AECF988197FD8E8190E890930F01AF
|
||||
:101CF000809304011092C3038091050184FF3AC0D0
|
||||
:101D0000809104018F3FB1F1C82F893008F0C8E0FD
|
||||
:101D10008C1B809304018091B30398E889278093FA
|
||||
:101D2000B303CC23D1F08091C1039091C2032091E1
|
||||
:101D30000F0126FF3FC0A4EBB3E0FC012C2F349130
|
||||
:101D40003D9331962150D9F701962FEF2C0F820F3A
|
||||
:101D5000911D9093C2038093C1036C2F84EB93E099
|
||||
:101D60000E94FF0ECC5FCC3019F08FEF80930401FE
|
||||
:101D7000C093050184E199B1947131F48150D9F790
|
||||
:101D80001092C4031092BE03DF91CF910895809109
|
||||
:101D90000F0187FFAFCFCE010E94BC0D8F3F21F412
|
||||
:101DA0008EE180930501A6CF882309F4A3CF10927A
|
||||
:101DB0000401A0CFE4EBF3E0DC012C2F3D91319343
|
||||
:101DC0002150E1F7C1CFE9E6F0E0808182608083B5
|
||||
:101DD000E89A0895A82FB92F80E090E041E050EAFA
|
||||
:101DE000609530E009C02D9182279795879510F076
|
||||
:101DF00084279527305EC8F36F5FA8F30895EADF64
|
||||
:101E00008D939D930895CF93CFB7CF93DF93C395D1
|
||||
:101E10004C9BE9F74C9B0BC04C9B09C04C9B07C0EB
|
||||
:101E20004C9B05C04C9B03C04C9B01C089C06F9369
|
||||
:101E3000C091C003DD27C953DC4F2F9365E54C9B50
|
||||
:101E400003C02F916F91E6CF0F931F934F9320E024
|
||||
:101E500040E15F9309B1047104FB27F93F9350E01F
|
||||
:101E60003BE039C0147140642F77012F5F5F1EC0C3
|
||||
:101E7000406819B114712F7752501FC0406409B1E6
|
||||
:101E80002F770471D1F15F5F00C023C0406219B1A8
|
||||
:101E90002F77147191F15F5F00C025C00471102786
|
||||
:101EA000515012F45D5F0000115027952C3F19B17D
|
||||
:101EB000C8F614710127015027952C3FC8F6422718
|
||||
:101EC000499309B1047110274F73115027952C3F86
|
||||
:101ED000A8F64695469519B1147179F0012701507D
|
||||
:101EE00027952C3F98F66B5A60F3315009B1B0F644
|
||||
:101EF00000C011E01CBB002717C03B503195C31B2D
|
||||
:101F0000D04011E01CBB0881033CF9F00B34E9F030
|
||||
:101F10002091BE031981110F1213EDCF093651F133
|
||||
:101F20000D3211F0013E39F70093C5033F915F91E7
|
||||
:101F30004F911F910F912F916F91CCB3C0FD67CF3F
|
||||
:101F4000DF91CF91CFBFCF9118952091C503222368
|
||||
:101F500069F31091C303112339F534303AF130930A
|
||||
:101F6000C3032093BF031091C0033BE0311B3093A8
|
||||
:101F7000C0031CC00091C3030130B4F40AE53091E2
|
||||
:101F8000050134FD14C000930501C3EBD3E013C079
|
||||
:101F9000052710E000C000000BB91AC0052710E0AB
|
||||
:101FA000221F1DC010E021C04AE502C032ED432FC0
|
||||
:101FB000C4E1D0E032E01AB114615C9A0BB11AB9F5
|
||||
:101FC00054E120E865E320FF05270BB92795179515
|
||||
:101FD0001C3FF0F66695B8F7B1F720FF05270BB95F
|
||||
:101FE000279517951C3FD0F62795179517FF0527BE
|
||||
:101FF00000001C3F0BB9B0F629913A9519F70B7EFA
|
||||
:102000001091C403110FC651D0400BB911F01093B9
|
||||
:10201000BE0311E01CBB00611AB11B7E402F4B7E3A
|
||||
:1020200054E05A95F1F70BB91AB94BB97FCF9EE03E
|
||||
:1020300088E10FB6F894A895809360000FBE909346
|
||||
:1020400060000E94E30E549A80E0815099F4549805
|
||||
:1020500078940E945B0580EF80936803A8950E94A6
|
||||
:10206000E40D0E94A80280916803803FB9F30E94AA
|
||||
:102070002D07F4CFA895EFE9FFE03197F1F700C005
|
||||
:102080000000E3CFEE0FFF1F0590F491E02D0994BF
|
||||
:04209000F894FFCFF2
|
||||
:0620940065019703FF5AED
|
||||
:00000001FF
|
||||
|
|
|
|||
Binary file not shown.
Binary file not shown.
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
|
@ -170,33 +170,57 @@ void jtag_run_pbje()
|
|||
pbje_status = PBJE_DONE;
|
||||
break;
|
||||
|
||||
case PBJE_TDI_SCAN: //ignore TDO 256max
|
||||
case PBJE_TDI_SCAN: //ignore TDO, end scan with exit 256max
|
||||
pbje_status = PBJE_PROC;
|
||||
pbje_scan( DATA0, 0 );
|
||||
pbje_scan( DATA0, 0, 1 );
|
||||
pbje_status = PBJE_DONE;
|
||||
break;
|
||||
|
||||
case PBJE_TDO_SCAN0: //TDI = 0, TMS=0 256max
|
||||
case PBJE_TDI_SCAN_HOLD: //ignore TDO, don't exit 256max
|
||||
pbje_status = PBJE_PROC;
|
||||
pbje_scan( FORCE0, DATA0 );
|
||||
pbje_scan( DATA0, 0, 0 );
|
||||
pbje_status = PBJE_DONE;
|
||||
break;
|
||||
|
||||
case PBJE_TDO_SCAN1: //TDI = 1, TMS=0 256max
|
||||
case PBJE_TDO_SCAN0: //TDI = 0, TMS=0 (last TMS=1) 256max
|
||||
pbje_status = PBJE_PROC;
|
||||
pbje_scan( FORCE1, DATA0 );
|
||||
pbje_scan( FORCE0, DATA0, 1 );
|
||||
pbje_status = PBJE_DONE;
|
||||
break;
|
||||
|
||||
case PBJE_TDO_SCAN1: //TDI = 1, TMS=0 (last TMS=1) 256max
|
||||
pbje_status = PBJE_PROC;
|
||||
pbje_scan( FORCE1, DATA0, 1 );
|
||||
pbje_status = PBJE_DONE;
|
||||
break;
|
||||
|
||||
case PBJE_TDO_SCAN0_HOLD: //TDI = 0, TMS=0 256max
|
||||
pbje_status = PBJE_PROC;
|
||||
pbje_scan( FORCE0, DATA0, 0 );
|
||||
pbje_status = PBJE_DONE;
|
||||
break;
|
||||
|
||||
case PBJE_TDO_SCAN1_HOLD: //TDI = 1, TMS=0 256max
|
||||
pbje_status = PBJE_PROC;
|
||||
pbje_scan( FORCE1, DATA0, 0 );
|
||||
pbje_status = PBJE_DONE;
|
||||
break;
|
||||
|
||||
//case PBJE_HALF_SCAN: //TDI = first half of data array, TDO = second, TMS=0 128max
|
||||
// pbje_status = PBJE_PROC;
|
||||
// pbje_scan( DATA0, DATA1 );
|
||||
// pbje_scan( DATA0, DATA1, 1 );
|
||||
// pbje_status = PBJE_DONE;
|
||||
// break;
|
||||
|
||||
case PBJE_FULL_SCAN: //TDI = entire data array, TDO dumped into array stomping TDI, TMS=0 256max
|
||||
pbje_status = PBJE_PROC;
|
||||
pbje_scan( DATA0, DATA0 );
|
||||
pbje_scan( DATA0, DATA0, 1 );
|
||||
pbje_status = PBJE_DONE;
|
||||
break;
|
||||
|
||||
case PBJE_FULL_SCAN_HOLD: //TDI = entire data array, TDO dumped into array stomping TDI, TMS=0 256max
|
||||
pbje_status = PBJE_PROC;
|
||||
pbje_scan( DATA0, DATA0, 0 );
|
||||
pbje_status = PBJE_DONE;
|
||||
break;
|
||||
|
||||
|
|
@ -332,8 +356,9 @@ void pbje_state_change( uint8_t tms_data )
|
|||
//tdi/tdo data in data array, ingored, or forced 0/1
|
||||
//numclk contains number of tck clocks to perform
|
||||
//PRE/POST: TCK is low, all signals low (limit 5v non-tolerance with original kazzos)
|
||||
void pbje_scan( uint8_t tdi_data, uint8_t tdo_data )
|
||||
void pbje_scan( uint8_t tdi_data, uint8_t tdo_data, uint8_t exit )
|
||||
{
|
||||
|
||||
//numclk is a sticky value, don't modify!
|
||||
uint8_t clk_count = pbje_numclk;
|
||||
uint8_t cur_byte = 0;
|
||||
|
|
@ -414,7 +439,22 @@ void pbje_scan( uint8_t tdi_data, uint8_t tdo_data )
|
|||
}
|
||||
}
|
||||
|
||||
clk_count--;
|
||||
|
||||
//clock in TMS & TDI value with rising edge of TCK
|
||||
//on the last shift, if exiting, exit SHIFT-DR/IR so TMS must go high
|
||||
//This will put statemachine in EXIT1-IR/DR state at the same time the last bit is shifted in
|
||||
if( exit && (clk_count == 0)) {
|
||||
#ifdef STM_INL6
|
||||
TMS_HI();
|
||||
#else
|
||||
exp_byte |= TMS_MASK;
|
||||
EXP_SET(exp_byte);
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
//clock TCK latching both TMS & TDI
|
||||
#ifdef STM_INL6
|
||||
TCK_HI();
|
||||
#else
|
||||
|
|
@ -423,8 +463,6 @@ void pbje_scan( uint8_t tdi_data, uint8_t tdo_data )
|
|||
EXP_SET(exp_byte_temp);
|
||||
#endif
|
||||
|
||||
//may need to slow between edges.. depending on max TCK frequency...
|
||||
clk_count--;
|
||||
|
||||
//end cycle TDO shifted out on falling edge of TCK
|
||||
#ifdef STM_INL6
|
||||
|
|
|
|||
|
|
@ -81,6 +81,6 @@ void jtag_run_pbje();
|
|||
#define DATA0 0x20 //0x2x -> data array
|
||||
//#define DATA1 0x21
|
||||
void pbje_state_change( uint8_t tms_data );
|
||||
void pbje_scan( uint8_t tdi_data, uint8_t tdo_data );
|
||||
void pbje_scan( uint8_t tdi_data, uint8_t tdo_data, uint8_t exit );
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -6,8 +6,31 @@ local jtag = {}
|
|||
local dict = require "scripts.app.dict"
|
||||
|
||||
-- file constants
|
||||
local pbje_loc --physical location of PBJE engine so this script known how to set engine registers
|
||||
local cur_jtag_state
|
||||
|
||||
local clock = os.clock
|
||||
local function sleep(n) -- seconds
|
||||
local t0 = clock()
|
||||
while clock() - t0 <= n do end
|
||||
end
|
||||
-- warning: clock can eventually wrap around for sufficiently large n
|
||||
-- (whose value is platform dependent). Even for n == 1, clock() - t0
|
||||
-- might become negative on the second that clock wraps.
|
||||
|
||||
-- local functions
|
||||
|
||||
-- initialize lua portions of JTAG
|
||||
-- JTAG hardware port may be virtuatlized by placing PBJE "Paul's Basic JTAG Engine"
|
||||
-- inside the board itself (ie CIC mcu) instead of on the inlretro programmer
|
||||
-- in these types of cases, want the jtag high level functions to be independent of
|
||||
-- where the PBJE engine is located physically.
|
||||
local function init_jtag_lua( location )
|
||||
|
||||
pbje_loc = location
|
||||
|
||||
end
|
||||
|
||||
local function wait_pbje_done( num_polls, debug )
|
||||
|
||||
local status
|
||||
|
|
@ -29,41 +52,464 @@ local function wait_pbje_done( num_polls, debug )
|
|||
|
||||
end
|
||||
|
||||
local function set_data_2B( data )
|
||||
|
||||
--check args
|
||||
if( data > 0xFFFF )then
|
||||
print("ERROR data:", data, "too large for set_data_2B")
|
||||
return false
|
||||
end
|
||||
|
||||
--set data based on pjbe location
|
||||
if( pbje_loc == nil ) then
|
||||
print("ERROR, pbje location must be initialized prior to setting registers")
|
||||
|
||||
elseif( pbje_loc == "INLRETRO" ) then
|
||||
dict.jtag("SET_2B_DATA", data)
|
||||
return true
|
||||
|
||||
else
|
||||
print("ERROR, pbje location:", pbje_loc, "not recognized by set_data_2B function.")
|
||||
end
|
||||
|
||||
--failed if got to this point without returning
|
||||
return false
|
||||
|
||||
end
|
||||
|
||||
local function set_clk( num_clks )
|
||||
|
||||
--check args
|
||||
if( num_clks == 256 ) then
|
||||
num_clks = 0
|
||||
elseif( num_clks > 255 or num_clks < 0 )then
|
||||
print("ERROR num clks:", num_clks, "exceeds range of 1-256")
|
||||
return false
|
||||
end
|
||||
|
||||
--set num_clks based on pjbe location
|
||||
if( pbje_loc == nil ) then
|
||||
print("ERROR, pbje location must be initialized prior to setting registers")
|
||||
|
||||
elseif( pbje_loc == "INLRETRO" ) then
|
||||
dict.jtag("SET_NUMCLK", num_clks)
|
||||
return true
|
||||
|
||||
else
|
||||
print("ERROR, pbje location:", pbje_loc, "not recognized by set_clk function.")
|
||||
end
|
||||
|
||||
--failed if got to this point without returning
|
||||
return false
|
||||
|
||||
end
|
||||
|
||||
local function set_run_get_cmd( command )
|
||||
|
||||
local rv
|
||||
|
||||
--check args
|
||||
if not op_jtag[command] then
|
||||
print("ERROR command:", command, "is not defined in shared_dict_jtag.h")
|
||||
return false
|
||||
end
|
||||
|
||||
--set command based on pjbe location
|
||||
if( pbje_loc == nil ) then
|
||||
print("ERROR, pbje location must be initialized prior to setting registers")
|
||||
|
||||
elseif( pbje_loc == "INLRETRO" ) then
|
||||
rv = dict.jtag("SET_CMD_WAIT", command)
|
||||
--verify command was done
|
||||
if(rv ~= op_jtag["PBJE_DONE"]) then print("error JTAG not done, status: ", rv) end
|
||||
return true
|
||||
|
||||
else
|
||||
print("ERROR, pbje location:", pbje_loc, "not recognized by set_run_get_cmd function.")
|
||||
end
|
||||
|
||||
--failed if got to this point without returning
|
||||
return false
|
||||
|
||||
end
|
||||
|
||||
-- clocks JTAG statemachine with TMS set to 1 enough times to guarantee RESET state
|
||||
-- prereq: JTAG PBJEngine must be initialized
|
||||
local function reset_statemachine( debug )
|
||||
|
||||
local rv
|
||||
--only takes 5 clocks with TMS high to force into RESET from any state
|
||||
set_clk(8)
|
||||
set_run_get_cmd("PBJE_CLOCK1") --no data needed for this opcode, forces TMS to 1
|
||||
|
||||
--we know the state machine is in RESET now
|
||||
cur_jtag_state = "RESET"
|
||||
end
|
||||
|
||||
|
||||
|
||||
-- current and next JTAG state must be stable (RESET, IDLE, PAUSE-DR/IR) or SHIFT-DR/IR
|
||||
-- only exception is reset will blindly force RESET by clocking with TMS high
|
||||
|
||||
-- other gotcha is that the last TDI bit is latched when transitioning out of SHIFT-DR/IR
|
||||
-- state. So data scans must go from shift to exit1 to complete. Therefore it doesn't make
|
||||
-- sense to enter this function in a SHIFT-DR/IR state, doing so would scan in one bit when
|
||||
-- exiting SHIFT state
|
||||
|
||||
|
||||
local function goto_state( new_jtag_state )
|
||||
|
||||
local clk, tms
|
||||
|
||||
--if new state is RESET then, just blindly clock with TMS high
|
||||
if( new_jtag_state == "RESET" ) then
|
||||
reset_statemachine()
|
||||
cur_jtag_state = "RESET"
|
||||
return true
|
||||
end
|
||||
|
||||
--current state is stored in cur_jtag_state
|
||||
if( cur_jtag_state == "RESET" ) then
|
||||
if( new_jtag_state == "IDLE" ) then
|
||||
clk = 1
|
||||
tms = 0 -- IDLE-RESET
|
||||
|
||||
elseif( new_jtag_state == "SHIFT_DR" ) then
|
||||
clk = 4
|
||||
tms = 0x02 -- SHIFT-CAP-SELDR-IDLE 0010
|
||||
|
||||
elseif( new_jtag_state == "SHIFT_IR" ) then
|
||||
clk = 5
|
||||
tms = 0x06 -- SHIFT-CAP-SELIR-SELDR-IDLE 00110
|
||||
|
||||
elseif( new_jtag_state == "PAUSE_DR" ) then
|
||||
clk = 5
|
||||
tms = 0x0a -- PAUSE-EX1-CAP-SELDR-IDLE 01010
|
||||
|
||||
elseif( new_jtag_state == "PAUSE_IR" ) then
|
||||
clk = 6
|
||||
tms = 0x16 -- PAUSE-EX1-CAP-SELIR-SELDR-IDLE 010110
|
||||
|
||||
else
|
||||
print("ERROR!!! new JTAG state:", new_jtag_state, "isn't stable, nor shift state!!!")
|
||||
return nil
|
||||
end
|
||||
|
||||
|
||||
elseif( cur_jtag_state == "IDLE" ) then
|
||||
if( new_jtag_state == "IDLE" ) then
|
||||
clk = 1
|
||||
tms = 0 -- IDLE-IDLE
|
||||
|
||||
elseif( new_jtag_state == "SHIFT_DR" ) then
|
||||
clk = 3
|
||||
tms = 0x01 -- SHIFT-CAP-SELDR 001
|
||||
|
||||
elseif( new_jtag_state == "SHIFT_IR" ) then
|
||||
clk = 4
|
||||
tms = 0x03 -- SHIFT-CAP-SELIR-SELDR 0011
|
||||
|
||||
elseif( new_jtag_state == "PAUSE_DR" ) then
|
||||
clk = 4
|
||||
tms = 0x05 -- PAUSE-EX1-CAP-SELDR 0101
|
||||
|
||||
elseif( new_jtag_state == "PAUSE_IR" ) then
|
||||
clk = 5
|
||||
tms = 0x0b -- PAUSE-EX1-CAP-SELIR-SELDR 01011
|
||||
else
|
||||
print("ERROR!!! new JTAG state:", new_jtag_state, "isn't stable, nor shift state!!!")
|
||||
return nil
|
||||
end
|
||||
|
||||
elseif( cur_jtag_state == "EXIT1_DR" ) then
|
||||
if( new_jtag_state == "IDLE" ) then
|
||||
clk = 2
|
||||
tms = 0x01 -- IDLE-UP 01
|
||||
|
||||
elseif( new_jtag_state == "SHIFT_DR" ) then
|
||||
clk = 3
|
||||
tms = 0x02 -- SHIFT-EX2-PAUSE 010
|
||||
|
||||
elseif( new_jtag_state == "SHIFT_IR" ) then
|
||||
clk = 5
|
||||
tms = 0x07 -- SHIFT-CAP-SELIR-SELDR-UP 0_0111
|
||||
|
||||
elseif( new_jtag_state == "PAUSE_DR" ) then
|
||||
clk = 1
|
||||
tms = 0x00 -- PAUSE 0
|
||||
|
||||
elseif( new_jtag_state == "PAUSE_IR" ) then
|
||||
clk = 6
|
||||
tms = 0x17 -- PAUSE-EX1-CAP-SELIR-SELDR-UP 01_0111
|
||||
else
|
||||
print("ERROR!!! new JTAG state:", new_jtag_state, "isn't stable, nor shift state!!!")
|
||||
return nil
|
||||
end
|
||||
|
||||
elseif( cur_jtag_state == "EXIT1_IR" ) then
|
||||
if( new_jtag_state == "IDLE" ) then
|
||||
clk = 2
|
||||
tms = 0x01 -- IDLE-UP 01
|
||||
|
||||
elseif( new_jtag_state == "SHIFT_DR" ) then
|
||||
clk = 4
|
||||
tms = 0x03 -- SHIFT-CAP-SELIR-UP 0011
|
||||
|
||||
elseif( new_jtag_state == "SHIFT_IR" ) then
|
||||
clk = 3
|
||||
tms = 0x02 -- SHIFT-EX2-PAUSE 010
|
||||
|
||||
elseif( new_jtag_state == "PAUSE_DR" ) then
|
||||
clk = 5
|
||||
tms = 0x0b -- PAUSE-EX1-CAP-SELIR-UP 0_1011
|
||||
|
||||
elseif( new_jtag_state == "PAUSE_IR" ) then
|
||||
clk = 1
|
||||
tms = 0x00 -- PAUSE 0
|
||||
else
|
||||
print("ERROR!!! new JTAG state:", new_jtag_state, "isn't stable, nor shift state!!!")
|
||||
return nil
|
||||
end
|
||||
|
||||
|
||||
elseif( cur_jtag_state == "SHIFT_DR" ) then
|
||||
-- if( new_jtag_state == "IDLE" ) then
|
||||
-- clk = 3
|
||||
-- tms = 0x03 -- IDLE-UP-EX1 011
|
||||
--
|
||||
-- -- elseif( new_jtag_state == "SHIFT_DR" ) then
|
||||
-- -- --nothing to do
|
||||
--
|
||||
-- elseif( new_jtag_state == "SHIFT_IR" ) then
|
||||
-- clk = 6
|
||||
-- tms = 0x0f -- SHIFT-CAP-SELIR-SELDR-UP-EX1 00_1111
|
||||
--
|
||||
-- elseif( new_jtag_state == "PAUSE_DR" ) then
|
||||
-- clk = 2
|
||||
-- tms = 0x01 -- PAUSE-EX1 01
|
||||
--
|
||||
-- elseif( new_jtag_state == "PAUSE_IR" ) then
|
||||
-- clk = 7
|
||||
-- tms = 0x2f -- PAUSE-EX1-CAP-SELIR-SELDR-UP-EX1 010_1111
|
||||
-- else
|
||||
--
|
||||
print("ERROR!!! can't change state starting from SHIFT-IR/DR as a bit will be scanned in when exitting")
|
||||
return nil
|
||||
-- end
|
||||
|
||||
elseif( cur_jtag_state == "SHIFT_IR" ) then
|
||||
-- if( new_jtag_state == "IDLE" ) then
|
||||
-- clk = 3
|
||||
-- tms = 0x03 -- IDLE-UP-EX1 011
|
||||
--
|
||||
-- elseif( new_jtag_state == "SHIFT_DR" ) then
|
||||
-- clk = 5
|
||||
-- tms = 0x07 -- SHIFT-CAP-SELIR-UP-EX1 0_0111
|
||||
--
|
||||
-- -- elseif( new_jtag_state == "SHIFT_IR" ) then
|
||||
-- -- --nothing to do
|
||||
--
|
||||
-- elseif( new_jtag_state == "PAUSE_DR" ) then
|
||||
-- clk = 6
|
||||
-- tms = 0x17 -- PAUSE-EX1-CAP-SELIR-UP-EX1 01_0111
|
||||
--
|
||||
-- elseif( new_jtag_state == "PAUSE_IR" ) then
|
||||
-- clk = 2
|
||||
-- tms = 0x01 -- PAUSE-EX1 01
|
||||
-- else
|
||||
print("ERROR!!! can't change state starting from SHIFT-IR/DR as a bit will be scanned in when exitting")
|
||||
return nil
|
||||
-- end
|
||||
|
||||
elseif( cur_jtag_state == "PAUSE_DR" ) then
|
||||
if( new_jtag_state == "IDLE" ) then
|
||||
clk = 3
|
||||
tms = 0x03 -- IDLE-UP-EX2 011
|
||||
|
||||
elseif( new_jtag_state == "SHIFT_DR" ) then
|
||||
clk = 2
|
||||
tms = 0x01 -- SHIFT-EX2 01
|
||||
|
||||
elseif( new_jtag_state == "SHIFT_IR" ) then
|
||||
clk = 6
|
||||
tms = 0x0f -- SHIFT-CAP-SELIR-SELDR-UP-EX2 00_1111
|
||||
|
||||
elseif( new_jtag_state == "PAUSE_DR" ) then
|
||||
--nothing to do
|
||||
|
||||
elseif( new_jtag_state == "PAUSE_IR" ) then
|
||||
clk = 7
|
||||
tms = 0x2f -- PAUSE-EX1-CAP-SELIR-SELDR-UP_EX2 010_1111
|
||||
else
|
||||
print("ERROR!!! new JTAG state:", new_jtag_state, "isn't stable, nor pre-shift state!!!")
|
||||
return nil
|
||||
end
|
||||
|
||||
elseif( cur_jtag_state == "PAUSE_IR" ) then
|
||||
if( new_jtag_state == "IDLE" ) then
|
||||
clk = 3
|
||||
tms = 0x03 -- IDLE-UP-EX2 011
|
||||
|
||||
elseif( new_jtag_state == "SHIFT_DR" ) then
|
||||
clk = 5
|
||||
tms = 0x07 -- SHIFT-CAP-SELDR-UP-EX2 0_0111
|
||||
|
||||
elseif( new_jtag_state == "SHIFT_IR" ) then
|
||||
clk = 2
|
||||
tms = 0x01 -- SHIFT-EX2 01
|
||||
|
||||
elseif( new_jtag_state == "PAUSE_DR" ) then
|
||||
clk = 6
|
||||
tms = 0x17 -- PAUSE-EX1-CAP-SELDR-UP_EX2 01_0111
|
||||
|
||||
elseif( new_jtag_state == "PAUSE_IR" ) then
|
||||
--nothing to do
|
||||
else
|
||||
print("ERROR!!! new JTAG state:", new_jtag_state, "isn't stable, nor pre-shift state!!!")
|
||||
return nil
|
||||
end
|
||||
|
||||
else
|
||||
print("ERROR!!! current JTAG state:", cur_jtag_state, "isn't stable, nor shift state!!!")
|
||||
return nil
|
||||
end
|
||||
|
||||
--set PJBE register values and give state change command
|
||||
set_data_2B(tms)
|
||||
set_clk(clk)
|
||||
set_run_get_cmd("PBJE_STATE_CHG")
|
||||
|
||||
--update jtag state
|
||||
cur_jtag_state = new_jtag_state
|
||||
|
||||
return true
|
||||
|
||||
end
|
||||
|
||||
|
||||
-- return data scanned out
|
||||
|
||||
local function scan( numbits, data_in, data_out, debug )
|
||||
|
||||
--check to ensure current state is SHIFT-IR/DR
|
||||
if not( cur_jtag_state == "SHIFT_IR" or cur_jtag_state == "SHIFT_DR") then
|
||||
print("ERROR, jtag state must be SHIFT-IR/DR in order to scan data in/out")
|
||||
return nil
|
||||
end
|
||||
|
||||
|
||||
--TODO analyze numbits to determine if needs to be split into several shorter scans
|
||||
--currently all scans exit at end of shift
|
||||
set_clk(numbits)
|
||||
|
||||
--scan out with TDI high
|
||||
if( data_in == "HIGH" and data_out ) then
|
||||
set_run_get_cmd("PBJE_TDO_SCAN1")
|
||||
data_out = dict.jtag("GET_6B_DATA")
|
||||
|
||||
--scan out with TDI low
|
||||
elseif( data_in == "LOW" and data_out ) then
|
||||
set_run_get_cmd("PBJE_TDO_SCAN0")
|
||||
data_out = dict.jtag("GET_6B_DATA")
|
||||
|
||||
--scan in with TDI high
|
||||
elseif( data_in == "HIGH" and not data_out ) then
|
||||
set_run_get_cmd("PBJE_TDO_SCAN1")
|
||||
|
||||
--scan in with TDI low
|
||||
elseif( data_in == "LOW" and not data_out ) then
|
||||
set_run_get_cmd("PBJE_TDO_SCAN0")
|
||||
|
||||
--scan in ignoring TDO
|
||||
elseif( data_in and not data_out ) then
|
||||
set_data_2B(data_in)
|
||||
set_run_get_cmd("PBJE_TDI_SCAN")
|
||||
|
||||
--scan in data and capture scan out
|
||||
elseif( data_in and data_out ) then
|
||||
set_data_2B(data_in)
|
||||
set_run_get_cmd("PBJE_FULL_SCAN")
|
||||
data_out = dict.jtag("GET_6B_DATA")
|
||||
|
||||
else
|
||||
print("ERROR, bad arguements to jtag scan function")
|
||||
return nil
|
||||
end
|
||||
|
||||
--currently all scans exit at end of shift
|
||||
--state has now shifted to EXIT1
|
||||
if( cur_jtag_state == "SHIFT_IR" ) then
|
||||
cur_jtag_state = "EXIT1_IR"
|
||||
elseif( cur_jtag_state == "SHIFT_DR" ) then
|
||||
cur_jtag_state = "EXIT1_DR"
|
||||
end
|
||||
|
||||
--TODO only return the number of bits scanned, mask away everything else
|
||||
return data_out
|
||||
|
||||
end
|
||||
|
||||
|
||||
local function runtest( state, clks, time, debug )
|
||||
|
||||
--check that state is a stable state
|
||||
if( state ~= "IDLE" and state ~= "RESET" and state ~= "PAUSE_DR" and state ~= "PAUSE_IR" ) then
|
||||
print("ERROR! runtest must designate a stable state of IDLE, RESET, PAUSE-DR/IR")
|
||||
return nil
|
||||
end
|
||||
|
||||
--state arguement is required
|
||||
--svf standard dictates this as a sticky value use last passed, IDLE is default
|
||||
goto_state(state)
|
||||
|
||||
|
||||
--currently require some number of TCK clocks to perform test
|
||||
set_clk(clks)
|
||||
|
||||
if( state == "RESET") then
|
||||
--RESET remains stable with TMS = 1
|
||||
set_run_get_cmd("PBJE_CLOCK1")
|
||||
else
|
||||
--PAUSE & IDLE states remain stable with TMS = 0
|
||||
set_run_get_cmd("PBJE_CLOCK0")
|
||||
end
|
||||
|
||||
|
||||
--ensure sufficient time has passed
|
||||
--current firmware build for stm32 on inlretro6 consumes 400nsec per TCK & ~1msec between USB transfers
|
||||
if( time ) then
|
||||
--call sleep function for time number of seconds (support fractions)
|
||||
sleep( time )
|
||||
end
|
||||
|
||||
return true
|
||||
|
||||
end
|
||||
|
||||
|
||||
local function run_jtag( debug )
|
||||
|
||||
|
||||
local rv
|
||||
|
||||
--setup lua portion of jtag engine
|
||||
init_jtag_lua("INLRETRO")
|
||||
|
||||
--initialize JTAG port on USB device
|
||||
dict.io("JTAG_INIT", "JTAG_ON_EXP0_3")
|
||||
--dict.jtag("SET_3B_DATA", 0x0201, 0x03 )
|
||||
--print("return data:", dict.jtag("GET_6B_DATA"))
|
||||
--print(dict.jtag("SET_CMD", "PBJE_STATE_CHG"))
|
||||
--print(dict.jtag("GET_CMD"))
|
||||
--print(dict.jtag("GET_STATUS"))
|
||||
|
||||
--first put/verify jtag statemachine is in RESET
|
||||
dict.jtag("SET_2B_DATA", 0xFFFF)
|
||||
dict.jtag("SET_NUMCLK", 8)
|
||||
rv = dict.jtag("SET_CMD_WAIT", "PBJE_STATE_CHG")
|
||||
--verify command was done
|
||||
if(rv ~= op_jtag["PBJE_DONE"]) then print("error JTAG not done, status: ", rv) end
|
||||
|
||||
goto_state("RESET")
|
||||
|
||||
--by default jtag should be in IDCODE or BYPASS if IDCODE not present
|
||||
--The TDI pin doesn't even have to be working to scan out IDCODE by this means
|
||||
|
||||
--change to SCAN-DR state
|
||||
--reset-DRshift c4 m0010
|
||||
dict.jtag("SET_2B_DATA", 0x0002)
|
||||
dict.jtag("SET_NUMCLK", 4)
|
||||
rv = dict.jtag("SET_CMD_WAIT", "PBJE_STATE_CHG")
|
||||
--verify command was done
|
||||
if(rv ~= op_jtag["PBJE_DONE"]) then print("error JTAG not done, status: ", rv) end
|
||||
goto_state("SHIFT_DR")
|
||||
|
||||
--scan out 32bit IDCODE while scanning in 1's to TDI
|
||||
dict.jtag("SET_NUMCLK", 32)
|
||||
dict.jtag("SET_CMD", "PBJE_TDO_SCAN1")
|
||||
--verify done before updating PBJE values
|
||||
jtag.wait_pbje_done( 4, true )
|
||||
rv = scan( 32, "HIGH", true )
|
||||
|
||||
rv = dict.jtag("GET_6B_DATA")
|
||||
print("return data:", string.format(" %X, ",rv))
|
||||
if( rv == 0x1281043 ) then
|
||||
-- Mach XO 256 01281043
|
||||
|
|
@ -90,43 +536,155 @@ local function run_jtag( debug )
|
|||
--
|
||||
-- ! Shift in IDCODE(0x16) instruction
|
||||
-- SIR 8 TDI (16);
|
||||
goto_state("SHIFT_IR")
|
||||
scan( 8, 0x16)
|
||||
|
||||
--return to default state after SIR
|
||||
--doesn't appear to actually be needed
|
||||
-- goto_state("PAUSE_IR")
|
||||
|
||||
-- SDR 32 TDI (FFFFFFFF)
|
||||
-- TDO (01281043)
|
||||
-- MASK (FFFFFFFF);
|
||||
|
||||
-- --change to SCAN-IR state
|
||||
-- dict.jtag("SET_2B_DATA", 0x0006)
|
||||
-- dict.jtag("SET_NUMCLK", 5)
|
||||
-- dict.jtag("SET_CMD", "PBJE_STATE_CHG")
|
||||
-- --verify done before updating PBJE values
|
||||
-- jtag.wait_pbje_done( 4, true )
|
||||
--
|
||||
-- --scan in IDCODE instruction
|
||||
-- dict.jtag("SET_2B_DATA", 0x0016)
|
||||
-- dict.jtag("SET_NUMCLK", 8)
|
||||
-- dict.jtag("SET_CMD", "PBJE_TDI_SCAN")
|
||||
-- --verify done before updating PBJE values
|
||||
-- jtag.wait_pbje_done( 4, true )
|
||||
--
|
||||
-- --change to SCAN-DR state
|
||||
-- --shift-pause c2 m01
|
||||
-- --IRpause-DRshift c5 m00111
|
||||
-- --together c7 m001_1101 -> 0x1D
|
||||
-- dict.jtag("SET_2B_DATA", 0x001D)
|
||||
-- dict.jtag("SET_NUMCLK", 7)
|
||||
-- dict.jtag("SET_CMD", "PBJE_STATE_CHG")
|
||||
-- --verify done before updating PBJE values
|
||||
-- jtag.wait_pbje_done( 4, true )
|
||||
--
|
||||
--
|
||||
-- --scan out 32bit IDCODE while scanning in 1's to TDI
|
||||
-- dict.jtag("SET_NUMCLK", 32)
|
||||
-- dict.jtag("SET_CMD", "PBJE_TDO_SCAN1")
|
||||
-- --verify done before updating PBJE values
|
||||
-- jtag.wait_pbje_done( 4, true )
|
||||
--
|
||||
-- print("return data:", dict.jtag("GET_6B_DATA"))
|
||||
goto_state("SHIFT_DR")
|
||||
rv = scan( 32, "HIGH", true)
|
||||
print("return data:", string.format(" %X, ",rv))
|
||||
|
||||
|
||||
--xilinx IDCODE command is different
|
||||
--//Loading device with 'idcode' instruction.
|
||||
--SIR 8 TDI (fe) SMASK (ff) ;
|
||||
--SDR 32 TDI (00000000) SMASK (ffffffff) TDO (f9602093) MASK (0fffffff) ;
|
||||
-- goto_state("SHIFT_IR")
|
||||
-- scan( 8, 0xfe)
|
||||
-- goto_state("SHIFT_DR")
|
||||
-- rv = scan( 32, "HIGH", true)
|
||||
-- print("return data:", string.format(" %X, ",rv))
|
||||
|
||||
|
||||
--MACH XO 256
|
||||
--! Program Bscan register
|
||||
--
|
||||
--! Shift in Preload(0x1C) instruction
|
||||
--SIR 8 TDI (1C);
|
||||
--SDR 160 TDI (FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF);
|
||||
--the HIGHZ instruction seems more fitting... 0x18
|
||||
goto_state("SHIFT_IR")
|
||||
scan( 8, 0x1c)
|
||||
goto_state("SHIFT_DR")
|
||||
scan( 160, "HIGH")
|
||||
|
||||
|
||||
-- ! Enable the programming mode
|
||||
--
|
||||
-- ! Shift in ISC ENABLE(0x15) instruction
|
||||
-- SIR 8 TDI (15);
|
||||
goto_state("SHIFT_IR")
|
||||
scan( 8, 0x15)
|
||||
-- RUNTEST IDLE 5 TCK 1.00E-003 SEC;
|
||||
runtest( "IDLE", 5 )
|
||||
|
||||
--
|
||||
--
|
||||
-- ! Erase the device
|
||||
--
|
||||
-- ! Shift in ISC SRAM ENABLE(0x55) instruction
|
||||
-- SIR 8 TDI (55);
|
||||
goto_state("SHIFT_IR")
|
||||
scan( 8, 0x55)
|
||||
runtest( "IDLE", 5 )
|
||||
-- RUNTEST IDLE 5 TCK 1.00E-003 SEC;
|
||||
--
|
||||
-- ! Shift in ISC ERASE(0x03) instruction
|
||||
-- SIR 8 TDI (03);
|
||||
goto_state("SHIFT_IR")
|
||||
scan( 8, 0x03)
|
||||
runtest( "IDLE", 5 )
|
||||
-- RUNTEST IDLE 5 TCK 1.00E-003 SEC;
|
||||
--
|
||||
-- ! Shift in ISC ENABLE(0x15) instruction
|
||||
-- SIR 8 TDI (15);
|
||||
goto_state("SHIFT_IR")
|
||||
scan( 8, 0x15)
|
||||
runtest( "IDLE", 5 )
|
||||
-- RUNTEST IDLE 5 TCK 1.00E-003 SEC;
|
||||
--
|
||||
-- ! Shift in ISC ERASE(0x03) instruction
|
||||
-- SIR 8 TDI (03);
|
||||
goto_state("SHIFT_IR")
|
||||
scan( 8, 0x03)
|
||||
--runtest( "IDLE", 5, 1 ) --seems to fail if under ~0.5sec
|
||||
runtest( "IDLE", 5, 0.7 )
|
||||
-- RUNTEST IDLE 5 TCK 1.00E+001 SEC;
|
||||
-- SDR 1 TDI (0)
|
||||
-- TDO (1); TDO must be set
|
||||
goto_state("SHIFT_DR")
|
||||
rv = scan( 1, 0x0, true) % 2 --mask out all but the last bit
|
||||
if( rv == 1) then
|
||||
print("MachXO-256 CPLD erasure success!!!")
|
||||
else
|
||||
print("failed to erase MachXO-256 CPLD")
|
||||
end
|
||||
|
||||
|
||||
-- ! Read the status bit
|
||||
--
|
||||
-- ! Shift in READ STATUS(0xB2) instruction
|
||||
-- SIR 8 TDI (B2);
|
||||
goto_state("SHIFT_IR")
|
||||
scan( 8, 0xb2)
|
||||
runtest( "IDLE", 5 )
|
||||
-- RUNTEST IDLE 5 TCK 1.00E-003 SEC;
|
||||
-- SDR 1 TDI (0)
|
||||
-- TDO (0);
|
||||
goto_state("SHIFT_DR")
|
||||
rv = scan( 1, "LOW", true) % 2 --mask out all but the last bit
|
||||
if( rv == 0 ) then
|
||||
print("status bit clear as expected")
|
||||
else
|
||||
print("ERROR status bit was set, not sure what this means...")
|
||||
end
|
||||
|
||||
|
||||
--! Program Fuse Map
|
||||
--
|
||||
--! Shift in INIT ADDRESS(0x21) instruction
|
||||
--SIR 8 TDI (21);
|
||||
--RUNTEST IDLE 5 TCK 1.00E-003 SEC;
|
||||
--! Shift in BYPASS(0xFF) instruction
|
||||
--SIR 8 TDI (FF);
|
||||
--RUNTEST IDLE 5 TCK 1.00E-003 SEC;
|
||||
--! Shift in DATA SHIFT(0x02) instruction
|
||||
--SIR 8 TDI (02);
|
||||
--! Shift in Row = 1
|
||||
--SDR 192 TDI (FFF7BFF3DEFFCEEFFF3BBFFCEEFFF3DFFFFDEFFF3BBFFCFF);
|
||||
--! Shift in LSCC PROGRAM INCR RTI(0x67) instruction
|
||||
--SIR 8 TDI (67);
|
||||
--RUNTEST IDLE 5 TCK 1.00E-002 SEC;
|
||||
--STATE DRPAUSE;
|
||||
--! Shift in DATA SHIFT(0x02) instruction
|
||||
--SIR 8 TDI (02);
|
||||
--! Shift in Row = 2
|
||||
--SDR 192 TDI (FFF7BFF3DEFFCEEFFF37BFFCF7FFFFBBFFCEEFFF37BFFCFF);
|
||||
--! Shift in LSCC PROGRAM INCR RTI(0x67) instruction
|
||||
--SIR 8 TDI (67);
|
||||
--RUNTEST IDLE 5 TCK 1.00E-002 SEC;
|
||||
--STATE DRPAUSE;
|
||||
--! Shift in DATA SHIFT(0x02) instruction
|
||||
--SIR 8 TDI (02);
|
||||
--! Shift in Row = 3
|
||||
--SDR 192 TDI (FFBFFFFFDEFFCFFFFFFBBFFCFFFFFF5FFFCFFFFFFFFFFFFF);
|
||||
--! Shift in LSCC PROGRAM INCR RTI(0x67) instruction
|
||||
--SIR 8 TDI (67);
|
||||
--RUNTEST IDLE 5 TCK 1.00E-002 SEC;
|
||||
--STATE DRPAUSE;
|
||||
--! Shift in DATA SHIFT(0x02) instruction
|
||||
--SIR 8 TDI (02);
|
||||
--! Shift in Row = 4
|
||||
--SDR 192 TDI (FFFFFFFFDEFFCFFFFFFBBFFCFFFFFFBBFFCFFFFFFFFFFFFF);
|
||||
--
|
||||
-- ....
|
||||
|
||||
end
|
||||
|
||||
-- global variables so other modules can use them
|
||||
|
|
@ -138,6 +696,7 @@ end
|
|||
-- functions other modules are able to call
|
||||
jtag.wait_pbje_done = wait_pbje_done
|
||||
jtag.run_jtag = run_jtag
|
||||
jtag.sleep = sleep
|
||||
|
||||
-- return the module's table
|
||||
return jtag
|
||||
|
|
|
|||
|
|
@ -5,6 +5,9 @@
|
|||
-- initial function called from C main
|
||||
function main ()
|
||||
|
||||
|
||||
print("\n")
|
||||
|
||||
local dict = require "scripts.app.dict"
|
||||
local cart = require "scripts.app.cart"
|
||||
local nes = require "scripts.app.nes"
|
||||
|
|
@ -48,6 +51,7 @@ function main ()
|
|||
dict.io("IO_RESET")
|
||||
dict.io("NES_INIT")
|
||||
|
||||
--[[
|
||||
--NES detect mirroring to gain mapper info
|
||||
nes.detect_mapper_mirroring(true)
|
||||
--NES detect memories to gain more mapper/board info
|
||||
|
|
@ -67,75 +71,86 @@ function main ()
|
|||
dict.nes("NES_CPU_WR", 0x8000, 0x00)
|
||||
nes.read_flashID_prgrom_exp0(true)
|
||||
--try mapper 30 flash ID
|
||||
--]]
|
||||
|
||||
|
||||
jtag.run_jtag()
|
||||
|
||||
|
||||
-- --Check for SWIM on A0
|
||||
-- dict.io("IO_RESET")
|
||||
--
|
||||
-- dict.io("SWIM_INIT", "SWIM_ON_A0")
|
||||
-- if swim.start(true) then
|
||||
-- --SWIM is now established and running at HIGH SPEED
|
||||
-- snes_swimcart = false --don't want to use SWIM pin to control flash /OE, use SNES RESET (EXP0) instead
|
||||
--
|
||||
-- -- swim.swim_test()
|
||||
--
|
||||
-- --swim.write_optn_bytes( true, true ) -- enable ROP, debug
|
||||
--
|
||||
-- --check if ROP set, allow clearing ROP and erasing CIC
|
||||
-- --blindly erase STM8 CIC for now by disabling ROP
|
||||
-- swim.disable_ROP_erase(true)
|
||||
--
|
||||
-- --open CIC file
|
||||
-- --local cic_file = assert(io.open("stm8_8KB_zero.bin", "rb"))
|
||||
-- --local cic_file = assert(io.open("stm8_8KB_0xff.bin", "rb"))
|
||||
-- local cic_file = assert(io.open("stm8_8KB_testpattern.bin", "rb"))
|
||||
--
|
||||
-- --write CIC file
|
||||
-- swim.write_flash( cic_file )
|
||||
--
|
||||
-- --close CIC file
|
||||
-- assert(cic_file:close())
|
||||
--
|
||||
-- -- reset STM8 CIC and end SWIM comms to it can execute what we just flashed
|
||||
-- swim.stop_and_reset()
|
||||
-- else
|
||||
-- print("ERROR problem with STM8 CIC")
|
||||
-- end
|
||||
--
|
||||
-- print("done flashing STM8 on A0")
|
||||
--Check for SWIM on A0
|
||||
--[[
|
||||
dict.io("IO_RESET")
|
||||
print("start swim")
|
||||
|
||||
dict.io("SWIM_INIT", "SWIM_ON_A0")
|
||||
if swim.start(true) then
|
||||
--SWIM is now established and running at HIGH SPEED
|
||||
snes_swimcart = false --don't want to use SWIM pin to control flash /OE, use SNES RESET (EXP0) instead
|
||||
|
||||
-- swim.swim_test()
|
||||
|
||||
--swim.write_optn_bytes( true, true ) -- enable ROP, debug
|
||||
|
||||
--check if ROP set, allow clearing ROP and erasing CIC
|
||||
--blindly erase STM8 CIC for now by disabling ROP
|
||||
swim.disable_ROP_erase(true)
|
||||
|
||||
--open CIC file
|
||||
--local cic_file = assert(io.open("stm8_8KB_zero.bin", "rb"))
|
||||
--local cic_file = assert(io.open("stm8_8KB_0xff.bin", "rb"))
|
||||
--local cic_file = assert(io.open("stm8_8KB_testpattern.bin", "rb"))
|
||||
local cic_file = assert(io.open("NESCIC.bin", "rb"))
|
||||
|
||||
--write CIC file
|
||||
swim.write_flash( cic_file )
|
||||
|
||||
--close CIC file
|
||||
assert(cic_file:close())
|
||||
|
||||
--set ROP & AFR0
|
||||
swim.write_optn_bytes( false, true ) -- ROP not set, debug set
|
||||
|
||||
-- reset STM8 CIC and end SWIM comms to it can execute what we just flashed
|
||||
swim.stop_and_reset()
|
||||
else
|
||||
print("ERROR problem with STM8 CIC")
|
||||
end
|
||||
|
||||
print("done flashing STM8 on A0")
|
||||
|
||||
dict.io("IO_RESET")
|
||||
|
||||
-- --determined all that could about mapper board
|
||||
-- --set rom types and sizes
|
||||
-- --perform desired operation
|
||||
--]]
|
||||
|
||||
|
||||
-- --FLASHING:
|
||||
-- --erase cart
|
||||
-- erase.erase_nes( true )
|
||||
-- --open file
|
||||
-- local file
|
||||
-- file = assert(io.open("inltest.bin", "rb"))
|
||||
-- --determine if auto-doubling, deinterleaving, etc,
|
||||
-- --needs done to make board compatible with rom
|
||||
-- --flash cart
|
||||
-- flash.flash_nes( file, true )
|
||||
-- --close file
|
||||
-- assert(file:close())
|
||||
--determined all that could about mapper board
|
||||
--set rom types and sizes
|
||||
--perform desired operation
|
||||
|
||||
-- --DUMPING:
|
||||
-- --create new file
|
||||
-- local file
|
||||
-- file = assert(io.open("dump.bin", "wb"))
|
||||
-- --dump cart into file
|
||||
-- dump.dump_nes( file, true )
|
||||
|
||||
-- --close file
|
||||
-- assert(file:close())
|
||||
--[[
|
||||
--FLASHING:
|
||||
--erase cart
|
||||
erase.erase_nes( true )
|
||||
--open file
|
||||
local file
|
||||
file = assert(io.open("inltest.bin", "rb"))
|
||||
--determine if auto-doubling, deinterleaving, etc,
|
||||
--needs done to make board compatible with rom
|
||||
--flash cart
|
||||
flash.flash_nes( file, true )
|
||||
--close file
|
||||
assert(file:close())
|
||||
|
||||
--DUMPING:
|
||||
--create new file
|
||||
local file
|
||||
file = assert(io.open("dump.bin", "wb"))
|
||||
--dump cart into file
|
||||
dump.dump_nes( file, true )
|
||||
|
||||
--close file
|
||||
assert(file:close())
|
||||
--]]
|
||||
|
||||
|
||||
-- dict.io("IO_RESET")
|
||||
|
|
|
|||
|
|
@ -26,18 +26,29 @@
|
|||
//should only be used for quick commands like state change, not for long scan in/outs
|
||||
|
||||
#define GET_STATUS 4 //RL=3 only the engine can write to status, ready only by host
|
||||
|
||||
#define SET_NUMCLK 5 //numclk is only writable by host, read only by engine
|
||||
//set to zero if would like 256 clocks to be performed
|
||||
//range is 1-255, 0 equates to 256 clocks
|
||||
|
||||
#define SET_2B_DATA 7
|
||||
#define GET_6B_DATA 8 //RL=8
|
||||
|
||||
|
||||
//PBJE Paul's Basic Jtag engine commands & status'
|
||||
#define PBJE_STATE_CHG 0x01 //data array holds TMS values to clock values bit packed, TDI undefined
|
||||
|
||||
|
||||
//DATA SCAN commands, these end with settting TMS to 1 to exit SHIFT-IR/DR completing the SCAN.
|
||||
//If need to make multiple smaller scans to make up one big scan, this would be the last scan, "HOLD" scans
|
||||
//lower down would be the first to second to last scans
|
||||
#define PBJE_TDI_SCAN 0x02 //ignore TDO 256max
|
||||
#define PBJE_TDO_SCAN0 0x03 //TDI = 0, TMS=0 256max
|
||||
#define PBJE_TDO_SCAN1 0x04 //TDI = 1, TMS=0 256max
|
||||
#define PBJE_HALF_SCAN 0x05 //TDI = first half of data array, TDO = second, TMS=0 128max
|
||||
//#define PBJE_HALF_SCAN 0x05 //TDI = first half of data array, TDO = second, TMS=0 128max
|
||||
#define PBJE_FULL_SCAN 0x06 //TDI = entire data array, TDO dumped into array stomping TDI, TMS=0 256max
|
||||
|
||||
//Clocking commands, mostly used for RUNTEST type instructions when waiting for device to complete operation
|
||||
#define PBJE_CLOCK0 0x07 //data not used, clock TMS=0 for NUMCLK
|
||||
#define PBJE_CLOCK1 0x08 //data not used, clock TMS=1 for NUMCLK
|
||||
#define PBJE_FREE_CLOCK0 0x09 //data not used, clock TMS=0 indefinely
|
||||
|
|
@ -45,6 +56,13 @@
|
|||
#define PBJE_LONG_CLOCK0 0x0B //data contains 32bit uint for number of clocks, TMS=0, numclk not used
|
||||
#define PBJE_LONG_CLOCK1 0x0C //data contains 32bit uint for number of clocks, TMS=1, numclk not used
|
||||
|
||||
//These scans leave JTAG SM in SHIFT state so more bits can be shifted in later on
|
||||
//this is because the last bit is shifted in when exiting SHIFT-IR/DR
|
||||
#define PBJE_TDI_SCAN_HOLD 0x0D //ignore TDO 256max
|
||||
#define PBJE_TDO_SCAN0_HOLD 0x0E //TDI = 0, TMS=0 256max
|
||||
#define PBJE_TDO_SCAN1_HOLD 0x0F //TDI = 1, TMS=0 256max
|
||||
#define PBJE_FULL_SCAN_HOLD 0x10 //TDI = entire data array, TDO dumped into array stomping TDI, TMS=0 256max
|
||||
|
||||
|
||||
//Statuses & commands to get to the status
|
||||
#define PBJE_INIT 0x80
|
||||
|
|
|
|||
|
|
@ -103,7 +103,7 @@
|
|||
// PC15 "AUDR" cart audio
|
||||
#define C15_ 15
|
||||
#define AUDR_ 15
|
||||
// PC16 "CIN" CIC data in
|
||||
// PC16 "CIN" CIC data in & GB power selector
|
||||
#define C16_ 16
|
||||
#define CIN_ 16
|
||||
// PC17 "SWD" mcu debug
|
||||
|
|
|
|||
Loading…
Reference in New Issue