From 27773e4231493225a9b3a3a9fa62d2e65588f777 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9C=9D=E6=97=A5=E8=96=AB=20/=20K=2ESato?= Date: Thu, 15 Aug 2024 18:30:44 +0900 Subject: [PATCH] v1.32.44: Fix for CLEAR_FEATURE request (#6) * Fix for CLEAR_FEATURE request * HEX file update --- UPDI4AVR-USB.ino | 68 +- hex/updi4avr-usb/AVR64DU32_CNANO.hex | 436 +- hex/updi4avr-usb/AVR64DU32_CNANO.lst | 5284 ++++++------ hex/updi4avr-usb/AVR64DU32_CNANO_DEBUG1.hex | 886 +- hex/updi4avr-usb/AVR64DU32_CNANO_DEBUG1.lst | 8616 +++++++++---------- src/configuration.h | 2 +- src/jtag.cpp | 814 +- src/prototype.h | 1090 +-- src/usb.cpp | 7 +- 9 files changed, 8603 insertions(+), 8600 deletions(-) diff --git a/UPDI4AVR-USB.ino b/UPDI4AVR-USB.ino index 5ec6519..0c36aa7 100644 --- a/UPDI4AVR-USB.ino +++ b/UPDI4AVR-USB.ino @@ -1,34 +1,34 @@ -/** - * @file UPDI4AVR-USB.ino - * @author askn (K.Sato) multix.jp - * @brief UPDI4AVR-USB is a program writer for the AVR series, which are UPDI/TPI - * type devices that connect via USB 2.0 Full-Speed. It also has VCP-UART - * transfer function. It only works when installed on the AVR-DU series. - * Recognized by standard drivers for Windows/macos/Linux and AVRDUDE>=7.2. - * @version 1.32.40+ - * @date 2024-07-10 - * @copyright Copyright (c) 2024 askn37 at github.com - * @link Potal : https://askn37.github.io/ - * MIT License : https://askn37.github.io/LICENSE.html - */ - -/* - * This file is always empty. - * It tells the Arduino IDE to recognize the fileset as a valid sketch. - * It is assumed that the following SDK is used: - * - * - https://github.com/askn37/multix-zinnia-sdk-modernAVR - * - * The SDK menu options are as follows for "AVR64DU32 Curiosity Nano": - * - * Board Manager - AVR DU w/o Bootloader - * Variant - 32pin AVR64DU32 (64KiB+8KiB) - * Clock(Dx) - Internal 20 MHz (recommend) : Maximum speed available on die with Errata. - * FUSE PF6 - PF6 pin=GPIO (input only) : Not change this, SW0 will not be usable. - * Build option - Build Release (default) : or DEBUG=1, DEBUG=2 - * Console and LED - UART1 TX:PD6 RX:PD7 LED=PF2 SW=PF6 (AVR64DU32 Curiosity Nano) - * Console - CONSOLE_BAUD=500000 bps : (using DEBUG) The maximum speed that can be used with the on-board debugger. - * Proggramer - Curiosity Nano (nEDBG: ATSAMD21E18) - */ - -// end of code +/** + * @file UPDI4AVR-USB.ino + * @author askn (K.Sato) multix.jp + * @brief UPDI4AVR-USB is a program writer for the AVR series, which are UPDI/TPI + * type devices that connect via USB 2.0 Full-Speed. It also has VCP-UART + * transfer function. It only works when installed on the AVR-DU series. + * Recognized by standard drivers for Windows/macos/Linux and AVRDUDE>=7.2. + * @version 1.32.40+ + * @date 2024-07-10 + * @copyright Copyright (c) 2024 askn37 at github.com + * @link Potal : https://askn37.github.io/ + * MIT License : https://askn37.github.io/LICENSE.html + */ + +/* + * This file is always empty. + * It tells the Arduino IDE to recognize the fileset as a valid sketch. + * It is assumed that the following SDK is used: + * + * - https://github.com/askn37/multix-zinnia-sdk-modernAVR + * + * The SDK menu options are as follows for "AVR64DU32 Curiosity Nano": + * + * Board Manager - AVR DU w/o Bootloader + * Variant - 32pin AVR64DU32 (64KiB+8KiB) + * Clock(Dx) - Internal 20 MHz (recommend) : Maximum speed available on die with Errata. + * FUSE PF6 - PF6 pin=GPIO (input only) : Not change this, SW0 will not be usable. + * Build option - Build Release (default) : or DEBUG=1, DEBUG=2 + * Console and LED - UART1 TX:PD6 RX:PD7 LED=PF2 SW=PF6 (AVR64DU32 Curiosity Nano) + * Console - CONSOLE_BAUD=500000 bps : (using DEBUG) The maximum speed that can be used with the on-board debugger. + * Proggramer - Curiosity Nano (nEDBG: ATSAMD21E18) + */ + +// end of code diff --git a/hex/updi4avr-usb/AVR64DU32_CNANO.hex b/hex/updi4avr-usb/AVR64DU32_CNANO.hex index 41d09d2..38fd4a3 100644 --- a/hex/updi4avr-usb/AVR64DU32_CNANO.hex +++ b/hex/updi4avr-usb/AVR64DU32_CNANO.hex @@ -26,7 +26,7 @@ :100190000409040200020A000000070503024000EF :1001A00000070583024000000A060002EF0201403A :1001B000000012010002EF020140DB04150B0001F8 -:1001C0000102030190280018380000000001202BD4 +:1001C0000102030190280018380000000001202CD3 :1001D000000000000000000000004B00000663006B :1001E00000007B00000E6300000000000000000023 :1001F0000000BB40001E630000008B00001E634037 @@ -35,9 +35,9 @@ :10022000CFEFCDBFDFE7DEBF88ED90E284BF9093D4 :10023000680090E084BF90936100E0E0F4E084E027 :1002400083878FEF848780934C0480936C04809322 -:10025000AC0410E6A0E0B0E6EAEAFBE202C00590DA +:10025000AC0410E6A0E0B0E6E6EAFBE202C00590DE :100260000D92AC37B107D9F720E6ACE7B0E601C094 -:100270001D92A538B207E1F70E94530E0C94D315D6 +:100270001D92A538B207E1F70E94530E0C94D115D8 :10028000BFCE88E58093270A81E08093000A90E042 :1002900080E0FC0123E0F595E7952A95E1F7E65E1D :1002A000FF49208130E0482F477002C035952795DF @@ -60,7 +60,7 @@ :1003B00082FDFCCF8EEF8093400C089520910408BD :1003C00027FF04C000900108009000080197B1F7D2 :1003D00008959C0150E040E060E071E782E090E029 -:1003E0000E949A15DA01C9010196A11DB11DB595AA +:1003E0000E949815DA01C9010196A11DB11DB595AC :1003F000A7959795879580349105A105B10554F08F :10040000009721E0A207B10548F08FEF9FEFA0E031 :10041000B0E0089580E490E0A0E0B0E0089590E0BE @@ -184,7 +184,7 @@ :100B7000CF93DF9300D000D0CDB7DEB720917E6059 :100B800030917F60409180605091816021153105E6 :100B900041055105A1F060E078E689E899E00E94FE -:100BA00078152F5F3F4F4F4F5F4F569547953795BD +:100BA00076152F5F3F4F4F4F5F4F569547953795BF :100BB0002795A8EC203631054105510528F4220F70 :100BC000331F441F551FAAEC69017A0180E4C81A3B :100BD000D108E108F10880ECC8168FEFD806E104CF @@ -309,7 +309,7 @@ :10134000070C81E08093010C1CBA1DBA1EBA1092E2 :1013500023641092246410922264109221641092EB :10136000206410921F644AE450E061ED71E086E26F -:1013700094E60E945B1510921E64E6E0F3E681EAB3 +:1013700094E60E94591510921E64E6E0F3E681EAB5 :10138000808780E281871286138681E090E08487DF :10139000958782E090E086879787108A118A83E894 :1013A0008883DF91CF9108958AE18A95F1F700C093 @@ -444,10 +444,10 @@ :101BB000BF91AF919F918F917F916F915F914F9165 :101BC0003F912F910F900FBE0F901F9018958EEDA3 :101BD00093E6A0CF0E948001AFCF11241092000B9A -:101BE00081E08093060B62E070E080E794E643D7E3 +:101BE00081E08093060B62E070E080E794E641D7E5 :101BF0008FB7F8941092000B91E09093060B8FBF73 :101C00001895CF93DF9300D000D0CDB7DEB78B838C -:101C10009C8319821A8280E794E60DD7892BD9F428 +:101C10009C8319821A8280E794E60BD7892BD9F42A :101C20009FB7F89410920A0B10920B0B20E233E04E :101C300020930C0B30930D0B81E08093050B809368 :101C4000060B8FE08093000B9FBFEB81FC81099511 @@ -484,225 +484,225 @@ :101E300090934100106114FF0CC080917D6083304D :101E400011F00E9489051092030C8091000C811101 :101E5000C6CF80912E6484FF1FC01091066317FFC8 -:101E60000E94D201107609F0F3C1809107638111BD +:101E60000E94D201107609F0F1C1809107638111BF :101E700083C010920E6310920F6382E090E0809313 :101E80003864909339640E94C6010E94D201809107 -:101E90000B0C846080930B0CE89921C0E79B67C210 +:101E90000B0C846080930B0CE89921C0E79B65C212 :101EA00080917D60833081F01092000A10921A0BAD :101EB00089EA95E580931C0B90931D0B8FE480932A :101EC000100B83E080937D6080918860853029F4D9 :101ED00089E5809324600E944101019AE798E09B84 -:101EE00069CFE19B8BC2E39914C08091040885FF00 +:101EE00069CFE19B89C2E39914C08091040885FF02 :101EF00010C080915E6481FF0CC0E19B0AC02091FC -:101F000060643091616480912164821358C20E94A0 +:101F000060643091616480912164821356C20E94A2 :101F10006F01E39B18C080912364909124649C011D :101F20002F5F3F4F2230310570F08530910508F466 -:101F30006AC20497809323649093246480915664CA +:101F300068C20497809323649093246480915664CC :101F400081FD0E94B40180914E6481FF33CF909156 :101F50001E6380911F632091466421FFFCCF90385F -:101F600009F0C8C2F82FFF70FD83FA3008F452C29E -:101F700010921F6300E084C28130D9F4809108631D -:101F8000811112C0E0910A63F0910B6380910B0CF8 -:101F900082FDFCCFF595E795F595E795EF73FF2763 -:101FA000E05CF34F89E080831092386410923964CA -:101FB0006ACF8430C9F3853061F4109108631F77CC -:101FC0000E94C6018091366481FFFCCF1093030C00 -:101FD000EBCF863009F01EC1E0900C63F0900D63EA -:101FE0008091086390910963913001F542E150E0DE -:101FF00062EB71E08EE093E65ED5809100149091E3 -:102000000114A0910214B09103148F3F4FEF940775 -:10201000A407B40741F08093166390931763A093CD -:102020001863B093196302E110E01DC0923009F407 -:10203000D9C0963009F4DFC0913209F4E1C0923280 -:1020400009F4E3C08115E3E09E0751F584E0809335 -:102050000E6393E090930F6399E0909310638093E5 -:10206000116304E010E0C7010E151F0508F4C80154 -:1020700098018C010093386410933964232B09F084 -:1020800002CF80910B0C82FDFCCF88E08093430C43 -:1020900080910B0C82FDFCCF88E08093410CF7CE41 -:1020A0008230F3E09F0741F160F404E310E066EE54 -:1020B00070E08130934079F010E000E070E060E083 -:1020C0000AC083309807E9F008E110E068E870E0A2 -:1020D0008430934089F700930E6383E080930F630D -:1020E000A8014250510980E193E60115110509F05C -:1020F00080C030E020E0BECF06E410E060EA70E08F -:10210000EACF409104145091051460910614709127 -:10211000071449835A836B837C834F3F2FEF520709 -:102120006207720759F5E0E8F0E1CF0101962081DE -:102130004227E8E08A019B01369527951795079578 -:102140004170552766277727709560955095419582 -:102150005F4F6F4F7F4F40725378687B7D7E402783 -:10216000512762277327E15029F7FC01E03A80E10B -:10217000F807D9F649835A836B837C8386E1809381 -:102180000E6383E080930F638DE48093106310925D -:10219000116388E58093126310921363E4E1F3E620 -:1021A000DE0111968D91282F30E074E0359527954A -:1021B0007A95E1F790E3920F9A3310F097E3920F3C -:1021C000908311828F7090E3980F9A3310F097E309 -:1021D000980F9283138234968A169B0619F706E1AC -:1021E00010E041CF0BE610E06DE371E0A8018EE056 -:1021F00093E661D438CF0AE010E068EA71E0F6CFE8 -:1022000009E010E06FE471E0F1CF03E210E06AE171 -:1022100071E0ECCF883049F48091206480930E63A4 -:10222000C0923864D09239642ECE893041F48091C6 -:10223000086380932064E09A0E949E05B5CE8A30A0 -:1022400019F410920E63ECCF8B3009F01ACFACCE9C -:10225000103209F016CF809107638A3009F4A4CEBA -:10226000803231F580912E6481FFFCCF47E050E051 -:102270006EE073E68EE790E679D4892B89F0809141 -:102280005E6481FD0E946F01AAD887E0EEE0F3E66C -:10229000AEE7B0E601900D928A95E1F70E94B40591 -:1022A000E49A109222641092216410921F647CCEF2 -:1022B000813229F587E0EEE7F0E6AEE0B3E6019083 -:1022C0000D928A95E1F780910E6390910F63A09132 -:1022D0001063B0911163892B8A2B8B2B59F4409298 -:1022E0000E6350920F63609210637092116388E0E6 -:1022F00080931463A0923864B0923964C4CD823262 -:10230000C9F480910863982F917080FF0FC06C987A -:1023100081FF0EC06D9820917C6020FD04C0992340 -:1023200011F0E79AE69A80937C603ECE6C9AF0CFEB -:102330006D9AF1CF833209F0A4CE80910863909119 -:1023400009638093236490932464892B69F0E19B53 -:1023500009C0E39907C0E49810921F6425D8029A37 -:1023600010921204E39A20CE0E9444061DCEE69BF2 -:10237000B6CD80918860853021F4109224600E944F -:10238000410101989FE7EAE1F6E09150E040F0401A -:10239000E1F700C00000E09B05C00E949E05E798A1 -:1023A000E6989DCD8091030C811106C088ED91E0E7 -:1023B00084BF90934100F3CF0E948905F0CF4091F4 -:1023C000606450916164282F30E010E04217530799 -:1023D00039F08F5F80932164225A3C49F9011081C2 -:1023E000809160649091616420912164281719069E -:1023F00011F40E946F01109302088BCD80915E64EE -:1024000081FF87CD84CD10922364109224640E94B2 -:10241000440699CD90E064E0959587956A95E1F73B -:10242000282EE090216321E0821302C01092866082 -:1024300001972CE3289F8001299F100D1124809182 -:10244000866033243394380E30928660F12CA701D5 -:1024500062E273E6C80182549F4995D381E080937C -:102460001F634D81421186CD0E0D1F1D00938B60A1 -:1024700010938C608D8183117BCD1092896001E077 -:1024800080E490E0809348649093496410924C6497 -:1024900010924D6480910B0C82FDFCCF8EEF8093E7 -:1024A000460C109250641092516480910B0C82FD86 -:1024B000FCCF8EEF8093480C002309F47BCC8091F5 -:1024C000C260813009F0C7C08091C360823009F0DA -:1024D000B2C08091C5606091C6600091C7608111F3 -:1024E00068C0402F50E070E064537E4F85EC90E66A -:1024F000E2D293C09138A9F510922063909189603F -:10250000911105C010921F631092216333CD809109 -:102510008A602CE3829FF0011124E154FF49A2E27A -:10252000B3E601900D922A95E1F78F5F80938A6060 -:10253000E0E18E9F90011124292B20931F632091AD -:102540008B6030918C60981751F08CE380932163FD -:102550002C53310920938B6030938C600BCD822FEC -:10256000F5CF91111AC08F3F21F095E0980F92306E -:1025700038F482E080931F6380E480932063C4CFAB -:10258000813F09F0F7CC82E080931F6380E880935D -:10259000206381E080932163EDCC923009F4EACC92 -:1025A000913019F48111E4CCE5CC933009F0E0CC02 -:1025B000E1CC813091F5962F9F7DB1F59FEF9093FF -:1025C000070610920E0610920F0680930006809365 -:1025D000010684E0809302068AEF8093040684E477 -:1025E00080930B0681E180930A068091070681FFA4 -:1025F000FCCF80910E0690910F069C0143E0220FC4 -:10260000331F4A95E1F7880F991F10920006820F39 -:10261000931F8093C5609093C66084E891E0809397 -:10262000C3609093C4606BC0402F50E0677070E04F -:102630006C537E4F5BCF803149F41092886080E804 -:1026400090E08093C3609093C46002C08131B9F37D -:1026500010E000E0F7C0823109F037C11091C3608B -:102660008091C5609091C6604091C7601130C1F5FE -:102670002091C8603091C960811105C09111DFCFF0 -:1026800020938860DCCF8130F1F4911103C0209356 -:102690008760D5CF913399F62093186030931960F5 -:1026A00080918860853059F680EF90E0213F3105B8 -:1026B00028F42832310518F688E290E080931860FB -:1026C00090931960BCCF823009F0B9CF9111B7CF88 -:1026D0004F7350E068EC70E68EE890E654D2AFCFCE -:1026E000123019F581110DC080918860992379F01D -:1026F00084E891E08093C3609093C460042F10E05D -:1027000050C18130A9F7911105C0809187608093F5 -:10271000C560EECF913361F7809118609091196098 -:102720008093C5609093C660E3CF909188609530A8 -:1027300009F0C8C0103151F50E94EF090FB7F894A5 -:102740001093E20580E280930408809118609091D4 -:1027500019600E94E90180930808909309088BE2B0 -:10276000809307088AE08093050888EC8093060828 -:102770000FBF87E39BE045DA8C0184E890E0011508 -:10278000110509F05BC080EA90E058C0113199F45E -:10279000E89B0EC087E29BE034DA8C010E94EF09CF -:1027A0000E94B4050115110571F380E890E046C060 -:1027B00001E010E0F3CF153149F48CE09AE021DA22 -:1027C000892B11F40DB3017010E0ECCF163109F430 -:1027D00073C0103239F4809102639091036311DA6F -:1027E0008C01E0CFE89B6BC0113209F05EC0009114 -:1027F000CA601091CB60833D99F48091C6608F715F -:1028000090E0A801415051094F7155274F5F5F4F2C -:102810006EED72E68B539F49B6D10F5F1F4F08C014 -:10282000E99B29C08091006390910163EAD98C01F2 -:1028300084E891E00115110509F4A5CF8093C360E8 -:102840009093C46098012A5F3F4F20938B60309330 -:102850008C6010928A60C8018F5B9F4F6CE370E0C0 -:1028600033D1609389608EE08093BF6022543F49EA -:10287000F90110829FCA843B89F48091DE6288232B -:1028800069F09EE19093C560803209F481E4809301 -:10289000C6608091E8628093C760BFCFA8016FEFE8 -:1028A00070E085EC90E678D1B8CF133241F4809196 -:1028B00004639091056393CF01E010E076CF10E0C0 -:1028C00000E061CF80EA90E0BCCE843109F088C09E -:1028D0008091C360813009F044C00E94EF091FB7A6 -:1028E000F894209118603091196050E040E060E267 -:1028F0007EE480E090E01ED1DA01C9010196A11DBD -:10290000B11DB595A7959795879536E0880F991FC6 -:10291000AA1FBB1F3A95D1F720E12093E205029848 -:1029200028E02093120420E22093040880349105CB -:10293000A105B10520F480E490E0A0E0B0E0809330 -:102940000808909309088BE6809307088BE0809332 -:10295000050888EC809306081FBF80EB9AE051D9E8 -:1029600019C0823009F580EC0E94EF04882319F029 -:1029700080E00E94EF0483EF91E00197F1F700C03F -:102980000000029801981DBA0E94EF090E94B40548 -:1029900081E090E021E0009709F020E02093C460FE -:1029A0008C010F5F1F4F4ECFE89B17C0833019F487 -:1029B00084E39DE0D4CF843019F489E39CE0CFCF49 -:1029C000853019F486E09DE0CACF31E020E0873001 -:1029D00009F030E0832F922FDDCF90E080E0DACF56 -:1029E000803209F035CE2091C3609091C56080910E -:1029F000C660213089F4911122CE803109F01FCEBA -:102A00008091C8609091C96080930060892B11F01B -:102A10000E9A15CE0E9813CE223009F019CE0091E1 -:102A2000C7609111FACD803109F0F7CD8091006037 -:102A30008093C560F2CDDC012D923D924D925D9266 -:102A40006D927D928D929D92AD92BD92CD92DD92CE -:102A5000ED92FD920D931D93CD93DD93FF91EF9138 -:102A60008DB78D938EB78D938FB78D93ED93FD9327 -:102A7000882799270994DC01CB0181309105811DBC -:102A80002D903D904D905D906D907D908D909D909E -:102A9000AD90BD90CD90DD90ED90FD900D911D918C -:102AA000CD91DD91ED91FD910D900FBEEDBFFEBF7B -:102AB000ED91FD910994FB01DC0102C005900D929E -:102AC00041505040D8F70895AA1BBB1B51E107C0E5 -:102AD000AA1FBB1FA617B70710F0A61BB70B881FAE -:102AE000991F5A95A9F780959095BC01CD0108953D -:102AF000A1E21A2EAA1BBB1BFD010DC0AA1FBB1F02 -:102B0000EE1FFF1FA217B307E407F50720F0A21B73 -:102B1000B30BE40BF50B661F771F881F991F1A94E0 -:102B200069F760957095809590959B01AC01BD010A -:102B3000CF010895052E97FB16F400940FD057FD92 -:102B400005D0D6DF07FC02D046F408C0509540956A -:102B5000309521953F4F4F4F5F4F08959095809549 -:102B6000709561957F4F8F4F9F4F0895FB01DC015A -:102B700004C08D910190801921F441505040C8F754 -:102B8000881B990B0895FB01DC0102C001900D9296 -:102B900041505040D8F70895DC0101C06D93415079 -:0A2BA0005040E0F70895F894FFCFCD -:102BAA000155080000000055480000000055A0002B -:102BBA005504556A00000000E100000000FFFF7F95 -:102BCA00557EC87F59FE557EC37E04FF0030200023 -:102BDA00E0FF88D8CD45AB891255C20D55C20555BF -:102BEA0087558B55E020676F72504D564E55E065FC -:102BFA00736172454D564E55E065742673554D56B0 -:102C0A004E55C72055CA0355E655C85955C30855E8 -:0C2C1A00C20555C85955C80055C3040038 +:101F600009F0C6C2F82FFF70FD83FA3008F450C2A2 +:101F700010921F6300E082C28130C9F4809108632F +:101F8000811110C0E0910A63E29580910B0C82FDF3 +:101F9000FCCFF0E0F595E795F595E795E05CF34F1C +:101FA0008BE0808310923864109239646CCF843057 +:101FB000C9F3853061F4109108631F770E94C60150 +:101FC0008091366481FFFCCF1093030CEBCF8630F9 +:101FD00009F01EC1E0900C63F0900D6380910863DE +:101FE00090910963913001F542E150E062EB71E0BC +:101FF0008EE093E65ED58091001490910114A0913B +:102000000214B09103148F3F4FEF9407A407B40755 +:1020100041F08093166390931763A0931863B09375 +:10202000196302E110E01DC0923009F4D9C0963066 +:1020300009F4DFC0913209F4E1C0923209F4E3C03F +:102040008115E3E09E0751F584E080930E6393E0F1 +:1020500090930F6399E0909310638093116304E071 +:1020600010E0C7010E151F0508F4C80198018C0186 +:102070000093386410933964232B09F004CF8091C6 +:102080000B0C82FDFCCF88E08093430C80910B0CFD +:1020900082FDFCCF88E08093410CF9CE8230F3E0E2 +:1020A0009F0741F160F404E310E066EE70E08130D8 +:1020B000934079F010E000E070E060E00AC0833007 +:1020C0009807E9F008E110E068E870E08430934098 +:1020D00089F700930E6383E080930F63A801425059 +:1020E000510980E193E60115110509F080C030E047 +:1020F00020E0BECF06E410E060EA70E0EACF409155 +:1021000004145091051460910614709107144983CA +:102110005A836B837C834F3F2FEF5207620772070E +:1021200059F5E0E8F0E1CF01019620814227E8E08F +:102130008A019B013695279517950795417055277C +:102140006627772770956095509541955F4F6F4F43 +:102150007F4F40725378687B7D7E402751276227EE +:102160007327E15029F7FC01E03A80E1F807D9F63E +:1021700049835A836B837C8386E180930E6383E07B +:1021800080930F638DE4809310631092116388E550 +:102190008093126310921363E4E1F3E6DE0111967B +:1021A0008D91282F30E074E0359527957A95E1F7E9 +:1021B00090E3920F9A3310F097E3920F908311827D +:1021C0008F7090E3980F9A3310F097E3980F9283F3 +:1021D000138234968A169B0619F706E110E041CF68 +:1021E0000BE610E06DE371E0A8018EE093E661D4A8 +:1021F00038CF0AE010E068EA71E0F6CF09E010E0BD +:102200006FE471E0F1CF03E210E06AE171E0ECCF3E +:10221000883049F48091206480930E63C0923864C2 +:10222000D092396430CE893041F480910863809334 +:102230002064E09A0E949E05B5CE8A3019F410926F +:102240000E63ECCF8B3009F01ACFACCE103209F010 +:1022500016CF809107638A3009F4A4CE803231F51D +:1022600080912E6481FFFCCF47E050E06EE073E682 +:102270008EE790E679D4892B89F080915E6481FDA8 +:102280000E946F01ACD887E0EEE0F3E6AEE7B0E67F +:1022900001900D928A95E1F70E94B405E49A10929C +:1022A00022641092216410921F647CCE813229F541 +:1022B00087E0EEE7F0E6AEE0B3E601900D928A9596 +:1022C000E1F780910E6390910F63A0911063B0913C +:1022D0001163892B8A2B8B2B59F440920E635092F9 +:1022E0000F63609210637092116388E080931463AF +:1022F000A0923864B0923964C6CD8232C9F480911C +:102300000863982F917080FF0FC06C9881FF0EC0FA +:102310006D9820917C6020FD04C0992311F0E79A0C +:10232000E69A80937C603ECE6C9AF0CF6D9AF1CFA6 +:10233000833209F0A4CE8091086390910963809361 +:10234000236490932464892B69F0E19B09C0E3998D +:1023500007C0E49810921F6427D8029A10921204C2 +:10236000E39A20CE0E9444061DCEE69BB8CD809114 +:102370008860853021F4109224600E944101019808 +:102380009FE7EAE1F6E09150E040F040E1F700C05D +:102390000000E09B05C00E949E05E798E6989FCD4F +:1023A0008091030C811106C088ED91E084BF909369 +:1023B0004100F3CF0E948905F0CF409160645091B5 +:1023C0006164282F30E010E04217530739F08F5F27 +:1023D00080932164225A3C49F90110818091606404 +:1023E00090916164209121642817190611F40E94CC +:1023F0006F01109302088DCD80915E6481FF89CDBD +:1024000086CD10922364109224640E9444069BCDD2 +:1024100090E064E0959587956A95E1F7282EE09025 +:10242000216321E0821302C01092866001972CE3A1 +:10243000289F8001299F100D1124809186603324EC +:102440003394380E30928660F12CA70162E273E675 +:10245000C80182549F4995D381E080931F634D81C9 +:10246000421188CD0E0D1F1D00938B6010938C6060 +:102470008D8183117DCD1092896001E080E490E030 +:10248000809348649093496410924C6410924D6418 +:1024900080910B0C82FDFCCF8EEF8093460C109246 +:1024A00050641092516480910B0C82FDFCCF8EEF32 +:1024B0008093480C002309F47DCC8091C260813068 +:1024C00009F0C7C08091C360823009F0B2C080912A +:1024D000C5606091C6600091C760811168C0402FDF +:1024E00050E070E064537E4F85EC90E6E2D293C0FA +:1024F0009138A9F51092206390918960911105C0DF +:1025000010921F631092216335CD80918A602CE375 +:10251000829FF0011124E154FF49A2E2B3E6019049 +:102520000D922A95E1F78F5F80938A60E0E18E9F9C +:1025300090011124292B20931F6320918B603091EF +:102540008C60981751F08CE3809321632C533109F0 +:1025500020938B6030938C600DCD822FF5CF91113D +:102560001AC08F3F21F095E0980F923038F482E046 +:1025700080931F6380E480932063C4CF813F09F080 +:10258000F9CC82E080931F6380E88093206381E030 +:1025900080932163EFCC923009F4ECCC913019F4A4 +:1025A0008111E6CCE7CC933009F0E2CCE3CC81306A +:1025B00091F5962F9F7DB1F59FEF909307061092AE +:1025C0000E0610920F06809300068093010684E0A9 +:1025D000809302068AEF8093040684E480930B06BE +:1025E00081E180930A068091070681FFFCCF8091EC +:1025F0000E0690910F069C0143E0220F331F4A956F +:10260000E1F7880F991F10920006820F931F8093A5 +:10261000C5609093C66084E891E08093C360909316 +:10262000C4606BC0402F50E0677070E06C537E4F09 +:102630005BCF803149F41092886080E890E080930D +:10264000C3609093C46002C08131B9F310E000E030 +:10265000F7C0823109F037C11091C3608091C56025 +:102660009091C6604091C7601130C1F52091C8605B +:102670003091C960811105C09111DFCF209388602E +:10268000DCCF8130F1F4911103C020938760D5CF66 +:10269000913399F620931860309319608091886087 +:1026A000853059F680EF90E0213F310528F428323B +:1026B000310518F688E290E08093186090931960D5 +:1026C000BCCF823009F0B9CF9111B7CF4F7350E032 +:1026D00068EC70E68EE890E654D2AFCF123019F570 +:1026E00081110DC080918860992379F084E891E090 +:1026F0008093C3609093C460042F10E050C1813078 +:10270000A9F7911105C0809187608093C560EECFD5 +:10271000913361F780911860909119608093C56042 +:102720009093C660E3CF90918860953009F0C8C05F +:10273000103151F50E94EF090FB7F8941093E2059C +:1027400080E28093040880911860909119600E9443 +:10275000E90180930808909309088BE280930708A9 +:102760008AE08093050888EC809306080FBF87E312 +:102770009BE047DA8C0184E890E00115110509F02F +:102780005BC080EA90E058C0113199F4E89B0EC01C +:1027900087E29BE036DA8C010E94EF090E94B405C3 +:1027A0000115110571F380E890E046C001E010E0EA +:1027B000F3CF153149F48CE09AE023DA892B11F438 +:1027C0000DB3017010E0ECCF163109F473C0103274 +:1027D00039F4809102639091036313DA8C01E0CFA6 +:1027E000E89B6BC0113209F05EC00091CA60109185 +:1027F000CB60833D99F48091C6608F7190E0A80111 +:10280000415051094F7155274F5F5F4F6EED72E692 +:102810008B539F49B6D10F5F1F4F08C0E99B29C05A +:102820008091006390910163ECD98C0184E891E080 +:102830000115110509F4A5CF8093C3609093C4607E +:1028400098012A5F3F4F20938B6030938C601092E9 +:102850008A60C8018F5B9F4F6CE370E033D1609357 +:1028600089608EE08093BF6022543F49F901108255 +:10287000A1CA843B89F48091DE62882369F09EE1DD +:102880009093C560803209F481E48093C6608091A2 +:10289000E8628093C760BFCFA8016FEF70E085EC5E +:1028A00090E678D1B8CF133241F4809104639091CF +:1028B000056393CF01E010E076CF10E000E061CF38 +:1028C00080EA90E0BCCE843109F088C08091C3607A +:1028D000813009F044C00E94EF091FB7F89420919D +:1028E00018603091196050E040E060E27EE480E0E2 +:1028F00090E01ED1DA01C9010196A11DB11DB59567 +:10290000A7959795879536E0880F991FAA1FBB1F3B +:102910003A95D1F720E12093E205029828E0209330 +:10292000120420E22093040880349105A105B1052A +:1029300020F480E490E0A0E0B0E080930808909359 +:1029400009088BE6809307088BE08093050888ECE4 +:10295000809306081FBF80EB9AE053D919C08230DC +:1029600009F580EC0E94EF04882319F080E00E94B2 +:10297000EF0483EF91E00197F1F700C000000298A7 +:1029800001981DBA0E94EF090E94B40581E090E011 +:1029900021E0009709F020E02093C4608C010F5FD4 +:1029A0001F4F4ECFE89B17C0833019F484E39DE09E +:1029B000D4CF843019F489E39CE0CFCF853019F46B +:1029C00086E09DE0CACF31E020E0873009F030E0BA +:1029D000832F922FDDCF90E080E0DACF803209F0B4 +:1029E00035CE2091C3609091C5608091C660213042 +:1029F00089F4911122CE803109F01FCE8091C860F8 +:102A00009091C96080930060892B11F00E9A15CEC9 +:102A10000E9813CE223009F019CE0091C7609111A3 +:102A2000FACD803109F0F7CD809100608093C560C8 +:102A3000F2CDDC012D923D924D925D926D927D9290 +:102A40008D929D92AD92BD92CD92DD92ED92FD92CE +:102A50000D931D93CD93DD93FF91EF918DB78D93E2 +:102A60008EB78D938FB78D93ED93FD93882799271C +:102A70000994DC01CB0181309105811D2D903D90A1 +:102A80004D905D906D907D908D909D90AD90BD909E +:102A9000CD90DD90ED90FD900D911D91CD91DD914A +:102AA000ED91FD910D900FBEEDBFFEBFED91FD913B +:102AB0000994FB01DC0102C005900D924150504089 +:102AC000D8F70895AA1BBB1B51E107C0AA1FBB1F63 +:102AD000A617B70710F0A61BB70B881F991F5A95AA +:102AE000A9F780959095BC01CD010895A1E21A2E19 +:102AF000AA1BBB1BFD010DC0AA1FBB1FEE1FFF1FA2 +:102B0000A217B307E407F50720F0A21BB30BE40BF1 +:102B1000F50B661F771F881F991F1A9469F7609538 +:102B20007095809590959B01AC01BD01CF010895F2 +:102B3000052E97FB16F400940FD057FD05D0D6DF75 +:102B400007FC02D046F408C0509540953095219579 +:102B50003F4F4F4F5F4F08959095809570956195C9 +:102B60007F4F8F4F9F4F0895FB01DC0104C08D9173 +:102B70000190801921F441505040C8F7881B990BEF +:102B80000895FB01DC0102C001900D9241505040BC +:102B9000D8F70895DC0101C06D9341505040E0F733 +:062BA0000895F894FFCF38 +:102BA6000155080000000055480000000055A0002F +:102BB6005504556A00000000E100000000FFFF7F99 +:102BC600557EC87F59FE557EC37E04FF0030200027 +:102BD600E0FF88D8CD45AB891255C20D55C20555C3 +:102BE60087558B55E020676F72504D564E55E06500 +:102BF600736172454D564E55E065742673554D56B4 +:102C06004E55C72055CA0355E655C85955C30855EC +:0C2C1600C20555C85955C80055C304003C :00000001FF diff --git a/hex/updi4avr-usb/AVR64DU32_CNANO.lst b/hex/updi4avr-usb/AVR64DU32_CNANO.lst index e18b592..bac3612 100644 --- a/hex/updi4avr-usb/AVR64DU32_CNANO.lst +++ b/hex/updi4avr-usb/AVR64DU32_CNANO.lst @@ -1,5 +1,5 @@ -/var/folders/mz/_z9vt_y13rdf9tt_4qkvv0k40000gn/T/arduino_build_602599/UPDI4AVR-USB.ino.elf: file format elf32-avr +/var/folders/mz/_z9vt_y13rdf9tt_4qkvv0k40000gn/T/arduino_build_486959/UPDI4AVR-USB.ino.elf: file format elf32-avr Disassembly of section .data: @@ -222,7 +222,7 @@ __trampolines_start(): 1c4: 90 28 00 18 38 00 00 00 .(..8... 000001cc : - 1cc: 00 01 20 2b 00 .. +. + 1cc: 00 01 20 2c 00 .. ,. 000001d1 : ... @@ -301,7 +301,7 @@ __do_copy_data(): 252: 10 e6 ldi r17, 0x60 ; 96 254: a0 e0 ldi r26, 0x00 ; 0 256: b0 e6 ldi r27, 0x60 ; 96 - 258: ea ea ldi r30, 0xAA ; 170 + 258: e6 ea ldi r30, 0xA6 ; 166 25a: fb e2 ldi r31, 0x2B ; 43 25c: 02 c0 rjmp .+4 ; 0x262 <__do_copy_data+0x10> 25e: 05 90 lpm r0, Z+ @@ -328,7 +328,7 @@ __do_clear_bss(): ../../../../crt1/gcrt1.S:314 278: 0e 94 53 0e call 0x1ca6 ; 0x1ca6
../../../../crt1/gcrt1.S:315 - 27c: 0c 94 d3 15 jmp 0x2ba6 ; 0x2ba6 <_exit> + 27c: 0c 94 d1 15 jmp 0x2ba2 ; 0x2ba2 <_exit> 00000280 <__bad_interrupt>: __vector_22(): @@ -337,7 +337,7 @@ __vector_22(): 00000282 : send_bitmap(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:236 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:236 /*** Low level TDAT stream manipulation ***/ /* UPDI commands are sent from TDAT using only TCA0 and bit manipulation, without switching USART. */ @@ -346,13 +346,13 @@ send_bitmap(): TCA0_SPLIT_HPER = TCA0_225K; 282: 88 e5 ldi r24, 0x58 ; 88 284: 80 93 27 0a sts 0x0A27, r24 ; 0x800a27 <__TEXT_REGION_LENGTH__+0x7f0a27> -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:237 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:237 TCA0_SPLIT_CTRLA = TCA_SPLIT_ENABLE_bm | TCA_SPLIT_CLKSEL_DIV1_gc; 288: 81 e0 ldi r24, 0x01 ; 1 28a: 80 93 00 0a sts 0x0A00, r24 ; 0x800a00 <__TEXT_REGION_LENGTH__+0x7f0a00> 28e: 90 e0 ldi r25, 0x00 ; 0 290: 80 e0 ldi r24, 0x00 ; 0 -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:239 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:239 for (uint8_t i = 0; i < _length; i++) { uint8_t _d = (_bitmap[i >> 3]) >> (i & 7); 292: fc 01 movw r30, r24 @@ -372,19 +372,19 @@ send_bitmap(): 2ae: 27 95 ror r18 2b0: 4a 95 dec r20 2b2: e2 f7 brpl .-8 ; 0x2ac -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:240 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:240 loop_until_bit_is_set(TCA0_SPLIT_INTFLAGS, TCA_SPLIT_HUNF_bp); 2b4: 40 91 0b 0a lds r20, 0x0A0B ; 0x800a0b <__TEXT_REGION_LENGTH__+0x7f0a0b> 2b8: 41 ff sbrs r20, 1 2ba: fc cf rjmp .-8 ; 0x2b4 -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:241 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:241 if (bit_is_set(_d, 0)) 2bc: 20 ff sbrs r18, 0 2be: 0d c0 rjmp .+26 ; 0x2da -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:242 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:242 openDrainWriteMacro(PIN_PG_TDAT, HIGH); 2c0: 00 98 cbi 0x00, 0 ; 0 -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:245 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:245 else openDrainWriteMacro(PIN_PG_TDAT, LOW); bit_set(TCA0_SPLIT_INTFLAGS, TCA_SPLIT_HUNF_bp); @@ -392,7 +392,7 @@ send_bitmap(): 2c6: 22 60 ori r18, 0x02 ; 2 2c8: 20 93 0b 0a sts 0x0A0B, r18 ; 0x800a0b <__TEXT_REGION_LENGTH__+0x7f0a0b> 2cc: 01 96 adiw r24, 0x01 ; 1 -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:238 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:238 /* UPDI commands are sent from TDAT using only TCA0 and bit manipulation, without switching USART. */ /* 128kbps is the lowest limit that can be achieved with an 8-bit timer at 32MHz or less. */ void send_bitmap (const uint8_t _bitmap[], const size_t _length) { @@ -402,7 +402,7 @@ send_bitmap(): 2ce: 80 39 cpi r24, 0x90 ; 144 2d0: 91 05 cpc r25, r1 2d2: f9 f6 brne .-66 ; 0x292 -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:247 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:247 openDrainWriteMacro(PIN_PG_TDAT, HIGH); else openDrainWriteMacro(PIN_PG_TDAT, LOW); @@ -410,10 +410,10 @@ send_bitmap(): } TCA0_SPLIT_CTRLA = 0; 2d4: 10 92 00 0a sts 0x0A00, r1 ; 0x800a00 <__TEXT_REGION_LENGTH__+0x7f0a00> -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:248 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:248 } 2d8: 08 95 ret -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:244 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:244 uint8_t _d = (_bitmap[i >> 3]) >> (i & 7); loop_until_bit_is_set(TCA0_SPLIT_INTFLAGS, TCA_SPLIT_HUNF_bp); if (bit_is_set(_d, 0)) @@ -425,7 +425,7 @@ send_bitmap(): 000002de : ep_cdo_listen(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:350 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:350 loop_until_bit_is_clear(USB0_INTFLAGSB, USB_RMWBUSY_bp); USB_EP_STATUS_CLR(USB_EP_CDI) = ~USB_TOGGLE_bm; } @@ -443,10 +443,10 @@ static __inline__ uint8_t __iCliRetVal(void) cli(); 2e0: f8 94 cli ep_cdo_listen(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:351 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:351 _recv_count = 0; 2e2: 10 92 21 64 sts 0x6421, r1 ; 0x806421 <_recv_count> -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:352 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:352 EP_CDO.CNT = 0; 2e6: 10 92 60 64 sts 0x6460, r1 ; 0x806460 2ea: 10 92 61 64 sts 0x6461, r1 ; 0x806461 @@ -460,23 +460,23 @@ static __inline__ void __iRestore(const uint8_t *__s) SREG = *__s; 2ee: 8f bf out 0x3f, r24 ; 63 ep_cdo_listen(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:354 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:354 } loop_until_bit_is_clear(USB0_INTFLAGSB, USB_RMWBUSY_bp); 2f0: 80 91 0b 0c lds r24, 0x0C0B ; 0x800c0b <__TEXT_REGION_LENGTH__+0x7f0c0b> 2f4: 82 fd sbrc r24, 2 2f6: fc cf rjmp .-8 ; 0x2f0 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:355 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:355 USB_EP_STATUS_CLR(USB_EP_CDO) = ~USB_TOGGLE_bm; 2f8: 8e ef ldi r24, 0xFE ; 254 2fa: 80 93 4c 0c sts 0x0C4C, r24 ; 0x800c4c <__TEXT_REGION_LENGTH__+0x7f0c4c> -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:356 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:356 } 2fe: 08 95 ret 00000300 : ep_cdi_listen(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:325 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:325 #else /* If our math is correct, then if each side of the double */ /* buffer can complete the transmission of 64 characters */ @@ -488,7 +488,7 @@ ep_cdi_listen(): 304: 80 91 66 64 lds r24, 0x6466 ; 0x806466 308: 81 ff sbrs r24, 1 30a: 07 c0 rjmp .+14 ; 0x31a -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:336 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:336 #endif D2PRINTF(" VI=%02X:", _send_count); D2PRINTHEX(bit_is_set(GPCONF, GPCONF_DBL_bp) @@ -506,7 +506,7 @@ static __inline__ uint8_t __iCliRetVal(void) cli(); 30e: f8 94 cli ep_cdi_listen(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:338 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:338 EP_CDI.DATAPTR = bit_is_set(GPCONF, GPCONF_DBL_bp) ? (register16_t)&EP_MEM.cdi_data[64] 310: e2 99 sbic 0x1c, 2 ; 28 @@ -514,7 +514,7 @@ ep_cdi_listen(): 314: 8e e9 ldi r24, 0x9E ; 158 316: 93 e6 ldi r25, 0x63 ; 99 318: 09 c0 rjmp .+18 ; 0x32c -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:328 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:328 /* in 1 ms, then it can support 640 kbps. */ if (bit_is_clear(GPCONF, GPCONF_OPN_bp) || bit_is_clear(EP_CDI.STATUS, USB_BUSNAK_bp)) { @@ -526,7 +526,7 @@ ep_cdi_listen(): 320: 11 f5 brne .+68 ; 0x366 322: 10 92 22 64 sts 0x6422, r1 ; 0x806422 <_send_count> 326: 08 95 ret -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:338 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:338 D2PRINTHEX(bit_is_set(GPCONF, GPCONF_DBL_bp) ? &EP_MEM.cdi_data[64] : &EP_MEM.cdi_data[0], _send_count); @@ -535,7 +535,7 @@ ep_cdi_listen(): ? (register16_t)&EP_MEM.cdi_data[64] 328: 8e ed ldi r24, 0xDE ; 222 32a: 93 e6 ldi r25, 0x63 ; 99 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:337 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:337 D2PRINTF(" VI=%02X:", _send_count); D2PRINTHEX(bit_is_set(GPCONF, GPCONF_DBL_bp) ? &EP_MEM.cdi_data[64] @@ -544,7 +544,7 @@ ep_cdi_listen(): EP_CDI.DATAPTR = bit_is_set(GPCONF, GPCONF_DBL_bp) 32c: 80 93 6a 64 sts 0x646A, r24 ; 0x80646a 330: 90 93 6b 64 sts 0x646B, r25 ; 0x80646b -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:340 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:340 ? (register16_t)&EP_MEM.cdi_data[64] : (register16_t)&EP_MEM.cdi_data[0]; EP_CDI.CNT = _send_count; @@ -552,14 +552,14 @@ ep_cdi_listen(): 338: 90 e0 ldi r25, 0x00 ; 0 33a: 80 93 68 64 sts 0x6468, r24 ; 0x806468 33e: 90 93 69 64 sts 0x6469, r25 ; 0x806469 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:341 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:341 EP_CDI.MCNT = 0; 342: 10 92 6c 64 sts 0x646C, r1 ; 0x80646c 346: 10 92 6d 64 sts 0x646D, r1 ; 0x80646d -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:342 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:342 _send_count = 0; 34a: 10 92 22 64 sts 0x6422, r1 ; 0x806422 <_send_count> -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:343 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:343 GPCONF ^= GPCONF_DBL_bm; 34e: 8c b3 in r24, 0x1c ; 28 350: 94 e0 ldi r25, 0x04 ; 4 @@ -575,23 +575,23 @@ static __inline__ void __iRestore(const uint8_t *__s) SREG = *__s; 356: 2f bf out 0x3f, r18 ; 63 ep_cdi_listen(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:345 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:345 } loop_until_bit_is_clear(USB0_INTFLAGSB, USB_RMWBUSY_bp); 358: 80 91 0b 0c lds r24, 0x0C0B ; 0x800c0b <__TEXT_REGION_LENGTH__+0x7f0c0b> 35c: 82 fd sbrc r24, 2 35e: fc cf rjmp .-8 ; 0x358 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:346 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:346 USB_EP_STATUS_CLR(USB_EP_CDI) = ~USB_TOGGLE_bm; 360: 8e ef ldi r24, 0xFE ; 254 362: 80 93 4e 0c sts 0x0C4E, r24 ; 0x800c4e <__TEXT_REGION_LENGTH__+0x7f0c4e> -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:347 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:347 } 366: 08 95 ret 00000368 : ep_cci_listen(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:292 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:292 loop_until_bit_is_clear(USB0_INTFLAGSB, USB_RMWBUSY_bp); USB_EP_STATUS_CLR(USB_EP_DPO) = ~USB_TOGGLE_bm; } @@ -602,26 +602,26 @@ ep_cci_listen(): 36a: 90 e0 ldi r25, 0x00 ; 0 36c: 80 93 58 64 sts 0x6458, r24 ; 0x806458 370: 90 93 59 64 sts 0x6459, r25 ; 0x806459 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:293 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:293 EP_CCI.MCNT = 0; 374: 10 92 5c 64 sts 0x645C, r1 ; 0x80645c 378: 10 92 5d 64 sts 0x645D, r1 ; 0x80645d -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:294 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:294 loop_until_bit_is_clear(USB0_INTFLAGSB, USB_RMWBUSY_bp); 37c: 80 91 0b 0c lds r24, 0x0C0B ; 0x800c0b <__TEXT_REGION_LENGTH__+0x7f0c0b> 380: 82 fd sbrc r24, 2 382: fc cf rjmp .-8 ; 0x37c -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:295 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:295 USB_EP_STATUS_CLR(USB_EP_CCI) = ~USB_TOGGLE_bm; 384: 8e ef ldi r24, 0xFE ; 254 386: 80 93 4a 0c sts 0x0C4A, r24 ; 0x800c4a <__TEXT_REGION_LENGTH__+0x7f0c4a> -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:296 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:296 } 38a: 08 95 ret 0000038c : ep_res_listen(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:273 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:273 loop_until_bit_is_clear(USB0_INTFLAGSB, USB_RMWBUSY_bp); USB_EP_STATUS_CLR(USB_EP_REQ) = ~USB_TOGGLE_bm; } @@ -630,22 +630,22 @@ ep_res_listen(): EP_RES.MCNT = 0; 38c: 10 92 3c 64 sts 0x643C, r1 ; 0x80643c 390: 10 92 3d 64 sts 0x643D, r1 ; 0x80643d -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:274 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:274 loop_until_bit_is_clear(USB0_INTFLAGSB, USB_RMWBUSY_bp); 394: 80 91 0b 0c lds r24, 0x0C0B ; 0x800c0b <__TEXT_REGION_LENGTH__+0x7f0c0b> 398: 82 fd sbrc r24, 2 39a: fc cf rjmp .-8 ; 0x394 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:275 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:275 USB_EP_STATUS_CLR(USB_EP_RES) = ~USB_TOGGLE_bm; 39c: 8e ef ldi r24, 0xFE ; 254 39e: 80 93 42 0c sts 0x0C42, r24 ; 0x800c42 <__TEXT_REGION_LENGTH__+0x7f0c42> -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:276 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:276 } 3a2: 08 95 ret 000003a4 : ep_req_listen(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:267 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:267 void ep_cci_pending (void) { loop_until_bit_is_set(EP_CCI.STATUS, USB_BUSNAK_bp); } void ep_cdo_pending (void) { loop_until_bit_is_set(EP_CDO.STATUS, USB_BUSNAK_bp); } void ep_cdi_pending (void) { loop_until_bit_is_set(EP_CDI.STATUS, USB_BUSNAK_bp); } @@ -654,22 +654,22 @@ ep_req_listen(): EP_REQ.CNT = 0; 3a4: 10 92 30 64 sts 0x6430, r1 ; 0x806430 3a8: 10 92 31 64 sts 0x6431, r1 ; 0x806431 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:268 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:268 loop_until_bit_is_clear(USB0_INTFLAGSB, USB_RMWBUSY_bp); 3ac: 80 91 0b 0c lds r24, 0x0C0B ; 0x800c0b <__TEXT_REGION_LENGTH__+0x7f0c0b> 3b0: 82 fd sbrc r24, 2 3b2: fc cf rjmp .-8 ; 0x3ac -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:269 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:269 USB_EP_STATUS_CLR(USB_EP_REQ) = ~USB_TOGGLE_bm; 3b4: 8e ef ldi r24, 0xFE ; 254 3b6: 80 93 40 0c sts 0x0C40, r24 ; 0x800c40 <__TEXT_REGION_LENGTH__+0x7f0c40> -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:270 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:270 } 3ba: 08 95 ret 000003bc : drain(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/usart.cpp:41 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usart.cpp:41 return _baud; } @@ -679,25 +679,25 @@ drain(): 3bc: 20 91 04 08 lds r18, 0x0804 ; 0x800804 <__TEXT_REGION_LENGTH__+0x7f0804> 3c0: 27 ff sbrs r18, 7 3c2: 04 c0 rjmp .+8 ; 0x3cc -/Users/askn/Collaborator/UPDI4AVR-USB/src/usart.cpp:45 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usart.cpp:45 __asm__ __volatile__ ( "LDS R0, 0x0801\n" /* drop USART0_RXDATAH */ "LDS R0, 0x0800\n" /* drop USART0_RXDATAL */ ); 3c4: 00 90 01 08 lds r0, 0x0801 ; 0x800801 <__TEXT_REGION_LENGTH__+0x7f0801> 3c8: 00 90 00 08 lds r0, 0x0800 ; 0x800800 <__TEXT_REGION_LENGTH__+0x7f0800> -/Users/askn/Collaborator/UPDI4AVR-USB/src/usart.cpp:47 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usart.cpp:47 } } while (--_delay); 3cc: 01 97 sbiw r24, 0x01 ; 1 3ce: b1 f7 brne .-20 ; 0x3bc -/Users/askn/Collaborator/UPDI4AVR-USB/src/usart.cpp:48 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usart.cpp:48 } 3d0: 08 95 ret 000003d2 : calk_baud_khz(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/usart.cpp:33 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usart.cpp:33 pinModeMacro(PIN_PG_TRST, INPUT_PULLUP); /* USART0_ALT3 or USART0_DEFAULT */ } @@ -711,7 +711,7 @@ calk_baud_khz(): 3da: 71 e7 ldi r23, 0x71 ; 113 3dc: 82 e0 ldi r24, 0x02 ; 2 3de: 90 e0 ldi r25, 0x00 ; 0 - 3e0: 0e 94 9a 15 call 0x2b34 ; 0x2b34 <__divmodsi4> + 3e0: 0e 94 98 15 call 0x2b30 ; 0x2b30 <__divmodsi4> 3e4: da 01 movw r26, r20 3e6: c9 01 movw r24, r18 3e8: 01 96 adiw r24, 0x01 ; 1 @@ -721,7 +721,7 @@ calk_baud_khz(): 3f0: a7 95 ror r26 3f2: 97 95 ror r25 3f4: 87 95 ror r24 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usart.cpp:34 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usart.cpp:34 if (_baud < 64) _baud = 64; 3f6: 80 34 cpi r24, 0x40 ; 64 3f8: 91 05 cpc r25, r1 @@ -742,7 +742,7 @@ calk_baud_khz(): 416: 90 e0 ldi r25, 0x00 ; 0 418: a0 e0 ldi r26, 0x00 ; 0 41a: b0 e0 ldi r27, 0x00 ; 0 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usart.cpp:37 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usart.cpp:37 else if (_baud > 0xFFFFU) _baud = 0xFFFF; return _baud; } @@ -750,7 +750,7 @@ calk_baud_khz(): 0000041e : prog_init(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv1.cpp:30 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv1.cpp:30 * This file is a template for the future. */ @@ -763,7 +763,7 @@ namespace NVM::V1 { 00000424 : recv(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:72 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:72 send(0x00); USART0_BAUD = USART::calk_baud_khz(_xclk); } @@ -773,22 +773,22 @@ recv(): 424: 80 91 04 08 lds r24, 0x0804 ; 0x800804 <__TEXT_REGION_LENGTH__+0x7f0804> 428: 87 ff sbrs r24, 7 42a: fc cf rjmp .-8 ; 0x424 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:73 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:73 RXSTAT = USART0_RXDATAH ^ 0x80; 42c: 80 91 01 08 lds r24, 0x0801 ; 0x800801 <__TEXT_REGION_LENGTH__+0x7f0801> 430: 80 58 subi r24, 0x80 ; 128 432: 8e bb out 0x1e, r24 ; 30 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:74 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:74 RXDATA = USART0_RXDATAL; 434: 80 91 00 08 lds r24, 0x0800 ; 0x800800 <__TEXT_REGION_LENGTH__+0x7f0800> 438: 8f bb out 0x1f, r24 ; 31 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:75 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:75 return RXSTAT == 0 || send_break(); 43a: 8e b3 in r24, 0x1e ; 30 43c: 88 23 and r24, r24 43e: 11 f1 breq .+68 ; 0x484 send_break(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:57 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:57 0x55, 0x04 /* LD,ST PTR++ DATA1,2 */ }; @@ -807,18 +807,18 @@ send_break(): 45a: 93 1f adc r25, r19 45c: 80 93 08 08 sts 0x0808, r24 ; 0x800808 <__TEXT_REGION_LENGTH__+0x7f0808> 460: 90 93 09 08 sts 0x0809, r25 ; 0x800809 <__TEXT_REGION_LENGTH__+0x7f0809> -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:58 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:58 send(0x00); 464: 80 e0 ldi r24, 0x00 ; 0 466: 10 d0 rcall .+32 ; 0x488 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:59 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:59 USART0_BAUD = USART::calk_baud_khz(_xclk); 468: 80 91 18 60 lds r24, 0x6018 ; 0x806018 <_xclk> 46c: 90 91 19 60 lds r25, 0x6019 ; 0x806019 <_xclk+0x1> 470: b0 df rcall .-160 ; 0x3d2 472: 80 93 08 08 sts 0x0808, r24 ; 0x800808 <__TEXT_REGION_LENGTH__+0x7f0808> 476: 90 93 09 08 sts 0x0809, r25 ; 0x800809 <__TEXT_REGION_LENGTH__+0x7f0809> -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:60 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:60 USART::drain(); 47a: 90 e0 ldi r25, 0x00 ; 0 47c: 80 e0 ldi r24, 0x00 ; 0 @@ -826,7 +826,7 @@ send_break(): 480: 80 e0 ldi r24, 0x00 ; 0 482: 08 95 ret recv(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:75 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:75 bool recv (void) { loop_until_bit_is_set(USART0_STATUS, USART_RXCIF_bp); @@ -834,13 +834,13 @@ recv(): RXDATA = USART0_RXDATAL; return RXSTAT == 0 || send_break(); 484: 81 e0 ldi r24, 0x01 ; 1 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:76 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:76 } 486: 08 95 ret 00000488 : send(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:90 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:90 bool is_ack (void) { return recv() && 0x40 == RXDATA; @@ -849,15 +849,15 @@ send(): bool send (const uint8_t _data) { 488: cf 93 push r28 48a: c8 2f mov r28, r24 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:91 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:91 loop_until_bit_is_set(USART0_STATUS, USART_DREIF_bp); 48c: 80 91 04 08 lds r24, 0x0804 ; 0x800804 <__TEXT_REGION_LENGTH__+0x7f0804> 490: 85 ff sbrs r24, 5 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:92 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:92 USART0_TXDATAL = _data; 492: fc cf rjmp .-8 ; 0x48c 494: c0 93 02 08 sts 0x0802, r28 ; 0x800802 <__TEXT_REGION_LENGTH__+0x7f0802> -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:93 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:93 return recv() && _data == RXDATA; 498: c5 df rcall .-118 ; 0x424 49a: 88 23 and r24, r24 @@ -866,14 +866,14 @@ send(): 4a0: 81 e0 ldi r24, 0x01 ; 1 4a2: 9c 13 cpse r25, r28 4a4: 80 e0 ldi r24, 0x00 ; 0 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:94 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:94 } 4a6: cf 91 pop r28 4a8: 08 95 ret 000004aa : send_bytes(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:96 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:96 bool send_bytes (const uint8_t* _data, size_t _len) { 4aa: 0f 93 push r16 @@ -881,7 +881,7 @@ send_bytes(): 4ae: cf 93 push r28 4b0: df 93 push r29 4b2: eb 01 movw r28, r22 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:98 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:98 do { if (!send(*_data++)) return false; 4b4: 8c 01 movw r16, r24 @@ -891,18 +891,18 @@ send_bytes(): 4bc: e5 df rcall .-54 ; 0x488 4be: 88 23 and r24, r24 4c0: 11 f0 breq .+4 ; 0x4c6 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:99 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:99 } while (--_len); 4c2: 21 97 sbiw r28, 0x01 ; 1 4c4: c1 f7 brne .-16 ; 0x4b6 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:101 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:101 return true; } 4c6: df 91 pop r29 4c8: cf 91 pop r28 4ca: 1f 91 pop r17 4cc: 0f 91 pop r16 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:223 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:223 return send_bytes(_key_stat, 2) && recv(); } @@ -918,7 +918,7 @@ sys_status(): 4d4: 81 e4 ldi r24, 0x41 ; 65 4d6: 90 e6 ldi r25, 0x60 ; 96 4d8: e8 df rcall .-48 ; 0x4aa -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:110 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:110 bool recv_byte (uint32_t _dwAddr) { static uint8_t _set_ptr[] = { 0x55, 0x08, 0, 0, 0, 0 /* LDS ADDR3 DATA1 */ @@ -926,7 +926,7 @@ sys_status(): _CAPS32(_set_ptr[2])->dword = _dwAddr; return send_bytes(_set_ptr, 5) && recv(); 4da: 81 11 cpse r24, r1 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:224 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:224 } bool sys_status (void) { @@ -934,7 +934,7 @@ sys_status(): return send_bytes(_sys_stat, 2) && recv(); } 4dc: a3 cf rjmp .-186 ; 0x424 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:218 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:218 return send_byte(0x1000, _nvmcmd); /* NVMCTRL_CTRLA */ } @@ -951,7 +951,7 @@ key_status(): 4e6: 8f e3 ldi r24, 0x3F ; 63 4e8: 90 e6 ldi r25, 0x60 ; 96 4ea: df df rcall .-66 ; 0x4aa -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:110 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:110 bool recv_byte (uint32_t _dwAddr) { static uint8_t _set_ptr[] = { 0x55, 0x08, 0, 0, 0, 0 /* LDS ADDR3 DATA1 */ @@ -960,7 +960,7 @@ key_status(): return send_bytes(_set_ptr, 5) && recv(); 4ec: 81 11 cpse r24, r1 4ee: 9a cf rjmp .-204 ; 0x424 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:219 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:219 } bool key_status (void) { @@ -968,7 +968,7 @@ key_status(): return send_bytes(_key_stat, 2) && recv(); } 4f0: 80 e0 ldi r24, 0x00 ; 0 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:226 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:226 bool sys_status (void) { const static uint8_t _sys_stat[] = {0x55, 0x8B}; return send_bytes(_sys_stat, 2) && recv(); @@ -980,7 +980,7 @@ key_status(): 000004f4 : set_nvmprog_key(): 4f4: cf 93 push r28 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:228 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:228 D1PRINTF(" PROG_KEY\r\n"); if (!send_bytes(nvmprog_key, sizeof(nvmprog_key))) return false; 4f6: df 93 push r29 @@ -992,17 +992,17 @@ set_nvmprog_key(): 502: d3 df rcall .-90 ; 0x4aa 504: c8 2f mov r28, r24 506: 88 23 and r24, r24 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:229 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:229 do { key_status(); } while(bit_is_clear(RXDATA, 4)); /* wait set NVMPROG */ 508: 61 f0 breq .+24 ; 0x522 50a: eb df rcall .-42 ; 0x4e2 50c: fc 9b sbis 0x1f, 4 ; 31 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:231 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:231 D1PRINTF(" KEY=%02X\r\n", RXDATA); return _reset ? sys_reset(false) : true; 50e: fd cf rjmp .-6 ; 0x50a 510: dd 23 and r29, r29 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:130 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:130 const static uint8_t _reset[] = { 0x55, 0xC8, 0x59, /* SYSRST */ 0x55, 0xC8, 0x00, /* SYSRUN */ @@ -1014,7 +1014,7 @@ sys_reset(): 514: 66 e0 ldi r22, 0x06 ; 6 516: 70 e0 ldi r23, 0x00 ; 0 518: 82 e7 ldi r24, 0x72 ; 114 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:232 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:232 D1PRINTF(" PROG_KEY\r\n"); if (!send_bytes(nvmprog_key, sizeof(nvmprog_key))) return false; do { key_status(); } while(bit_is_clear(RXDATA, 4)); /* wait set NVMPROG */ @@ -1024,7 +1024,7 @@ sys_reset(): 51a: 90 e6 ldi r25, 0x60 ; 96 set_nvmprog_key(): 51c: df 91 pop r29 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:130 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:130 const static uint8_t _reset[] = { 0x55, 0xC8, 0x59, /* SYSRST */ 0x55, 0xC8, 0x00, /* SYSRUN */ @@ -1035,7 +1035,7 @@ set_nvmprog_key(): sys_reset(): 520: c4 cf rjmp .-120 ; 0x4aa set_nvmprog_key(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:232 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:232 D1PRINTF(" PROG_KEY\r\n"); if (!send_bytes(nvmprog_key, sizeof(nvmprog_key))) return false; do { key_status(); } while(bit_is_clear(RXDATA, 4)); /* wait set NVMPROG */ @@ -1049,7 +1049,7 @@ set_nvmprog_key(): 0000052a : recv_byte(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:109 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:109 /* The acquired data is stored in RXDATA. */ bool recv_byte (uint32_t _dwAddr) { static uint8_t _set_ptr[] = { @@ -1059,7 +1059,7 @@ recv_byte(): 52a: 60 93 03 60 sts 0x6003, r22 ; 0x806003 52e: 70 93 04 60 sts 0x6004, r23 ; 0x806004 532: 80 93 05 60 sts 0x6005, r24 ; 0x806005 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:110 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:110 return send_bytes(_set_ptr, 5) && recv(); 536: 90 93 06 60 sts 0x6006, r25 ; 0x806006 53a: 65 e0 ldi r22, 0x05 ; 5 @@ -1068,11 +1068,11 @@ recv_byte(): 540: 90 e6 ldi r25, 0x60 ; 96 542: b3 df rcall .-154 ; 0x4aa 544: 81 11 cpse r24, r1 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:111 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:111 } 546: 6e cf rjmp .-292 ; 0x424 548: 80 e0 ldi r24, 0x00 ; 0 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:87 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:87 } while (--_len); return true; } @@ -1091,13 +1091,13 @@ is_ack(): 556: 90 34 cpi r25, 0x40 ; 64 558: 09 f0 breq .+2 ; 0x55c 55a: 80 e0 ldi r24, 0x00 ; 0 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:88 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:88 } 55c: 08 95 ret 0000055e : send_words_block(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:186 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:186 && send_bytes(_set_repeat, sizeof(_set_repeat)) && send_bytes(&packet.out.memData[0], _wLength) && clear_rsd(); @@ -1107,7 +1107,7 @@ send_words_block(): 55e: cf 93 push r28 560: df 93 push r29 562: ea 01 movw r28, r20 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:189 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:189 /* This function works in word units up to 256 words, */ /* and will round down any fractional words. */ _CAPS32(_set_ptr24[2])->dword = _dwAddr; @@ -1115,30 +1115,30 @@ send_words_block(): 568: 70 93 15 60 sts 0x6015, r23 ; 0x806015 56c: 80 93 16 60 sts 0x6016, r24 ; 0x806016 570: 90 93 17 60 sts 0x6017, r25 ; 0x806017 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:190 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:190 _set_repeat[2] = (_wLength >> 1) - 1; 574: ca 01 movw r24, r20 576: 96 95 lsr r25 578: 87 95 ror r24 57a: 81 50 subi r24, 0x01 ; 1 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:191 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:191 _set_repeat[4] = 0x65; /* ST PTR++ DATA2 */ 57c: 80 93 0f 60 sts 0x600F, r24 ; 0x80600f -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:192 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:192 return send_bytes(_set_ptr24, 5) 580: 85 e6 ldi r24, 0x65 ; 101 582: 80 93 11 60 sts 0x6011, r24 ; 0x806011 586: 65 e0 ldi r22, 0x05 ; 5 588: 70 e0 ldi r23, 0x00 ; 0 58a: 82 e1 ldi r24, 0x12 ; 18 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:197 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:197 && is_ack() && set_rsd() && send_bytes(_set_repeat, sizeof(_set_repeat)) && send_bytes(&packet.out.memData[0], _wLength & ~1) && clear_rsd(); 58c: 90 e6 ldi r25, 0x60 ; 96 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:193 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:193 /* and will round down any fractional words. */ _CAPS32(_set_ptr24[2])->dword = _dwAddr; _set_repeat[2] = (_wLength >> 1) - 1; @@ -1149,7 +1149,7 @@ send_words_block(): 590: 88 23 and r24, r24 592: f9 f0 breq .+62 ; 0x5d2 594: db df rcall .-74 ; 0x54c -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:144 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:144 #endif } @@ -1162,7 +1162,7 @@ set_rsd(): 59a: 63 e0 ldi r22, 0x03 ; 3 59c: 70 e0 ldi r23, 0x00 ; 0 59e: 89 e3 ldi r24, 0x39 ; 57 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:194 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:194 _CAPS32(_set_ptr24[2])->dword = _dwAddr; _set_repeat[2] = (_wLength >> 1) - 1; _set_repeat[4] = 0x65; /* ST PTR++ DATA2 */ @@ -1172,7 +1172,7 @@ set_rsd(): 5a0: 90 e6 ldi r25, 0x60 ; 96 5a2: 83 df rcall .-250 ; 0x4aa send_words_block(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:195 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:195 && send_bytes(_set_repeat, sizeof(_set_repeat)) 5a4: 88 23 and r24, r24 5a6: a9 f0 breq .+42 ; 0x5d2 @@ -1181,7 +1181,7 @@ send_words_block(): 5ac: 8d e0 ldi r24, 0x0D ; 13 5ae: 90 e6 ldi r25, 0x60 ; 96 5b0: 7c df rcall .-264 ; 0x4aa -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:196 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:196 && send_bytes(&packet.out.memData[0], _wLength & ~1) 5b2: 88 23 and r24, r24 5b4: 71 f0 breq .+28 ; 0x5d2 @@ -1191,7 +1191,7 @@ send_words_block(): 5bc: 90 e6 ldi r25, 0x60 ; 96 5be: 75 df rcall .-278 ; 0x4aa 5c0: 88 23 and r24, r24 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:149 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:149 return send_bytes(_set_rsd, 3); } @@ -1203,7 +1203,7 @@ clear_rsd(): 5c4: 63 e0 ldi r22, 0x03 ; 3 5c6: 70 e0 ldi r23, 0x00 ; 0 5c8: 8c e3 ldi r24, 0x3C ; 60 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:198 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:198 && is_ack() && set_rsd() && send_bytes(_set_repeat, sizeof(_set_repeat)) @@ -1213,7 +1213,7 @@ clear_rsd(): 5ca: 90 e6 ldi r25, 0x60 ; 96 send_words_block(): 5cc: df 91 pop r29 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:149 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:149 return send_bytes(_set_rsd, 3); } @@ -1224,7 +1224,7 @@ send_words_block(): clear_rsd(): 5d0: 6c cf rjmp .-296 ; 0x4aa send_words_block(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:198 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:198 && is_ack() && set_rsd() && send_bytes(_set_repeat, sizeof(_set_repeat)) @@ -1238,7 +1238,7 @@ send_words_block(): 000005da : write_userrow(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:276 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:276 /* * Use the UPDI ACC to write to the USERROW of the locked chip. * The write start address should match the USERROW address. @@ -1252,7 +1252,7 @@ write_userrow(): 5e2: 0f 93 push r16 5e4: 1f 93 push r17 5e6: cf 93 push r28 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:285 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:285 uint32_t _dwAddr = packet.out.dwAddr; size_t _wLength = packet.out.dwLength; if (bit_is_clear(PGCONF, PGCONF_UPDI_bp) @@ -1262,7 +1262,7 @@ write_userrow(): 5e8: e8 99 sbic 0x1d, 0 ; 29 5ea: 0a c0 rjmp .+20 ; 0x600 5ec: c0 e0 ldi r28, 0x00 ; 0 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:301 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:301 do { sys_status(); } while(bit_is_clear(RXDATA, 3)); /* wait set PROGSTART */ D1PRINTF(" RE_PROGSTART=%02X\r\n", RXDATA); return true; @@ -1278,7 +1278,7 @@ write_userrow(): 5fa: df 90 pop r13 5fc: cf 90 pop r12 5fe: 08 95 ret -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:283 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:283 const static uint8_t _urowstop[] = { 0x55, 0xC7, 0x20 }; /* ASI_KEY_STATUS <= UROWWR */ uint8_t m_type = packet.out.bMType; uint32_t _dwAddr = packet.out.dwAddr; @@ -1288,7 +1288,7 @@ write_userrow(): 600: 80 91 c5 60 lds r24, 0x60C5 ; 0x8060c5 604: 85 3c cpi r24, 0xC5 ; 197 606: 91 f7 brne .-28 ; 0x5ec -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:284 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:284 || _wLength != Device_Descriptor.UPDI.user_sig_bytes 608: 00 91 a6 60 lds r16, 0x60A6 ; 0x8060a6 60c: 10 91 a7 60 lds r17, 0x60A7 ; 0x8060a7 @@ -1296,7 +1296,7 @@ write_userrow(): 614: 90 91 cb 60 lds r25, 0x60CB ; 0x8060cb 618: 08 17 cp r16, r24 61a: 19 07 cpc r17, r25 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:280 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:280 */ bool write_userrow (void) { const static uint8_t _urowdone[] = { 0x55, 0xCA, 0x03 }; /* ASI_SYS_CTRLA <= UROWDONE|CLKREQ */ @@ -1307,7 +1307,7 @@ write_userrow(): 61e: c0 90 c6 60 lds r12, 0x60C6 ; 0x8060c6 622: d0 90 c7 60 lds r13, 0x60C7 ; 0x8060c7 626: e0 90 c8 60 lds r14, 0x60C8 ; 0x8060c8 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:285 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:285 size_t _wLength = packet.out.dwLength; if (bit_is_clear(PGCONF, PGCONF_UPDI_bp) || m_type != 0xC5 @@ -1316,11 +1316,11 @@ write_userrow(): 62a: f0 90 c9 60 lds r15, 0x60C9 ; 0x8060c9 62e: 80 91 b0 60 lds r24, 0x60B0 ; 0x8060b0 632: 90 91 b1 60 lds r25, 0x60B1 ; 0x8060b1 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:286 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:286 USART::drain(); 636: 8c 15 cp r24, r12 638: 9d 05 cpc r25, r13 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:245 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:245 return sys_reset(false); } @@ -1335,11 +1335,11 @@ set_urowwrite_key(): 642: 6a e0 ldi r22, 0x0A ; 10 644: 70 e0 ldi r23, 0x00 ; 0 646: 87 e5 ldi r24, 0x57 ; 87 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:246 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:246 do { key_status(); } while(bit_is_clear(RXDATA, 5)); /* wait set UROWWRITE */ 648: 90 e6 ldi r25, 0x60 ; 96 64a: 2f df rcall .-418 ; 0x4aa -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:130 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:130 const static uint8_t _reset[] = { 0x55, 0xC8, 0x59, /* SYSRST */ 0x55, 0xC8, 0x00, /* SYSRUN */ @@ -1353,7 +1353,7 @@ set_urowwrite_key(): 654: fd cf rjmp .-6 ; 0x650 sys_reset(): 656: 66 e0 ldi r22, 0x06 ; 6 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:288 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:288 || m_type != 0xC5 || _wLength != Device_Descriptor.UPDI.user_sig_bytes || (uint16_t)_dwAddr != Device_Descriptor.UPDI.user_sig_base) return false; @@ -1362,34 +1362,34 @@ sys_reset(): if (!set_urowwrite_key()) return false; 658: 70 e0 ldi r23, 0x00 ; 0 65a: 82 e7 ldi r24, 0x72 ; 114 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:289 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:289 do { sys_status(); } while(bit_is_clear(RXDATA, 2)); /* wait set UROWPROG */ 65c: 90 e6 ldi r25, 0x60 ; 96 65e: 25 df rcall .-438 ; 0x4aa 660: c8 2f mov r28, r24 write_userrow(): 662: 88 23 and r24, r24 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:290 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:290 send_words_block(_dwAddr, _wLength); 664: 09 f4 brne .+2 ; 0x668 666: c2 cf rjmp .-124 ; 0x5ec 668: 33 df rcall .-410 ; 0x4d0 66a: fa 9b sbis 0x1f, 2 ; 31 66c: fd cf rjmp .-6 ; 0x668 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:291 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:291 send_bytes(_urowdone, 3); 66e: a8 01 movw r20, r16 670: c7 01 movw r24, r14 672: b6 01 movw r22, r12 674: 74 df rcall .-280 ; 0x55e 676: 63 e0 ldi r22, 0x03 ; 3 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:292 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:292 do { sys_status(); } while(bit_is_set(RXDATA, 2)); /* wait clear UROWPROG */ 678: 70 e0 ldi r23, 0x00 ; 0 67a: 84 e6 ldi r24, 0x64 ; 100 67c: 90 e6 ldi r25, 0x60 ; 96 67e: 15 df rcall .-470 ; 0x4aa -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:293 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:293 send_bytes(_urowstop, 3); 680: 27 df rcall .-434 ; 0x4d0 682: fa 99 sbic 0x1f, 2 ; 31 @@ -1397,16 +1397,16 @@ write_userrow(): 686: 63 e0 ldi r22, 0x03 ; 3 688: 70 e0 ldi r23, 0x00 ; 0 68a: 81 e6 ldi r24, 0x61 ; 97 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:294 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:294 if (bit_is_set(PGCONF, PGCONF_PROG_bp)) { 68c: 90 e6 ldi r25, 0x60 ; 96 68e: 0d df rcall .-486 ; 0x4aa -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:295 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:295 set_nvmprog_key(); 690: e9 9b sbis 0x1d, 1 ; 29 692: 06 c0 rjmp .+12 ; 0x6a0 694: 81 e0 ldi r24, 0x01 ; 1 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:296 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:296 do { sys_status(); } while(bit_is_clear(RXDATA, 3)); /* wait set PROGSTART */ 696: 2e df rcall .-420 ; 0x4f4 698: 1b df rcall .-458 ; 0x4d0 @@ -1414,7 +1414,7 @@ write_userrow(): 69c: fd cf rjmp .-6 ; 0x698 69e: a7 cf rjmp .-178 ; 0x5ee sys_reset(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:130 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:130 const static uint8_t _reset[] = { 0x55, 0xC8, 0x59, /* SYSRST */ 0x55, 0xC8, 0x00, /* SYSRUN */ @@ -1424,7 +1424,7 @@ sys_reset(): 6a0: 66 e0 ldi r22, 0x06 ; 6 6a2: 70 e0 ldi r23, 0x00 ; 0 6a4: 82 e7 ldi r24, 0x72 ; 114 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:301 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:301 do { sys_status(); } while(bit_is_clear(RXDATA, 3)); /* wait set PROGSTART */ D1PRINTF(" RE_PROGSTART=%02X\r\n", RXDATA); return true; @@ -1438,7 +1438,7 @@ write_userrow(): 6ac: 0f 91 pop r16 6ae: ff 90 pop r15 6b0: ef 90 pop r14 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:130 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:130 const static uint8_t _reset[] = { 0x55, 0xC8, 0x59, /* SYSRST */ 0x55, 0xC8, 0x00, /* SYSRUN */ @@ -1446,7 +1446,7 @@ write_userrow(): }; return send_bytes(_reset, _leave ? 9 : 6); 6b2: df 90 pop r13 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:174 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:174 && is_ack() && send_bytes(_set_repeat, sizeof(_set_repeat)) && recv_bytes(&packet.in.data[0], _wLength & ~1); @@ -1460,27 +1460,27 @@ sys_reset(): 000006b8 : send_bytes_block(): 6b8: cf 93 push r28 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:175 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:175 _CAPS32(_set_ptr24[2])->dword = _dwAddr; 6ba: df 93 push r29 6bc: ea 01 movw r28, r20 6be: 60 93 14 60 sts 0x6014, r22 ; 0x806014 6c2: 70 93 15 60 sts 0x6015, r23 ; 0x806015 6c6: 80 93 16 60 sts 0x6016, r24 ; 0x806016 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:176 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:176 _set_repeat[2] = _wLength - 1; 6ca: 90 93 17 60 sts 0x6017, r25 ; 0x806017 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:177 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:177 _set_repeat[4] = 0x64; /* ST PTR++ DATA1 */ 6ce: 8f ef ldi r24, 0xFF ; 255 6d0: 84 0f add r24, r20 6d2: 80 93 0f 60 sts 0x600F, r24 ; 0x80600f -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:178 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:178 return send_bytes(_set_ptr24, 5) 6d6: 84 e6 ldi r24, 0x64 ; 100 6d8: 80 93 11 60 sts 0x6011, r24 ; 0x806011 6dc: 65 e0 ldi r22, 0x05 ; 5 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:183 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:183 && is_ack() && set_rsd() && send_bytes(_set_repeat, sizeof(_set_repeat)) @@ -1488,7 +1488,7 @@ send_bytes_block(): && clear_rsd(); 6de: 70 e0 ldi r23, 0x00 ; 0 6e0: 82 e1 ldi r24, 0x12 ; 18 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:179 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:179 bool send_bytes_block (uint32_t _dwAddr, size_t _wLength) { _CAPS32(_set_ptr24[2])->dword = _dwAddr; _set_repeat[2] = _wLength - 1; @@ -1499,7 +1499,7 @@ send_bytes_block(): 6e4: e2 de rcall .-572 ; 0x4aa 6e6: 88 23 and r24, r24 6e8: f1 f0 breq .+60 ; 0x726 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:144 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:144 #endif } @@ -1513,7 +1513,7 @@ set_rsd(): 6f0: 63 e0 ldi r22, 0x03 ; 3 6f2: 70 e0 ldi r23, 0x00 ; 0 6f4: 89 e3 ldi r24, 0x39 ; 57 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:180 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:180 _CAPS32(_set_ptr24[2])->dword = _dwAddr; _set_repeat[2] = _wLength - 1; _set_repeat[4] = 0x64; /* ST PTR++ DATA1 */ @@ -1523,7 +1523,7 @@ set_rsd(): 6f6: 90 e6 ldi r25, 0x60 ; 96 6f8: d8 de rcall .-592 ; 0x4aa send_bytes_block(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:181 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:181 && send_bytes(_set_repeat, sizeof(_set_repeat)) 6fa: 88 23 and r24, r24 6fc: a1 f0 breq .+40 ; 0x726 @@ -1531,14 +1531,14 @@ send_bytes_block(): 700: 70 e0 ldi r23, 0x00 ; 0 702: 8d e0 ldi r24, 0x0D ; 13 704: 90 e6 ldi r25, 0x60 ; 96 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:182 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:182 && send_bytes(&packet.out.memData[0], _wLength) 706: d1 de rcall .-606 ; 0x4aa 708: 88 23 and r24, r24 70a: 69 f0 breq .+26 ; 0x726 70c: be 01 movw r22, r28 70e: 8f ec ldi r24, 0xCF ; 207 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:149 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:149 return send_bytes(_set_rsd, 3); } @@ -1550,7 +1550,7 @@ send_bytes_block(): 714: 88 23 and r24, r24 716: 39 f0 breq .+14 ; 0x726 clear_rsd(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:184 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:184 && is_ack() && set_rsd() && send_bytes(_set_repeat, sizeof(_set_repeat)) @@ -1559,7 +1559,7 @@ clear_rsd(): } 718: 63 e0 ldi r22, 0x03 ; 3 71a: 70 e0 ldi r23, 0x00 ; 0 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:149 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:149 return send_bytes(_set_rsd, 3); } @@ -1567,7 +1567,7 @@ clear_rsd(): const static uint8_t _clear_rsd[] = {0x55, 0xC2, 0x05}; return send_bytes(_clear_rsd, 3); 71c: 8c e3 ldi r24, 0x3C ; 60 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:184 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:184 && is_ack() && set_rsd() && send_bytes(_set_repeat, sizeof(_set_repeat)) @@ -1581,7 +1581,7 @@ send_bytes_block(): clear_rsd(): 724: c2 ce rjmp .-636 ; 0x4aa send_bytes_block(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:113 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:113 }; _CAPS32(_set_ptr[2])->dword = _dwAddr; return send_bytes(_set_ptr, 5) && recv(); @@ -1590,7 +1590,7 @@ send_bytes_block(): bool send_byte (uint32_t _dwAddr, uint8_t _data) { 726: 80 e0 ldi r24, 0x00 ; 0 728: df 91 pop r29 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:117 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:117 static uint8_t _set_ptr[] = { 0x55, 0x48, 0, 0, 0, 0 /* STS ADDR3 DATA1 */ }; @@ -1604,19 +1604,19 @@ send_byte(): 730: c4 2f mov r28, r20 732: 60 93 09 60 sts 0x6009, r22 ; 0x806009 736: 70 93 0a 60 sts 0x600A, r23 ; 0x80600a -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:118 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:118 return send_bytes(_set_ptr, 5) 73a: 80 93 0b 60 sts 0x600B, r24 ; 0x80600b 73e: 90 93 0c 60 sts 0x600C, r25 ; 0x80600c 742: 65 e0 ldi r22, 0x05 ; 5 744: 70 e0 ldi r23, 0x00 ; 0 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:121 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:121 && is_ack() && send(_data) && is_ack(); 746: 87 e0 ldi r24, 0x07 ; 7 748: 90 e6 ldi r25, 0x60 ; 96 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:119 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:119 static uint8_t _set_ptr[] = { 0x55, 0x48, 0, 0, 0, 0 /* STS ADDR3 DATA1 */ }; @@ -1626,18 +1626,18 @@ send_byte(): 74a: af de rcall .-674 ; 0x4aa 74c: 88 23 and r24, r24 74e: 49 f0 breq .+18 ; 0x762 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:120 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:120 && send(_data) 750: fd de rcall .-518 ; 0x54c 752: 88 23 and r24, r24 754: 31 f0 breq .+12 ; 0x762 756: 8c 2f mov r24, r28 758: 97 de rcall .-722 ; 0x488 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:122 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:122 && is_ack(); } 75a: 88 23 and r24, r24 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:121 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:121 }; _CAPS32(_set_ptr[2])->dword = _dwAddr; return send_bytes(_set_ptr, 5) @@ -1646,12 +1646,12 @@ send_byte(): && is_ack(); 75c: 11 f0 breq .+4 ; 0x762 75e: cf 91 pop r28 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:122 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:122 } 760: f5 ce rjmp .-534 ; 0x54c 762: 80 e0 ldi r24, 0x00 ; 0 764: cf 91 pop r28 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:213 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:213 /* This slow process is due to USERROW and BOOTROW. */ return send_bytes_data(_dwAddr, &packet.out.memData[0], _wLength); } @@ -1671,7 +1671,7 @@ nvm_ctrl(): 00000774 : send_bytes_block_slow(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:207 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:207 if (!send_byte(_dwAddr++, *_data++)) return false; } return true; @@ -1690,7 +1690,7 @@ send_bytes_block_slow(): 786: d0 e6 ldi r29, 0x60 ; 96 788: 8a 01 movw r16, r20 78a: 02 54 subi r16, 0x42 ; 66 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:201 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:201 && send_bytes(&packet.out.memData[0], _wLength & ~1) && clear_rsd(); } @@ -1701,7 +1701,7 @@ send_bytes_block_slow(): send_bytes_data(): 78e: c0 17 cp r28, r16 790: d1 07 cpc r29, r17 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:202 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:202 if (!send_byte(_dwAddr++, *_data++)) return false; 792: c1 f0 breq .+48 ; 0x7c4 794: 6b 01 movw r12, r22 @@ -1717,7 +1717,7 @@ send_bytes_data(): 7a8: 81 11 cpse r24, r1 7aa: 09 c0 rjmp .+18 ; 0x7be send_bytes_block_slow(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:210 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:210 } bool send_bytes_block_slow (uint32_t _dwAddr, size_t _wLength) { @@ -1733,7 +1733,7 @@ send_bytes_block_slow(): 7b8: df 90 pop r13 7ba: cf 90 pop r12 7bc: 08 95 ret -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:202 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:202 && clear_rsd(); } @@ -1743,11 +1743,11 @@ send_bytes_block_slow(): 7be: c7 01 movw r24, r14 7c0: b6 01 movw r22, r12 7c2: e5 cf rjmp .-54 ; 0x78e -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:204 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:204 } return true; 7c4: 81 e0 ldi r24, 0x01 ; 1 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:78 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:78 RXSTAT = USART0_RXDATAH ^ 0x80; RXDATA = USART0_RXDATAL; return RXSTAT == 0 || send_break(); @@ -1762,30 +1762,30 @@ recv_bytes(): 7ca: 1f 93 push r17 7cc: cf 93 push r28 7ce: df 93 push r29 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:80 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:80 do { if (!recv()) return false; 7d0: eb 01 movw r28, r22 7d2: 8c 01 movw r16, r24 7d4: 27 de rcall .-946 ; 0x424 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:81 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:81 *_data++ = RXDATA; 7d6: 88 23 and r24, r24 7d8: 31 f0 breq .+12 ; 0x7e6 7da: 9f b3 in r25, 0x1f ; 31 7dc: f8 01 movw r30, r16 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:82 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:82 } while (--_len); 7de: 91 93 st Z+, r25 7e0: 8f 01 movw r16, r30 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:84 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:84 return true; } 7e2: 21 97 sbiw r28, 0x01 ; 1 7e4: b9 f7 brne .-18 ; 0x7d4 7e6: df 91 pop r29 7e8: cf 91 pop r28 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:162 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:162 && is_ack() && send_bytes(_set_repeat, sizeof(_set_repeat)) && recv_bytes(&packet.in.data[0], _wLength); @@ -1798,7 +1798,7 @@ recv_bytes(): 000007f0 : recv_words_block(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:165 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:165 /* This function works in word units up to 256 words, */ /* and will round down any fractional words. */ _CAPS32(_set_ptr24[2])->dword = _dwAddr; @@ -1808,28 +1808,28 @@ recv_words_block(): 7f6: 60 93 14 60 sts 0x6014, r22 ; 0x806014 7fa: 70 93 15 60 sts 0x6015, r23 ; 0x806015 7fe: 80 93 16 60 sts 0x6016, r24 ; 0x806016 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:166 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:166 _set_repeat[2] = (_wLength >> 1) - 1; 802: 90 93 17 60 sts 0x6017, r25 ; 0x806017 806: ca 01 movw r24, r20 808: 96 95 lsr r25 80a: 87 95 ror r24 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:167 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:167 _set_repeat[4] = 0x25; /* LD PTR++ DATA2 */ 80c: 81 50 subi r24, 0x01 ; 1 80e: 80 93 0f 60 sts 0x600F, r24 ; 0x80600f -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:168 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:168 return send_bytes(_set_ptr24, 5) 812: 85 e2 ldi r24, 0x25 ; 37 814: 80 93 11 60 sts 0x6011, r24 ; 0x806011 818: 65 e0 ldi r22, 0x05 ; 5 81a: 70 e0 ldi r23, 0x00 ; 0 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:171 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:171 && is_ack() && send_bytes(_set_repeat, sizeof(_set_repeat)) && recv_bytes(&packet.in.data[0], _wLength & ~1); 81c: 82 e1 ldi r24, 0x12 ; 18 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:169 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:169 /* and will round down any fractional words. */ _CAPS32(_set_ptr24[2])->dword = _dwAddr; _set_repeat[2] = (_wLength >> 1) - 1; @@ -1840,7 +1840,7 @@ recv_words_block(): 820: 44 de rcall .-888 ; 0x4aa 822: 88 23 and r24, r24 824: 89 f0 breq .+34 ; 0x848 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:170 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:170 && send_bytes(_set_repeat, sizeof(_set_repeat)) 826: 92 de rcall .-732 ; 0x54c 828: 88 23 and r24, r24 @@ -1849,16 +1849,16 @@ recv_words_block(): 82e: 70 e0 ldi r23, 0x00 ; 0 830: 8d e0 ldi r24, 0x0D ; 13 832: 90 e6 ldi r25, 0x60 ; 96 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:171 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:171 && recv_bytes(&packet.in.data[0], _wLength & ~1); 834: 3a de rcall .-908 ; 0x4aa 836: 88 23 and r24, r24 838: 39 f0 breq .+14 ; 0x848 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:172 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:172 } 83a: be 01 movw r22, r28 83c: 6e 7f andi r22, 0xFE ; 254 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:171 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:171 _set_repeat[2] = (_wLength >> 1) - 1; _set_repeat[4] = 0x25; /* LD PTR++ DATA2 */ return send_bytes(_set_ptr24, 5) @@ -1867,13 +1867,13 @@ recv_words_block(): && recv_bytes(&packet.in.data[0], _wLength & ~1); 83e: 85 ec ldi r24, 0xC5 ; 197 840: 90 e6 ldi r25, 0x60 ; 96 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:172 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:172 } 842: df 91 pop r29 844: cf 91 pop r28 846: c0 cf rjmp .-128 ; 0x7c8 848: 80 e0 ldi r24, 0x00 ; 0 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:152 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:152 bool clear_rsd (void) { const static uint8_t _clear_rsd[] = {0x55, 0xC2, 0x05}; return send_bytes(_clear_rsd, 3); @@ -1886,7 +1886,7 @@ recv_words_block(): 00000850 : recv_bytes_block(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:153 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:153 _CAPS32(_set_ptr24[2])->dword = _dwAddr; 850: cf 93 push r28 852: df 93 push r29 @@ -1894,27 +1894,27 @@ recv_bytes_block(): 856: 60 93 14 60 sts 0x6014, r22 ; 0x806014 85a: 70 93 15 60 sts 0x6015, r23 ; 0x806015 85e: 80 93 16 60 sts 0x6016, r24 ; 0x806016 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:154 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:154 _set_repeat[2] = _wLength - 1; 862: 90 93 17 60 sts 0x6017, r25 ; 0x806017 866: 8f ef ldi r24, 0xFF ; 255 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:155 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:155 _set_repeat[4] = 0x24; /* LD PTR++ DATA1 */ 868: 84 0f add r24, r20 86a: 80 93 0f 60 sts 0x600F, r24 ; 0x80600f -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:156 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:156 return send_bytes(_set_ptr24, 5) 86e: 84 e2 ldi r24, 0x24 ; 36 870: 80 93 11 60 sts 0x6011, r24 ; 0x806011 874: 65 e0 ldi r22, 0x05 ; 5 876: 70 e0 ldi r23, 0x00 ; 0 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:159 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:159 && is_ack() && send_bytes(_set_repeat, sizeof(_set_repeat)) && recv_bytes(&packet.in.data[0], _wLength); 878: 82 e1 ldi r24, 0x12 ; 18 87a: 90 e6 ldi r25, 0x60 ; 96 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:157 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:157 bool recv_bytes_block (uint32_t _dwAddr, size_t _wLength) { _CAPS32(_set_ptr24[2])->dword = _dwAddr; _set_repeat[2] = _wLength - 1; @@ -1925,7 +1925,7 @@ recv_bytes_block(): 87e: 88 23 and r24, r24 880: 81 f0 breq .+32 ; 0x8a2 882: 64 de rcall .-824 ; 0x54c -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:158 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:158 && send_bytes(_set_repeat, sizeof(_set_repeat)) 884: 88 23 and r24, r24 886: 69 f0 breq .+26 ; 0x8a2 @@ -1935,14 +1935,14 @@ recv_bytes_block(): 88e: 90 e6 ldi r25, 0x60 ; 96 890: 0c de rcall .-1000 ; 0x4aa 892: 88 23 and r24, r24 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:159 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:159 && recv_bytes(&packet.in.data[0], _wLength); 894: 31 f0 breq .+12 ; 0x8a2 896: be 01 movw r22, r28 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:160 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:160 } 898: 85 ec ldi r24, 0xC5 ; 197 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:159 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:159 _set_repeat[2] = _wLength - 1; _set_repeat[4] = 0x24; /* LD PTR++ DATA1 */ return send_bytes(_set_ptr24, 5) @@ -1951,13 +1951,13 @@ recv_bytes_block(): && recv_bytes(&packet.in.data[0], _wLength); 89a: 90 e6 ldi r25, 0x60 ; 96 89c: df 91 pop r29 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:160 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:160 } 89e: cf 91 pop r28 8a0: 93 cf rjmp .-218 ; 0x7c8 8a2: 80 e0 ldi r24, 0x00 ; 0 8a4: df 91 pop r29 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv4.cpp:119 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv4.cpp:119 size_t prog_init (void) { return nvm_ctrl_change(0x00); @@ -1969,14 +1969,14 @@ recv_bytes_block(): 000008aa : read_memory(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv4.cpp:123 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv4.cpp:123 uint8_t m_type = packet.out.bMType; uint32_t _dwAddr = packet.out.dwAddr; size_t _wLength = packet.out.dwLength; if (bit_is_set(PGCONF, PGCONF_PROG_bp)) { 8aa: cf 93 push r28 8ac: df 93 push r29 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv4.cpp:136 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv4.cpp:136 _dwAddr = PROD_SIG + ((uint8_t)_dwAddr & 0x7F); } if (UPDI::recv_bytes_block(_dwAddr, _wLength)) @@ -1985,12 +1985,12 @@ read_memory(): return 0; 8ae: e9 99 sbic 0x1d, 1 ; 29 8b0: 05 c0 rjmp .+10 ; 0x8bc -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv4.cpp:137 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv4.cpp:137 } 8b2: 90 e0 ldi r25, 0x00 ; 0 8b4: 80 e0 ldi r24, 0x00 ; 0 8b6: df 91 pop r29 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv4.cpp:120 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv4.cpp:120 size_t prog_init (void) { return nvm_ctrl_change(0x00); } @@ -1999,30 +1999,30 @@ read_memory(): uint8_t m_type = packet.out.bMType; 8b8: cf 91 pop r28 8ba: 08 95 ret -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv4.cpp:121 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv4.cpp:121 uint32_t _dwAddr = packet.out.dwAddr; 8bc: 20 91 c5 60 lds r18, 0x60C5 ; 0x8060c5 8c0: 60 91 c6 60 lds r22, 0x60C6 ; 0x8060c6 8c4: 70 91 c7 60 lds r23, 0x60C7 ; 0x8060c7 8c8: 80 91 c8 60 lds r24, 0x60C8 ; 0x8060c8 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv4.cpp:122 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv4.cpp:122 size_t _wLength = packet.out.dwLength; 8cc: 90 91 c9 60 lds r25, 0x60C9 ; 0x8060c9 8d0: c0 91 ca 60 lds r28, 0x60CA ; 0x8060ca -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv4.cpp:124 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv4.cpp:124 if (bit_is_set(PGCONF, PGCONF_PROG_bp)) { if (m_type == 0xB0) { 8d4: d0 91 cb 60 lds r29, 0x60CB ; 0x8060cb -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv4.cpp:126 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv4.cpp:126 /* MTYPE_FLASH_PAGE (PROGMEM) */ _dwAddr += PROG_START; 8d8: 20 3b cpi r18, 0xB0 ; 176 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv4.cpp:127 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv4.cpp:127 return UPDI::recv_words_block(_dwAddr, _wLength) ? _wLength + 1 : 0; 8da: 49 f4 brne .+18 ; 0x8ee 8dc: 80 58 subi r24, 0x80 ; 128 8de: 9f 4f sbci r25, 0xFF ; 255 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv4.cpp:133 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv4.cpp:133 } if (m_type == 0xB4) { /* MTYPE_SIGN_JTAG */ @@ -2031,12 +2031,12 @@ read_memory(): if (UPDI::recv_bytes_block(_dwAddr, _wLength)) 8e0: ae 01 movw r20, r28 8e2: 86 df rcall .-244 ; 0x7f0 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv4.cpp:134 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv4.cpp:134 return _wLength + 1; 8e4: 88 23 and r24, r24 8e6: 29 f3 breq .-54 ; 0x8b2 8e8: ce 01 movw r24, r28 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv4.cpp:129 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv4.cpp:129 if (m_type == 0xB0) { /* MTYPE_FLASH_PAGE (PROGMEM) */ _dwAddr += PROG_START; @@ -2045,7 +2045,7 @@ read_memory(): if (m_type == 0xB4) { 8ea: 01 96 adiw r24, 0x01 ; 1 8ec: e4 cf rjmp .-56 ; 0x8b6 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv4.cpp:131 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv4.cpp:131 /* MTYPE_SIGN_JTAG */ _dwAddr = PROD_SIG + ((uint8_t)_dwAddr & 0x7F); 8ee: 24 3b cpi r18, 0xB4 ; 180 @@ -2054,7 +2054,7 @@ read_memory(): 8f4: 70 e0 ldi r23, 0x00 ; 0 8f6: 60 58 subi r22, 0x80 ; 128 8f8: 7f 4e sbci r23, 0xEF ; 239 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv4.cpp:133 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv4.cpp:133 } if (UPDI::recv_bytes_block(_dwAddr, _wLength)) 8fa: 07 2e mov r0, r23 @@ -2063,7 +2063,7 @@ read_memory(): 900: 99 0b sbc r25, r25 902: ae 01 movw r20, r28 904: a5 df rcall .-182 ; 0x850 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv2.cpp:116 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv2.cpp:116 size_t prog_init (void) { return nvm_ctrl_change(0x00); @@ -2078,14 +2078,14 @@ _ZN3NVM2V511read_memoryEv(): 0000090a : read_memory(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv2.cpp:120 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv2.cpp:120 uint8_t m_type = packet.out.bMType; uint32_t _dwAddr = packet.out.dwAddr; size_t _wLength = packet.out.dwLength; if (bit_is_set(PGCONF, PGCONF_PROG_bp)) { 90a: cf 93 push r28 90c: df 93 push r29 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv2.cpp:133 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv2.cpp:133 _dwAddr = PROD_SIG + ((uint8_t)_dwAddr & 0x7F); } if (UPDI::recv_bytes_block(_dwAddr, _wLength)) @@ -2094,12 +2094,12 @@ read_memory(): return 0; 90e: e9 99 sbic 0x1d, 1 ; 29 910: 05 c0 rjmp .+10 ; 0x91c -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv2.cpp:134 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv2.cpp:134 } 912: 90 e0 ldi r25, 0x00 ; 0 914: 80 e0 ldi r24, 0x00 ; 0 916: df 91 pop r29 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv2.cpp:117 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv2.cpp:117 size_t prog_init (void) { return nvm_ctrl_change(0x00); } @@ -2108,30 +2108,30 @@ read_memory(): uint8_t m_type = packet.out.bMType; 918: cf 91 pop r28 91a: 08 95 ret -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv2.cpp:118 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv2.cpp:118 uint32_t _dwAddr = packet.out.dwAddr; 91c: 20 91 c5 60 lds r18, 0x60C5 ; 0x8060c5 920: 60 91 c6 60 lds r22, 0x60C6 ; 0x8060c6 924: 70 91 c7 60 lds r23, 0x60C7 ; 0x8060c7 928: 80 91 c8 60 lds r24, 0x60C8 ; 0x8060c8 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv2.cpp:119 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv2.cpp:119 size_t _wLength = packet.out.dwLength; 92c: 90 91 c9 60 lds r25, 0x60C9 ; 0x8060c9 930: c0 91 ca 60 lds r28, 0x60CA ; 0x8060ca -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv2.cpp:121 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv2.cpp:121 if (bit_is_set(PGCONF, PGCONF_PROG_bp)) { if (m_type == 0xB0) { 934: d0 91 cb 60 lds r29, 0x60CB ; 0x8060cb -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv2.cpp:123 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv2.cpp:123 /* MTYPE_FLASH_PAGE (PROGMEM) */ _dwAddr += PROG_START; 938: 20 3b cpi r18, 0xB0 ; 176 93a: 49 f4 brne .+18 ; 0x94e -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv2.cpp:124 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv2.cpp:124 return UPDI::recv_words_block(_dwAddr, _wLength) ? _wLength + 1 : 0; 93c: 80 58 subi r24, 0x80 ; 128 93e: 9f 4f sbci r25, 0xFF ; 255 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv2.cpp:130 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv2.cpp:130 } if (m_type == 0xB4) { /* MTYPE_SIGN_JTAG */ @@ -2140,12 +2140,12 @@ read_memory(): if (UPDI::recv_bytes_block(_dwAddr, _wLength)) 940: ae 01 movw r20, r28 942: 56 df rcall .-340 ; 0x7f0 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv2.cpp:131 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv2.cpp:131 return _wLength + 1; 944: 88 23 and r24, r24 946: 29 f3 breq .-54 ; 0x912 948: ce 01 movw r24, r28 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv2.cpp:126 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv2.cpp:126 if (m_type == 0xB0) { /* MTYPE_FLASH_PAGE (PROGMEM) */ _dwAddr += PROG_START; @@ -2154,7 +2154,7 @@ read_memory(): if (m_type == 0xB4) { 94a: 01 96 adiw r24, 0x01 ; 1 94c: e4 cf rjmp .-56 ; 0x916 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv2.cpp:128 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv2.cpp:128 /* MTYPE_SIGN_JTAG */ _dwAddr = PROD_SIG + ((uint8_t)_dwAddr & 0x7F); 94e: 24 3b cpi r18, 0xB4 ; 180 @@ -2164,7 +2164,7 @@ read_memory(): 956: 7f 5e subi r23, 0xEF ; 239 958: 07 2e mov r0, r23 95a: 00 0c add r0, r0 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv2.cpp:130 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv2.cpp:130 } if (UPDI::recv_bytes_block(_dwAddr, _wLength)) 95c: 88 0b sbc r24, r24 @@ -2179,7 +2179,7 @@ _ZN3NVM2V311read_memoryEv(): 00000968 : read_memory(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv0.cpp:114 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv0.cpp:114 UPDI::nvm_ctrl(0x04); /* NVM_CMD_PBC */ nvm_wait(); return UPDI::nvm_ctrl(0x00); @@ -2188,24 +2188,24 @@ read_memory(): size_t read_memory (void) { 968: cf 93 push r28 96a: df 93 push r29 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv0.cpp:115 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv0.cpp:115 uint8_t m_type = packet.out.bMType; 96c: 80 91 c5 60 lds r24, 0x60C5 ; 0x8060c5 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv0.cpp:116 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv0.cpp:116 uint16_t _wAddr = packet.out.dwAddr; 970: 60 91 c6 60 lds r22, 0x60C6 ; 0x8060c6 974: 30 91 c7 60 lds r19, 0x60C7 ; 0x8060c7 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv0.cpp:118 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv0.cpp:118 size_t _wLength = packet.out.dwLength; if (m_type == 0xB4) { 978: 84 3b cpi r24, 0xB4 ; 180 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv0.cpp:120 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv0.cpp:120 /* MTYPE_SIGN_JTAG */ _wAddr = PROD_SIG + ((uint8_t)_wAddr & 0x7F); 97a: 51 f4 brne .+20 ; 0x990 97c: 6f 77 andi r22, 0x7F ; 127 97e: 70 e0 ldi r23, 0x00 ; 0 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv0.cpp:127 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv0.cpp:127 else if (m_type == 0xB0) { /* MTYPE_FLASH_PAGE (PROGMEM) */ _wAddr += Device_Descriptor.UPDI.prog_base; @@ -2214,16 +2214,16 @@ read_memory(): && UPDI::recv_bytes_block(_wAddr, _wLength)) 980: 7f 5e subi r23, 0xEF ; 239 982: e9 99 sbic 0x1d, 1 ; 29 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv0.cpp:129 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv0.cpp:129 return _wLength + 1; return 0; 984: 0f c0 rjmp .+30 ; 0x9a4 986: 90 e0 ldi r25, 0x00 ; 0 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv0.cpp:130 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv0.cpp:130 } 988: 80 e0 ldi r24, 0x00 ; 0 98a: df 91 pop r29 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv0.cpp:116 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv0.cpp:116 return UPDI::nvm_ctrl(0x00); } @@ -2231,7 +2231,7 @@ read_memory(): uint8_t m_type = packet.out.bMType; uint16_t _wAddr = packet.out.dwAddr; 98c: cf 91 pop r28 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv0.cpp:122 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv0.cpp:122 size_t _wLength = packet.out.dwLength; if (m_type == 0xB4) { /* MTYPE_SIGN_JTAG */ @@ -2240,14 +2240,14 @@ read_memory(): else if (m_type == 0xB0) { 98e: 08 95 ret 990: 73 2f mov r23, r19 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv0.cpp:124 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv0.cpp:124 /* MTYPE_FLASH_PAGE (PROGMEM) */ _wAddr += Device_Descriptor.UPDI.prog_base; 992: 80 3b cpi r24, 0xB0 ; 176 994: b1 f7 brne .-20 ; 0x982 996: 80 91 8e 60 lds r24, 0x608E ; 0x80608e 99a: 90 91 8f 60 lds r25, 0x608F ; 0x80608f -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv0.cpp:117 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv0.cpp:117 } size_t read_memory (void) { @@ -2257,7 +2257,7 @@ read_memory(): 99e: 68 0f add r22, r24 9a0: 79 1f adc r23, r25 9a2: ef cf rjmp .-34 ; 0x982 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv0.cpp:127 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv0.cpp:127 else if (m_type == 0xB0) { /* MTYPE_FLASH_PAGE (PROGMEM) */ _wAddr += Device_Descriptor.UPDI.prog_base; @@ -2269,11 +2269,11 @@ read_memory(): 9ac: 90 e0 ldi r25, 0x00 ; 0 9ae: 80 e0 ldi r24, 0x00 ; 0 9b0: ae 01 movw r20, r28 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv0.cpp:128 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv0.cpp:128 return _wLength + 1; 9b2: 4e df rcall .-356 ; 0x850 9b4: 88 23 and r24, r24 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:50 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:50 loop_until_bit_is_clear(TCLK_IN, TCLK_bp); } } @@ -2287,34 +2287,34 @@ read_memory(): 000009be : recv(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:51 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:51 RXSTAT = USART0_RXDATAH ^ 0x80; 9be: 80 91 04 08 lds r24, 0x0804 ; 0x800804 <__TEXT_REGION_LENGTH__+0x7f0804> 9c2: 87 ff sbrs r24, 7 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:52 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:52 RXDATA = USART0_RXDATAL; 9c4: fc cf rjmp .-8 ; 0x9be 9c6: 80 91 01 08 lds r24, 0x0801 ; 0x800801 <__TEXT_REGION_LENGTH__+0x7f0801> -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:53 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:53 return RXSTAT == 0; 9ca: 80 58 subi r24, 0x80 ; 128 9cc: 8e bb out 0x1e, r24 ; 30 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:54 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:54 } 9ce: 80 91 00 08 lds r24, 0x0800 ; 0x800800 <__TEXT_REGION_LENGTH__+0x7f0800> -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:56 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:56 bool send (const uint8_t _data) { 9d2: 8f bb out 0x1f, r24 ; 31 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:57 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:57 loop_until_bit_is_set(USART0_STATUS, USART_DREIF_bp); 9d4: 9e b3 in r25, 0x1e ; 30 9d6: 81 e0 ldi r24, 0x01 ; 1 9d8: 91 11 cpse r25, r1 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:58 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:58 USART0_TXDATAL = _data; 9da: 80 e0 ldi r24, 0x00 ; 0 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:59 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:59 return (recv() && _data == RXDATA); 9dc: 08 95 ret @@ -2325,10 +2325,10 @@ send(): 9e2: 80 91 04 08 lds r24, 0x0804 ; 0x800804 <__TEXT_REGION_LENGTH__+0x7f0804> 9e6: 85 ff sbrs r24, 5 9e8: fc cf rjmp .-8 ; 0x9e2 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:60 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:60 } 9ea: c0 93 02 08 sts 0x0802, r28 ; 0x800802 <__TEXT_REGION_LENGTH__+0x7f0802> -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:99 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:99 bool nvm_wait (void) { while (get_sin(0x62) && RXDATA); /* NVMCSR_REG: IO=0x32 */ return true; @@ -2336,7 +2336,7 @@ send(): bool nvm_ctrl (const uint8_t _nvmcmd) { 9ee: e7 df rcall .-50 ; 0x9be -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:73 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:73 bool set_sstcs (const uint8_t _addr, const uint8_t _data) { return (send(0xC0 | _addr) && send(_data)); } @@ -2348,7 +2348,7 @@ send(): 9f4: 9f b3 in r25, 0x1f ; 31 9f6: 81 e0 ldi r24, 0x01 ; 1 9f8: 9c 13 cpse r25, r28 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:69 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:69 bool get_sldcs (const uint8_t _addr) { return (send(0x80 | _addr) && recv()); } @@ -2356,7 +2356,7 @@ send(): bool set_sstcs (const uint8_t _addr, const uint8_t _data) { return (send(0xC0 | _addr) && send(_data)); 9fa: 80 e0 ldi r24, 0x00 ; 0 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:101 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:101 return true; } @@ -2364,7 +2364,7 @@ send(): return set_sout(0x63, _nvmcmd); /* NVMCMD_REG: IO=0x33 */ } 9fc: cf 91 pop r28 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:69 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:69 bool get_sldcs (const uint8_t _addr) { return (send(0x80 | _addr) && recv()); } @@ -2376,7 +2376,7 @@ send(): 00000a00 : nvm_ctrl(): a00: cf 93 push r28 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:101 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:101 return true; } @@ -2387,7 +2387,7 @@ nvm_ctrl(): set_sout(): a04: 83 ef ldi r24, 0xF3 ; 243 a06: eb df rcall .-42 ; 0x9de -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:77 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:77 bool set_sout (const uint8_t _addr, const uint8_t _data) { return (send(0x90 | _addr) && send(_data)); } @@ -2402,7 +2402,7 @@ nvm_ctrl(): set_sout(): a10: e6 cf rjmp .-52 ; 0x9de nvm_ctrl(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:65 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:65 } /*** TPI control and CSS area command ***/ @@ -2416,7 +2416,7 @@ nvm_ctrl(): 00000a18 : get_sin(): a18: 82 e7 ldi r24, 0x72 ; 114 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:95 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:95 } /*** NVM control ****/ @@ -2426,12 +2426,12 @@ get_sin(): a1a: e1 df rcall .-62 ; 0x9de a1c: 88 23 and r24, r24 a1e: 31 f0 breq .+12 ; 0xa2c -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:97 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:97 return true; } a20: ce df rcall .-100 ; 0x9be a22: 88 23 and r24, r24 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:88 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:88 bool get_sld (void) { return (send(0x24) && recv()); @@ -2441,7 +2441,7 @@ get_sin(): a24: 19 f0 breq .+6 ; 0xa2c nvm_wait(): a26: 8f b3 in r24, 0x1f ; 31 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:89 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:89 return (send(0x64) && send(_data)); a28: 81 11 cpse r24, r1 a2a: f6 cf rjmp .-20 ; 0xa18 @@ -2451,7 +2451,7 @@ nvm_wait(): 00000a30 : set_sst(): a30: cf 93 push r28 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:69 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:69 bool get_sldcs (const uint8_t _addr) { return (send(0x80 | _addr) && recv()); } @@ -2459,7 +2459,7 @@ set_sst(): bool set_sstcs (const uint8_t _addr, const uint8_t _data) { return (send(0xC0 | _addr) && send(_data)); a32: c8 2f mov r28, r24 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:90 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:90 return (send(0x24) && recv()); } @@ -2467,7 +2467,7 @@ set_sst(): return (send(0x64) && send(_data)); } a34: 84 e6 ldi r24, 0x64 ; 100 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:69 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:69 bool get_sldcs (const uint8_t _addr) { return (send(0x80 | _addr) && recv()); } @@ -2476,7 +2476,7 @@ set_sst(): return (send(0xC0 | _addr) && send(_data)); a36: d3 df rcall .-90 ; 0x9de a38: 88 23 and r24, r24 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:90 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:90 return (send(0x24) && recv()); } @@ -2486,7 +2486,7 @@ set_sst(): a3a: 19 f0 breq .+6 ; 0xa42 a3c: 8c 2f mov r24, r28 a3e: cf 91 pop r28 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:85 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:85 bool set_sstpr (const uint16_t _addr) { return (send(0x68) && send(_addr & 0xFF) && send(0x69) && send(_addr >> 8)); } @@ -2500,7 +2500,7 @@ set_sst(): 00000a48 : get_sld(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:65 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:65 } /*** TPI control and CSS area command ***/ @@ -2509,7 +2509,7 @@ get_sld(): return (send(0x80 | _addr) && recv()); a48: 84 e2 ldi r24, 0x24 ; 36 a4a: c9 df rcall .-110 ; 0x9de -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:86 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:86 return (send(0x68) && send(_addr & 0xFF) && send(0x69) && send(_addr >> 8)); } @@ -2518,7 +2518,7 @@ get_sld(): } a4c: 81 11 cpse r24, r1 a4e: b7 cf rjmp .-146 ; 0x9be -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:80 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:80 bool get_sin (const uint8_t _addr) { return (send(0x10 | _addr) && recv()); @@ -2532,7 +2532,7 @@ get_sld(): set_sstpr(): a54: cf 93 push r28 a56: df 93 push r29 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:81 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:81 return (send(0x68) && send(_addr & 0xFF) && send(0x69) && send(_addr >> 8)); a58: d8 2f mov r29, r24 a5a: c9 2f mov r28, r25 @@ -2550,11 +2550,11 @@ set_sstpr(): a72: 21 f0 breq .+8 ; 0xa7c a74: 8c 2f mov r24, r28 a76: df 91 pop r29 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:82 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:82 } a78: cf 91 pop r28 a7a: b1 cf rjmp .-158 ; 0x9de -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:81 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:81 bool get_sin (const uint8_t _addr) { return (send(0x10 | _addr) && recv()); } @@ -2563,7 +2563,7 @@ set_sstpr(): return (send(0x68) && send(_addr & 0xFF) && send(0x69) && send(_addr >> 8)); a7c: 80 e0 ldi r24, 0x00 ; 0 a7e: df 91 pop r29 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:82 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:82 } a80: cf 91 pop r28 a82: 08 95 ret @@ -2572,7 +2572,7 @@ set_sstpr(): idle_clock(): a84: 30 e0 ldi r19, 0x00 ; 0 a86: 20 e0 ldi r18, 0x00 ; 0 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:43 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:43 const static uint8_t nvmprog_key[] = { 0xE0, 0xFF, 0x88, 0xD8, 0xCD, 0x45, 0xAB, 0x89, 0x12 }; @@ -2580,18 +2580,18 @@ idle_clock(): void idle_clock (const size_t clock) { for (size_t i = 0; i < clock; i++) { a88: 40 91 08 04 lds r20, 0x0408 ; 0x800408 <__TEXT_REGION_LENGTH__+0x7f0408> -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:44 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:44 loop_until_bit_is_set(TCLK_IN, TCLK_bp); a8c: 42 ff sbrs r20, 2 a8e: fc cf rjmp .-8 ; 0xa88 a90: 40 91 08 04 lds r20, 0x0408 ; 0x800408 <__TEXT_REGION_LENGTH__+0x7f0408> -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:45 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:45 loop_until_bit_is_clear(TCLK_IN, TCLK_bp); a94: 42 fd sbrc r20, 2 a96: fc cf rjmp .-8 ; 0xa90 a98: 2f 5f subi r18, 0xFF ; 255 a9a: 3f 4f sbci r19, 0xFF ; 255 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:43 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:43 const static uint8_t nvmprog_key[] = { 0xE0, 0xFF, 0x88, 0xD8, 0xCD, 0x45, 0xAB, 0x89, 0x12 }; @@ -2606,13 +2606,13 @@ idle_clock(): 00000aa4 : is_boundary_flash_page(): aa4: cf 92 push r12 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:47 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:47 loop_until_bit_is_set(TCLK_IN, TCLK_bp); loop_until_bit_is_clear(TCLK_IN, TCLK_bp); } } aa6: df 92 push r13 -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:315 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:315 * Flash memory boundary check * * True when a page area address different from the previous time is detected. @@ -2624,21 +2624,21 @@ is_boundary_flash_page(): aac: ab 01 movw r20, r22 aae: bc 01 movw r22, r24 ab0: 80 91 bb 60 lds r24, 0x60BB ; 0x8060bb -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:316 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:316 uint32_t _mask = ~(((uint16_t)Device_Descriptor.UPDI.flash_page_size_msb << 8) ab4: 28 2f mov r18, r24 ab6: 30 e0 ldi r19, 0x00 ; 0 ab8: 32 2f mov r19, r18 aba: 22 27 eor r18, r18 abc: 80 91 90 60 lds r24, 0x6090 ; 0x806090 -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:317 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:317 + Device_Descriptor.UPDI.flash_page_size - 1); ac0: 82 0f add r24, r18 ac2: 93 2f mov r25, r19 ac4: 91 1d adc r25, r1 ac6: 91 95 neg r25 ac8: 81 95 neg r24 -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:316 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:316 * * True when a page area address different from the previous time is detected. * Indicates the need to erase a page in FLASH/USERROW/BOOTROW of the AVR-Dx series. @@ -2650,14 +2650,14 @@ is_boundary_flash_page(): ace: a0 e0 ldi r26, 0x00 ; 0 ad0: 84 23 and r24, r20 ad2: 95 23 and r25, r21 -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:318 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:318 + Device_Descriptor.UPDI.flash_page_size - 1); uint32_t _after_page = _dwAddr & _mask; ad4: a6 23 and r26, r22 ad6: b7 23 and r27, r23 ad8: 21 e0 ldi r18, 0x01 ; 1 ada: c0 90 da 62 lds r12, 0x62DA ; 0x8062da <_before_page> -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:319 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:319 bool _result = _before_page != _after_page; ade: d0 90 db 62 lds r13, 0x62DB ; 0x8062db <_before_page+0x1> ae2: e0 90 dc 62 lds r14, 0x62DC ; 0x8062dc <_before_page+0x2> @@ -2669,14 +2669,14 @@ is_boundary_flash_page(): af2: 09 f4 brne .+2 ; 0xaf6 af4: 20 e0 ldi r18, 0x00 ; 0 af6: 80 93 da 62 sts 0x62DA, r24 ; 0x8062da <_before_page> -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:320 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:320 _before_page = _after_page; afa: 90 93 db 62 sts 0x62DB, r25 ; 0x8062db <_before_page+0x1> afe: a0 93 dc 62 sts 0x62DC, r26 ; 0x8062dc <_before_page+0x2> b02: b0 93 dd 62 sts 0x62DD, r27 ; 0x8062dd <_before_page+0x3> b06: 82 2f mov r24, r18 b08: ff 90 pop r15 -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:322 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:322 return _result; } b0a: ef 90 pop r14 @@ -2687,7 +2687,7 @@ is_boundary_flash_page(): 00000b12 : LED_TCB1(): b12: 80 91 7d 60 lds r24, 0x607D ; 0x80607d <_led_mode> -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:198 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:198 _led_mode = 1; } } @@ -2697,32 +2697,32 @@ LED_TCB1(): b16: 82 30 cpi r24, 0x02 ; 2 b18: 81 f0 breq .+32 ; 0xb3a b1a: 10 92 00 0a sts 0x0A00, r1 ; 0x800a00 <__TEXT_REGION_LENGTH__+0x7f0a00> -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:199 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:199 TCA0_SPLIT_CTRLA = 0; b1e: 10 92 1a 0b sts 0x0B1A, r1 ; 0x800b1a <__TEXT_REGION_LENGTH__+0x7f0b1a> -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:200 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:200 TCB1_CNTL = 0; b22: 89 ea ldi r24, 0xA9 ; 169 b24: 95 e0 ldi r25, 0x05 ; 5 -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:201 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:201 TCB1_CCMP = _ccmp; b26: 80 93 1c 0b sts 0x0B1C, r24 ; 0x800b1c <__TEXT_REGION_LENGTH__+0x7f0b1c> b2a: 90 93 1d 0b sts 0x0B1D, r25 ; 0x800b1d <__TEXT_REGION_LENGTH__+0x7f0b1d> b2e: 8f e4 ldi r24, 0x4F ; 79 b30: 80 93 10 0b sts 0x0B10, r24 ; 0x800b10 <__TEXT_REGION_LENGTH__+0x7f0b10> -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:202 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:202 TCB1_CTRLA = TCB_RUNSTDBY_bm | TCB_ENABLE_bm | TCB_CLKSEL_EVENT_gc; b34: 82 e0 ldi r24, 0x02 ; 2 b36: 80 93 7d 60 sts 0x607D, r24 ; 0x80607d <_led_mode> LED_Flash(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:203 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:203 _led_mode = _mode; b3a: 08 95 ret 00000b3c : LED_HeartBeat(): b3c: 80 91 7d 60 lds r24, 0x607D ; 0x80607d <_led_mode> -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:188 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:188 * LED operation switching */ @@ -2733,35 +2733,35 @@ LED_HeartBeat(): b42: 89 f0 breq .+34 ; 0xb66 b44: 8f e0 ldi r24, 0x0F ; 15 b46: 80 93 00 0a sts 0x0A00, r24 ; 0x800a00 <__TEXT_REGION_LENGTH__+0x7f0a00> -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:189 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:189 TCA0_SPLIT_CTRLA = TCA_SPLIT_ENABLE_bm | TCA_SPLIT_CLKSEL_DIV1024_gc; b4a: 10 92 1a 0b sts 0x0B1A, r1 ; 0x800b1a <__TEXT_REGION_LENGTH__+0x7f0b1a> -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:190 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:190 TCB1_CNTL = 0; b4e: 84 ec ldi r24, 0xC4 ; 196 b50: 92 e6 ldi r25, 0x62 ; 98 -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:191 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:191 TCB1_CCMP = TCB1_HBEAT; b52: 80 93 1c 0b sts 0x0B1C, r24 ; 0x800b1c <__TEXT_REGION_LENGTH__+0x7f0b1c> b56: 90 93 1d 0b sts 0x0B1D, r25 ; 0x800b1d <__TEXT_REGION_LENGTH__+0x7f0b1d> b5a: 85 e4 ldi r24, 0x45 ; 69 b5c: 80 93 10 0b sts 0x0B10, r24 ; 0x800b10 <__TEXT_REGION_LENGTH__+0x7f0b10> -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:192 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:192 TCB1_CTRLA = TCB_RUNSTDBY_bm | TCB_ENABLE_bm | TCB_CLKSEL_TCA0_gc; b60: 81 e0 ldi r24, 0x01 ; 1 b62: 80 93 7d 60 sts 0x607D, r24 ; 0x80607d <_led_mode> -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:193 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:193 _led_mode = 1; b66: 08 95 ret 00000b68 : change_vcp(): b68: cf 92 push r12 -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:195 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:195 } } b6a: df 92 push r13 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usart.cpp:115 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usart.cpp:115 } } @@ -2777,7 +2777,7 @@ change_vcp(): b78: cd b7 in r28, 0x3d ; 61 b7a: de b7 in r29, 0x3e ; 62 b7c: 20 91 7e 60 lds r18, 0x607E ; 0x80607e <_set_line_encoding> -/Users/askn/Collaborator/UPDI4AVR-USB/src/usart.cpp:121 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usart.cpp:121 #ifdef CONFIG_VCP_TXD_ODM uint8_t _ctrlb = USART_RXEN_bm | USART_TXEN_bm | USART_ODME_bm; #else @@ -2789,7 +2789,7 @@ change_vcp(): b88: 50 91 81 60 lds r21, 0x6081 ; 0x806081 <_set_line_encoding+0x3> b8c: 21 15 cp r18, r1 b8e: 31 05 cpc r19, r1 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usart.cpp:123 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usart.cpp:123 /* If the BAUD value is small, select double speed mode. */ if (_baud) _baud = (((F_CPU * 8L) / _baud) + 1) >> 1; b90: 41 05 cpc r20, r1 @@ -2799,7 +2799,7 @@ change_vcp(): b98: 78 e6 ldi r23, 0x68 ; 104 b9a: 89 e8 ldi r24, 0x89 ; 137 b9c: 99 e0 ldi r25, 0x09 ; 9 - b9e: 0e 94 78 15 call 0x2af0 ; 0x2af0 <__udivmodsi4> + b9e: 0e 94 76 15 call 0x2aec ; 0x2aec <__udivmodsi4> ba2: 2f 5f subi r18, 0xFF ; 255 ba4: 3f 4f sbci r19, 0xFF ; 255 ba6: 4f 4f sbci r20, 0xFF ; 255 @@ -2810,7 +2810,7 @@ change_vcp(): bb0: 27 95 ror r18 bb2: a8 ec ldi r26, 0xC8 ; 200 bb4: 20 36 cpi r18, 0x60 ; 96 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usart.cpp:117 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usart.cpp:117 /*** Activates VCP operation. ***/ /* Detailed parameters are specified in SET_LINE_ENCODING. */ @@ -2818,7 +2818,7 @@ change_vcp(): #ifdef CONFIG_VCP_TXD_ODM uint8_t _ctrlb = USART_RXEN_bm | USART_TXEN_bm | USART_ODME_bm; bb6: 31 05 cpc r19, r1 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usart.cpp:124 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usart.cpp:124 uint8_t _ctrlb = USART_RXEN_bm | USART_TXEN_bm; #endif uint32_t _baud = _set_line_encoding.dwDTERate; @@ -2830,15 +2830,15 @@ change_vcp(): bbc: 28 f4 brcc .+10 ; 0xbc8 bbe: 22 0f add r18, r18 bc0: 33 1f adc r19, r19 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usart.cpp:125 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usart.cpp:125 _baud <<= 1; bc2: 44 1f adc r20, r20 bc4: 55 1f adc r21, r21 bc6: aa ec ldi r26, 0xCA ; 202 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usart.cpp:126 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usart.cpp:126 _ctrlb |= USART_RXMODE_CLK2X_gc; bc8: 69 01 movw r12, r18 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usart.cpp:129 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usart.cpp:129 } D1PRINTF(" BAUD=%08lX:%02X\r\n", _baud, _ctrlb); if (_baud < 0x10000UL && _baud >= 64) { @@ -2855,11 +2855,11 @@ change_vcp(): bde: e1 04 cpc r14, r1 be0: f1 04 cpc r15, r1 be2: d0 f5 brcc .+116 ; 0xc58 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usart.cpp:130 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usart.cpp:130 uint8_t _bits = _set_line_encoding.bDataBits - 5; be4: 90 91 84 60 lds r25, 0x6084 ; 0x806084 <_set_line_encoding+0x6> be8: 95 50 subi r25, 0x05 ; 5 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usart.cpp:131 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usart.cpp:131 uint8_t _ctrlc = (uint8_t[]){ bea: c0 90 2c 60 lds r12, 0x602C ; 0x80602c bee: d0 90 2d 60 lds r13, 0x602D ; 0x80602d @@ -2867,7 +2867,7 @@ change_vcp(): bf6: f0 90 2f 60 lds r15, 0x602F ; 0x80602f bfa: c9 82 std Y+1, r12 ; 0x01 bfc: da 82 std Y+2, r13 ; 0x02 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usart.cpp:133 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usart.cpp:133 USART_PMODE_DISABLED_gc, USART_PMODE_ODD_gc, USART_PMODE_EVEN_gc, USART_PMODE_DISABLED_gc }[_set_line_encoding.bParityType & 3] bfe: eb 82 std Y+3, r14 ; 0x03 @@ -2875,7 +2875,7 @@ change_vcp(): c02: e0 91 83 60 lds r30, 0x6083 ; 0x806083 <_set_line_encoding+0x5> c06: e3 70 andi r30, 0x03 ; 3 c08: ec 0f add r30, r28 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usart.cpp:134 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usart.cpp:134 + _set_line_encoding.bCharFormat ? USART_SBMODE_2BIT_gc : USART_SBMODE_1BIT_gc; c0a: fd 2f mov r31, r29 c0c: f1 1d adc r31, r1 @@ -2884,14 +2884,14 @@ change_vcp(): c14: 68 0f add r22, r24 c16: 77 27 eor r23, r23 c18: 77 1f adc r23, r23 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usart.cpp:135 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usart.cpp:135 if (_bits < 4) { c1a: 80 e0 ldi r24, 0x00 ; 0 c1c: 67 2b or r22, r23 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usart.cpp:136 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usart.cpp:136 _ctrlc += _bits; /* USART_CHSIZE_[5,6,7,8]BIT_gc */ c1e: 09 f0 breq .+2 ; 0xc22 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usart.cpp:151 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usart.cpp:151 } else { _ctrlc += USART_CHSIZE_8BIT_gc; @@ -2899,41 +2899,41 @@ change_vcp(): } ATOMIC_BLOCK(ATOMIC_RESTORESTATE) { c20: 88 e0 ldi r24, 0x08 ; 8 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usart.cpp:152 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usart.cpp:152 PORTMUX_USARTROUTEA = PORTMUX_USART_VCP; c22: 94 30 cpi r25, 0x04 ; 4 c24: 28 f5 brcc .+74 ; 0xc70 c26: 89 0f add r24, r25 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usart.cpp:153 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usart.cpp:153 USART0_STATUS = USART_DREIF_bm; c28: 9f b7 in r25, 0x3f ; 63 __iCliRetVal(): c2a: f8 94 cli change_vcp(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/usart.cpp:154 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usart.cpp:154 USART0_BAUD = (uint16_t)_baud; c2c: 62 e1 ldi r22, 0x12 ; 18 c2e: 60 93 e2 05 sts 0x05E2, r22 ; 0x8005e2 <__TEXT_REGION_LENGTH__+0x7f05e2> c32: 60 e2 ldi r22, 0x20 ; 32 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usart.cpp:155 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usart.cpp:155 USART0_CTRLC = _ctrlc; c34: 60 93 04 08 sts 0x0804, r22 ; 0x800804 <__TEXT_REGION_LENGTH__+0x7f0804> -/Users/askn/Collaborator/UPDI4AVR-USB/src/usart.cpp:156 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usart.cpp:156 USART0_CTRLA = USART_RXCIF_bm; c38: 20 93 08 08 sts 0x0808, r18 ; 0x800808 <__TEXT_REGION_LENGTH__+0x7f0808> -/Users/askn/Collaborator/UPDI4AVR-USB/src/usart.cpp:157 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usart.cpp:157 USART0_CTRLB = _ctrlb; c3c: 30 93 09 08 sts 0x0809, r19 ; 0x800809 <__TEXT_REGION_LENGTH__+0x7f0809> -/Users/askn/Collaborator/UPDI4AVR-USB/src/usart.cpp:158 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usart.cpp:158 bit_set(GPCONF, GPCONF_VCP_bp); c40: 80 93 07 08 sts 0x0807, r24 ; 0x800807 <__TEXT_REGION_LENGTH__+0x7f0807> -/Users/askn/Collaborator/UPDI4AVR-USB/src/usart.cpp:161 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usart.cpp:161 } D1PRINTF(" UART=VCP\r\n"); drain(32768); c44: 80 e8 ldi r24, 0x80 ; 128 c46: 80 93 05 08 sts 0x0805, r24 ; 0x800805 <__TEXT_REGION_LENGTH__+0x7f0805> -/Users/askn/Collaborator/UPDI4AVR-USB/src/usart.cpp:167 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usart.cpp:167 } else { /* If outside the supported range, the USART will remain in the BREAK state. */ @@ -2941,7 +2941,7 @@ change_vcp(): } if (bit_is_set(GPCONF, GPCONF_USB_bp)) c4a: a0 93 06 08 sts 0x0806, r26 ; 0x800806 <__TEXT_REGION_LENGTH__+0x7f0806> -/Users/askn/Collaborator/UPDI4AVR-USB/src/usart.cpp:171 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usart.cpp:171 SYS::LED_HeartBeat(); else SYS::LED_Flash(); @@ -2953,7 +2953,7 @@ change_vcp(): c52: 80 e0 ldi r24, 0x00 ; 0 c54: 90 e8 ldi r25, 0x80 ; 128 c56: b2 db rcall .-2204 ; 0x3bc -/Users/askn/Collaborator/UPDI4AVR-USB/src/usart.cpp:168 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usart.cpp:168 else { /* If outside the supported range, the USART will remain in the BREAK state. */ D1PRINTF(" UART=FAIL\r\n"); @@ -2962,7 +2962,7 @@ change_vcp(): SYS::LED_HeartBeat(); c58: e0 9b sbis 0x1c, 0 ; 28 c5a: 0c c0 rjmp .+24 ; 0xc74 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usart.cpp:148 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usart.cpp:148 usart_receiver = &USB::vcp_receiver_9bit; usart_transmitter = &USB::vcp_transceiver_9bit; #else @@ -2970,7 +2970,7 @@ change_vcp(): else { _ctrlc += USART_CHSIZE_8BIT_gc; c5c: 24 96 adiw r28, 0x04 ; 4 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usart.cpp:171 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usart.cpp:171 } if (bit_is_set(GPCONF, GPCONF_USB_bp)) SYS::LED_HeartBeat(); @@ -2986,7 +2986,7 @@ change_vcp(): c6a: df 90 pop r13 c6c: cf 90 pop r12 c6e: 66 cf rjmp .-308 ; 0xb3c -/Users/askn/Collaborator/UPDI4AVR-USB/src/usart.cpp:170 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usart.cpp:170 D1PRINTF(" UART=FAIL\r\n"); } if (bit_is_set(GPCONF, GPCONF_USB_bp)) @@ -2994,7 +2994,7 @@ change_vcp(): else SYS::LED_Flash(); c70: 8d 5f subi r24, 0xFD ; 253 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:388 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:388 bit_set(GPCONF, GPCONF_BRK_bp); } @@ -3005,17 +3005,17 @@ change_vcp(): c74: 24 96 adiw r28, 0x04 ; 4 c76: cd bf out 0x3d, r28 ; 61 c78: de bf out 0x3e, r29 ; 62 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:389 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:389 USART::change_vcp(); c7a: df 91 pop r29 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:390 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:390 bit_set(GPCONF, GPCONF_OPN_bp); c7c: cf 91 pop r28 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:392 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:392 } bit_clear(GPCONF, GPCONF_BRK_bp); c7e: ff 90 pop r15 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv3.cpp:55 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv3.cpp:55 constexpr auto NVM_STATUS = 0x1006; constexpr auto PROD_SIG = 0x1100; constexpr auto PROG_START = 0x800000; @@ -3033,13 +3033,13 @@ break_off(): c8a: 04 c0 rjmp .+8 ; 0xc94 c8c: e3 9b sbis 0x1c, 3 ; 28 c8e: 02 c0 rjmp .+4 ; 0xc94 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv3.cpp:56 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv3.cpp:56 return RXDATA; c90: 6b df rcall .-298 ; 0xb68 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv3.cpp:57 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv3.cpp:57 } c92: e4 9a sbi 0x1c, 4 ; 28 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv3.cpp:73 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv3.cpp:73 D2PRINTF(" NVM_V3_FLPERW=%06lX\r\n", _dwAddr); return ( nvm_ctrl_change(0x00) @@ -3056,11 +3056,11 @@ nvm_wait(): c9c: 80 e0 ldi r24, 0x00 ; 0 c9e: 90 e0 ldi r25, 0x00 ; 0 ca0: 44 dc rcall .-1912 ; 0x52a -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv3.cpp:75 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv3.cpp:75 ); } ca2: 8f b3 in r24, 0x1f ; 31 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv3.cpp:59 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv3.cpp:59 uint8_t nvm_wait (void) { do { UPDI::recv_byte(NVM_STATUS); } while (RXDATA & 3); return RXDATA; @@ -3069,14 +3069,14 @@ nvm_wait(): bool nvm_ctrl_change (uint8_t _nvmcmd) { ca4: 83 70 andi r24, 0x03 ; 3 ca6: c1 f7 brne .-16 ; 0xc98 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv3.cpp:60 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv3.cpp:60 nvm_wait(); ca8: 8f b3 in r24, 0x1f ; 31 caa: 08 95 ret 00000cac : _ZN3NVM2V317write_words_flashEmj.part.1(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv3.cpp:61 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv3.cpp:61 if (UPDI::recv_byte(NVM_CTRL) && RXDATA == _nvmcmd) return true; cac: f5 df rcall .-22 ; 0xc98 cae: 98 2f mov r25, r24 @@ -3091,14 +3091,14 @@ nvm_ctrl_change(): cba: cf 93 push r28 cbc: c8 2f mov r28, r24 cbe: ec df rcall .-40 ; 0xc98 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv3.cpp:65 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv3.cpp:65 if (!UPDI::nvm_ctrl(0x00)) return false; if (0 != _nvmcmd) return UPDI::nvm_ctrl(_nvmcmd); return true; } cc0: 60 e0 ldi r22, 0x00 ; 0 cc2: 70 e1 ldi r23, 0x10 ; 16 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv3.cpp:62 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv3.cpp:62 } bool nvm_ctrl_change (uint8_t _nvmcmd) { @@ -3109,7 +3109,7 @@ nvm_ctrl_change(): cc6: 90 e0 ldi r25, 0x00 ; 0 cc8: 30 dc rcall .-1952 ; 0x52a cca: 88 23 and r24, r24 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv2.cpp:65 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv2.cpp:65 bool nvm_ctrl_change (uint8_t _nvmcmd) { nvm_wait(); @@ -3124,7 +3124,7 @@ nvm_ctrl_change(): } cd2: 03 c0 rjmp .+6 ; 0xcda cd4: 81 e0 ldi r24, 0x01 ; 1 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv4.cpp:116 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv4.cpp:116 && nvm_ctrl_change(0x00) ); } @@ -3134,11 +3134,11 @@ nvm_ctrl_change(): cd6: cf 91 pop r28 cd8: 08 95 ret cda: 80 e0 ldi r24, 0x00 ; 0 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv4.cpp:117 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv4.cpp:117 } cdc: 45 dd rcall .-1398 ; 0x768 cde: 88 23 and r24, r24 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv4.cpp:78 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv4.cpp:78 D2PRINTF(" NVM_V4_FLPER=%06lX\r\n", _dwAddr); return ( nvm_ctrl_change(0x08) /* NVM_V4_CMD_FLPER */ @@ -3148,7 +3148,7 @@ nvm_ctrl_change(): ce0: d1 f3 breq .-12 ; 0xcd6 ce2: cc 23 and r28, r28 ce4: b9 f3 breq .-18 ; 0xcd4 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv3.cpp:98 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv3.cpp:98 && (nvm_wait() & 0x73) == 0 ); } @@ -3161,19 +3161,19 @@ nvm_ctrl_change(): 00000cec : prog_init(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv3.cpp:99 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv3.cpp:99 nvm_ctrl_change(0x1F); /* NVM_V3_CMD_EEPBCLR */ cec: 80 e0 ldi r24, 0x00 ; 0 cee: e5 df rcall .-54 ; 0xcba cf0: 90 e0 ldi r25, 0x00 ; 0 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv3.cpp:100 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv3.cpp:100 return nvm_ctrl_change(0x00); cf2: 08 95 ret 00000cf4 : _ZN3NVM2V416erase_flash_pageEm.part.1(): cf4: 80 e0 ldi r24, 0x00 ; 0 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv3.cpp:101 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv3.cpp:101 } cf6: e1 cf rjmp .-62 ; 0xcba @@ -3182,7 +3182,7 @@ prog_init(): cf8: 8f e0 ldi r24, 0x0F ; 15 cfa: df df rcall .-66 ; 0xcba cfc: 8f e1 ldi r24, 0x1F ; 31 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv3.cpp:77 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv3.cpp:77 && nvm_ctrl_change(0x05) /* NVM_V3_CMD_FLPERW */ && (nvm_wait() & 0x73) == 0 ); @@ -3204,20 +3204,20 @@ write_bytes_flash(): d0a: cf 92 push r12 d0c: df 92 push r13 d0e: ef 92 push r14 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv3.cpp:80 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv3.cpp:80 D2PRINTF(" NVM_V3_FLPERW=%06lX\r\n", _dwAddr); return ( nvm_ctrl_change(0x00) d10: ff 92 push r15 d12: cf 93 push r28 d14: df 93 push r29 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv3.cpp:83 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv3.cpp:83 && UPDI::send_bytes_block(_dwAddr, _wLength) && nvm_ctrl_change(0x05) /* NVM_V3_CMD_FLPERW */ && (nvm_wait() & 0x73) == 0 d16: 6b 01 movw r12, r22 d18: 7c 01 movw r14, r24 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv3.cpp:81 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv3.cpp:81 bool write_bytes_flash (uint32_t _dwAddr, size_t _wLength) { D2PRINTF(" NVM_V3_FLPERW=%06lX\r\n", _dwAddr); @@ -3231,14 +3231,14 @@ write_bytes_flash(): d22: 89 f0 breq .+34 ; 0xd46 d24: ae 01 movw r20, r28 d26: c7 01 movw r24, r14 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv3.cpp:82 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv3.cpp:82 && nvm_ctrl_change(0x05) /* NVM_V3_CMD_FLPERW */ d28: b6 01 movw r22, r12 d2a: c6 dc rcall .-1652 ; 0x6b8 d2c: 88 23 and r24, r24 d2e: 59 f0 breq .+22 ; 0xd46 d30: 85 e0 ldi r24, 0x05 ; 5 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv3.cpp:85 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv3.cpp:85 && (nvm_wait() & 0x73) == 0 ); } @@ -3255,7 +3255,7 @@ write_bytes_flash(): d46: 80 e0 ldi r24, 0x00 ; 0 d48: df 91 pop r29 d4a: cf 91 pop r28 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv3.cpp:67 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv3.cpp:67 if (!UPDI::nvm_ctrl(0x00)) return false; if (0 != _nvmcmd) return UPDI::nvm_ctrl(_nvmcmd); return true; @@ -3273,20 +3273,20 @@ write_words_flash(): d56: cf 92 push r12 d58: df 92 push r13 d5a: ef 92 push r14 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv3.cpp:70 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv3.cpp:70 D2PRINTF(" NVM_V3_FLPERW=%06lX\r\n", _dwAddr); return ( nvm_ctrl_change(0x00) d5c: ff 92 push r15 d5e: cf 93 push r28 d60: df 93 push r29 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv3.cpp:73 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv3.cpp:73 && UPDI::send_words_block(_dwAddr, _wLength) && nvm_ctrl_change(0x05) /* NVM_V3_CMD_FLPERW */ && (nvm_wait() & 0x73) == 0 d62: 6b 01 movw r12, r22 d64: 7c 01 movw r14, r24 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv3.cpp:71 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv3.cpp:71 bool write_words_flash (uint32_t _dwAddr, size_t _wLength) { D2PRINTF(" NVM_V3_FLPERW=%06lX\r\n", _dwAddr); @@ -3299,13 +3299,13 @@ write_words_flash(): d6c: 88 23 and r24, r24 d6e: 89 f0 breq .+34 ; 0xd92 d70: ae 01 movw r20, r28 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv3.cpp:72 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv3.cpp:72 && nvm_ctrl_change(0x05) /* NVM_V3_CMD_FLPERW */ d72: c7 01 movw r24, r14 d74: b6 01 movw r22, r12 d76: f3 db rcall .-2074 ; 0x55e d78: 88 23 and r24, r24 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv3.cpp:75 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv3.cpp:75 && (nvm_wait() & 0x73) == 0 ); } @@ -3323,7 +3323,7 @@ write_words_flash(): d90: 8d cf rjmp .-230 ; 0xcac d92: 80 e0 ldi r24, 0x00 ; 0 d94: df 91 pop r29 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv5.cpp:136 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv5.cpp:136 } /* Page erase will not be used if received. */ return 1; @@ -3335,7 +3335,7 @@ write_words_flash(): d9a: ef 90 pop r14 d9c: df 90 pop r13 d9e: cf 90 pop r12 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv5.cpp:140 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv5.cpp:140 uint8_t m_type = packet.out.bMType; uint32_t _dwAddr = packet.out.dwAddr; size_t _wLength = packet.out.dwLength; @@ -3347,7 +3347,7 @@ write_memory(): da2: cf 92 push r12 da4: df 92 push r13 da6: ef 92 push r14 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv5.cpp:160 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv5.cpp:160 _dwAddr += PROG_START; return write_words_flash(_dwAddr, _wLength); } @@ -3355,7 +3355,7 @@ write_memory(): /* MTYPE_SRAM */ return UPDI::send_bytes_block(_dwAddr, _wLength); da8: ff 92 push r15 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv5.cpp:162 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv5.cpp:162 } } daa: cf 93 push r28 @@ -3365,7 +3365,7 @@ write_memory(): db2: 13 dc rcall .-2010 ; 0x5da db4: 90 e0 ldi r25, 0x00 ; 0 db6: df 91 pop r29 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv5.cpp:137 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv5.cpp:137 /* Page erase will not be used if received. */ return 1; } @@ -3374,7 +3374,7 @@ write_memory(): uint8_t m_type = packet.out.bMType; db8: cf 91 pop r28 dba: ff 90 pop r15 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv5.cpp:138 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv5.cpp:138 uint32_t _dwAddr = packet.out.dwAddr; dbc: ef 90 pop r14 dbe: df 90 pop r13 @@ -3382,18 +3382,18 @@ write_memory(): dc2: 08 95 ret dc4: 80 91 c5 60 lds r24, 0x60C5 ; 0x8060c5 dc8: c0 90 c6 60 lds r12, 0x60C6 ; 0x8060c6 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv5.cpp:139 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv5.cpp:139 size_t _wLength = packet.out.dwLength; dcc: d0 90 c7 60 lds r13, 0x60C7 ; 0x8060c7 dd0: e0 90 c8 60 lds r14, 0x60C8 ; 0x8060c8 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv5.cpp:141 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv5.cpp:141 if (bit_is_clear(PGCONF, PGCONF_PROG_bp)) return UPDI::write_userrow(); if (m_type == 0x22 || m_type == 0xB2 || m_type == 0xB3 || m_type == 0xC4) { dd4: f0 90 c9 60 lds r15, 0x60C9 ; 0x8060c9 dd8: c0 91 ca 60 lds r28, 0x60CA ; 0x8060ca ddc: d0 91 cb 60 lds r29, 0x60CB ; 0x8060cb de0: 82 32 cpi r24, 0x22 ; 34 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv5.cpp:93 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv5.cpp:93 } bool write_eeprom (uint32_t _dwAddr, size_t _wLength) { @@ -3403,7 +3403,7 @@ write_memory(): de2: 31 f0 breq .+12 ; 0xdf0 de4: 9e e4 ldi r25, 0x4E ; 78 de6: 98 0f add r25, r24 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv5.cpp:96 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv5.cpp:96 && UPDI::send_bytes_block(_dwAddr, _wLength) && nvm_ctrl_change(0x15) /* NVM_V5_CMD_EEPERW */ && (nvm_wait() & 0x73) == 0 @@ -3412,7 +3412,7 @@ write_memory(): dec: 84 3c cpi r24, 0xC4 ; 196 dee: 91 f4 brne .+36 ; 0xe14 write_eeprom(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv5.cpp:94 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv5.cpp:94 bool write_eeprom (uint32_t _dwAddr, size_t _wLength) { D2PRINTF(" NVM_V5_EEPERW=%06lX\r\n", _dwAddr); @@ -3427,7 +3427,7 @@ write_memory(): df8: 80 e0 ldi r24, 0x00 ; 0 dfa: dc cf rjmp .-72 ; 0xdb4 write_eeprom(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv5.cpp:95 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv5.cpp:95 && nvm_ctrl_change(0x15) /* NVM_V5_CMD_EEPERW */ dfc: ae 01 movw r20, r28 dfe: c7 01 movw r24, r14 @@ -3436,7 +3436,7 @@ write_eeprom(): e04: 88 23 and r24, r24 e06: c1 f3 breq .-16 ; 0xdf8 e08: 85 e1 ldi r24, 0x15 ; 21 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv5.cpp:148 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv5.cpp:148 /* MTYPE_LOCK_BITS */ /* MTYPE_EEPROM */ /* MTYPE_EEPROM_XMEGA */ @@ -3446,7 +3446,7 @@ write_eeprom(): e0a: 57 df rcall .-338 ; 0xcba e0c: 88 23 and r24, r24 e0e: a1 f3 breq .-24 ; 0xdf8 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv5.cpp:151 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv5.cpp:151 /* MTYPE_FLASH (alias) */ /* MTYPE_USERSIG (USERROW, BOOTROW) */ return write_bytes_flash(_dwAddr, _wLength); @@ -3456,23 +3456,23 @@ write_memory(): e14: 80 3c cpi r24, 0xC0 ; 192 e16: 11 f0 breq .+4 ; 0xe1c e18: 85 3c cpi r24, 0xC5 ; 197 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv5.cpp:153 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv5.cpp:153 } else if (m_type == 0xB0) { e1a: 29 f4 brne .+10 ; 0xe26 e1c: ae 01 movw r20, r28 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv5.cpp:155 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv5.cpp:155 /* MTYPE_FLASH_PAGE (PROGMEM) */ _dwAddr += PROG_START; e1e: c7 01 movw r24, r14 e20: b6 01 movw r22, r12 e22: 73 df rcall .-282 ; 0xd0a -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv5.cpp:156 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv5.cpp:156 return write_words_flash(_dwAddr, _wLength); e24: c7 cf rjmp .-114 ; 0xdb4 e26: 80 3b cpi r24, 0xB0 ; 176 e28: 39 f4 brne .+14 ; 0xe38 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv5.cpp:160 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv5.cpp:160 } else { /* MTYPE_SRAM */ @@ -3482,7 +3482,7 @@ write_memory(): e2e: 80 58 subi r24, 0x80 ; 128 e30: 9f 4f sbci r25, 0xFF ; 255 e32: ae 01 movw r20, r28 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv4.cpp:72 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv4.cpp:72 if (!UPDI::nvm_ctrl(0x00)) return false; if (0 != _nvmcmd) return UPDI::nvm_ctrl(_nvmcmd); return true; @@ -3494,7 +3494,7 @@ write_memory(): e38: ae 01 movw r20, r28 e3a: c7 01 movw r24, r14 e3c: b6 01 movw r22, r12 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv4.cpp:75 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv4.cpp:75 D2PRINTF(" NVM_V4_FLPER=%06lX\r\n", _dwAddr); return ( nvm_ctrl_change(0x08) /* NVM_V4_CMD_FLPER */ @@ -3504,13 +3504,13 @@ write_memory(): 00000e42 : erase_flash_page(): e42: cf 92 push r12 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv4.cpp:78 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv4.cpp:78 && UPDI::send_byte(_dwAddr, 0xFF) && (nvm_wait() & 0x73) == 0 && nvm_ctrl_change(0x00) e44: df 92 push r13 e46: ef 92 push r14 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv4.cpp:76 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv4.cpp:76 bool erase_flash_page (uint32_t _dwAddr) { D2PRINTF(" NVM_V4_FLPER=%06lX\r\n", _dwAddr); @@ -3523,12 +3523,12 @@ erase_flash_page(): e4e: 88 e0 ldi r24, 0x08 ; 8 e50: 34 df rcall .-408 ; 0xcba e52: 88 23 and r24, r24 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv4.cpp:77 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv4.cpp:77 && (nvm_wait() & 0x73) == 0 e54: 71 f0 breq .+28 ; 0xe72 e56: 4f ef ldi r20, 0xFF ; 255 e58: c7 01 movw r24, r14 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv4.cpp:80 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv4.cpp:80 && nvm_ctrl_change(0x00) ); } @@ -3542,7 +3542,7 @@ erase_flash_page(): e68: ff 90 pop r15 e6a: ef 90 pop r14 e6c: df 90 pop r13 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv4.cpp:158 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv4.cpp:158 /* Page erase will not be used if received. */ /* Instead, page erase is determined by the is_boundary_flash_page function. */ return 1; @@ -3553,7 +3553,7 @@ erase_flash_page(): e70: 41 cf rjmp .-382 ; 0xcf4 e72: 80 e0 ldi r24, 0x00 ; 0 e74: ff 90 pop r15 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv4.cpp:162 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv4.cpp:162 uint8_t m_type = packet.out.bMType; uint32_t _dwAddr = packet.out.dwAddr; size_t _wLength = packet.out.dwLength; @@ -3561,7 +3561,7 @@ erase_flash_page(): e76: ef 90 pop r14 e78: df 90 pop r13 e7a: cf 90 pop r12 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv4.cpp:182 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv4.cpp:182 _dwAddr += PROG_START; return write_words_flash(_dwAddr, _wLength); } @@ -3572,7 +3572,7 @@ erase_flash_page(): 00000e7e : write_memory(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv4.cpp:184 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv4.cpp:184 } } e7e: cf 92 push r12 @@ -3582,7 +3582,7 @@ write_memory(): e86: cf 93 push r28 e88: df 93 push r29 e8a: e9 99 sbic 0x1d, 1 ; 29 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv4.cpp:159 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv4.cpp:159 /* Instead, page erase is determined by the is_boundary_flash_page function. */ return 1; } @@ -3590,7 +3590,7 @@ write_memory(): size_t write_memory (void) { uint8_t m_type = packet.out.bMType; e8c: 09 c0 rjmp .+18 ; 0xea0 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv4.cpp:160 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv4.cpp:160 uint32_t _dwAddr = packet.out.dwAddr; e8e: a5 db rcall .-2230 ; 0x5da e90: 90 e0 ldi r25, 0x00 ; 0 @@ -3600,19 +3600,19 @@ write_memory(): e98: ef 90 pop r14 e9a: df 90 pop r13 e9c: cf 90 pop r12 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv4.cpp:161 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv4.cpp:161 size_t _wLength = packet.out.dwLength; e9e: 08 95 ret ea0: 80 91 c5 60 lds r24, 0x60C5 ; 0x8060c5 ea4: c0 90 c6 60 lds r12, 0x60C6 ; 0x8060c6 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv4.cpp:163 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv4.cpp:163 if (bit_is_clear(PGCONF, PGCONF_PROG_bp)) return UPDI::write_userrow(); if (m_type == 0x22 || m_type == 0xB2 || m_type == 0xB3 || m_type == 0xC4) { ea8: d0 90 c7 60 lds r13, 0x60C7 ; 0x8060c7 eac: e0 90 c8 60 lds r14, 0x60C8 ; 0x8060c8 eb0: f0 90 c9 60 lds r15, 0x60C9 ; 0x8060c9 eb4: c0 91 ca 60 lds r28, 0x60CA ; 0x8060ca -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv4.cpp:108 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv4.cpp:108 } bool write_eeprom (uint32_t _dwAddr, size_t _wLength) { @@ -3620,13 +3620,13 @@ write_memory(): return ( nvm_ctrl_change(0x13) /* NVM_V4_CMD_EEERWR */ eb8: d0 91 cb 60 lds r29, 0x60CB ; 0x8060cb -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv4.cpp:111 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv4.cpp:111 && UPDI::send_bytes_block_slow(_dwAddr, _wLength) && (nvm_wait() & 0x73) == 0 && nvm_ctrl_change(0x00) ebc: 82 32 cpi r24, 0x22 ; 34 ebe: 31 f0 breq .+12 ; 0xecc -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv4.cpp:90 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv4.cpp:90 D2PRINTF(" NVM_V4_FLWR=%06lX\r\n", _dwAddr); return ( nvm_ctrl_change(0x02) /* NVM_V4_CMD_FLWR */ @@ -3635,7 +3635,7 @@ write_memory(): && nvm_ctrl_change(0x00) ec0: 9e e4 ldi r25, 0x4E ; 78 ec2: 98 0f add r25, r24 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv4.cpp:109 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv4.cpp:109 bool write_eeprom (uint32_t _dwAddr, size_t _wLength) { D2PRINTF(" NVM_V4_EEERWR=%06lX\r\n", _dwAddr); @@ -3649,7 +3649,7 @@ write_memory(): write_eeprom(): ecc: 83 e1 ldi r24, 0x13 ; 19 ece: f5 de rcall .-534 ; 0xcba -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv4.cpp:110 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv4.cpp:110 && (nvm_wait() & 0x73) == 0 ed0: 81 11 cpse r24, r1 ed2: 02 c0 rjmp .+4 ; 0xed8 @@ -3659,7 +3659,7 @@ write_memory(): write_eeprom(): ed8: ae 01 movw r20, r28 eda: c7 01 movw r24, r14 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv4.cpp:170 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv4.cpp:170 /* MTYPE_LOCK_BITS */ /* MTYPE_EEPROM */ /* MTYPE_EEPROM_XMEGA */ @@ -3669,7 +3669,7 @@ write_eeprom(): edc: b6 01 movw r22, r12 ede: 4a dc rcall .-1900 ; 0x774 ee0: 88 23 and r24, r24 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv4.cpp:95 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv4.cpp:95 && nvm_ctrl_change(0x00) ); } @@ -3686,20 +3686,20 @@ write_memory(): eee: 80 3c cpi r24, 0xC0 ; 192 ef0: 11 f0 breq .+4 ; 0xef6 ef2: 85 3c cpi r24, 0xC5 ; 197 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv4.cpp:98 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv4.cpp:98 D2PRINTF(" NVM_V4_FLWR=%06lX\r\n", _dwAddr); return ( nvm_ctrl_change(0x02) /* NVM_V4_CMD_FLWR */ ef4: b9 f4 brne .+46 ; 0xf24 write_bytes_flash(): ef6: c7 01 movw r24, r14 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv4.cpp:101 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv4.cpp:101 && UPDI::send_bytes_block_slow(_dwAddr, _wLength) && (nvm_wait() & 0x73) == 0 && nvm_ctrl_change(0x00) ef8: b6 01 movw r22, r12 efa: d4 dd rcall .-1112 ; 0xaa4 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv4.cpp:99 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv4.cpp:99 bool write_bytes_flash (uint32_t _dwAddr, size_t _wLength) { if (SYS::is_boundary_flash_page(_dwAddr)) erase_flash_page(_dwAddr); D2PRINTF(" NVM_V4_FLWR=%06lX\r\n", _dwAddr); @@ -3712,7 +3712,7 @@ write_bytes_flash(): f02: b6 01 movw r22, r12 f04: 9e df rcall .-196 ; 0xe42 f06: 82 e0 ldi r24, 0x02 ; 2 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv4.cpp:100 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv4.cpp:100 && (nvm_wait() & 0x73) == 0 f08: d8 de rcall .-592 ; 0xcba f0a: 88 23 and r24, r24 @@ -3720,7 +3720,7 @@ write_bytes_flash(): f0e: ae 01 movw r20, r28 f10: c7 01 movw r24, r14 f12: b6 01 movw r22, r12 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv4.cpp:175 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv4.cpp:175 else if (m_type == 0xC0 || m_type == 0xC5) { /* MTYPE_FLASH (alias) */ /* MTYPE_USERSIG (USERROW, BOOTROW) */ @@ -3728,13 +3728,13 @@ write_bytes_flash(): } else if (m_type == 0xB0) { f14: 2f dc rcall .-1954 ; 0x774 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv4.cpp:177 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv4.cpp:177 /* MTYPE_FLASH_PAGE (PROGMEM) */ _dwAddr += PROG_START; f16: 88 23 and r24, r24 f18: e9 f2 breq .-70 ; 0xed4 f1a: be de rcall .-644 ; 0xc98 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv4.cpp:84 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv4.cpp:84 ); } @@ -3750,20 +3750,20 @@ write_memory(): f26: f9 f4 brne .+62 ; 0xf66 f28: 80 e8 ldi r24, 0x80 ; 128 f2a: e8 0e add r14, r24 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv4.cpp:87 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv4.cpp:87 D2PRINTF(" NVM_V4_FLWR=%06lX\r\n", _dwAddr); return ( nvm_ctrl_change(0x02) /* NVM_V4_CMD_FLWR */ f2c: f1 1c adc r15, r1 write_words_flash(): f2e: ea 99 sbic 0x1d, 2 ; 29 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv4.cpp:90 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv4.cpp:90 && UPDI::send_words_block(_dwAddr, _wLength) && (nvm_wait() & 0x73) == 0 && nvm_ctrl_change(0x00) f30: 08 c0 rjmp .+16 ; 0xf42 f32: c7 01 movw r24, r14 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv4.cpp:88 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv4.cpp:88 if (bit_is_clear(PGCONF, PGCONF_ERSE_bp) && SYS::is_boundary_flash_page(_dwAddr)) erase_flash_page(_dwAddr); D2PRINTF(" NVM_V4_FLWR=%06lX\r\n", _dwAddr); @@ -3778,7 +3778,7 @@ write_words_flash(): f3e: b6 01 movw r22, r12 f40: 80 df rcall .-256 ; 0xe42 f42: 82 e0 ldi r24, 0x02 ; 2 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv4.cpp:89 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv4.cpp:89 && (nvm_wait() & 0x73) == 0 f44: ba de rcall .-652 ; 0xcba f46: 88 23 and r24, r24 @@ -3787,7 +3787,7 @@ write_words_flash(): f4c: ae 01 movw r20, r28 f4e: c7 01 movw r24, r14 f50: b6 01 movw r22, r12 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv4.cpp:182 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv4.cpp:182 _dwAddr += PROG_START; return write_words_flash(_dwAddr, _wLength); } @@ -3798,7 +3798,7 @@ write_words_flash(): f54: 88 23 and r24, r24 f56: 09 f4 brne .+2 ; 0xf5a f58: bd cf rjmp .-134 ; 0xed4 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv3.cpp:133 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv3.cpp:133 } /* Page erase will not be used if received. */ return 1; @@ -3810,7 +3810,7 @@ write_words_flash(): f5e: 09 f0 breq .+2 ; 0xf62 f60: b9 cf rjmp .-142 ; 0xed4 f62: c8 de rcall .-624 ; 0xcf4 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv3.cpp:137 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv3.cpp:137 uint8_t m_type = packet.out.bMType; uint32_t _dwAddr = packet.out.dwAddr; size_t _wLength = packet.out.dwLength; @@ -3819,7 +3819,7 @@ write_words_flash(): write_memory(): f66: ae 01 movw r20, r28 f68: c7 01 movw r24, r14 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv3.cpp:157 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv3.cpp:157 _dwAddr += PROG_START; return write_words_flash(_dwAddr, _wLength); } @@ -3827,7 +3827,7 @@ write_memory(): /* MTYPE_SRAM */ return UPDI::send_bytes_block(_dwAddr, _wLength); f6a: b6 01 movw r22, r12 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv3.cpp:159 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv3.cpp:159 } } f6c: a5 db rcall .-2230 ; 0x6b8 @@ -3838,7 +3838,7 @@ write_memory(): f72: df 92 push r13 f74: ef 92 push r14 f76: ff 92 push r15 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv3.cpp:134 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv3.cpp:134 /* Page erase will not be used if received. */ return 1; } @@ -3847,7 +3847,7 @@ write_memory(): uint8_t m_type = packet.out.bMType; f78: cf 93 push r28 f7a: df 93 push r29 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv3.cpp:135 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv3.cpp:135 uint32_t _dwAddr = packet.out.dwAddr; f7c: e9 99 sbic 0x1d, 1 ; 29 f7e: 09 c0 rjmp .+18 ; 0xf92 @@ -3856,20 +3856,20 @@ write_memory(): f84: df 91 pop r29 f86: cf 91 pop r28 f88: ff 90 pop r15 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv3.cpp:136 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv3.cpp:136 size_t _wLength = packet.out.dwLength; f8a: ef 90 pop r14 f8c: df 90 pop r13 f8e: cf 90 pop r12 f90: 08 95 ret -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv3.cpp:138 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv3.cpp:138 if (bit_is_clear(PGCONF, PGCONF_PROG_bp)) return UPDI::write_userrow(); if (m_type == 0x22 || m_type == 0xB2 || m_type == 0xB3 || m_type == 0xC4) { f92: 80 91 c5 60 lds r24, 0x60C5 ; 0x8060c5 f96: c0 90 c6 60 lds r12, 0x60C6 ; 0x8060c6 f9a: d0 90 c7 60 lds r13, 0x60C7 ; 0x8060c7 f9e: e0 90 c8 60 lds r14, 0x60C8 ; 0x8060c8 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv3.cpp:90 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv3.cpp:90 } bool write_eeprom (uint32_t _dwAddr, size_t _wLength) { @@ -3877,13 +3877,13 @@ write_memory(): return ( nvm_ctrl_change(0x10) fa2: f0 90 c9 60 lds r15, 0x60C9 ; 0x8060c9 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv3.cpp:93 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv3.cpp:93 && UPDI::send_bytes_block(_dwAddr, _wLength) && nvm_ctrl_change(0x15) /* NVM_V3_CMD_EEPERW */ && (nvm_wait() & 0x73) == 0 fa6: c0 91 ca 60 lds r28, 0x60CA ; 0x8060ca faa: d0 91 cb 60 lds r29, 0x60CB ; 0x8060cb -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv3.cpp:91 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv3.cpp:91 bool write_eeprom (uint32_t _dwAddr, size_t _wLength) { D2PRINTF(" NVM_V3_EEPERW=%06lX\r\n", _dwAddr); @@ -3897,7 +3897,7 @@ write_memory(): fb6: 92 30 cpi r25, 0x02 ; 2 fb8: 10 f0 brcs .+4 ; 0xfbe fba: 84 3c cpi r24, 0xC4 ; 196 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv3.cpp:92 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv3.cpp:92 && nvm_ctrl_change(0x15) /* NVM_V3_CMD_EEPERW */ fbc: 91 f4 brne .+36 ; 0xfe2 write_eeprom(): @@ -3910,7 +3910,7 @@ write_memory(): fc8: dc cf rjmp .-72 ; 0xf82 write_eeprom(): fca: ae 01 movw r20, r28 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv3.cpp:145 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv3.cpp:145 /* MTYPE_LOCK_BITS */ /* MTYPE_EEPROM */ /* MTYPE_EEPROM_XMEGA */ @@ -3921,7 +3921,7 @@ write_eeprom(): fce: b6 01 movw r22, r12 fd0: 73 db rcall .-2330 ; 0x6b8 fd2: 88 23 and r24, r24 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv3.cpp:148 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv3.cpp:148 /* MTYPE_FLASH (alias) */ /* MTYPE_USERSIG (USERROW) */ return write_bytes_flash(_dwAddr, _wLength); @@ -3930,25 +3930,25 @@ write_eeprom(): fd8: 70 de rcall .-800 ; 0xcba fda: 88 23 and r24, r24 fdc: a1 f3 breq .-24 ; 0xfc6 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv3.cpp:150 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv3.cpp:150 } else if (m_type == 0xB0) { fde: 66 de rcall .-820 ; 0xcac fe0: d0 cf rjmp .-96 ; 0xf82 write_memory(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv3.cpp:152 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv3.cpp:152 /* MTYPE_FLASH_PAGE (PROGMEM) */ _dwAddr += PROG_START; fe2: 80 3c cpi r24, 0xC0 ; 192 fe4: 11 f0 breq .+4 ; 0xfea fe6: 85 3c cpi r24, 0xC5 ; 197 fe8: 29 f4 brne .+10 ; 0xff4 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv3.cpp:153 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv3.cpp:153 return write_words_flash(_dwAddr, _wLength); fea: ae 01 movw r20, r28 fec: c7 01 movw r24, r14 fee: b6 01 movw r22, r12 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv3.cpp:157 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv3.cpp:157 } else { /* MTYPE_SRAM */ @@ -3957,7 +3957,7 @@ write_memory(): ff2: c7 cf rjmp .-114 ; 0xf82 ff4: 80 3b cpi r24, 0xB0 ; 176 ff6: 39 f4 brne .+14 ; 0x1006 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv0.cpp:62 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv0.cpp:62 constexpr auto NVM_STATUS = 0x1002; constexpr auto NVM_DATA = 0x1006; constexpr auto PROD_SIG = 0x1100; @@ -3972,10 +3972,10 @@ write_memory(): 1002: a9 de rcall .-686 ; 0xd56 1004: be cf rjmp .-132 ; 0xf82 1006: ae 01 movw r20, r28 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv0.cpp:63 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv0.cpp:63 return RXDATA; 1008: c7 01 movw r24, r14 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv0.cpp:108 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv0.cpp:108 && (nvm_wait() & 7) == 0 ); } @@ -3983,7 +3983,7 @@ write_memory(): size_t prog_init (void) { nvm_wait(); 100a: b6 01 movw r22, r12 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv0.cpp:109 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv0.cpp:109 UPDI::nvm_ctrl(0x04); /* NVM_CMD_PBC */ 100c: 55 db rcall .-2390 ; 0x6b8 100e: b9 cf rjmp .-142 ; 0xf82 @@ -3991,18 +3991,18 @@ write_memory(): 00001010 : nvm_wait(): 1010: 62 e0 ldi r22, 0x02 ; 2 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv0.cpp:110 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv0.cpp:110 nvm_wait(); 1012: 70 e1 ldi r23, 0x10 ; 16 1014: 80 e0 ldi r24, 0x00 ; 0 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv0.cpp:111 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv0.cpp:111 return UPDI::nvm_ctrl(0x00); 1016: 90 e0 ldi r25, 0x00 ; 0 1018: 88 da rcall .-2800 ; 0x52a -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv0.cpp:112 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv0.cpp:112 } 101a: 8f b3 in r24, 0x1f ; 31 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv2.cpp:61 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv2.cpp:61 uint8_t nvm_wait (void) { do { UPDI::recv_byte(NVM_STATUS); } while (RXDATA & 3); return RXDATA; @@ -4010,11 +4010,11 @@ nvm_wait(): bool nvm_ctrl_change (uint8_t _nvmcmd) { 101c: 83 70 andi r24, 0x03 ; 3 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv2.cpp:62 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv2.cpp:62 nvm_wait(); 101e: c1 f7 brne .-16 ; 0x1010 1020: 8f b3 in r24, 0x1f ; 31 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv2.cpp:63 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv2.cpp:63 if (UPDI::recv_byte(NVM_CTRL) && RXDATA == _nvmcmd) return true; 1022: 08 95 ret @@ -4033,13 +4033,13 @@ prog_init(): nvm_ctrl_change(): 1034: cf 93 push r28 1036: c8 2f mov r28, r24 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv2.cpp:67 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv2.cpp:67 if (!UPDI::nvm_ctrl(0x00)) return false; if (0 != _nvmcmd) return UPDI::nvm_ctrl(_nvmcmd); return true; } 1038: eb df rcall .-42 ; 0x1010 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv2.cpp:64 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv2.cpp:64 } bool nvm_ctrl_change (uint8_t _nvmcmd) { @@ -4050,14 +4050,14 @@ nvm_ctrl_change(): 103c: 70 e1 ldi r23, 0x10 ; 16 103e: 80 e0 ldi r24, 0x00 ; 0 1040: 90 e0 ldi r25, 0x00 ; 0 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv2.cpp:65 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv2.cpp:65 if (0 != _nvmcmd) return UPDI::nvm_ctrl(_nvmcmd); 1042: 73 da rcall .-2842 ; 0x52a 1044: 88 23 and r24, r24 1046: 31 f0 breq .+12 ; 0x1054 1048: 8f b3 in r24, 0x1f ; 31 104a: 8c 13 cpse r24, r28 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv2.cpp:113 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv2.cpp:113 && nvm_ctrl_change(0x00) ); } @@ -4066,11 +4066,11 @@ nvm_ctrl_change(): return nvm_ctrl_change(0x00); 104c: 03 c0 rjmp .+6 ; 0x1054 104e: 81 e0 ldi r24, 0x01 ; 1 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv2.cpp:114 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv2.cpp:114 } 1050: cf 91 pop r28 1052: 08 95 ret -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv2.cpp:75 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv2.cpp:75 D2PRINTF(" NVM_V2_FLPER=%06lX\r\n", _dwAddr); return ( nvm_ctrl_change(0x08) /* NVM_V2_CMD_FLPER */ @@ -4079,7 +4079,7 @@ nvm_ctrl_change(): && nvm_ctrl_change(0x00) 1054: 80 e0 ldi r24, 0x00 ; 0 1056: 88 db rcall .-2288 ; 0x768 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv2.cpp:69 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv2.cpp:69 if (!UPDI::nvm_ctrl(0x00)) return false; if (0 != _nvmcmd) return UPDI::nvm_ctrl(_nvmcmd); return true; @@ -4091,7 +4091,7 @@ nvm_ctrl_change(): 105c: cc 23 and r28, r28 105e: b9 f3 breq .-18 ; 0x104e 1060: 8c 2f mov r24, r28 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv2.cpp:72 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv2.cpp:72 D2PRINTF(" NVM_V2_FLPER=%06lX\r\n", _dwAddr); return ( nvm_ctrl_change(0x08) /* NVM_V2_CMD_FLPER */ @@ -4101,13 +4101,13 @@ nvm_ctrl_change(): 00001066 : prog_init(): 1066: 80 e0 ldi r24, 0x00 ; 0 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv2.cpp:75 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv2.cpp:75 && UPDI::send_byte(_dwAddr, 0xFF) && (nvm_wait() & 0x73) == 0 && nvm_ctrl_change(0x00) 1068: e5 df rcall .-54 ; 0x1034 106a: 90 e0 ldi r25, 0x00 ; 0 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv2.cpp:73 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv2.cpp:73 bool erase_flash_page (uint32_t _dwAddr) { D2PRINTF(" NVM_V2_FLPER=%06lX\r\n", _dwAddr); @@ -4127,13 +4127,13 @@ erase_flash_page(): 1074: df 92 push r13 1076: ef 92 push r14 1078: ff 92 push r15 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv2.cpp:74 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv2.cpp:74 && (nvm_wait() & 0x73) == 0 107a: 6b 01 movw r12, r22 107c: 7c 01 movw r14, r24 107e: 88 e0 ldi r24, 0x08 ; 8 1080: d9 df rcall .-78 ; 0x1034 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv2.cpp:77 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv2.cpp:77 && nvm_ctrl_change(0x00) ); } @@ -4148,7 +4148,7 @@ erase_flash_page(): 1092: be df rcall .-132 ; 0x1010 1094: 83 77 andi r24, 0x73 ; 115 1096: 29 f4 brne .+10 ; 0x10a2 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv2.cpp:155 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv2.cpp:155 /* Page erase will not be used if received. */ /* Instead, page erase is determined by the is_boundary_flash_page function. */ return 1; @@ -4161,7 +4161,7 @@ erase_flash_page(): 109e: cf 90 pop r12 10a0: e6 cf rjmp .-52 ; 0x106e 10a2: 80 e0 ldi r24, 0x00 ; 0 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv2.cpp:159 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv2.cpp:159 uint8_t m_type = packet.out.bMType; uint32_t _dwAddr = packet.out.dwAddr; size_t _wLength = packet.out.dwLength; @@ -4170,7 +4170,7 @@ erase_flash_page(): 10a6: ef 90 pop r14 10a8: df 90 pop r13 10aa: cf 90 pop r12 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv2.cpp:179 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv2.cpp:179 _dwAddr += PROG_START; return write_words_flash(_dwAddr, _wLength); } @@ -4181,7 +4181,7 @@ erase_flash_page(): 000010ae : write_memory(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv2.cpp:181 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv2.cpp:181 } } 10ae: cf 92 push r12 @@ -4191,7 +4191,7 @@ write_memory(): 10b6: cf 93 push r28 10b8: df 93 push r29 10ba: e9 99 sbic 0x1d, 1 ; 29 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv2.cpp:156 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv2.cpp:156 /* Instead, page erase is determined by the is_boundary_flash_page function. */ return 1; } @@ -4200,7 +4200,7 @@ write_memory(): uint8_t m_type = packet.out.bMType; 10bc: 09 c0 rjmp .+18 ; 0x10d0 10be: 8d da rcall .-2790 ; 0x5da -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv2.cpp:157 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv2.cpp:157 uint32_t _dwAddr = packet.out.dwAddr; 10c0: 90 e0 ldi r25, 0x00 ; 0 10c2: df 91 pop r29 @@ -4210,18 +4210,18 @@ write_memory(): 10ca: df 90 pop r13 10cc: cf 90 pop r12 10ce: 08 95 ret -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv2.cpp:158 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv2.cpp:158 size_t _wLength = packet.out.dwLength; 10d0: 80 91 c5 60 lds r24, 0x60C5 ; 0x8060c5 10d4: c0 90 c6 60 lds r12, 0x60C6 ; 0x8060c6 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv2.cpp:160 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv2.cpp:160 if (bit_is_clear(PGCONF, PGCONF_PROG_bp)) return UPDI::write_userrow(); if (m_type == 0x22 || m_type == 0xB2 || m_type == 0xB3 || m_type == 0xC4) { 10d8: d0 90 c7 60 lds r13, 0x60C7 ; 0x8060c7 10dc: e0 90 c8 60 lds r14, 0x60C8 ; 0x8060c8 10e0: f0 90 c9 60 lds r15, 0x60C9 ; 0x8060c9 10e4: c0 91 ca 60 lds r28, 0x60CA ; 0x8060ca -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv2.cpp:105 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv2.cpp:105 } bool write_eeprom (uint32_t _dwAddr, size_t _wLength) { @@ -4230,13 +4230,13 @@ write_memory(): nvm_ctrl_change(0x13) /* NVM_V2_CMD_EEERWR */ 10e8: d0 91 cb 60 lds r29, 0x60CB ; 0x8060cb 10ec: 82 32 cpi r24, 0x22 ; 34 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv2.cpp:108 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv2.cpp:108 && UPDI::send_bytes_block_slow(_dwAddr, _wLength) && (nvm_wait() & 0x73) == 0 && nvm_ctrl_change(0x00) 10ee: 31 f0 breq .+12 ; 0x10fc 10f0: 9e e4 ldi r25, 0x4E ; 78 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv2.cpp:87 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv2.cpp:87 D2PRINTF(" NVM_V2_FLWR=%06lX\r\n", _dwAddr); return ( nvm_ctrl_change(0x02) /* NVM_V2_CMD_FLWR */ @@ -4245,7 +4245,7 @@ write_memory(): && nvm_ctrl_change(0x00) 10f2: 98 0f add r25, r24 10f4: 92 30 cpi r25, 0x02 ; 2 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv2.cpp:106 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv2.cpp:106 bool write_eeprom (uint32_t _dwAddr, size_t _wLength) { D2PRINTF(" NVM_V2_EEERWR=%06lX\r\n", _dwAddr); @@ -4261,7 +4261,7 @@ write_eeprom(): 1100: 81 11 cpse r24, r1 1102: 02 c0 rjmp .+4 ; 0x1108 write_memory(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv2.cpp:107 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv2.cpp:107 && (nvm_wait() & 0x73) == 0 1104: 80 e0 ldi r24, 0x00 ; 0 1106: dc cf rjmp .-72 ; 0x10c0 @@ -4271,7 +4271,7 @@ write_eeprom(): 110c: b6 01 movw r22, r12 110e: 32 db rcall .-2460 ; 0x774 1110: 88 23 and r24, r24 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv2.cpp:167 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv2.cpp:167 /* MTYPE_LOCK_BITS */ /* MTYPE_EEPROM */ /* MTYPE_EEPROM_XMEGA */ @@ -4281,7 +4281,7 @@ write_eeprom(): 1112: c1 f3 breq .-16 ; 0x1104 1114: 7d df rcall .-262 ; 0x1010 1116: 83 77 andi r24, 0x73 ; 115 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv2.cpp:92 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv2.cpp:92 && nvm_ctrl_change(0x00) ); } @@ -4300,20 +4300,20 @@ write_bytes_flash(): 1126: c7 01 movw r24, r14 1128: b6 01 movw r22, r12 112a: bc dc rcall .-1672 ; 0xaa4 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv2.cpp:95 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv2.cpp:95 D2PRINTF(" NVM_V2_FLWR=%06lX\r\n", _dwAddr); return ( nvm_ctrl_change(0x02) /* NVM_V2_CMD_FLWR */ 112c: 88 23 and r24, r24 112e: 19 f0 breq .+6 ; 0x1136 1130: c7 01 movw r24, r14 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv2.cpp:98 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv2.cpp:98 && UPDI::send_bytes_block_slow(_dwAddr, _wLength) && (nvm_wait() & 0x73) == 0 && nvm_ctrl_change(0x00) 1132: b6 01 movw r22, r12 1134: 9e df rcall .-196 ; 0x1072 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv2.cpp:96 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv2.cpp:96 bool write_bytes_flash (uint32_t _dwAddr, size_t _wLength) { if (SYS::is_boundary_flash_page(_dwAddr)) erase_flash_page(_dwAddr); D2PRINTF(" NVM_V2_FLWR=%06lX\r\n", _dwAddr); @@ -4326,7 +4326,7 @@ write_bytes_flash(): 113c: 19 f3 breq .-58 ; 0x1104 113e: ae 01 movw r20, r28 1140: c7 01 movw r24, r14 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv2.cpp:97 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv2.cpp:97 && (nvm_wait() & 0x73) == 0 1142: b6 01 movw r22, r12 1144: 17 db rcall .-2514 ; 0x774 @@ -4335,7 +4335,7 @@ write_bytes_flash(): 114a: 62 df rcall .-316 ; 0x1010 114c: 83 77 andi r24, 0x73 ; 115 114e: d1 f6 brne .-76 ; 0x1104 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv2.cpp:172 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv2.cpp:172 else if (m_type == 0xC0 || m_type == 0xC5) { /* MTYPE_FLASH (alias) */ /* MTYPE_USERSIG (USERROW) */ @@ -4343,13 +4343,13 @@ write_bytes_flash(): } else if (m_type == 0xB0) { 1150: 8e df rcall .-228 ; 0x106e -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv2.cpp:174 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv2.cpp:174 /* MTYPE_FLASH_PAGE (PROGMEM) */ _dwAddr += PROG_START; 1152: b6 cf rjmp .-148 ; 0x10c0 write_memory(): 1154: 80 3b cpi r24, 0xB0 ; 176 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv2.cpp:81 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv2.cpp:81 ); } @@ -4369,20 +4369,20 @@ write_words_flash(): 1168: 88 23 and r24, r24 116a: 19 f0 breq .+6 ; 0x1172 116c: c7 01 movw r24, r14 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv2.cpp:84 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv2.cpp:84 D2PRINTF(" NVM_V2_FLWR=%06lX\r\n", _dwAddr); return ( nvm_ctrl_change(0x02) /* NVM_V2_CMD_FLWR */ 116e: b6 01 movw r22, r12 1170: 80 df rcall .-256 ; 0x1072 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv2.cpp:87 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv2.cpp:87 && UPDI::send_words_block(_dwAddr, _wLength) && (nvm_wait() & 0x73) == 0 && nvm_ctrl_change(0x00) 1172: 82 e0 ldi r24, 0x02 ; 2 1174: 5f df rcall .-322 ; 0x1034 1176: 88 23 and r24, r24 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv2.cpp:85 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv2.cpp:85 if (bit_is_clear(PGCONF, PGCONF_ERSE_bp) && SYS::is_boundary_flash_page(_dwAddr)) erase_flash_page(_dwAddr); D2PRINTF(" NVM_V2_FLWR=%06lX\r\n", _dwAddr); @@ -4396,7 +4396,7 @@ write_words_flash(): 1180: b6 01 movw r22, r12 1182: ed d9 rcall .-3110 ; 0x55e 1184: 88 23 and r24, r24 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv2.cpp:86 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv2.cpp:86 && (nvm_wait() & 0x73) == 0 1186: 09 f4 brne .+2 ; 0x118a 1188: bd cf rjmp .-134 ; 0x1104 @@ -4407,7 +4407,7 @@ write_words_flash(): 1192: 6d df rcall .-294 ; 0x106e 1194: 95 cf rjmp .-214 ; 0x10c0 write_memory(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv2.cpp:179 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv2.cpp:179 _dwAddr += PROG_START; return write_words_flash(_dwAddr, _wLength); } @@ -4434,7 +4434,7 @@ _ZN3NVM2V111read_memoryEv(): 000011ac : _ZN3NVM2V112erase_memoryEv(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv0.cpp:142 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv0.cpp:142 } /* Page erase will not be used if received. */ return 1; @@ -4460,7 +4460,7 @@ write_memory(): 11c6: 0f 93 push r16 11c8: 1f 93 push r17 11ca: cf 93 push r28 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv0.cpp:146 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv0.cpp:146 uint8_t m_type = packet.out.bMType; uint16_t _wAddr = packet.out.dwAddr; size_t _wLength = packet.out.dwLength; @@ -4469,7 +4469,7 @@ write_memory(): 11ce: 00 d0 rcall .+0 ; 0x11d0 11d0: 00 d0 rcall .+0 ; 0x11d2 11d2: cd b7 in r28, 0x3d ; 61 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv0.cpp:166 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv0.cpp:166 _wAddr += Device_Descriptor.UPDI.prog_base; return write_flash(_wAddr, _wLength); } @@ -4477,7 +4477,7 @@ write_memory(): /* MTYPE_SRAM */ return UPDI::send_bytes_block(_wAddr, _wLength); 11d4: de b7 in r29, 0x3e ; 62 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv0.cpp:168 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv0.cpp:168 } } 11d6: e9 99 sbic 0x1d, 1 ; 29 @@ -4498,7 +4498,7 @@ write_memory(): 11f4: bf 90 pop r11 11f6: af 90 pop r10 11f8: 7f 90 pop r7 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv0.cpp:143 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv0.cpp:143 /* Page erase will not be used if received. */ return 1; } @@ -4507,7 +4507,7 @@ write_memory(): uint8_t m_type = packet.out.bMType; 11fa: 6f 90 pop r6 11fc: 5f 90 pop r5 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv0.cpp:144 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv0.cpp:144 uint16_t _wAddr = packet.out.dwAddr; 11fe: 4f 90 pop r4 1200: 08 95 ret @@ -4515,11 +4515,11 @@ write_memory(): 1206: c0 90 c6 60 lds r12, 0x60C6 ; 0x8060c6 120a: d0 90 c7 60 lds r13, 0x60C7 ; 0x8060c7 120e: e0 90 c8 60 lds r14, 0x60C8 ; 0x8060c8 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv0.cpp:145 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv0.cpp:145 size_t _wLength = packet.out.dwLength; 1212: f0 90 c9 60 lds r15, 0x60C9 ; 0x8060c9 1216: 96 01 movw r18, r12 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv0.cpp:147 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv0.cpp:147 if (bit_is_clear(PGCONF, PGCONF_PROG_bp)) return UPDI::write_userrow(); if (m_type == 0xB2 || m_type == 0xB3) { 1218: 00 91 ca 60 lds r16, 0x60CA ; 0x8060ca @@ -4529,7 +4529,7 @@ write_memory(): 1224: 92 30 cpi r25, 0x02 ; 2 1226: 08 f0 brcs .+2 ; 0x122a 1228: 44 c0 rjmp .+136 ; 0x12b2 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv0.cpp:73 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv0.cpp:73 uint16_t data; /* NVMCTRL_REG_DATA */ uint16_t addr; /* NVMCTRL_REG_ADDR */ } fuses; @@ -4541,7 +4541,7 @@ write_memory(): 122e: 80 e6 ldi r24, 0x60 ; 96 1230: f8 2e mov r15, r24 write_fuse(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv0.cpp:71 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv0.cpp:71 bool write_fuse (uint16_t _wAddr, size_t _wLength) { struct fuse_packet_t { uint16_t data; /* NVMCTRL_REG_DATA */ @@ -4554,21 +4554,21 @@ write_fuse(): 1238: 6c 01 movw r12, r24 123a: c7 01 movw r24, r14 123c: 8e 5b subi r24, 0xBE ; 190 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv0.cpp:72 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv0.cpp:72 fuses.data = packet.out.memData[_i]; 123e: 90 46 sbci r25, 0x60 ; 96 1240: 80 17 cp r24, r16 1242: 91 07 cpc r25, r17 1244: a0 f5 brcc .+104 ; 0x12ae 1246: f7 01 movw r30, r14 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv0.cpp:73 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv0.cpp:73 fuses.addr = _wAddr + _i; 1248: 81 89 ldd r24, Z+17 ; 0x11 124a: 90 e0 ldi r25, 0x00 ; 0 124c: 89 83 std Y+1, r24 ; 0x01 124e: 9a 83 std Y+2, r25 ; 0x02 1250: c6 01 movw r24, r12 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv0.cpp:75 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv0.cpp:75 D2PRINTF(" NVM_V0_WFU=%04X<%02X\r\n", fuses.addr, fuses.data); nvm_wait(); 1252: 8e 0d add r24, r14 @@ -4580,7 +4580,7 @@ write_fuse(): 125e: 01 96 adiw r24, 0x01 ; 1 1260: 5c 01 movw r10, r24 1262: 66 e0 ldi r22, 0x06 ; 6 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:202 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:202 && clear_rsd(); } @@ -4602,7 +4602,7 @@ send_bytes_data(): 127a: 6f 0a sbc r6, r31 127c: 7f 0a sbc r7, r31 127e: 57 da rcall .-2898 ; 0x72e -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv0.cpp:78 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv0.cpp:78 if (!(UPDI::send_bytes_data(NVM_DATA, (uint8_t*)&fuses, 4) && UPDI::nvm_ctrl(0x07) /* NVM_CMD_WFU */ && (nvm_wait() & 7) == 0)) return false; @@ -4611,7 +4611,7 @@ send_bytes_data(): write_memory(): 1284: 80 e0 ldi r24, 0x00 ; 0 1286: aa cf rjmp .-172 ; 0x11dc -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:201 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:201 && send_bytes(&packet.out.memData[0], _wLength & ~1) && clear_rsd(); } @@ -4625,7 +4625,7 @@ send_bytes_data(): 128e: 20 e1 ldi r18, 0x10 ; 16 1290: 72 07 cpc r23, r18 1292: 81 05 cpc r24, r1 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv0.cpp:77 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv0.cpp:77 fuses.data = packet.out.memData[_i]; fuses.addr = _wAddr + _i; D2PRINTF(" NVM_V0_WFU=%04X<%02X\r\n", fuses.addr, fuses.data); @@ -4638,14 +4638,14 @@ write_fuse(): 1298: 87 e0 ldi r24, 0x07 ; 7 129a: 66 da rcall .-2868 ; 0x768 129c: 88 23 and r24, r24 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv0.cpp:78 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv0.cpp:78 && (nvm_wait() & 7) == 0)) return false; 129e: 91 f3 breq .-28 ; 0x1284 12a0: b7 de rcall .-658 ; 0x1010 12a2: 9f ef ldi r25, 0xFF ; 255 12a4: e9 1a sub r14, r25 12a6: f9 0a sbc r15, r25 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv0.cpp:76 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv0.cpp:76 for (size_t _i = 0; _i < _wLength; _i++) { fuses.data = packet.out.memData[_i]; fuses.addr = _wAddr + _i; @@ -4654,7 +4654,7 @@ write_fuse(): if (!(UPDI::send_bytes_data(NVM_DATA, (uint8_t*)&fuses, 4) 12a8: 87 70 andi r24, 0x07 ; 7 12aa: 39 f2 breq .-114 ; 0x123a -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv0.cpp:80 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv0.cpp:80 && UPDI::nvm_ctrl(0x07) /* NVM_CMD_WFU */ && (nvm_wait() & 7) == 0)) return false; } @@ -4662,7 +4662,7 @@ write_fuse(): 12ac: eb cf rjmp .-42 ; 0x1284 write_memory(): 12ae: 81 e0 ldi r24, 0x01 ; 1 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv0.cpp:152 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv0.cpp:152 if (m_type == 0xB2 || m_type == 0xB3) { /* MTYPE_FUSE_BITS */ /* MTYPE_LOCK_BITS */ @@ -4675,7 +4675,7 @@ write_memory(): 12b6: 9c e3 ldi r25, 0x3C ; 60 12b8: 98 0f add r25, r24 12ba: 92 30 cpi r25, 0x02 ; 2 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv0.cpp:99 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv0.cpp:99 ); } @@ -4685,14 +4685,14 @@ write_memory(): 12bc: 58 f4 brcc .+22 ; 0x12d4 write_eeprom(): 12be: a8 de rcall .-688 ; 0x1010 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv0.cpp:101 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv0.cpp:101 return ( UPDI::send_bytes_block(_wAddr, _wLength) 12c0: c7 01 movw r24, r14 12c2: b6 01 movw r22, r12 12c4: 88 27 eor r24, r24 12c6: 99 27 eor r25, r25 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv0.cpp:91 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv0.cpp:91 nvm_wait(); UPDI::nvm_ctrl(0x04); /* NVM_CMD_PBC */ } @@ -4702,7 +4702,7 @@ write_eeprom(): 12c8: a8 01 movw r20, r16 write_flash(): 12ca: f6 d9 rcall .-3092 ; 0x6b8 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv0.cpp:93 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv0.cpp:93 && UPDI::nvm_ctrl(0x03) /* NVM_CMD_ERWP */ && (nvm_wait() & 7) == 0 12cc: 81 11 cpse r24, r1 @@ -4710,7 +4710,7 @@ write_flash(): 12d0: 90 e0 ldi r25, 0x00 ; 0 12d2: 21 c0 rjmp .+66 ; 0x1316 write_memory(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv0.cpp:158 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv0.cpp:158 /* MTYPE_EEPROM */ /* MTYPE_EEPROM_XMEGA */ /* MTYPE_USERSIG (USERROW) */ @@ -4721,14 +4721,14 @@ write_memory(): 12d6: 11 f0 breq .+4 ; 0x12dc 12d8: 80 3c cpi r24, 0xC0 ; 192 12da: f9 f4 brne .+62 ; 0x131a -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv0.cpp:161 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv0.cpp:161 /* MTYPE_FLASH_PAGE (PROGMEM) */ /* MTYPE_FLASH (alias) */ _wAddr += Device_Descriptor.UPDI.prog_base; 12dc: 60 91 8e 60 lds r22, 0x608E ; 0x80608e 12e0: 70 91 8f 60 lds r23, 0x608F ; 0x80608f 12e4: c6 0e add r12, r22 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv0.cpp:85 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv0.cpp:85 return true; } @@ -4744,41 +4744,41 @@ write_flash(): 12f0: d9 db rcall .-2126 ; 0xaa4 12f2: 88 23 and r24, r24 12f4: 19 f0 breq .+6 ; 0x12fc -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv0.cpp:86 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv0.cpp:86 nvm_wait(); 12f6: 8c de rcall .-744 ; 0x1010 12f8: 84 e0 ldi r24, 0x04 ; 4 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv0.cpp:87 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv0.cpp:87 UPDI::nvm_ctrl(0x04); /* NVM_CMD_PBC */ 12fa: 36 da rcall .-2964 ; 0x768 12fc: 89 de rcall .-750 ; 0x1010 12fe: a8 01 movw r20, r16 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv0.cpp:89 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv0.cpp:89 } nvm_wait(); 1300: c7 01 movw r24, r14 1302: b6 01 movw r22, r12 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv0.cpp:91 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv0.cpp:91 return ( UPDI::send_bytes_block(_wAddr, _wLength) 1304: e2 cf rjmp .-60 ; 0x12ca 1306: 83 e0 ldi r24, 0x03 ; 3 1308: 2f da rcall .-2978 ; 0x768 130a: 88 23 and r24, r24 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv0.cpp:92 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv0.cpp:92 && UPDI::nvm_ctrl(0x03) /* NVM_CMD_ERWP */ 130c: 09 f3 breq .-62 ; 0x12d0 130e: 80 de rcall .-768 ; 0x1010 1310: 87 70 andi r24, 0x07 ; 7 1312: 91 e0 ldi r25, 0x01 ; 1 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv0.cpp:93 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv0.cpp:93 && (nvm_wait() & 7) == 0 1314: e9 f6 brne .-70 ; 0x12d0 write_memory(): 1316: 89 2f mov r24, r25 1318: 61 cf rjmp .-318 ; 0x11dc 131a: c7 01 movw r24, r14 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv0.cpp:162 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv0.cpp:162 } else if (m_type == 0xB0 || m_type == 0xC0) { /* MTYPE_FLASH_PAGE (PROGMEM) */ @@ -4786,7 +4786,7 @@ write_memory(): _wAddr += Device_Descriptor.UPDI.prog_base; return write_flash(_wAddr, _wLength); 131c: b6 01 movw r22, r12 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv0.cpp:166 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv0.cpp:166 } else { /* MTYPE_SRAM */ @@ -4801,7 +4801,7 @@ write_memory(): _ZN3USB12setup_deviceEb.part.2(): 1328: cf 93 push r28 132a: df 93 push r29 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:234 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:234 EP_MEM.cci_header.wIndex = 1; /* Interface#1 */ EP_MEM.cci_header.wLength = 2; EP_MEM.cci_wValue = _state; @@ -4810,48 +4810,48 @@ _ZN3USB12setup_deviceEb.part.2(): void setup_device (bool _force) { 132c: c0 e0 ldi r28, 0x00 ; 0 132e: dc e0 ldi r29, 0x0C ; 12 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:238 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:238 if (_led_mode != 3) SYS::LED_Flash(); USB0_ADDR = 0; if (USB0_CTRLA || _force) { USB0_CTRLA = 0; 1330: 18 82 st Y, r1 1332: 10 92 04 0c sts 0x0C04, r1 ; 0x800c04 <__TEXT_REGION_LENGTH__+0x7f0c04> -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:239 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:239 USB0_FIFOWP = 0; 1336: 8e e2 ldi r24, 0x2E ; 46 1338: 94 e6 ldi r25, 0x64 ; 100 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:240 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:240 USB0_EPPTR = (uint16_t)&EP_TABLE.EP; 133a: 80 93 06 0c sts 0x0C06, r24 ; 0x800c06 <__TEXT_REGION_LENGTH__+0x7f0c06> 133e: 90 93 07 0c sts 0x0C07, r25 ; 0x800c07 <__TEXT_REGION_LENGTH__+0x7f0c07> 1342: 81 e0 ldi r24, 0x01 ; 1 1344: 80 93 01 0c sts 0x0C01, r24 ; 0x800c01 <__TEXT_REGION_LENGTH__+0x7f0c01> -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:241 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:241 USB0_CTRLB = USB_ATTACH_bm; 1348: 1c ba out 0x1c, r1 ; 28 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:243 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:243 GPCONF = 0; PGCONF = 0; 134a: 1d ba out 0x1d, r1 ; 29 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:244 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:244 RXSTAT = 0; 134c: 1e ba out 0x1e, r1 ; 30 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:245 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:245 _send_break = 0; 134e: 10 92 23 64 sts 0x6423, r1 ; 0x806423 <_send_break> 1352: 10 92 24 64 sts 0x6424, r1 ; 0x806424 <_send_break+0x1> -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:246 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:246 _send_count = 0; 1356: 10 92 22 64 sts 0x6422, r1 ; 0x806422 <_send_count> -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:248 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:248 _recv_count = 0; _set_config = 0; 135a: 10 92 21 64 sts 0x6421, r1 ; 0x806421 <_recv_count> -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:249 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:249 _sof_count = 0; 135e: 10 92 20 64 sts 0x6420, r1 ; 0x806420 <_set_config> -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:250 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:250 memcpy_P(&EP_TABLE, &ep_init, sizeof(EP_TABLE_t)); 1362: 10 92 1f 64 sts 0x641F, r1 ; 0x80641f <_sof_count> 1366: 4a e4 ldi r20, 0x4A ; 74 @@ -4860,44 +4860,44 @@ _ZN3USB12setup_deviceEb.part.2(): 136c: 71 e0 ldi r23, 0x01 ; 1 136e: 86 e2 ldi r24, 0x26 ; 38 1370: 94 e6 ldi r25, 0x64 ; 100 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:225 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:225 if (_size) memcpy_P(_buffer, _pgmem, _size); return _size; } void set_cci_data (uint16_t _state) { _set_serial_state = _state; - 1372: 0e 94 5b 15 call 0x2ab6 ; 0x2ab6 + 1372: 0e 94 59 15 call 0x2ab2 ; 0x2ab2 set_cci_data(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:226 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:226 EP_MEM.cci_header.bmRequestType = 0xA1; /* REQTYPE_DIRECTION | REQTYPE_CLASS | RECIPIENT_INTERFACE */ 1376: 10 92 1e 64 sts 0x641E, r1 ; 0x80641e <_set_serial_state> 137a: e6 e0 ldi r30, 0x06 ; 6 137c: f3 e6 ldi r31, 0x63 ; 99 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:227 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:227 EP_MEM.cci_header.bRequest = 0x20; /* CDC_REQ_SerialState */ 137e: 81 ea ldi r24, 0xA1 ; 161 1380: 80 87 std Z+8, r24 ; 0x08 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:228 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:228 EP_MEM.cci_header.wValue = 0; 1382: 80 e2 ldi r24, 0x20 ; 32 1384: 81 87 std Z+9, r24 ; 0x09 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:229 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:229 EP_MEM.cci_header.wIndex = 1; /* Interface#1 */ 1386: 12 86 std Z+10, r1 ; 0x0a 1388: 13 86 std Z+11, r1 ; 0x0b 138a: 81 e0 ldi r24, 0x01 ; 1 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:230 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:230 EP_MEM.cci_header.wLength = 2; 138c: 90 e0 ldi r25, 0x00 ; 0 138e: 84 87 std Z+12, r24 ; 0x0c 1390: 95 87 std Z+13, r25 ; 0x0d 1392: 82 e0 ldi r24, 0x02 ; 2 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:231 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:231 EP_MEM.cci_wValue = _state; 1394: 90 e0 ldi r25, 0x00 ; 0 1396: 86 87 std Z+14, r24 ; 0x0e -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:252 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:252 _recv_count = 0; _set_config = 0; _sof_count = 0; @@ -4906,7 +4906,7 @@ set_cci_data(): USB0_CTRLA = USB_ENABLE_bm | (USB_ENDPOINTS_MAX - 1); 1398: 97 87 std Z+15, r25 ; 0x0f 139a: 10 8a std Z+16, r1 ; 0x10 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:254 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:254 } } 139c: 11 8a std Z+17, r1 ; 0x11 @@ -4926,7 +4926,7 @@ void delay_micros (uint32_t _us) { 000013a8 : delay_micros(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/usart.cpp:55 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usart.cpp:55 /*** Stop the VCP and release the ports in use. ***/ void disable_vcp (void) { D1PRINTF(" UART=OFF\r\n"); @@ -4942,30 +4942,30 @@ static __inline__ uint8_t __iCliRetVal(void) { cli(); 13aa: 8a 95 dec r24 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usart.cpp:58 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usart.cpp:58 /* Simply clearing the CTRLB does not disable the USART completely. */ /* This errata is not documented for the AVR-DU, but is the same as for tinyAVR-0 etc. */ USART0_CTRLB = 0; 13ac: f1 f7 brne .-4 ; 0x13aa -/Users/askn/Collaborator/UPDI4AVR-USB/src/usart.cpp:59 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usart.cpp:59 USART0_CTRLA = 0; 13ae: 00 c0 rjmp .+0 ; 0x13b0 disable_vcp(): 13b0: 8f b7 in r24, 0x3f ; 63 __iCliRetVal(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/usart.cpp:60 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usart.cpp:60 RXSTAT = 0; 13b2: f8 94 cli disable_vcp(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/usart.cpp:61 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usart.cpp:61 RXDATA = 0; 13b4: 10 92 06 08 sts 0x0806, r1 ; 0x800806 <__TEXT_REGION_LENGTH__+0x7f0806> -/Users/askn/Collaborator/UPDI4AVR-USB/src/usart.cpp:63 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usart.cpp:63 PGCONF = 0; PORTMUX_USARTROUTEA = PORTMUX_USART_VCP; 13b8: 10 92 05 08 sts 0x0805, r1 ; 0x800805 <__TEXT_REGION_LENGTH__+0x7f0805> 13bc: 1e ba out 0x1e, r1 ; 30 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usart.cpp:64 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usart.cpp:64 bit_clear(GPCONF, GPCONF_VCP_bp); 13be: 1f ba out 0x1f, r1 ; 31 /Users/askn/Library/Arduino15/packages/MultiX-Zinnia/tools/avr-gcc/7.3.0-avr8-gnu-toolchain/avr/include/util/atomic.h:70 @@ -4976,12 +4976,12 @@ static __inline__ void __iRestore(const uint8_t *__s) { SREG = *__s; 13c0: 1d ba out 0x1d, r1 ; 29 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usart.cpp:66 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usart.cpp:66 } pinModeMacro(PIN_PG_TDAT, INPUT_PULLUP); /* open-drain */ 13c2: 92 e1 ldi r25, 0x12 ; 18 13c4: 90 93 e2 05 sts 0x05E2, r25 ; 0x8005e2 <__TEXT_REGION_LENGTH__+0x7f05e2> -/Users/askn/Collaborator/UPDI4AVR-USB/src/usart.cpp:70 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usart.cpp:70 /* TXD changes to INPUT when USART is disabled. */ /* Force OUTPUT to maintain BREAK state. */ #ifdef CONFIG_VCP_TXD_ODM @@ -4991,45 +4991,45 @@ __iRestore(): 13ca: 8f bf out 0x3f, r24 ; 63 disable_vcp(): 13cc: 00 98 cbi 0x00, 0 ; 0 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usart.cpp:71 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usart.cpp:71 openDrainWriteMacro(PIN_VCP_TXD, HIGH); 13ce: 88 e0 ldi r24, 0x08 ; 8 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usart.cpp:75 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usart.cpp:75 #else pinModeMacro(PIN_VCP_TXD, OUTPUT); /* push-pull : There are problems when using TPI. */ #endif } 13d0: 80 93 10 04 sts 0x0410, r24 ; 0x800410 <__TEXT_REGION_LENGTH__+0x7f0410> -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:198 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:198 void LED_TCB1 (uint8_t _mode, uint16_t _ccmp) { if (_led_mode != _mode) { 13d4: 02 98 cbi 0x00, 2 ; 0 13d6: 80 93 12 04 sts 0x0412, r24 ; 0x800412 <__TEXT_REGION_LENGTH__+0x7f0412> -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:199 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:199 TCA0_SPLIT_CTRLA = 0; 13da: 02 98 cbi 0x00, 2 ; 0 -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:200 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:200 TCB1_CNTL = 0; 13dc: 08 95 ret 000013de : LED_TCB1(): 13de: 80 91 7d 60 lds r24, 0x607D ; 0x80607d <_led_mode> -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:201 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:201 TCB1_CCMP = _ccmp; 13e2: 84 30 cpi r24, 0x04 ; 4 13e4: 81 f0 breq .+32 ; 0x1406 13e6: 10 92 00 0a sts 0x0A00, r1 ; 0x800a00 <__TEXT_REGION_LENGTH__+0x7f0a00> -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:202 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:202 TCB1_CTRLA = TCB_RUNSTDBY_bm | TCB_ENABLE_bm | TCB_CLKSEL_EVENT_gc; 13ea: 10 92 1a 0b sts 0x0B1A, r1 ; 0x800b1a <__TEXT_REGION_LENGTH__+0x7f0b1a> -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:203 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:203 _led_mode = _mode; 13ee: 82 e2 ldi r24, 0x22 ; 34 13f0: 91 e1 ldi r25, 0x11 ; 17 13f2: 80 93 1c 0b sts 0x0B1C, r24 ; 0x800b1c <__TEXT_REGION_LENGTH__+0x7f0b1c> -/Users/askn/Collaborator/UPDI4AVR-USB/src/usart.cpp:26 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usart.cpp:26 namespace USART { @@ -5037,19 +5037,19 @@ namespace USART { SYS::LED_Fast(); disable_vcp(); 13f6: 90 93 1d 0b sts 0x0B1D, r25 ; 0x800b1d <__TEXT_REGION_LENGTH__+0x7f0b1d> -/Users/askn/Collaborator/UPDI4AVR-USB/src/usart.cpp:27 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usart.cpp:27 pinModeMacro(PIN_VCP_RXD, INPUT_PULLUP); /* USART0_DEFAULT or USART0_ALT2 */ 13fa: 8f e4 ldi r24, 0x4F ; 79 13fc: 80 93 10 0b sts 0x0B10, r24 ; 0x800b10 <__TEXT_REGION_LENGTH__+0x7f0b10> -/Users/askn/Collaborator/UPDI4AVR-USB/src/usart.cpp:28 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usart.cpp:28 pinModeMacro(PIN_PG_TRST, INPUT_PULLUP); /* USART0_ALT3 or USART0_DEFAULT */ 1400: 84 e0 ldi r24, 0x04 ; 4 1402: 80 93 7d 60 sts 0x607D, r24 ; 0x80607d <_led_mode> setup(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/usart.cpp:29 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usart.cpp:29 } 1406: d0 df rcall .-96 ; 0x13a8 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:391 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:391 nop(); openDrainWriteMacro(PIN_PG_TRST, HIGH); return _result; @@ -5057,12 +5057,12 @@ setup(): size_t enter_progmode (void) { 1408: 03 98 cbi 0x00, 3 ; 0 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:392 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:392 if (bit_is_set(PGCONF, PGCONF_PROG_bp)) return 1; 140a: 88 e0 ldi r24, 0x08 ; 8 140c: 80 93 13 04 sts 0x0413, r24 ; 0x800413 <__TEXT_REGION_LENGTH__+0x7f0413> 1410: 01 98 cbi 0x00, 1 ; 0 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:393 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:393 if (!set_nvmprog_key()) return 0; 1412: 80 93 11 04 sts 0x0411, r24 ; 0x800411 <__TEXT_REGION_LENGTH__+0x7f0411> 1416: 08 95 ret @@ -5072,7 +5072,7 @@ enter_progmode(): 1418: cf 93 push r28 141a: 8d b3 in r24, 0x1d ; 29 141c: c8 2f mov r28, r24 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:406 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:406 sys_status(); } while (bit_is_clear(RXDATA, 3)); /* wait set PROGSTART */ D1PRINTF(" PROGSTART=%02X\r\n", RXDATA); @@ -5080,7 +5080,7 @@ enter_progmode(): return (*Command_Table.prog_init)(); } 141e: c2 70 andi r28, 0x02 ; 2 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:399 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:399 uint8_t _count = 0; do { /* Do not wait for the global timeout to ensure that LOCKSTAT cannot */ @@ -5095,30 +5095,30 @@ enter_progmode(): 1428: 81 11 cpse r24, r1 142a: 06 c0 rjmp .+12 ; 0x1438 142c: 90 e0 ldi r25, 0x00 ; 0 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:401 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:401 delay_micros(50); sys_status(); 142e: 80 e0 ldi r24, 0x00 ; 0 1430: cf 91 pop r28 1432: 08 95 ret -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:402 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:402 } while (bit_is_clear(RXDATA, 3)); /* wait set PROGSTART */ 1434: c1 30 cpi r28, 0x01 ; 1 1436: d1 f3 breq .-12 ; 0x142c delay_micros(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:404 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:404 D1PRINTF(" PROGSTART=%02X\r\n", RXDATA); bit_set(PGCONF, PGCONF_PROG_bp); 1438: 89 ef ldi r24, 0xF9 ; 249 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:405 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:405 return (*Command_Table.prog_init)(); 143a: 90 e0 ldi r25, 0x00 ; 0 143c: 01 97 sbiw r24, 0x01 ; 1 143e: f1 f7 brne .-4 ; 0x143c -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:406 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:406 } 1440: 00 c0 rjmp .+0 ; 0x1442 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:405 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:405 delay_micros(50); sys_status(); } while (bit_is_clear(RXDATA, 3)); /* wait set PROGSTART */ @@ -5127,7 +5127,7 @@ delay_micros(): return (*Command_Table.prog_init)(); 1442: 00 00 nop enter_progmode(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:392 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:392 openDrainWriteMacro(PIN_PG_TRST, HIGH); return _result; } @@ -5137,7 +5137,7 @@ enter_progmode(): 1444: 45 d8 rcall .-3958 ; 0x4d0 1446: c1 50 subi r28, 0x01 ; 1 1448: fb 9b sbis 0x1f, 3 ; 31 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:252 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:252 D1PRINTF(" KEY=%02X\r\n", RXDATA); return sys_reset(false); } @@ -5147,7 +5147,7 @@ enter_progmode(): 144a: f4 cf rjmp .-24 ; 0x1434 144c: e9 9a sbi 0x1d, 1 ; 29 144e: e0 91 fe 62 lds r30, 0x62FE ; 0x8062fe -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:235 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:235 D1PRINTF(" KEY=%02X\r\n", RXDATA); return _reset ? sys_reset(false) : true; } @@ -5156,7 +5156,7 @@ enter_progmode(): if (bit_is_clear(PGCONF, PGCONF_PROG_bp)) set_nvmprog_key(false); 1452: f0 91 ff 62 lds r31, 0x62FF ; 0x8062ff 1456: cf 91 pop r28 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:237 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:237 D1PRINTF(" ERASE_KEY\r\n"); if (!send_bytes(erase_key, sizeof(erase_key))) return false; 1458: 09 94 ijmp @@ -5170,7 +5170,7 @@ chip_erase(): 1462: 80 e0 ldi r24, 0x00 ; 0 1464: 0e 94 de 01 call 0x3bc ; 0x3bc set_erase_key(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:268 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:268 do { sys_status(); } while(bit_is_clear(RXDATA, 3)); /* wait set PROGSTART */ } D1PRINTF(" PROGSTART=%02X\r\n", RXDATA); @@ -5178,7 +5178,7 @@ set_erase_key(): bit_set(PGCONF, PGCONF_PROG_bp); return (*Command_Table.prog_init)(); 1468: e9 99 sbic 0x1d, 1 ; 29 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:238 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:238 bool set_erase_key (void) { if (bit_is_clear(PGCONF, PGCONF_PROG_bp)) set_nvmprog_key(false); @@ -5189,7 +5189,7 @@ set_erase_key(): 146c: 80 e0 ldi r24, 0x00 ; 0 146e: 42 d8 rcall .-3964 ; 0x4f4 1470: 6a e0 ldi r22, 0x0A ; 10 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:130 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:130 const static uint8_t _reset[] = { 0x55, 0xC8, 0x59, /* SYSRST */ 0x55, 0xC8, 0x00, /* SYSRUN */ @@ -5203,7 +5203,7 @@ set_erase_key(): 147a: 81 11 cpse r24, r1 147c: 02 c0 rjmp .+4 ; 0x1482 chip_erase(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:253 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:253 return sys_reset(false); } @@ -5230,7 +5230,7 @@ sys_reset(): 148e: 90 e6 ldi r25, 0x60 ; 96 1490: 0c d8 rcall .-4072 ; 0x4aa chip_erase(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:255 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:255 delay_millis(200); USART::drain(); 1492: 88 23 and r24, r24 @@ -5238,55 +5238,55 @@ chip_erase(): delay_millis(): 1496: 2f ef ldi r18, 0xFF ; 255 1498: 84 e3 ldi r24, 0x34 ; 52 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:256 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:256 do { sys_status(); } while(bit_is_set(RXDATA, 5)); /* wait clear RSTSYS */ 149a: 9c e0 ldi r25, 0x0C ; 12 149c: 21 50 subi r18, 0x01 ; 1 149e: 80 40 sbci r24, 0x00 ; 0 14a0: 90 40 sbci r25, 0x00 ; 0 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:257 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:257 do { sys_status(); } while(bit_is_set(RXDATA, 0)); /* wait clear LOCKSTATUS */ 14a2: e1 f7 brne .-8 ; 0x149c 14a4: 00 c0 rjmp .+0 ; 0x14a6 14a6: 00 00 nop chip_erase(): 14a8: 90 e0 ldi r25, 0x00 ; 0 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:259 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:259 D1PRINTF(" \r\n", RXDATA); do { key_status(); } while(bit_is_set(RXDATA, 3)); /* wait clear CHIPERASE */ 14aa: 80 e0 ldi r24, 0x00 ; 0 14ac: 0e 94 de 01 call 0x3bc ; 0x3bc 14b0: 0f d8 rcall .-4066 ; 0x4d0 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:260 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:260 sys_status(); 14b2: fd 99 sbic 0x1f, 5 ; 31 14b4: fd cf rjmp .-6 ; 0x14b0 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:261 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:261 if (bit_is_clear(RXDATA, 3)) { 14b6: 0c d8 rcall .-4072 ; 0x4d0 14b8: f8 99 sbic 0x1f, 0 ; 31 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:262 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:262 if (!set_nvmprog_key()) return false; 14ba: fd cf rjmp .-6 ; 0x14b6 14bc: 12 d8 rcall .-4060 ; 0x4e2 14be: fb 99 sbic 0x1f, 3 ; 31 14c0: fd cf rjmp .-6 ; 0x14bc 14c2: 06 d8 rcall .-4084 ; 0x4d0 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:263 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:263 do { sys_status(); } while(bit_is_clear(RXDATA, 3)); /* wait set PROGSTART */ 14c4: fb 99 sbic 0x1f, 3 ; 31 14c6: 08 c0 rjmp .+16 ; 0x14d8 14c8: 81 e0 ldi r24, 0x01 ; 1 14ca: 14 d8 rcall .-4056 ; 0x4f4 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:266 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:266 } D1PRINTF(" PROGSTART=%02X\r\n", RXDATA); bit_set(PGCONF, PGCONF_ERSE_bp); 14cc: 88 23 and r24, r24 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:267 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:267 bit_set(PGCONF, PGCONF_PROG_bp); 14ce: b9 f2 breq .-82 ; 0x147e -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:268 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:268 return (*Command_Table.prog_init)(); 14d0: 0e 94 68 02 call 0x4d0 ; 0x4d0 14d4: fb 9b sbis 0x1f, 3 ; 31 @@ -5294,10 +5294,10 @@ chip_erase(): 14d8: ea 9a sbi 0x1d, 2 ; 29 14da: e9 9a sbi 0x1d, 1 ; 29 14dc: e0 91 fe 62 lds r30, 0x62FE ; 0x8062fe -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:269 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:269 } 14e0: f0 91 ff 62 lds r31, 0x62FF ; 0x8062ff -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv4.cpp:140 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv4.cpp:140 } return 0; } @@ -5306,11 +5306,11 @@ chip_erase(): uint8_t e_type = packet.out.bEType; 14e4: 09 95 icall 14e6: 21 e0 ldi r18, 0x01 ; 1 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv4.cpp:141 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv4.cpp:141 if (e_type == 0x00) { 14e8: 89 2b or r24, r25 14ea: 49 f2 breq .-110 ; 0x147e -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv4.cpp:143 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv4.cpp:143 /* XMEGA_ERASE_CHIP */ return UPDI::chip_erase(); 14ec: 82 2f mov r24, r18 @@ -5318,7 +5318,7 @@ chip_erase(): 000014f0 : erase_memory(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv4.cpp:150 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv4.cpp:150 else { /* NOTE: AVRDUDE<=7.3 may pass the wrong M_TYPE. */ /* For safety, only USERROW and BOOTROW are allowed to erase pages. */ @@ -5326,7 +5326,7 @@ erase_memory(): /* XMEGA_ERASE_USERSIG */ return erase_flash_page(packet.out.dwAddr); 14f0: 80 91 c5 60 lds r24, 0x60C5 ; 0x8060c5 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv4.cpp:148 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv4.cpp:148 return UPDI::chip_erase(); } else { @@ -5335,7 +5335,7 @@ erase_memory(): if (e_type == 0x07) { 14f4: 81 11 cpse r24, r1 14f6: 03 c0 rjmp .+6 ; 0x14fe -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv4.cpp:150 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv4.cpp:150 /* XMEGA_ERASE_USERSIG */ return erase_flash_page(packet.out.dwAddr); 14f8: b3 df rcall .-154 ; 0x1460 @@ -5346,17 +5346,17 @@ erase_memory(): 1502: 60 91 c6 60 lds r22, 0x60C6 ; 0x8060c6 1506: 70 91 c7 60 lds r23, 0x60C7 ; 0x8060c7 150a: 80 91 c8 60 lds r24, 0x60C8 ; 0x8060c8 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv4.cpp:155 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv4.cpp:155 } } /* Page erase will not be used if received. */ /* Instead, page erase is determined by the is_boundary_flash_page function. */ return 1; 150e: 90 91 c9 60 lds r25, 0x60C9 ; 0x8060c9 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv4.cpp:156 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv4.cpp:156 } 1512: 97 dc rcall .-1746 ; 0xe42 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv2.cpp:137 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv2.cpp:137 } return 0; } @@ -5365,17 +5365,17 @@ erase_memory(): uint8_t e_type = packet.out.bEType; 1514: f2 cf rjmp .-28 ; 0x14fa 1516: 81 e0 ldi r24, 0x01 ; 1 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv2.cpp:138 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv2.cpp:138 if (e_type == 0x00) { 1518: 90 e0 ldi r25, 0x00 ; 0 151a: 08 95 ret 0000151c : -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv2.cpp:140 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv2.cpp:140 /* XMEGA_ERASE_CHIP */ return UPDI::chip_erase(); 151c: 80 91 c5 60 lds r24, 0x60C5 ; 0x8060c5 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv2.cpp:147 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv2.cpp:147 else { /* NOTE: AVRDUDE<=7.3 may pass the wrong M_TYPE. */ /* For safety, only USERROW and BOOTROW are allowed to erase pages. */ @@ -5384,7 +5384,7 @@ erase_memory(): return erase_flash_page(packet.out.dwAddr); 1520: 81 11 cpse r24, r1 1522: 03 c0 rjmp .+6 ; 0x152a -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv2.cpp:145 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv2.cpp:145 return UPDI::chip_erase(); } else { @@ -5393,7 +5393,7 @@ erase_memory(): if (e_type == 0x07) { 1524: 9d df rcall .-198 ; 0x1460 1526: 90 e0 ldi r25, 0x00 ; 0 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv2.cpp:147 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv2.cpp:147 /* XMEGA_ERASE_USERSIG */ return erase_flash_page(packet.out.dwAddr); 1528: 08 95 ret @@ -5403,7 +5403,7 @@ erase_memory(): 1532: 70 91 c7 60 lds r23, 0x60C7 ; 0x8060c7 1536: 80 91 c8 60 lds r24, 0x60C8 ; 0x8060c8 153a: 90 91 c9 60 lds r25, 0x60C9 ; 0x8060c9 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv2.cpp:152 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv2.cpp:152 } } /* Page erase will not be used if received. */ @@ -5411,10 +5411,10 @@ erase_memory(): return 1; 153e: 99 dd rcall .-1230 ; 0x1072 1540: f2 cf rjmp .-28 ; 0x1526 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv2.cpp:153 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv2.cpp:153 } 1542: 81 e0 ldi r24, 0x01 ; 1 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv0.cpp:134 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv0.cpp:134 return 0; } @@ -5426,20 +5426,20 @@ erase_memory(): 00001548 : 1548: 80 91 c5 60 lds r24, 0x60C5 ; 0x8060c5 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv0.cpp:136 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv0.cpp:136 /* XMEGA_ERASE_CHIP */ return UPDI::chip_erase(); 154c: 81 11 cpse r24, r1 154e: 03 c0 rjmp .+6 ; 0x1556 1550: 87 df rcall .-242 ; 0x1460 1552: 90 e0 ldi r25, 0x00 ; 0 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv0.cpp:139 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv0.cpp:139 } /* Page erase will not be used if received. */ return 1; 1554: 08 95 ret 1556: 81 e0 ldi r24, 0x01 ; 1 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv0.cpp:140 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv0.cpp:140 } 1558: 90 e0 ldi r25, 0x00 ; 0 155a: 08 95 ret @@ -5455,7 +5455,7 @@ _ZN3NVM2V312erase_memoryEv(): 00001560 : connect(): 1560: ef 92 push r14 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:211 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:211 return nvm_ctrl(0x00); } @@ -5471,11 +5471,11 @@ connect(): 156e: cd b7 in r28, 0x3d ; 61 1570: de b7 in r29, 0x3e ; 62 1572: 80 e8 ldi r24, 0x80 ; 128 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:212 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:212 PGCONF = PGCONF_FAIL_bm; 1574: 8d bb out 0x1d, r24 ; 29 1576: 02 9a sbi 0x00, 2 ; 0 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:222 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:222 /* STUB */ } @@ -5484,7 +5484,7 @@ connect(): openDrainWriteMacro(PIN_VCP_TXD, LOW); 1578: 01 9a sbi 0x00, 1 ; 0 delay_millis(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:223 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:223 openDrainWriteMacro(PIN_PG_TRST, LOW); 157a: 2f ef ldi r18, 0xFF ; 255 /Users/askn/Library/Arduino15/packages/MultiX-Zinnia/hardware/modernAVR/0.2.14/cores/modernAVR/api/delay_busywait.h:42 @@ -5498,7 +5498,7 @@ delay_millis(): 158a: 00 00 nop set_sstcs(): 158c: 82 ec ldi r24, 0xC2 ; 194 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:69 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:69 bool get_sldcs (const uint8_t _addr) { return (send(0x80 | _addr) && recv()); } @@ -5511,7 +5511,7 @@ set_sstcs(): connect(): 1594: 90 e0 ldi r25, 0x00 ; 0 1596: 80 e0 ldi r24, 0x00 ; 0 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:246 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:246 while (!(get_sldcs(0x00) && RXDATA == 0x02)) { /* get TPISR */ D1PRINTF(" SKEY\r\n"); @@ -5522,7 +5522,7 @@ connect(): set_sstcs(): 159a: 85 e0 ldi r24, 0x05 ; 5 159c: 20 da rcall .-3008 ; 0x9de -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:69 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:69 bool get_sldcs (const uint8_t _addr) { return (send(0x80 | _addr) && recv()); } @@ -5535,7 +5535,7 @@ get_sldcs(): 15a2: 8f e8 ldi r24, 0x8F ; 143 15a4: 1c da rcall .-3016 ; 0x9de 15a6: 88 23 and r24, r24 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:65 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:65 } /*** TPI control and CSS area command ***/ @@ -5552,7 +5552,7 @@ connect(): 15b4: b1 f7 brne .-20 ; 0x15a2 15b6: e8 9a sbi 0x1d, 0 ; 29 15b8: 89 e3 ldi r24, 0x39 ; 57 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:236 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:236 /*** Set TPIPCR Guard Time : 4 clock ****/ if (!set_sstcs(0x02, 0x05)) return 0; D1PRINTF(" TPIPCR<05\r\n"); @@ -5563,14 +5563,14 @@ connect(): 15bc: 80 e6 ldi r24, 0x60 ; 96 15be: f8 2e mov r15, r24 get_sldcs(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:238 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:238 D1PRINTF(" TPIIR>%02X\r\n", RXDATA); bit_set(PGCONF, PGCONF_UPDI_bp); 15c0: 80 e8 ldi r24, 0x80 ; 128 15c2: 0d da rcall .-3046 ; 0x9de 15c4: 88 23 and r24, r24 15c6: 11 f1 breq .+68 ; 0x160c -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:65 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:65 } /*** TPI control and CSS area command ***/ @@ -5587,7 +5587,7 @@ connect(): 15d4: 19 82 std Y+1, r1 ; 0x01 15d6: 1a 82 std Y+2, r1 ; 0x02 15d8: 81 ec ldi r24, 0xC1 ; 193 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:242 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:242 D1PRINTF(" TPIIR>%02X\r\n", RXDATA); bit_set(PGCONF, PGCONF_UPDI_bp); @@ -5597,7 +5597,7 @@ connect(): 15da: 9f e3 ldi r25, 0x3F ; 63 15dc: 3b da rcall .-2954 ; 0xa54 15de: 88 23 and r24, r24 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:265 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:265 * Other is written in 1 word chunks. * * The original PICKit4 probably does the same thing, @@ -5606,7 +5606,7 @@ connect(): uint16_t _signature = 0; 15e0: 99 f0 breq .+38 ; 0x1608 15e2: 32 da rcall .-2972 ; 0xa48 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:266 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:266 if (set_sstpr(0x3FC1) && get_sld()) { 15e4: 88 23 and r24, r24 15e6: 81 f0 breq .+32 ; 0x1608 @@ -5618,11 +5618,11 @@ connect(): 15f2: 8f b3 in r24, 0x1f ; 31 15f4: 89 83 std Y+1, r24 ; 0x01 15f6: 89 81 ldd r24, Y+1 ; 0x01 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:267 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:267 _CAPS16(_signature)->bytes[1] = RXDATA; 15f8: 9a 81 ldd r25, Y+2 ; 0x02 15fa: 8e 30 cpi r24, 0x0E ; 14 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:268 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:268 if (get_sld()) _CAPS16(_signature)->bytes[0] = RXDATA; 15fc: f2 e9 ldi r31, 0x92 ; 146 15fe: 9f 07 cpc r25, r31 @@ -5630,7 +5630,7 @@ connect(): 1602: 8f 30 cpi r24, 0x0F ; 15 1604: 91 49 sbci r25, 0x91 ; 145 1606: 09 f1 breq .+66 ; 0x164a -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:270 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:270 } _tpi_chunks = _signature == 0x920E ? 8 /* ATtiny40 */ 1608: 82 e0 ldi r24, 0x02 ; 2 @@ -5646,7 +5646,7 @@ connect(): 161c: bb cf rjmp .-138 ; 0x1594 161e: 84 e0 ldi r24, 0x04 ; 4 1620: 90 e0 ldi r25, 0x00 ; 0 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:245 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:245 /*** Activate NVMPROG mode ***/ while (!(get_sldcs(0x00) && RXDATA == 0x02)) { /* get TPISR */ @@ -5660,7 +5660,7 @@ connect(): 162a: ca cf rjmp .-108 ; 0x15c0 162c: 88 e0 ldi r24, 0x08 ; 8 162e: 80 93 8d 60 sts 0x608D, r24 ; 0x80608d <_tpi_chunks> -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:248 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:248 return 0; } idle_clock(4); @@ -5668,7 +5668,7 @@ connect(): 1634: 81 e0 ldi r24, 0x01 ; 1 1636: 90 e0 ldi r25, 0x00 ; 0 1638: 0f 90 pop r0 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:244 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:244 /*** Activate NVMPROG mode ***/ @@ -5679,7 +5679,7 @@ connect(): 163c: df 91 pop r29 163e: cf 91 pop r28 1640: 1f 91 pop r17 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:270 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:270 uint16_t _signature = 0; if (set_sstpr(0x3FC1) && get_sld()) { _CAPS16(_signature)->bytes[1] = RXDATA; @@ -5689,20 +5689,20 @@ connect(): 1642: 0f 91 pop r16 1644: ff 90 pop r15 1646: ef 90 pop r14 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:274 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:274 : _signature == 0x910F ? 4 /* ATtiny20 */ : 2; /* Othres */ D1PRINTF(" SIG>%04X:%02X\r\n", _signature, _tpi_chunks); bit_set(PGCONF, PGCONF_PROG_bp); 1648: 08 95 ret -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:275 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:275 return 1; 164a: 84 e0 ldi r24, 0x04 ; 4 164c: f0 cf rjmp .-32 ; 0x162e 0000164e : disconnect(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:276 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:276 } 164e: 90 e0 ldi r25, 0x00 ; 0 1650: 80 e0 ldi r24, 0x00 ; 0 @@ -5714,7 +5714,7 @@ sys_reset(): 165c: 90 e6 ldi r25, 0x60 ; 96 165e: 0e 94 55 02 call 0x4aa ; 0x4aa disconnect(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:270 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:270 uint16_t _signature = 0; if (set_sstpr(0x3FC1) && get_sld()) { _CAPS16(_signature)->bytes[1] = RXDATA; @@ -5722,7 +5722,7 @@ disconnect(): } _tpi_chunks = _signature == 0x920E ? 8 /* ATtiny40 */ 1662: 1d ba out 0x1d, r1 ; 29 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:381 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:381 } return 0; } @@ -5733,7 +5733,7 @@ disconnect(): 1666: 00 00 nop 1668: 01 98 cbi 0x00, 1 ; 0 166a: 90 e0 ldi r25, 0x00 ; 0 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:130 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:130 const static uint8_t _reset[] = { 0x55, 0xC8, 0x59, /* SYSRST */ 0x55, 0xC8, 0x00, /* SYSRUN */ @@ -5748,7 +5748,7 @@ connect(): 1670: 8d bb out 0x1d, r24 ; 29 1672: 10 92 de 62 sts 0x62DE, r1 ; 0x8062de <_sib> 1676: 8f ef ldi r24, 0xFF ; 255 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:383 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:383 } size_t disconnect (void) { @@ -5756,19 +5756,19 @@ connect(): bool _result = sys_reset(true); PGCONF = 0; 1678: 9f ef ldi r25, 0xFF ; 255 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:385 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:385 D1PRINTF(" \r\n", _result); openDrainWriteMacro(PIN_PG_TRST, LOW); 167a: dc 01 movw r26, r24 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:386 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:386 nop(); 167c: 80 93 da 62 sts 0x62DA, r24 ; 0x8062da <_before_page> -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:389 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:389 openDrainWriteMacro(PIN_PG_TRST, HIGH); return _result; } 1680: 90 93 db 62 sts 0x62DB, r25 ; 0x8062db <_before_page+0x1> -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:335 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:335 0x55, 0xC2, 0x05, /* GTVAL[4] */ }; const static uint8_t _sib256[] = { @@ -5776,11 +5776,11 @@ connect(): }; PGCONF = PGCONF_FAIL_bm; 1684: a0 93 dc 62 sts 0x62DC, r26 ; 0x8062dc <_before_page+0x2> -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:336 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:336 _sib[0] = 0; 1688: b0 93 dd 62 sts 0x62DD, r27 ; 0x8062dd <_before_page+0x3> setup(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:337 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:337 _before_page = -1L; 168c: 8f e0 ldi r24, 0x0F ; 15 168e: 92 e0 ldi r25, 0x02 ; 2 @@ -5790,7 +5790,7 @@ setup(): 169a: 98 e0 ldi r25, 0x08 ; 8 169c: 80 93 00 63 sts 0x6300, r24 ; 0x806300 16a0: 90 93 01 63 sts 0x6301, r25 ; 0x806301 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv1.cpp:68 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv1.cpp:68 // else if (m_type == 0xD3) /* MTYPE_SIB */ /* This is in its own memory space. */ return 0; } @@ -5801,20 +5801,20 @@ setup(): 16a6: 98 e0 ldi r25, 0x08 ; 8 16a8: 80 93 02 63 sts 0x6302, r24 ; 0x806302 16ac: 90 93 03 63 sts 0x6303, r25 ; 0x806303 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv1.cpp:69 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv1.cpp:69 Command_Table.read_memory = &read_memory; 16b0: 80 ed ldi r24, 0xD0 ; 208 16b2: 98 e0 ldi r25, 0x08 ; 8 16b4: 80 93 04 63 sts 0x6304, r24 ; 0x806304 16b8: 90 93 05 63 sts 0x6305, r25 ; 0x806305 connect(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv1.cpp:70 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv1.cpp:70 Command_Table.erase_memory = &erase_memory; 16bc: 01 9a sbi 0x00, 1 ; 0 16be: 00 00 nop 16c0: 80 91 c5 60 lds r24, 0x60C5 ; 0x8060c5 16c4: 88 23 and r24, r24 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv1.cpp:71 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv1.cpp:71 Command_Table.write_memory = &write_memory; 16c6: 59 f0 breq .+22 ; 0x16de power_reset(): @@ -5824,14 +5824,14 @@ delay_millis(): 16cc: 84 e3 ldi r24, 0x34 ; 52 16ce: 9c e0 ldi r25, 0x0C ; 12 16d0: 21 50 subi r18, 0x01 ; 1 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:339 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:339 NVM::V1::setup(); /* default is dummy callback */ openDrainWriteMacro(PIN_PG_TRST, LOW); 16d2: 80 40 sbci r24, 0x00 ; 0 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:340 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:340 nop(); 16d4: 90 40 sbci r25, 0x00 ; 0 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:343 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:343 /* External Reset */ if (packet.out.bMType) { @@ -5841,7 +5841,7 @@ delay_millis(): power_reset(): 16dc: 0e 9a sbi 0x01, 6 ; 1 connect(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:136 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:136 } void power_reset (void) { @@ -5857,11 +5857,11 @@ long_break(): 16e8: 80 91 18 60 lds r24, 0x6018 ; 0x806018 <_xclk> 16ec: 90 91 19 60 lds r25, 0x6019 ; 0x806019 <_xclk+0x1> 16f0: 96 95 lsr r25 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:138 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:138 delay_millis(200); digitalWriteMacro(PIN_HV_POWER, HIGH); 16f2: 87 95 ror r24 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:351 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:351 #ifdef CONFIG_HVCTRL_ENABLE /* High-Voltage control */ #endif @@ -5869,12 +5869,12 @@ long_break(): openDrainWriteMacro(PIN_PG_TRST, HIGH); 16f4: 96 95 lsr r25 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:352 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:352 USART::drain(); 16f6: 87 95 ror r24 16f8: 0e 94 e9 01 call 0x3d2 ; 0x3d2 16fc: 80 93 08 08 sts 0x0808, r24 ; 0x800808 <__TEXT_REGION_LENGTH__+0x7f0808> -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:66 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:66 return false; } @@ -5888,12 +5888,12 @@ long_break(): 170e: 90 91 19 60 lds r25, 0x6019 ; 0x806019 <_xclk+0x1> 1712: 0e 94 e9 01 call 0x3d2 ; 0x3d2 1716: 80 93 08 08 sts 0x0808, r24 ; 0x800808 <__TEXT_REGION_LENGTH__+0x7f0808> -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:67 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:67 send(0x00); 171a: 90 93 09 08 sts 0x0809, r25 ; 0x800809 <__TEXT_REGION_LENGTH__+0x7f0809> connect(): 171e: 69 e0 ldi r22, 0x09 ; 9 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:68 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:68 USART0_BAUD = USART::calk_baud_khz(_xclk); 1720: 70 e0 ldi r23, 0x00 ; 0 1722: 89 e6 ldi r24, 0x69 ; 105 @@ -5904,7 +5904,7 @@ connect(): 172e: 90 e0 ldi r25, 0x00 ; 0 1730: 80 e0 ldi r24, 0x00 ; 0 1732: 08 95 ret -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:354 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:354 } openDrainWriteMacro(PIN_PG_TRST, HIGH); @@ -5918,7 +5918,7 @@ connect(): 173e: 70 e0 ldi r23, 0x00 ; 0 1740: 87 e6 ldi r24, 0x67 ; 103 1742: 90 e6 ldi r25, 0x60 ; 96 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:377 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:377 bit_set(PGCONF, PGCONF_UPDI_bp); return 5; } @@ -5927,7 +5927,7 @@ connect(): return 0; 1744: 0e 94 55 02 call 0x4aa ; 0x4aa 1748: 88 23 and r24, r24 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:355 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:355 openDrainWriteMacro(PIN_PG_TRST, HIGH); USART::drain(); @@ -5938,7 +5938,7 @@ connect(): 174c: 60 e2 ldi r22, 0x20 ; 32 174e: 70 e0 ldi r23, 0x00 ; 0 1750: 8e ed ldi r24, 0xDE ; 222 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:357 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:357 D1PRINTF("", RXDATA); if (send_bytes(_sib256, sizeof(_sib256)) 1752: 92 e6 ldi r25, 0x62 ; 98 @@ -5946,7 +5946,7 @@ connect(): 1756: 88 23 and r24, r24 1758: 51 f3 breq .-44 ; 0x172e 175a: 80 91 e8 62 lds r24, 0x62E8 ; 0x8062e8 <_sib+0xa> -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:358 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:358 && recv_bytes(_sib, 32)) { 175e: 85 33 cpi r24, 0x35 ; 53 1760: 59 f5 brne .+86 ; 0x17b8 @@ -5955,7 +5955,7 @@ setup(): 1764: 96 e0 ldi r25, 0x06 ; 6 1766: 80 93 fe 62 sts 0x62FE, r24 ; 0x8062fe 176a: 90 93 ff 62 sts 0x62FF, r25 ; 0x8062ff -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:363 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:363 size_t _result = 0; D1PRINTF(" SIB=%s\r\n", _sib); D1PRINTF(" \r\n", _sib[10]); @@ -5964,7 +5964,7 @@ setup(): 176e: 84 e8 ldi r24, 0x84 ; 132 1770: 94 e0 ldi r25, 0x04 ; 4 1772: 80 93 00 63 sts 0x6300, r24 ; 0x806300 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv5.cpp:165 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv5.cpp:165 } } @@ -5974,18 +5974,18 @@ setup(): 177a: 8e ea ldi r24, 0xAE ; 174 177c: 9a e0 ldi r25, 0x0A ; 10 177e: 80 93 02 63 sts 0x6302, r24 ; 0x806302 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv5.cpp:166 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv5.cpp:166 Command_Table.read_memory = &read_memory; 1782: 90 93 03 63 sts 0x6303, r25 ; 0x806303 1786: 81 ed ldi r24, 0xD1 ; 209 1788: 96 e0 ldi r25, 0x06 ; 6 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv5.cpp:167 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv5.cpp:167 Command_Table.erase_memory = &erase_memory; 178a: 80 93 04 63 sts 0x6304, r24 ; 0x806304 178e: 90 93 05 63 sts 0x6305, r25 ; 0x806305 connect(): 1792: 80 91 de 62 lds r24, 0x62DE ; 0x8062de <_sib> -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv0.cpp:174 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv0.cpp:174 bool setup (void) { Command_Table.prog_init = &prog_init; @@ -5996,7 +5996,7 @@ connect(): 1798: f2 e6 ldi r31, 0x62 ; 98 179a: 80 32 cpi r24, 0x20 ; 32 179c: 11 f4 brne .+4 ; 0x17a2 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:371 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:371 else if (_sib[10] == '2') _result = NVM::V2::setup(); else if (_sib[10] == '0') _result = NVM::V0::setup(); if (_result) { @@ -6015,13 +6015,13 @@ connect(): 17b0: e8 9a sbi 0x1d, 0 ; 29 17b2: 85 e0 ldi r24, 0x05 ; 5 17b4: 90 e0 ldi r25, 0x00 ; 0 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:372 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:372 bit_set(PGCONF, PGCONF_UPDI_bp); 17b6: 08 95 ret -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:373 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:373 return 5; 17b8: 84 33 cpi r24, 0x34 ; 52 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:378 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:378 } } } @@ -6029,7 +6029,7 @@ connect(): } 17ba: a9 f4 brne .+42 ; 0x17e6 setup(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:364 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:364 size_t _result = 0; D1PRINTF(" SIB=%s\r\n", _sib); D1PRINTF(" \r\n", _sib[10]); @@ -6037,7 +6037,7 @@ setup(): if (_sib[10] == '5') _result = NVM::V5::setup(); else if (_sib[10] == '4') _result = NVM::V4::setup(); 17bc: 86 e7 ldi r24, 0x76 ; 118 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv4.cpp:187 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv4.cpp:187 return UPDI::send_bytes_block(_dwAddr, _wLength); } } @@ -6048,30 +6048,30 @@ setup(): 17c0: 80 93 fe 62 sts 0x62FE, r24 ; 0x8062fe 17c4: 90 93 ff 62 sts 0x62FF, r25 ; 0x8062ff 17c8: 85 e5 ldi r24, 0x55 ; 85 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv4.cpp:188 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv4.cpp:188 Command_Table.read_memory = &read_memory; 17ca: 94 e0 ldi r25, 0x04 ; 4 17cc: 80 93 00 63 sts 0x6300, r24 ; 0x806300 17d0: 90 93 01 63 sts 0x6301, r25 ; 0x806301 17d4: 88 e7 ldi r24, 0x78 ; 120 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv4.cpp:189 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv4.cpp:189 Command_Table.erase_memory = &erase_memory; 17d6: 9a e0 ldi r25, 0x0A ; 10 17d8: 80 93 02 63 sts 0x6302, r24 ; 0x806302 17dc: 90 93 03 63 sts 0x6303, r25 ; 0x806303 17e0: 8f e3 ldi r24, 0x3F ; 63 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv4.cpp:190 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv4.cpp:190 Command_Table.write_memory = &write_memory; 17e2: 97 e0 ldi r25, 0x07 ; 7 17e4: d2 cf rjmp .-92 ; 0x178a connect(): 17e6: 83 33 cpi r24, 0x33 ; 51 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:365 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:365 else if (_sib[10] == '3') _result = NVM::V3::setup(); 17e8: a9 f4 brne .+42 ; 0x1814 setup(): 17ea: 8c e7 ldi r24, 0x7C ; 124 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv3.cpp:162 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv3.cpp:162 } } @@ -6080,27 +6080,27 @@ setup(): 17ec: 96 e0 ldi r25, 0x06 ; 6 17ee: 80 93 fe 62 sts 0x62FE, r24 ; 0x8062fe 17f2: 90 93 ff 62 sts 0x62FF, r25 ; 0x8062ff -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv3.cpp:163 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv3.cpp:163 Command_Table.read_memory = &read_memory; 17f6: 83 eb ldi r24, 0xB3 ; 179 17f8: 94 e0 ldi r25, 0x04 ; 4 17fa: 80 93 00 63 sts 0x6300, r24 ; 0x806300 17fe: 90 93 01 63 sts 0x6301, r25 ; 0x806301 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv3.cpp:164 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv3.cpp:164 Command_Table.erase_memory = &erase_memory; 1802: 8f ea ldi r24, 0xAF ; 175 1804: 9a e0 ldi r25, 0x0A ; 10 1806: 80 93 02 63 sts 0x6302, r24 ; 0x806302 180a: 90 93 03 63 sts 0x6303, r25 ; 0x806303 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv3.cpp:165 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv3.cpp:165 Command_Table.write_memory = &write_memory; 180e: 88 eb ldi r24, 0xB8 ; 184 1810: 97 e0 ldi r25, 0x07 ; 7 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:366 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:366 else if (_sib[10] == '2') _result = NVM::V2::setup(); 1812: bb cf rjmp .-138 ; 0x178a connect(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv2.cpp:184 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv2.cpp:184 return UPDI::send_bytes_block(_dwAddr, _wLength); } } @@ -6113,24 +6113,24 @@ setup(): 1818: 83 e3 ldi r24, 0x33 ; 51 181a: 98 e0 ldi r25, 0x08 ; 8 181c: 80 93 fe 62 sts 0x62FE, r24 ; 0x8062fe -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv2.cpp:185 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv2.cpp:185 Command_Table.read_memory = &read_memory; 1820: 90 93 ff 62 sts 0x62FF, r25 ; 0x8062ff 1824: 85 e8 ldi r24, 0x85 ; 133 1826: 94 e0 ldi r25, 0x04 ; 4 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv2.cpp:186 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv2.cpp:186 Command_Table.erase_memory = &erase_memory; 1828: 80 93 00 63 sts 0x6300, r24 ; 0x806300 182c: 90 93 01 63 sts 0x6301, r25 ; 0x806301 1830: 8e e8 ldi r24, 0x8E ; 142 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv2.cpp:187 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv2.cpp:187 Command_Table.write_memory = &write_memory; 1832: 9a e0 ldi r25, 0x0A ; 10 1834: 80 93 02 63 sts 0x6302, r24 ; 0x806302 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:367 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:367 else if (_sib[10] == '0') _result = NVM::V0::setup(); 1838: 90 93 03 63 sts 0x6303, r25 ; 0x806303 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv0.cpp:171 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv0.cpp:171 return UPDI::send_bytes_block(_wAddr, _wLength); } } @@ -6143,7 +6143,7 @@ setup(): connect(): 1842: 80 33 cpi r24, 0x30 ; 48 1844: 09 f0 breq .+2 ; 0x1848 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv0.cpp:172 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv0.cpp:172 Command_Table.read_memory = &read_memory; 1846: 73 cf rjmp .-282 ; 0x172e setup(): @@ -6151,17 +6151,17 @@ setup(): 184a: 98 e0 ldi r25, 0x08 ; 8 184c: 80 93 fe 62 sts 0x62FE, r24 ; 0x8062fe 1850: 90 93 ff 62 sts 0x62FF, r25 ; 0x8062ff -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv0.cpp:173 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv0.cpp:173 Command_Table.erase_memory = &erase_memory; 1854: 84 eb ldi r24, 0xB4 ; 180 1856: 94 e0 ldi r25, 0x04 ; 4 1858: 80 93 00 63 sts 0x6300, r24 ; 0x806300 185c: 90 93 01 63 sts 0x6301, r25 ; 0x806301 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv0.cpp:174 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv0.cpp:174 Command_Table.write_memory = &write_memory; 1860: 84 ea ldi r24, 0xA4 ; 164 1862: 9a e0 ldi r25, 0x0A ; 10 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:152 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:152 ++_cnt; } return _wLength + 1; @@ -6182,7 +6182,7 @@ write_memory(): 1878: 9f 92 push r9 187a: af 92 push r10 187c: bf 92 push r11 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:153 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:153 uint8_t m_type = packet.out.tpi.read.bMType; 187e: cf 92 push r12 1880: df 92 push r13 @@ -6204,7 +6204,7 @@ bswap16(): 1892: c0 90 c8 60 lds r12, 0x60C8 ; 0x8060c8 1896: d0 90 c9 60 lds r13, 0x60C9 ; 0x8060c9 189a: dc 24 eor r13, r12 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:161 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:161 uint8_t *_p = &packet.out.tpi.write.memData[0]; bool _result = true; @@ -6215,7 +6215,7 @@ bswap16(): 189e: dc 24 eor r13, r12 18a0: 00 91 ca 60 lds r16, 0x60CA ; 0x8060ca 18a4: 10 91 cb 60 lds r17, 0x60CB ; 0x8060cb -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:156 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:156 size_t write_memory (void) { uint8_t m_type = packet.out.tpi.read.bMType; @@ -6224,7 +6224,7 @@ bswap16(): uint8_t *_p = &packet.out.tpi.write.memData[0]; 18a8: 10 27 eor r17, r16 18aa: 01 27 eor r16, r17 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:164 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:164 /* To accommodate older host programs, */ /* the address must be aligned to the top of the page. */ while (_dwAddr & (_tpi_chunks - 1)) { @@ -6233,7 +6233,7 @@ bswap16(): *--_p = 0xFF; /* NAND masked dummy bytes */ 18ac: 10 27 eor r17, r16 write_memory(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:161 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:161 uint8_t *_p = &packet.out.tpi.write.memData[0]; bool _result = true; @@ -6244,7 +6244,7 @@ write_memory(): 18b2: 86 2c mov r8, r6 18b4: 91 2c mov r9, r1 18b6: c4 01 movw r24, r8 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:167 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:167 _dwAddr--; _wLength++; *--_p = 0xFF; /* NAND masked dummy bytes */ @@ -6252,7 +6252,7 @@ write_memory(): while (_wLength & (_tpi_chunks - 1)) { *((uint8_t*)(_dwAddr + _wLength++)) = 0xFF; 18b8: 01 97 sbiw r24, 0x01 ; 1 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:166 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:166 while (_dwAddr & (_tpi_chunks - 1)) { _dwAddr--; _wLength++; @@ -6265,7 +6265,7 @@ write_memory(): 18c0: ac 01 movw r20, r24 18c2: 4c 21 and r20, r12 18c4: 5d 21 and r21, r13 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:167 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:167 *((uint8_t*)(_dwAddr + _wLength++)) = 0xFF; 18c6: 45 2b or r20, r21 18c8: 71 f4 brne .+28 ; 0x18e6 @@ -6274,7 +6274,7 @@ write_memory(): 18ce: e0 22 and r14, r16 18d0: f1 22 and r15, r17 18d2: e1 14 cp r14, r1 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:162 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:162 bool _result = true; /* To accommodate older host programs, */ @@ -6284,15 +6284,15 @@ write_memory(): 18d4: f1 04 cpc r15, r1 18d6: 71 f0 breq .+28 ; 0x18f4 18d8: f8 01 movw r30, r16 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:163 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:163 _wLength++; 18da: ec 0d add r30, r12 18dc: fd 1d adc r31, r13 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:164 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:164 *--_p = 0xFF; /* NAND masked dummy bytes */ 18de: 30 83 st Z, r19 18e0: 0f 5f subi r16, 0xFF ; 255 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:174 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:174 D2PRINTF(" FIXED_WRITE=%08X:%04X\r\n", _dwAddr, _wLength); /* For the flash code area, the page erase can be */ @@ -6301,7 +6301,7 @@ write_memory(): if (m_type != 0x01) { 18e2: 1f 4f sbci r17, 0xFF ; 255 18e4: f3 cf rjmp .-26 ; 0x18cc -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:185 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:185 && set_sst(0xFF) && nvm_wait() && nvm_ctrl(0x00); @@ -6317,7 +6317,7 @@ write_memory(): 18f2: e6 cf rjmp .-52 ; 0x18c0 18f4: 21 30 cpi r18, 0x01 ; 1 18f6: 19 f5 brne .+70 ; 0x193e -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:156 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:156 size_t write_memory (void) { uint8_t m_type = packet.out.tpi.read.bMType; @@ -6326,7 +6326,7 @@ write_memory(): uint8_t *_p = &packet.out.tpi.write.memData[0]; 18f8: 8f d8 rcall .-3810 ; 0xa18 18fa: 78 2e mov r7, r24 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:187 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:187 && nvm_ctrl(0x00); if (!_result) return 0; } @@ -6337,18 +6337,18 @@ write_memory(): 18fe: 19 f0 breq .+6 ; 0x1906 1900: c6 01 movw r24, r12 1902: a8 d8 rcall .-3760 ; 0xa54 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:189 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:189 D2PRINTF(" CODE_WRITE=%08X:%04X\r\n", _dwAddr, _tpi_chunks); _result &= nvm_ctrl(0x1D) 1904: 78 2e mov r7, r24 1906: b1 2c mov r11, r1 1908: a1 2c mov r10, r1 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:191 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:191 && set_sst(*_p++) && set_sst(*_p++); 190a: a0 16 cp r10, r16 190c: b1 06 cpc r11, r17 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:190 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:190 _result &= nvm_wait() && set_sstpr(_dwAddr); /* WRITE_PAGE */ for (size_t _i = 0; _i < _wLength; _i += _tpi_chunks) { @@ -6362,26 +6362,26 @@ write_memory(): 1916: 88 23 and r24, r24 1918: 29 f0 breq .+10 ; 0x1924 191a: 88 81 ld r24, Y -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:192 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:192 && set_sst(*_p++); if (_tpi_chunks == 4) { 191c: 89 d8 rcall .-3822 ; 0xa30 191e: 81 11 cpse r24, r1 1920: 35 c0 rjmp .+106 ; 0x198c -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:193 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:193 idle_clock(12); 1922: 21 96 adiw r28, 0x01 ; 1 1924: 78 22 and r7, r24 1926: 94 e0 ldi r25, 0x04 ; 4 1928: 69 12 cpse r6, r25 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:194 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:194 _result &= set_sst(*_p++) && set_sst(*_p++); 192a: 46 c0 rjmp .+140 ; 0x19b8 192c: 8c e0 ldi r24, 0x0C ; 12 192e: 90 e0 ldi r25, 0x00 ; 0 1930: a9 d8 rcall .-3758 ; 0xa84 1932: 88 81 ld r24, Y -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:200 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:200 } if (_tpi_chunks == 8) { idle_clock(12); @@ -6390,7 +6390,7 @@ write_memory(): _result &= set_sst(*_p++) && set_sst(*_p++); 1934: 7d d8 rcall .-3846 ; 0xa30 1936: 81 11 cpse r24, r1 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:177 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:177 /* omitted if the chip has already been erased. */ /* 0x01: XPRG_MEM_TYPE_APPL */ if (m_type != 0x01) { @@ -6399,7 +6399,7 @@ write_memory(): _result &= nvm_wait() 1938: 31 c0 rjmp .+98 ; 0x199c 193a: 21 96 adiw r28, 0x01 ; 1 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:182 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:182 && set_sstpr(_dwAddr | 1) && nvm_ctrl(0x14) && set_sst(0xFF) @@ -6407,7 +6407,7 @@ write_memory(): && nvm_ctrl(0x00); 193c: 36 c0 rjmp .+108 ; 0x19aa 193e: 6c d8 rcall .-3880 ; 0xa18 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:178 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:178 /* 0x01: XPRG_MEM_TYPE_APPL */ if (m_type != 0x01) { /* SECTION_ERASE */ @@ -6420,34 +6420,34 @@ write_memory(): 1946: 81 60 ori r24, 0x01 ; 1 1948: 85 d8 rcall .-3830 ; 0xa54 194a: 88 23 and r24, r24 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:179 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:179 && nvm_ctrl(0x14) 194c: 79 f0 breq .+30 ; 0x196c 194e: 84 e1 ldi r24, 0x14 ; 20 1950: 57 d8 rcall .-3922 ; 0xa00 1952: 88 23 and r24, r24 1954: 59 f0 breq .+22 ; 0x196c -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:180 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:180 && set_sst(0xFF) 1956: 8f ef ldi r24, 0xFF ; 255 1958: 6b d8 rcall .-3882 ; 0xa30 195a: 88 23 and r24, r24 195c: 39 f0 breq .+14 ; 0x196c 195e: 5c d8 rcall .-3912 ; 0xa18 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:181 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:181 && nvm_wait() 1960: 88 23 and r24, r24 1962: 21 f0 breq .+8 ; 0x196c 1964: 80 e0 ldi r24, 0x00 ; 0 1966: 4c d8 rcall .-3944 ; 0xa00 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:182 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:182 && nvm_ctrl(0x00); 1968: 81 11 cpse r24, r1 196a: c6 cf rjmp .-116 ; 0x18f8 196c: c7 01 movw r24, r14 196e: df 91 pop r29 1970: cf 91 pop r28 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:207 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:207 _result &= nvm_wait(); if (!_result) return 0; _dwAddr += _tpi_chunks; @@ -6470,7 +6470,7 @@ write_memory(): 198c: 6e 01 movw r12, r28 198e: 82 e0 ldi r24, 0x02 ; 2 1990: c8 0e add r12, r24 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:191 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:191 /* WRITE_PAGE */ for (size_t _i = 0; _i < _wLength; _i += _tpi_chunks) { D2PRINTF(" CODE_WRITE=%08X:%04X\r\n", _dwAddr, _tpi_chunks); @@ -6486,7 +6486,7 @@ write_memory(): 199e: e2 e0 ldi r30, 0x02 ; 2 19a0: ce 0e add r12, r30 19a2: d1 1c adc r13, r1 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:194 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:194 if (_tpi_chunks == 4) { idle_clock(12); _result &= set_sst(*_p++) && set_sst(*_p++); @@ -6499,7 +6499,7 @@ write_memory(): 19b0: e9 f2 breq .-70 ; 0x196c 19b2: a8 0c add r10, r8 19b4: b9 1c adc r11, r9 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:202 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:202 idle_clock(12); _result &= set_sst(*_p++) && set_sst(*_p++); idle_clock(12); @@ -6509,10 +6509,10 @@ write_memory(): 19b6: a9 cf rjmp .-174 ; 0x190a 19b8: f8 e0 ldi r31, 0x08 ; 8 19ba: 6f 12 cpse r6, r31 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:203 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:203 if (!_result) return 0; 19bc: f7 cf rjmp .-18 ; 0x19ac -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:187 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:187 && nvm_ctrl(0x00); if (!_result) return 0; } @@ -6522,7 +6522,7 @@ write_memory(): 19be: 8c e0 ldi r24, 0x0C ; 12 19c0: 90 e0 ldi r25, 0x00 ; 0 19c2: 60 d8 rcall .-3904 ; 0xa84 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:196 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:196 && set_sst(*_p++); if (_tpi_chunks == 4) { idle_clock(12); @@ -6532,13 +6532,13 @@ write_memory(): 19c4: 88 81 ld r24, Y 19c6: 34 d8 rcall .-3992 ; 0xa30 19c8: 6e 01 movw r12, r28 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:197 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:197 idle_clock(12); 19ca: 81 11 cpse r24, r1 19cc: 13 c0 rjmp .+38 ; 0x19f4 19ce: 4f ef ldi r20, 0xFF ; 255 19d0: c4 1a sub r12, r20 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:198 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:198 _result &= set_sst(*_p++) && set_sst(*_p++); 19d2: d4 0a sbc r13, r20 19d4: 78 22 and r7, r24 @@ -6550,13 +6550,13 @@ write_memory(): 19e0: 27 d8 rcall .-4018 ; 0xa30 19e2: e6 01 movw r28, r12 19e4: 88 23 and r24, r24 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:199 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:199 idle_clock(12); 19e6: 09 f4 brne .+2 ; 0x19ea 19e8: a8 cf rjmp .-176 ; 0x193a 19ea: 22 96 adiw r28, 0x02 ; 2 19ec: f6 01 movw r30, r12 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:200 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:200 _result &= set_sst(*_p++) && set_sst(*_p++); 19ee: 81 81 ldd r24, Z+1 ; 0x01 19f0: 1f d8 rcall .-4034 ; 0xa30 @@ -6571,7 +6571,7 @@ write_memory(): 1a02: 0e 94 00 05 call 0xa00 ; 0xa00 1a06: e8 2e mov r14, r24 1a08: f1 2c mov r15, r1 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:198 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:198 idle_clock(12); _result &= set_sst(*_p++) && set_sst(*_p++); } @@ -6588,7 +6588,7 @@ read_memory(): 1a12: df 93 push r29 bswap16(): 1a14: 80 91 c7 60 lds r24, 0x60C7 ; 0x8060c7 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:206 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:206 } _result &= nvm_wait(); if (!_result) return 0; @@ -6598,7 +6598,7 @@ bswap16(): 1a18: 90 91 c8 60 lds r25, 0x60C8 ; 0x8060c8 1a1c: c0 91 c9 60 lds r28, 0x60C9 ; 0x8060c9 1a20: d0 91 ca 60 lds r29, 0x60CA ; 0x8060ca -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:136 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:136 } } return 0; @@ -6621,7 +6621,7 @@ read_memory(): 1a3a: 90 46 sbci r25, 0x60 ; 96 1a3c: 8c 17 cp r24, r28 1a3e: 9d 07 cpc r25, r29 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:143 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:143 uint16_t _dwAddr = bswap16(_CAPS32(packet.out.tpi.read.dwAddr)->words[1]); size_t _wLength = bswap16(packet.out.tpi.read.wLength); uint8_t *_q = &packet.in.data[0]; @@ -6635,7 +6635,7 @@ read_memory(): 1a48: 88 23 and r24, r24 1a4a: 59 f0 breq .+22 ; 0x1a62 1a4c: 8f b3 in r24, 0x1f ; 31 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:144 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:144 while (_cnt < _wLength) { 1a4e: f8 01 movw r30, r16 1a50: 86 83 std Z+6, r24 ; 0x06 @@ -6643,14 +6643,14 @@ read_memory(): 1a54: ce 01 movw r24, r28 1a56: 01 96 adiw r24, 0x01 ; 1 1a58: df 91 pop r29 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:145 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:145 if (!get_sld()) return 0; 1a5a: cf 91 pop r28 1a5c: 1f 91 pop r17 1a5e: 0f 91 pop r16 1a60: 08 95 ret 1a62: 90 e0 ldi r25, 0x00 ; 0 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:146 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:146 *_q++ = RXDATA; 1a64: 80 e0 ldi r24, 0x00 ; 0 1a66: f8 cf rjmp .-16 ; 0x1a58 @@ -6660,19 +6660,19 @@ erase_memory(): 1a68: cf 93 push r28 1a6a: df 93 push r29 bswap16(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:149 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:149 ++_cnt; } return _wLength + 1; 1a6c: c0 91 c7 60 lds r28, 0x60C7 ; 0x8060c7 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:150 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:150 } 1a70: d0 91 c8 60 lds r29, 0x60C8 ; 0x8060c8 1a74: dc 27 eor r29, r28 1a76: cd 27 eor r28, r29 1a78: dc 27 eor r29, r28 erase_memory(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:145 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:145 uint8_t *_q = &packet.in.data[0]; size_t _cnt = 0; D2PRINTF(" READ=%08X:%04X\r\n", _dwAddr, _wLength); @@ -6681,7 +6681,7 @@ erase_memory(): if (!get_sld()) return 0; 1a7a: 80 91 c4 60 lds r24, 0x60C4 ; 0x8060c4 1a7e: 81 30 cpi r24, 0x01 ; 1 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:103 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:103 bool nvm_ctrl (const uint8_t _nvmcmd) { return set_sout(0x63, _nvmcmd); /* NVMCMD_REG: IO=0x33 */ @@ -6697,19 +6697,19 @@ erase_memory(): 1a8c: 80 e0 ldi r24, 0x00 ; 0 1a8e: df 91 pop r29 1a90: cf 91 pop r28 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:106 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:106 uint8_t m_type = packet.out.tpi.read.bMType; uint16_t _dwAddr = bswap16(_CAPS32(packet.out.tpi.read.dwAddr)->words[1]); if (m_type == 0x01) { 1a92: 08 95 ret 1a94: ce 01 movw r24, r28 1a96: 0e 94 2a 05 call 0xa54 ; 0xa54 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:109 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:109 /* XPRG_ERASE_CHIP */ D1PRINTF(" CHIP_ERASE=%04X\r\n", _dwAddr); if (nvm_wait() 1a9a: 88 23 and r24, r24 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:114 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:114 && set_sstpr(_dwAddr) && nvm_ctrl(0x10) && set_sst(0xFF) @@ -6717,7 +6717,7 @@ erase_memory(): && nvm_ctrl(0x00)) { 1a9c: b1 f3 breq .-20 ; 0x1a8a 1a9e: 80 e1 ldi r24, 0x10 ; 16 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:133 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:133 && nvm_wait() && nvm_ctrl(0x00)) { return 1; @@ -6725,12 +6725,12 @@ erase_memory(): } return 0; 1aa0: 0e 94 00 05 call 0xa00 ; 0xa00 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:134 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:134 } 1aa4: 88 23 and r24, r24 1aa6: 89 f3 breq .-30 ; 0x1a8a 1aa8: 8f ef ldi r24, 0xFF ; 255 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:110 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:110 uint16_t _dwAddr = bswap16(_CAPS32(packet.out.tpi.read.dwAddr)->words[1]); if (m_type == 0x01) { /* XPRG_ERASE_CHIP */ @@ -6741,7 +6741,7 @@ erase_memory(): 1aae: 88 23 and r24, r24 1ab0: 61 f3 breq .-40 ; 0x1a8a 1ab2: 0e 94 0c 05 call 0xa18 ; 0xa18 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:126 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:126 /* Currently not called on AVRDUDE<=7.3. */ /* It may be called from terminal mode. */ D1PRINTF(" SECTION_ERASE=%04X\r\n", _dwAddr); @@ -6752,22 +6752,22 @@ erase_memory(): 1ab8: 41 f3 breq .-48 ; 0x1a8a 1aba: 80 e0 ldi r24, 0x00 ; 0 1abc: 0e 94 00 05 call 0xa00 ; 0xa00 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:127 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:127 && set_sst(0xFF) 1ac0: 90 e0 ldi r25, 0x00 ; 0 1ac2: e5 cf rjmp .-54 ; 0x1a8e 1ac4: 0e 94 0c 05 call 0xa18 ; 0xa18 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:128 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:128 && nvm_wait() 1ac8: 88 23 and r24, r24 1aca: f9 f2 breq .-66 ; 0x1a8a 1acc: ce 01 movw r24, r28 1ace: 0e 94 2a 05 call 0xa54 ; 0xa54 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:129 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:129 && nvm_ctrl(0x00)) { 1ad2: 88 23 and r24, r24 1ad4: d1 f2 breq .-76 ; 0x1a8a -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:133 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:133 return 1; } } @@ -6777,7 +6777,7 @@ erase_memory(): 00001ada <__vector_19>: __vector_19(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:124 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:124 /* 0x02: XPRG_ERASE_APP */ /* 0x09: XPRG_ERASE_CONFIG */ /* Currently not called on AVRDUDE<=7.3. */ @@ -6786,7 +6786,7 @@ __vector_19(): if (nvm_wait() 1ada: 1f 92 push r1 1adc: 0f 92 push r0 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:129 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:129 && set_sstpr(_dwAddr) && nvm_ctrl(0x14) && set_sst(0xFF) @@ -6794,7 +6794,7 @@ __vector_19(): && nvm_ctrl(0x00)) { 1ade: 0f b6 in r0, 0x3f ; 63 1ae0: 0f 92 push r0 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:125 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:125 /* 0x09: XPRG_ERASE_CONFIG */ /* Currently not called on AVRDUDE<=7.3. */ /* It may be called from terminal mode. */ @@ -6806,11 +6806,11 @@ __vector_19(): 1ae6: 3f 93 push r19 1ae8: 4f 93 push r20 1aea: 5f 93 push r21 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:126 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:126 && nvm_ctrl(0x14) 1aec: 6f 93 push r22 1aee: 7f 93 push r23 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usart.cpp:222 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usart.cpp:222 } }; @@ -6837,7 +6837,7 @@ __vector_19(): 1b10: 8e e9 ldi r24, 0x9E ; 158 1b12: 93 e6 ldi r25, 0x63 ; 99 write_byte(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:470 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:470 void read_drop (void) { if (bit_is_set(EP_CDO.STATUS, USB_BUSNAK_bp)) ep_cdo_listen(); } @@ -6845,15 +6845,15 @@ write_byte(): void vcp_receiver (void) { uint8_t _d = USART0_RXDATAH; 1b14: e0 91 22 64 lds r30, 0x6422 ; 0x806422 <_send_count> -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:471 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:471 uint8_t _c = USART0_RXDATAL; 1b18: 31 e0 ldi r19, 0x01 ; 1 1b1a: 3e 0f add r19, r30 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:472 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:472 if (!(_d & (USART_BUFOVF_bm | USART_FERR_bm | USART_PERR_bm))) { 1b1c: 30 93 22 64 sts 0x6422, r19 ; 0x806422 <_send_count> 1b20: e8 0f add r30, r24 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:434 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:434 } void write_byte (const uint8_t _c) { @@ -6864,7 +6864,7 @@ write_byte(): 1b24: f1 1d adc r31, r1 1b26: 20 83 st Z, r18 1b28: 80 91 22 64 lds r24, 0x6422 ; 0x806422 <_send_count> -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:436 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:436 : &EP_MEM.cdi_data[0]; _buf[_send_count++] = _c; 1b2c: 80 34 cpi r24, 0x40 ; 64 @@ -6876,7 +6876,7 @@ vcp_receiver(): 1b38: 8e b3 in r24, 0x1e ; 30 1b3a: c8 2b or r28, r24 1b3c: ce bb out 0x1e, r28 ; 30 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:437 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:437 if (_send_count < 64) _sof_count = 30; 1b3e: 80 91 56 64 lds r24, 0x6456 ; 0x806456 1b42: 81 ff sbrs r24, 1 @@ -6886,7 +6886,7 @@ cci_interrupt(): 1b48: 80 95 com r24 1b4a: 8b 70 andi r24, 0x0B ; 11 1b4c: f2 99 sbic 0x1e, 2 ; 30 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:475 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:475 uint8_t _d = USART0_RXDATAH; uint8_t _c = USART0_RXDATAL; if (!(_d & (USART_BUFOVF_bm | USART_FERR_bm | USART_PERR_bm))) { @@ -6896,14 +6896,14 @@ cci_interrupt(): 1b4e: 80 61 ori r24, 0x10 ; 16 1b50: f1 99 sbic 0x1e, 1 ; 30 1b52: 80 62 ori r24, 0x20 ; 32 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:477 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:477 #if defined(CONFIG_VCP_INTERRUPT_SUPPRT) if (bit_is_set(EP_CCI.STATUS, USB_BUSNAK_bp)) cci_interrupt(); 1b54: f6 99 sbic 0x1e, 6 ; 30 1b56: 80 64 ori r24, 0x40 ; 64 1b58: 1e ba out 0x1e, r1 ; 30 1b5a: e4 9b sbis 0x1c, 4 ; 28 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:415 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:415 void cci_interrupt (void) { #if defined(CONFIG_VCP_INTERRUPT_SUPPRT) @@ -6911,30 +6911,30 @@ cci_interrupt(): #if defined(CONFIG_VCP_RS232C_ENABLE) uint8_t _c = VPORTD_IN; 1b5c: 26 c0 rjmp .+76 ; 0x1baa <__vector_19+0xd0> -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:416 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:416 _value.bValue = (_c ^ 0x0B) & 0x0B; 1b5e: 90 91 1e 64 lds r25, 0x641E ; 0x80641e <_set_serial_state> -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:418 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:418 #endif if (bit_is_set(RXSTAT, USART_FERR_bp)) _value.bFraming = true; 1b62: 89 17 cp r24, r25 1b64: 11 f1 breq .+68 ; 0x1baa <__vector_19+0xd0> set_cci_data(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:419 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:419 if (bit_is_set(RXSTAT, USART_PERR_bp)) _value.bParity = true; 1b66: 80 93 1e 64 sts 0x641E, r24 ; 0x80641e <_set_serial_state> -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:420 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:420 if (bit_is_set(RXSTAT, USART_BUFOVF_bp)) _value.bOverRun = true; 1b6a: 91 ea ldi r25, 0xA1 ; 161 1b6c: 90 93 0e 63 sts 0x630E, r25 ; 0x80630e -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:422 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:422 RXSTAT = 0; if (bit_is_set(GPCONF, GPCONF_OPN_bp) && _set_serial_state != _value.bValue) { 1b70: 90 e2 ldi r25, 0x20 ; 32 1b72: 90 93 0f 63 sts 0x630F, r25 ; 0x80630f 1b76: 10 92 10 63 sts 0x6310, r1 ; 0x806310 1b7a: 10 92 11 63 sts 0x6311, r1 ; 0x806311 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:225 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:225 if (_size) memcpy_P(_buffer, _pgmem, _size); return _size; } @@ -6942,33 +6942,33 @@ set_cci_data(): void set_cci_data (uint16_t _state) { _set_serial_state = _state; 1b7e: 21 e0 ldi r18, 0x01 ; 1 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:226 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:226 EP_MEM.cci_header.bmRequestType = 0xA1; /* REQTYPE_DIRECTION | REQTYPE_CLASS | RECIPIENT_INTERFACE */ 1b80: 30 e0 ldi r19, 0x00 ; 0 1b82: 20 93 12 63 sts 0x6312, r18 ; 0x806312 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:227 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:227 EP_MEM.cci_header.bRequest = 0x20; /* CDC_REQ_SerialState */ 1b86: 30 93 13 63 sts 0x6313, r19 ; 0x806313 1b8a: 22 e0 ldi r18, 0x02 ; 2 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:228 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:228 EP_MEM.cci_header.wValue = 0; 1b8c: 30 e0 ldi r19, 0x00 ; 0 1b8e: 20 93 14 63 sts 0x6314, r18 ; 0x806314 1b92: 30 93 15 63 sts 0x6315, r19 ; 0x806315 cci_interrupt(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:229 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:229 EP_MEM.cci_header.wIndex = 1; /* Interface#1 */ 1b96: 90 e0 ldi r25, 0x00 ; 0 1b98: 80 93 16 63 sts 0x6316, r24 ; 0x806316 1b9c: 90 93 17 63 sts 0x6317, r25 ; 0x806317 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:230 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:230 EP_MEM.cci_header.wLength = 2; 1ba0: 80 91 56 64 lds r24, 0x6456 ; 0x806456 1ba4: 81 fd sbrc r24, 1 1ba6: 0e 94 b4 01 call 0x368 ; 0x368 __vector_19(): 1baa: ff 91 pop r31 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:423 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:423 if (bit_is_set(RXSTAT, USART_FERR_bp)) _value.bFraming = true; if (bit_is_set(RXSTAT, USART_PERR_bp)) _value.bParity = true; if (bit_is_set(RXSTAT, USART_BUFOVF_bp)) _value.bOverRun = true; @@ -6980,7 +6980,7 @@ __vector_19(): 1bb0: bf 91 pop r27 1bb2: af 91 pop r26 1bb4: 9f 91 pop r25 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:426 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:426 D1PRINTF(" CCI="); D1PRINTHEX(&EP_MEM.cci_data, 10); if (bit_is_set(EP_CCI.STATUS, USB_BUSNAK_bp)) ep_cci_listen(); @@ -6989,7 +6989,7 @@ __vector_19(): 1bba: 6f 91 pop r22 1bbc: 5f 91 pop r21 1bbe: 4f 91 pop r20 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usart.cpp:228 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usart.cpp:228 #if defined(CONFIG_VCP_9BIT_SUPPORT) usart_receiver(); #else @@ -7016,7 +7016,7 @@ __vector_15(): 1bdc: 10 92 00 0b sts 0x0B00, r1 ; 0x800b00 <__TEXT_REGION_LENGTH__+0x7f0b00> 1be0: 81 e0 ldi r24, 0x01 ; 1 1be2: 80 93 06 0b sts 0x0B06, r24 ; 0x800b06 <__TEXT_REGION_LENGTH__+0x7f0b06> -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:434 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:434 } void write_byte (const uint8_t _c) { @@ -7025,18 +7025,18 @@ __vector_15(): ? &EP_MEM.cdi_data[64] 1be6: 62 e0 ldi r22, 0x02 ; 2 1be8: 70 e0 ldi r23, 0x00 ; 0 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:438 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:438 : &EP_MEM.cdi_data[0]; _buf[_send_count++] = _c; if (_send_count < 64) _sof_count = 30; else ep_cdi_listen(); 1bea: 80 e7 ldi r24, 0x70 ; 112 1bec: 94 e6 ldi r25, 0x64 ; 100 - 1bee: 43 d7 rcall .+3718 ; 0x2a76 + 1bee: 41 d7 rcall .+3714 ; 0x2a72 00001bf0 : _ZN7Timeout4stopEv(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/timeout.cpp:102 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/timeout.cpp:102 ISR(TCB0_INT_vect, ISR_NAKED) { /*** This interrupt is a global escape due to timeout. @@ -7045,7 +7045,7 @@ ISR(TCB0_INT_vect, ISR_NAKED) { __asm__ __volatile__ ("EOR R1,R1"); 1bf0: 8f b7 in r24, 0x3f ; 63 __iCliRetVal(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/timeout.cpp:106 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/timeout.cpp:106 #if defined(DEBUG) RTC_CMP = SP; #endif @@ -7053,12 +7053,12 @@ __iCliRetVal(): 1bf2: f8 94 cli _ZN7Timeout4stopEv(): 1bf4: 10 92 00 0b sts 0x0B00, r1 ; 0x800b00 <__TEXT_REGION_LENGTH__+0x7f0b00> -/Users/askn/Collaborator/UPDI4AVR-USB/src/timeout.cpp:107 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/timeout.cpp:107 TCB0_INTFLAGS = TCB_CAPT_bm; 1bf8: 91 e0 ldi r25, 0x01 ; 1 1bfa: 90 93 06 0b sts 0x0B06, r25 ; 0x800b06 <__TEXT_REGION_LENGTH__+0x7f0b06> __iRestore(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/timeout.cpp:108 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/timeout.cpp:108 longjmp(TIMEOUT_CONTEXT, 2); 1bfe: 8f bf out 0x3f, r24 ; 63 _ZN7Timeout4stopEv(): @@ -7069,7 +7069,7 @@ command(): 1c02: cf 93 push r28 1c04: df 93 push r29 1c06: 00 d0 rcall .+0 ; 0x1c08 -/Users/askn/Collaborator/UPDI4AVR-USB/src/timeout.cpp:53 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/timeout.cpp:53 * Exit from the timeout block. * The last RETI is required. */ @@ -7085,11 +7085,11 @@ static __inline__ uint8_t __iCliRetVal(void) { cli(); 1c0a: cd b7 in r28, 0x3d ; 61 -/Users/askn/Collaborator/UPDI4AVR-USB/src/timeout.cpp:54 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/timeout.cpp:54 TCB0_CTRLA = 0; 1c0c: de b7 in r29, 0x3e ; 62 1c0e: 8b 83 std Y+3, r24 ; 0x03 -/Users/askn/Collaborator/UPDI4AVR-USB/src/timeout.cpp:55 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/timeout.cpp:55 TCB0_INTFLAGS = TCB_CAPT_bm; 1c10: 9c 83 std Y+4, r25 ; 0x04 1c12: 19 82 std Y+1, r1 ; 0x01 @@ -7102,18 +7102,18 @@ static __inline__ void __iRestore(const uint8_t *__s) { SREG = *__s; 1c16: 80 e7 ldi r24, 0x70 ; 112 -/Users/askn/Collaborator/UPDI4AVR-USB/src/timeout.cpp:57 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/timeout.cpp:57 } reti(); 1c18: 94 e6 ldi r25, 0x64 ; 100 -/Users/askn/Collaborator/UPDI4AVR-USB/src/timeout.cpp:74 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/timeout.cpp:74 /* * Timeout block. * Does not work with interrupts disabled. * RETI must be called after the interrupt is suspended. */ size_t command (size_t (*func_p)(void), uint16_t _ms) { - 1c1a: 0d d7 rcall .+3610 ; 0x2a36 + 1c1a: 0b d7 rcall .+3606 ; 0x2a32 1c1c: 89 2b or r24, r25 1c1e: d9 f4 brne .+54 ; 0x1c56 start(): @@ -7123,16 +7123,16 @@ __iCliRetVal(): start(): 1c24: 10 92 0a 0b sts 0x0B0A, r1 ; 0x800b0a <__TEXT_REGION_LENGTH__+0x7f0b0a> 1c28: 10 92 0b 0b sts 0x0B0B, r1 ; 0x800b0b <__TEXT_REGION_LENGTH__+0x7f0b0b> -/Users/askn/Collaborator/UPDI4AVR-USB/src/timeout.cpp:75 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/timeout.cpp:75 volatile size_t _result = 0; 1c2c: 20 e2 ldi r18, 0x20 ; 32 -/Users/askn/Collaborator/UPDI4AVR-USB/src/timeout.cpp:76 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/timeout.cpp:76 if (setjmp(TIMEOUT_CONTEXT) == 0) { 1c2e: 33 e0 ldi r19, 0x03 ; 3 1c30: 20 93 0c 0b sts 0x0B0C, r18 ; 0x800b0c <__TEXT_REGION_LENGTH__+0x7f0b0c> 1c34: 30 93 0d 0b sts 0x0B0D, r19 ; 0x800b0d <__TEXT_REGION_LENGTH__+0x7f0b0d> 1c38: 81 e0 ldi r24, 0x01 ; 1 -/Users/askn/Collaborator/UPDI4AVR-USB/src/timeout.cpp:38 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/timeout.cpp:38 /* * Timeout after the specified time. * To be precise, in 1/1024 sec units. @@ -7140,13 +7140,13 @@ start(): void start (uint16_t _ms) { ATOMIC_BLOCK(ATOMIC_RESTORESTATE) { 1c3a: 80 93 05 0b sts 0x0B05, r24 ; 0x800b05 <__TEXT_REGION_LENGTH__+0x7f0b05> -/Users/askn/Collaborator/UPDI4AVR-USB/src/timeout.cpp:39 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/timeout.cpp:39 TCB0_CNT = 0; 1c3e: 80 93 06 0b sts 0x0B06, r24 ; 0x800b06 <__TEXT_REGION_LENGTH__+0x7f0b06> 1c42: 8f e0 ldi r24, 0x0F ; 15 1c44: 80 93 00 0b sts 0x0B00, r24 ; 0x800b00 <__TEXT_REGION_LENGTH__+0x7f0b00> __iRestore(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/timeout.cpp:40 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/timeout.cpp:40 TCB0_CCMP = _ms; 1c48: 9f bf out 0x3f, r25 ; 63 command(): @@ -7154,23 +7154,23 @@ command(): 1c4c: fc 81 ldd r31, Y+4 ; 0x04 1c4e: 09 95 icall 1c50: 89 83 std Y+1, r24 ; 0x01 -/Users/askn/Collaborator/UPDI4AVR-USB/src/timeout.cpp:41 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/timeout.cpp:41 TCB0_INTCTRL = TCB_CAPT_bm; 1c52: 9a 83 std Y+2, r25 ; 0x02 1c54: ef 98 cbi 0x1d, 7 ; 29 1c56: cc df rcall .-104 ; 0x1bf0 -/Users/askn/Collaborator/UPDI4AVR-USB/src/timeout.cpp:42 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/timeout.cpp:42 TCB0_INTFLAGS = TCB_CAPT_bm; 1c58: 89 81 ldd r24, Y+1 ; 0x01 1c5a: 9a 81 ldd r25, Y+2 ; 0x02 -/Users/askn/Collaborator/UPDI4AVR-USB/src/timeout.cpp:43 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/timeout.cpp:43 TCB0_CTRLA = TCB_ENABLE_bm | TCB_CLKSEL_EVENT_gc; /* for EVSYS_USERTCB0COUNT */ 1c5c: 24 96 adiw r28, 0x04 ; 4 1c5e: cd bf out 0x3d, r28 ; 61 1c60: de bf out 0x3e, r29 ; 62 /Users/askn/Library/Arduino15/packages/MultiX-Zinnia/tools/avr-gcc/7.3.0-avr8-gnu-toolchain/avr/include/util/atomic.h:70 1c62: df 91 pop r29 -/Users/askn/Collaborator/UPDI4AVR-USB/src/timeout.cpp:78 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/timeout.cpp:78 */ size_t command (size_t (*func_p)(void), uint16_t _ms) { volatile size_t _result = 0; @@ -7185,30 +7185,30 @@ __vector_6(): 1c68: 1f 92 push r1 1c6a: 0f 92 push r0 1c6c: 0f b6 in r0, 0x3f ; 63 -/Users/askn/Collaborator/UPDI4AVR-USB/src/timeout.cpp:79 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/timeout.cpp:79 bit_clear(PGCONF, PGCONF_FAIL_bp); 1c6e: 0f 92 push r0 -/Users/askn/Collaborator/UPDI4AVR-USB/src/timeout.cpp:87 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/timeout.cpp:87 /* Stack dump. */ /* An unused register is borrowed to store the SP. */ - D1PRINTF("\r\n!TIMEOUT:%04lX>", RTC_CMP); + D1PRINTF("\r\n!TIMEOUT:%04X>", RTC_CMP); D1PRINTHEX((const void*)(RTC_CMP + 1), 16); } Timeout::stop(); 1c70: 11 24 eor r1, r1 1c72: 8f 93 push r24 -/Users/askn/Collaborator/UPDI4AVR-USB/src/timeout.cpp:88 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/timeout.cpp:88 return _result; 1c74: 8f ef ldi r24, 0xFF ; 255 1c76: 80 93 c7 01 sts 0x01C7, r24 ; 0x8001c7 <__TEXT_REGION_LENGTH__+0x7f01c7> -/Users/askn/Collaborator/UPDI4AVR-USB/src/timeout.cpp:89 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/timeout.cpp:89 } 1c7a: e7 9a sbi 0x1c, 7 ; 28 1c7c: 8f 91 pop r24 1c7e: 0f 90 pop r0 1c80: 0f be out 0x3f, r0 ; 63 1c82: 0f 90 pop r0 -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:358 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:358 /* SW0 Raising Interrupt */ vportRegister(PIN_SYS_SW0).INTFLAGS = ~0; bit_set(GPCONF, GPCONF_RIS_bp); @@ -7224,16 +7224,16 @@ __vector_24(): 1c8a: 0f 92 push r0 1c8c: 0f b6 in r0, 0x3f ; 63 1c8e: 0f 92 push r0 -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:360 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:360 /* SW0 Falling Intrrupt */ CCL_INTFLAGS = ~0; 1c90: 11 24 eor r1, r1 1c92: 8f 93 push r24 1c94: 8f ef ldi r24, 0xFF ; 255 -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:361 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:361 bit_set(GPCONF, GPCONF_FAL_bp); 1c96: 87 bb out 0x17, r24 ; 23 -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:362 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:362 } 1c98: e6 9a sbi 0x1c, 6 ; 28 1c9a: 8f 91 pop r24 @@ -7241,7 +7241,7 @@ __vector_24(): 1c9e: 0f be out 0x3f, r0 ; 63 1ca0: 0f 90 pop r0 1ca2: 1f 90 pop r1 -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:352 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:352 }; @@ -7257,22 +7257,22 @@ main(): 1caa: cd b7 in r28, 0x3d ; 61 1cac: de b7 in r29, 0x3e ; 62 1cae: 25 97 sbiw r28, 0x05 ; 5 -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:354 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:354 /* SW0 Raising Interrupt */ vportRegister(PIN_SYS_SW0).INTFLAGS = ~0; 1cb0: cd bf out 0x3d, r28 ; 61 1cb2: de bf out 0x3e, r29 ; 62 setup(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:355 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:355 bit_set(GPCONF, GPCONF_RIS_bp); 1cb4: 64 9a sbi 0x0c, 4 ; 12 -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:356 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:356 } 1cb6: 10 92 74 04 sts 0x0474, r1 ; 0x800474 <__TEXT_REGION_LENGTH__+0x7f0474> 1cba: 65 9a sbi 0x0c, 5 ; 12 1cbc: 10 92 75 04 sts 0x0475, r1 ; 0x800475 <__TEXT_REGION_LENGTH__+0x7f0475> 1cc0: 88 e0 ldi r24, 0x08 ; 8 -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:57 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:57 #endif #if defined(PIN_VCP_CTS) && defined(CONFIG_VCP_CTS_ENABLE) pinControlRegister(PIN_VCP_CTS) = PORT_PULLUPEN_bm; @@ -7280,17 +7280,17 @@ setup(): #if defined(PIN_VCP_DCD) pinControlRegister(PIN_VCP_DCD) = PORT_PULLUPEN_bm; 1cc2: 80 93 70 04 sts 0x0470, r24 ; 0x800470 <__TEXT_REGION_LENGTH__+0x7f0470> -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:60 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:60 #endif #if defined(PIN_VCP_DSR) pinControlRegister(PIN_VCP_DSR) = PORT_PULLUPEN_bm; 1cc6: 80 93 71 04 sts 0x0471, r24 ; 0x800471 <__TEXT_REGION_LENGTH__+0x7f0471> -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:63 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:63 #endif #if defined(PIN_VCP_RI) pinControlRegister(PIN_VCP_RI) = PORT_PULLUPEN_bm; 1cca: 80 93 73 04 sts 0x0473, r24 ; 0x800473 <__TEXT_REGION_LENGTH__+0x7f0473> -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:90 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:90 pinControlRegister(PIN_HV_SWITCH) = PORT_INVEN_bm; pinModeMacro(PIN_HV_SWITCH, OUTPUT); #endif @@ -7299,10 +7299,10 @@ setup(): pinModeMacro(PIN_HV_POWER, OUTPUT); 1cce: 06 9a sbi 0x00, 6 ; 0 1cd0: 10 92 16 04 sts 0x0416, r1 ; 0x800416 <__TEXT_REGION_LENGTH__+0x7f0416> -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:91 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:91 digitalWriteMacro(PIN_HV_POWER, HIGH); 1cd4: 0e 9a sbi 0x01, 6 ; 1 -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:99 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:99 /* * GPIO - USB */ @@ -7310,7 +7310,7 @@ setup(): #if defined(PIN_USB_VDETECT) pinControlRegister(PIN_USB_VDETECT) = PORT_PULLUPEN_bm; 1cd6: 80 93 b4 04 sts 0x04B4, r24 ; 0x8004b4 <__TEXT_REGION_LENGTH__+0x7f04b4> -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:110 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:110 #if defined(PIN_SYS_SW0) /* SW0 detection: Input negative logic. */ @@ -7319,16 +7319,16 @@ setup(): pinControlRegister(PIN_SYS_SW0) = PORT_PULLUPEN_bm | PORT_ISC_RISING_gc; 1cda: 9a e0 ldi r25, 0x0A ; 10 1cdc: 90 93 b6 04 sts 0x04B6, r25 ; 0x8004b6 <__TEXT_REGION_LENGTH__+0x7f04b6> -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:111 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:111 portRegister(PIN_SYS_SW0).EVGENCTRLA = pinPosition(PIN_SYS_SW0); 1ce0: 26 e0 ldi r18, 0x06 ; 6 1ce2: 20 93 b8 04 sts 0x04B8, r18 ; 0x8004b8 <__TEXT_REGION_LENGTH__+0x7f04b8> -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:113 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:113 #if (PIN_SYS_SW0 & 0xF0) == 176 EVSYS_CHANNEL3 = EVSYS_CHANNEL_PORTF_EVGEN0_gc; 1ce6: 9a e4 ldi r25, 0x4A ; 74 1ce8: 90 93 13 02 sts 0x0213, r25 ; 0x800213 <__TEXT_REGION_LENGTH__+0x7f0213> -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:133 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:133 CCL_TRUTH0 = CCL_TRUTH_1_bm | CCL_TRUTH_2_bm; CCL_LUT0CTRLB = CCL_INSEL0_TCA0_gc | CCL_INSEL1_TCB1_gc; CCL_LUT0CTRLA = CCL_ENABLE_bm | CCL_OUTEN_bm; /* PIN_PC3 */ @@ -7337,26 +7337,26 @@ setup(): pinControlRegister(PIN_PF2) = PORT_INVEN_bm; 1cec: 40 e8 ldi r20, 0x80 ; 128 1cee: 40 93 b2 04 sts 0x04B2, r20 ; 0x8004b2 <__TEXT_REGION_LENGTH__+0x7f04b2> -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:134 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:134 EVSYS_CHANNEL0 = EVSYS_CHANNEL_CCL_LUT0_gc; 1cf2: 90 e1 ldi r25, 0x10 ; 16 1cf4: 90 93 10 02 sts 0x0210, r25 ; 0x800210 <__TEXT_REGION_LENGTH__+0x7f0210> -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:135 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:135 EVSYS_USEREVSYSEVOUTF = EVSYS_USER_CHANNEL0_gc; 1cf8: 91 e0 ldi r25, 0x01 ; 1 1cfa: 90 93 2b 02 sts 0x022B, r25 ; 0x80022b <__TEXT_REGION_LENGTH__+0x7f022b> -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:137 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:137 /* TRUTH0: 000 001 010 011 is ON */ CCL_TRUTH0 = CCL_TRUTH_1_bm | CCL_TRUTH_2_bm; 1cfe: 20 93 cb 01 sts 0x01CB, r18 ; 0x8001cb <__TEXT_REGION_LENGTH__+0x7f01cb> -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:138 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:138 CCL_LUT0CTRLB = CCL_INSEL0_TCA0_gc | CCL_INSEL1_TCB1_gc; 1d02: 29 ea ldi r18, 0xA9 ; 169 1d04: 20 93 c9 01 sts 0x01C9, r18 ; 0x8001c9 <__TEXT_REGION_LENGTH__+0x7f01c9> -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:139 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:139 CCL_LUT0CTRLA = CCL_ENABLE_bm; 1d08: 90 93 c8 01 sts 0x01C8, r25 ; 0x8001c8 <__TEXT_REGION_LENGTH__+0x7f01c8> -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:151 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:151 CCL_LUT1CTRLA = CCL_ENABLE_bm | CCL_OUTEN_bm; /* PIN_PA6 */ #endif @@ -7365,22 +7365,22 @@ setup(): EVSYS_USERCCLLUT3A = EVSYS_USER_CHANNEL3_gc; 1d0c: 24 e0 ldi r18, 0x04 ; 4 1d0e: 20 93 26 02 sts 0x0226, r18 ; 0x800226 <__TEXT_REGION_LENGTH__+0x7f0226> -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:152 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:152 CCL_TRUTH3 = CCL_TRUTH_1_bm; 1d12: 32 e0 ldi r19, 0x02 ; 2 1d14: 30 93 d7 01 sts 0x01D7, r19 ; 0x8001d7 <__TEXT_REGION_LENGTH__+0x7f01d7> -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:153 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:153 CCL_LUT3CTRLB = CCL_INSEL0_EVENTA_gc; 1d18: 23 e0 ldi r18, 0x03 ; 3 1d1a: 20 93 d5 01 sts 0x01D5, r18 ; 0x8001d5 <__TEXT_REGION_LENGTH__+0x7f01d5> -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:154 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:154 CCL_LUT3CTRLA = CCL_ENABLE_bm | CCL_FILTSEL_FILTER_gc; 1d1e: 51 e2 ldi r21, 0x21 ; 33 1d20: 50 93 d4 01 sts 0x01D4, r21 ; 0x8001d4 <__TEXT_REGION_LENGTH__+0x7f01d4> -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:155 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:155 CCL_INTCTRL0 = CCL_INTMODE3_FALLING_gc; 1d24: 40 93 c5 01 sts 0x01C5, r20 ; 0x8001c5 <__TEXT_REGION_LENGTH__+0x7f01c5> -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:160 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:160 #endif /*** CCL enable ***/ @@ -7388,7 +7388,7 @@ setup(): CCL_CTRLA = CCL_RUNSTDBY_bm | CCL_ENABLE_bm; 1d28: 41 e4 ldi r20, 0x41 ; 65 1d2a: 40 93 c0 01 sts 0x01C0, r20 ; 0x8001c0 <__TEXT_REGION_LENGTH__+0x7f01c0> -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:167 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:167 /*** TCA0 ***/ /* TCA0 is split into two 8-bit timers. */ /* The lower timer controls the blinking rate of the LED. */ @@ -7396,15 +7396,15 @@ setup(): /* and as the output for the charge pump. */ TCA0_SPLIT_CTRLD = TCA_SPLIT_SPLITM_bm; 1d2e: 90 93 03 0a sts 0x0A03, r25 ; 0x800a03 <__TEXT_REGION_LENGTH__+0x7f0a03> -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:168 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:168 TCA0_SPLIT_LPER = TCA0_STEP - 2; 1d32: 43 ec ldi r20, 0xC3 ; 195 1d34: 40 93 26 0a sts 0x0A26, r20 ; 0x800a26 <__TEXT_REGION_LENGTH__+0x7f0a26> -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:169 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:169 TCA0_SPLIT_LCMP0 = TCA0_STEP / 2; 1d38: 42 e6 ldi r20, 0x62 ; 98 1d3a: 40 93 28 0a sts 0x0A28, r20 ; 0x800a28 <__TEXT_REGION_LENGTH__+0x7f0a28> -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:176 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:176 /*** TCB0 ***/ /* The TCB0 timer is configured in the module. */ @@ -7413,17 +7413,17 @@ setup(): TCB1_CTRLB = TCB_ASYNC_bm | TCB_CNTMODE_PWM8_gc; 1d3e: 47 e4 ldi r20, 0x47 ; 71 1d40: 40 93 11 0b sts 0x0B11, r20 ; 0x800b11 <__TEXT_REGION_LENGTH__+0x7f0b11> -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:177 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:177 TCB1_CCMP = TCB1_FLASH; 1d44: 49 ea ldi r20, 0xA9 ; 169 1d46: 55 e0 ldi r21, 0x05 ; 5 1d48: 40 93 1c 0b sts 0x0B1C, r20 ; 0x800b1c <__TEXT_REGION_LENGTH__+0x7f0b1c> 1d4c: 50 93 1d 0b sts 0x0B1D, r21 ; 0x800b1d <__TEXT_REGION_LENGTH__+0x7f0b1d> -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:178 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:178 TCB1_CTRLA = TCB_RUNSTDBY_bm | TCB_ENABLE_bm | TCB_CLKSEL_EVENT_gc; 1d50: 4f e4 ldi r20, 0x4F ; 79 1d52: 40 93 10 0b sts 0x0B10, r20 ; 0x800b10 <__TEXT_REGION_LENGTH__+0x7f0b10> -/Users/askn/Collaborator/UPDI4AVR-USB/src/timeout.cpp:25 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/timeout.cpp:25 #include "prototype.h" namespace Timeout { @@ -7432,24 +7432,24 @@ namespace Timeout { RTC_PITEVGENCTRLA = RTC_EVGEN0SEL_DIV32_gc | RTC_EVGEN1SEL_DIV128_gc; 1d56: 44 e6 ldi r20, 0x64 ; 100 1d58: 40 93 56 01 sts 0x0156, r20 ; 0x800156 <__TEXT_REGION_LENGTH__+0x7f0156> -/Users/askn/Collaborator/UPDI4AVR-USB/src/timeout.cpp:26 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/timeout.cpp:26 EVSYS_CHANNEL1 = EVSYS_CHANNEL_RTC_EVGEN0_gc; /* 1024Hz periodic. */ 1d5c: 80 93 11 02 sts 0x0211, r24 ; 0x800211 <__TEXT_REGION_LENGTH__+0x7f0211> -/Users/askn/Collaborator/UPDI4AVR-USB/src/timeout.cpp:27 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/timeout.cpp:27 EVSYS_CHANNEL2 = EVSYS_CHANNEL_RTC_EVGEN1_gc; /* 32Hz periodic. */ 1d60: 89 e0 ldi r24, 0x09 ; 9 1d62: 80 93 12 02 sts 0x0212, r24 ; 0x800212 <__TEXT_REGION_LENGTH__+0x7f0212> -/Users/askn/Collaborator/UPDI4AVR-USB/src/timeout.cpp:28 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/timeout.cpp:28 EVSYS_USERTCB0COUNT = EVSYS_USER_CHANNEL1_gc; /* TCB0_CLK = 1024Hz */ 1d66: 30 93 31 02 sts 0x0231, r19 ; 0x800231 <__TEXT_REGION_LENGTH__+0x7f0231> -/Users/askn/Collaborator/UPDI4AVR-USB/src/timeout.cpp:29 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/timeout.cpp:29 EVSYS_USERTCB1COUNT = EVSYS_USER_CHANNEL2_gc; /* TCB1_CLK = 32Hz */ 1d6a: 20 93 33 02 sts 0x0233, r18 ; 0x800233 <__TEXT_REGION_LENGTH__+0x7f0233> -/Users/askn/Collaborator/UPDI4AVR-USB/src/timeout.cpp:30 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/timeout.cpp:30 RTC_PITCTRLA = RTC_PITEN_bm; 1d6e: 90 93 50 01 sts 0x0150, r25 ; 0x800150 <__TEXT_REGION_LENGTH__+0x7f0150> main(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/main.cpp:94 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/main.cpp:94 Serial.print(F("__AVR_ARCH__ = ")).println(__AVR_ARCH__, DEC); #endif @@ -7457,33 +7457,33 @@ main(): Timeout::setup(); USART::setup(); 1d72: 35 db rcall .-2454 ; 0x13de -/Users/askn/Collaborator/UPDI4AVR-USB/src/main.cpp:96 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/main.cpp:96 loop_until_bit_is_clear(WDT_STATUS, WDT_SYNCBUSY_bp); 1d74: 80 91 01 01 lds r24, 0x0101 ; 0x800101 <__TEXT_REGION_LENGTH__+0x7f0101> 1d78: 80 fd sbrc r24, 0 1d7a: fc cf rjmp .-8 ; 0x1d74 -/Users/askn/Collaborator/UPDI4AVR-USB/src/main.cpp:97 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/main.cpp:97 _PROTECTED_WRITE(WDT_CTRLA, WDT_PERIOD_1KCLK_gc); 1d7c: 88 ed ldi r24, 0xD8 ; 216 1d7e: 98 e0 ldi r25, 0x08 ; 8 1d80: 84 bf out 0x34, r24 ; 52 1d82: 90 93 00 01 sts 0x0100, r25 ; 0x800100 <__TEXT_REGION_LENGTH__+0x7f0100> -/Users/askn/Collaborator/UPDI4AVR-USB/src/main.cpp:101 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/main.cpp:101 #if defined(PIN_SYS_SW0) /* Clear the dirty flag before enabling interrupts. */ vportRegister(PIN_SYS_SW0).INTFLAGS = ~0; 1d86: 8f ef ldi r24, 0xFF ; 255 1d88: 87 bb out 0x17, r24 ; 23 -/Users/askn/Collaborator/UPDI4AVR-USB/src/main.cpp:102 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/main.cpp:102 CCL_INTFLAGS = ~0; 1d8a: 80 93 c7 01 sts 0x01C7, r24 ; 0x8001c7 <__TEXT_REGION_LENGTH__+0x7f01c7> -/Users/askn/Collaborator/UPDI4AVR-USB/src/main.cpp:104 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/main.cpp:104 #endif interrupts(); 1d8e: 78 94 sei -/Users/askn/Collaborator/UPDI4AVR-USB/src/main.cpp:111 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/main.cpp:111 #if !defined(PIN_USB_VDETECT) /* If you do not use VBD, insert the shortest possible delay instead. */ delay_millis(250); @@ -7496,7 +7496,7 @@ main(): 1d98: 82 0e add r8, r18 1d9a: 91 1c adc r9, r1 request_class(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:628 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:629 EP_MEM.res_encoding.dwDTERate = 9600UL; EP_MEM.res_encoding.bDataBits = 8; } @@ -7506,7 +7506,7 @@ request_class(): 1d9c: b7 e0 ldi r27, 0x07 ; 7 1d9e: ab 2e mov r10, r27 1da0: b1 2c mov r11, r1 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:623 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:624 else if (bRequest == 0x21) { /* GET_LINE_ENCODING */ memcpy(&EP_MEM.res_encoding, &_set_line_encoding, sizeof(LineEncoding_t)); if (EP_MEM.res_encoding.dwDTERate == 0) { @@ -7520,7 +7520,7 @@ request_class(): 1daa: 61 2c mov r6, r1 1dac: 71 2c mov r7, r1 request_standard(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:578 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:579 } else if (bRequest == 0x0A) { /* GET_INTREFACE */ /* It seems not to be used. */ @@ -7531,7 +7531,7 @@ request_standard(): 1db0: c3 94 inc r12 1db2: d1 2c mov r13, r1 main(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/main.cpp:117 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/main.cpp:117 #endif /* From here on, it's an endless loop. */ @@ -7540,7 +7540,7 @@ main(): wdt_reset(); 1db4: a8 95 wdr handling_bus_events(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:688 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:689 /*** This process is equivalent to a bus interrupt. ***/ /* The reason for using polling is to prioritize VCP performance. */ @@ -7548,22 +7548,22 @@ handling_bus_events(): void handling_bus_events (void) { uint8_t busstate = USB0_INTFLAGSA; 1db6: 10 91 0a 0c lds r17, 0x0C0A ; 0x800c0a <__TEXT_REGION_LENGTH__+0x7f0c0a> -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:689 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:690 USB0_INTFLAGSA = busstate; 1dba: 10 93 0a 0c sts 0x0C0A, r17 ; 0x800c0a <__TEXT_REGION_LENGTH__+0x7f0c0a> -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:692 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:693 #if defined(PIN_USB_VDETECT) /* This section is still experimental. */ if (digitalReadMacro(PIN_USB_VDETECT)) { 1dbe: b4 9b sbis 0x16, 4 ; 22 1dc0: 10 c0 rjmp .+32 ; 0x1de2 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:693 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:694 if (!USB0_CTRLA) { 1dc2: 80 91 00 0c lds r24, 0x0C00 ; 0x800c00 <__TEXT_REGION_LENGTH__+0x7f0c00> 1dc6: 81 11 cpse r24, r1 1dc8: 15 c0 rjmp .+42 ; 0x1df4 setup_device(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:235 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:235 EP_MEM.cci_header.wLength = 2; EP_MEM.cci_wValue = _state; } @@ -7574,16 +7574,16 @@ setup_device(): 1dce: 83 30 cpi r24, 0x03 ; 3 1dd0: 11 f0 breq .+4 ; 0x1dd6 1dd2: 0e 94 89 05 call 0xb12 ; 0xb12 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:236 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:236 USB0_ADDR = 0; 1dd6: 10 92 03 0c sts 0x0C03, r1 ; 0x800c03 <__TEXT_REGION_LENGTH__+0x7f0c03> -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:237 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:237 if (USB0_CTRLA || _force) { 1dda: 80 91 00 0c lds r24, 0x0C00 ; 0x800c00 <__TEXT_REGION_LENGTH__+0x7f0c00> 1dde: a4 da rcall .-2744 ; 0x1328 1de0: 38 c0 rjmp .+112 ; 0x1e52 handling_bus_events(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:698 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:699 if (!USB0_CTRLA) { setup_device(true); return; @@ -7594,7 +7594,7 @@ handling_bus_events(): 1de6: 88 23 and r24, r24 1de8: 29 f0 breq .+10 ; 0x1df4 reboot(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:306 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:306 void reboot (void) { #if defined(DEBUG) D0PRINTF("\r\n"); @@ -7606,7 +7606,7 @@ reboot(): 1dee: 84 bf out 0x34, r24 ; 52 1df0: 90 93 41 00 sts 0x0041, r25 ; 0x800041 <__TEXT_REGION_LENGTH__+0x7f0041> handling_bus_events(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:714 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:715 } if (bit_is_set(busstate, USB_RESUME_bp)) { D1PRINTF("\r\n", USB0_ADDR); @@ -7615,7 +7615,7 @@ handling_bus_events(): if (bit_is_set(busstate, USB_SOF_bp)) { 1df4: 17 ff sbrs r17, 7 1df6: 14 c0 rjmp .+40 ; 0x1e20 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:716 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:717 /* If there is deferred data for a block transfer, it is sent here. */ if (_sof_count > 0 && 0 == (--_sof_count)) { 1df8: 80 91 1f 64 lds r24, 0x641F ; 0x80641f <_sof_count> @@ -7626,17 +7626,17 @@ handling_bus_events(): 1e06: 80 93 1f 64 sts 0x641F, r24 ; 0x80641f <_sof_count> 1e0a: 81 11 cpse r24, r1 1e0c: 09 c0 rjmp .+18 ; 0x1e20 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:717 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:718 if (bit_is_set(EP_CDI.STATUS, USB_BUSNAK_bp) && _send_count > 0) { 1e0e: 80 91 66 64 lds r24, 0x6466 ; 0x806466 1e12: 81 ff sbrs r24, 1 1e14: 05 c0 rjmp .+10 ; 0x1e20 1e16: 80 91 22 64 lds r24, 0x6422 ; 0x806422 <_send_count> 1e1a: 81 11 cpse r24, r1 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:718 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:719 ep_cdi_listen(); 1e1c: 0e 94 80 01 call 0x300 ; 0x300 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:723 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:724 } } } @@ -7645,32 +7645,32 @@ handling_bus_events(): 1e20: 81 2f mov r24, r17 1e22: 80 76 andi r24, 0x60 ; 96 1e24: 41 f0 breq .+16 ; 0x1e36 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:726 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:727 /* This implementation does not transition to power saving mode. */ /* This is only passed when the USB cable is unplugged. */ if (bit_is_set(GPCONF, GPCONF_USB_bp)) { 1e26: e0 9b sbis 0x1c, 0 ; 28 1e28: 05 c0 rjmp .+10 ; 0x1e34 reboot(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:306 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:306 1e2a: 88 ed ldi r24, 0xD8 ; 216 1e2c: 91 e0 ldi r25, 0x01 ; 1 1e2e: 84 bf out 0x34, r24 ; 52 1e30: 90 93 41 00 sts 0x0041, r25 ; 0x800041 <__TEXT_REGION_LENGTH__+0x7f0041> handling_bus_events(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:730 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:731 /* System reboot */ SYS::reboot(); } bit_set(busstate, USB_RESET_bp); 1e34: 10 61 ori r17, 0x10 ; 16 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:732 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:733 } if (bit_is_set(busstate, USB_RESET_bp)) { 1e36: 14 ff sbrs r17, 4 1e38: 0c c0 rjmp .+24 ; 0x1e52 setup_device(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:235 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:235 EP_MEM.cci_header.wLength = 2; EP_MEM.cci_wValue = _state; } @@ -7681,16 +7681,16 @@ setup_device(): 1e3e: 83 30 cpi r24, 0x03 ; 3 1e40: 11 f0 breq .+4 ; 0x1e46 1e42: 0e 94 89 05 call 0xb12 ; 0xb12 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:236 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:236 USB0_ADDR = 0; 1e46: 10 92 03 0c sts 0x0C03, r1 ; 0x800c03 <__TEXT_REGION_LENGTH__+0x7f0c03> -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:237 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:237 if (USB0_CTRLA || _force) { 1e4a: 80 91 00 0c lds r24, 0x0C00 ; 0x800c00 <__TEXT_REGION_LENGTH__+0x7f0c00> 1e4e: 81 11 cpse r24, r1 1e50: c6 cf rjmp .-116 ; 0x1dde is_ep_setup(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:256 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:256 set_cci_data(0x00); USB0_CTRLA = USB_ENABLE_bm | (USB_ENDPOINTS_MAX - 1); } @@ -7699,7 +7699,7 @@ is_ep_setup(): bool is_ep_setup (void) { return bit_is_set(EP_REQ.STATUS, USB_EPSETUP_bp); } 1e52: 80 91 2e 64 lds r24, 0x642E ; 0x80642e main(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/main.cpp:121 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/main.cpp:121 /*** USB control handling ***/ USB::handling_bus_events(); @@ -7707,7 +7707,7 @@ main(): 1e56: 84 ff sbrs r24, 4 1e58: 1f c0 rjmp .+62 ; 0x1e98 handling_control_transactions(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:656 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:657 /*** Accept the EP0 setup packet. ***/ /* This process is equivalent to a endpoint interrupt. */ /* The reason for using polling is to prioritize VCP performance. */ @@ -7715,7 +7715,7 @@ handling_control_transactions(): bool _listen = false; uint8_t bmRequestType = EP_MEM.req_data.bmRequestType; 1e5a: 10 91 06 63 lds r17, 0x6306 ; 0x806306 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:661 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:662 D1PRINTF("RQ=%02X:%04X:%02X:%02X:%04X:%04X:%04X\r\n", EP_REQ.STATUS, EP_REQ.CNT, EP_MEM.req_data.bmRequestType, EP_MEM.req_data.bRequest, EP_MEM.req_data.wValue, EP_MEM.req_data.wIndex, EP_MEM.req_data.wLength); @@ -7723,15 +7723,15 @@ handling_control_transactions(): if (bit_is_clear(bmRequestType, 7)) ep_req_listen(); 1e5e: 17 ff sbrs r17, 7 1e60: 0e 94 d2 01 call 0x3a4 ; 0x3a4 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:662 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:663 bmRequestType &= (3 << 5); 1e64: 10 76 andi r17, 0x60 ; 96 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:663 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:664 if (bmRequestType == (0 << 5)) { 1e66: 09 f0 breq .+2 ; 0x1e6a - 1e68: f3 c1 rjmp .+998 ; 0x2250 <__DATA_REGION_LENGTH__+0x250> + 1e68: f1 c1 rjmp .+994 ; 0x224c <__DATA_REGION_LENGTH__+0x24c> request_standard(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:526 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:526 } /*** USB Standard Request Enumeration. ***/ @@ -7739,24 +7739,24 @@ request_standard(): bool _listen = true; uint8_t bRequest = EP_MEM.req_data.bRequest; 1e6a: 80 91 07 63 lds r24, 0x6307 ; 0x806307 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:527 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:527 if (bRequest == 0x00) { /* GET_STATUS */ 1e6e: 81 11 cpse r24, r1 1e70: 83 c0 rjmp .+262 ; 0x1f78 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:528 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:528 EP_MEM.res_data[0] = 0; 1e72: 10 92 0e 63 sts 0x630E, r1 ; 0x80630e -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:529 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:529 EP_MEM.res_data[1] = 0; 1e76: 10 92 0f 63 sts 0x630F, r1 ; 0x80630f -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:530 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:530 EP_RES.CNT = 2; 1e7a: 82 e0 ldi r24, 0x02 ; 2 1e7c: 90 e0 ldi r25, 0x00 ; 0 1e7e: 80 93 38 64 sts 0x6438, r24 ; 0x806438 1e82: 90 93 39 64 sts 0x6439, r25 ; 0x806439 handling_control_transactions(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:675 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:676 else if (bmRequestType == (2 << 5)) { _listen = request_vendor(); } @@ -7764,10 +7764,10 @@ handling_control_transactions(): if (_listen) { ep_res_listen(); 1e86: 0e 94 c6 01 call 0x38c ; 0x38c -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:676 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:677 ep_req_listen(); 1e8a: 0e 94 d2 01 call 0x3a4 ; 0x3a4 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:681 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:682 } else { ep0_stalled(); @@ -7777,18 +7777,18 @@ handling_control_transactions(): 1e92: 84 60 ori r24, 0x04 ; 4 1e94: 80 93 0b 0c sts 0x0C0B, r24 ; 0x800c0b <__TEXT_REGION_LENGTH__+0x7f0c0b> main(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/main.cpp:124 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/main.cpp:124 /* If SW0 was used, work here. */ if (bit_is_clear(PGCONF, PGCONF_UPDI_bp)) { 1e98: e8 99 sbic 0x1d, 0 ; 29 1e9a: 21 c0 rjmp .+66 ; 0x1ede -/Users/askn/Collaborator/UPDI4AVR-USB/src/main.cpp:125 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/main.cpp:125 if (bit_is_set(GPCONF, GPCONF_FAL_bp)) SYS::reset_enter(); 1e9c: e7 9b sbis 0x1c, 7 ; 28 - 1e9e: 67 c2 rjmp .+1230 ; 0x236e <__DATA_REGION_LENGTH__+0x36e> + 1e9e: 65 c2 rjmp .+1226 ; 0x236a <__DATA_REGION_LENGTH__+0x36a> LED_TCB1(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:198 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:198 _led_mode = 1; } } @@ -7798,28 +7798,28 @@ LED_TCB1(): 1ea0: 80 91 7d 60 lds r24, 0x607D ; 0x80607d <_led_mode> 1ea4: 83 30 cpi r24, 0x03 ; 3 1ea6: 81 f0 breq .+32 ; 0x1ec8 -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:199 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:199 TCA0_SPLIT_CTRLA = 0; 1ea8: 10 92 00 0a sts 0x0A00, r1 ; 0x800a00 <__TEXT_REGION_LENGTH__+0x7f0a00> -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:200 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:200 TCB1_CNTL = 0; 1eac: 10 92 1a 0b sts 0x0B1A, r1 ; 0x800b1a <__TEXT_REGION_LENGTH__+0x7f0b1a> -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:201 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:201 TCB1_CCMP = _ccmp; 1eb0: 89 ea ldi r24, 0xA9 ; 169 1eb2: 95 e5 ldi r25, 0x55 ; 85 1eb4: 80 93 1c 0b sts 0x0B1C, r24 ; 0x800b1c <__TEXT_REGION_LENGTH__+0x7f0b1c> 1eb8: 90 93 1d 0b sts 0x0B1D, r25 ; 0x800b1d <__TEXT_REGION_LENGTH__+0x7f0b1d> -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:202 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:202 TCB1_CTRLA = TCB_RUNSTDBY_bm | TCB_ENABLE_bm | TCB_CLKSEL_EVENT_gc; 1ebc: 8f e4 ldi r24, 0x4F ; 79 1ebe: 80 93 10 0b sts 0x0B10, r24 ; 0x800b10 <__TEXT_REGION_LENGTH__+0x7f0b10> -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:203 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:203 _led_mode = _mode; 1ec2: 83 e0 ldi r24, 0x03 ; 3 1ec4: 80 93 7d 60 sts 0x607D, r24 ; 0x80607d <_led_mode> reset_enter(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:256 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:256 * Executed when SW0 is detected as being pressed. * May be called multiple times due to chattering. */ @@ -7829,7 +7829,7 @@ reset_enter(): 1ec8: 80 91 88 60 lds r24, 0x6088 ; 0x806088 <_jtag_arch> 1ecc: 85 30 cpi r24, 0x05 ; 5 1ece: 29 f4 brne .+10 ; 0x1eda -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:262 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:262 /* * Puts a tinyAVR-0 which does not have a reset pad into reset state. * This applies to all chips which have an enabled UPDI pad. @@ -7838,19 +7838,19 @@ reset_enter(): _updi_bitmap[10] = 0x59; /* SYSRST */ 1ed0: 89 e5 ldi r24, 0x59 ; 89 1ed2: 80 93 24 60 sts 0x6024, r24 ; 0x806024 -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:263 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:263 send_bitmap(_updi_bitmap, sizeof(_updi_bitmap) * 8); 1ed6: 0e 94 41 01 call 0x282 ; 0x282 -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:265 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:265 } openDrainWriteMacro(PIN_PG_TRST, LOW); 1eda: 01 9a sbi 0x00, 1 ; 0 -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:267 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:267 D1PRINTF("\r\n"); bit_clear(GPCONF, GPCONF_FAL_bp); 1edc: e7 98 cbi 0x1c, 7 ; 28 main(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/main.cpp:130 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/main.cpp:130 else if (bit_is_set(GPCONF, GPCONF_RIS_bp)) SYS::reset_leave(); } @@ -7858,7 +7858,7 @@ main(): if (bit_is_clear(GPCONF, GPCONF_USB_bp)) continue; 1ede: e0 9b sbis 0x1c, 0 ; 28 1ee0: 69 cf rjmp .-302 ; 0x1db4 -/Users/askn/Collaborator/UPDI4AVR-USB/src/main.cpp:140 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/main.cpp:140 /* character arrives every 400 clocks on a 20MHz reference. */ /* So we avoid using interrupts here and use polling to gain speed. */ #if defined(CONFIG_VCP_9BIT_SUPPORT) @@ -7866,9 +7866,9 @@ main(): #else if (bit_is_set(GPCONF, GPCONF_VCP_bp)) USB::vcp_transceiver(); 1ee2: e1 9b sbis 0x1c, 1 ; 28 - 1ee4: 8b c2 rjmp .+1302 ; 0x23fc <__DATA_REGION_LENGTH__+0x3fc> + 1ee4: 89 c2 rjmp .+1298 ; 0x23f8 <__DATA_REGION_LENGTH__+0x3f8> vcp_transceiver(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:502 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:502 if (bit_is_clear(GPCONF, GPCONF_BRK_bp) #if defined(CONFIG_VCP_CTS_ENABLE) && !digitalReadMacro(PIN_VCP_CTS) @@ -7877,7 +7877,7 @@ vcp_transceiver(): && read_available()) { 1ee6: e3 99 sbic 0x1c, 3 ; 28 1ee8: 14 c0 rjmp .+40 ; 0x1f12 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:501 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:501 void vcp_transceiver (void) { if (bit_is_clear(GPCONF, GPCONF_BRK_bp) #if defined(CONFIG_VCP_CTS_ENABLE) @@ -7888,7 +7888,7 @@ vcp_transceiver(): 1eee: 85 ff sbrs r24, 5 1ef0: 10 c0 rjmp .+32 ; 0x1f12 read_available(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:458 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:458 return _c; } @@ -7900,18 +7900,18 @@ read_available(): 1ef8: 0c c0 rjmp .+24 ; 0x1f12 1efa: e1 9b sbis 0x1c, 1 ; 28 1efc: 0a c0 rjmp .+20 ; 0x1f12 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:459 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:459 _s = EP_CDO.CNT - _recv_count; 1efe: 20 91 60 64 lds r18, 0x6460 ; 0x806460 1f02: 30 91 61 64 lds r19, 0x6461 ; 0x806461 1f06: 80 91 21 64 lds r24, 0x6421 ; 0x806421 <_recv_count> -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:460 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:460 if (_s == 0) ep_cdo_listen(); 1f0a: 82 13 cpse r24, r18 - 1f0c: 58 c2 rjmp .+1200 ; 0x23be <__DATA_REGION_LENGTH__+0x3be> + 1f0c: 56 c2 rjmp .+1196 ; 0x23ba <__DATA_REGION_LENGTH__+0x3ba> 1f0e: 0e 94 6f 01 call 0x2de ; 0x2de main(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/main.cpp:145 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/main.cpp:145 #endif else USB::read_drop(); @@ -7920,7 +7920,7 @@ main(): 1f12: e3 9b sbis 0x1c, 3 ; 28 1f14: 18 c0 rjmp .+48 ; 0x1f46 cci_break_count(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:397 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:397 bit_clear(GPCONF, GPCONF_BRK_bp); } @@ -7935,26 +7935,26 @@ cci_break_count(): 1f24: 22 30 cpi r18, 0x02 ; 2 1f26: 31 05 cpc r19, r1 1f28: 70 f0 brcs .+28 ; 0x1f46 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:398 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:398 if (_send_break > USB_CCI_INTERVAL) { 1f2a: 85 30 cpi r24, 0x05 ; 5 1f2c: 91 05 cpc r25, r1 1f2e: 08 f4 brcc .+2 ; 0x1f32 - 1f30: 6a c2 rjmp .+1236 ; 0x2406 <__DATA_REGION_LENGTH__+0x406> -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:399 + 1f30: 68 c2 rjmp .+1232 ; 0x2402 <__DATA_REGION_LENGTH__+0x402> +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:399 _send_break -= USB_CCI_INTERVAL; 1f32: 04 97 sbiw r24, 0x04 ; 4 1f34: 80 93 23 64 sts 0x6423, r24 ; 0x806423 <_send_break> 1f38: 90 93 24 64 sts 0x6424, r25 ; 0x806424 <_send_break+0x1> -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:400 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:400 if (bit_is_set(EP_CCI.STATUS, USB_BUSNAK_bp)) 1f3c: 80 91 56 64 lds r24, 0x6456 ; 0x806456 1f40: 81 fd sbrc r24, 1 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:401 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:401 ep_cci_listen(); 1f42: 0e 94 b4 01 call 0x368 ; 0x368 is_not_dap(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:257 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:257 USB0_CTRLA = USB_ENABLE_bm | (USB_ENDPOINTS_MAX - 1); } } @@ -7963,14 +7963,14 @@ is_not_dap(): bool is_not_dap (void) { return bit_is_clear(EP_DPO.STATUS, USB_BUSNAK_bp); } 1f46: 80 91 4e 64 lds r24, 0x644E ; 0x80644e main(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/main.cpp:148 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/main.cpp:148 /*** If CMSIS-DAP is not received, return to the top. ***/ if (USB::is_not_dap()) continue; 1f4a: 81 ff sbrs r24, 1 1f4c: 33 cf rjmp .-410 ; 0x1db4 dap_command_check(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:52 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:52 * Command numbers 0x80 and above are vendor extensions, EDBG Payload uses 0x80 and x81. * Additionally, 0x82 is reserved for device event notification. */ @@ -7978,11 +7978,11 @@ dap_command_check(): bool _result = false; uint8_t _cmd = EP_MEM.dap_data[0]; 1f4e: 90 91 1e 63 lds r25, 0x631E ; 0x80631e -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:53 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:53 uint8_t _sub = EP_MEM.dap_data[1]; 1f52: 80 91 1f 63 lds r24, 0x631F ; 0x80631f ep_dpi_pending(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:260 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:260 void ep_req_pending (void) { loop_until_bit_is_set(EP_REQ.STATUS, USB_BUSNAK_bp); } void ep_res_pending (void) { loop_until_bit_is_set(EP_RES.STATUS, USB_BUSNAK_bp); } void ep_dpi_pending (void) { loop_until_bit_is_set(EP_DPI.STATUS, USB_BUSNAK_bp); } @@ -7990,7 +7990,7 @@ ep_dpi_pending(): 1f5a: 21 ff sbrs r18, 1 1f5c: fc cf rjmp .-8 ; 0x1f56 dap_command_check(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:65 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:65 * and the data is sent and received with a fixed length of 64 bytes, * determined by the value specified in the HID Report. * A maximum of 15 chunks is possible, @@ -7999,27 +7999,27 @@ dap_command_check(): if (_cmd == 0x80) { /* DAP_EDBG_VENDOR_AVR_CMD */ 1f5e: 90 38 cpi r25, 0x80 ; 128 1f60: 09 f0 breq .+2 ; 0x1f64 - 1f62: c8 c2 rjmp .+1424 ; 0x24f4 <__DATA_REGION_LENGTH__+0x4f4> -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:66 + 1f62: c6 c2 rjmp .+1420 ; 0x24f0 <__DATA_REGION_LENGTH__+0x4f0> +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:66 uint8_t _endf = _sub & 0x0F; 1f64: f8 2f mov r31, r24 1f66: ff 70 andi r31, 0x0F ; 15 1f68: fd 83 std Y+5, r31 ; 0x05 -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:70 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:70 uint8_t _frag = _sub >> 4; uint8_t _size = EP_MEM.dap_data[3]; size_t _ofst = (_frag - 1) * 60; if (_endf >= 10) { 1f6a: fa 30 cpi r31, 0x0A ; 10 1f6c: 08 f4 brcc .+2 ; 0x1f70 - 1f6e: 52 c2 rjmp .+1188 ; 0x2414 <__DATA_REGION_LENGTH__+0x414> -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:73 + 1f6e: 50 c2 rjmp .+1184 ; 0x2410 <__DATA_REGION_LENGTH__+0x410> +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:73 /* Only a maximum of 540 bytes : 9 fragment records is accepted. */ D1PRINTF("\r\n"); EP_MEM.dap_data[1] = 0x00; /* EDBG_RSP_FAIL */ 1f70: 10 92 1f 63 sts 0x631F, r1 ; 0x80631f main(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:51 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:51 /* * Command numbers 0x80 and above are vendor extensions, EDBG Payload uses 0x80 and x81. * Additionally, 0x82 is reserved for device event notification. @@ -8027,9 +8027,9 @@ main(): bool dap_command_check (void) { bool _result = false; 1f74: 00 e0 ldi r16, 0x00 ; 0 - 1f76: 84 c2 rjmp .+1288 ; 0x2480 <__DATA_REGION_LENGTH__+0x480> + 1f76: 82 c2 rjmp .+1284 ; 0x247c <__DATA_REGION_LENGTH__+0x47c> request_standard(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:532 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:532 if (bRequest == 0x00) { /* GET_STATUS */ EP_MEM.res_data[0] = 0; EP_MEM.res_data[1] = 0; @@ -8037,420 +8037,420 @@ request_standard(): } else if (bRequest == 0x01) { /* CLEAR_FEATURE */ 1f78: 81 30 cpi r24, 0x01 ; 1 - 1f7a: d9 f4 brne .+54 ; 0x1fb2 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:534 + 1f7a: c9 f4 brne .+50 ; 0x1fae +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:534 D1PRINTF(" CF=%02X:%02X\r\n", EP_MEM.req_data.wValue, EP_MEM.req_data.wIndex); if (0 == (uint8_t)EP_MEM.req_data.wValue) { 1f7c: 80 91 08 63 lds r24, 0x6308 ; 0x806308 1f80: 81 11 cpse r24, r1 - 1f82: 12 c0 rjmp .+36 ; 0x1fa8 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:536 - /* Assumes that an Endpoint number is passed. */ - uint8_t _EP = EP_MEM.req_data.wIndex; + 1f82: 10 c0 rjmp .+32 ; 0x1fa4 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:537 + /* Expects an endpoint number to be passed in. Swaps the high and low */ + /* nibbles to make it a representation of the USB controller. */ + uint8_t _EP = USB_EP_ID_SWAP(EP_MEM.req_data.wIndex); 1f84: e0 91 0a 63 lds r30, 0x630A ; 0x80630a - 1f88: f0 91 0b 63 lds r31, 0x630B ; 0x80630b -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:537 + 1f88: e2 95 swap r30 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:538 loop_until_bit_is_clear(USB0_INTFLAGSB, USB_RMWBUSY_bp); - 1f8c: 80 91 0b 0c lds r24, 0x0C0B ; 0x800c0b <__TEXT_REGION_LENGTH__+0x7f0c0b> - 1f90: 82 fd sbrc r24, 2 - 1f92: fc cf rjmp .-8 ; 0x1f8c -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:538 - USB_EP_STATUS_CLR(_EP) = USB_STALLED_bm | USB_TOGGLE_bm; + 1f8a: 80 91 0b 0c lds r24, 0x0C0B ; 0x800c0b <__TEXT_REGION_LENGTH__+0x7f0c0b> + 1f8e: 82 fd sbrc r24, 2 + 1f90: fc cf rjmp .-8 ; 0x1f8a +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:539 + USB_EP_STATUS_CLR(_EP) = USB_STALLED_bm | USB_BUSNAK_bm | USB_TOGGLE_bm; + 1f92: f0 e0 ldi r31, 0x00 ; 0 1f94: f5 95 asr r31 1f96: e7 95 ror r30 1f98: f5 95 asr r31 1f9a: e7 95 ror r30 - 1f9c: ef 73 andi r30, 0x3F ; 63 - 1f9e: ff 27 eor r31, r31 - 1fa0: e0 5c subi r30, 0xC0 ; 192 - 1fa2: f3 4f sbci r31, 0xF3 ; 243 - 1fa4: 89 e0 ldi r24, 0x09 ; 9 - 1fa6: 80 83 st Z, r24 + 1f9c: e0 5c subi r30, 0xC0 ; 192 + 1f9e: f3 4f sbci r31, 0xF3 ; 243 + 1fa0: 8b e0 ldi r24, 0x0B ; 11 + 1fa2: 80 83 st Z, r24 request_class(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:643 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:644 /* Nothing else is used unless programmed by the application. */ D1PRINTF(" SB=%04X\r\n", EP_MEM.req_data.wValue); _send_break = EP_MEM.req_data.wValue; if (_send_break) break_on(); else break_off(); EP_RES.CNT = 0; - 1fa8: 10 92 38 64 sts 0x6438, r1 ; 0x806438 - 1fac: 10 92 39 64 sts 0x6439, r1 ; 0x806439 - 1fb0: 6a cf rjmp .-300 ; 0x1e86 + 1fa4: 10 92 38 64 sts 0x6438, r1 ; 0x806438 + 1fa8: 10 92 39 64 sts 0x6439, r1 ; 0x806439 + 1fac: 6c cf rjmp .-296 ; 0x1e86 request_standard(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:542 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:543 loop_until_bit_is_clear(USB0_INTFLAGSB, USB_RMWBUSY_bp); - USB_EP_STATUS_CLR(_EP) = USB_STALLED_bm | USB_TOGGLE_bm; + USB_EP_STATUS_CLR(_EP) = USB_STALLED_bm | USB_BUSNAK_bm | USB_TOGGLE_bm; } EP_RES.CNT = 0; } else if (bRequest == 0x04) { /* SET_FEATURE */ - 1fb2: 84 30 cpi r24, 0x04 ; 4 - 1fb4: c9 f3 breq .-14 ; 0x1fa8 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:547 + 1fae: 84 30 cpi r24, 0x04 ; 4 + 1fb0: c9 f3 breq .-14 ; 0x1fa4 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:548 /* If used, it will be ignored. */ D1PRINTF(" SF=%02X:%02X\r\n", EP_MEM.req_data.wValue, EP_MEM.req_data.wIndex); EP_RES.CNT = 0; } else if (bRequest == 0x05) { /* SET_ADDRESS */ - 1fb6: 85 30 cpi r24, 0x05 ; 5 - 1fb8: 61 f4 brne .+24 ; 0x1fd2 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:548 + 1fb2: 85 30 cpi r24, 0x05 ; 5 + 1fb4: 61 f4 brne .+24 ; 0x1fce +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:549 uint8_t _addr = EP_MEM.req_data.wValue & 0x7F; - 1fba: 10 91 08 63 lds r17, 0x6308 ; 0x806308 - 1fbe: 1f 77 andi r17, 0x7F ; 127 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:549 + 1fb6: 10 91 08 63 lds r17, 0x6308 ; 0x806308 + 1fba: 1f 77 andi r17, 0x7F ; 127 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:550 ep_res_listen(); - 1fc0: 0e 94 c6 01 call 0x38c ; 0x38c + 1fbc: 0e 94 c6 01 call 0x38c ; 0x38c ep_res_pending(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:259 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:259 } bool is_ep_setup (void) { return bit_is_set(EP_REQ.STATUS, USB_EPSETUP_bp); } bool is_not_dap (void) { return bit_is_clear(EP_DPO.STATUS, USB_BUSNAK_bp); } void ep_req_pending (void) { loop_until_bit_is_set(EP_REQ.STATUS, USB_BUSNAK_bp); } void ep_res_pending (void) { loop_until_bit_is_set(EP_RES.STATUS, USB_BUSNAK_bp); } - 1fc4: 80 91 36 64 lds r24, 0x6436 ; 0x806436 - 1fc8: 81 ff sbrs r24, 1 - 1fca: fc cf rjmp .-8 ; 0x1fc4 + 1fc0: 80 91 36 64 lds r24, 0x6436 ; 0x806436 + 1fc4: 81 ff sbrs r24, 1 + 1fc6: fc cf rjmp .-8 ; 0x1fc0 request_standard(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:551 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:552 } else if (bRequest == 0x05) { /* SET_ADDRESS */ uint8_t _addr = EP_MEM.req_data.wValue & 0x7F; ep_res_listen(); ep_res_pending(); USB0_ADDR = _addr; - 1fcc: 10 93 03 0c sts 0x0C03, r17 ; 0x800c03 <__TEXT_REGION_LENGTH__+0x7f0c03> - 1fd0: eb cf rjmp .-42 ; 0x1fa8 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:555 + 1fc8: 10 93 03 0c sts 0x0C03, r17 ; 0x800c03 <__TEXT_REGION_LENGTH__+0x7f0c03> + 1fcc: eb cf rjmp .-42 ; 0x1fa4 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:556 D1PRINTF(" USB0_ADDR=%d\r\n", _addr); EP_RES.CNT = 0; } else if (bRequest == 0x06) { /* GET_DESCRIPTOR */ - 1fd2: 86 30 cpi r24, 0x06 ; 6 - 1fd4: 09 f0 breq .+2 ; 0x1fd8 - 1fd6: 1e c1 rjmp .+572 ; 0x2214 <__DATA_REGION_LENGTH__+0x214> -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:556 + 1fce: 86 30 cpi r24, 0x06 ; 6 + 1fd0: 09 f0 breq .+2 ; 0x1fd4 + 1fd2: 1e c1 rjmp .+572 ; 0x2210 <__DATA_REGION_LENGTH__+0x210> +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:557 size_t _length = EP_MEM.req_data.wLength; - 1fd8: e0 90 0c 63 lds r14, 0x630C ; 0x80630c - 1fdc: f0 90 0d 63 lds r15, 0x630D ; 0x80630d -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:557 + 1fd4: e0 90 0c 63 lds r14, 0x630C ; 0x80630c + 1fd8: f0 90 0d 63 lds r15, 0x630D ; 0x80630d +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:558 size_t _size = get_descriptor((uint8_t*)&EP_MEM.res_data, EP_MEM.req_data.wValue); - 1fe0: 80 91 08 63 lds r24, 0x6308 ; 0x806308 - 1fe4: 90 91 09 63 lds r25, 0x6309 ; 0x806309 + 1fdc: 80 91 08 63 lds r24, 0x6308 ; 0x806308 + 1fe0: 90 91 09 63 lds r25, 0x6309 ; 0x806309 get_descriptor(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:154 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:154 size_t get_descriptor (uint8_t* _buffer, uint16_t _index) { uint8_t* _pgmem = 0; size_t _size = 0; uint8_t _type = _index >> 8; if (_type == 0x01) { /* DEVICE */ - 1fe8: 91 30 cpi r25, 0x01 ; 1 - 1fea: 01 f5 brne .+64 ; 0x202c <__DATA_REGION_LENGTH__+0x2c> -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:157 + 1fe4: 91 30 cpi r25, 0x01 ; 1 + 1fe6: 01 f5 brne .+64 ; 0x2028 <__DATA_REGION_LENGTH__+0x28> +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:157 _pgmem = (uint8_t*)&device_descriptor; _size = sizeof(device_descriptor); memcpy_P(_buffer, _pgmem, _size); - 1fec: 42 e1 ldi r20, 0x12 ; 18 - 1fee: 50 e0 ldi r21, 0x00 ; 0 - 1ff0: 62 eb ldi r22, 0xB2 ; 178 - 1ff2: 71 e0 ldi r23, 0x01 ; 1 - 1ff4: 8e e0 ldi r24, 0x0E ; 14 - 1ff6: 93 e6 ldi r25, 0x63 ; 99 - 1ff8: 5e d5 rcall .+2748 ; 0x2ab6 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:158 + 1fe8: 42 e1 ldi r20, 0x12 ; 18 + 1fea: 50 e0 ldi r21, 0x00 ; 0 + 1fec: 62 eb ldi r22, 0xB2 ; 178 + 1fee: 71 e0 ldi r23, 0x01 ; 1 + 1ff0: 8e e0 ldi r24, 0x0E ; 14 + 1ff2: 93 e6 ldi r25, 0x63 ; 99 + 1ff4: 5e d5 rcall .+2748 ; 0x2ab2 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:158 uint32_t _vidpid = *((uint32_t*)EEPROM_START); - 1ffa: 80 91 00 14 lds r24, 0x1400 ; 0x801400 <__TEXT_REGION_LENGTH__+0x7f1400> - 1ffe: 90 91 01 14 lds r25, 0x1401 ; 0x801401 <__TEXT_REGION_LENGTH__+0x7f1401> - 2002: a0 91 02 14 lds r26, 0x1402 ; 0x801402 <__TEXT_REGION_LENGTH__+0x7f1402> - 2006: b0 91 03 14 lds r27, 0x1403 ; 0x801403 <__TEXT_REGION_LENGTH__+0x7f1403> -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:159 + 1ff6: 80 91 00 14 lds r24, 0x1400 ; 0x801400 <__TEXT_REGION_LENGTH__+0x7f1400> + 1ffa: 90 91 01 14 lds r25, 0x1401 ; 0x801401 <__TEXT_REGION_LENGTH__+0x7f1401> + 1ffe: a0 91 02 14 lds r26, 0x1402 ; 0x801402 <__TEXT_REGION_LENGTH__+0x7f1402> + 2002: b0 91 03 14 lds r27, 0x1403 ; 0x801403 <__TEXT_REGION_LENGTH__+0x7f1403> +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:159 if (_vidpid + 1) _CAPS32(_buffer[8])->dword = _vidpid; - 200a: 8f 3f cpi r24, 0xFF ; 255 - 200c: 4f ef ldi r20, 0xFF ; 255 - 200e: 94 07 cpc r25, r20 - 2010: a4 07 cpc r26, r20 - 2012: b4 07 cpc r27, r20 - 2014: 41 f0 breq .+16 ; 0x2026 <__DATA_REGION_LENGTH__+0x26> - 2016: 80 93 16 63 sts 0x6316, r24 ; 0x806316 - 201a: 90 93 17 63 sts 0x6317, r25 ; 0x806317 - 201e: a0 93 18 63 sts 0x6318, r26 ; 0x806318 - 2022: b0 93 19 63 sts 0x6319, r27 ; 0x806319 + 2006: 8f 3f cpi r24, 0xFF ; 255 + 2008: 4f ef ldi r20, 0xFF ; 255 + 200a: 94 07 cpc r25, r20 + 200c: a4 07 cpc r26, r20 + 200e: b4 07 cpc r27, r20 + 2010: 41 f0 breq .+16 ; 0x2022 <__DATA_REGION_LENGTH__+0x22> + 2012: 80 93 16 63 sts 0x6316, r24 ; 0x806316 + 2016: 90 93 17 63 sts 0x6317, r25 ; 0x806317 + 201a: a0 93 18 63 sts 0x6318, r26 ; 0x806318 + 201e: b0 93 19 63 sts 0x6319, r27 ; 0x806319 main(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:161 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:161 D1PRINTF(" VID:PID=%04X:%04X\r\n", _CAPS16(_buffer[8])->word, _CAPS16(_buffer[10])->word); return _size; - 2026: 02 e1 ldi r16, 0x12 ; 18 - 2028: 10 e0 ldi r17, 0x00 ; 0 - 202a: 1d c0 rjmp .+58 ; 0x2066 <__DATA_REGION_LENGTH__+0x66> + 2022: 02 e1 ldi r16, 0x12 ; 18 + 2024: 10 e0 ldi r17, 0x00 ; 0 + 2026: 1d c0 rjmp .+58 ; 0x2062 <__DATA_REGION_LENGTH__+0x62> get_descriptor(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:163 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:163 } else if (_type == 0x02) { /* CONFIGURATION */ - 202c: 92 30 cpi r25, 0x02 ; 2 - 202e: 09 f4 brne .+2 ; 0x2032 <__DATA_REGION_LENGTH__+0x32> - 2030: d9 c0 rjmp .+434 ; 0x21e4 <__DATA_REGION_LENGTH__+0x1e4> -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:167 + 2028: 92 30 cpi r25, 0x02 ; 2 + 202a: 09 f4 brne .+2 ; 0x202e <__DATA_REGION_LENGTH__+0x2e> + 202c: d9 c0 rjmp .+434 ; 0x21e0 <__DATA_REGION_LENGTH__+0x1e0> +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:167 _pgmem = (uint8_t*)¤t_descriptor; _size = sizeof(current_descriptor); } else if (_type == 0x06) { /* QUALIFIER */ - 2032: 96 30 cpi r25, 0x06 ; 6 - 2034: 09 f4 brne .+2 ; 0x2038 <__DATA_REGION_LENGTH__+0x38> - 2036: df c0 rjmp .+446 ; 0x21f6 <__DATA_REGION_LENGTH__+0x1f6> -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:171 + 202e: 96 30 cpi r25, 0x06 ; 6 + 2030: 09 f4 brne .+2 ; 0x2034 <__DATA_REGION_LENGTH__+0x34> + 2032: df c0 rjmp .+446 ; 0x21f2 <__DATA_REGION_LENGTH__+0x1f2> +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:171 _pgmem = (uint8_t*)&qualifier_descriptor; _size = sizeof(qualifier_descriptor); } else if (_type == 0x21) { /* HID */ - 2038: 91 32 cpi r25, 0x21 ; 33 - 203a: 09 f4 brne .+2 ; 0x203e <__DATA_REGION_LENGTH__+0x3e> - 203c: e1 c0 rjmp .+450 ; 0x2200 <__DATA_REGION_LENGTH__+0x200> -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:175 + 2034: 91 32 cpi r25, 0x21 ; 33 + 2036: 09 f4 brne .+2 ; 0x203a <__DATA_REGION_LENGTH__+0x3a> + 2038: e1 c0 rjmp .+450 ; 0x21fc <__DATA_REGION_LENGTH__+0x1fc> +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:175 _pgmem = (uint8_t*)¤t_descriptor + 18; _size = 9; } else if (_type == 0x22) { /* REPORT */ - 203e: 92 32 cpi r25, 0x22 ; 34 - 2040: 09 f4 brne .+2 ; 0x2044 <__DATA_REGION_LENGTH__+0x44> - 2042: e3 c0 rjmp .+454 ; 0x220a <__DATA_REGION_LENGTH__+0x20a> -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:179 + 203a: 92 32 cpi r25, 0x22 ; 34 + 203c: 09 f4 brne .+2 ; 0x2040 <__DATA_REGION_LENGTH__+0x40> + 203e: e3 c0 rjmp .+454 ; 0x2206 <__DATA_REGION_LENGTH__+0x206> +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:179 _pgmem = (uint8_t*)&report_descriptor; _size = sizeof(report_descriptor); } else if (_index == 0x0300) { /* LANGUAGE */ - 2044: 81 15 cp r24, r1 - 2046: e3 e0 ldi r30, 0x03 ; 3 - 2048: 9e 07 cpc r25, r30 - 204a: 51 f5 brne .+84 ; 0x20a0 <__DATA_REGION_LENGTH__+0xa0> -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:181 + 2040: 81 15 cp r24, r1 + 2042: e3 e0 ldi r30, 0x03 ; 3 + 2044: 9e 07 cpc r25, r30 + 2046: 51 f5 brne .+84 ; 0x209c <__DATA_REGION_LENGTH__+0x9c> +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:181 _size = 4; *_buffer++ = 4; - 204c: 84 e0 ldi r24, 0x04 ; 4 - 204e: 80 93 0e 63 sts 0x630E, r24 ; 0x80630e -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:182 + 2048: 84 e0 ldi r24, 0x04 ; 4 + 204a: 80 93 0e 63 sts 0x630E, r24 ; 0x80630e +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:182 *_buffer++ = 3; - 2052: 93 e0 ldi r25, 0x03 ; 3 - 2054: 90 93 0f 63 sts 0x630F, r25 ; 0x80630f -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:183 + 204e: 93 e0 ldi r25, 0x03 ; 3 + 2050: 90 93 0f 63 sts 0x630F, r25 ; 0x80630f +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:183 *_buffer++ = 0x09; - 2058: 99 e0 ldi r25, 0x09 ; 9 - 205a: 90 93 10 63 sts 0x6310, r25 ; 0x806310 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:184 + 2054: 99 e0 ldi r25, 0x09 ; 9 + 2056: 90 93 10 63 sts 0x6310, r25 ; 0x806310 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:184 *_buffer++ = 0x04; - 205e: 80 93 11 63 sts 0x6311, r24 ; 0x806311 + 205a: 80 93 11 63 sts 0x6311, r24 ; 0x806311 main(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:185 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:185 return _size; - 2062: 04 e0 ldi r16, 0x04 ; 4 - 2064: 10 e0 ldi r17, 0x00 ; 0 - 2066: c7 01 movw r24, r14 - 2068: 0e 15 cp r16, r14 - 206a: 1f 05 cpc r17, r15 - 206c: 08 f4 brcc .+2 ; 0x2070 <__DATA_REGION_LENGTH__+0x70> - 206e: c8 01 movw r24, r16 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:212 + 205e: 04 e0 ldi r16, 0x04 ; 4 + 2060: 10 e0 ldi r17, 0x00 ; 0 + 2062: c7 01 movw r24, r14 + 2064: 0e 15 cp r16, r14 + 2066: 1f 05 cpc r17, r15 + 2068: 08 f4 brcc .+2 ; 0x206c <__DATA_REGION_LENGTH__+0x6c> + 206a: c8 01 movw r24, r16 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:212 for (uint8_t _i = 0; _i < 4; _i++) { uint8_t _c = *_p++; *_buffer++ = btoh(_c >> 4); *_buffer++ = 0; *_buffer++ = btoh(_c ); *_buffer++ = 0; } return 22; - 2070: 98 01 movw r18, r16 - 2072: 8c 01 movw r16, r24 + 206c: 98 01 movw r18, r16 + 206e: 8c 01 movw r16, r24 request_standard(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:558 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:559 EP_RES.CNT = 0; } else if (bRequest == 0x06) { /* GET_DESCRIPTOR */ size_t _length = EP_MEM.req_data.wLength; size_t _size = get_descriptor((uint8_t*)&EP_MEM.res_data, EP_MEM.req_data.wValue); EP_RES.CNT = (_size > _length) ? _length : _size; - 2074: 00 93 38 64 sts 0x6438, r16 ; 0x806438 - 2078: 10 93 39 64 sts 0x6439, r17 ; 0x806439 + 2070: 00 93 38 64 sts 0x6438, r16 ; 0x806438 + 2074: 10 93 39 64 sts 0x6439, r17 ; 0x806439 handling_control_transactions(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:674 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:675 #ifdef _Not_being_used_STUB_ else if (bmRequestType == (2 << 5)) { _listen = request_vendor(); } #endif if (_listen) { - 207c: 23 2b or r18, r19 - 207e: 09 f0 breq .+2 ; 0x2082 <__DATA_REGION_LENGTH__+0x82> - 2080: 02 cf rjmp .-508 ; 0x1e86 + 2078: 23 2b or r18, r19 + 207a: 09 f0 breq .+2 ; 0x207e <__DATA_REGION_LENGTH__+0x7e> + 207c: 04 cf rjmp .-504 ; 0x1e86 ep0_stalled(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:360 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:360 USB_EP_STATUS_CLR(USB_EP_CDO) = ~USB_TOGGLE_bm; } void ep0_stalled (void) { D1PRINTF("[STALLED]\r\n"); loop_until_bit_is_clear(USB0_INTFLAGSB, USB_RMWBUSY_bp); - 2082: 80 91 0b 0c lds r24, 0x0C0B ; 0x800c0b <__TEXT_REGION_LENGTH__+0x7f0c0b> - 2086: 82 fd sbrc r24, 2 - 2088: fc cf rjmp .-8 ; 0x2082 <__DATA_REGION_LENGTH__+0x82> -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:361 + 207e: 80 91 0b 0c lds r24, 0x0C0B ; 0x800c0b <__TEXT_REGION_LENGTH__+0x7f0c0b> + 2082: 82 fd sbrc r24, 2 + 2084: fc cf rjmp .-8 ; 0x207e <__DATA_REGION_LENGTH__+0x7e> +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:361 USB_EP_STATUS_SET(USB_EP_RES) = USB_STALLED_bm; - 208a: 88 e0 ldi r24, 0x08 ; 8 - 208c: 80 93 43 0c sts 0x0C43, r24 ; 0x800c43 <__TEXT_REGION_LENGTH__+0x7f0c43> -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:362 + 2086: 88 e0 ldi r24, 0x08 ; 8 + 2088: 80 93 43 0c sts 0x0C43, r24 ; 0x800c43 <__TEXT_REGION_LENGTH__+0x7f0c43> +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:362 loop_until_bit_is_clear(USB0_INTFLAGSB, USB_RMWBUSY_bp); - 2090: 80 91 0b 0c lds r24, 0x0C0B ; 0x800c0b <__TEXT_REGION_LENGTH__+0x7f0c0b> - 2094: 82 fd sbrc r24, 2 - 2096: fc cf rjmp .-8 ; 0x2090 <__DATA_REGION_LENGTH__+0x90> -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:363 + 208c: 80 91 0b 0c lds r24, 0x0C0B ; 0x800c0b <__TEXT_REGION_LENGTH__+0x7f0c0b> + 2090: 82 fd sbrc r24, 2 + 2092: fc cf rjmp .-8 ; 0x208c <__DATA_REGION_LENGTH__+0x8c> +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:363 USB_EP_STATUS_SET(USB_EP_REQ) = USB_STALLED_bm; - 2098: 88 e0 ldi r24, 0x08 ; 8 - 209a: 80 93 41 0c sts 0x0C41, r24 ; 0x800c41 <__TEXT_REGION_LENGTH__+0x7f0c41> - 209e: f7 ce rjmp .-530 ; 0x1e8e + 2094: 88 e0 ldi r24, 0x08 ; 8 + 2096: 80 93 41 0c sts 0x0C41, r24 ; 0x800c41 <__TEXT_REGION_LENGTH__+0x7f0c41> + 209a: f9 ce rjmp .-526 ; 0x1e8e get_descriptor(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:188 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:188 *_buffer++ = 0x09; *_buffer++ = 0x04; return _size; } else { switch (_index) { - 20a0: 82 30 cpi r24, 0x02 ; 2 - 20a2: f3 e0 ldi r31, 0x03 ; 3 - 20a4: 9f 07 cpc r25, r31 - 20a6: 41 f1 breq .+80 ; 0x20f8 <__DATA_REGION_LENGTH__+0xf8> - 20a8: 60 f4 brcc .+24 ; 0x20c2 <__DATA_REGION_LENGTH__+0xc2> + 209c: 82 30 cpi r24, 0x02 ; 2 + 209e: f3 e0 ldi r31, 0x03 ; 3 + 20a0: 9f 07 cpc r25, r31 + 20a2: 41 f1 breq .+80 ; 0x20f4 <__DATA_REGION_LENGTH__+0xf4> + 20a4: 60 f4 brcc .+24 ; 0x20be <__DATA_REGION_LENGTH__+0xbe> main(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:189 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:189 case 0x0301: _pgmem = (uint8_t*)&vstring; _size = sizeof(vstring); break; - 20aa: 04 e3 ldi r16, 0x34 ; 52 - 20ac: 10 e0 ldi r17, 0x00 ; 0 - 20ae: 66 ee ldi r22, 0xE6 ; 230 - 20b0: 70 e0 ldi r23, 0x00 ; 0 + 20a6: 04 e3 ldi r16, 0x34 ; 52 + 20a8: 10 e0 ldi r17, 0x00 ; 0 + 20aa: 66 ee ldi r22, 0xE6 ; 230 + 20ac: 70 e0 ldi r23, 0x00 ; 0 get_descriptor(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:188 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:188 *_buffer++ = 0x09; *_buffer++ = 0x04; return _size; } else { switch (_index) { - 20b2: 81 30 cpi r24, 0x01 ; 1 - 20b4: 93 40 sbci r25, 0x03 ; 3 - 20b6: 79 f0 breq .+30 ; 0x20d6 <__DATA_REGION_LENGTH__+0xd6> + 20ae: 81 30 cpi r24, 0x01 ; 1 + 20b0: 93 40 sbci r25, 0x03 ; 3 + 20b2: 79 f0 breq .+30 ; 0x20d2 <__DATA_REGION_LENGTH__+0xd2> main(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:152 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:152 { /* FRAMENUM */ } }; size_t get_descriptor (uint8_t* _buffer, uint16_t _index) { uint8_t* _pgmem = 0; size_t _size = 0; - 20b8: 10 e0 ldi r17, 0x00 ; 0 - 20ba: 00 e0 ldi r16, 0x00 ; 0 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:151 + 20b4: 10 e0 ldi r17, 0x00 ; 0 + 20b6: 00 e0 ldi r16, 0x00 ; 0 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:151 }, { /* FRAMENUM */ } }; size_t get_descriptor (uint8_t* _buffer, uint16_t _index) { uint8_t* _pgmem = 0; - 20bc: 70 e0 ldi r23, 0x00 ; 0 - 20be: 60 e0 ldi r22, 0x00 ; 0 - 20c0: 0a c0 rjmp .+20 ; 0x20d6 <__DATA_REGION_LENGTH__+0xd6> + 20b8: 70 e0 ldi r23, 0x00 ; 0 + 20ba: 60 e0 ldi r22, 0x00 ; 0 + 20bc: 0a c0 rjmp .+20 ; 0x20d2 <__DATA_REGION_LENGTH__+0xd2> get_descriptor(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:188 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:188 *_buffer++ = 0x09; *_buffer++ = 0x04; return _size; } else { switch (_index) { - 20c2: 83 30 cpi r24, 0x03 ; 3 - 20c4: 98 07 cpc r25, r24 - 20c6: e9 f0 breq .+58 ; 0x2102 <__DATA_REGION_LENGTH__+0x102> + 20be: 83 30 cpi r24, 0x03 ; 3 + 20c0: 98 07 cpc r25, r24 + 20c2: e9 f0 breq .+58 ; 0x20fe <__DATA_REGION_LENGTH__+0xfe> main(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:191 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:191 case 0x0301: _pgmem = (uint8_t*)&vstring; _size = sizeof(vstring); break; case 0x0302: _pgmem = (uint8_t*)&mstring; _size = sizeof(mstring); break; case 0x0304: _pgmem = (uint8_t*)&istring; _size = sizeof(istring); break; - 20c8: 08 e1 ldi r16, 0x18 ; 24 - 20ca: 10 e0 ldi r17, 0x00 ; 0 - 20cc: 68 e8 ldi r22, 0x88 ; 136 - 20ce: 70 e0 ldi r23, 0x00 ; 0 + 20c4: 08 e1 ldi r16, 0x18 ; 24 + 20c6: 10 e0 ldi r17, 0x00 ; 0 + 20c8: 68 e8 ldi r22, 0x88 ; 136 + 20ca: 70 e0 ldi r23, 0x00 ; 0 get_descriptor(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:188 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:188 *_buffer++ = 0x09; *_buffer++ = 0x04; return _size; } else { switch (_index) { - 20d0: 84 30 cpi r24, 0x04 ; 4 - 20d2: 93 40 sbci r25, 0x03 ; 3 - 20d4: 89 f7 brne .-30 ; 0x20b8 <__DATA_REGION_LENGTH__+0xb8> -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:215 + 20cc: 84 30 cpi r24, 0x04 ; 4 + 20ce: 93 40 sbci r25, 0x03 ; 3 + 20d0: 89 f7 brne .-30 ; 0x20b4 <__DATA_REGION_LENGTH__+0xb4> +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:215 *_buffer++ = btoh(_c ); *_buffer++ = 0; } return 22; } } *_buffer++ = (uint8_t)_size; - 20d6: 00 93 0e 63 sts 0x630E, r16 ; 0x80630e -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:216 + 20d2: 00 93 0e 63 sts 0x630E, r16 ; 0x80630e +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:216 *_buffer++ = 3; - 20da: 83 e0 ldi r24, 0x03 ; 3 - 20dc: 80 93 0f 63 sts 0x630F, r24 ; 0x80630f -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:217 + 20d6: 83 e0 ldi r24, 0x03 ; 3 + 20d8: 80 93 0f 63 sts 0x630F, r24 ; 0x80630f +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:217 if (_size) memcpy_P(_buffer, _pgmem, _size - 2); - 20e0: a8 01 movw r20, r16 - 20e2: 42 50 subi r20, 0x02 ; 2 - 20e4: 51 09 sbc r21, r1 - 20e6: 80 e1 ldi r24, 0x10 ; 16 - 20e8: 93 e6 ldi r25, 0x63 ; 99 - 20ea: 01 15 cp r16, r1 - 20ec: 11 05 cpc r17, r1 - 20ee: 09 f0 breq .+2 ; 0x20f2 <__DATA_REGION_LENGTH__+0xf2> - 20f0: 80 c0 rjmp .+256 ; 0x21f2 <__DATA_REGION_LENGTH__+0x1f2> - 20f2: 30 e0 ldi r19, 0x00 ; 0 - 20f4: 20 e0 ldi r18, 0x00 ; 0 - 20f6: be cf rjmp .-132 ; 0x2074 <__DATA_REGION_LENGTH__+0x74> + 20dc: a8 01 movw r20, r16 + 20de: 42 50 subi r20, 0x02 ; 2 + 20e0: 51 09 sbc r21, r1 + 20e2: 80 e1 ldi r24, 0x10 ; 16 + 20e4: 93 e6 ldi r25, 0x63 ; 99 + 20e6: 01 15 cp r16, r1 + 20e8: 11 05 cpc r17, r1 + 20ea: 09 f0 breq .+2 ; 0x20ee <__DATA_REGION_LENGTH__+0xee> + 20ec: 80 c0 rjmp .+256 ; 0x21ee <__DATA_REGION_LENGTH__+0x1ee> + 20ee: 30 e0 ldi r19, 0x00 ; 0 + 20f0: 20 e0 ldi r18, 0x00 ; 0 + 20f2: be cf rjmp .-132 ; 0x2070 <__DATA_REGION_LENGTH__+0x70> main(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:190 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:190 return _size; } else { switch (_index) { case 0x0301: _pgmem = (uint8_t*)&vstring; _size = sizeof(vstring); break; case 0x0302: _pgmem = (uint8_t*)&mstring; _size = sizeof(mstring); break; - 20f8: 06 e4 ldi r16, 0x46 ; 70 - 20fa: 10 e0 ldi r17, 0x00 ; 0 - 20fc: 60 ea ldi r22, 0xA0 ; 160 - 20fe: 70 e0 ldi r23, 0x00 ; 0 - 2100: ea cf rjmp .-44 ; 0x20d6 <__DATA_REGION_LENGTH__+0xd6> + 20f4: 06 e4 ldi r16, 0x46 ; 70 + 20f6: 10 e0 ldi r17, 0x00 ; 0 + 20f8: 60 ea ldi r22, 0xA0 ; 160 + 20fa: 70 e0 ldi r23, 0x00 ; 0 + 20fc: ea cf rjmp .-44 ; 0x20d2 <__DATA_REGION_LENGTH__+0xd2> get_descriptor(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:201 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:201 * * If the 4 bytes from offset 4 of the EEPROM are anything other * than 0xFFFF:FFFF, use them, otherwise generate a 32-bit random * serial number using CRC32 from the factory information. */ uint32_t _sn = ((User_EEP_t*)EEPROM_START)->dwSerialNumber; - 2102: 40 91 04 14 lds r20, 0x1404 ; 0x801404 <__TEXT_REGION_LENGTH__+0x7f1404> - 2106: 50 91 05 14 lds r21, 0x1405 ; 0x801405 <__TEXT_REGION_LENGTH__+0x7f1405> - 210a: 60 91 06 14 lds r22, 0x1406 ; 0x801406 <__TEXT_REGION_LENGTH__+0x7f1406> - 210e: 70 91 07 14 lds r23, 0x1407 ; 0x801407 <__TEXT_REGION_LENGTH__+0x7f1407> - 2112: 49 83 std Y+1, r20 ; 0x01 - 2114: 5a 83 std Y+2, r21 ; 0x02 - 2116: 6b 83 std Y+3, r22 ; 0x03 - 2118: 7c 83 std Y+4, r23 ; 0x04 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:202 + 20fe: 40 91 04 14 lds r20, 0x1404 ; 0x801404 <__TEXT_REGION_LENGTH__+0x7f1404> + 2102: 50 91 05 14 lds r21, 0x1405 ; 0x801405 <__TEXT_REGION_LENGTH__+0x7f1405> + 2106: 60 91 06 14 lds r22, 0x1406 ; 0x801406 <__TEXT_REGION_LENGTH__+0x7f1406> + 210a: 70 91 07 14 lds r23, 0x1407 ; 0x801407 <__TEXT_REGION_LENGTH__+0x7f1407> + 210e: 49 83 std Y+1, r20 ; 0x01 + 2110: 5a 83 std Y+2, r21 ; 0x02 + 2112: 6b 83 std Y+3, r22 ; 0x03 + 2114: 7c 83 std Y+4, r23 ; 0x04 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:202 if (!(_sn + 1)) _sn = crc32((uint8_t*)SIGNATURES_START, 32); - 211a: 4f 3f cpi r20, 0xFF ; 255 - 211c: 2f ef ldi r18, 0xFF ; 255 - 211e: 52 07 cpc r21, r18 - 2120: 62 07 cpc r22, r18 - 2122: 72 07 cpc r23, r18 - 2124: 59 f5 brne .+86 ; 0x217c <__DATA_REGION_LENGTH__+0x17c> + 2116: 4f 3f cpi r20, 0xFF ; 255 + 2118: 2f ef ldi r18, 0xFF ; 255 + 211a: 52 07 cpc r21, r18 + 211c: 62 07 cpc r22, r18 + 211e: 72 07 cpc r23, r18 + 2120: 59 f5 brne .+86 ; 0x2178 <__DATA_REGION_LENGTH__+0x178> main(): /Users/askn/Library/Arduino15/packages/MultiX-Zinnia/hardware/modernAVR/0.2.14/cores/modernAVR/api/cpp/btools.cpp:210 return _crc; @@ -8459,13 +8459,13 @@ main(): uint32_t crc32 (void* _data, size_t _len) { uint32_t _crc = ~0; uint8_t* _p = (uint8_t*)_data; - 2126: e0 e8 ldi r30, 0x80 ; 128 - 2128: f0 e1 ldi r31, 0x10 ; 16 + 2122: e0 e8 ldi r30, 0x80 ; 128 + 2124: f0 e1 ldi r31, 0x10 ; 16 crc32(): /Users/askn/Library/Arduino15/packages/MultiX-Zinnia/hardware/modernAVR/0.2.14/cores/modernAVR/api/cpp/btools.cpp:211 while (_len--) _crc = _crc32_update(_crc, *_p++); - 212a: cf 01 movw r24, r30 - 212c: 01 96 adiw r24, 0x01 ; 1 + 2126: cf 01 movw r24, r30 + 2128: 01 96 adiw r24, 0x01 ; 1 _crc32_update(): /Users/askn/Library/Arduino15/packages/MultiX-Zinnia/hardware/modernAVR/0.2.14/cores/modernAVR/api/cpp/btools.cpp:201 } @@ -8474,38 +8474,38 @@ _crc32_update(): /* (0xEDB88320 rev) init -1 */ uint32_t _crc32_update (uint32_t _crc, uint8_t _data) { _crc ^= _data; - 212e: 20 81 ld r18, Z - 2130: 42 27 eor r20, r18 - 2132: e8 e0 ldi r30, 0x08 ; 8 + 212a: 20 81 ld r18, Z + 212c: 42 27 eor r20, r18 + 212e: e8 e0 ldi r30, 0x08 ; 8 /Users/askn/Library/Arduino15/packages/MultiX-Zinnia/hardware/modernAVR/0.2.14/cores/modernAVR/api/cpp/btools.cpp:203 for (uint8_t j = 0; j < 8; j++) { _crc = (_crc >> 1) ^ (0xEDB88320UL & -(_crc & 1)); - 2134: 8a 01 movw r16, r20 - 2136: 9b 01 movw r18, r22 - 2138: 36 95 lsr r19 - 213a: 27 95 ror r18 - 213c: 17 95 ror r17 - 213e: 07 95 ror r16 - 2140: 41 70 andi r20, 0x01 ; 1 - 2142: 55 27 eor r21, r21 - 2144: 66 27 eor r22, r22 - 2146: 77 27 eor r23, r23 - 2148: 70 95 com r23 - 214a: 60 95 com r22 - 214c: 50 95 com r21 - 214e: 41 95 neg r20 - 2150: 5f 4f sbci r21, 0xFF ; 255 - 2152: 6f 4f sbci r22, 0xFF ; 255 - 2154: 7f 4f sbci r23, 0xFF ; 255 - 2156: 40 72 andi r20, 0x20 ; 32 - 2158: 53 78 andi r21, 0x83 ; 131 - 215a: 68 7b andi r22, 0xB8 ; 184 - 215c: 7d 7e andi r23, 0xED ; 237 - 215e: 40 27 eor r20, r16 - 2160: 51 27 eor r21, r17 - 2162: 62 27 eor r22, r18 - 2164: 73 27 eor r23, r19 - 2166: e1 50 subi r30, 0x01 ; 1 + 2130: 8a 01 movw r16, r20 + 2132: 9b 01 movw r18, r22 + 2134: 36 95 lsr r19 + 2136: 27 95 ror r18 + 2138: 17 95 ror r17 + 213a: 07 95 ror r16 + 213c: 41 70 andi r20, 0x01 ; 1 + 213e: 55 27 eor r21, r21 + 2140: 66 27 eor r22, r22 + 2142: 77 27 eor r23, r23 + 2144: 70 95 com r23 + 2146: 60 95 com r22 + 2148: 50 95 com r21 + 214a: 41 95 neg r20 + 214c: 5f 4f sbci r21, 0xFF ; 255 + 214e: 6f 4f sbci r22, 0xFF ; 255 + 2150: 7f 4f sbci r23, 0xFF ; 255 + 2152: 40 72 andi r20, 0x20 ; 32 + 2154: 53 78 andi r21, 0x83 ; 131 + 2156: 68 7b andi r22, 0xB8 ; 184 + 2158: 7d 7e andi r23, 0xED ; 237 + 215a: 40 27 eor r20, r16 + 215c: 51 27 eor r21, r17 + 215e: 62 27 eor r22, r18 + 2160: 73 27 eor r23, r19 + 2162: e1 50 subi r30, 0x01 ; 1 /Users/askn/Library/Arduino15/packages/MultiX-Zinnia/hardware/modernAVR/0.2.14/cores/modernAVR/api/cpp/btools.cpp:202 /* x32 + x26 + x23 + x22 + x16 + x12 + x11 + x10 + x8 + x7 + x5 + x4 + x2 + x + 1 */ @@ -8513,8 +8513,8 @@ uint32_t _crc32_update (uint32_t _crc, uint8_t _data) { uint32_t _crc32_update (uint32_t _crc, uint8_t _data) { _crc ^= _data; for (uint8_t j = 0; j < 8; j++) { - 2168: 29 f7 brne .-54 ; 0x2134 <__DATA_REGION_LENGTH__+0x134> - 216a: fc 01 movw r30, r24 + 2164: 29 f7 brne .-54 ; 0x2130 <__DATA_REGION_LENGTH__+0x130> + 2166: fc 01 movw r30, r24 crc32(): /Users/askn/Library/Arduino15/packages/MultiX-Zinnia/hardware/modernAVR/0.2.14/cores/modernAVR/api/cpp/btools.cpp:211 } @@ -8523,50 +8523,50 @@ uint32_t crc32 (void* _data, size_t _len) { uint32_t _crc = ~0; uint8_t* _p = (uint8_t*)_data; while (_len--) _crc = _crc32_update(_crc, *_p++); - 216c: e0 3a cpi r30, 0xA0 ; 160 - 216e: 80 e1 ldi r24, 0x10 ; 16 - 2170: f8 07 cpc r31, r24 - 2172: d9 f6 brne .-74 ; 0x212a <__DATA_REGION_LENGTH__+0x12a> + 2168: e0 3a cpi r30, 0xA0 ; 160 + 216a: 80 e1 ldi r24, 0x10 ; 16 + 216c: f8 07 cpc r31, r24 + 216e: d9 f6 brne .-74 ; 0x2126 <__DATA_REGION_LENGTH__+0x126> get_descriptor(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:202 - 2174: 49 83 std Y+1, r20 ; 0x01 - 2176: 5a 83 std Y+2, r21 ; 0x02 - 2178: 6b 83 std Y+3, r22 ; 0x03 - 217a: 7c 83 std Y+4, r23 ; 0x04 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:204 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:202 + 2170: 49 83 std Y+1, r20 ; 0x01 + 2172: 5a 83 std Y+2, r21 ; 0x02 + 2174: 6b 83 std Y+3, r22 ; 0x03 + 2176: 7c 83 std Y+4, r23 ; 0x04 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:204 uint8_t* _p = (uint8_t*)&_sn; *_buffer++ = 22; *_buffer++ = 3; - 217c: 86 e1 ldi r24, 0x16 ; 22 - 217e: 80 93 0e 63 sts 0x630E, r24 ; 0x80630e - 2182: 83 e0 ldi r24, 0x03 ; 3 - 2184: 80 93 0f 63 sts 0x630F, r24 ; 0x80630f -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:205 + 2178: 86 e1 ldi r24, 0x16 ; 22 + 217a: 80 93 0e 63 sts 0x630E, r24 ; 0x80630e + 217e: 83 e0 ldi r24, 0x03 ; 3 + 2180: 80 93 0f 63 sts 0x630F, r24 ; 0x80630f +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:205 *_buffer++ = 'M'; *_buffer++ = 0; - 2188: 8d e4 ldi r24, 0x4D ; 77 - 218a: 80 93 10 63 sts 0x6310, r24 ; 0x806310 - 218e: 10 92 11 63 sts 0x6311, r1 ; 0x806311 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:206 + 2184: 8d e4 ldi r24, 0x4D ; 77 + 2186: 80 93 10 63 sts 0x6310, r24 ; 0x806310 + 218a: 10 92 11 63 sts 0x6311, r1 ; 0x806311 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:206 *_buffer++ = 'X'; *_buffer++ = 0; - 2192: 88 e5 ldi r24, 0x58 ; 88 - 2194: 80 93 12 63 sts 0x6312, r24 ; 0x806312 - 2198: 10 92 13 63 sts 0x6313, r1 ; 0x806313 - 219c: e4 e1 ldi r30, 0x14 ; 20 - 219e: f3 e6 ldi r31, 0x63 ; 99 - 21a0: de 01 movw r26, r28 - 21a2: 11 96 adiw r26, 0x01 ; 1 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:208 + 218e: 88 e5 ldi r24, 0x58 ; 88 + 2190: 80 93 12 63 sts 0x6312, r24 ; 0x806312 + 2194: 10 92 13 63 sts 0x6313, r1 ; 0x806313 + 2198: e4 e1 ldi r30, 0x14 ; 20 + 219a: f3 e6 ldi r31, 0x63 ; 99 + 219c: de 01 movw r26, r28 + 219e: 11 96 adiw r26, 0x01 ; 1 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:208 for (uint8_t _i = 0; _i < 4; _i++) { uint8_t _c = *_p++; - 21a4: 8d 91 ld r24, X+ -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:209 + 21a0: 8d 91 ld r24, X+ +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:209 *_buffer++ = btoh(_c >> 4); *_buffer++ = 0; - 21a6: 28 2f mov r18, r24 - 21a8: 30 e0 ldi r19, 0x00 ; 0 - 21aa: 74 e0 ldi r23, 0x04 ; 4 - 21ac: 35 95 asr r19 - 21ae: 27 95 ror r18 - 21b0: 7a 95 dec r23 - 21b2: e1 f7 brne .-8 ; 0x21ac <__DATA_REGION_LENGTH__+0x1ac> + 21a2: 28 2f mov r18, r24 + 21a4: 30 e0 ldi r19, 0x00 ; 0 + 21a6: 74 e0 ldi r23, 0x04 ; 4 + 21a8: 35 95 asr r19 + 21aa: 27 95 ror r18 + 21ac: 7a 95 dec r23 + 21ae: e1 f7 brne .-8 ; 0x21a8 <__DATA_REGION_LENGTH__+0x1a8> btoh(): /Users/askn/Library/Arduino15/packages/MultiX-Zinnia/hardware/modernAVR/0.2.14/cores/modernAVR/api/cpp/btools.cpp:69 _p++; _r--; @@ -8575,18 +8575,18 @@ btoh(): char btoh (uint8_t _x) { _x = (_x & 15) + '0'; - 21b4: 90 e3 ldi r25, 0x30 ; 48 - 21b6: 92 0f add r25, r18 + 21b0: 90 e3 ldi r25, 0x30 ; 48 + 21b2: 92 0f add r25, r18 /Users/askn/Library/Arduino15/packages/MultiX-Zinnia/hardware/modernAVR/0.2.14/cores/modernAVR/api/cpp/btools.cpp:70 if (_x > '9') _x += 7; - 21b8: 9a 33 cpi r25, 0x3A ; 58 - 21ba: 10 f0 brcs .+4 ; 0x21c0 <__DATA_REGION_LENGTH__+0x1c0> - 21bc: 97 e3 ldi r25, 0x37 ; 55 - 21be: 92 0f add r25, r18 + 21b4: 9a 33 cpi r25, 0x3A ; 58 + 21b6: 10 f0 brcs .+4 ; 0x21bc <__DATA_REGION_LENGTH__+0x1bc> + 21b8: 97 e3 ldi r25, 0x37 ; 55 + 21ba: 92 0f add r25, r18 get_descriptor(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:209 - 21c0: 90 83 st Z, r25 - 21c2: 11 82 std Z+1, r1 ; 0x01 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:209 + 21bc: 90 83 st Z, r25 + 21be: 11 82 std Z+1, r1 ; 0x01 btoh(): /Users/askn/Library/Arduino15/packages/MultiX-Zinnia/hardware/modernAVR/0.2.14/cores/modernAVR/api/cpp/btools.cpp:69 _p++; _r--; @@ -8595,1500 +8595,1500 @@ btoh(): char btoh (uint8_t _x) { _x = (_x & 15) + '0'; - 21c4: 8f 70 andi r24, 0x0F ; 15 - 21c6: 90 e3 ldi r25, 0x30 ; 48 - 21c8: 98 0f add r25, r24 + 21c0: 8f 70 andi r24, 0x0F ; 15 + 21c2: 90 e3 ldi r25, 0x30 ; 48 + 21c4: 98 0f add r25, r24 /Users/askn/Library/Arduino15/packages/MultiX-Zinnia/hardware/modernAVR/0.2.14/cores/modernAVR/api/cpp/btools.cpp:70 if (_x > '9') _x += 7; - 21ca: 9a 33 cpi r25, 0x3A ; 58 - 21cc: 10 f0 brcs .+4 ; 0x21d2 <__DATA_REGION_LENGTH__+0x1d2> - 21ce: 97 e3 ldi r25, 0x37 ; 55 - 21d0: 98 0f add r25, r24 + 21c6: 9a 33 cpi r25, 0x3A ; 58 + 21c8: 10 f0 brcs .+4 ; 0x21ce <__DATA_REGION_LENGTH__+0x1ce> + 21ca: 97 e3 ldi r25, 0x37 ; 55 + 21cc: 98 0f add r25, r24 get_descriptor(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:210 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:210 *_buffer++ = btoh(_c ); *_buffer++ = 0; - 21d2: 92 83 std Z+2, r25 ; 0x02 - 21d4: 13 82 std Z+3, r1 ; 0x03 - 21d6: 34 96 adiw r30, 0x04 ; 4 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:207 + 21ce: 92 83 std Z+2, r25 ; 0x02 + 21d0: 13 82 std Z+3, r1 ; 0x03 + 21d2: 34 96 adiw r30, 0x04 ; 4 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:207 if (!(_sn + 1)) _sn = crc32((uint8_t*)SIGNATURES_START, 32); uint8_t* _p = (uint8_t*)&_sn; *_buffer++ = 22; *_buffer++ = 3; *_buffer++ = 'M'; *_buffer++ = 0; *_buffer++ = 'X'; *_buffer++ = 0; for (uint8_t _i = 0; _i < 4; _i++) { - 21d8: 8a 16 cp r8, r26 - 21da: 9b 06 cpc r9, r27 - 21dc: 19 f7 brne .-58 ; 0x21a4 <__DATA_REGION_LENGTH__+0x1a4> + 21d4: 8a 16 cp r8, r26 + 21d6: 9b 06 cpc r9, r27 + 21d8: 19 f7 brne .-58 ; 0x21a0 <__DATA_REGION_LENGTH__+0x1a0> main(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:212 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:212 uint8_t _c = *_p++; *_buffer++ = btoh(_c >> 4); *_buffer++ = 0; *_buffer++ = btoh(_c ); *_buffer++ = 0; } return 22; - 21de: 06 e1 ldi r16, 0x16 ; 22 - 21e0: 10 e0 ldi r17, 0x00 ; 0 - 21e2: 41 cf rjmp .-382 ; 0x2066 <__DATA_REGION_LENGTH__+0x66> -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:165 + 21da: 06 e1 ldi r16, 0x16 ; 22 + 21dc: 10 e0 ldi r17, 0x00 ; 0 + 21de: 41 cf rjmp .-382 ; 0x2062 <__DATA_REGION_LENGTH__+0x62> +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:165 D1PRINTF(" VID:PID=%04X:%04X\r\n", _CAPS16(_buffer[8])->word, _CAPS16(_buffer[10])->word); return _size; } else if (_type == 0x02) { /* CONFIGURATION */ _pgmem = (uint8_t*)¤t_descriptor; _size = sizeof(current_descriptor); - 21e4: 0b e6 ldi r16, 0x6B ; 107 - 21e6: 10 e0 ldi r17, 0x00 ; 0 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:164 + 21e0: 0b e6 ldi r16, 0x6B ; 107 + 21e2: 10 e0 ldi r17, 0x00 ; 0 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:164 if (_vidpid + 1) _CAPS32(_buffer[8])->dword = _vidpid; D1PRINTF(" VID:PID=%04X:%04X\r\n", _CAPS16(_buffer[8])->word, _CAPS16(_buffer[10])->word); return _size; } else if (_type == 0x02) { /* CONFIGURATION */ _pgmem = (uint8_t*)¤t_descriptor; - 21e8: 6d e3 ldi r22, 0x3D ; 61 - 21ea: 71 e0 ldi r23, 0x01 ; 1 + 21e4: 6d e3 ldi r22, 0x3D ; 61 + 21e6: 71 e0 ldi r23, 0x01 ; 1 get_descriptor(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:220 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:220 *_buffer++ = (uint8_t)_size; *_buffer++ = 3; if (_size) memcpy_P(_buffer, _pgmem, _size - 2); return _size; } if (_size) memcpy_P(_buffer, _pgmem, _size); - 21ec: a8 01 movw r20, r16 - 21ee: 8e e0 ldi r24, 0x0E ; 14 - 21f0: 93 e6 ldi r25, 0x63 ; 99 - 21f2: 61 d4 rcall .+2242 ; 0x2ab6 - 21f4: 38 cf rjmp .-400 ; 0x2066 <__DATA_REGION_LENGTH__+0x66> + 21e8: a8 01 movw r20, r16 + 21ea: 8e e0 ldi r24, 0x0E ; 14 + 21ec: 93 e6 ldi r25, 0x63 ; 99 + 21ee: 61 d4 rcall .+2242 ; 0x2ab2 + 21f0: 38 cf rjmp .-400 ; 0x2062 <__DATA_REGION_LENGTH__+0x62> main(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:169 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:169 _pgmem = (uint8_t*)¤t_descriptor; _size = sizeof(current_descriptor); } else if (_type == 0x06) { /* QUALIFIER */ _pgmem = (uint8_t*)&qualifier_descriptor; _size = sizeof(qualifier_descriptor); - 21f6: 0a e0 ldi r16, 0x0A ; 10 - 21f8: 10 e0 ldi r17, 0x00 ; 0 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:168 + 21f2: 0a e0 ldi r16, 0x0A ; 10 + 21f4: 10 e0 ldi r17, 0x00 ; 0 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:168 else if (_type == 0x02) { /* CONFIGURATION */ _pgmem = (uint8_t*)¤t_descriptor; _size = sizeof(current_descriptor); } else if (_type == 0x06) { /* QUALIFIER */ _pgmem = (uint8_t*)&qualifier_descriptor; - 21fa: 68 ea ldi r22, 0xA8 ; 168 - 21fc: 71 e0 ldi r23, 0x01 ; 1 - 21fe: f6 cf rjmp .-20 ; 0x21ec <__DATA_REGION_LENGTH__+0x1ec> -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:173 + 21f6: 68 ea ldi r22, 0xA8 ; 168 + 21f8: 71 e0 ldi r23, 0x01 ; 1 + 21fa: f6 cf rjmp .-20 ; 0x21e8 <__DATA_REGION_LENGTH__+0x1e8> +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:173 _size = sizeof(qualifier_descriptor); } else if (_type == 0x21) { /* HID */ _pgmem = (uint8_t*)¤t_descriptor + 18; _size = 9; - 2200: 09 e0 ldi r16, 0x09 ; 9 - 2202: 10 e0 ldi r17, 0x00 ; 0 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:172 + 21fc: 09 e0 ldi r16, 0x09 ; 9 + 21fe: 10 e0 ldi r17, 0x00 ; 0 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:172 else if (_type == 0x06) { /* QUALIFIER */ _pgmem = (uint8_t*)&qualifier_descriptor; _size = sizeof(qualifier_descriptor); } else if (_type == 0x21) { /* HID */ _pgmem = (uint8_t*)¤t_descriptor + 18; - 2204: 6f e4 ldi r22, 0x4F ; 79 - 2206: 71 e0 ldi r23, 0x01 ; 1 - 2208: f1 cf rjmp .-30 ; 0x21ec <__DATA_REGION_LENGTH__+0x1ec> -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:177 + 2200: 6f e4 ldi r22, 0x4F ; 79 + 2202: 71 e0 ldi r23, 0x01 ; 1 + 2204: f1 cf rjmp .-30 ; 0x21e8 <__DATA_REGION_LENGTH__+0x1e8> +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:177 _size = 9; } else if (_type == 0x22) { /* REPORT */ _pgmem = (uint8_t*)&report_descriptor; _size = sizeof(report_descriptor); - 220a: 03 e2 ldi r16, 0x23 ; 35 - 220c: 10 e0 ldi r17, 0x00 ; 0 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:176 + 2206: 03 e2 ldi r16, 0x23 ; 35 + 2208: 10 e0 ldi r17, 0x00 ; 0 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:176 else if (_type == 0x21) { /* HID */ _pgmem = (uint8_t*)¤t_descriptor + 18; _size = 9; } else if (_type == 0x22) { /* REPORT */ _pgmem = (uint8_t*)&report_descriptor; - 220e: 6a e1 ldi r22, 0x1A ; 26 - 2210: 71 e0 ldi r23, 0x01 ; 1 - 2212: ec cf rjmp .-40 ; 0x21ec <__DATA_REGION_LENGTH__+0x1ec> + 220a: 6a e1 ldi r22, 0x1A ; 26 + 220c: 71 e0 ldi r23, 0x01 ; 1 + 220e: ec cf rjmp .-40 ; 0x21e8 <__DATA_REGION_LENGTH__+0x1e8> request_standard(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:561 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:562 size_t _length = EP_MEM.req_data.wLength; size_t _size = get_descriptor((uint8_t*)&EP_MEM.res_data, EP_MEM.req_data.wValue); EP_RES.CNT = (_size > _length) ? _length : _size; _listen = !!_size; } else if (bRequest == 0x08) { /* GET_CONFIGURATION */ - 2214: 88 30 cpi r24, 0x08 ; 8 - 2216: 49 f4 brne .+18 ; 0x222a <__DATA_REGION_LENGTH__+0x22a> -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:562 + 2210: 88 30 cpi r24, 0x08 ; 8 + 2212: 49 f4 brne .+18 ; 0x2226 <__DATA_REGION_LENGTH__+0x226> +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:563 EP_MEM.res_data[0] = _set_config; - 2218: 80 91 20 64 lds r24, 0x6420 ; 0x806420 <_set_config> - 221c: 80 93 0e 63 sts 0x630E, r24 ; 0x80630e -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:578 + 2214: 80 91 20 64 lds r24, 0x6420 ; 0x806420 <_set_config> + 2218: 80 93 0e 63 sts 0x630E, r24 ; 0x80630e +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:579 } else if (bRequest == 0x0A) { /* GET_INTREFACE */ /* It seems not to be used. */ D1PRINTF("\r\n"); EP_MEM.res_data[0] = 0; EP_RES.CNT = 1; - 2220: c0 92 38 64 sts 0x6438, r12 ; 0x806438 - 2224: d0 92 39 64 sts 0x6439, r13 ; 0x806439 - 2228: 2e ce rjmp .-932 ; 0x1e86 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:566 + 221c: c0 92 38 64 sts 0x6438, r12 ; 0x806438 + 2220: d0 92 39 64 sts 0x6439, r13 ; 0x806439 + 2224: 30 ce rjmp .-928 ; 0x1e86 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:567 else if (bRequest == 0x08) { /* GET_CONFIGURATION */ EP_MEM.res_data[0] = _set_config; D1PRINTF("\r\n", _set_config); EP_RES.CNT = 1; } else if (bRequest == 0x09) { /* SET_CONFIGURATION */ - 222a: 89 30 cpi r24, 0x09 ; 9 - 222c: 41 f4 brne .+16 ; 0x223e <__DATA_REGION_LENGTH__+0x23e> -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:568 + 2226: 89 30 cpi r24, 0x09 ; 9 + 2228: 41 f4 brne .+16 ; 0x223a <__DATA_REGION_LENGTH__+0x23a> +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:569 /* Once the USB connection is fully initiated, it will go through here. */ _set_config = (uint8_t)EP_MEM.req_data.wValue; - 222e: 80 91 08 63 lds r24, 0x6308 ; 0x806308 - 2232: 80 93 20 64 sts 0x6420, r24 ; 0x806420 <_set_config> -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:569 + 222a: 80 91 08 63 lds r24, 0x6308 ; 0x806308 + 222e: 80 93 20 64 sts 0x6420, r24 ; 0x806420 <_set_config> +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:570 bit_set(GPCONF, GPCONF_USB_bp); - 2236: e0 9a sbi 0x1c, 0 ; 28 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:570 + 2232: e0 9a sbi 0x1c, 0 ; 28 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:571 SYS::LED_HeartBeat(); - 2238: 0e 94 9e 05 call 0xb3c ; 0xb3c - 223c: b5 ce rjmp .-662 ; 0x1fa8 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:574 + 2234: 0e 94 9e 05 call 0xb3c ; 0xb3c + 2238: b5 ce rjmp .-662 ; 0x1fa4 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:575 D1PRINTF("\r\n", _set_config); EP_RES.CNT = 0; } else if (bRequest == 0x0A) { /* GET_INTREFACE */ - 223e: 8a 30 cpi r24, 0x0A ; 10 - 2240: 19 f4 brne .+6 ; 0x2248 <__DATA_REGION_LENGTH__+0x248> -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:577 + 223a: 8a 30 cpi r24, 0x0A ; 10 + 223c: 19 f4 brne .+6 ; 0x2244 <__DATA_REGION_LENGTH__+0x244> +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:578 /* It seems not to be used. */ D1PRINTF("\r\n"); EP_MEM.res_data[0] = 0; - 2242: 10 92 0e 63 sts 0x630E, r1 ; 0x80630e - 2246: ec cf rjmp .-40 ; 0x2220 <__DATA_REGION_LENGTH__+0x220> -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:580 + 223e: 10 92 0e 63 sts 0x630E, r1 ; 0x80630e + 2242: ec cf rjmp .-40 ; 0x221c <__DATA_REGION_LENGTH__+0x21c> +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:581 EP_RES.CNT = 1; } else if (bRequest == 0x0B) { /* SET_INTREFACE */ - 2248: 8b 30 cpi r24, 0x0B ; 11 - 224a: 09 f0 breq .+2 ; 0x224e <__DATA_REGION_LENGTH__+0x24e> - 224c: 1a cf rjmp .-460 ; 0x2082 <__DATA_REGION_LENGTH__+0x82> - 224e: ac ce rjmp .-680 ; 0x1fa8 + 2244: 8b 30 cpi r24, 0x0B ; 11 + 2246: 09 f0 breq .+2 ; 0x224a <__DATA_REGION_LENGTH__+0x24a> + 2248: 1a cf rjmp .-460 ; 0x207e <__DATA_REGION_LENGTH__+0x7e> + 224a: ac ce rjmp .-680 ; 0x1fa4 handling_control_transactions(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:666 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:667 if (bit_is_clear(bmRequestType, 7)) ep_req_listen(); bmRequestType &= (3 << 5); if (bmRequestType == (0 << 5)) { _listen = request_standard(); } else if (bmRequestType == (1 << 5)) { - 2250: 10 32 cpi r17, 0x20 ; 32 - 2252: 09 f0 breq .+2 ; 0x2256 <__DATA_REGION_LENGTH__+0x256> - 2254: 16 cf rjmp .-468 ; 0x2082 <__DATA_REGION_LENGTH__+0x82> + 224c: 10 32 cpi r17, 0x20 ; 32 + 224e: 09 f0 breq .+2 ; 0x2252 <__DATA_REGION_LENGTH__+0x252> + 2250: 16 cf rjmp .-468 ; 0x207e <__DATA_REGION_LENGTH__+0x7e> request_class(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:594 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:595 } /*** CDC-ACM request processing. ***/ bool request_class (void) { bool _listen = true; uint8_t bRequest = EP_MEM.req_data.bRequest; - 2256: 80 91 07 63 lds r24, 0x6307 ; 0x806307 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:595 + 2252: 80 91 07 63 lds r24, 0x6307 ; 0x806307 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:596 if (bRequest == 0x0A) { /* SET_IDLE */ - 225a: 8a 30 cpi r24, 0x0A ; 10 - 225c: 09 f4 brne .+2 ; 0x2260 <__DATA_REGION_LENGTH__+0x260> - 225e: a4 ce rjmp .-696 ; 0x1fa8 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:601 + 2256: 8a 30 cpi r24, 0x0A ; 10 + 2258: 09 f4 brne .+2 ; 0x225c <__DATA_REGION_LENGTH__+0x25c> + 225a: a4 ce rjmp .-696 ; 0x1fa4 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:602 /* This is a HID Compliance Class Request. */ /* It is called but not used. */ D1PRINTF(" IDL=%02X\r\n", (uint8_t)EP_MEM.req_data.wValue); EP_RES.CNT = 0; } else if (bRequest == 0x20) { /* SET_LINE_ENCODING */ - 2260: 80 32 cpi r24, 0x20 ; 32 - 2262: 31 f5 brne .+76 ; 0x22b0 <__DATA_REGION_LENGTH__+0x2b0> + 225c: 80 32 cpi r24, 0x20 ; 32 + 225e: 31 f5 brne .+76 ; 0x22ac <__DATA_REGION_LENGTH__+0x2ac> ep_req_pending(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:258 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:258 } } bool is_ep_setup (void) { return bit_is_set(EP_REQ.STATUS, USB_EPSETUP_bp); } bool is_not_dap (void) { return bit_is_clear(EP_DPO.STATUS, USB_BUSNAK_bp); } void ep_req_pending (void) { loop_until_bit_is_set(EP_REQ.STATUS, USB_BUSNAK_bp); } - 2264: 80 91 2e 64 lds r24, 0x642E ; 0x80642e - 2268: 81 ff sbrs r24, 1 - 226a: fc cf rjmp .-8 ; 0x2264 <__DATA_REGION_LENGTH__+0x264> + 2260: 80 91 2e 64 lds r24, 0x642E ; 0x80642e + 2264: 81 ff sbrs r24, 1 + 2266: fc cf rjmp .-8 ; 0x2260 <__DATA_REGION_LENGTH__+0x260> set_line_encoding(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/usart.cpp:175 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usart.cpp:175 SYS::LED_Flash(); } void set_line_encoding (LineEncoding_t* _buff) { /* The USART will not change unless a different setting is given. */ if (0 == memcmp(&_set_line_encoding, _buff, sizeof(LineEncoding_t))) return; - 226c: 47 e0 ldi r20, 0x07 ; 7 - 226e: 50 e0 ldi r21, 0x00 ; 0 - 2270: 6e e0 ldi r22, 0x0E ; 14 - 2272: 73 e6 ldi r23, 0x63 ; 99 - 2274: 8e e7 ldi r24, 0x7E ; 126 - 2276: 90 e6 ldi r25, 0x60 ; 96 - 2278: 79 d4 rcall .+2290 ; 0x2b6c - 227a: 89 2b or r24, r25 - 227c: 89 f0 breq .+34 ; 0x22a0 <__DATA_REGION_LENGTH__+0x2a0> + 2268: 47 e0 ldi r20, 0x07 ; 7 + 226a: 50 e0 ldi r21, 0x00 ; 0 + 226c: 6e e0 ldi r22, 0x0E ; 14 + 226e: 73 e6 ldi r23, 0x63 ; 99 + 2270: 8e e7 ldi r24, 0x7E ; 126 + 2272: 90 e6 ldi r25, 0x60 ; 96 + 2274: 79 d4 rcall .+2290 ; 0x2b68 + 2276: 89 2b or r24, r25 + 2278: 89 f0 breq .+34 ; 0x229c <__DATA_REGION_LENGTH__+0x29c> read_drop(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:466 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:466 } return _s != 0; } void read_drop (void) { if (bit_is_set(EP_CDO.STATUS, USB_BUSNAK_bp)) ep_cdo_listen(); - 227e: 80 91 5e 64 lds r24, 0x645E ; 0x80645e - 2282: 81 fd sbrc r24, 1 - 2284: 0e 94 6f 01 call 0x2de ; 0x2de + 227a: 80 91 5e 64 lds r24, 0x645E ; 0x80645e + 227e: 81 fd sbrc r24, 1 + 2280: 0e 94 6f 01 call 0x2de ; 0x2de set_line_encoding(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/usart.cpp:177 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usart.cpp:177 USB::read_drop(); USART::setup(); - 2288: aa d8 rcall .-3756 ; 0x13de -/Users/askn/Collaborator/UPDI4AVR-USB/src/usart.cpp:178 + 2284: ac d8 rcall .-3752 ; 0x13de +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usart.cpp:178 memcpy(&_set_line_encoding, _buff, sizeof(LineEncoding_t)); - 228a: 87 e0 ldi r24, 0x07 ; 7 - 228c: ee e0 ldi r30, 0x0E ; 14 - 228e: f3 e6 ldi r31, 0x63 ; 99 - 2290: ae e7 ldi r26, 0x7E ; 126 - 2292: b0 e6 ldi r27, 0x60 ; 96 - 2294: 01 90 ld r0, Z+ - 2296: 0d 92 st X+, r0 - 2298: 8a 95 dec r24 - 229a: e1 f7 brne .-8 ; 0x2294 <__DATA_REGION_LENGTH__+0x294> -/Users/askn/Collaborator/UPDI4AVR-USB/src/usart.cpp:179 + 2286: 87 e0 ldi r24, 0x07 ; 7 + 2288: ee e0 ldi r30, 0x0E ; 14 + 228a: f3 e6 ldi r31, 0x63 ; 99 + 228c: ae e7 ldi r26, 0x7E ; 126 + 228e: b0 e6 ldi r27, 0x60 ; 96 + 2290: 01 90 ld r0, Z+ + 2292: 0d 92 st X+, r0 + 2294: 8a 95 dec r24 + 2296: e1 f7 brne .-8 ; 0x2290 <__DATA_REGION_LENGTH__+0x290> +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usart.cpp:179 change_vcp(); - 229c: 0e 94 b4 05 call 0xb68 ; 0xb68 + 2298: 0e 94 b4 05 call 0xb68 ; 0xb68 request_class(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:612 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:613 /* it's probably best to do nothing. */ ep_req_pending(); USART::set_line_encoding(&EP_MEM.res_encoding); D1PRINTF(" SLE="); D1PRINTHEX(&_set_line_encoding, sizeof(LineEncoding_t)); bit_set(GPCONF, GPCONF_OPN_bp); - 22a0: e4 9a sbi 0x1c, 4 ; 28 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:613 + 229c: e4 9a sbi 0x1c, 4 ; 28 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:614 _send_count = 0; - 22a2: 10 92 22 64 sts 0x6422, r1 ; 0x806422 <_send_count> -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:614 + 229e: 10 92 22 64 sts 0x6422, r1 ; 0x806422 <_send_count> +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:615 _recv_count = 0; - 22a6: 10 92 21 64 sts 0x6421, r1 ; 0x806421 <_recv_count> -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:615 + 22a2: 10 92 21 64 sts 0x6421, r1 ; 0x806421 <_recv_count> +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:616 _sof_count = 0; - 22aa: 10 92 1f 64 sts 0x641F, r1 ; 0x80641f <_sof_count> - 22ae: 7c ce rjmp .-776 ; 0x1fa8 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:618 + 22a6: 10 92 1f 64 sts 0x641F, r1 ; 0x80641f <_sof_count> + 22aa: 7c ce rjmp .-776 ; 0x1fa4 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:619 EP_RES.CNT = 0; } else if (bRequest == 0x21) { /* GET_LINE_ENCODING */ - 22b0: 81 32 cpi r24, 0x21 ; 33 - 22b2: 29 f5 brne .+74 ; 0x22fe <__DATA_REGION_LENGTH__+0x2fe> -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:619 + 22ac: 81 32 cpi r24, 0x21 ; 33 + 22ae: 29 f5 brne .+74 ; 0x22fa <__DATA_REGION_LENGTH__+0x2fa> +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:620 memcpy(&EP_MEM.res_encoding, &_set_line_encoding, sizeof(LineEncoding_t)); - 22b4: 87 e0 ldi r24, 0x07 ; 7 - 22b6: ee e7 ldi r30, 0x7E ; 126 - 22b8: f0 e6 ldi r31, 0x60 ; 96 - 22ba: ae e0 ldi r26, 0x0E ; 14 - 22bc: b3 e6 ldi r27, 0x63 ; 99 - 22be: 01 90 ld r0, Z+ - 22c0: 0d 92 st X+, r0 - 22c2: 8a 95 dec r24 - 22c4: e1 f7 brne .-8 ; 0x22be <__DATA_REGION_LENGTH__+0x2be> -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:620 + 22b0: 87 e0 ldi r24, 0x07 ; 7 + 22b2: ee e7 ldi r30, 0x7E ; 126 + 22b4: f0 e6 ldi r31, 0x60 ; 96 + 22b6: ae e0 ldi r26, 0x0E ; 14 + 22b8: b3 e6 ldi r27, 0x63 ; 99 + 22ba: 01 90 ld r0, Z+ + 22bc: 0d 92 st X+, r0 + 22be: 8a 95 dec r24 + 22c0: e1 f7 brne .-8 ; 0x22ba <__DATA_REGION_LENGTH__+0x2ba> +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:621 if (EP_MEM.res_encoding.dwDTERate == 0) { - 22c6: 80 91 0e 63 lds r24, 0x630E ; 0x80630e - 22ca: 90 91 0f 63 lds r25, 0x630F ; 0x80630f - 22ce: a0 91 10 63 lds r26, 0x6310 ; 0x806310 - 22d2: b0 91 11 63 lds r27, 0x6311 ; 0x806311 - 22d6: 89 2b or r24, r25 - 22d8: 8a 2b or r24, r26 - 22da: 8b 2b or r24, r27 - 22dc: 59 f4 brne .+22 ; 0x22f4 <__DATA_REGION_LENGTH__+0x2f4> -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:623 + 22c2: 80 91 0e 63 lds r24, 0x630E ; 0x80630e + 22c6: 90 91 0f 63 lds r25, 0x630F ; 0x80630f + 22ca: a0 91 10 63 lds r26, 0x6310 ; 0x806310 + 22ce: b0 91 11 63 lds r27, 0x6311 ; 0x806311 + 22d2: 89 2b or r24, r25 + 22d4: 8a 2b or r24, r26 + 22d6: 8b 2b or r24, r27 + 22d8: 59 f4 brne .+22 ; 0x22f0 <__DATA_REGION_LENGTH__+0x2f0> +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:624 /* Parameters that, if incorrectly accepted, */ /* would result in division by zero must be corrected. */ EP_MEM.res_encoding.dwDTERate = 9600UL; - 22de: 40 92 0e 63 sts 0x630E, r4 ; 0x80630e - 22e2: 50 92 0f 63 sts 0x630F, r5 ; 0x80630f - 22e6: 60 92 10 63 sts 0x6310, r6 ; 0x806310 - 22ea: 70 92 11 63 sts 0x6311, r7 ; 0x806311 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:624 + 22da: 40 92 0e 63 sts 0x630E, r4 ; 0x80630e + 22de: 50 92 0f 63 sts 0x630F, r5 ; 0x80630f + 22e2: 60 92 10 63 sts 0x6310, r6 ; 0x806310 + 22e6: 70 92 11 63 sts 0x6311, r7 ; 0x806311 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:625 EP_MEM.res_encoding.bDataBits = 8; - 22ee: 88 e0 ldi r24, 0x08 ; 8 - 22f0: 80 93 14 63 sts 0x6314, r24 ; 0x806314 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:628 + 22ea: 88 e0 ldi r24, 0x08 ; 8 + 22ec: 80 93 14 63 sts 0x6314, r24 ; 0x806314 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:629 } D1PRINTF(" GLE="); D1PRINTHEX(&EP_MEM.res_encoding, sizeof(LineEncoding_t)); EP_RES.CNT = sizeof(LineEncoding_t); - 22f4: a0 92 38 64 sts 0x6438, r10 ; 0x806438 - 22f8: b0 92 39 64 sts 0x6439, r11 ; 0x806439 - 22fc: c4 cd rjmp .-1144 ; 0x1e86 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:630 + 22f0: a0 92 38 64 sts 0x6438, r10 ; 0x806438 + 22f4: b0 92 39 64 sts 0x6439, r11 ; 0x806439 + 22f8: c6 cd rjmp .-1140 ; 0x1e86 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:631 } else if (bRequest == 0x22) { /* SET_LINE_STATE */ - 22fe: 82 32 cpi r24, 0x22 ; 34 - 2300: c9 f4 brne .+50 ; 0x2334 <__DATA_REGION_LENGTH__+0x334> -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:633 + 22fa: 82 32 cpi r24, 0x22 ; 34 + 22fc: c9 f4 brne .+50 ; 0x2330 <__DATA_REGION_LENGTH__+0x330> +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:634 /* This includes the DTR and RTS settings. */ D1PRINTF(" SLS=%02X\r\n", (uint8_t)EP_MEM.req_data.wValue); USART::set_line_state((uint8_t)EP_MEM.req_data.wValue); - 2302: 80 91 08 63 lds r24, 0x6308 ; 0x806308 + 22fe: 80 91 08 63 lds r24, 0x6308 ; 0x806308 set_line_state(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/usart.cpp:191 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usart.cpp:191 void set_line_state (uint8_t _line_state) { /* If a physical port exists, it reflects DTR/RTS. */ #if defined(PIN_VCP_DTR) if (bit_is_set(_line_state, 0)) - 2306: 98 2f mov r25, r24 - 2308: 91 70 andi r25, 0x01 ; 1 - 230a: 80 ff sbrs r24, 0 - 230c: 0f c0 rjmp .+30 ; 0x232c <__DATA_REGION_LENGTH__+0x32c> -/Users/askn/Collaborator/UPDI4AVR-USB/src/usart.cpp:192 + 2302: 98 2f mov r25, r24 + 2304: 91 70 andi r25, 0x01 ; 1 + 2306: 80 ff sbrs r24, 0 + 2308: 0f c0 rjmp .+30 ; 0x2328 <__DATA_REGION_LENGTH__+0x328> +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usart.cpp:192 digitalWriteMacro(PIN_VCP_DTR, LOW); - 230e: 6c 98 cbi 0x0d, 4 ; 13 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usart.cpp:198 + 230a: 6c 98 cbi 0x0d, 4 ; 13 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usart.cpp:198 else digitalWriteMacro(PIN_VCP_DTR, HIGH); #endif #if defined(PIN_VCP_RTS) if (bit_is_set(_line_state, 1)) - 2310: 81 ff sbrs r24, 1 - 2312: 0e c0 rjmp .+28 ; 0x2330 <__DATA_REGION_LENGTH__+0x330> -/Users/askn/Collaborator/UPDI4AVR-USB/src/usart.cpp:199 + 230c: 81 ff sbrs r24, 1 + 230e: 0e c0 rjmp .+28 ; 0x232c <__DATA_REGION_LENGTH__+0x32c> +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usart.cpp:199 digitalWriteMacro(PIN_VCP_RTS, LOW); - 2314: 6d 98 cbi 0x0d, 5 ; 13 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usart.cpp:206 + 2310: 6d 98 cbi 0x0d, 5 ; 13 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usart.cpp:206 digitalWriteMacro(PIN_VCP_RTS, HIGH); #endif #if defined(CONFIG_VCP_DTR_RESET) /* If DTR is set, the device will reboot assuming the host has opened the port. */ if (!_set_line_state.bStateDTR && bit_is_set(_line_state, 0)) { - 2316: 20 91 7c 60 lds r18, 0x607C ; 0x80607c <__data_end> - 231a: 20 fd sbrc r18, 0 - 231c: 04 c0 rjmp .+8 ; 0x2326 <__DATA_REGION_LENGTH__+0x326> - 231e: 99 23 and r25, r25 - 2320: 11 f0 breq .+4 ; 0x2326 <__DATA_REGION_LENGTH__+0x326> -/Users/askn/Collaborator/UPDI4AVR-USB/src/usart.cpp:207 + 2312: 20 91 7c 60 lds r18, 0x607C ; 0x80607c <__data_end> + 2316: 20 fd sbrc r18, 0 + 2318: 04 c0 rjmp .+8 ; 0x2322 <__DATA_REGION_LENGTH__+0x322> + 231a: 99 23 and r25, r25 + 231c: 11 f0 breq .+4 ; 0x2322 <__DATA_REGION_LENGTH__+0x322> +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usart.cpp:207 bit_set(GPCONF, GPCONF_FAL_bp); - 2322: e7 9a sbi 0x1c, 7 ; 28 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usart.cpp:208 + 231e: e7 9a sbi 0x1c, 7 ; 28 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usart.cpp:208 bit_set(GPCONF, GPCONF_RIS_bp); - 2324: e6 9a sbi 0x1c, 6 ; 28 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usart.cpp:212 + 2320: e6 9a sbi 0x1c, 6 ; 28 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usart.cpp:212 } #endif _set_line_state.bValue = _line_state; - 2326: 80 93 7c 60 sts 0x607C, r24 ; 0x80607c <__data_end> - 232a: 3e ce rjmp .-900 ; 0x1fa8 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usart.cpp:194 + 2322: 80 93 7c 60 sts 0x607C, r24 ; 0x80607c <__data_end> + 2326: 3e ce rjmp .-900 ; 0x1fa4 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usart.cpp:194 #if defined(PIN_VCP_DTR) if (bit_is_set(_line_state, 0)) digitalWriteMacro(PIN_VCP_DTR, LOW); else digitalWriteMacro(PIN_VCP_DTR, HIGH); - 232c: 6c 9a sbi 0x0d, 4 ; 13 - 232e: f0 cf rjmp .-32 ; 0x2310 <__DATA_REGION_LENGTH__+0x310> -/Users/askn/Collaborator/UPDI4AVR-USB/src/usart.cpp:201 + 2328: 6c 9a sbi 0x0d, 4 ; 13 + 232a: f0 cf rjmp .-32 ; 0x230c <__DATA_REGION_LENGTH__+0x30c> +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usart.cpp:201 #if defined(PIN_VCP_RTS) if (bit_is_set(_line_state, 1)) digitalWriteMacro(PIN_VCP_RTS, LOW); else digitalWriteMacro(PIN_VCP_RTS, HIGH); - 2330: 6d 9a sbi 0x0d, 5 ; 13 - 2332: f1 cf rjmp .-30 ; 0x2316 <__DATA_REGION_LENGTH__+0x316> + 232c: 6d 9a sbi 0x0d, 5 ; 13 + 232e: f1 cf rjmp .-30 ; 0x2312 <__DATA_REGION_LENGTH__+0x312> request_class(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:636 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:637 EP_RES.CNT = 0; } else if (bRequest == 0x23) { /* SET_SEND_BREAK */ - 2334: 83 32 cpi r24, 0x23 ; 35 - 2336: 09 f0 breq .+2 ; 0x233a <__DATA_REGION_LENGTH__+0x33a> - 2338: a4 ce rjmp .-696 ; 0x2082 <__DATA_REGION_LENGTH__+0x82> -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:640 + 2330: 83 32 cpi r24, 0x23 ; 35 + 2332: 09 f0 breq .+2 ; 0x2336 <__DATA_REGION_LENGTH__+0x336> + 2334: a4 ce rjmp .-696 ; 0x207e <__DATA_REGION_LENGTH__+0x7e> +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:641 /* When the host application closes the port, it may send a BREAK=0. */ /* Nothing else is used unless programmed by the application. */ D1PRINTF(" SB=%04X\r\n", EP_MEM.req_data.wValue); _send_break = EP_MEM.req_data.wValue; - 233a: 80 91 08 63 lds r24, 0x6308 ; 0x806308 - 233e: 90 91 09 63 lds r25, 0x6309 ; 0x806309 - 2342: 80 93 23 64 sts 0x6423, r24 ; 0x806423 <_send_break> - 2346: 90 93 24 64 sts 0x6424, r25 ; 0x806424 <_send_break+0x1> -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:641 + 2336: 80 91 08 63 lds r24, 0x6308 ; 0x806308 + 233a: 90 91 09 63 lds r25, 0x6309 ; 0x806309 + 233e: 80 93 23 64 sts 0x6423, r24 ; 0x806423 <_send_break> + 2342: 90 93 24 64 sts 0x6424, r25 ; 0x806424 <_send_break+0x1> +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:642 if (_send_break) break_on(); - 234a: 89 2b or r24, r25 - 234c: 69 f0 breq .+26 ; 0x2368 <__DATA_REGION_LENGTH__+0x368> + 2346: 89 2b or r24, r25 + 2348: 69 f0 breq .+26 ; 0x2364 <__DATA_REGION_LENGTH__+0x364> break_on(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:373 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:373 ep_dpo_listen(); /* continue transaction */ } void break_on (void) { if (bit_is_set(GPCONF, GPCONF_VCP_bp) && bit_is_clear(GPCONF, GPCONF_BRK_bp)) { - 234e: e1 9b sbis 0x1c, 1 ; 28 - 2350: 09 c0 rjmp .+18 ; 0x2364 <__DATA_REGION_LENGTH__+0x364> - 2352: e3 99 sbic 0x1c, 3 ; 28 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:375 + 234a: e1 9b sbis 0x1c, 1 ; 28 + 234c: 09 c0 rjmp .+18 ; 0x2360 <__DATA_REGION_LENGTH__+0x360> + 234e: e3 99 sbic 0x1c, 3 ; 28 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:375 /* SET_SEND_BREAK is called when the port is closed successfully. */ bit_clear(GPCONF, GPCONF_OPN_bp); - 2354: 07 c0 rjmp .+14 ; 0x2364 <__DATA_REGION_LENGTH__+0x364> -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:376 + 2350: 07 c0 rjmp .+14 ; 0x2360 <__DATA_REGION_LENGTH__+0x360> +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:376 _sof_count = 0; - 2356: e4 98 cbi 0x1c, 4 ; 28 - 2358: 10 92 1f 64 sts 0x641F, r1 ; 0x80641f <_sof_count> -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:377 + 2352: e4 98 cbi 0x1c, 4 ; 28 + 2354: 10 92 1f 64 sts 0x641F, r1 ; 0x80641f <_sof_count> +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:377 USART::disable_vcp(); - 235c: 25 d8 rcall .-4022 ; 0x13a8 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:380 + 2358: 27 d8 rcall .-4018 ; 0x13a8 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:380 #ifdef CONFIG_VCP_TXD_ODM /* During Break, VCP-TxD is pulled LOW. */ pinModeMacro(PIN_VCP_TXD, OUTPUT); - 235e: 02 9a sbi 0x00, 2 ; 0 - 2360: 10 92 12 04 sts 0x0412, r1 ; 0x800412 <__TEXT_REGION_LENGTH__+0x7f0412> -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:383 + 235a: 02 9a sbi 0x00, 2 ; 0 + 235c: 10 92 12 04 sts 0x0412, r1 ; 0x800412 <__TEXT_REGION_LENGTH__+0x7f0412> +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:383 #endif } bit_set(GPCONF, GPCONF_BRK_bp); - 2364: e3 9a sbi 0x1c, 3 ; 28 - 2366: 20 ce rjmp .-960 ; 0x1fa8 + 2360: e3 9a sbi 0x1c, 3 ; 28 + 2362: 20 ce rjmp .-960 ; 0x1fa4 request_class(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:642 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:643 /* When the host application closes the port, it may send a BREAK=0. */ /* Nothing else is used unless programmed by the application. */ D1PRINTF(" SB=%04X\r\n", EP_MEM.req_data.wValue); _send_break = EP_MEM.req_data.wValue; if (_send_break) break_on(); else break_off(); - 2368: 0e 94 44 06 call 0xc88 ; 0xc88 - 236c: 1d ce rjmp .-966 ; 0x1fa8 + 2364: 0e 94 44 06 call 0xc88 ; 0xc88 + 2368: 1d ce rjmp .-966 ; 0x1fa4 main(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/main.cpp:126 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/main.cpp:126 if (USB::is_ep_setup()) USB::handling_control_transactions(); /* If SW0 was used, work here. */ if (bit_is_clear(PGCONF, PGCONF_UPDI_bp)) { if (bit_is_set(GPCONF, GPCONF_FAL_bp)) SYS::reset_enter(); else if (bit_is_set(GPCONF, GPCONF_RIS_bp)) SYS::reset_leave(); - 236e: e6 9b sbis 0x1c, 6 ; 28 - 2370: b6 cd rjmp .-1172 ; 0x1ede + 236a: e6 9b sbis 0x1c, 6 ; 28 + 236c: b8 cd rjmp .-1168 ; 0x1ede reset_leave(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:276 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:276 * This will be executed when SW0 is released. * If the VCP is operating, it will return to normal operation, * but if the USB is stopped, it will reboot at the end. */ void reset_leave (void) { if (_jtag_arch == 5) { - 2372: 80 91 88 60 lds r24, 0x6088 ; 0x806088 <_jtag_arch> - 2376: 85 30 cpi r24, 0x05 ; 5 - 2378: 21 f4 brne .+8 ; 0x2382 <__DATA_REGION_LENGTH__+0x382> -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:277 + 236e: 80 91 88 60 lds r24, 0x6088 ; 0x806088 <_jtag_arch> + 2372: 85 30 cpi r24, 0x05 ; 5 + 2374: 21 f4 brne .+8 ; 0x237e <__DATA_REGION_LENGTH__+0x37e> +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:277 _updi_bitmap[10] = 0x00; /* SYSRUN */ - 237a: 10 92 24 60 sts 0x6024, r1 ; 0x806024 -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:278 + 2376: 10 92 24 60 sts 0x6024, r1 ; 0x806024 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:278 send_bitmap(_updi_bitmap, sizeof(_updi_bitmap) * 8); - 237e: 0e 94 41 01 call 0x282 ; 0x282 -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:280 + 237a: 0e 94 41 01 call 0x282 ; 0x282 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:280 } openDrainWriteMacro(PIN_PG_TRST, HIGH); - 2382: 01 98 cbi 0x00, 1 ; 0 + 237e: 01 98 cbi 0x00, 1 ; 0 delay_millis(): /Users/askn/Library/Arduino15/packages/MultiX-Zinnia/hardware/modernAVR/0.2.14/cores/modernAVR/api/delay_busywait.h:42 - 2384: 9f e7 ldi r25, 0x7F ; 127 - 2386: ea e1 ldi r30, 0x1A ; 26 - 2388: f6 e0 ldi r31, 0x06 ; 6 - 238a: 91 50 subi r25, 0x01 ; 1 - 238c: e0 40 sbci r30, 0x00 ; 0 - 238e: f0 40 sbci r31, 0x00 ; 0 - 2390: e1 f7 brne .-8 ; 0x238a <__DATA_REGION_LENGTH__+0x38a> - 2392: 00 c0 rjmp .+0 ; 0x2394 <__DATA_REGION_LENGTH__+0x394> - 2394: 00 00 nop + 2380: 9f e7 ldi r25, 0x7F ; 127 + 2382: ea e1 ldi r30, 0x1A ; 26 + 2384: f6 e0 ldi r31, 0x06 ; 6 + 2386: 91 50 subi r25, 0x01 ; 1 + 2388: e0 40 sbci r30, 0x00 ; 0 + 238a: f0 40 sbci r31, 0x00 ; 0 + 238c: e1 f7 brne .-8 ; 0x2386 <__DATA_REGION_LENGTH__+0x386> + 238e: 00 c0 rjmp .+0 ; 0x2390 <__DATA_REGION_LENGTH__+0x390> + 2390: 00 00 nop reset_leave(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:286 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:286 #ifdef CONFIG_VCP_DTR_RESET /* A delay of 64ms or more between when the bootloader starts and when RxD opens. */ delay_millis(100); #endif D1PRINTF("\r\n"); if (bit_is_set(GPCONF, GPCONF_USB_bp)) - 2396: e0 9b sbis 0x1c, 0 ; 28 - 2398: 05 c0 rjmp .+10 ; 0x23a4 <__DATA_REGION_LENGTH__+0x3a4> -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:287 + 2392: e0 9b sbis 0x1c, 0 ; 28 + 2394: 05 c0 rjmp .+10 ; 0x23a0 <__DATA_REGION_LENGTH__+0x3a0> +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:287 LED_HeartBeat(); /* The USB is ready. */ - 239a: 0e 94 9e 05 call 0xb3c ; 0xb3c -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:292 + 2396: 0e 94 9e 05 call 0xb3c ; 0xb3c +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:292 else if (!USB0_ADDR) reboot(); /* USB disconnected, System reboot. */ else LED_Flash(); /* USB is not yet enabled. */ bit_clear(GPCONF, GPCONF_FAL_bp); - 239e: e7 98 cbi 0x1c, 7 ; 28 -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:293 + 239a: e7 98 cbi 0x1c, 7 ; 28 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:293 bit_clear(GPCONF, GPCONF_RIS_bp); - 23a0: e6 98 cbi 0x1c, 6 ; 28 - 23a2: 9d cd rjmp .-1222 ; 0x1ede -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:288 + 239c: e6 98 cbi 0x1c, 6 ; 28 + 239e: 9f cd rjmp .-1218 ; 0x1ede +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:288 delay_millis(100); #endif D1PRINTF("\r\n"); if (bit_is_set(GPCONF, GPCONF_USB_bp)) LED_HeartBeat(); /* The USB is ready. */ else if (!USB0_ADDR) - 23a4: 80 91 03 0c lds r24, 0x0C03 ; 0x800c03 <__TEXT_REGION_LENGTH__+0x7f0c03> - 23a8: 81 11 cpse r24, r1 - 23aa: 06 c0 rjmp .+12 ; 0x23b8 <__DATA_REGION_LENGTH__+0x3b8> + 23a0: 80 91 03 0c lds r24, 0x0C03 ; 0x800c03 <__TEXT_REGION_LENGTH__+0x7f0c03> + 23a4: 81 11 cpse r24, r1 + 23a6: 06 c0 rjmp .+12 ; 0x23b4 <__DATA_REGION_LENGTH__+0x3b4> reboot(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:306 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:306 void reboot (void) { #if defined(DEBUG) D0PRINTF("\r\n"); Serial.flush(); #endif _PROTECTED_WRITE(RSTCTRL_SWRR, 1); - 23ac: 88 ed ldi r24, 0xD8 ; 216 - 23ae: 91 e0 ldi r25, 0x01 ; 1 - 23b0: 84 bf out 0x34, r24 ; 52 - 23b2: 90 93 41 00 sts 0x0041, r25 ; 0x800041 <__TEXT_REGION_LENGTH__+0x7f0041> - 23b6: f3 cf rjmp .-26 ; 0x239e <__DATA_REGION_LENGTH__+0x39e> + 23a8: 88 ed ldi r24, 0xD8 ; 216 + 23aa: 91 e0 ldi r25, 0x01 ; 1 + 23ac: 84 bf out 0x34, r24 ; 52 + 23ae: 90 93 41 00 sts 0x0041, r25 ; 0x800041 <__TEXT_REGION_LENGTH__+0x7f0041> + 23b2: f3 cf rjmp .-26 ; 0x239a <__DATA_REGION_LENGTH__+0x39a> reset_leave(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:291 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:291 if (bit_is_set(GPCONF, GPCONF_USB_bp)) LED_HeartBeat(); /* The USB is ready. */ else if (!USB0_ADDR) reboot(); /* USB disconnected, System reboot. */ else LED_Flash(); /* USB is not yet enabled. */ - 23b8: 0e 94 89 05 call 0xb12 ; 0xb12 - 23bc: f0 cf rjmp .-32 ; 0x239e <__DATA_REGION_LENGTH__+0x39e> + 23b4: 0e 94 89 05 call 0xb12 ; 0xb12 + 23b8: f0 cf rjmp .-32 ; 0x239a <__DATA_REGION_LENGTH__+0x39a> read_byte(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:443 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:443 else ep_cdi_listen(); } uint8_t read_byte (void) { uint8_t _c = 0; if (EP_CDO.CNT != _recv_count) { - 23be: 40 91 60 64 lds r20, 0x6460 ; 0x806460 - 23c2: 50 91 61 64 lds r21, 0x6461 ; 0x806461 - 23c6: 28 2f mov r18, r24 - 23c8: 30 e0 ldi r19, 0x00 ; 0 + 23ba: 40 91 60 64 lds r20, 0x6460 ; 0x806460 + 23be: 50 91 61 64 lds r21, 0x6461 ; 0x806461 + 23c2: 28 2f mov r18, r24 + 23c4: 30 e0 ldi r19, 0x00 ; 0 main(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:442 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:442 if (_send_count < 64) _sof_count = 30; else ep_cdi_listen(); } uint8_t read_byte (void) { uint8_t _c = 0; - 23ca: 10 e0 ldi r17, 0x00 ; 0 + 23c6: 10 e0 ldi r17, 0x00 ; 0 read_byte(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:443 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:443 if (EP_CDO.CNT != _recv_count) { - 23cc: 42 17 cp r20, r18 - 23ce: 53 07 cpc r21, r19 - 23d0: 39 f0 breq .+14 ; 0x23e0 <__DATA_REGION_LENGTH__+0x3e0> -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:450 + 23c8: 42 17 cp r20, r18 + 23ca: 53 07 cpc r21, r19 + 23cc: 39 f0 breq .+14 ; 0x23dc <__DATA_REGION_LENGTH__+0x3dc> +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:450 if (_recv_count == 0) { D2PRINTF(" VO=%02X:", EP_CDO.CNT); D2PRINTHEX(&EP_MEM.cdo_data, EP_CDO.CNT); } #endif _c = EP_MEM.cdo_data[_recv_count++]; - 23d2: 8f 5f subi r24, 0xFF ; 255 - 23d4: 80 93 21 64 sts 0x6421, r24 ; 0x806421 <_recv_count> - 23d8: 22 5a subi r18, 0xA2 ; 162 - 23da: 3c 49 sbci r19, 0x9C ; 156 - 23dc: f9 01 movw r30, r18 - 23de: 10 81 ld r17, Z -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:452 + 23ce: 8f 5f subi r24, 0xFF ; 255 + 23d0: 80 93 21 64 sts 0x6421, r24 ; 0x806421 <_recv_count> + 23d4: 22 5a subi r18, 0xA2 ; 162 + 23d6: 3c 49 sbci r19, 0x9C ; 156 + 23d8: f9 01 movw r30, r18 + 23da: 10 81 ld r17, Z +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:452 } if (EP_CDO.CNT == _recv_count) ep_cdo_listen(); - 23e0: 80 91 60 64 lds r24, 0x6460 ; 0x806460 - 23e4: 90 91 61 64 lds r25, 0x6461 ; 0x806461 - 23e8: 20 91 21 64 lds r18, 0x6421 ; 0x806421 <_recv_count> - 23ec: 28 17 cp r18, r24 - 23ee: 19 06 cpc r1, r25 - 23f0: 11 f4 brne .+4 ; 0x23f6 <__DATA_REGION_LENGTH__+0x3f6> - 23f2: 0e 94 6f 01 call 0x2de ; 0x2de + 23dc: 80 91 60 64 lds r24, 0x6460 ; 0x806460 + 23e0: 90 91 61 64 lds r25, 0x6461 ; 0x806461 + 23e4: 20 91 21 64 lds r18, 0x6421 ; 0x806421 <_recv_count> + 23e8: 28 17 cp r18, r24 + 23ea: 19 06 cpc r1, r25 + 23ec: 11 f4 brne .+4 ; 0x23f2 <__DATA_REGION_LENGTH__+0x3f2> + 23ee: 0e 94 6f 01 call 0x2de ; 0x2de vcp_transceiver(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:503 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:503 #if defined(CONFIG_VCP_CTS_ENABLE) && !digitalReadMacro(PIN_VCP_CTS) #endif && bit_is_set(USART0_STATUS, USART_DREIF_bp) && read_available()) { USART0_TXDATAL = read_byte(); - 23f6: 10 93 02 08 sts 0x0802, r17 ; 0x800802 <__TEXT_REGION_LENGTH__+0x7f0802> - 23fa: 8b cd rjmp .-1258 ; 0x1f12 + 23f2: 10 93 02 08 sts 0x0802, r17 ; 0x800802 <__TEXT_REGION_LENGTH__+0x7f0802> + 23f6: 8d cd rjmp .-1254 ; 0x1f12 read_drop(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:466 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:466 } return _s != 0; } void read_drop (void) { if (bit_is_set(EP_CDO.STATUS, USB_BUSNAK_bp)) ep_cdo_listen(); - 23fc: 80 91 5e 64 lds r24, 0x645E ; 0x80645e - 2400: 81 ff sbrs r24, 1 - 2402: 87 cd rjmp .-1266 ; 0x1f12 - 2404: 84 cd rjmp .-1272 ; 0x1f0e + 23f8: 80 91 5e 64 lds r24, 0x645E ; 0x80645e + 23fc: 81 ff sbrs r24, 1 + 23fe: 89 cd rjmp .-1262 ; 0x1f12 + 2400: 86 cd rjmp .-1268 ; 0x1f0e cci_break_count(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:404 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:404 _send_break -= USB_CCI_INTERVAL; if (bit_is_set(EP_CCI.STATUS, USB_BUSNAK_bp)) ep_cci_listen(); } else { _send_break = 0; - 2406: 10 92 23 64 sts 0x6423, r1 ; 0x806423 <_send_break> - 240a: 10 92 24 64 sts 0x6424, r1 ; 0x806424 <_send_break+0x1> -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:405 + 2402: 10 92 23 64 sts 0x6423, r1 ; 0x806423 <_send_break> + 2406: 10 92 24 64 sts 0x6424, r1 ; 0x806424 <_send_break+0x1> +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:405 break_off(); - 240e: 0e 94 44 06 call 0xc88 ; 0xc88 - 2412: 99 cd rjmp .-1230 ; 0x1f46 + 240a: 0e 94 44 06 call 0xc88 ; 0xc88 + 240e: 9b cd rjmp .-1226 ; 0x1f46 dap_command_check(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:67 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:67 * A maximum of 15 chunks is possible, * resulting in a maximum payload length of 900 bytes. */ if (_cmd == 0x80) { /* DAP_EDBG_VENDOR_AVR_CMD */ uint8_t _endf = _sub & 0x0F; uint8_t _frag = _sub >> 4; - 2414: 90 e0 ldi r25, 0x00 ; 0 - 2416: 64 e0 ldi r22, 0x04 ; 4 - 2418: 95 95 asr r25 - 241a: 87 95 ror r24 - 241c: 6a 95 dec r22 - 241e: e1 f7 brne .-8 ; 0x2418 <__DATA_REGION_LENGTH__+0x418> - 2420: 28 2e mov r2, r24 -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:68 + 2410: 90 e0 ldi r25, 0x00 ; 0 + 2412: 64 e0 ldi r22, 0x04 ; 4 + 2414: 95 95 asr r25 + 2416: 87 95 ror r24 + 2418: 6a 95 dec r22 + 241a: e1 f7 brne .-8 ; 0x2414 <__DATA_REGION_LENGTH__+0x414> + 241c: 28 2e mov r2, r24 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:68 uint8_t _size = EP_MEM.dap_data[3]; - 2422: e0 90 21 63 lds r14, 0x6321 ; 0x806321 -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:77 + 241e: e0 90 21 63 lds r14, 0x6321 ; 0x806321 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:77 D1PRINTF("\r\n"); EP_MEM.dap_data[1] = 0x00; /* EDBG_RSP_FAIL */ } else { /* Detect the first chunk. */ if (_frag == 1) _packet_chunks = 0; - 2426: 21 e0 ldi r18, 0x01 ; 1 - 2428: 82 13 cpse r24, r18 - 242a: 02 c0 rjmp .+4 ; 0x2430 <__DATA_REGION_LENGTH__+0x430> - 242c: 10 92 86 60 sts 0x6086, r1 ; 0x806086 <_packet_chunks> -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:69 + 2422: 21 e0 ldi r18, 0x01 ; 1 + 2424: 82 13 cpse r24, r18 + 2426: 02 c0 rjmp .+4 ; 0x242c <__DATA_REGION_LENGTH__+0x42c> + 2428: 10 92 86 60 sts 0x6086, r1 ; 0x806086 <_packet_chunks> +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:69 */ if (_cmd == 0x80) { /* DAP_EDBG_VENDOR_AVR_CMD */ uint8_t _endf = _sub & 0x0F; uint8_t _frag = _sub >> 4; uint8_t _size = EP_MEM.dap_data[3]; size_t _ofst = (_frag - 1) * 60; - 2430: 01 97 sbiw r24, 0x01 ; 1 - 2432: 2c e3 ldi r18, 0x3C ; 60 - 2434: 28 9f mul r18, r24 - 2436: 80 01 movw r16, r0 - 2438: 29 9f mul r18, r25 - 243a: 10 0d add r17, r0 - 243c: 11 24 eor r1, r1 -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:78 + 242c: 01 97 sbiw r24, 0x01 ; 1 + 242e: 2c e3 ldi r18, 0x3C ; 60 + 2430: 28 9f mul r18, r24 + 2432: 80 01 movw r16, r0 + 2434: 29 9f mul r18, r25 + 2436: 10 0d add r17, r0 + 2438: 11 24 eor r1, r1 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:78 EP_MEM.dap_data[1] = 0x00; /* EDBG_RSP_FAIL */ } else { /* Detect the first chunk. */ if (_frag == 1) _packet_chunks = 0; ++_packet_chunks; - 243e: 80 91 86 60 lds r24, 0x6086 ; 0x806086 <_packet_chunks> - 2442: 33 24 eor r3, r3 - 2444: 33 94 inc r3 - 2446: 38 0e add r3, r24 - 2448: 30 92 86 60 sts 0x6086, r3 ; 0x806086 <_packet_chunks> -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:79 + 243a: 80 91 86 60 lds r24, 0x6086 ; 0x806086 <_packet_chunks> + 243e: 33 24 eor r3, r3 + 2440: 33 94 inc r3 + 2442: 38 0e add r3, r24 + 2444: 30 92 86 60 sts 0x6086, r3 ; 0x806086 <_packet_chunks> +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:79 memcpy(&packet.rawData[_ofst], &EP_MEM.dap_data[4], _size); - 244c: f1 2c mov r15, r1 - 244e: a7 01 movw r20, r14 - 2450: 62 e2 ldi r22, 0x22 ; 34 - 2452: 73 e6 ldi r23, 0x63 ; 99 - 2454: c8 01 movw r24, r16 - 2456: 82 54 subi r24, 0x42 ; 66 - 2458: 9f 49 sbci r25, 0x9F ; 159 - 245a: 95 d3 rcall .+1834 ; 0x2b86 -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:80 + 2448: f1 2c mov r15, r1 + 244a: a7 01 movw r20, r14 + 244c: 62 e2 ldi r22, 0x22 ; 34 + 244e: 73 e6 ldi r23, 0x63 ; 99 + 2450: c8 01 movw r24, r16 + 2452: 82 54 subi r24, 0x42 ; 66 + 2454: 9f 49 sbci r25, 0x9F ; 159 + 2456: 95 d3 rcall .+1834 ; 0x2b82 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:80 EP_MEM.dap_data[1] = 0x01; /* EDBG_RSP_OK */ - 245c: 81 e0 ldi r24, 0x01 ; 1 - 245e: 80 93 1f 63 sts 0x631F, r24 ; 0x80631f -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:82 + 2458: 81 e0 ldi r24, 0x01 ; 1 + 245a: 80 93 1f 63 sts 0x631F, r24 ; 0x80631f +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:82 D3PRINTHEX(&EP_MEM.dap_data, _size + 4); if (_endf == _frag) { /* end of defragment */ - 2462: 4d 81 ldd r20, Y+5 ; 0x05 - 2464: 42 11 cpse r20, r2 - 2466: 86 cd rjmp .-1268 ; 0x1f74 -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:83 + 245e: 4d 81 ldd r20, Y+5 ; 0x05 + 2460: 42 11 cpse r20, r2 + 2462: 88 cd rjmp .-1264 ; 0x1f74 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:83 _packet_length = _ofst + _size; - 2468: 0e 0d add r16, r14 - 246a: 1f 1d adc r17, r15 - 246c: 00 93 8b 60 sts 0x608B, r16 ; 0x80608b <_packet_length> - 2470: 10 93 8c 60 sts 0x608C, r17 ; 0x80608c <_packet_length+0x1> -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:86 + 2464: 0e 0d add r16, r14 + 2466: 1f 1d adc r17, r15 + 2468: 00 93 8b 60 sts 0x608B, r16 ; 0x80608b <_packet_length> + 246c: 10 93 8c 60 sts 0x608C, r17 ; 0x80608c <_packet_length+0x1> +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:86 D2PRINTF(" SQ=%03X:%03X<", packet.out.sequence, _packet_length); D2PRINTHEX(&packet, _packet_length); if (_packet_chunks == _endf) { - 2474: 8d 81 ldd r24, Y+5 ; 0x05 - 2476: 83 11 cpse r24, r3 - 2478: 7b cd rjmp .-1290 ; 0x1f70 -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:89 + 2470: 8d 81 ldd r24, Y+5 ; 0x05 + 2472: 83 11 cpse r24, r3 + 2474: 7d cd rjmp .-1286 ; 0x1f70 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:89 /* True if an EDBG Payload is received. */ D2PRINTF("\r\n"); _packet_endfrag = 0; - 247a: 10 92 89 60 sts 0x6089, r1 ; 0x806089 <_packet_endfrag> + 2476: 10 92 89 60 sts 0x6089, r1 ; 0x806089 <_packet_endfrag> main(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:90 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:90 _result = true; - 247e: 01 e0 ldi r16, 0x01 ; 1 + 247a: 01 e0 ldi r16, 0x01 ; 1 ep_dpi_listen(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:279 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:279 loop_until_bit_is_clear(USB0_INTFLAGSB, USB_RMWBUSY_bp); USB_EP_STATUS_CLR(USB_EP_RES) = ~USB_TOGGLE_bm; } void ep_dpi_listen (void) { EP_DPI.CNT = 64; - 2480: 80 e4 ldi r24, 0x40 ; 64 - 2482: 90 e0 ldi r25, 0x00 ; 0 - 2484: 80 93 48 64 sts 0x6448, r24 ; 0x806448 - 2488: 90 93 49 64 sts 0x6449, r25 ; 0x806449 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:280 + 247c: 80 e4 ldi r24, 0x40 ; 64 + 247e: 90 e0 ldi r25, 0x00 ; 0 + 2480: 80 93 48 64 sts 0x6448, r24 ; 0x806448 + 2484: 90 93 49 64 sts 0x6449, r25 ; 0x806449 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:280 EP_DPI.MCNT = 0; - 248c: 10 92 4c 64 sts 0x644C, r1 ; 0x80644c - 2490: 10 92 4d 64 sts 0x644D, r1 ; 0x80644d -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:281 + 2488: 10 92 4c 64 sts 0x644C, r1 ; 0x80644c + 248c: 10 92 4d 64 sts 0x644D, r1 ; 0x80644d +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:281 loop_until_bit_is_clear(USB0_INTFLAGSB, USB_RMWBUSY_bp); - 2494: 80 91 0b 0c lds r24, 0x0C0B ; 0x800c0b <__TEXT_REGION_LENGTH__+0x7f0c0b> - 2498: 82 fd sbrc r24, 2 - 249a: fc cf rjmp .-8 ; 0x2494 <__DATA_REGION_LENGTH__+0x494> -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:282 + 2490: 80 91 0b 0c lds r24, 0x0C0B ; 0x800c0b <__TEXT_REGION_LENGTH__+0x7f0c0b> + 2494: 82 fd sbrc r24, 2 + 2496: fc cf rjmp .-8 ; 0x2490 <__DATA_REGION_LENGTH__+0x490> +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:282 USB_EP_STATUS_CLR(USB_EP_DPI) = ~USB_TOGGLE_bm; - 249c: 8e ef ldi r24, 0xFE ; 254 - 249e: 80 93 46 0c sts 0x0C46, r24 ; 0x800c46 <__TEXT_REGION_LENGTH__+0x7f0c46> + 2498: 8e ef ldi r24, 0xFE ; 254 + 249a: 80 93 46 0c sts 0x0C46, r24 ; 0x800c46 <__TEXT_REGION_LENGTH__+0x7f0c46> ep_dpo_listen(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:286 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:286 } void ep_dpo_listen (void) { EP_DPO.CNT = 0; - 24a2: 10 92 50 64 sts 0x6450, r1 ; 0x806450 - 24a6: 10 92 51 64 sts 0x6451, r1 ; 0x806451 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:287 + 249e: 10 92 50 64 sts 0x6450, r1 ; 0x806450 + 24a2: 10 92 51 64 sts 0x6451, r1 ; 0x806451 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:287 loop_until_bit_is_clear(USB0_INTFLAGSB, USB_RMWBUSY_bp); - 24aa: 80 91 0b 0c lds r24, 0x0C0B ; 0x800c0b <__TEXT_REGION_LENGTH__+0x7f0c0b> - 24ae: 82 fd sbrc r24, 2 - 24b0: fc cf rjmp .-8 ; 0x24aa <__DATA_REGION_LENGTH__+0x4aa> -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:288 + 24a6: 80 91 0b 0c lds r24, 0x0C0B ; 0x800c0b <__TEXT_REGION_LENGTH__+0x7f0c0b> + 24aa: 82 fd sbrc r24, 2 + 24ac: fc cf rjmp .-8 ; 0x24a6 <__DATA_REGION_LENGTH__+0x4a6> +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:288 USB_EP_STATUS_CLR(USB_EP_DPO) = ~USB_TOGGLE_bm; - 24b2: 8e ef ldi r24, 0xFE ; 254 - 24b4: 80 93 48 0c sts 0x0C48, r24 ; 0x800c48 <__TEXT_REGION_LENGTH__+0x7f0c48> + 24ae: 8e ef ldi r24, 0xFE ; 254 + 24b0: 80 93 48 0c sts 0x0C48, r24 ; 0x800c48 <__TEXT_REGION_LENGTH__+0x7f0c48> main(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/main.cpp:151 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/main.cpp:151 /*** If CMSIS-DAP is not received, return to the top. ***/ if (USB::is_not_dap()) continue; /*** CMSIS-DAP and JTAG3 packet receiver ***/ if (JTAG::dap_command_check()) JTAG::jtag_scope_branch(); - 24b8: 00 23 and r16, r16 - 24ba: 09 f4 brne .+2 ; 0x24be <__DATA_REGION_LENGTH__+0x4be> - 24bc: 7b cc rjmp .-1802 ; 0x1db4 + 24b4: 00 23 and r16, r16 + 24b6: 09 f4 brne .+2 ; 0x24ba <__DATA_REGION_LENGTH__+0x4ba> + 24b8: 7d cc rjmp .-1798 ; 0x1db4 jtag_scope_branch(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:384 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:384 /* Processing branches depending on the scope specifier. */ /* Currently, four types of scope are known: */ void jtag_scope_branch (void) { size_t _rspsize = 0; uint8_t _scope = packet.out.scope; - 24be: 80 91 c2 60 lds r24, 0x60C2 ; 0x8060c2 -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:390 + 24ba: 80 91 c2 60 lds r24, 0x60C2 ; 0x8060c2 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:390 D1PRINTF("SCOPE=%02X,C=%02X,S=%02X,L=%02X\r\n", _scope, packet.out.cmd, packet.out.section, packet.out.index); if (_scope == 0x01) _rspsize = jtag_scope_general(); /* SCOPE_GENERAL */ - 24c2: 81 30 cpi r24, 0x01 ; 1 - 24c4: 09 f0 breq .+2 ; 0x24c8 <__DATA_REGION_LENGTH__+0x4c8> - 24c6: c7 c0 rjmp .+398 ; 0x2656 <__DATA_REGION_LENGTH__+0x656> + 24be: 81 30 cpi r24, 0x01 ; 1 + 24c0: 09 f0 breq .+2 ; 0x24c4 <__DATA_REGION_LENGTH__+0x4c4> + 24c2: c7 c0 rjmp .+398 ; 0x2652 <__DATA_REGION_LENGTH__+0x652> jtag_scope_general(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:175 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:175 } /*** Only a subset of JTAGICE3 commands are implemented. ***/ size_t jtag_scope_general (void) { size_t _rspsize = 0; uint8_t _cmd = packet.out.cmd; - 24c8: 80 91 c3 60 lds r24, 0x60C3 ; 0x8060c3 -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:179 + 24c4: 80 91 c3 60 lds r24, 0x60C3 ; 0x8060c3 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:179 uint8_t _section = packet.out.section; uint8_t _index = packet.out.index; uint8_t _length = packet.out.length; if (_cmd == 0x02) { /* CMD3_GET_PARAMETER */ - 24cc: 82 30 cpi r24, 0x02 ; 2 - 24ce: 09 f0 breq .+2 ; 0x24d2 <__DATA_REGION_LENGTH__+0x4d2> - 24d0: b2 c0 rjmp .+356 ; 0x2636 <__DATA_REGION_LENGTH__+0x636> -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:176 + 24c8: 82 30 cpi r24, 0x02 ; 2 + 24ca: 09 f0 breq .+2 ; 0x24ce <__DATA_REGION_LENGTH__+0x4ce> + 24cc: b2 c0 rjmp .+356 ; 0x2632 <__DATA_REGION_LENGTH__+0x632> +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:176 /*** Only a subset of JTAGICE3 commands are implemented. ***/ size_t jtag_scope_general (void) { size_t _rspsize = 0; uint8_t _cmd = packet.out.cmd; uint8_t _section = packet.out.section; - 24d2: 80 91 c5 60 lds r24, 0x60C5 ; 0x8060c5 -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:177 + 24ce: 80 91 c5 60 lds r24, 0x60C5 ; 0x8060c5 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:177 uint8_t _index = packet.out.index; - 24d6: 60 91 c6 60 lds r22, 0x60C6 ; 0x8060c6 -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:178 + 24d2: 60 91 c6 60 lds r22, 0x60C6 ; 0x8060c6 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:178 uint8_t _length = packet.out.length; - 24da: 00 91 c7 60 lds r16, 0x60C7 ; 0x8060c7 -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:181 + 24d6: 00 91 c7 60 lds r16, 0x60C7 ; 0x8060c7 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:181 if (_cmd == 0x02) { /* CMD3_GET_PARAMETER */ D1PRINTF(" GEN_GET_PARAM=%02X:%02X:%02X\r\n", _section, _index, _length); if (_section == 0) { /* SET_GET_CTXT_CONFIG */ - 24de: 81 11 cpse r24, r1 - 24e0: 68 c0 rjmp .+208 ; 0x25b2 <__DATA_REGION_LENGTH__+0x5b2> -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:183 + 24da: 81 11 cpse r24, r1 + 24dc: 68 c0 rjmp .+208 ; 0x25ae <__DATA_REGION_LENGTH__+0x5ae> +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:183 /* _index == 0-5 */ memcpy_P(&packet.in.data[0], &jtag_version[_index], _length); - 24e2: 40 2f mov r20, r16 - 24e4: 50 e0 ldi r21, 0x00 ; 0 - 24e6: 70 e0 ldi r23, 0x00 ; 0 - 24e8: 64 53 subi r22, 0x34 ; 52 -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:197 + 24de: 40 2f mov r20, r16 + 24e0: 50 e0 ldi r21, 0x00 ; 0 + 24e2: 70 e0 ldi r23, 0x00 ; 0 + 24e4: 64 53 subi r22, 0x34 ; 52 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:197 packet.in.wValue = _vtarget; } else { /* PARM3_ANALOG_XXXX */ /* Called with PowerDebugger HAS_VTARG_ADJ */ D1PRINTF(" PHYSICAL=%02X:%02X\r\n", _index, _length); memcpy_P(&packet.in.data[0], &jtag_physical[_index & 7], _length); - 24ea: 7e 4f sbci r23, 0xFE ; 254 - 24ec: 85 ec ldi r24, 0xC5 ; 197 - 24ee: 90 e6 ldi r25, 0x60 ; 96 - 24f0: e2 d2 rcall .+1476 ; 0x2ab6 - 24f2: 93 c0 rjmp .+294 ; 0x261a <__DATA_REGION_LENGTH__+0x61a> + 24e6: 7e 4f sbci r23, 0xFE ; 254 + 24e8: 85 ec ldi r24, 0xC5 ; 197 + 24ea: 90 e6 ldi r25, 0x60 ; 96 + 24ec: e2 d2 rcall .+1476 ; 0x2ab2 + 24ee: 93 c0 rjmp .+294 ; 0x2616 <__DATA_REGION_LENGTH__+0x616> dap_command_check(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:100 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:100 EP_MEM.dap_data[1] = 0x00; /* EDBG_RSP_FAIL */ } } } } else if (_cmd == 0x81) { /* DAP_EDBG_VENDOR_AVR_RSP */ - 24f4: 91 38 cpi r25, 0x81 ; 129 - 24f6: a9 f5 brne .+106 ; 0x2562 <__DATA_REGION_LENGTH__+0x562> -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:101 + 24f0: 91 38 cpi r25, 0x81 ; 129 + 24f2: a9 f5 brne .+106 ; 0x255e <__DATA_REGION_LENGTH__+0x55e> +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:101 EP_MEM.dap_data[2] = 0; /* Always zero */ - 24f8: 10 92 20 63 sts 0x6320, r1 ; 0x806320 -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:102 + 24f4: 10 92 20 63 sts 0x6320, r1 ; 0x806320 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:102 if (_packet_endfrag == 0) { - 24fc: 90 91 89 60 lds r25, 0x6089 ; 0x806089 <_packet_endfrag> - 2500: 91 11 cpse r25, r1 - 2502: 05 c0 rjmp .+10 ; 0x250e <__DATA_REGION_LENGTH__+0x50e> -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:104 + 24f8: 90 91 89 60 lds r25, 0x6089 ; 0x806089 <_packet_endfrag> + 24fc: 91 11 cpse r25, r1 + 24fe: 05 c0 rjmp .+10 ; 0x250a <__DATA_REGION_LENGTH__+0x50a> +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:104 D1PRINTF("\r\n"); EP_MEM.dap_data[1] = 0; - 2504: 10 92 1f 63 sts 0x631F, r1 ; 0x80631f -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:124 + 2500: 10 92 1f 63 sts 0x631F, r1 ; 0x80631f +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:124 if (_sub == 0xFF /* DAP_INFO_PACKET_SIZE */ || _sub == 0xFB /* UART Receive Buffer Size */ || _sub == 0xFC) { /* UART Transmit Buffer Size */ EP_MEM.dap_data[1] = 0x02; /* length=2 */ EP_MEM.dap_data[2] = 0x40; /* MaxPacketSize = 64 */ EP_MEM.dap_data[3] = 0x00; - 2508: 10 92 21 63 sts 0x6321, r1 ; 0x806321 - 250c: 33 cd rjmp .-1434 ; 0x1f74 -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:108 + 2504: 10 92 21 63 sts 0x6321, r1 ; 0x806321 + 2508: 35 cd rjmp .-1430 ; 0x1f74 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:108 D1PRINTF("\r\n"); EP_MEM.dap_data[1] = 0; EP_MEM.dap_data[3] = 0; } else { memcpy(&EP_MEM.dap_data[4], &packet.in.token + (_packet_fragment * 60), 60); - 250e: 80 91 8a 60 lds r24, 0x608A ; 0x80608a <_packet_fragment> - 2512: 2c e3 ldi r18, 0x3C ; 60 - 2514: 82 9f mul r24, r18 - 2516: f0 01 movw r30, r0 - 2518: 11 24 eor r1, r1 - 251a: e1 54 subi r30, 0x41 ; 65 - 251c: ff 49 sbci r31, 0x9F ; 159 - 251e: a2 e2 ldi r26, 0x22 ; 34 - 2520: b3 e6 ldi r27, 0x63 ; 99 - 2522: 01 90 ld r0, Z+ - 2524: 0d 92 st X+, r0 - 2526: 2a 95 dec r18 - 2528: e1 f7 brne .-8 ; 0x2522 <__DATA_REGION_LENGTH__+0x522> -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:109 + 250a: 80 91 8a 60 lds r24, 0x608A ; 0x80608a <_packet_fragment> + 250e: 2c e3 ldi r18, 0x3C ; 60 + 2510: 82 9f mul r24, r18 + 2512: f0 01 movw r30, r0 + 2514: 11 24 eor r1, r1 + 2516: e1 54 subi r30, 0x41 ; 65 + 2518: ff 49 sbci r31, 0x9F ; 159 + 251a: a2 e2 ldi r26, 0x22 ; 34 + 251c: b3 e6 ldi r27, 0x63 ; 99 + 251e: 01 90 ld r0, Z+ + 2520: 0d 92 st X+, r0 + 2522: 2a 95 dec r18 + 2524: e1 f7 brne .-8 ; 0x251e <__DATA_REGION_LENGTH__+0x51e> +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:109 EP_MEM.dap_data[1] = ((++_packet_fragment) << 4) | _packet_endfrag; - 252a: 8f 5f subi r24, 0xFF ; 255 - 252c: 80 93 8a 60 sts 0x608A, r24 ; 0x80608a <_packet_fragment> - 2530: e0 e1 ldi r30, 0x10 ; 16 - 2532: 8e 9f mul r24, r30 - 2534: 90 01 movw r18, r0 - 2536: 11 24 eor r1, r1 - 2538: 29 2b or r18, r25 - 253a: 20 93 1f 63 sts 0x631F, r18 ; 0x80631f - 253e: 20 91 8b 60 lds r18, 0x608B ; 0x80608b <_packet_length> - 2542: 30 91 8c 60 lds r19, 0x608C ; 0x80608c <_packet_length+0x1> -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:110 + 2526: 8f 5f subi r24, 0xFF ; 255 + 2528: 80 93 8a 60 sts 0x608A, r24 ; 0x80608a <_packet_fragment> + 252c: e0 e1 ldi r30, 0x10 ; 16 + 252e: 8e 9f mul r24, r30 + 2530: 90 01 movw r18, r0 + 2532: 11 24 eor r1, r1 + 2534: 29 2b or r18, r25 + 2536: 20 93 1f 63 sts 0x631F, r18 ; 0x80631f + 253a: 20 91 8b 60 lds r18, 0x608B ; 0x80608b <_packet_length> + 253e: 30 91 8c 60 lds r19, 0x608C ; 0x80608c <_packet_length+0x1> +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:110 EP_MEM.dap_data[3] = _packet_fragment == _packet_endfrag ? _packet_length : 60; - 2546: 98 17 cp r25, r24 - 2548: 51 f0 breq .+20 ; 0x255e <__DATA_REGION_LENGTH__+0x55e> - 254a: 8c e3 ldi r24, 0x3C ; 60 - 254c: 80 93 21 63 sts 0x6321, r24 ; 0x806321 -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:111 + 2542: 98 17 cp r25, r24 + 2544: 51 f0 breq .+20 ; 0x255a <__DATA_REGION_LENGTH__+0x55a> + 2546: 8c e3 ldi r24, 0x3C ; 60 + 2548: 80 93 21 63 sts 0x6321, r24 ; 0x806321 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:111 _packet_length -= 60; - 2550: 2c 53 subi r18, 0x3C ; 60 - 2552: 31 09 sbc r19, r1 - 2554: 20 93 8b 60 sts 0x608B, r18 ; 0x80608b <_packet_length> - 2558: 30 93 8c 60 sts 0x608C, r19 ; 0x80608c <_packet_length+0x1> - 255c: 0b cd rjmp .-1514 ; 0x1f74 -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:110 + 254c: 2c 53 subi r18, 0x3C ; 60 + 254e: 31 09 sbc r19, r1 + 2550: 20 93 8b 60 sts 0x608B, r18 ; 0x80608b <_packet_length> + 2554: 30 93 8c 60 sts 0x608C, r19 ; 0x80608c <_packet_length+0x1> + 2558: 0d cd rjmp .-1510 ; 0x1f74 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:110 EP_MEM.dap_data[3] = 0; } else { memcpy(&EP_MEM.dap_data[4], &packet.in.token + (_packet_fragment * 60), 60); EP_MEM.dap_data[1] = ((++_packet_fragment) << 4) | _packet_endfrag; EP_MEM.dap_data[3] = _packet_fragment == _packet_endfrag ? _packet_length : 60; - 255e: 82 2f mov r24, r18 - 2560: f5 cf rjmp .-22 ; 0x254c <__DATA_REGION_LENGTH__+0x54c> -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:118 + 255a: 82 2f mov r24, r18 + 255c: f5 cf rjmp .-22 ; 0x2548 <__DATA_REGION_LENGTH__+0x548> +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:118 D3PRINTHEX(&EP_MEM.dap_data, EP_MEM.dap_data[3] + 4); } } /*** DAP Standard ***/ else if (_cmd == 0x00) { /* DAP_CMD_INFO */ - 2562: 91 11 cpse r25, r1 - 2564: 1a c0 rjmp .+52 ; 0x259a <__DATA_REGION_LENGTH__+0x59a> -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:119 + 255e: 91 11 cpse r25, r1 + 2560: 1a c0 rjmp .+52 ; 0x2596 <__DATA_REGION_LENGTH__+0x596> +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:119 if (_sub == 0xFF /* DAP_INFO_PACKET_SIZE */ - 2566: 8f 3f cpi r24, 0xFF ; 255 - 2568: 21 f0 breq .+8 ; 0x2572 <__DATA_REGION_LENGTH__+0x572> -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:120 + 2562: 8f 3f cpi r24, 0xFF ; 255 + 2564: 21 f0 breq .+8 ; 0x256e <__DATA_REGION_LENGTH__+0x56e> +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:120 || _sub == 0xFB /* UART Receive Buffer Size */ - 256a: 95 e0 ldi r25, 0x05 ; 5 - 256c: 98 0f add r25, r24 - 256e: 92 30 cpi r25, 0x02 ; 2 - 2570: 38 f4 brcc .+14 ; 0x2580 <__DATA_REGION_LENGTH__+0x580> -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:122 + 2566: 95 e0 ldi r25, 0x05 ; 5 + 2568: 98 0f add r25, r24 + 256a: 92 30 cpi r25, 0x02 ; 2 + 256c: 38 f4 brcc .+14 ; 0x257c <__DATA_REGION_LENGTH__+0x57c> +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:122 || _sub == 0xFC) { /* UART Transmit Buffer Size */ EP_MEM.dap_data[1] = 0x02; /* length=2 */ - 2572: 82 e0 ldi r24, 0x02 ; 2 - 2574: 80 93 1f 63 sts 0x631F, r24 ; 0x80631f -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:123 + 256e: 82 e0 ldi r24, 0x02 ; 2 + 2570: 80 93 1f 63 sts 0x631F, r24 ; 0x80631f +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:123 EP_MEM.dap_data[2] = 0x40; /* MaxPacketSize = 64 */ - 2578: 80 e4 ldi r24, 0x40 ; 64 - 257a: 80 93 20 63 sts 0x6320, r24 ; 0x806320 - 257e: c4 cf rjmp .-120 ; 0x2508 <__DATA_REGION_LENGTH__+0x508> -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:128 + 2574: 80 e4 ldi r24, 0x40 ; 64 + 2576: 80 93 20 63 sts 0x6320, r24 ; 0x806320 + 257a: c4 cf rjmp .-120 ; 0x2504 <__DATA_REGION_LENGTH__+0x504> +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:128 EP_MEM.dap_data[3] = 0x00; D3PRINTF(" PI="); D3PRINTHEX(&EP_MEM.dap_data, 4); } else if (_sub == 0xF1) { /* DAP_INFO_Capabilities */ - 2580: 81 3f cpi r24, 0xF1 ; 241 - 2582: 09 f0 breq .+2 ; 0x2586 <__DATA_REGION_LENGTH__+0x586> - 2584: f7 cc rjmp .-1554 ; 0x1f74 -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:129 + 257c: 81 3f cpi r24, 0xF1 ; 241 + 257e: 09 f0 breq .+2 ; 0x2582 <__DATA_REGION_LENGTH__+0x582> + 2580: f9 cc rjmp .-1550 ; 0x1f74 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:129 EP_MEM.dap_data[1] = 0x02; /* length=2 */ - 2586: 82 e0 ldi r24, 0x02 ; 2 - 2588: 80 93 1f 63 sts 0x631F, r24 ; 0x80631f -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:130 + 2582: 82 e0 ldi r24, 0x02 ; 2 + 2584: 80 93 1f 63 sts 0x631F, r24 ; 0x80631f +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:130 EP_MEM.dap_data[2] = 0x80; /* 7:UART Communication Port */ - 258c: 80 e8 ldi r24, 0x80 ; 128 - 258e: 80 93 20 63 sts 0x6320, r24 ; 0x806320 -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:131 + 2588: 80 e8 ldi r24, 0x80 ; 128 + 258a: 80 93 20 63 sts 0x6320, r24 ; 0x806320 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:131 EP_MEM.dap_data[3] = 0x01; /* 1:USB COM Port */ - 2592: 81 e0 ldi r24, 0x01 ; 1 - 2594: 80 93 21 63 sts 0x6321, r24 ; 0x806321 - 2598: ed cc rjmp .-1574 ; 0x1f74 -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:136 + 258e: 81 e0 ldi r24, 0x01 ; 1 + 2590: 80 93 21 63 sts 0x6321, r24 ; 0x806321 + 2594: ef cc rjmp .-1570 ; 0x1f74 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:136 D3PRINTF(" PI="); D3PRINTHEX(&EP_MEM.dap_data, 4); } } else if (_cmd == 0x02) { /* DAP_CMD_CONNECT */ - 259a: 92 30 cpi r25, 0x02 ; 2 - 259c: 09 f4 brne .+2 ; 0x25a0 <__DATA_REGION_LENGTH__+0x5a0> - 259e: ea cc rjmp .-1580 ; 0x1f74 -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:142 + 2596: 92 30 cpi r25, 0x02 ; 2 + 2598: 09 f4 brne .+2 ; 0x259c <__DATA_REGION_LENGTH__+0x59c> + 259a: ec cc rjmp .-1576 ; 0x1f74 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:142 /* EP_MEM.dap_data[1] == CONN_TYPE */ /* Here, the response is returned without processing. */ D3PRINTF(" PI="); D3PRINTHEX(&EP_MEM.dap_data, 2); } else if (_cmd == 0x01 /* DAP_CMD_HOSTSTATUS */ - 25a0: 91 30 cpi r25, 0x01 ; 1 - 25a2: 19 f4 brne .+6 ; 0x25aa <__DATA_REGION_LENGTH__+0x5aa> -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:143 + 259c: 91 30 cpi r25, 0x01 ; 1 + 259e: 19 f4 brne .+6 ; 0x25a6 <__DATA_REGION_LENGTH__+0x5a6> +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:143 && _sub == 0x00) { /* DAP_LED_CONNECT */ - 25a4: 81 11 cpse r24, r1 - 25a6: e4 cc rjmp .-1592 ; 0x1f70 - 25a8: e5 cc rjmp .-1590 ; 0x1f74 -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:149 + 25a0: 81 11 cpse r24, r1 + 25a2: e6 cc rjmp .-1588 ; 0x1f70 + 25a4: e7 cc rjmp .-1586 ; 0x1f74 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:149 /* EP_MEM.dap_data[2] == LED_ON/OFF */ /* Here, the response is returned without processing. */ D3PRINTF(" PI="); D3PRINTHEX(&EP_MEM.dap_data, 3); } else if (_cmd == 0x03) { /* DAP_CMD_DISCONNECT */ - 25aa: 93 30 cpi r25, 0x03 ; 3 - 25ac: 09 f0 breq .+2 ; 0x25b0 <__DATA_REGION_LENGTH__+0x5b0> - 25ae: e0 cc rjmp .-1600 ; 0x1f70 - 25b0: e1 cc rjmp .-1598 ; 0x1f74 + 25a6: 93 30 cpi r25, 0x03 ; 3 + 25a8: 09 f0 breq .+2 ; 0x25ac <__DATA_REGION_LENGTH__+0x5ac> + 25aa: e2 cc rjmp .-1596 ; 0x1f70 + 25ac: e3 cc rjmp .-1594 ; 0x1f74 jtag_scope_general(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:187 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:187 /* _index == 0-5 */ memcpy_P(&packet.in.data[0], &jtag_version[_index], _length); D1PRINTF(" VESRION="); D1PRINTHEX(&packet.in.data[0], _length); } else if (_section == 1) { /* SET_GET_CTXT_PHYSICAL */ - 25b2: 81 30 cpi r24, 0x01 ; 1 - 25b4: 91 f5 brne .+100 ; 0x261a <__DATA_REGION_LENGTH__+0x61a> -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:188 + 25ae: 81 30 cpi r24, 0x01 ; 1 + 25b0: 91 f5 brne .+100 ; 0x2616 <__DATA_REGION_LENGTH__+0x616> +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:188 if (_index == 0 || _index == 0x20) { /* PARM3_VTARGET */ - 25b6: 96 2f mov r25, r22 - 25b8: 9f 7d andi r25, 0xDF ; 223 - 25ba: b1 f5 brne .+108 ; 0x2628 <__DATA_REGION_LENGTH__+0x628> + 25b2: 96 2f mov r25, r22 + 25b4: 9f 7d andi r25, 0xDF ; 223 + 25b6: b1 f5 brne .+108 ; 0x2624 <__DATA_REGION_LENGTH__+0x624> get_vdd(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:333 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:333 * A delay of 1250us is required for the voltage to stabilize. * The result is 10-bit, so multiply by 10.0 to convert to 1V * 0.0001. * The ADC0 peripheral is operational only during voltage measurements. */ uint16_t get_vdd (void) { ADC0_INTFLAGS = ~0; - 25bc: 9f ef ldi r25, 0xFF ; 255 - 25be: 90 93 07 06 sts 0x0607, r25 ; 0x800607 <__TEXT_REGION_LENGTH__+0x7f0607> -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:334 + 25b8: 9f ef ldi r25, 0xFF ; 255 + 25ba: 90 93 07 06 sts 0x0607, r25 ; 0x800607 <__TEXT_REGION_LENGTH__+0x7f0607> +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:334 ADC0_SAMPLE = 0; - 25c2: 10 92 0e 06 sts 0x060E, r1 ; 0x80060e <__TEXT_REGION_LENGTH__+0x7f060e> - 25c6: 10 92 0f 06 sts 0x060F, r1 ; 0x80060f <__TEXT_REGION_LENGTH__+0x7f060f> -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:335 + 25be: 10 92 0e 06 sts 0x060E, r1 ; 0x80060e <__TEXT_REGION_LENGTH__+0x7f060e> + 25c2: 10 92 0f 06 sts 0x060F, r1 ; 0x80060f <__TEXT_REGION_LENGTH__+0x7f060f> +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:335 ADC0_CTRLA = ADC_ENABLE_bm; - 25ca: 80 93 00 06 sts 0x0600, r24 ; 0x800600 <__TEXT_REGION_LENGTH__+0x7f0600> -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:336 + 25c6: 80 93 00 06 sts 0x0600, r24 ; 0x800600 <__TEXT_REGION_LENGTH__+0x7f0600> +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:336 ADC0_CTRLB = ADC_PRESC_DIV4_gc; - 25ce: 80 93 01 06 sts 0x0601, r24 ; 0x800601 <__TEXT_REGION_LENGTH__+0x7f0601> -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:337 + 25ca: 80 93 01 06 sts 0x0601, r24 ; 0x800601 <__TEXT_REGION_LENGTH__+0x7f0601> +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:337 ADC0_CTRLC = ADC_REFSEL_1V024_gc; - 25d2: 84 e0 ldi r24, 0x04 ; 4 - 25d4: 80 93 02 06 sts 0x0602, r24 ; 0x800602 <__TEXT_REGION_LENGTH__+0x7f0602> -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:338 + 25ce: 84 e0 ldi r24, 0x04 ; 4 + 25d0: 80 93 02 06 sts 0x0602, r24 ; 0x800602 <__TEXT_REGION_LENGTH__+0x7f0602> +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:338 ADC0_CTRLE = 250; /* (SAMPDUR + 0.5) * fCLK_ADC sample duration */ - 25d8: 8a ef ldi r24, 0xFA ; 250 - 25da: 80 93 04 06 sts 0x0604, r24 ; 0x800604 <__TEXT_REGION_LENGTH__+0x7f0604> -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:339 + 25d4: 8a ef ldi r24, 0xFA ; 250 + 25d6: 80 93 04 06 sts 0x0604, r24 ; 0x800604 <__TEXT_REGION_LENGTH__+0x7f0604> +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:339 ADC0_MUXPOS = ADC_MUXPOS_VDDDIV10_gc; /* ADC channel VDD * 0.1 */ - 25de: 84 e4 ldi r24, 0x44 ; 68 - 25e0: 80 93 0b 06 sts 0x060B, r24 ; 0x80060b <__TEXT_REGION_LENGTH__+0x7f060b> -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:340 + 25da: 84 e4 ldi r24, 0x44 ; 68 + 25dc: 80 93 0b 06 sts 0x060B, r24 ; 0x80060b <__TEXT_REGION_LENGTH__+0x7f060b> +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:340 ADC0_COMMAND = ADC_MODE_SINGLE_10BIT_gc | ADC_START_IMMEDIATE_gc; - 25e4: 81 e1 ldi r24, 0x11 ; 17 - 25e6: 80 93 0a 06 sts 0x060A, r24 ; 0x80060a <__TEXT_REGION_LENGTH__+0x7f060a> -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:341 + 25e0: 81 e1 ldi r24, 0x11 ; 17 + 25e2: 80 93 0a 06 sts 0x060A, r24 ; 0x80060a <__TEXT_REGION_LENGTH__+0x7f060a> +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:341 loop_until_bit_is_set(ADC0_INTFLAGS, ADC_SAMPRDY_bp); - 25ea: 80 91 07 06 lds r24, 0x0607 ; 0x800607 <__TEXT_REGION_LENGTH__+0x7f0607> - 25ee: 81 ff sbrs r24, 1 - 25f0: fc cf rjmp .-8 ; 0x25ea <__DATA_REGION_LENGTH__+0x5ea> -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:342 + 25e6: 80 91 07 06 lds r24, 0x0607 ; 0x800607 <__TEXT_REGION_LENGTH__+0x7f0607> + 25ea: 81 ff sbrs r24, 1 + 25ec: fc cf rjmp .-8 ; 0x25e6 <__DATA_REGION_LENGTH__+0x5e6> +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:342 uint16_t _adc_reading = ADC0_SAMPLE; - 25f2: 80 91 0e 06 lds r24, 0x060E ; 0x80060e <__TEXT_REGION_LENGTH__+0x7f060e> - 25f6: 90 91 0f 06 lds r25, 0x060F ; 0x80060f <__TEXT_REGION_LENGTH__+0x7f060f> -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:343 + 25ee: 80 91 0e 06 lds r24, 0x060E ; 0x80060e <__TEXT_REGION_LENGTH__+0x7f060e> + 25f2: 90 91 0f 06 lds r25, 0x060F ; 0x80060f <__TEXT_REGION_LENGTH__+0x7f060f> +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:343 _adc_reading += (_adc_reading << 3) + _adc_reading; - 25fa: 9c 01 movw r18, r24 - 25fc: 43 e0 ldi r20, 0x03 ; 3 - 25fe: 22 0f add r18, r18 - 2600: 33 1f adc r19, r19 - 2602: 4a 95 dec r20 - 2604: e1 f7 brne .-8 ; 0x25fe <__DATA_REGION_LENGTH__+0x5fe> - 2606: 88 0f add r24, r24 - 2608: 99 1f adc r25, r25 -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:344 + 25f6: 9c 01 movw r18, r24 + 25f8: 43 e0 ldi r20, 0x03 ; 3 + 25fa: 22 0f add r18, r18 + 25fc: 33 1f adc r19, r19 + 25fe: 4a 95 dec r20 + 2600: e1 f7 brne .-8 ; 0x25fa <__DATA_REGION_LENGTH__+0x5fa> + 2602: 88 0f add r24, r24 + 2604: 99 1f adc r25, r25 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:344 ADC0_CTRLA = 0; - 260a: 10 92 00 06 sts 0x0600, r1 ; 0x800600 <__TEXT_REGION_LENGTH__+0x7f0600> -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:343 + 2606: 10 92 00 06 sts 0x0600, r1 ; 0x800600 <__TEXT_REGION_LENGTH__+0x7f0600> +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:343 ADC0_CTRLE = 250; /* (SAMPDUR + 0.5) * fCLK_ADC sample duration */ ADC0_MUXPOS = ADC_MUXPOS_VDDDIV10_gc; /* ADC channel VDD * 0.1 */ ADC0_COMMAND = ADC_MODE_SINGLE_10BIT_gc | ADC_START_IMMEDIATE_gc; loop_until_bit_is_set(ADC0_INTFLAGS, ADC_SAMPRDY_bp); uint16_t _adc_reading = ADC0_SAMPLE; _adc_reading += (_adc_reading << 3) + _adc_reading; - 260e: 82 0f add r24, r18 - 2610: 93 1f adc r25, r19 + 260a: 82 0f add r24, r18 + 260c: 93 1f adc r25, r19 jtag_scope_general(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:192 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:192 /* Called with `-xvtarget` HAS_VTARG_READ */ _vtarget = SYS::get_vdd(); D1PRINTF(" VTARGET=%d\r\n", _vtarget); packet.in.wValue = _vtarget; - 2612: 80 93 c5 60 sts 0x60C5, r24 ; 0x8060c5 - 2616: 90 93 c6 60 sts 0x60C6, r25 ; 0x8060c6 + 260e: 80 93 c5 60 sts 0x60C5, r24 ; 0x8060c5 + 2612: 90 93 c6 60 sts 0x60C6, r25 ; 0x8060c6 jtag_scope_edbg(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:256 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:256 /* Called with `-xvtarget_switch` HAS_VTARG_SWITCH */ D1PRINTF(" TARGET_POWER=%02X\r\n", _jtag_vpow); packet.in.data[0] = _jtag_vpow; } } packet.in.res = 0x184; /* RSP3_DATA */ - 261a: 84 e8 ldi r24, 0x84 ; 132 - 261c: 91 e0 ldi r25, 0x01 ; 1 - 261e: 80 93 c3 60 sts 0x60C3, r24 ; 0x8060c3 - 2622: 90 93 c4 60 sts 0x60C4, r25 ; 0x8060c4 - 2626: 6b c0 rjmp .+214 ; 0x26fe <__DATA_REGION_LENGTH__+0x6fe> + 2616: 84 e8 ldi r24, 0x84 ; 132 + 2618: 91 e0 ldi r25, 0x01 ; 1 + 261a: 80 93 c3 60 sts 0x60C3, r24 ; 0x8060c3 + 261e: 90 93 c4 60 sts 0x60C4, r25 ; 0x8060c4 + 2622: 6b c0 rjmp .+214 ; 0x26fa <__DATA_REGION_LENGTH__+0x6fa> jtag_scope_general(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:197 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:197 packet.in.wValue = _vtarget; } else { /* PARM3_ANALOG_XXXX */ /* Called with PowerDebugger HAS_VTARG_ADJ */ D1PRINTF(" PHYSICAL=%02X:%02X\r\n", _index, _length); memcpy_P(&packet.in.data[0], &jtag_physical[_index & 7], _length); - 2628: 40 2f mov r20, r16 - 262a: 50 e0 ldi r21, 0x00 ; 0 - 262c: 67 70 andi r22, 0x07 ; 7 - 262e: 70 e0 ldi r23, 0x00 ; 0 - 2630: 6c 53 subi r22, 0x3C ; 60 - 2632: 7e 4f sbci r23, 0xFE ; 254 - 2634: 5b cf rjmp .-330 ; 0x24ec <__DATA_REGION_LENGTH__+0x4ec> -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:203 + 2624: 40 2f mov r20, r16 + 2626: 50 e0 ldi r21, 0x00 ; 0 + 2628: 67 70 andi r22, 0x07 ; 7 + 262a: 70 e0 ldi r23, 0x00 ; 0 + 262c: 6c 53 subi r22, 0x3C ; 60 + 262e: 7e 4f sbci r23, 0xFE ; 254 + 2630: 5b cf rjmp .-330 ; 0x24e8 <__DATA_REGION_LENGTH__+0x4e8> +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:203 } } packet.in.res = 0x184; /* RSP3_DATA */ _rspsize = _length + 1; } else if (_cmd == 0x10) { /* CMD3_SIGN_ON */ - 2636: 80 31 cpi r24, 0x10 ; 16 - 2638: 49 f4 brne .+18 ; 0x264c <__DATA_REGION_LENGTH__+0x64c> -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:207 + 2632: 80 31 cpi r24, 0x10 ; 16 + 2634: 49 f4 brne .+18 ; 0x2648 <__DATA_REGION_LENGTH__+0x648> +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:207 D1PRINTF(" GEN_SIGN_ON\r\n"); _jtag_hvctrl = 0; _jtag_unlock = 0; _jtag_arch = 0; - 263a: 10 92 88 60 sts 0x6088, r1 ; 0x806088 <_jtag_arch> -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:213 + 2636: 10 92 88 60 sts 0x6088, r1 ; 0x806088 <_jtag_arch> +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:213 _tpi_setmode = 0; packet.in.res = 0x80; /* RSP3_OK */ } else if (_cmd == 0x11) { /* CMD3_SIGN_OFF */ D1PRINTF(" GEN_SIGN_OFF\r\n"); packet.in.res = 0x80; /* RSP3_OK */ - 263e: 80 e8 ldi r24, 0x80 ; 128 - 2640: 90 e0 ldi r25, 0x00 ; 0 + 263a: 80 e8 ldi r24, 0x80 ; 128 + 263c: 90 e0 ldi r25, 0x00 ; 0 jtag_scope_avr_core(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:376 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:376 else if (_jtag_arch == 0x01) _rspsize = DWIRE::jtag_scope_tiny(); /* dWire? */ else if (_jtag_arch == 0x02) _rspsize = MEGA::jtag_scope_mega(); /* MEGA */ else if (_jtag_arch == 0x03) _rspsize = XMEGA::jtag_scope_xmega(); /* XMEGA */ #endif else if (_jtag_arch == 0x05) _rspsize = UPDI::jtag_scope_updi(); /* UPDI support */ else packet.in.res = 0xA0; /* RSP3_FAILED */ - 2642: 80 93 c3 60 sts 0x60C3, r24 ; 0x8060c3 - 2646: 90 93 c4 60 sts 0x60C4, r25 ; 0x8060c4 - 264a: 02 c0 rjmp .+4 ; 0x2650 <__DATA_REGION_LENGTH__+0x650> + 263e: 80 93 c3 60 sts 0x60C3, r24 ; 0x8060c3 + 2642: 90 93 c4 60 sts 0x60C4, r25 ; 0x8060c4 + 2646: 02 c0 rjmp .+4 ; 0x264c <__DATA_REGION_LENGTH__+0x64c> jtag_scope_general(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:211 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:211 _jtag_unlock = 0; _jtag_arch = 0; _tpi_setmode = 0; packet.in.res = 0x80; /* RSP3_OK */ } else if (_cmd == 0x11) { /* CMD3_SIGN_OFF */ - 264c: 81 31 cpi r24, 0x11 ; 17 - 264e: b9 f3 breq .-18 ; 0x263e <__DATA_REGION_LENGTH__+0x63e> + 2648: 81 31 cpi r24, 0x11 ; 17 + 264a: b9 f3 breq .-18 ; 0x263a <__DATA_REGION_LENGTH__+0x63a> main(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:174 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:174 D2PRINTHEX(&packet.in.token, _packet_length); } /*** Only a subset of JTAGICE3 commands are implemented. ***/ size_t jtag_scope_general (void) { size_t _rspsize = 0; - 2650: 10 e0 ldi r17, 0x00 ; 0 - 2652: 00 e0 ldi r16, 0x00 ; 0 - 2654: f7 c0 rjmp .+494 ; 0x2844 <__DATA_REGION_LENGTH__+0x844> + 264c: 10 e0 ldi r17, 0x00 ; 0 + 264e: 00 e0 ldi r16, 0x00 ; 0 + 2650: f7 c0 rjmp .+494 ; 0x2840 <__DATA_REGION_LENGTH__+0x840> jtag_scope_branch(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:396 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:396 #ifdef _Not_yet_implemented_stub_ else if (_scope == 0x00) _rspsize = jtag_scope_info(); /* SCOPE_INFO */ /* Not used with EDBG/CMSIS-DAP type */ else if (_scope == 0x11) _rspsize = ISP::jtag_scope_isp(); /* SCOPE_AVR_ISP */ else if (_scope == 0x13) _rspsize = AVR32::jtag_scope_avr32(); /* SCOPE_AVR32 */ #endif else if (_scope == 0x12) _rspsize = jtag_scope_avr_core(); /* SCOPE_AVR */ - 2656: 82 31 cpi r24, 0x12 ; 18 - 2658: 09 f0 breq .+2 ; 0x265c <__DATA_REGION_LENGTH__+0x65c> - 265a: 37 c1 rjmp .+622 ; 0x28ca <__DATA_REGION_LENGTH__+0x8ca> + 2652: 82 31 cpi r24, 0x12 ; 18 + 2654: 09 f0 breq .+2 ; 0x2658 <__DATA_REGION_LENGTH__+0x658> + 2656: 37 c1 rjmp .+622 ; 0x28c6 <__DATA_REGION_LENGTH__+0x8c6> jtag_scope_avr_core(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:265 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:265 } /* The AVR scope is further branched by the ARCH designator. */ size_t jtag_scope_avr_core (void) { size_t _rspsize = 0; uint8_t _cmd = packet.out.cmd; - 265c: 10 91 c3 60 lds r17, 0x60C3 ; 0x8060c3 -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:266 + 2658: 10 91 c3 60 lds r17, 0x60C3 ; 0x8060c3 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:266 uint8_t _section = packet.out.section; - 2660: 80 91 c5 60 lds r24, 0x60C5 ; 0x8060c5 -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:267 + 265c: 80 91 c5 60 lds r24, 0x60C5 ; 0x8060c5 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:267 uint8_t _index = packet.out.index; - 2664: 90 91 c6 60 lds r25, 0x60C6 ; 0x8060c6 -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:268 + 2660: 90 91 c6 60 lds r25, 0x60C6 ; 0x8060c6 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:268 uint8_t _length = packet.out.length; - 2668: 40 91 c7 60 lds r20, 0x60C7 ; 0x8060c7 -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:269 + 2664: 40 91 c7 60 lds r20, 0x60C7 ; 0x8060c7 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:269 if (_cmd == 0x01) { /* CMD3_SET_PARAMETER */ - 266c: 11 30 cpi r17, 0x01 ; 1 - 266e: c1 f5 brne .+112 ; 0x26e0 <__DATA_REGION_LENGTH__+0x6e0> -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:270 + 2668: 11 30 cpi r17, 0x01 ; 1 + 266a: c1 f5 brne .+112 ; 0x26dc <__DATA_REGION_LENGTH__+0x6dc> +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:270 uint16_t _data = packet.out.wValue; - 2670: 20 91 c8 60 lds r18, 0x60C8 ; 0x8060c8 - 2674: 30 91 c9 60 lds r19, 0x60C9 ; 0x8060c9 -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:272 + 266c: 20 91 c8 60 lds r18, 0x60C8 ; 0x8060c8 + 2670: 30 91 c9 60 lds r19, 0x60C9 ; 0x8060c9 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:272 D1PRINTF(" AVR_SET_PARAM=%02X:%02X:%02X:%02X\r\n", _section, _index, _length, _data); if (_section == 0) { /* SET_GET_CTXT_CONFIG */ - 2678: 81 11 cpse r24, r1 - 267a: 05 c0 rjmp .+10 ; 0x2686 <__DATA_REGION_LENGTH__+0x686> -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:273 + 2674: 81 11 cpse r24, r1 + 2676: 05 c0 rjmp .+10 ; 0x2682 <__DATA_REGION_LENGTH__+0x682> +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:273 if (_index == 0) { /* PARM3_ARCH */ - 267c: 91 11 cpse r25, r1 - 267e: df cf rjmp .-66 ; 0x263e <__DATA_REGION_LENGTH__+0x63e> -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:275 + 2678: 91 11 cpse r25, r1 + 267a: df cf rjmp .-66 ; 0x263a <__DATA_REGION_LENGTH__+0x63a> +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:275 D1PRINTF(" ARCH=%02X\r\n", _data); _jtag_arch = _data; /* 5:PARM3_ARCH_UPDI */ - 2680: 20 93 88 60 sts 0x6088, r18 ; 0x806088 <_jtag_arch> - 2684: dc cf rjmp .-72 ; 0x263e <__DATA_REGION_LENGTH__+0x63e> -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:282 + 267c: 20 93 88 60 sts 0x6088, r18 ; 0x806088 <_jtag_arch> + 2680: dc cf rjmp .-72 ; 0x263a <__DATA_REGION_LENGTH__+0x63a> +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:282 else if (_index == 1) { /* PARM3_SESS_PURPOSE */ D1PRINTF(" SESS_PURPOSE=%02X\r\n", _data); _jtag_sess = _data; /* */ } } else if (_section == 1) { /* SET_GET_CTXT_PHYSICAL */ - 2686: 81 30 cpi r24, 0x01 ; 1 - 2688: f1 f4 brne .+60 ; 0x26c6 <__DATA_REGION_LENGTH__+0x6c6> -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:283 + 2682: 81 30 cpi r24, 0x01 ; 1 + 2684: f1 f4 brne .+60 ; 0x26c2 <__DATA_REGION_LENGTH__+0x6c2> +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:283 if (_index == 0) { /* PARM3_CONNECTION */ - 268a: 91 11 cpse r25, r1 - 268c: 03 c0 rjmp .+6 ; 0x2694 <__DATA_REGION_LENGTH__+0x694> -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:285 + 2686: 91 11 cpse r25, r1 + 2688: 03 c0 rjmp .+6 ; 0x2690 <__DATA_REGION_LENGTH__+0x690> +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:285 D1PRINTF(" CONNECTION=%02X\r\n", _data); _jtag_conn = _data; /* 8:PARM3_CONN_UPDI */ - 268e: 20 93 87 60 sts 0x6087, r18 ; 0x806087 <_jtag_conn> - 2692: d5 cf rjmp .-86 ; 0x263e <__DATA_REGION_LENGTH__+0x63e> -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:287 + 268a: 20 93 87 60 sts 0x6087, r18 ; 0x806087 <_jtag_conn> + 268e: d5 cf rjmp .-86 ; 0x263a <__DATA_REGION_LENGTH__+0x63a> +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:287 } else if (_index == 0x31) { /* PARM3_CLK_XMEGA_PDI */ - 2694: 91 33 cpi r25, 0x31 ; 49 - 2696: 99 f6 brne .-90 ; 0x263e <__DATA_REGION_LENGTH__+0x63e> -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:288 + 2690: 91 33 cpi r25, 0x31 ; 49 + 2692: 99 f6 brne .-90 ; 0x263a <__DATA_REGION_LENGTH__+0x63a> +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:288 _xclk = _data; - 2698: 20 93 18 60 sts 0x6018, r18 ; 0x806018 <_xclk> - 269c: 30 93 19 60 sts 0x6019, r19 ; 0x806019 <_xclk+0x1> -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:290 + 2694: 20 93 18 60 sts 0x6018, r18 ; 0x806018 <_xclk> + 2698: 30 93 19 60 sts 0x6019, r19 ; 0x806019 <_xclk+0x1> +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:290 D1PRINTF(" XCLK=%d\r\n", _xclk); if (_jtag_arch == 5) { - 26a0: 80 91 88 60 lds r24, 0x6088 ; 0x806088 <_jtag_arch> - 26a4: 85 30 cpi r24, 0x05 ; 5 - 26a6: 59 f6 brne .-106 ; 0x263e <__DATA_REGION_LENGTH__+0x63e> -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:293 + 269c: 80 91 88 60 lds r24, 0x6088 ; 0x806088 <_jtag_arch> + 26a0: 85 30 cpi r24, 0x05 ; 5 + 26a2: 59 f6 brne .-106 ; 0x263a <__DATA_REGION_LENGTH__+0x63a> +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:293 /* Called with `-B xclk[unit]`. */ /* XCLK Range Limitation : LSB=kHz */ if (_xclk > 240) _xclk = 240; - 26a8: 80 ef ldi r24, 0xF0 ; 240 - 26aa: 90 e0 ldi r25, 0x00 ; 0 - 26ac: 21 3f cpi r18, 0xF1 ; 241 - 26ae: 31 05 cpc r19, r1 - 26b0: 28 f4 brcc .+10 ; 0x26bc <__DATA_REGION_LENGTH__+0x6bc> -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:294 + 26a4: 80 ef ldi r24, 0xF0 ; 240 + 26a6: 90 e0 ldi r25, 0x00 ; 0 + 26a8: 21 3f cpi r18, 0xF1 ; 241 + 26aa: 31 05 cpc r19, r1 + 26ac: 28 f4 brcc .+10 ; 0x26b8 <__DATA_REGION_LENGTH__+0x6b8> +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:294 else if (_xclk < 40) _xclk = 40; - 26b2: 28 32 cpi r18, 0x28 ; 40 - 26b4: 31 05 cpc r19, r1 - 26b6: 18 f6 brcc .-122 ; 0x263e <__DATA_REGION_LENGTH__+0x63e> - 26b8: 88 e2 ldi r24, 0x28 ; 40 - 26ba: 90 e0 ldi r25, 0x00 ; 0 - 26bc: 80 93 18 60 sts 0x6018, r24 ; 0x806018 <_xclk> - 26c0: 90 93 19 60 sts 0x6019, r25 ; 0x806019 <_xclk+0x1> - 26c4: bc cf rjmp .-136 ; 0x263e <__DATA_REGION_LENGTH__+0x63e> -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:301 + 26ae: 28 32 cpi r18, 0x28 ; 40 + 26b0: 31 05 cpc r19, r1 + 26b2: 18 f6 brcc .-122 ; 0x263a <__DATA_REGION_LENGTH__+0x63a> + 26b4: 88 e2 ldi r24, 0x28 ; 40 + 26b6: 90 e0 ldi r25, 0x00 ; 0 + 26b8: 80 93 18 60 sts 0x6018, r24 ; 0x806018 <_xclk> + 26bc: 90 93 19 60 sts 0x6019, r25 ; 0x806019 <_xclk+0x1> + 26c0: bc cf rjmp .-136 ; 0x263a <__DATA_REGION_LENGTH__+0x63a> +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:301 if (_xclk != _data) D1PRINTF(" FIX_CLK=%d\r\n", _xclk); #endif } } } else if (_section == 2) { /* SET_GET_CTXT_DEVICE */ - 26c6: 82 30 cpi r24, 0x02 ; 2 - 26c8: 09 f0 breq .+2 ; 0x26cc <__DATA_REGION_LENGTH__+0x6cc> - 26ca: b9 cf rjmp .-142 ; 0x263e <__DATA_REGION_LENGTH__+0x63e> -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:302 + 26c2: 82 30 cpi r24, 0x02 ; 2 + 26c4: 09 f0 breq .+2 ; 0x26c8 <__DATA_REGION_LENGTH__+0x6c8> + 26c6: b9 cf rjmp .-142 ; 0x263a <__DATA_REGION_LENGTH__+0x63a> +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:302 if (_index == 0) { /* PARM3_DEVICEDESC */ - 26cc: 91 11 cpse r25, r1 -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:304 + 26c8: 91 11 cpse r25, r1 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:304 D1PRINTF(" DEVICEDESC=%X\r\n", _length); memcpy(&Device_Descriptor, &packet.out.setData[0], _length & 63); - 26ce: b7 cf rjmp .-146 ; 0x263e <__DATA_REGION_LENGTH__+0x63e> - 26d0: 4f 73 andi r20, 0x3F ; 63 - 26d2: 50 e0 ldi r21, 0x00 ; 0 - 26d4: 68 ec ldi r22, 0xC8 ; 200 - 26d6: 70 e6 ldi r23, 0x60 ; 96 - 26d8: 8e e8 ldi r24, 0x8E ; 142 - 26da: 90 e6 ldi r25, 0x60 ; 96 - 26dc: 54 d2 rcall .+1192 ; 0x2b86 - 26de: af cf rjmp .-162 ; 0x263e <__DATA_REGION_LENGTH__+0x63e> -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:347 + 26ca: b7 cf rjmp .-146 ; 0x263a <__DATA_REGION_LENGTH__+0x63a> + 26cc: 4f 73 andi r20, 0x3F ; 63 + 26ce: 50 e0 ldi r21, 0x00 ; 0 + 26d0: 68 ec ldi r22, 0xC8 ; 200 + 26d2: 70 e6 ldi r23, 0x60 ; 96 + 26d4: 8e e8 ldi r24, 0x8E ; 142 + 26d6: 90 e6 ldi r25, 0x60 ; 96 + 26d8: 54 d2 rcall .+1192 ; 0x2b82 + 26da: af cf rjmp .-162 ; 0x263a <__DATA_REGION_LENGTH__+0x63a> +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:347 _jtag_unlock = _data; /* 1:ENABLE */ } } packet.in.res = 0x80; /* RSP3_OK */ } else if (_cmd == 0x02) { /* CMD3_GET_PARAMETER */ - 26e0: 12 30 cpi r17, 0x02 ; 2 - 26e2: 19 f5 brne .+70 ; 0x272a <__DATA_REGION_LENGTH__+0x72a> -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:349 + 26dc: 12 30 cpi r17, 0x02 ; 2 + 26de: 19 f5 brne .+70 ; 0x2726 <__DATA_REGION_LENGTH__+0x726> +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:349 D1PRINTF(" AVR_GET_PARAMETER=%02X:%02X:%02X\r\n", _section, _index, _length); if (_section == 0) { /* SET_GET_CTXT_CONFIG */ - 26e4: 81 11 cpse r24, r1 - 26e6: 0d c0 rjmp .+26 ; 0x2702 <__DATA_REGION_LENGTH__+0x702> -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:352 + 26e0: 81 11 cpse r24, r1 + 26e2: 0d c0 rjmp .+26 ; 0x26fe <__DATA_REGION_LENGTH__+0x6fe> +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:352 if (_index == 0) { /* PARM3_ARCH */ D1PRINTF(" ARCH=%02X\r\n", _jtag_arch); packet.in.data[0] = _jtag_arch; - 26e8: 80 91 88 60 lds r24, 0x6088 ; 0x806088 <_jtag_arch> -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:350 + 26e4: 80 91 88 60 lds r24, 0x6088 ; 0x806088 <_jtag_arch> +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:350 packet.in.res = 0x80; /* RSP3_OK */ } else if (_cmd == 0x02) { /* CMD3_GET_PARAMETER */ D1PRINTF(" AVR_GET_PARAMETER=%02X:%02X:%02X\r\n", _section, _index, _length); if (_section == 0) { /* SET_GET_CTXT_CONFIG */ if (_index == 0) { /* PARM3_ARCH */ - 26ec: 99 23 and r25, r25 - 26ee: 79 f0 breq .+30 ; 0x270e <__DATA_REGION_LENGTH__+0x70e> -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:367 + 26e8: 99 23 and r25, r25 + 26ea: 79 f0 breq .+30 ; 0x270a <__DATA_REGION_LENGTH__+0x70a> +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:367 /* `-B khz` : "khz" units are required. */ D1PRINTF(" XCLK=%d\r\n", _xclk); packet.in.wValue = _xclk; } } packet.in.res = 0x184; /* RSP3_DATA */ - 26f0: 84 e8 ldi r24, 0x84 ; 132 - 26f2: 91 e0 ldi r25, 0x01 ; 1 - 26f4: 80 93 c3 60 sts 0x60C3, r24 ; 0x8060c3 - 26f8: 90 93 c4 60 sts 0x60C4, r25 ; 0x8060c4 -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:368 + 26ec: 84 e8 ldi r24, 0x84 ; 132 + 26ee: 91 e0 ldi r25, 0x01 ; 1 + 26f0: 80 93 c3 60 sts 0x60C3, r24 ; 0x8060c3 + 26f4: 90 93 c4 60 sts 0x60C4, r25 ; 0x8060c4 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:368 _rspsize = _length + 1; - 26fc: 04 2f mov r16, r20 + 26f8: 04 2f mov r16, r20 jtag_scope_edbg(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:257 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:257 D1PRINTF(" TARGET_POWER=%02X\r\n", _jtag_vpow); packet.in.data[0] = _jtag_vpow; } } packet.in.res = 0x184; /* RSP3_DATA */ _rspsize = _length + 1; - 26fe: 10 e0 ldi r17, 0x00 ; 0 - 2700: 50 c1 rjmp .+672 ; 0x29a2 <__DATA_REGION_LENGTH__+0x9a2> + 26fa: 10 e0 ldi r17, 0x00 ; 0 + 26fc: 50 c1 rjmp .+672 ; 0x299e <__DATA_REGION_LENGTH__+0x99e> jtag_scope_avr_core(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:355 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:355 if (_index == 0) { /* PARM3_ARCH */ D1PRINTF(" ARCH=%02X\r\n", _jtag_arch); packet.in.data[0] = _jtag_arch; } } else if (_section == 1) { /* SET_GET_CTXT_PHYSICAL */ - 2702: 81 30 cpi r24, 0x01 ; 1 - 2704: a9 f7 brne .-22 ; 0x26f0 <__DATA_REGION_LENGTH__+0x6f0> -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:356 + 26fe: 81 30 cpi r24, 0x01 ; 1 + 2700: a9 f7 brne .-22 ; 0x26ec <__DATA_REGION_LENGTH__+0x6ec> +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:356 if (_index == 0) { /* PARM3_CONNECTION */ - 2706: 91 11 cpse r25, r1 - 2708: 05 c0 rjmp .+10 ; 0x2714 <__DATA_REGION_LENGTH__+0x714> -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:359 + 2702: 91 11 cpse r25, r1 + 2704: 05 c0 rjmp .+10 ; 0x2710 <__DATA_REGION_LENGTH__+0x710> +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:359 /* This is a stub that is called but not used. */ D1PRINTF(" CONNECTION=%02X\r\n", _jtag_conn); packet.in.data[0] = _jtag_conn; - 270a: 80 91 87 60 lds r24, 0x6087 ; 0x806087 <_jtag_conn> - 270e: 80 93 c5 60 sts 0x60C5, r24 ; 0x8060c5 - 2712: ee cf rjmp .-36 ; 0x26f0 <__DATA_REGION_LENGTH__+0x6f0> -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:361 + 2706: 80 91 87 60 lds r24, 0x6087 ; 0x806087 <_jtag_conn> + 270a: 80 93 c5 60 sts 0x60C5, r24 ; 0x8060c5 + 270e: ee cf rjmp .-36 ; 0x26ec <__DATA_REGION_LENGTH__+0x6ec> +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:361 } else if (_index == 0x31) { /* PARM3_CLK_XMEGA_PDI */ - 2714: 91 33 cpi r25, 0x31 ; 49 - 2716: 61 f7 brne .-40 ; 0x26f0 <__DATA_REGION_LENGTH__+0x6f0> -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:364 + 2710: 91 33 cpi r25, 0x31 ; 49 + 2712: 61 f7 brne .-40 ; 0x26ec <__DATA_REGION_LENGTH__+0x6ec> +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:364 /* `-B khz` : "khz" units are required. */ D1PRINTF(" XCLK=%d\r\n", _xclk); packet.in.wValue = _xclk; - 2718: 80 91 18 60 lds r24, 0x6018 ; 0x806018 <_xclk> - 271c: 90 91 19 60 lds r25, 0x6019 ; 0x806019 <_xclk+0x1> - 2720: 80 93 c5 60 sts 0x60C5, r24 ; 0x8060c5 - 2724: 90 93 c6 60 sts 0x60C6, r25 ; 0x8060c6 - 2728: e3 cf rjmp .-58 ; 0x26f0 <__DATA_REGION_LENGTH__+0x6f0> -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:375 + 2714: 80 91 18 60 lds r24, 0x6018 ; 0x806018 <_xclk> + 2718: 90 91 19 60 lds r25, 0x6019 ; 0x806019 <_xclk+0x1> + 271c: 80 93 c5 60 sts 0x60C5, r24 ; 0x8060c5 + 2720: 90 93 c6 60 sts 0x60C6, r25 ; 0x8060c6 + 2724: e3 cf rjmp .-58 ; 0x26ec <__DATA_REGION_LENGTH__+0x6ec> +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:375 #ifdef _Not_yet_implemented_stub_ else if (_jtag_arch == 0x01) _rspsize = DWIRE::jtag_scope_tiny(); /* dWire? */ else if (_jtag_arch == 0x02) _rspsize = MEGA::jtag_scope_mega(); /* MEGA */ else if (_jtag_arch == 0x03) _rspsize = XMEGA::jtag_scope_xmega(); /* XMEGA */ #endif else if (_jtag_arch == 0x05) _rspsize = UPDI::jtag_scope_updi(); /* UPDI support */ - 272a: 90 91 88 60 lds r25, 0x6088 ; 0x806088 <_jtag_arch> - 272e: 95 30 cpi r25, 0x05 ; 5 - 2730: 09 f0 breq .+2 ; 0x2734 <__DATA_REGION_LENGTH__+0x734> - 2732: c8 c0 rjmp .+400 ; 0x28c4 <__DATA_REGION_LENGTH__+0x8c4> + 2726: 90 91 88 60 lds r25, 0x6088 ; 0x806088 <_jtag_arch> + 272a: 95 30 cpi r25, 0x05 ; 5 + 272c: 09 f0 breq .+2 ; 0x2730 <__DATA_REGION_LENGTH__+0x730> + 272e: c8 c0 rjmp .+400 ; 0x28c0 <__DATA_REGION_LENGTH__+0x8c0> jtag_scope_updi(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:412 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:412 /* ARCH=UPDI scope Provides functionality. */ size_t jtag_scope_updi (void) { size_t _rspsize = 0; uint8_t _cmd = packet.out.cmd; if (_cmd == 0x10) { /* CMD3_SIGN_ON */ - 2734: 10 31 cpi r17, 0x10 ; 16 - 2736: 51 f5 brne .+84 ; 0x278c <__DATA_REGION_LENGTH__+0x78c> -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:414 + 2730: 10 31 cpi r17, 0x10 ; 16 + 2732: 51 f5 brne .+84 ; 0x2788 <__DATA_REGION_LENGTH__+0x788> +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:414 D1PRINTF(" UPDI_SIGN_ON=EXT:%02X\r\n", packet.out.bMType); USART::setup(); - 2738: 0e 94 ef 09 call 0x13de ; 0x13de + 2734: 0e 94 ef 09 call 0x13de ; 0x13de change_updi(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/usart.cpp:79 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usart.cpp:79 #endif } /*** Sets up single-wire asynchronous mode for UPDI operation. ***/ void change_updi (void) { ATOMIC_BLOCK(ATOMIC_RESTORESTATE) { - 273c: 0f b7 in r16, 0x3f ; 63 + 2738: 0f b7 in r16, 0x3f ; 63 __iCliRetVal(): /Users/askn/Library/Arduino15/packages/MultiX-Zinnia/tools/avr-gcc/7.3.0-avr8-gnu-toolchain/avr/include/util/atomic.h:50 return 1; @@ -10097,541 +10097,541 @@ __iCliRetVal(): static __inline__ uint8_t __iCliRetVal(void) { cli(); - 273e: f8 94 cli + 273a: f8 94 cli change_updi(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/usart.cpp:81 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usart.cpp:81 D1PRINTF(" UART=UPDI\r\n"); PORTMUX_USARTROUTEA = PORTMUX_USART_UPDI; - 2740: 10 93 e2 05 sts 0x05E2, r17 ; 0x8005e2 <__TEXT_REGION_LENGTH__+0x7f05e2> -/Users/askn/Collaborator/UPDI4AVR-USB/src/usart.cpp:82 + 273c: 10 93 e2 05 sts 0x05E2, r17 ; 0x8005e2 <__TEXT_REGION_LENGTH__+0x7f05e2> +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usart.cpp:82 USART0_STATUS = USART_DREIF_bm; - 2744: 80 e2 ldi r24, 0x20 ; 32 - 2746: 80 93 04 08 sts 0x0804, r24 ; 0x800804 <__TEXT_REGION_LENGTH__+0x7f0804> -/Users/askn/Collaborator/UPDI4AVR-USB/src/usart.cpp:83 + 2740: 80 e2 ldi r24, 0x20 ; 32 + 2742: 80 93 04 08 sts 0x0804, r24 ; 0x800804 <__TEXT_REGION_LENGTH__+0x7f0804> +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usart.cpp:83 USART0_BAUD = calk_baud_khz(_xclk); - 274a: 80 91 18 60 lds r24, 0x6018 ; 0x806018 <_xclk> - 274e: 90 91 19 60 lds r25, 0x6019 ; 0x806019 <_xclk+0x1> - 2752: 0e 94 e9 01 call 0x3d2 ; 0x3d2 - 2756: 80 93 08 08 sts 0x0808, r24 ; 0x800808 <__TEXT_REGION_LENGTH__+0x7f0808> - 275a: 90 93 09 08 sts 0x0809, r25 ; 0x800809 <__TEXT_REGION_LENGTH__+0x7f0809> -/Users/askn/Collaborator/UPDI4AVR-USB/src/usart.cpp:84 + 2746: 80 91 18 60 lds r24, 0x6018 ; 0x806018 <_xclk> + 274a: 90 91 19 60 lds r25, 0x6019 ; 0x806019 <_xclk+0x1> + 274e: 0e 94 e9 01 call 0x3d2 ; 0x3d2 + 2752: 80 93 08 08 sts 0x0808, r24 ; 0x800808 <__TEXT_REGION_LENGTH__+0x7f0808> + 2756: 90 93 09 08 sts 0x0809, r25 ; 0x800809 <__TEXT_REGION_LENGTH__+0x7f0809> +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usart.cpp:84 USART0_CTRLC = USART_CHSIZE_8BIT_gc | USART_PMODE_EVEN_gc | USART_SBMODE_2BIT_gc; - 275e: 8b e2 ldi r24, 0x2B ; 43 - 2760: 80 93 07 08 sts 0x0807, r24 ; 0x800807 <__TEXT_REGION_LENGTH__+0x7f0807> -/Users/askn/Collaborator/UPDI4AVR-USB/src/usart.cpp:87 + 275a: 8b e2 ldi r24, 0x2B ; 43 + 275c: 80 93 07 08 sts 0x0807, r24 ; 0x800807 <__TEXT_REGION_LENGTH__+0x7f0807> +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usart.cpp:87 /* The RS485_INT:_BV(1) attribute is undocumented but works fine. */ /* Without it, an additional delay is required before sending a byte. */ USART0_CTRLA = USART_LBME_bm | USART_RS485_INT_gc; - 2764: 8a e0 ldi r24, 0x0A ; 10 - 2766: 80 93 05 08 sts 0x0805, r24 ; 0x800805 <__TEXT_REGION_LENGTH__+0x7f0805> -/Users/askn/Collaborator/UPDI4AVR-USB/src/usart.cpp:88 + 2760: 8a e0 ldi r24, 0x0A ; 10 + 2762: 80 93 05 08 sts 0x0805, r24 ; 0x800805 <__TEXT_REGION_LENGTH__+0x7f0805> +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usart.cpp:88 USART0_CTRLB = USART_RXEN_bm | USART_TXEN_bm | USART_ODME_bm; - 276a: 88 ec ldi r24, 0xC8 ; 200 - 276c: 80 93 06 08 sts 0x0806, r24 ; 0x800806 <__TEXT_REGION_LENGTH__+0x7f0806> + 2766: 88 ec ldi r24, 0xC8 ; 200 + 2768: 80 93 06 08 sts 0x0806, r24 ; 0x800806 <__TEXT_REGION_LENGTH__+0x7f0806> __iRestore(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:416 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:416 USART::change_updi(); _rspsize = Timeout::command(&connect); - 2770: 0f bf out 0x3f, r16 ; 63 + 276c: 0f bf out 0x3f, r16 ; 63 jtag_scope_updi(): - 2772: 87 e3 ldi r24, 0x37 ; 55 - 2774: 9b e0 ldi r25, 0x0B ; 11 - 2776: 45 da rcall .-2934 ; 0x1c02 - 2778: 8c 01 movw r16, r24 + 276e: 87 e3 ldi r24, 0x37 ; 55 + 2770: 9b e0 ldi r25, 0x0B ; 11 + 2772: 47 da rcall .-2930 ; 0x1c02 + 2774: 8c 01 movw r16, r24 main(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:418 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:418 /* If it fails here, it is expected to try again, giving it a chance at HV control. */ packet.in.res = _rspsize ? 0x84 : 0xA0; /* RSP3_DATA : RSP3_FAILED */ - 277a: 84 e8 ldi r24, 0x84 ; 132 - 277c: 90 e0 ldi r25, 0x00 ; 0 + 2776: 84 e8 ldi r24, 0x84 ; 132 + 2778: 90 e0 ldi r25, 0x00 ; 0 jtag_scope_updi(): - 277e: 01 15 cp r16, r1 - 2780: 11 05 cpc r17, r1 - 2782: 09 f0 breq .+2 ; 0x2786 <__DATA_REGION_LENGTH__+0x786> - 2784: 5b c0 rjmp .+182 ; 0x283c <__DATA_REGION_LENGTH__+0x83c> + 277a: 01 15 cp r16, r1 + 277c: 11 05 cpc r17, r1 + 277e: 09 f0 breq .+2 ; 0x2782 <__DATA_REGION_LENGTH__+0x782> + 2780: 5b c0 rjmp .+182 ; 0x2838 <__DATA_REGION_LENGTH__+0x838> main(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:471 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:471 else if (_cmd == 0x23) { /* CMD3_WRITE_MEMORY */ D1PRINTF(" UPDI_WRITE=%02X:%06lX:%04X\r\n", packet.out.bMType, packet.out.dwAddr, (size_t)packet.out.dwLength); _rspsize = Timeout::command(Command_Table.write_memory); } packet.in.res = _rspsize ? 0x80 : 0xA0; /* RSP3_OK : RSP3_FAILED */ - 2786: 80 ea ldi r24, 0xA0 ; 160 - 2788: 90 e0 ldi r25, 0x00 ; 0 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:421 + 2782: 80 ea ldi r24, 0xA0 ; 160 + 2784: 90 e0 ldi r25, 0x00 ; 0 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:421 _rspsize = Timeout::command(&connect); /* If it fails here, it is expected to try again, giving it a chance at HV control. */ packet.in.res = _rspsize ? 0x84 : 0xA0; /* RSP3_DATA : RSP3_FAILED */ return _rspsize; } else if (_cmd == 0x11) { /* CMD3_SIGN_OFF */ - 278a: 58 c0 rjmp .+176 ; 0x283c <__DATA_REGION_LENGTH__+0x83c> + 2786: 58 c0 rjmp .+176 ; 0x2838 <__DATA_REGION_LENGTH__+0x838> jtag_scope_updi(): - 278c: 11 31 cpi r17, 0x11 ; 17 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:424 + 2788: 11 31 cpi r17, 0x11 ; 17 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:424 D1PRINTF(" UPDI_SIGN_OFF\r\n"); /* If UPDI control has failed, RSP3_OK is always returned. */ _rspsize = bit_is_set(PGCONF, PGCONF_UPDI_bp) ? Timeout::command(&disconnect) : 1; - 278e: 99 f4 brne .+38 ; 0x27b6 <__DATA_REGION_LENGTH__+0x7b6> - 2790: e8 9b sbis 0x1d, 0 ; 29 - 2792: 0e c0 rjmp .+28 ; 0x27b0 <__DATA_REGION_LENGTH__+0x7b0> - 2794: 87 e2 ldi r24, 0x27 ; 39 - 2796: 9b e0 ldi r25, 0x0B ; 11 - 2798: 34 da rcall .-2968 ; 0x1c02 - 279a: 8c 01 movw r16, r24 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:425 + 278a: 99 f4 brne .+38 ; 0x27b2 <__DATA_REGION_LENGTH__+0x7b2> + 278c: e8 9b sbis 0x1d, 0 ; 29 + 278e: 0e c0 rjmp .+28 ; 0x27ac <__DATA_REGION_LENGTH__+0x7ac> + 2790: 87 e2 ldi r24, 0x27 ; 39 + 2792: 9b e0 ldi r25, 0x0B ; 11 + 2794: 36 da rcall .-2964 ; 0x1c02 + 2796: 8c 01 movw r16, r24 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:425 USART::setup(); - 279c: 0e 94 ef 09 call 0x13de ; 0x13de -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:426 + 2798: 0e 94 ef 09 call 0x13de ; 0x13de +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:426 USART::change_vcp(); - 27a0: 0e 94 b4 05 call 0xb68 ; 0xb68 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:471 + 279c: 0e 94 b4 05 call 0xb68 ; 0xb68 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:471 else if (_cmd == 0x23) { /* CMD3_WRITE_MEMORY */ D1PRINTF(" UPDI_WRITE=%02X:%06lX:%04X\r\n", packet.out.bMType, packet.out.dwAddr, (size_t)packet.out.dwLength); _rspsize = Timeout::command(Command_Table.write_memory); } packet.in.res = _rspsize ? 0x80 : 0xA0; /* RSP3_OK : RSP3_FAILED */ - 27a4: 01 15 cp r16, r1 - 27a6: 11 05 cpc r17, r1 - 27a8: 71 f3 breq .-36 ; 0x2786 <__DATA_REGION_LENGTH__+0x786> + 27a0: 01 15 cp r16, r1 + 27a2: 11 05 cpc r17, r1 + 27a4: 71 f3 breq .-36 ; 0x2782 <__DATA_REGION_LENGTH__+0x782> main(): - 27aa: 80 e8 ldi r24, 0x80 ; 128 - 27ac: 90 e0 ldi r25, 0x00 ; 0 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:424 + 27a6: 80 e8 ldi r24, 0x80 ; 128 + 27a8: 90 e0 ldi r25, 0x00 ; 0 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:424 return _rspsize; } else if (_cmd == 0x11) { /* CMD3_SIGN_OFF */ D1PRINTF(" UPDI_SIGN_OFF\r\n"); /* If UPDI control has failed, RSP3_OK is always returned. */ _rspsize = bit_is_set(PGCONF, PGCONF_UPDI_bp) ? Timeout::command(&disconnect) : 1; - 27ae: 46 c0 rjmp .+140 ; 0x283c <__DATA_REGION_LENGTH__+0x83c> - 27b0: 01 e0 ldi r16, 0x01 ; 1 - 27b2: 10 e0 ldi r17, 0x00 ; 0 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:428 + 27aa: 46 c0 rjmp .+140 ; 0x2838 <__DATA_REGION_LENGTH__+0x838> + 27ac: 01 e0 ldi r16, 0x01 ; 1 + 27ae: 10 e0 ldi r17, 0x00 ; 0 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:428 USART::setup(); USART::change_vcp(); } else if (_cmd == 0x15) { /* CMD3_ENTER_PROGMODE */ - 27b4: f3 cf rjmp .-26 ; 0x279c <__DATA_REGION_LENGTH__+0x79c> + 27b0: f3 cf rjmp .-26 ; 0x2798 <__DATA_REGION_LENGTH__+0x798> jtag_scope_updi(): - 27b6: 15 31 cpi r17, 0x15 ; 21 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:432 + 27b2: 15 31 cpi r17, 0x15 ; 21 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:432 D1PRINTF(" UPDI_ENTER_PROG\r\n"); /* On failure, RSP3_OK is returned if a UPDI connection is available. */ /* Locked devices are given the opportunity to write to USERROW and erase the chip. */ _rspsize = Timeout::command(&enter_progmode) || bit_is_set(PGCONF, PGCONF_UPDI_bp); - 27b8: 49 f4 brne .+18 ; 0x27cc <__DATA_REGION_LENGTH__+0x7cc> - 27ba: 8c e0 ldi r24, 0x0C ; 12 - 27bc: 9a e0 ldi r25, 0x0A ; 10 - 27be: 21 da rcall .-3006 ; 0x1c02 - 27c0: 89 2b or r24, r25 - 27c2: 11 f4 brne .+4 ; 0x27c8 <__DATA_REGION_LENGTH__+0x7c8> - 27c4: 0d b3 in r16, 0x1d ; 29 - 27c6: 01 70 andi r16, 0x01 ; 1 - 27c8: 10 e0 ldi r17, 0x00 ; 0 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:434 + 27b4: 49 f4 brne .+18 ; 0x27c8 <__DATA_REGION_LENGTH__+0x7c8> + 27b6: 8c e0 ldi r24, 0x0C ; 12 + 27b8: 9a e0 ldi r25, 0x0A ; 10 + 27ba: 23 da rcall .-3002 ; 0x1c02 + 27bc: 89 2b or r24, r25 + 27be: 11 f4 brne .+4 ; 0x27c4 <__DATA_REGION_LENGTH__+0x7c4> + 27c0: 0d b3 in r16, 0x1d ; 29 + 27c2: 01 70 andi r16, 0x01 ; 1 + 27c4: 10 e0 ldi r17, 0x00 ; 0 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:434 } else if (_cmd == 0x16) { /* CMD3_LEAVE_PROGMODE */ - 27ca: ec cf rjmp .-40 ; 0x27a4 <__DATA_REGION_LENGTH__+0x7a4> - 27cc: 16 31 cpi r17, 0x16 ; 22 - 27ce: 09 f4 brne .+2 ; 0x27d2 <__DATA_REGION_LENGTH__+0x7d2> -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:440 + 27c6: ec cf rjmp .-40 ; 0x27a0 <__DATA_REGION_LENGTH__+0x7a0> + 27c8: 16 31 cpi r17, 0x16 ; 22 + 27ca: 09 f4 brne .+2 ; 0x27ce <__DATA_REGION_LENGTH__+0x7ce> +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:440 D1PRINTF(" UPDI_LEAVE_PROG\r\n"); /* There is nothing to do. */ /* The actual termination process is delayed until CMD3_SIGN_OFF. */ _rspsize = 1; } else if (_cmd == 0x20) { /* CMD3_ERASE_MEMORY */ - 27d0: 73 c0 rjmp .+230 ; 0x28b8 <__DATA_REGION_LENGTH__+0x8b8> - 27d2: 10 32 cpi r17, 0x20 ; 32 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:443 + 27cc: 73 c0 rjmp .+230 ; 0x28b4 <__DATA_REGION_LENGTH__+0x8b4> + 27ce: 10 32 cpi r17, 0x20 ; 32 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:443 D1PRINTF(" UPDI_ERASE=%02X:%06lX\r\n", packet.out.bEType, packet.out.dwPageAddr); _rspsize = Timeout::command(Command_Table.erase_memory); - 27d4: 39 f4 brne .+14 ; 0x27e4 <__DATA_REGION_LENGTH__+0x7e4> - 27d6: 80 91 02 63 lds r24, 0x6302 ; 0x806302 - 27da: 90 91 03 63 lds r25, 0x6303 ; 0x806303 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:469 + 27d0: 39 f4 brne .+14 ; 0x27e0 <__DATA_REGION_LENGTH__+0x7e0> + 27d2: 80 91 02 63 lds r24, 0x6302 ; 0x806302 + 27d6: 90 91 03 63 lds r25, 0x6303 ; 0x806303 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:469 return _rspsize; } else if (_cmd == 0x23) { /* CMD3_WRITE_MEMORY */ D1PRINTF(" UPDI_WRITE=%02X:%06lX:%04X\r\n", packet.out.bMType, packet.out.dwAddr, (size_t)packet.out.dwLength); _rspsize = Timeout::command(Command_Table.write_memory); - 27de: 11 da rcall .-3038 ; 0x1c02 - 27e0: 8c 01 movw r16, r24 - 27e2: e0 cf rjmp .-64 ; 0x27a4 <__DATA_REGION_LENGTH__+0x7a4> -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:445 + 27da: 13 da rcall .-3034 ; 0x1c02 + 27dc: 8c 01 movw r16, r24 + 27de: e0 cf rjmp .-64 ; 0x27a0 <__DATA_REGION_LENGTH__+0x7a0> +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:445 else if (_cmd == 0x20) { /* CMD3_ERASE_MEMORY */ D1PRINTF(" UPDI_ERASE=%02X:%06lX\r\n", packet.out.bEType, packet.out.dwPageAddr); _rspsize = Timeout::command(Command_Table.erase_memory); } else if (bit_is_clear(PGCONF, PGCONF_UPDI_bp)) { /* empty */ } - 27e4: e8 9b sbis 0x1d, 0 ; 29 - 27e6: 6b c0 rjmp .+214 ; 0x28be <__DATA_REGION_LENGTH__+0x8be> -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:446 + 27e0: e8 9b sbis 0x1d, 0 ; 29 + 27e2: 6b c0 rjmp .+214 ; 0x28ba <__DATA_REGION_LENGTH__+0x8ba> +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:446 else if (_cmd == 0x21) { /* CMD3_READ_MEMORY */ - 27e8: 11 32 cpi r17, 0x21 ; 33 - 27ea: 09 f0 breq .+2 ; 0x27ee <__DATA_REGION_LENGTH__+0x7ee> - 27ec: 5e c0 rjmp .+188 ; 0x28aa <__DATA_REGION_LENGTH__+0x8aa> -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:450 + 27e4: 11 32 cpi r17, 0x21 ; 33 + 27e6: 09 f0 breq .+2 ; 0x27ea <__DATA_REGION_LENGTH__+0x7ea> + 27e8: 5e c0 rjmp .+188 ; 0x28a6 <__DATA_REGION_LENGTH__+0x8a6> +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:450 D1PRINTF(" UPDI_READ=%02X:%06lX:%04X\r\n", packet.out.bMType, packet.out.dwAddr, (size_t)packet.out.dwLength); uint8_t m_type = packet.out.bMType; size_t _wLength = packet.out.dwLength; - 27ee: 00 91 ca 60 lds r16, 0x60CA ; 0x8060ca - 27f2: 10 91 cb 60 lds r17, 0x60CB ; 0x8060cb -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:451 + 27ea: 00 91 ca 60 lds r16, 0x60CA ; 0x8060ca + 27ee: 10 91 cb 60 lds r17, 0x60CB ; 0x8060cb +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:451 if (m_type == 0xD3) { /* MTYPE_SIB */ - 27f6: 83 3d cpi r24, 0xD3 ; 211 - 27f8: 99 f4 brne .+38 ; 0x2820 <__DATA_REGION_LENGTH__+0x820> -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:453 + 27f2: 83 3d cpi r24, 0xD3 ; 211 + 27f4: 99 f4 brne .+38 ; 0x281c <__DATA_REGION_LENGTH__+0x81c> +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:453 /* The SIB request occurs before ENTER_PROGMODE. */ memcpy(&packet.in.data[(uint8_t)packet.out.dwAddr & 31], &_sib, ((_wLength - 1) & 31) + 1); - 27fa: 80 91 c6 60 lds r24, 0x60C6 ; 0x8060c6 - 27fe: 8f 71 andi r24, 0x1F ; 31 - 2800: 90 e0 ldi r25, 0x00 ; 0 - 2802: a8 01 movw r20, r16 - 2804: 41 50 subi r20, 0x01 ; 1 - 2806: 51 09 sbc r21, r1 - 2808: 4f 71 andi r20, 0x1F ; 31 - 280a: 55 27 eor r21, r21 - 280c: 4f 5f subi r20, 0xFF ; 255 - 280e: 5f 4f sbci r21, 0xFF ; 255 - 2810: 6e ed ldi r22, 0xDE ; 222 - 2812: 72 e6 ldi r23, 0x62 ; 98 - 2814: 8b 53 subi r24, 0x3B ; 59 - 2816: 9f 49 sbci r25, 0x9F ; 159 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:317 + 27f6: 80 91 c6 60 lds r24, 0x60C6 ; 0x8060c6 + 27fa: 8f 71 andi r24, 0x1F ; 31 + 27fc: 90 e0 ldi r25, 0x00 ; 0 + 27fe: a8 01 movw r20, r16 + 2800: 41 50 subi r20, 0x01 ; 1 + 2802: 51 09 sbc r21, r1 + 2804: 4f 71 andi r20, 0x1F ; 31 + 2806: 55 27 eor r21, r21 + 2808: 4f 5f subi r20, 0xFF ; 255 + 280a: 5f 4f sbci r21, 0xFF ; 255 + 280c: 6e ed ldi r22, 0xDE ; 222 + 280e: 72 e6 ldi r23, 0x62 ; 98 + 2810: 8b 53 subi r24, 0x3B ; 59 + 2812: 9f 49 sbci r25, 0x9F ; 159 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:317 packet.in.data[0] = 0x1E; packet.in.data[1] = _sib[0] == ' ' ? 'A' : _sib[0]; packet.in.data[2] = _sib[10]; } else memset(&packet.in.data[0], 0xFF, _wLength); return _wLength + 1; - 2818: b6 d1 rcall .+876 ; 0x2b86 + 2814: b6 d1 rcall .+876 ; 0x2b82 read_dummy(): - 281a: 0f 5f subi r16, 0xFF ; 255 - 281c: 1f 4f sbci r17, 0xFF ; 255 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:456 + 2816: 0f 5f subi r16, 0xFF ; 255 + 2818: 1f 4f sbci r17, 0xFF ; 255 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:456 if (m_type == 0xD3) { /* MTYPE_SIB */ /* The SIB request occurs before ENTER_PROGMODE. */ memcpy(&packet.in.data[(uint8_t)packet.out.dwAddr & 31], &_sib, ((_wLength - 1) & 31) + 1); _rspsize = _wLength + 1; } else if (bit_is_set(PGCONF, PGCONF_PROG_bp)) { - 281e: 08 c0 rjmp .+16 ; 0x2830 <__DATA_REGION_LENGTH__+0x830> + 281a: 08 c0 rjmp .+16 ; 0x282c <__DATA_REGION_LENGTH__+0x82c> jtag_scope_updi(): - 2820: e9 9b sbis 0x1d, 1 ; 29 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:457 + 281c: e9 9b sbis 0x1d, 1 ; 29 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:457 _rspsize = Timeout::command(Command_Table.read_memory); - 2822: 29 c0 rjmp .+82 ; 0x2876 <__DATA_REGION_LENGTH__+0x876> - 2824: 80 91 00 63 lds r24, 0x6300 ; 0x806300 - 2828: 90 91 01 63 lds r25, 0x6301 ; 0x806301 - 282c: ea d9 rcall .-3116 ; 0x1c02 - 282e: 8c 01 movw r16, r24 + 281e: 29 c0 rjmp .+82 ; 0x2872 <__DATA_REGION_LENGTH__+0x872> + 2820: 80 91 00 63 lds r24, 0x6300 ; 0x806300 + 2824: 90 91 01 63 lds r25, 0x6301 ; 0x806301 + 2828: ec d9 rcall .-3112 ; 0x1c02 + 282a: 8c 01 movw r16, r24 main(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:463 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:463 } /* If not in PROGMODE, respond with a dummy. */ /* A dummy SIG will be returned for locked devices. */ /* This will prevent AVRDUDE from displaying annoying errors. */ else _rspsize = read_dummy(); packet.in.res = _rspsize ? 0x184 : 0xA0; - 2830: 84 e8 ldi r24, 0x84 ; 132 - 2832: 91 e0 ldi r25, 0x01 ; 1 + 282c: 84 e8 ldi r24, 0x84 ; 132 + 282e: 91 e0 ldi r25, 0x01 ; 1 jtag_scope_updi(): - 2834: 01 15 cp r16, r1 - 2836: 11 05 cpc r17, r1 - 2838: 09 f4 brne .+2 ; 0x283c <__DATA_REGION_LENGTH__+0x83c> - 283a: a5 cf rjmp .-182 ; 0x2786 <__DATA_REGION_LENGTH__+0x786> -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:471 + 2830: 01 15 cp r16, r1 + 2832: 11 05 cpc r17, r1 + 2834: 09 f4 brne .+2 ; 0x2838 <__DATA_REGION_LENGTH__+0x838> + 2836: a5 cf rjmp .-182 ; 0x2782 <__DATA_REGION_LENGTH__+0x782> +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:471 else if (_cmd == 0x23) { /* CMD3_WRITE_MEMORY */ D1PRINTF(" UPDI_WRITE=%02X:%06lX:%04X\r\n", packet.out.bMType, packet.out.dwAddr, (size_t)packet.out.dwLength); _rspsize = Timeout::command(Command_Table.write_memory); } packet.in.res = _rspsize ? 0x80 : 0xA0; /* RSP3_OK : RSP3_FAILED */ - 283c: 80 93 c3 60 sts 0x60C3, r24 ; 0x8060c3 - 2840: 90 93 c4 60 sts 0x60C4, r25 ; 0x8060c4 + 2838: 80 93 c3 60 sts 0x60C3, r24 ; 0x8060c3 + 283c: 90 93 c4 60 sts 0x60C4, r25 ; 0x8060c4 complete_jtag_transactions(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:163 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:163 return _result; /* True if an EDBG Payload is received. */ } /*** Prepare for EDBG payload request from device to host ***/ void complete_jtag_transactions (size_t _length) { _packet_length = _length + 6; /* TOKEN + SEQ[2] + EOT + PAD */ - 2844: 98 01 movw r18, r16 - 2846: 2a 5f subi r18, 0xFA ; 250 - 2848: 3f 4f sbci r19, 0xFF ; 255 - 284a: 20 93 8b 60 sts 0x608B, r18 ; 0x80608b <_packet_length> - 284e: 30 93 8c 60 sts 0x608C, r19 ; 0x80608c <_packet_length+0x1> -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:164 + 2840: 98 01 movw r18, r16 + 2842: 2a 5f subi r18, 0xFA ; 250 + 2844: 3f 4f sbci r19, 0xFF ; 255 + 2846: 20 93 8b 60 sts 0x608B, r18 ; 0x80608b <_packet_length> + 284a: 30 93 8c 60 sts 0x608C, r19 ; 0x80608c <_packet_length+0x1> +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:164 _packet_fragment = 0; - 2852: 10 92 8a 60 sts 0x608A, r1 ; 0x80608a <_packet_fragment> -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:165 + 284e: 10 92 8a 60 sts 0x608A, r1 ; 0x80608a <_packet_fragment> +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:165 _packet_endfrag = (_length + 65) / 60; /* 1 to 15 */ - 2856: c8 01 movw r24, r16 - 2858: 8f 5b subi r24, 0xBF ; 191 - 285a: 9f 4f sbci r25, 0xFF ; 255 - 285c: 6c e3 ldi r22, 0x3C ; 60 - 285e: 70 e0 ldi r23, 0x00 ; 0 - 2860: 33 d1 rcall .+614 ; 0x2ac8 <__udivmodhi4> - 2862: 60 93 89 60 sts 0x6089, r22 ; 0x806089 <_packet_endfrag> -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:166 + 2852: c8 01 movw r24, r16 + 2854: 8f 5b subi r24, 0xBF ; 191 + 2856: 9f 4f sbci r25, 0xFF ; 255 + 2858: 6c e3 ldi r22, 0x3C ; 60 + 285a: 70 e0 ldi r23, 0x00 ; 0 + 285c: 33 d1 rcall .+614 ; 0x2ac4 <__udivmodhi4> + 285e: 60 93 89 60 sts 0x6089, r22 ; 0x806089 <_packet_endfrag> +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:166 packet.in.token = 0x0E; /* TOKEN */ - 2866: 8e e0 ldi r24, 0x0E ; 14 - 2868: 80 93 bf 60 sts 0x60BF, r24 ; 0x8060bf -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:167 + 2862: 8e e0 ldi r24, 0x0E ; 14 + 2864: 80 93 bf 60 sts 0x60BF, r24 ; 0x8060bf +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:167 packet.rawData[_packet_length] = 0; /* EOT */ - 286c: 22 54 subi r18, 0x42 ; 66 - 286e: 3f 49 sbci r19, 0x9F ; 159 - 2870: f9 01 movw r30, r18 - 2872: 10 82 st Z, r1 - 2874: 9f ca rjmp .-2754 ; 0x1db4 + 2868: 22 54 subi r18, 0x42 ; 66 + 286a: 3f 49 sbci r19, 0x9F ; 159 + 286c: f9 01 movw r30, r18 + 286e: 10 82 st Z, r1 + 2870: a1 ca rjmp .-2750 ; 0x1db4 read_dummy(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:309 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:309 * Read dummy memory if necessary. */ size_t read_dummy (void) { uint8_t m_type = packet.out.bMType; size_t _wLength = packet.out.dwLength; if (m_type == 0xB4 && _sib[0]) { - 2876: 84 3b cpi r24, 0xB4 ; 180 - 2878: 89 f4 brne .+34 ; 0x289c <__DATA_REGION_LENGTH__+0x89c> - 287a: 80 91 de 62 lds r24, 0x62DE ; 0x8062de <_sib> - 287e: 88 23 and r24, r24 - 2880: 69 f0 breq .+26 ; 0x289c <__DATA_REGION_LENGTH__+0x89c> -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:312 + 2872: 84 3b cpi r24, 0xB4 ; 180 + 2874: 89 f4 brne .+34 ; 0x2898 <__DATA_REGION_LENGTH__+0x898> + 2876: 80 91 de 62 lds r24, 0x62DE ; 0x8062de <_sib> + 287a: 88 23 and r24, r24 + 287c: 69 f0 breq .+26 ; 0x2898 <__DATA_REGION_LENGTH__+0x898> +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:312 /* The SIGNATURE of a locked device cannot be read. */ /* But, the SIB can be read, so a Dummy SIGNATURE is returned. */ packet.in.data[0] = 0x1E; - 2882: 9e e1 ldi r25, 0x1E ; 30 - 2884: 90 93 c5 60 sts 0x60C5, r25 ; 0x8060c5 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:313 + 287e: 9e e1 ldi r25, 0x1E ; 30 + 2880: 90 93 c5 60 sts 0x60C5, r25 ; 0x8060c5 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:313 packet.in.data[1] = _sib[0] == ' ' ? 'A' : _sib[0]; - 2888: 80 32 cpi r24, 0x20 ; 32 - 288a: 09 f4 brne .+2 ; 0x288e <__DATA_REGION_LENGTH__+0x88e> + 2884: 80 32 cpi r24, 0x20 ; 32 + 2886: 09 f4 brne .+2 ; 0x288a <__DATA_REGION_LENGTH__+0x88a> main(): - 288c: 81 e4 ldi r24, 0x41 ; 65 + 2888: 81 e4 ldi r24, 0x41 ; 65 read_dummy(): - 288e: 80 93 c6 60 sts 0x60C6, r24 ; 0x8060c6 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:314 + 288a: 80 93 c6 60 sts 0x60C6, r24 ; 0x8060c6 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:314 packet.in.data[2] = _sib[10]; - 2892: 80 91 e8 62 lds r24, 0x62E8 ; 0x8062e8 <_sib+0xa> - 2896: 80 93 c7 60 sts 0x60C7, r24 ; 0x8060c7 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:316 + 288e: 80 91 e8 62 lds r24, 0x62E8 ; 0x8062e8 <_sib+0xa> + 2892: 80 93 c7 60 sts 0x60C7, r24 ; 0x8060c7 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:316 } else memset(&packet.in.data[0], 0xFF, _wLength); - 289a: bf cf rjmp .-130 ; 0x281a <__DATA_REGION_LENGTH__+0x81a> - 289c: a8 01 movw r20, r16 - 289e: 6f ef ldi r22, 0xFF ; 255 - 28a0: 70 e0 ldi r23, 0x00 ; 0 - 28a2: 85 ec ldi r24, 0xC5 ; 197 - 28a4: 90 e6 ldi r25, 0x60 ; 96 - 28a6: 78 d1 rcall .+752 ; 0x2b98 - 28a8: b8 cf rjmp .-144 ; 0x281a <__DATA_REGION_LENGTH__+0x81a> + 2896: bf cf rjmp .-130 ; 0x2816 <__DATA_REGION_LENGTH__+0x816> + 2898: a8 01 movw r20, r16 + 289a: 6f ef ldi r22, 0xFF ; 255 + 289c: 70 e0 ldi r23, 0x00 ; 0 + 289e: 85 ec ldi r24, 0xC5 ; 197 + 28a0: 90 e6 ldi r25, 0x60 ; 96 + 28a2: 78 d1 rcall .+752 ; 0x2b94 + 28a4: b8 cf rjmp .-144 ; 0x2816 <__DATA_REGION_LENGTH__+0x816> jtag_scope_updi(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:466 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:466 /* This will prevent AVRDUDE from displaying annoying errors. */ else _rspsize = read_dummy(); packet.in.res = _rspsize ? 0x184 : 0xA0; return _rspsize; } else if (_cmd == 0x23) { /* CMD3_WRITE_MEMORY */ - 28aa: 13 32 cpi r17, 0x23 ; 35 - 28ac: 41 f4 brne .+16 ; 0x28be <__DATA_REGION_LENGTH__+0x8be> -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:469 + 28a6: 13 32 cpi r17, 0x23 ; 35 + 28a8: 41 f4 brne .+16 ; 0x28ba <__DATA_REGION_LENGTH__+0x8ba> +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:469 D1PRINTF(" UPDI_WRITE=%02X:%06lX:%04X\r\n", packet.out.bMType, packet.out.dwAddr, (size_t)packet.out.dwLength); _rspsize = Timeout::command(Command_Table.write_memory); - 28ae: 80 91 04 63 lds r24, 0x6304 ; 0x806304 - 28b2: 90 91 05 63 lds r25, 0x6305 ; 0x806305 - 28b6: 93 cf rjmp .-218 ; 0x27de <__DATA_REGION_LENGTH__+0x7de> + 28aa: 80 91 04 63 lds r24, 0x6304 ; 0x806304 + 28ae: 90 91 05 63 lds r25, 0x6305 ; 0x806305 + 28b2: 93 cf rjmp .-218 ; 0x27da <__DATA_REGION_LENGTH__+0x7da> main(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:438 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:438 } else if (_cmd == 0x16) { /* CMD3_LEAVE_PROGMODE */ D1PRINTF(" UPDI_LEAVE_PROG\r\n"); /* There is nothing to do. */ /* The actual termination process is delayed until CMD3_SIGN_OFF. */ _rspsize = 1; - 28b8: 01 e0 ldi r16, 0x01 ; 1 - 28ba: 10 e0 ldi r17, 0x00 ; 0 - 28bc: 76 cf rjmp .-276 ; 0x27aa <__DATA_REGION_LENGTH__+0x7aa> -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:410 + 28b4: 01 e0 ldi r16, 0x01 ; 1 + 28b6: 10 e0 ldi r17, 0x00 ; 0 + 28b8: 76 cf rjmp .-276 ; 0x27a6 <__DATA_REGION_LENGTH__+0x7a6> +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:410 return (*Command_Table.prog_init)(); } /* ARCH=UPDI scope Provides functionality. */ size_t jtag_scope_updi (void) { size_t _rspsize = 0; - 28be: 10 e0 ldi r17, 0x00 ; 0 - 28c0: 00 e0 ldi r16, 0x00 ; 0 - 28c2: 61 cf rjmp .-318 ; 0x2786 <__DATA_REGION_LENGTH__+0x786> + 28ba: 10 e0 ldi r17, 0x00 ; 0 + 28bc: 00 e0 ldi r16, 0x00 ; 0 + 28be: 61 cf rjmp .-318 ; 0x2782 <__DATA_REGION_LENGTH__+0x782> jtag_scope_avr_core(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:376 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:376 else if (_jtag_arch == 0x01) _rspsize = DWIRE::jtag_scope_tiny(); /* dWire? */ else if (_jtag_arch == 0x02) _rspsize = MEGA::jtag_scope_mega(); /* MEGA */ else if (_jtag_arch == 0x03) _rspsize = XMEGA::jtag_scope_xmega(); /* XMEGA */ #endif else if (_jtag_arch == 0x05) _rspsize = UPDI::jtag_scope_updi(); /* UPDI support */ else packet.in.res = 0xA0; /* RSP3_FAILED */ - 28c4: 80 ea ldi r24, 0xA0 ; 160 - 28c6: 90 e0 ldi r25, 0x00 ; 0 - 28c8: bc ce rjmp .-648 ; 0x2642 <__DATA_REGION_LENGTH__+0x642> + 28c0: 80 ea ldi r24, 0xA0 ; 160 + 28c2: 90 e0 ldi r25, 0x00 ; 0 + 28c4: bc ce rjmp .-648 ; 0x263e <__DATA_REGION_LENGTH__+0x63e> jtag_scope_branch(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:399 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:399 else if (_scope == 0x13) _rspsize = AVR32::jtag_scope_avr32(); /* SCOPE_AVR32 */ #endif else if (_scope == 0x12) _rspsize = jtag_scope_avr_core(); /* SCOPE_AVR */ #ifdef CONFIG_PGM_TPI_ENABLE /* The 14P models have limited TPI support due to insufficient pin count. */ else if (_scope == 0x14) _rspsize = TPI::jtag_scope_tpi(); /* SCOPE_AVR_TPI */ - 28ca: 84 31 cpi r24, 0x14 ; 20 - 28cc: 09 f0 breq .+2 ; 0x28d0 <__DATA_REGION_LENGTH__+0x8d0> - 28ce: 88 c0 rjmp .+272 ; 0x29e0 <__DATA_REGION_LENGTH__+0x9e0> + 28c6: 84 31 cpi r24, 0x14 ; 20 + 28c8: 09 f0 breq .+2 ; 0x28cc <__DATA_REGION_LENGTH__+0x8cc> + 28ca: 88 c0 rjmp .+272 ; 0x29dc <__DATA_REGION_LENGTH__+0x9dc> jtag_scope_tpi(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:301 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:301 * It doesn't seem to be implemented in the "mEDBG". * which means it will start immediately with XPRG_CMD_ENTER_PROGMODE. */ size_t jtag_scope_tpi (void) { size_t _rspsize = 0; /* Make final adjustments. */ uint8_t _cmd = packet.out.cmd; - 28d0: 80 91 c3 60 lds r24, 0x60C3 ; 0x8060c3 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:302 + 28cc: 80 91 c3 60 lds r24, 0x60C3 ; 0x8060c3 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:302 if (_cmd == 0x01) { /* XPRG_CMD_ENTER_PROGMODE */ - 28d4: 81 30 cpi r24, 0x01 ; 1 - 28d6: 09 f0 breq .+2 ; 0x28da <__DATA_REGION_LENGTH__+0x8da> -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:304 + 28d0: 81 30 cpi r24, 0x01 ; 1 + 28d2: 09 f0 breq .+2 ; 0x28d6 <__DATA_REGION_LENGTH__+0x8d6> +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:304 D1PRINTF(" TPI_ENTER_PROGMODE\r\n"); USART::setup(); - 28d8: 44 c0 rjmp .+136 ; 0x2962 <__DATA_REGION_LENGTH__+0x962> - 28da: 0e 94 ef 09 call 0x13de ; 0x13de + 28d4: 44 c0 rjmp .+136 ; 0x295e <__DATA_REGION_LENGTH__+0x95e> + 28d6: 0e 94 ef 09 call 0x13de ; 0x13de change_tpi(): /Users/askn/Library/Arduino15/packages/MultiX-Zinnia/tools/avr-gcc/7.3.0-avr8-gnu-toolchain/avr/include/util/atomic.h:50 - 28de: 1f b7 in r17, 0x3f ; 63 + 28da: 1f b7 in r17, 0x3f ; 63 __iCliRetVal(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/usart.cpp:99 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usart.cpp:99 /* The VCD-TxD is repurposed to transmit the synchronous clock. */ void change_tpi (void) { ATOMIC_BLOCK(ATOMIC_RESTORESTATE) { D1PRINTF(" UART=TPI\r\n"); /* In synchronous mode the formula is different. */ uint32_t _baud = ((F_CPU / 1000L) / _xclk + 1) / 2; - 28e0: f8 94 cli + 28dc: f8 94 cli change_tpi(): - 28e2: 20 91 18 60 lds r18, 0x6018 ; 0x806018 <_xclk> - 28e6: 30 91 19 60 lds r19, 0x6019 ; 0x806019 <_xclk+0x1> - 28ea: 50 e0 ldi r21, 0x00 ; 0 - 28ec: 40 e0 ldi r20, 0x00 ; 0 - 28ee: 60 e2 ldi r22, 0x20 ; 32 - 28f0: 7e e4 ldi r23, 0x4E ; 78 - 28f2: 80 e0 ldi r24, 0x00 ; 0 - 28f4: 90 e0 ldi r25, 0x00 ; 0 - 28f6: 1e d1 rcall .+572 ; 0x2b34 <__divmodsi4> - 28f8: da 01 movw r26, r20 - 28fa: c9 01 movw r24, r18 - 28fc: 01 96 adiw r24, 0x01 ; 1 - 28fe: a1 1d adc r26, r1 - 2900: b1 1d adc r27, r1 - 2902: b5 95 asr r27 - 2904: a7 95 ror r26 - 2906: 97 95 ror r25 - 2908: 87 95 ror r24 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usart.cpp:100 + 28de: 20 91 18 60 lds r18, 0x6018 ; 0x806018 <_xclk> + 28e2: 30 91 19 60 lds r19, 0x6019 ; 0x806019 <_xclk+0x1> + 28e6: 50 e0 ldi r21, 0x00 ; 0 + 28e8: 40 e0 ldi r20, 0x00 ; 0 + 28ea: 60 e2 ldi r22, 0x20 ; 32 + 28ec: 7e e4 ldi r23, 0x4E ; 78 + 28ee: 80 e0 ldi r24, 0x00 ; 0 + 28f0: 90 e0 ldi r25, 0x00 ; 0 + 28f2: 1e d1 rcall .+572 ; 0x2b30 <__divmodsi4> + 28f4: da 01 movw r26, r20 + 28f6: c9 01 movw r24, r18 + 28f8: 01 96 adiw r24, 0x01 ; 1 + 28fa: a1 1d adc r26, r1 + 28fc: b1 1d adc r27, r1 + 28fe: b5 95 asr r27 + 2900: a7 95 ror r26 + 2902: 97 95 ror r25 + 2904: 87 95 ror r24 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usart.cpp:100 _baud <<= 6; - 290a: 36 e0 ldi r19, 0x06 ; 6 - 290c: 88 0f add r24, r24 - 290e: 99 1f adc r25, r25 - 2910: aa 1f adc r26, r26 - 2912: bb 1f adc r27, r27 - 2914: 3a 95 dec r19 - 2916: d1 f7 brne .-12 ; 0x290c <__DATA_REGION_LENGTH__+0x90c> -/Users/askn/Collaborator/UPDI4AVR-USB/src/usart.cpp:102 + 2906: 36 e0 ldi r19, 0x06 ; 6 + 2908: 88 0f add r24, r24 + 290a: 99 1f adc r25, r25 + 290c: aa 1f adc r26, r26 + 290e: bb 1f adc r27, r27 + 2910: 3a 95 dec r19 + 2912: d1 f7 brne .-12 ; 0x2908 <__DATA_REGION_LENGTH__+0x908> +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usart.cpp:102 if (_baud < 64) _baud = 64; PORTMUX_USARTROUTEA = PORTMUX_USART_UPDI; - 2918: 20 e1 ldi r18, 0x10 ; 16 - 291a: 20 93 e2 05 sts 0x05E2, r18 ; 0x8005e2 <__TEXT_REGION_LENGTH__+0x7f05e2> -/Users/askn/Collaborator/UPDI4AVR-USB/src/usart.cpp:103 + 2914: 20 e1 ldi r18, 0x10 ; 16 + 2916: 20 93 e2 05 sts 0x05E2, r18 ; 0x8005e2 <__TEXT_REGION_LENGTH__+0x7f05e2> +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usart.cpp:103 pinModeMacro(PIN_VCP_TXD, INPUT_PULLUP); - 291e: 02 98 cbi 0x00, 2 ; 0 - 2920: 28 e0 ldi r18, 0x08 ; 8 - 2922: 20 93 12 04 sts 0x0412, r18 ; 0x800412 <__TEXT_REGION_LENGTH__+0x7f0412> -/Users/askn/Collaborator/UPDI4AVR-USB/src/usart.cpp:104 + 291a: 02 98 cbi 0x00, 2 ; 0 + 291c: 28 e0 ldi r18, 0x08 ; 8 + 291e: 20 93 12 04 sts 0x0412, r18 ; 0x800412 <__TEXT_REGION_LENGTH__+0x7f0412> +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usart.cpp:104 USART0_STATUS = USART_DREIF_bm; - 2926: 20 e2 ldi r18, 0x20 ; 32 - 2928: 20 93 04 08 sts 0x0804, r18 ; 0x800804 <__TEXT_REGION_LENGTH__+0x7f0804> -/Users/askn/Collaborator/UPDI4AVR-USB/src/usart.cpp:105 + 2922: 20 e2 ldi r18, 0x20 ; 32 + 2924: 20 93 04 08 sts 0x0804, r18 ; 0x800804 <__TEXT_REGION_LENGTH__+0x7f0804> +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usart.cpp:105 USART0_BAUD = _baud; - 292c: 80 34 cpi r24, 0x40 ; 64 - 292e: 91 05 cpc r25, r1 - 2930: a1 05 cpc r26, r1 - 2932: b1 05 cpc r27, r1 - 2934: 20 f4 brcc .+8 ; 0x293e <__DATA_REGION_LENGTH__+0x93e> - 2936: 80 e4 ldi r24, 0x40 ; 64 - 2938: 90 e0 ldi r25, 0x00 ; 0 - 293a: a0 e0 ldi r26, 0x00 ; 0 - 293c: b0 e0 ldi r27, 0x00 ; 0 - 293e: 80 93 08 08 sts 0x0808, r24 ; 0x800808 <__TEXT_REGION_LENGTH__+0x7f0808> - 2942: 90 93 09 08 sts 0x0809, r25 ; 0x800809 <__TEXT_REGION_LENGTH__+0x7f0809> -/Users/askn/Collaborator/UPDI4AVR-USB/src/usart.cpp:106 + 2928: 80 34 cpi r24, 0x40 ; 64 + 292a: 91 05 cpc r25, r1 + 292c: a1 05 cpc r26, r1 + 292e: b1 05 cpc r27, r1 + 2930: 20 f4 brcc .+8 ; 0x293a <__DATA_REGION_LENGTH__+0x93a> + 2932: 80 e4 ldi r24, 0x40 ; 64 + 2934: 90 e0 ldi r25, 0x00 ; 0 + 2936: a0 e0 ldi r26, 0x00 ; 0 + 2938: b0 e0 ldi r27, 0x00 ; 0 + 293a: 80 93 08 08 sts 0x0808, r24 ; 0x800808 <__TEXT_REGION_LENGTH__+0x7f0808> + 293e: 90 93 09 08 sts 0x0809, r25 ; 0x800809 <__TEXT_REGION_LENGTH__+0x7f0809> +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usart.cpp:106 USART0_CTRLC = USART_CHSIZE_8BIT_gc | USART_PMODE_EVEN_gc | USART_CMODE_SYNCHRONOUS_gc | USART_SBMODE_2BIT_gc; - 2946: 8b e6 ldi r24, 0x6B ; 107 - 2948: 80 93 07 08 sts 0x0807, r24 ; 0x800807 <__TEXT_REGION_LENGTH__+0x7f0807> -/Users/askn/Collaborator/UPDI4AVR-USB/src/usart.cpp:107 + 2942: 8b e6 ldi r24, 0x6B ; 107 + 2944: 80 93 07 08 sts 0x0807, r24 ; 0x800807 <__TEXT_REGION_LENGTH__+0x7f0807> +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usart.cpp:107 USART0_CTRLA = USART_LBME_bm | USART_RS485_INT_gc | USART_RS485_EXT_gc; - 294c: 8b e0 ldi r24, 0x0B ; 11 - 294e: 80 93 05 08 sts 0x0805, r24 ; 0x800805 <__TEXT_REGION_LENGTH__+0x7f0805> -/Users/askn/Collaborator/UPDI4AVR-USB/src/usart.cpp:108 + 2948: 8b e0 ldi r24, 0x0B ; 11 + 294a: 80 93 05 08 sts 0x0805, r24 ; 0x800805 <__TEXT_REGION_LENGTH__+0x7f0805> +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usart.cpp:108 USART0_CTRLB = USART_RXEN_bm | USART_TXEN_bm | USART_ODME_bm; - 2952: 88 ec ldi r24, 0xC8 ; 200 - 2954: 80 93 06 08 sts 0x0806, r24 ; 0x800806 <__TEXT_REGION_LENGTH__+0x7f0806> + 294e: 88 ec ldi r24, 0xC8 ; 200 + 2950: 80 93 06 08 sts 0x0806, r24 ; 0x800806 <__TEXT_REGION_LENGTH__+0x7f0806> __iRestore(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:306 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:306 USART::change_tpi(); _rspsize = Timeout::command(&connect); - 2958: 1f bf out 0x3f, r17 ; 63 + 2954: 1f bf out 0x3f, r17 ; 63 jtag_scope_tpi(): - 295a: 80 eb ldi r24, 0xB0 ; 176 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:337 + 2956: 80 eb ldi r24, 0xB0 ; 176 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:337 D1PRINTF(" TPI_READ=%02X:%08lX:%04X\r\n", packet.out.tpi.read.bMType, bswap32(packet.out.tpi.read.dwAddr), bswap16(packet.out.tpi.read.wLength) ); _rspsize = Timeout::command(&read_memory); - 295c: 9a e0 ldi r25, 0x0A ; 10 - 295e: 51 d9 rcall .-3422 ; 0x1c02 - 2960: 19 c0 rjmp .+50 ; 0x2994 <__DATA_REGION_LENGTH__+0x994> -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:308 + 2958: 9a e0 ldi r25, 0x0A ; 10 + 295a: 53 d9 rcall .-3418 ; 0x1c02 + 295c: 19 c0 rjmp .+50 ; 0x2990 <__DATA_REGION_LENGTH__+0x990> +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:308 D1PRINTF(" TPI_ENTER_PROGMODE\r\n"); USART::setup(); USART::change_tpi(); _rspsize = Timeout::command(&connect); } else if (_cmd == 0x02) { /* XPRG_CMD_LEAVE_PROGMODE */ - 2962: 82 30 cpi r24, 0x02 ; 2 - 2964: 09 f5 brne .+66 ; 0x29a8 <__DATA_REGION_LENGTH__+0x9a8> + 295e: 82 30 cpi r24, 0x02 ; 2 + 2960: 09 f5 brne .+66 ; 0x29a4 <__DATA_REGION_LENGTH__+0x9a4> set_sstcs(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:69 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:69 bool get_sldcs (const uint8_t _addr) { return (send(0x80 | _addr) && recv()); } bool set_sstcs (const uint8_t _addr, const uint8_t _data) { return (send(0xC0 | _addr) && send(_data)); - 2966: 80 ec ldi r24, 0xC0 ; 192 - 2968: 0e 94 ef 04 call 0x9de ; 0x9de - 296c: 88 23 and r24, r24 - 296e: 19 f0 breq .+6 ; 0x2976 <__DATA_REGION_LENGTH__+0x976> - 2970: 80 e0 ldi r24, 0x00 ; 0 - 2972: 0e 94 ef 04 call 0x9de ; 0x9de + 2962: 80 ec ldi r24, 0xC0 ; 192 + 2964: 0e 94 ef 04 call 0x9de ; 0x9de + 2968: 88 23 and r24, r24 + 296a: 19 f0 breq .+6 ; 0x2972 <__DATA_REGION_LENGTH__+0x972> + 296c: 80 e0 ldi r24, 0x00 ; 0 + 296e: 0e 94 ef 04 call 0x9de ; 0x9de delay_micros(): /Users/askn/Library/Arduino15/packages/MultiX-Zinnia/hardware/modernAVR/0.2.14/cores/modernAVR/api/delay_busywait.h:33 static __inline__ __attribute__((__always_inline__)) void delay_micros (uint32_t _us); @@ -10640,514 +10640,514 @@ static __inline__ __attribute__((__always_inline__)) void delay_millis (uint32_t void delay_micros (uint32_t _us) { if (F_CPU >= 1000000L) { __builtin_avr_delay_cycles((F_CPU / 1000000L) * _us); - 2976: 83 ef ldi r24, 0xF3 ; 243 - 2978: 91 e0 ldi r25, 0x01 ; 1 - 297a: 01 97 sbiw r24, 0x01 ; 1 - 297c: f1 f7 brne .-4 ; 0x297a <__DATA_REGION_LENGTH__+0x97a> - 297e: 00 c0 rjmp .+0 ; 0x2980 <__DATA_REGION_LENGTH__+0x980> - 2980: 00 00 nop + 2972: 83 ef ldi r24, 0xF3 ; 243 + 2974: 91 e0 ldi r25, 0x01 ; 1 + 2976: 01 97 sbiw r24, 0x01 ; 1 + 2978: f1 f7 brne .-4 ; 0x2976 <__DATA_REGION_LENGTH__+0x976> + 297a: 00 c0 rjmp .+0 ; 0x297c <__DATA_REGION_LENGTH__+0x97c> + 297c: 00 00 nop disconnect(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:284 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:284 /*** leave RESET (normal programing) ***/ set_sstcs(0x00, 0x00); D1PRINTF(" TPISR<00\r\n"); /* Send the NVM exit command, wait a short while and release RESET. */ delay_micros(100); openDrainWriteMacro(PIN_VCP_TXD, HIGH); - 2982: 02 98 cbi 0x00, 2 ; 0 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:285 + 297e: 02 98 cbi 0x00, 2 ; 0 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:285 openDrainWriteMacro(PIN_PG_TRST, HIGH); - 2984: 01 98 cbi 0x00, 1 ; 0 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:286 + 2980: 01 98 cbi 0x00, 1 ; 0 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:286 PGCONF = 0; - 2986: 1d ba out 0x1d, r1 ; 29 + 2982: 1d ba out 0x1d, r1 ; 29 jtag_scope_tpi(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:312 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:312 } else if (_cmd == 0x02) { /* XPRG_CMD_LEAVE_PROGMODE */ D1PRINTF(" TPI_LEAVE_PROGMODE\r\n"); _rspsize = disconnect(); _tpi_setmode = 0; USART::setup(); - 2988: 0e 94 ef 09 call 0x13de ; 0x13de -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:313 + 2984: 0e 94 ef 09 call 0x13de ; 0x13de +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:313 USART::change_vcp(); - 298c: 0e 94 b4 05 call 0xb68 ; 0xb68 + 2988: 0e 94 b4 05 call 0xb68 ; 0xb68 main(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:310 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:310 USART::change_tpi(); _rspsize = Timeout::command(&connect); } else if (_cmd == 0x02) { /* XPRG_CMD_LEAVE_PROGMODE */ D1PRINTF(" TPI_LEAVE_PROGMODE\r\n"); _rspsize = disconnect(); - 2990: 81 e0 ldi r24, 0x01 ; 1 - 2992: 90 e0 ldi r25, 0x00 ; 0 + 298c: 81 e0 ldi r24, 0x01 ; 1 + 298e: 90 e0 ldi r25, 0x00 ; 0 jtag_scope_tpi(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:360 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:360 _tpi_csr_addr = _bValue; /* XPRG_TPI_NVMCSR_ADDRESS */ } #endif _rspsize = 1; } packet.in.tpi_res = _rspsize ? 0x00 : 0x01; /* XPRG_ERR_OK : XPRG_ERR_FAILED */ - 2994: 21 e0 ldi r18, 0x01 ; 1 - 2996: 00 97 sbiw r24, 0x00 ; 0 - 2998: 09 f0 breq .+2 ; 0x299c <__DATA_REGION_LENGTH__+0x99c> - 299a: 20 e0 ldi r18, 0x00 ; 0 - 299c: 20 93 c4 60 sts 0x60C4, r18 ; 0x8060c4 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:364 + 2990: 21 e0 ldi r18, 0x01 ; 1 + 2992: 00 97 sbiw r24, 0x00 ; 0 + 2994: 09 f0 breq .+2 ; 0x2998 <__DATA_REGION_LENGTH__+0x998> + 2996: 20 e0 ldi r18, 0x00 ; 0 + 2998: 20 93 c4 60 sts 0x60C4, r18 ; 0x8060c4 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:364 D1PRINTF(" \r\n", _rspsize); /* Adds padding to XPRG responses to adjust the length of the payload. */ return ++_rspsize; - 29a0: 8c 01 movw r16, r24 + 299c: 8c 01 movw r16, r24 jtag_scope_edbg(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:257 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:257 D1PRINTF(" TARGET_POWER=%02X\r\n", _jtag_vpow); packet.in.data[0] = _jtag_vpow; } } packet.in.res = 0x184; /* RSP3_DATA */ _rspsize = _length + 1; - 29a2: 0f 5f subi r16, 0xFF ; 255 - 29a4: 1f 4f sbci r17, 0xFF ; 255 - 29a6: 4e cf rjmp .-356 ; 0x2844 <__DATA_REGION_LENGTH__+0x844> + 299e: 0f 5f subi r16, 0xFF ; 255 + 29a0: 1f 4f sbci r17, 0xFF ; 255 + 29a2: 4e cf rjmp .-356 ; 0x2840 <__DATA_REGION_LENGTH__+0x840> jtag_scope_tpi(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:315 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:315 _rspsize = disconnect(); _tpi_setmode = 0; USART::setup(); USART::change_vcp(); } else if (bit_is_clear(PGCONF, PGCONF_UPDI_bp)) { /* empty */ } - 29a8: e8 9b sbis 0x1d, 0 ; 29 - 29aa: 17 c0 rjmp .+46 ; 0x29da <__DATA_REGION_LENGTH__+0x9da> -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:316 + 29a4: e8 9b sbis 0x1d, 0 ; 29 + 29a6: 17 c0 rjmp .+46 ; 0x29d6 <__DATA_REGION_LENGTH__+0x9d6> +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:316 else if (_cmd == 0x03) { /* XPRG_CMD_ERASE */ - 29ac: 83 30 cpi r24, 0x03 ; 3 - 29ae: 19 f4 brne .+6 ; 0x29b6 <__DATA_REGION_LENGTH__+0x9b6> -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:321 + 29a8: 83 30 cpi r24, 0x03 ; 3 + 29aa: 19 f4 brne .+6 ; 0x29b2 <__DATA_REGION_LENGTH__+0x9b2> +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:321 D1PRINTF(" TPI_ERASE=%02X:%08lX\r\n", packet.out.tpi.read.bMType, bswap32(packet.out.tpi.read.dwAddr) ); _rspsize = Timeout::command(&erase_memory); - 29b0: 84 e3 ldi r24, 0x34 ; 52 - 29b2: 9d e0 ldi r25, 0x0D ; 13 - 29b4: d4 cf rjmp .-88 ; 0x295e <__DATA_REGION_LENGTH__+0x95e> -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:323 + 29ac: 84 e3 ldi r24, 0x34 ; 52 + 29ae: 9d e0 ldi r25, 0x0D ; 13 + 29b0: d4 cf rjmp .-88 ; 0x295a <__DATA_REGION_LENGTH__+0x95a> +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:323 } else if (_cmd == 0x04) { /* XPRG_CMD_WRITE_MEM */ - 29b6: 84 30 cpi r24, 0x04 ; 4 - 29b8: 19 f4 brne .+6 ; 0x29c0 <__DATA_REGION_LENGTH__+0x9c0> -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:329 + 29b2: 84 30 cpi r24, 0x04 ; 4 + 29b4: 19 f4 brne .+6 ; 0x29bc <__DATA_REGION_LENGTH__+0x9bc> +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:329 D1PRINTF(" TPI_WRITE=%02X:%08lX:%04X\r\n", packet.out.tpi.write.bMType, bswap32(packet.out.tpi.write.dwAddr), bswap16(packet.out.tpi.write.wLength) ); _rspsize = Timeout::command(&write_memory); - 29ba: 89 e3 ldi r24, 0x39 ; 57 - 29bc: 9c e0 ldi r25, 0x0C ; 12 - 29be: cf cf rjmp .-98 ; 0x295e <__DATA_REGION_LENGTH__+0x95e> -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:331 + 29b6: 89 e3 ldi r24, 0x39 ; 57 + 29b8: 9c e0 ldi r25, 0x0C ; 12 + 29ba: cf cf rjmp .-98 ; 0x295a <__DATA_REGION_LENGTH__+0x95a> +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:331 } else if (_cmd == 0x05) { /* XPRG_CMD_READ_MEM */ - 29c0: 85 30 cpi r24, 0x05 ; 5 - 29c2: 19 f4 brne .+6 ; 0x29ca <__DATA_REGION_LENGTH__+0x9ca> -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:337 + 29bc: 85 30 cpi r24, 0x05 ; 5 + 29be: 19 f4 brne .+6 ; 0x29c6 <__DATA_REGION_LENGTH__+0x9c6> +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:337 D1PRINTF(" TPI_READ=%02X:%08lX:%04X\r\n", packet.out.tpi.read.bMType, bswap32(packet.out.tpi.read.dwAddr), bswap16(packet.out.tpi.read.wLength) ); _rspsize = Timeout::command(&read_memory); - 29c4: 86 e0 ldi r24, 0x06 ; 6 - 29c6: 9d e0 ldi r25, 0x0D ; 13 - 29c8: ca cf rjmp .-108 ; 0x295e <__DATA_REGION_LENGTH__+0x95e> -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:342 + 29c0: 86 e0 ldi r24, 0x06 ; 6 + 29c2: 9d e0 ldi r25, 0x0D ; 13 + 29c4: ca cf rjmp .-108 ; 0x295a <__DATA_REGION_LENGTH__+0x95a> +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:342 } else if (_cmd == 0x06) { /* XPRG_CMD_CRC */ D1PRINTF(" TPI_CRC\r\n"); /* not used (Fail) */ } else if (_cmd == 0x07) { /* XPRG_CMD_SET_PARAM */ - 29ca: 31 e0 ldi r19, 0x01 ; 1 - 29cc: 20 e0 ldi r18, 0x00 ; 0 - 29ce: 87 30 cpi r24, 0x07 ; 7 - 29d0: 09 f0 breq .+2 ; 0x29d4 <__DATA_REGION_LENGTH__+0x9d4> - 29d2: 30 e0 ldi r19, 0x00 ; 0 + 29c6: 31 e0 ldi r19, 0x01 ; 1 + 29c8: 20 e0 ldi r18, 0x00 ; 0 + 29ca: 87 30 cpi r24, 0x07 ; 7 + 29cc: 09 f0 breq .+2 ; 0x29d0 <__DATA_REGION_LENGTH__+0x9d0> + 29ce: 30 e0 ldi r19, 0x00 ; 0 main(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:306 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:306 uint8_t _cmd = packet.out.cmd; if (_cmd == 0x01) { /* XPRG_CMD_ENTER_PROGMODE */ D1PRINTF(" TPI_ENTER_PROGMODE\r\n"); USART::setup(); USART::change_tpi(); _rspsize = Timeout::command(&connect); - 29d4: 83 2f mov r24, r19 - 29d6: 92 2f mov r25, r18 - 29d8: dd cf rjmp .-70 ; 0x2994 <__DATA_REGION_LENGTH__+0x994> -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:300 + 29d0: 83 2f mov r24, r19 + 29d2: 92 2f mov r25, r18 + 29d4: dd cf rjmp .-70 ; 0x2990 <__DATA_REGION_LENGTH__+0x990> +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:300 * When this scope is used, CMD3_SIGN_ON will not be called, * It doesn't seem to be implemented in the "mEDBG". * which means it will start immediately with XPRG_CMD_ENTER_PROGMODE. */ size_t jtag_scope_tpi (void) { size_t _rspsize = 0; /* Make final adjustments. */ - 29da: 90 e0 ldi r25, 0x00 ; 0 - 29dc: 80 e0 ldi r24, 0x00 ; 0 - 29de: da cf rjmp .-76 ; 0x2994 <__DATA_REGION_LENGTH__+0x994> + 29d6: 90 e0 ldi r25, 0x00 ; 0 + 29d8: 80 e0 ldi r24, 0x00 ; 0 + 29da: da cf rjmp .-76 ; 0x2990 <__DATA_REGION_LENGTH__+0x990> jtag_scope_branch(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:401 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:401 else if (_scope == 0x12) _rspsize = jtag_scope_avr_core(); /* SCOPE_AVR */ #ifdef CONFIG_PGM_TPI_ENABLE /* The 14P models have limited TPI support due to insufficient pin count. */ else if (_scope == 0x14) _rspsize = TPI::jtag_scope_tpi(); /* SCOPE_AVR_TPI */ #endif else if (_scope == 0x20) _rspsize = jtag_scope_edbg(); /* SCOPE_EDBG */ - 29e0: 80 32 cpi r24, 0x20 ; 32 - 29e2: 09 f0 breq .+2 ; 0x29e6 <__DATA_REGION_LENGTH__+0x9e6> - 29e4: 35 ce rjmp .-918 ; 0x2650 <__DATA_REGION_LENGTH__+0x650> + 29dc: 80 32 cpi r24, 0x20 ; 32 + 29de: 09 f0 breq .+2 ; 0x29e2 <__DATA_REGION_LENGTH__+0x9e2> + 29e0: 35 ce rjmp .-918 ; 0x264c <__DATA_REGION_LENGTH__+0x64c> jtag_scope_edbg(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:225 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:225 /*** The EDBG scope provides access to the writer's hardware specifications. ***/ /* There is no impact on operation if it is not called at all. */ size_t jtag_scope_edbg (void) { size_t _rspsize = 0; uint8_t _cmd = packet.out.cmd; - 29e6: 20 91 c3 60 lds r18, 0x60C3 ; 0x8060c3 -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:226 + 29e2: 20 91 c3 60 lds r18, 0x60C3 ; 0x8060c3 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:226 uint8_t _section = packet.out.section; - 29ea: 90 91 c5 60 lds r25, 0x60C5 ; 0x8060c5 -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:227 + 29e6: 90 91 c5 60 lds r25, 0x60C5 ; 0x8060c5 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:227 uint8_t _index = packet.out.index; - 29ee: 80 91 c6 60 lds r24, 0x60C6 ; 0x8060c6 -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:229 + 29ea: 80 91 c6 60 lds r24, 0x60C6 ; 0x8060c6 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:229 uint8_t _length = packet.out.length; if (_cmd == 0x01) { /* CMD3_SET_PARAMETER */ - 29f2: 21 30 cpi r18, 0x01 ; 1 - 29f4: 89 f4 brne .+34 ; 0x2a18 <__DATA_REGION_LENGTH__+0xa18> -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:232 + 29ee: 21 30 cpi r18, 0x01 ; 1 + 29f0: 89 f4 brne .+34 ; 0x2a14 <__DATA_REGION_LENGTH__+0xa14> +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:232 uint16_t _data = packet.out.wValue; D1PRINTF(" AVR_SET_PARAM=%02X:%02X:%02X:%02X\r\n", _section, _index, _length, _data); if (_section == 0) { /* SET_GET_CTXT_CONFIG */ - 29f6: 91 11 cpse r25, r1 - 29f8: 22 ce rjmp .-956 ; 0x263e <__DATA_REGION_LENGTH__+0x63e> -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:233 + 29f2: 91 11 cpse r25, r1 + 29f4: 22 ce rjmp .-956 ; 0x263a <__DATA_REGION_LENGTH__+0x63a> +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:233 if (_index == 0x10) { /* EDBG_CONTROL_TARGET_POWER */ - 29fa: 80 31 cpi r24, 0x10 ; 16 - 29fc: 09 f0 breq .+2 ; 0x2a00 <__DATA_REGION_LENGTH__+0xa00> - 29fe: 1f ce rjmp .-962 ; 0x263e <__DATA_REGION_LENGTH__+0x63e> -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:230 + 29f6: 80 31 cpi r24, 0x10 ; 16 + 29f8: 09 f0 breq .+2 ; 0x29fc <__DATA_REGION_LENGTH__+0x9fc> + 29fa: 1f ce rjmp .-962 ; 0x263a <__DATA_REGION_LENGTH__+0x63a> +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:230 uint8_t _cmd = packet.out.cmd; uint8_t _section = packet.out.section; uint8_t _index = packet.out.index; uint8_t _length = packet.out.length; if (_cmd == 0x01) { /* CMD3_SET_PARAMETER */ uint16_t _data = packet.out.wValue; - 2a00: 80 91 c8 60 lds r24, 0x60C8 ; 0x8060c8 - 2a04: 90 91 c9 60 lds r25, 0x60C9 ; 0x8060c9 -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:236 + 29fc: 80 91 c8 60 lds r24, 0x60C8 ; 0x8060c8 + 2a00: 90 91 c9 60 lds r25, 0x60C9 ; 0x8060c9 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:236 D1PRINTF(" AVR_SET_PARAM=%02X:%02X:%02X:%02X\r\n", _section, _index, _length, _data); if (_section == 0) { /* SET_GET_CTXT_CONFIG */ if (_index == 0x10) { /* EDBG_CONTROL_TARGET_POWER */ /* Called with `-xvtarget_switch=0,1` HAS_VTARG_SWITCH */ D1PRINTF(" TARGET_POWER=%02X\r\n", _data); _jtag_vpow = _data; /* 0,1 */ - 2a08: 80 93 00 60 sts 0x6000, r24 ; 0x806000 <__DATA_REGION_ORIGIN__> -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:238 + 2a04: 80 93 00 60 sts 0x6000, r24 ; 0x806000 <__DATA_REGION_ORIGIN__> +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:238 #if defined(PIN_HV_POWER) if (_data) - 2a0c: 89 2b or r24, r25 - 2a0e: 11 f0 breq .+4 ; 0x2a14 <__DATA_REGION_LENGTH__+0xa14> -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:239 + 2a08: 89 2b or r24, r25 + 2a0a: 11 f0 breq .+4 ; 0x2a10 <__DATA_REGION_LENGTH__+0xa10> +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:239 digitalWriteMacro(PIN_HV_POWER, HIGH); - 2a10: 0e 9a sbi 0x01, 6 ; 1 - 2a12: 15 ce rjmp .-982 ; 0x263e <__DATA_REGION_LENGTH__+0x63e> -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:241 + 2a0c: 0e 9a sbi 0x01, 6 ; 1 + 2a0e: 15 ce rjmp .-982 ; 0x263a <__DATA_REGION_LENGTH__+0x63a> +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:241 else digitalWriteMacro(PIN_HV_POWER, LOW); - 2a14: 0e 98 cbi 0x01, 6 ; 1 - 2a16: 13 ce rjmp .-986 ; 0x263e <__DATA_REGION_LENGTH__+0x63e> -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:247 + 2a10: 0e 98 cbi 0x01, 6 ; 1 + 2a12: 13 ce rjmp .-986 ; 0x263a <__DATA_REGION_LENGTH__+0x63a> +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:247 #endif } } packet.in.res = 0x80; /* RSP3_OK */ } else if (_cmd == 0x02) { /* CMD3_GET_PARAMETER */ - 2a18: 22 30 cpi r18, 0x02 ; 2 - 2a1a: 09 f0 breq .+2 ; 0x2a1e <__DATA_REGION_LENGTH__+0xa1e> - 2a1c: 19 ce rjmp .-974 ; 0x2650 <__DATA_REGION_LENGTH__+0x650> -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:228 + 2a14: 22 30 cpi r18, 0x02 ; 2 + 2a16: 09 f0 breq .+2 ; 0x2a1a <__DATA_REGION_LENGTH__+0xa1a> + 2a18: 19 ce rjmp .-974 ; 0x264c <__DATA_REGION_LENGTH__+0x64c> +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:228 size_t jtag_scope_edbg (void) { size_t _rspsize = 0; uint8_t _cmd = packet.out.cmd; uint8_t _section = packet.out.section; uint8_t _index = packet.out.index; uint8_t _length = packet.out.length; - 2a1e: 00 91 c7 60 lds r16, 0x60C7 ; 0x8060c7 -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:249 + 2a1a: 00 91 c7 60 lds r16, 0x60C7 ; 0x8060c7 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:249 } packet.in.res = 0x80; /* RSP3_OK */ } else if (_cmd == 0x02) { /* CMD3_GET_PARAMETER */ D1PRINTF(" AVR_GET_PARAM=%02X:%02X:%02X\r\n", _section, _index, _length); if (_section == 0) { /* SET_GET_CTXT_CONFIG */ - 2a22: 91 11 cpse r25, r1 - 2a24: fa cd rjmp .-1036 ; 0x261a <__DATA_REGION_LENGTH__+0x61a> -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:250 + 2a1e: 91 11 cpse r25, r1 + 2a20: fa cd rjmp .-1036 ; 0x2616 <__DATA_REGION_LENGTH__+0x616> +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:250 if (_index == 0x10) { /* EDBG_CONTROL_TARGET_POWER */ - 2a26: 80 31 cpi r24, 0x10 ; 16 - 2a28: 09 f0 breq .+2 ; 0x2a2c <__DATA_REGION_LENGTH__+0xa2c> - 2a2a: f7 cd rjmp .-1042 ; 0x261a <__DATA_REGION_LENGTH__+0x61a> -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:253 + 2a22: 80 31 cpi r24, 0x10 ; 16 + 2a24: 09 f0 breq .+2 ; 0x2a28 <__DATA_REGION_LENGTH__+0xa28> + 2a26: f7 cd rjmp .-1042 ; 0x2616 <__DATA_REGION_LENGTH__+0x616> +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:253 /* Called with `-xvtarget_switch` HAS_VTARG_SWITCH */ D1PRINTF(" TARGET_POWER=%02X\r\n", _jtag_vpow); packet.in.data[0] = _jtag_vpow; - 2a2c: 80 91 00 60 lds r24, 0x6000 ; 0x806000 <__DATA_REGION_ORIGIN__> - 2a30: 80 93 c5 60 sts 0x60C5, r24 ; 0x8060c5 - 2a34: f2 cd rjmp .-1052 ; 0x261a <__DATA_REGION_LENGTH__+0x61a> + 2a28: 80 91 00 60 lds r24, 0x6000 ; 0x806000 <__DATA_REGION_ORIGIN__> + 2a2c: 80 93 c5 60 sts 0x60C5, r24 ; 0x8060c5 + 2a30: f2 cd rjmp .-1052 ; 0x2616 <__DATA_REGION_LENGTH__+0x616> -00002a36 : +00002a32 : setjmp(): - 2a36: dc 01 movw r26, r24 - 2a38: 2d 92 st X+, r2 - 2a3a: 3d 92 st X+, r3 - 2a3c: 4d 92 st X+, r4 - 2a3e: 5d 92 st X+, r5 - 2a40: 6d 92 st X+, r6 - 2a42: 7d 92 st X+, r7 - 2a44: 8d 92 st X+, r8 - 2a46: 9d 92 st X+, r9 - 2a48: ad 92 st X+, r10 - 2a4a: bd 92 st X+, r11 - 2a4c: cd 92 st X+, r12 - 2a4e: dd 92 st X+, r13 - 2a50: ed 92 st X+, r14 - 2a52: fd 92 st X+, r15 - 2a54: 0d 93 st X+, r16 - 2a56: 1d 93 st X+, r17 - 2a58: cd 93 st X+, r28 - 2a5a: dd 93 st X+, r29 - 2a5c: ff 91 pop r31 - 2a5e: ef 91 pop r30 - 2a60: 8d b7 in r24, 0x3d ; 61 + 2a32: dc 01 movw r26, r24 + 2a34: 2d 92 st X+, r2 + 2a36: 3d 92 st X+, r3 + 2a38: 4d 92 st X+, r4 + 2a3a: 5d 92 st X+, r5 + 2a3c: 6d 92 st X+, r6 + 2a3e: 7d 92 st X+, r7 + 2a40: 8d 92 st X+, r8 + 2a42: 9d 92 st X+, r9 + 2a44: ad 92 st X+, r10 + 2a46: bd 92 st X+, r11 + 2a48: cd 92 st X+, r12 + 2a4a: dd 92 st X+, r13 + 2a4c: ed 92 st X+, r14 + 2a4e: fd 92 st X+, r15 + 2a50: 0d 93 st X+, r16 + 2a52: 1d 93 st X+, r17 + 2a54: cd 93 st X+, r28 + 2a56: dd 93 st X+, r29 + 2a58: ff 91 pop r31 + 2a5a: ef 91 pop r30 + 2a5c: 8d b7 in r24, 0x3d ; 61 + 2a5e: 8d 93 st X+, r24 + 2a60: 8e b7 in r24, 0x3e ; 62 2a62: 8d 93 st X+, r24 - 2a64: 8e b7 in r24, 0x3e ; 62 + 2a64: 8f b7 in r24, 0x3f ; 63 2a66: 8d 93 st X+, r24 - 2a68: 8f b7 in r24, 0x3f ; 63 - 2a6a: 8d 93 st X+, r24 - 2a6c: ed 93 st X+, r30 - 2a6e: fd 93 st X+, r31 - 2a70: 88 27 eor r24, r24 - 2a72: 99 27 eor r25, r25 - 2a74: 09 94 ijmp - -00002a76 : + 2a68: ed 93 st X+, r30 + 2a6a: fd 93 st X+, r31 + 2a6c: 88 27 eor r24, r24 + 2a6e: 99 27 eor r25, r25 + 2a70: 09 94 ijmp + +00002a72 : longjmp(): - 2a76: dc 01 movw r26, r24 - 2a78: cb 01 movw r24, r22 - 2a7a: 81 30 cpi r24, 0x01 ; 1 - 2a7c: 91 05 cpc r25, r1 - 2a7e: 81 1d adc r24, r1 - 2a80: 2d 90 ld r2, X+ - 2a82: 3d 90 ld r3, X+ - 2a84: 4d 90 ld r4, X+ - 2a86: 5d 90 ld r5, X+ - 2a88: 6d 90 ld r6, X+ - 2a8a: 7d 90 ld r7, X+ - 2a8c: 8d 90 ld r8, X+ - 2a8e: 9d 90 ld r9, X+ - 2a90: ad 90 ld r10, X+ - 2a92: bd 90 ld r11, X+ - 2a94: cd 90 ld r12, X+ - 2a96: dd 90 ld r13, X+ - 2a98: ed 90 ld r14, X+ - 2a9a: fd 90 ld r15, X+ - 2a9c: 0d 91 ld r16, X+ - 2a9e: 1d 91 ld r17, X+ - 2aa0: cd 91 ld r28, X+ - 2aa2: dd 91 ld r29, X+ - 2aa4: ed 91 ld r30, X+ - 2aa6: fd 91 ld r31, X+ - 2aa8: 0d 90 ld r0, X+ - 2aaa: 0f be out 0x3f, r0 ; 63 - 2aac: ed bf out 0x3d, r30 ; 61 - 2aae: fe bf out 0x3e, r31 ; 62 - 2ab0: ed 91 ld r30, X+ - 2ab2: fd 91 ld r31, X+ - 2ab4: 09 94 ijmp - -00002ab6 : + 2a72: dc 01 movw r26, r24 + 2a74: cb 01 movw r24, r22 + 2a76: 81 30 cpi r24, 0x01 ; 1 + 2a78: 91 05 cpc r25, r1 + 2a7a: 81 1d adc r24, r1 + 2a7c: 2d 90 ld r2, X+ + 2a7e: 3d 90 ld r3, X+ + 2a80: 4d 90 ld r4, X+ + 2a82: 5d 90 ld r5, X+ + 2a84: 6d 90 ld r6, X+ + 2a86: 7d 90 ld r7, X+ + 2a88: 8d 90 ld r8, X+ + 2a8a: 9d 90 ld r9, X+ + 2a8c: ad 90 ld r10, X+ + 2a8e: bd 90 ld r11, X+ + 2a90: cd 90 ld r12, X+ + 2a92: dd 90 ld r13, X+ + 2a94: ed 90 ld r14, X+ + 2a96: fd 90 ld r15, X+ + 2a98: 0d 91 ld r16, X+ + 2a9a: 1d 91 ld r17, X+ + 2a9c: cd 91 ld r28, X+ + 2a9e: dd 91 ld r29, X+ + 2aa0: ed 91 ld r30, X+ + 2aa2: fd 91 ld r31, X+ + 2aa4: 0d 90 ld r0, X+ + 2aa6: 0f be out 0x3f, r0 ; 63 + 2aa8: ed bf out 0x3d, r30 ; 61 + 2aaa: fe bf out 0x3e, r31 ; 62 + 2aac: ed 91 ld r30, X+ + 2aae: fd 91 ld r31, X+ + 2ab0: 09 94 ijmp + +00002ab2 : memcpy_P(): - 2ab6: fb 01 movw r30, r22 - 2ab8: dc 01 movw r26, r24 - 2aba: 02 c0 rjmp .+4 ; 0x2ac0 - 2abc: 05 90 lpm r0, Z+ - 2abe: 0d 92 st X+, r0 - 2ac0: 41 50 subi r20, 0x01 ; 1 - 2ac2: 50 40 sbci r21, 0x00 ; 0 - 2ac4: d8 f7 brcc .-10 ; 0x2abc - 2ac6: 08 95 ret - -00002ac8 <__udivmodhi4>: + 2ab2: fb 01 movw r30, r22 + 2ab4: dc 01 movw r26, r24 + 2ab6: 02 c0 rjmp .+4 ; 0x2abc + 2ab8: 05 90 lpm r0, Z+ + 2aba: 0d 92 st X+, r0 + 2abc: 41 50 subi r20, 0x01 ; 1 + 2abe: 50 40 sbci r21, 0x00 ; 0 + 2ac0: d8 f7 brcc .-10 ; 0x2ab8 + 2ac2: 08 95 ret + +00002ac4 <__udivmodhi4>: __udivmodhi4(): - 2ac8: aa 1b sub r26, r26 - 2aca: bb 1b sub r27, r27 - 2acc: 51 e1 ldi r21, 0x11 ; 17 - 2ace: 07 c0 rjmp .+14 ; 0x2ade <__udivmodhi4_ep> - -00002ad0 <__udivmodhi4_loop>: - 2ad0: aa 1f adc r26, r26 - 2ad2: bb 1f adc r27, r27 - 2ad4: a6 17 cp r26, r22 - 2ad6: b7 07 cpc r27, r23 - 2ad8: 10 f0 brcs .+4 ; 0x2ade <__udivmodhi4_ep> - 2ada: a6 1b sub r26, r22 - 2adc: b7 0b sbc r27, r23 - -00002ade <__udivmodhi4_ep>: - 2ade: 88 1f adc r24, r24 - 2ae0: 99 1f adc r25, r25 - 2ae2: 5a 95 dec r21 - 2ae4: a9 f7 brne .-22 ; 0x2ad0 <__udivmodhi4_loop> - 2ae6: 80 95 com r24 - 2ae8: 90 95 com r25 - 2aea: bc 01 movw r22, r24 - 2aec: cd 01 movw r24, r26 - 2aee: 08 95 ret - -00002af0 <__udivmodsi4>: + 2ac4: aa 1b sub r26, r26 + 2ac6: bb 1b sub r27, r27 + 2ac8: 51 e1 ldi r21, 0x11 ; 17 + 2aca: 07 c0 rjmp .+14 ; 0x2ada <__udivmodhi4_ep> + +00002acc <__udivmodhi4_loop>: + 2acc: aa 1f adc r26, r26 + 2ace: bb 1f adc r27, r27 + 2ad0: a6 17 cp r26, r22 + 2ad2: b7 07 cpc r27, r23 + 2ad4: 10 f0 brcs .+4 ; 0x2ada <__udivmodhi4_ep> + 2ad6: a6 1b sub r26, r22 + 2ad8: b7 0b sbc r27, r23 + +00002ada <__udivmodhi4_ep>: + 2ada: 88 1f adc r24, r24 + 2adc: 99 1f adc r25, r25 + 2ade: 5a 95 dec r21 + 2ae0: a9 f7 brne .-22 ; 0x2acc <__udivmodhi4_loop> + 2ae2: 80 95 com r24 + 2ae4: 90 95 com r25 + 2ae6: bc 01 movw r22, r24 + 2ae8: cd 01 movw r24, r26 + 2aea: 08 95 ret + +00002aec <__udivmodsi4>: __udivmodsi4(): - 2af0: a1 e2 ldi r26, 0x21 ; 33 - 2af2: 1a 2e mov r1, r26 - 2af4: aa 1b sub r26, r26 - 2af6: bb 1b sub r27, r27 - 2af8: fd 01 movw r30, r26 - 2afa: 0d c0 rjmp .+26 ; 0x2b16 <__udivmodsi4_ep> - -00002afc <__udivmodsi4_loop>: - 2afc: aa 1f adc r26, r26 - 2afe: bb 1f adc r27, r27 - 2b00: ee 1f adc r30, r30 - 2b02: ff 1f adc r31, r31 - 2b04: a2 17 cp r26, r18 - 2b06: b3 07 cpc r27, r19 - 2b08: e4 07 cpc r30, r20 - 2b0a: f5 07 cpc r31, r21 - 2b0c: 20 f0 brcs .+8 ; 0x2b16 <__udivmodsi4_ep> - 2b0e: a2 1b sub r26, r18 - 2b10: b3 0b sbc r27, r19 - 2b12: e4 0b sbc r30, r20 - 2b14: f5 0b sbc r31, r21 - -00002b16 <__udivmodsi4_ep>: - 2b16: 66 1f adc r22, r22 - 2b18: 77 1f adc r23, r23 - 2b1a: 88 1f adc r24, r24 - 2b1c: 99 1f adc r25, r25 - 2b1e: 1a 94 dec r1 - 2b20: 69 f7 brne .-38 ; 0x2afc <__udivmodsi4_loop> - 2b22: 60 95 com r22 - 2b24: 70 95 com r23 - 2b26: 80 95 com r24 - 2b28: 90 95 com r25 - 2b2a: 9b 01 movw r18, r22 - 2b2c: ac 01 movw r20, r24 - 2b2e: bd 01 movw r22, r26 - 2b30: cf 01 movw r24, r30 - 2b32: 08 95 ret - -00002b34 <__divmodsi4>: + 2aec: a1 e2 ldi r26, 0x21 ; 33 + 2aee: 1a 2e mov r1, r26 + 2af0: aa 1b sub r26, r26 + 2af2: bb 1b sub r27, r27 + 2af4: fd 01 movw r30, r26 + 2af6: 0d c0 rjmp .+26 ; 0x2b12 <__udivmodsi4_ep> + +00002af8 <__udivmodsi4_loop>: + 2af8: aa 1f adc r26, r26 + 2afa: bb 1f adc r27, r27 + 2afc: ee 1f adc r30, r30 + 2afe: ff 1f adc r31, r31 + 2b00: a2 17 cp r26, r18 + 2b02: b3 07 cpc r27, r19 + 2b04: e4 07 cpc r30, r20 + 2b06: f5 07 cpc r31, r21 + 2b08: 20 f0 brcs .+8 ; 0x2b12 <__udivmodsi4_ep> + 2b0a: a2 1b sub r26, r18 + 2b0c: b3 0b sbc r27, r19 + 2b0e: e4 0b sbc r30, r20 + 2b10: f5 0b sbc r31, r21 + +00002b12 <__udivmodsi4_ep>: + 2b12: 66 1f adc r22, r22 + 2b14: 77 1f adc r23, r23 + 2b16: 88 1f adc r24, r24 + 2b18: 99 1f adc r25, r25 + 2b1a: 1a 94 dec r1 + 2b1c: 69 f7 brne .-38 ; 0x2af8 <__udivmodsi4_loop> + 2b1e: 60 95 com r22 + 2b20: 70 95 com r23 + 2b22: 80 95 com r24 + 2b24: 90 95 com r25 + 2b26: 9b 01 movw r18, r22 + 2b28: ac 01 movw r20, r24 + 2b2a: bd 01 movw r22, r26 + 2b2c: cf 01 movw r24, r30 + 2b2e: 08 95 ret + +00002b30 <__divmodsi4>: __divmodsi4(): - 2b34: 05 2e mov r0, r21 - 2b36: 97 fb bst r25, 7 - 2b38: 16 f4 brtc .+4 ; 0x2b3e <__divmodsi4+0xa> - 2b3a: 00 94 com r0 - 2b3c: 0f d0 rcall .+30 ; 0x2b5c <__negsi2> - 2b3e: 57 fd sbrc r21, 7 - 2b40: 05 d0 rcall .+10 ; 0x2b4c <__divmodsi4_neg2> - 2b42: d6 df rcall .-84 ; 0x2af0 <__udivmodsi4> - 2b44: 07 fc sbrc r0, 7 - 2b46: 02 d0 rcall .+4 ; 0x2b4c <__divmodsi4_neg2> - 2b48: 46 f4 brtc .+16 ; 0x2b5a <__divmodsi4_exit> - 2b4a: 08 c0 rjmp .+16 ; 0x2b5c <__negsi2> - -00002b4c <__divmodsi4_neg2>: - 2b4c: 50 95 com r21 - 2b4e: 40 95 com r20 - 2b50: 30 95 com r19 - 2b52: 21 95 neg r18 - 2b54: 3f 4f sbci r19, 0xFF ; 255 - 2b56: 4f 4f sbci r20, 0xFF ; 255 - 2b58: 5f 4f sbci r21, 0xFF ; 255 - -00002b5a <__divmodsi4_exit>: - 2b5a: 08 95 ret - -00002b5c <__negsi2>: + 2b30: 05 2e mov r0, r21 + 2b32: 97 fb bst r25, 7 + 2b34: 16 f4 brtc .+4 ; 0x2b3a <__divmodsi4+0xa> + 2b36: 00 94 com r0 + 2b38: 0f d0 rcall .+30 ; 0x2b58 <__negsi2> + 2b3a: 57 fd sbrc r21, 7 + 2b3c: 05 d0 rcall .+10 ; 0x2b48 <__divmodsi4_neg2> + 2b3e: d6 df rcall .-84 ; 0x2aec <__udivmodsi4> + 2b40: 07 fc sbrc r0, 7 + 2b42: 02 d0 rcall .+4 ; 0x2b48 <__divmodsi4_neg2> + 2b44: 46 f4 brtc .+16 ; 0x2b56 <__divmodsi4_exit> + 2b46: 08 c0 rjmp .+16 ; 0x2b58 <__negsi2> + +00002b48 <__divmodsi4_neg2>: + 2b48: 50 95 com r21 + 2b4a: 40 95 com r20 + 2b4c: 30 95 com r19 + 2b4e: 21 95 neg r18 + 2b50: 3f 4f sbci r19, 0xFF ; 255 + 2b52: 4f 4f sbci r20, 0xFF ; 255 + 2b54: 5f 4f sbci r21, 0xFF ; 255 + +00002b56 <__divmodsi4_exit>: + 2b56: 08 95 ret + +00002b58 <__negsi2>: __negsi2(): - 2b5c: 90 95 com r25 - 2b5e: 80 95 com r24 - 2b60: 70 95 com r23 - 2b62: 61 95 neg r22 - 2b64: 7f 4f sbci r23, 0xFF ; 255 - 2b66: 8f 4f sbci r24, 0xFF ; 255 - 2b68: 9f 4f sbci r25, 0xFF ; 255 - 2b6a: 08 95 ret - -00002b6c : + 2b58: 90 95 com r25 + 2b5a: 80 95 com r24 + 2b5c: 70 95 com r23 + 2b5e: 61 95 neg r22 + 2b60: 7f 4f sbci r23, 0xFF ; 255 + 2b62: 8f 4f sbci r24, 0xFF ; 255 + 2b64: 9f 4f sbci r25, 0xFF ; 255 + 2b66: 08 95 ret + +00002b68 : memcmp(): - 2b6c: fb 01 movw r30, r22 - 2b6e: dc 01 movw r26, r24 - 2b70: 04 c0 rjmp .+8 ; 0x2b7a - 2b72: 8d 91 ld r24, X+ - 2b74: 01 90 ld r0, Z+ - 2b76: 80 19 sub r24, r0 - 2b78: 21 f4 brne .+8 ; 0x2b82 - 2b7a: 41 50 subi r20, 0x01 ; 1 - 2b7c: 50 40 sbci r21, 0x00 ; 0 - 2b7e: c8 f7 brcc .-14 ; 0x2b72 - 2b80: 88 1b sub r24, r24 - 2b82: 99 0b sbc r25, r25 - 2b84: 08 95 ret - -00002b86 : + 2b68: fb 01 movw r30, r22 + 2b6a: dc 01 movw r26, r24 + 2b6c: 04 c0 rjmp .+8 ; 0x2b76 + 2b6e: 8d 91 ld r24, X+ + 2b70: 01 90 ld r0, Z+ + 2b72: 80 19 sub r24, r0 + 2b74: 21 f4 brne .+8 ; 0x2b7e + 2b76: 41 50 subi r20, 0x01 ; 1 + 2b78: 50 40 sbci r21, 0x00 ; 0 + 2b7a: c8 f7 brcc .-14 ; 0x2b6e + 2b7c: 88 1b sub r24, r24 + 2b7e: 99 0b sbc r25, r25 + 2b80: 08 95 ret + +00002b82 : memcpy(): - 2b86: fb 01 movw r30, r22 - 2b88: dc 01 movw r26, r24 - 2b8a: 02 c0 rjmp .+4 ; 0x2b90 - 2b8c: 01 90 ld r0, Z+ - 2b8e: 0d 92 st X+, r0 - 2b90: 41 50 subi r20, 0x01 ; 1 - 2b92: 50 40 sbci r21, 0x00 ; 0 - 2b94: d8 f7 brcc .-10 ; 0x2b8c - 2b96: 08 95 ret - -00002b98 : + 2b82: fb 01 movw r30, r22 + 2b84: dc 01 movw r26, r24 + 2b86: 02 c0 rjmp .+4 ; 0x2b8c + 2b88: 01 90 ld r0, Z+ + 2b8a: 0d 92 st X+, r0 + 2b8c: 41 50 subi r20, 0x01 ; 1 + 2b8e: 50 40 sbci r21, 0x00 ; 0 + 2b90: d8 f7 brcc .-10 ; 0x2b88 + 2b92: 08 95 ret + +00002b94 : memset(): - 2b98: dc 01 movw r26, r24 - 2b9a: 01 c0 rjmp .+2 ; 0x2b9e - 2b9c: 6d 93 st X+, r22 - 2b9e: 41 50 subi r20, 0x01 ; 1 - 2ba0: 50 40 sbci r21, 0x00 ; 0 - 2ba2: e0 f7 brcc .-8 ; 0x2b9c - 2ba4: 08 95 ret - -00002ba6 <_exit>: + 2b94: dc 01 movw r26, r24 + 2b96: 01 c0 rjmp .+2 ; 0x2b9a + 2b98: 6d 93 st X+, r22 + 2b9a: 41 50 subi r20, 0x01 ; 1 + 2b9c: 50 40 sbci r21, 0x00 ; 0 + 2b9e: e0 f7 brcc .-8 ; 0x2b98 + 2ba0: 08 95 ret + +00002ba2 <_exit>: exit(): - 2ba6: f8 94 cli + 2ba2: f8 94 cli -00002ba8 <__stop_program>: +00002ba4 <__stop_program>: __stop_program(): - 2ba8: ff cf rjmp .-2 ; 0x2ba8 <__stop_program> + 2ba4: ff cf rjmp .-2 ; 0x2ba4 <__stop_program> Disassembly of section .nvmem: -00002c26 <.nvmem>: +00002c22 <.nvmem>: ... Disassembly of section .eeprom: diff --git a/hex/updi4avr-usb/AVR64DU32_CNANO_DEBUG1.hex b/hex/updi4avr-usb/AVR64DU32_CNANO_DEBUG1.hex index 5815192..fd4734b 100644 --- a/hex/updi4avr-usb/AVR64DU32_CNANO_DEBUG1.hex +++ b/hex/updi4avr-usb/AVR64DU32_CNANO_DEBUG1.hex @@ -50,7 +50,7 @@ :1003100090280018380000002050485953494341A4 :100320004C3D253032583A253032580D0A002056BF :100330005441524745543D25640D0A00205645530B -:1003400052494F4E3D000001202B002047454E5F93 +:1003400052494F4E3D000001202C002047454E5F92 :100350004745545F504152414D3D253032583A2572 :100360003032583A253032580D0A00204241554467 :100370003D253034583A253032580D0A0020554179 @@ -143,11 +143,11 @@ :1008E000CDBFDFE7DEBF88ED90E284BF9093680064 :1008F00090E084BF90936100E0E0F4E084E08387BF :100900008FEF848780934C0480936C048093AC04B5 -:1009100010E6A0E0B0E6ECEDF9E402C005900D921F +:1009100010E6A0E0B0E6E8EDF9E402C005900D9223 :10092000A438B107D9F720E6A4E8B0E601C01D92CB :10093000A439B207E1F714E0CDE6D4E004C0219772 -:10094000FE010E94C924CC36D107C9F70E94C21506 -:100950000C94EC2455CBFB01A485B585ED91FC915D +:10094000FE010E94C724CC36D107C9F70E94C21508 +:100950000C94EA2455CBFB01A485B585ED91FC915F :1009600011970190F081E02D682FCD01099488E561 :100970008093270A81E08093000A90E080E0FC01E8 :1009800023E0F595E7952A95E1F7E65EFF4920819A @@ -174,7 +174,7 @@ :100AD00082FDFCCF8EEF8093400C08952091040896 :100AE00027FF04C000900108009000080197B1F7AB :100AF00008959C0150E040E060E071E782E090E002 -:100B00000E94A624DA01C9010196A11DB11DB59567 +:100B00000E94A424DA01C9010196A11DB11DB59569 :100B1000A7959795879580349105A105B10554F067 :100B2000009721E0A207B10548F08FEF9FEFA0E00A :100B3000B0E0089580E490E0A0E0B0E0089590E097 @@ -327,12 +327,12 @@ :10146000CDB7DEB72E97CDBFDEBF8BEA94E089877C :101470009A871B861C8682E08C838DE890E68D8798 :101480009E87AE01495E5F4F6D897E89CE010196D0 -:101490000E94C2218DE890E62E96CDBFDEBFDF917F +:101490000E94C0218DE890E62E96CDBFDEBFDF9181 :1014A000CF910895BF92CF92DF92EF92FF920F9368 :1014B0001F93CF93DF9300D000D0CDB7DEB7C0909D :1014C0008660D0908760E0908860F0908960C11459 :1014D000D104E104F104D9F060E078E689E899E00C -:1014E000A70196010E94842469017A018FEFC81A2E +:1014E000A70196010E94822469017A018FEFC81A30 :1014F000D80AE80AF80AF694E794D794C79488ECD7 :10150000B82E90E6C916D104E104F10430F4CC0CF5 :10151000DD1CEE1CFF1C2AECB22E1F92BF92FF9224 @@ -472,7 +472,7 @@ :101D700034F4019711F432E0832E4074465F46FF3D :101D80000CC077FE0AC0689480F8709460945094F8 :101D90004094411C511C611C711C4F73C42ED12CEA -:101DA000F12CE12CC301B201A70196010E94842409 +:101DA000F12CE12CC301B201A70196010E9482240B :101DB00029013A01862F0E94E504992D9A94F80191 :101DC000E90DF11D97FCFA958083411451046104DB :101DD000710441F732E0831236C02EEF922E990E35 @@ -488,7 +488,7 @@ :101E70008093060C9093070C81E08093010C1CBAB0 :101E80001DBA1EBA109233641092346410923264F8 :101E9000109231641092306410922F644AE450E042 -:101EA00062E778E086E394E60E94B92110922E64FE +:101EA00062E778E086E394E60E94B72110922E6400 :101EB000E6E1F3E681EA808780E281871286138675 :101EC00081E090E08487958782E090E0868797871D :101ED000108A118A83E88883DF91CF91089584E383 @@ -676,10 +676,10 @@ :102A300018958EEE93E68ACF0E94100599CF112447 :102A40008DB79EB780934C0190934D011092000B6F :102A500081E08093060B62E070E080E894E60E94DB -:102A600099218FB7F8941092000B91E09093060B88 +:102A600097218FB7F8941092000B91E09093060B8A :102A70008FBF18950F931F93CF93DF9300D000D093 :102A8000CDB7DEB78B839C8319821A8280E894E6E7 -:102A90000E947921892B31F59FB7F89410920A0B87 +:102A90000E947721892B31F59FB7F89410920A0B89 :102AA00010920B0B20E233E020930C0B30930D0BB4 :102AB00081E08093050B8093060B8FE08093000BE1 :102AC0009FBFEB81FC81099589839A83EF98C9DFC9 @@ -742,451 +742,451 @@ :102E5000309117631F923F931F92FF929F938F931E :102E60001F922F9381E792E09F938F931F930F936D :102E70000E942E0ACDBFDEBFF7FE0E9462058F2D95 -:102E8000807609F0AAC28091176381119BC01092CD +:102E8000807609F0A8C28091176381119BC01092CF :102E90001E6310921F6382E090E0809348649093D9 :102EA00049640E9456050E94620580910B0C846063 -:102EB00080930B0CE8992DC0E79B7BC380918560C4 +:102EB00080930B0CE8992DC0E79B79C380918560C6 :102EC000833081F01092000A10921A0B89EA95E57E :102ED00080931C0B90931D0B8FE48093100B83E069 :102EE0008093856080919860853029F489E580938E :102EF00024600E94B704019A89E992E09F938F931E :102F00001F930F930E942E0AE7980F900F900F9037 -:102F10000F90E09B37CFE19B9CC3E39914C0809155 +:102F10000F90E09B37CFE19B9AC3E39914C0809157 :102F2000040885FF10C080916E6481FF0CC0E19B96 :102F30000AC0209170643091716480913164821371 -:102F400069C30E94FF04E39B18C080913364909191 +:102F400067C30E94FF04E39B18C080913364909193 :102F500034649C012F5F3F4F2230310570F0853083 -:102F6000910508F47BC30497809333649093346491 +:102F6000910508F479C30497809333649093346493 :102F70008091666481FD0E94440580915E6481FFBA :102F8000FECE90912E6380912F632091566421FF95 -:102F9000FCCF903809F03CC4F82FFF706F2E29E069 -:102FA0002F1708F062C38DEC92E09F938F931F93CD +:102F9000FCCF903809F03AC4F82FFF706F2E29E06B +:102FA0002F1708F060C38DEC92E09F938F931F93CF :102FB0000F930E942E0A10922F630F900F900F9084 -:102FC0000F907BC3813089F580911B638F93809133 +:102FC0000F9079C3813079F580911B638F93809145 :102FD0001A638F93809119638F93809118638F93F5 :102FE00086E292E09F938F931F930F930E942E0A85 -:102FF000CDBFDEBF80911863811112C0E0911A63CA -:10300000F0911B6380910B0C82FDFCCFF595E79549 -:10301000F595E795EF73FF27E05CF34F89E0808338 -:1030200010924864109249643CCF8430D9F4809166 -:103030001B638F9380911A638F93809119638F9391 -:10304000809118638F9386E192E09F938F931F93F3 -:103050000F930E942E0A1092486410924964CDBFCB -:10306000DEBF1FCF8530E1F480911863F82EE8941D -:10307000F7F80E9456058091466481FFFCCFF092DC -:10308000030C1F92FF9286E092E09F938F931F9311 -:103090000F930E942E0A109248641092496464C1F2 -:1030A000863009F04DC140901C63F0911D63FD8393 -:1030B0008091186390911963913009F061C042E1E9 -:1030C00050E067EC71E08EE193E60E94B9218091B7 -:1030D000001490910114A0910214B09103148F3F39 -:1030E0002FEF9207A207B20741F0809326639093D7 -:1030F0002763A0932863B0932963809129638F93FA -:10310000809128638F93809127638F9380912663AA -:103110008F9382EB91E09F938F931F930F930E9465 -:103120002E0ACDBFDEBF82E1E82EF12C842D9D81D9 -:10313000E816F90608F4C70197017C01E09248649B -:10314000F0924964232B09F0ACCE85E692E09F9380 -:103150008F931F930F930E942E0A0F900F900F9042 -:103160000F9080910B0C82FDFCCF88E08093430C84 -:1031700080910B0C82FDFCCF88E08093410C95CEB2 -:10318000923009F4C0C0963009F4C8C0913209F4F5 -:10319000CBC0923209F4CEC08115E3E09E0779F4EA -:1031A00084E080931E6393E090931F6399E0909373 -:1031B000206380932163B4E0EB2EF12CB7CF8230F3 -:1031C000F3E09F0731F148F48130934009F495C052 -:1031D000F12CE12C70E060E00BC083309807F9F02F -:1031E000F8E1EF2EF12C68E870E08430934081F72D -:1031F000E0921E6383E080931F63A7014250510950 -:1032000080E293E6E114F10409F085C030E020E0AB -:1032100095CFA6E4EA2EF12C60EA70E0E9CF409168 -:103220000414509105146091061470910714498399 -:103230005A836B837C834F3FFFEF5F076F077F07E6 -:1032400051F5E0E8F0E1CF0101962081422728E026 -:103250006A017B01F694E794D794C794417055278F -:103260006627772770956095509541955F4F6F4F12 -:103270007F4F40725378687B7D7E4C255D256E259F -:103280007F25215029F7FC01803A9041E1F64983DE -:103290005A836B837C8386E180931E6383E08093F3 -:1032A0001F638DE4809320631092216388E58093EF -:1032B00022631092236334E2E32E33E6F32ECE0131 -:1032C00001966C01F60151906F01852D82958F70EA -:1032D0000E94E504F70180831182852D0E94E50498 -:1032E000F70182831382F4E0EF0EF11C2C143D04ED -:1032F00049F726E1E22EF12C19CF94E3E92EF12CC7 -:1033000066EE70E075CF8BE6E82EF12C6DE371E090 -:10331000A7018EE193E60E94B92108CFBAE0EB2E17 -:10332000F12C68EA71E0F4CFA9E0EA2EF12C6FE409 -:1033300071E0EECFF3E2EF2EF12C6AE171E0E8CF1D -:103340008830C9F48091306480931E631F928F93FC -:103350008AEF91E09F938F931F930F930E942E0A01 -:1033600060924864709249640F900F900F900F9094 -:103370000F900F9096CD893071F4809118638093EF -:103380003064E09A0E94A408809130641F928F9369 -:103390008EEE91E07ACE8A3099F425EE31E03F93BB -:1033A0002F931F930F930E942E0A10921E63609218 -:1033B0004864709249640F900F900F900F9071CDF8 -:1033C0008B3009F0C2CE809119638F93809118637E -:1033D0008F9389ED91E09F9359CE803209F0B5CE5D -:1033E000809117638A3061F480911863909119631A -:1033F00099279F938F9329E532E03F932F9347CEF0 -:103400008032E1F580913E6481FFFCCF47E050E0DF -:103410006EE173E686E890E60E94CF24892B91F056 -:1034200080916E6481FD0E94FF040E94970F87E0E7 -:10343000EEE1F3E6A6E8B0E601900D928A95E1F799 -:103440000E94520A83E592E09F938F931F930F93FC -:103450000E942E0A67E070E086E890E60E94BC09B0 -:103460000E94220AE49A10923264109231641092FF -:103470002F6410924864109249649DCF8132B9F54F -:1034800087E0E6E8F0E6AEE1B3E601900D928A95BA -:10349000E1F780911E6390911F63A0912063B0912A -:1034A0002163892B8A2B8B2B59F480921E63909277 -:1034B0001F63A0922063B092216388E0809324630D -:1034C0002DE432E03F932F931F930F930E942E0A17 -:1034D00067E070E08EE193E60E94BC090E94220A38 -:1034E00087E090E0809348649093496464CF82328F -:1034F00071F5809118639091196399279F938F9329 -:1035000081E492E09F938F931F930F930E942E0A62 -:10351000809118630F900F900F900F900F900F9065 -:10352000982F917080FF0FC06C9881FF0EC06D982E -:103530002091846020FD04C0992311F0E79AE69A57 -:10354000809384606DCD6C9AF0CF6D9AF1CF833209 -:1035500009F0FBCD809119638F93809118638F934D -:1035600026E332E03F932F931F930F930E942E0A7E -:1035700080911863909119638093336490933464BD -:103580000F900F900F900F900F900F90892B71F06C -:10359000E19B0AC0E39908C0E49810922F640E944E -:1035A0006F0F029A10921204E39A3ACD0E94170B01 -:1035B00037CDE69BAECC80919860853021F4109297 -:1035C00024600E94B7040198FFE72AE136E0F15039 -:1035D00020403040E1F700C0000084EA92E09F9371 -:1035E0008F931F930F930E942E0A0F900F900F90AE -:1035F0000F90E09B05C00E94A408E798E69889CC4C -:103600008091030C811103C00E94590EF6CF0E94D5 -:103610008F08F3CF4091706450917164282F30E08F -:10362000F12C4217530739F08F5F80933164225990 -:103630003C49F901F080809170649091716420910F -:1036400031642817190611F40E94FF04F092020851 -:103650007ACC80916E6481FF76CC73CC1092336407 -:10366000109234640E94170B88CC90E0E4E09595AA -:103670008795EA95E1F7582EC090316331E08313C6 -:1036800002C01092946001972CE3289F7001299F3B -:10369000F00C112470909460739470929460D12C0B -:1036A000A60162E373E6C70182539F490E94DC24AE -:1036B00081E080932F63651411F0E12C0CC0EC0CB9 -:1036C000FD1CE0929C60F0929D6067109EC010927D -:1036D0009960EE24E39480E490E0809358649093A2 -:1036E000596410925C6410925D6480910B0C82FDB1 -:1036F000FCCF8EEF8093460C109260641092616450 -:1037000080910B0C82FDFCCF8EEF8093480CEE2055 -:1037100009F435CBF090D2608091D6601F928F93E0 -:103720008091D5601F928F938091D3601F928F9369 -:103730001F92FF9281E696E09F938F931F930F93C2 -:103740000E942E0ACDBFDEBF91E0F91268C18091C0 -:10375000D3606090D5607090D6605090D760823012 -:1037600009F028C1E52CF12CC72CD12C1F925F92B7 -:103770001F927F921F926F928BE493E09F938F939F -:103780001F930F930E942E0ACDBFDEBF6110ABC006 -:10379000B6016A5B7C4FA70185ED90E6EAD58CE324 -:1037A00093E09F938F931F930F930E942E0AB7016C -:1037B00085ED90E60E94BC090E94220A0F900F90AE -:1037C0000F900F9084E891E08093D3609093D46041 -:1037D0003FEFE31AF30A97012A5F3F4F20939C6063 -:1037E00030939D6010929A60C7018F5B9F4F6CE38E -:1037F00070E00E947024609399608EE08093CF60A7 -:1038000022533F49F9011082BACA8FEB92E0CDCB27 -:103810009138E9F5109230639091996091110DC043 -:1038200080EB92E09F938F931F930F930E942E0A39 -:1038300010922F6310923163C0CB80919A602CE379 -:10384000829FF0011124E153FF49A2E3B3E6019006 -:103850000D922A95E1F78F5F80939A6040E1849FF3 -:1038600090011124292B20932F6320919C6030918B -:103870009D60981751F08CE3809331632C5331098C -:1038800020939C6030939D6018CF822FF5CF9111CB -:103890001CC08F3F21F095E0980F923048F482E0F1 -:1038A00080932F6380E4809330631092316305CF5F -:1038B000813F09F002CF82E080932F6380E88093FC -:1038C000306381E080933163F8CE923009F4F5CE15 -:1038D000913031F4882309F4F0CE10922F63EDCEAD -:1038E0009330D9F7EACEF1E06F126CCF872D8F7D40 -:1038F00009F048C08FEF8093070610920E061092D1 -:103900000F06609200066092010684E08093020632 -:103910008AEF8093040684E480930B0681E1809310 -:103920000A068091070681FFFCCF20910E06309198 -:103930000F06C90163E0880F991F6A95E1F7220F0E -:10394000331F820F931F109200068093956090930F -:1039500096609F938F938EE293E09F938F931F9334 -:103960000F930E942E0A80919560909196608093AB -:10397000D5609093D6600F900F900F900F900F909E -:103980000F9020CF1F925F921F927F9288E193E069 -:103990009F938F931F930F930E942E0A672D67703A -:1039A00070E0605F7C4FA70185ED90E6E2D4CDBF6B -:1039B000DEBF08CF8031B9F481E093E09F938F930D -:1039C0001F930F930E942E0A1092986080E890E057 -:1039D0008093D3609093D4600F900F900F900F90CE -:1039E000F12CE12CF8CE813149F481EF92E09F93E4 -:1039F0008F931F930F930E942E0AE8CF1F925F921E -:103A00001F927F921F926F928BED92E09F938F9304 -:103A10001F930F930E942E0ACDBFDEBFE1CF92E12C -:103A2000F912A4C2F090D360D090D560C090D66057 -:103A30007090D760E1E0FE12CAC0E090D860F090CC -:103A4000D960FF92EF921F927F921F92CF921F92A6 -:103A5000DF928DE095E09F938F931F930F930E94C9 -:103A60002E0ACDBFDEBFD11029C0C11019C0FF92F0 -:103A7000EF9280E095E09F938F931F930F930E94A6 -:103A80002E0AE09298600F900F900F900F900F9079 -:103A90000F9080E890E08093D3609093D460A0CFA3 -:103AA00031E0C312F6CFFF92EF928BEE94E09F933A -:103AB0008F931F930F930E942E0AE5CF41E0D412FB -:103AC0004AC0C1100DC0FF92EF9288ED94E09F9321 -:103AD0008F931F930F930E942E0AE0929760D3CF8B -:103AE00081E3C812D6CFE0921860F0921960FF927D -:103AF000EF928DEC94E09F938F931F930F930E940E -:103B00002E0A0F900F900F900F900F900F908091B2 -:103B10009860853009F0BDCF809118609091196050 -:103B2000813F910598F080EF90E08093186090932A -:103B300019608091186090911960E816F90609F4EF -:103B4000A8CF9F938F938FEB94E0B1CF889788F79E -:103B500088E290E0EACF92E0D91226C0C11099CF56 -:103B60001F927F928EEA94E09F938F931F930F93FF -:103B70000E942E0A472D4F7350E068ED70E68EE9E3 -:103B800090E61AD70F900F900F900F900F900F9014 -:103B900080919860853009F07CCF8091CD601F9234 -:103BA0008F938FE994E083CFE3E0DE1272CFF6E0EB -:103BB000CF1205C0FF92EF928EE894E078CF27E015 -:103BC000C21267CFFF92EF928DE794E070CF32E0A0 -:103BD000F31264C0E72CF12C1F927F921F92CF92B8 -:103BE0001F92DF9289E594E09F938F931F930F9329 -:103BF0000E942E0ACDBFDEBFD11022C0C11016C058 -:103C0000809198601F928F938CE494E09F938F93A0 -:103C10001F930F930E942E0A809198608093D56025 -:103C20000F900F900F900F900F900F9084E891E0FD -:103C30008093D3609093D460FFEFEF1AFF0ACBCD4F -:103C400091E0D912F3CFC1100FC0809197601F92FD -:103C50008F9389E394E09F938F931F930F930E9418 -:103C60002E0A80919760DACFE1E3CE12DFCF809108 -:103C700019608F93809118608F938EE294E09F93E8 -:103C80008F931F930F930E942E0A8091186090913A -:103C900019608093D5609093D660C2CF8091986070 -:103CA000853009F060C120E1F21251C01F92DF920D -:103CB00085E194E09F938F931F930F930E942E0AA8 -:103CC0000E94970FEFB6F8948DE793E09F938F9340 -:103CD0001F930F930E942E0AF092E20580E28093D8 -:103CE000040880911860909119600E947905809372 -:103CF0000808909309088BE2809307088AE0809374 -:103D0000050888EC80930608209106088091080831 -:103D1000909109081F922F939F938F938BE693E0C6 -:103D20009F938F931F930F930E942E0AEFBE85EDF2 -:103D300091E10E943A157C01CDBFDEBF84E890E09E -:103D4000E114F10409F0BCC080EA90E0B9C091E14F -:103D5000F9121FC084E094E09F938F931F930F93F9 -:103D60000E942E0A0F900F900F900F90E89B0DC0AD -:103D70008EEA91E10E943A157C010E94970F0E9401 -:103D8000520AE114F10401F331C0EE24E394F12C62 -:103D9000F4CFE5E1FE1218C081EF93E09F938F937B -:103DA0001F930F930E942E0A84EB9FE00E943A1506 -:103DB0000F900F900F900F90892B21F4EDB2FE2DF4 -:103DC000F170EF2EF12CDDCF26E1F21212C08EED54 -:103DD00093E09F938F931F930F930E942E0A0F904F -:103DE0000F900F900F90EE24E394F12C80E890E078 -:103DF00067C030E2F31220C08091D9608F93809128 -:103E0000D8608F938091D7608F938091D6608F9385 -:103E10001F92DF9285EC93E09F938F931F930F93F4 -:103E20000E942E0A80911263909113630E943A15AA -:103E30007C01CDBFDEBFA5CFE89B92C091E2F91215 -:103E40006BC08091DB608F938091DA608F9380915B -:103E5000D9608F938091D8608F938091D7608F9332 -:103E60008091D6608F931F92DF9288EA93E09F93B0 -:103E70008F931F930F930E942E0A8091D560E0903C -:103E8000DA60F090DB60CDBFDEBF833DF1F480915E -:103E9000D6608F7190E0A701415051094F715527AD -:103EA0004F5F5F4F6EEE72E68B529F4985D5FFEFF5 -:103EB000EF1AFF0A84E891E0E114F10409F444CF19 -:103EC0008093D3609093D46086CCE99B08C08091A6 -:103ED0001063909111630E943A157C01EBCF843BF3 -:103EE000A1F48091EE62882381F09EE19093D560E9 -:103EF000803209F481E48093D6608091F8628093E7 -:103F0000D7602FEFE21AF20AD5CFA7016FEF70E06A -:103F100085ED90E65AD5F5CF33E2F31221C08091BA -:103F2000DB608F938091DA608F938091D9608F935B -:103F30008091D8608F938091D7608F938091D66065 -:103F40008F931F92DF928AE893E09F938F931F9342 -:103F50000F930E942E0A809114639091156366CF8F -:103F6000F12CE12CF1CE80EA90E095CD94E1F912AC -:103F700046C18091D360813009F06CC08CED95E032 -:103F80009F938F931F930F930E942E0A0E94970F67 -:103F9000FFB6F89484E495E09F938F931F930F935B -:103FA0000E942E0A209118603091196050E040E084 -:103FB000CDBFDEBF60E27EE480E090E0C7D4DA01EE -:103FC000C9010196A11DB11DB595A7959795879536 -:103FD00036E0880F991FAA1FBB1F3A95D1F720E141 -:103FE0002093E205029828E02093120420E2209317 -:103FF000040880349105A105B10520F480E490E027 -:10400000A0E0B0E080930808909309088BE68093C5 -:1040100007088BE08093050888EC809306082091C0 -:10402000060880910808909109081F922F939F938A -:104030008F9382E395E09F938F931F930F930E943A -:104040002E0AFFBE87EB90E10E943A157C01CDBF9E -:10405000DEBF33C0823009F04BC086EC95E09F9301 -:104060008F931F930F930E942E0A80EC0E94F507F6 -:104070000F900F900F900F90882319F080E00E940E -:10408000F50780E595E09F938F931F930F930E9410 -:104090002E0A83EF91E00197F1F700C0000002982B -:1040A00001981DBA0E94970F0E94520A0F900F901C -:1040B0000F900F90EE24E394F12C81E0E114F104D1 -:1040C00009F080E08093D460FF92EF928CE595E058 -:1040D0009F938F931F930F930E942E0A9FEFE91ACD -:1040E000F90A0F900F900F900F900F900F9073CBD5 -:1040F000E89B7AC08330E1F46091D5607091D6601E -:104100008091D7609091D8603DD49F938F937F9397 -:104110006F938091D4601F928F938EEA95E09F9366 -:104120008F931F930F930E942E0A8CE294E18CCF01 -:10413000843029F52091DA603091DB603227232723 -:1041400032276091D6607091D7608091D86090914D -:10415000D96018D43F932F939F938F937F936F933E -:104160008091D4601F928F9381E995E09F938F9304 -:104170001F930F930E942E0A8AE193E165CF853049 -:1041800029F52091D9603091DA6032272327322730 -:104190006091D5607091D6608091D7609091D86021 -:1041A000F1D33F932F939F938F937F936F9380913E -:1041B000D4601F928F9385E795E09F938F931F9311 -:1041C0000F930E942E0A8CEF93E13ECF863079F454 -:1041D0008AE695E09F938F931F930F930E942E0A78 -:1041E0000F900F900F900F90F12CE12C66CF21E0F3 -:1041F00090E0873009F020E0E22EF92E5ECFE0E279 -:10420000FE12EECB9091D360C090D560D090D66076 -:104210008091D760913099F5E090D860F090D960A6 -:10422000FF92EF921F928F931F92DF921F92CF9275 -:104230008CE396E09F938F931F930F930E942E0A17 -:10424000CDBFDEBFC11025CC30E1D31222CCFF920E -:10425000EF9287E296E09F938F931F930F930E94B4 -:104260002E0AE09200600F900F900F900F900F9029 -:104270000F90EF2811F00E9A0CCC0E980ACC9230C9 -:1042800009F0AECBE82EF12C1F928F931F92DF9294 -:104290001F92CF9287E096E09F938F931F930F9387 -:1042A0000E942E0ACDBFDEBFC11019C090E1D91205 -:1042B00016C0809100601F928F9382EF95E09F93CC -:1042C0008F931F930F930E942E0A8091006080931A -:1042D000D5600F900F900F900F900F900F9084E883 -:1042E00091E08093D3609093D460EFEFEE1AFE0AD2 -:1042F00072CADC012D923D924D925D926D927D923B -:104300008D929D92AD92BD92CD92DD92ED92FD92F5 -:104310000D931D93CD93DD93FF91EF918DB78D9309 -:104320008EB78D938FB78D93ED93FD938827992743 -:104330000994DC01CB0181309105811D2D903D90C8 -:104340004D905D906D907D908D909D90AD90BD90C5 -:10435000CD90DD90ED90FD900D911D91CD91DD9171 -:10436000ED91FD910D900FBEEDBFFEBFED91FD9162 -:104370000994FB01DC0102C005900D9241505040B0 -:10438000D8F70895CF93DF93EC018B8188608B83FE -:10439000CE0106D02B81277F2B83DF91CF9108950B -:1043A000ABE0B0E0E5EDF1E26AC27C013B018A01DD -:1043B000FC0116821782838181FFBAC1CE0101966A -:1043C0005C01F7019381F30193FD859193FF819146 -:1043D0003F01882309F449C1853239F493FD859161 -:1043E00093FF81913F01853221F4B70190E0B9D16B -:1043F000E8CF912C212C312CFFE1F31538F08B32D2 -:1044000011F190F4803209F1833229F137FC3CC07C -:1044100020ED280F2A3050F536FE20C08AE0989E05 -:10442000200D1124922E06C08D3291F0803371F749 -:10443000689430F8F30193FD859193FF81913F01DA -:104440008111DACF21C0689431F8689432F8F2CF44 -:10445000689433F8EFCF689434F8ECCFEAE02E9EFE -:10446000200D1124222E689435F8E4CF8E3229F4E1 -:1044700036FCFBC0689436F8DDCF8C3619F46894AE -:1044800037F8D8CF8836B1F2982F9F7D9554933066 -:10449000D8F0833691F18337B1F1833509F05EC0EE -:1044A0002801F2E04F0E511CF801C080D180692D27 -:1044B00070E036FC02C06FEF7FEFC6013CD14C01CB -:1044C000689437F882010AC00C5F1F4FFFE3F9833D -:1044D00088248394912C6501E89437F833FE2AC030 -:1044E000522C8114910459F5552009F46ACFB70173 -:1044F00080E290E036D15A94F7CFF8018081898329 -:104500000E5F1F4FE5CF2801F2E04F0E511CF8015E -:10451000C080D180692D70E036FC02C06FEF7FEF64 -:10452000C60114D14C018201D7CFB70180E290E0DF -:1045300018D12A942814190409F0B8F7D1CFF6013C -:1045400037FC859137FE81916F01B70190E009D169 -:1045500051105A94F1E08F1A9108C3CF843619F0A4 -:10456000893609F073C0F80137FE67C06081718138 -:10457000828193810C5F1F4FF32DFF763F2E97FFB3 -:1045800009C090958095709561957F4F8F4F9F4F93 -:10459000689437F82AE030E0A50113D1C82ECA1874 -:1045A0008C2C432C36FE0CC0E89440F8C91440F41F -:1045B00034FE05C032FC03C0F32DFE7E4F2E892C45 -:1045C00044FE90C0FE01EC0DF11D8081803309F0A6 -:1045D00082C0242D297E422E842D8870582E43FCC3 -:1045E0008FC040FE89C09C2C821418F42C0C922C95 -:1045F000981844FE8BC0B70180E390E0B2D042FE31 -:1046000008C088E790E041FE02C088E590E0B7016D -:10461000A8D0C91408F486C0CA94D12C9FEFC91A37 -:10462000D90ACA0CDB1CF60182916F01B70190E038 -:1046300098D0AC14BD04B9F757CF60817181072EB3 -:10464000000C880B990B0E5F1F4F96CFD32CE8946C -:10465000D4F82AE030E0853731F1232D297FD22E9E -:104660008F36F9F040F48835A1F0F7018681978103 -:104670002B96E2E11DC1803749F08837B1F7D4FEAF -:1046800002C06894D2F820E130E00DC06894D4F8FC -:10469000F6CF34FE03C0822F8660D82E20E132E0B0 -:1046A00002C028E030E0F801D7FE0EC060817181C1 -:1046B000828193810C5F1F4FA50183D0C82ECA1839 -:1046C0003D2CE89437F86CCF6081718190E080E0F8 -:1046D0000E5F1F4FF1CF42FC02C083947DCF8394C5 -:1046E00083947ACF842D867809F476CFF6CFB701FC -:1046F00080E290E036D083948214C8F3512C79CFB5 -:10470000522C5818821408F474CFF8CF842D867870 -:1047100009F47FCF8BE241FE80E247FC8DE2B701D6 -:1047200090E076CFB70180E390E01BD09A9471CFF0 -:104730008FEF9FEF9DCFFC010590615070400110FD -:10474000D8F7809590958E0F9F1F0895FC016150BA -:10475000704001900110D8F7809590958E0F9F1FA3 -:1047600008950F931F93CF93DF93182F092FEB0119 -:104770008B8181FD09C01FEF0FEF812F902FDF91FB -:10478000CF911F910F91089582FF14C02E813F8118 -:104790008C819D81281739073CF4E881F981CF018C -:1047A00001968883998310838E819F8101968E83E1 -:1047B0009F83E3CFE885F985812F0995892BA1F3A4 -:1047C000DACFFA01AA27283051F1203181F1E8949B -:1047D0006F936E7F6E5F7F4F8F4F9F4FAF4FB1E0F4 -:1047E0003ED0B4E03CD0670F781F891F9A1FA11DEF -:1047F000680F791F8A1F911DA11D6A0F711D811DF0 -:10480000911DA11D20D009F468943F912AE0269FB4 -:1048100011243019305D3193DEF6CF010895462F13 -:104820004770405D4193B3E00FD0C9F7F6CF462FF4 -:104830004F70405D4A3318F0495D31FD405241935D -:1048400002D0A9F7EACFB4E0A6959795879577951A -:104850006795BA95C9F700976105710508959B01A1 -:10486000AC010A2E06945795479537952795BA952A -:10487000C9F7620F731F841F951FA01D08952F9203 -:104880003F924F925F926F927F928F929F92AF92E0 -:10489000BF92CF92DF92EF92FF920F931F93CF932D -:1048A000DF93CDB7DEB7CA1BDB0BCDBFDEBF0994EC -:1048B0002A88398848885F846E847D848C849B84B0 -:1048C000AA84B984C884DF80EE80FD800C811B81BE -:1048D000AA81B981CE0FD11DCDBFDEBFED010895F4 -:1048E000AA1BBB1B51E107C0AA1FBB1FA617B70716 -:1048F00010F0A61BB70B881F991F5A95A9F7809532 -:104900009095BC01CD010895A1E21A2EAA1BBB1BF4 -:10491000FD010DC0AA1FBB1FEE1FFF1FA217B3078B -:10492000E407F50720F0A21BB30BE40BF50B661FA1 -:10493000771F881F991F1A9469F760957095809565 -:1049400090959B01AC01BD01CF010895052E97FB09 -:1049500016F400940FD057FD05D0D6DF07FC02D027 -:1049600046F408C050954095309521953F4F4F4FE4 -:104970005F4F089590958095709561957F4F8F4F0B -:104980009F4F0895692796276927782787277827D3 -:104990000895EE0FFF1F0590F491E02D0994FB019F -:1049A000DC0104C08D910190801921F441505040E8 -:1049B000C8F7881B990B0895FB01DC0102C0019028 -:1049C0000D9241505040D8F70895DC0101C06D931D -:0C49D00041505040E0F70895F894FFCFEC -:1049DC000155080000000055480000000055A000DB -:1049EC005504556A00000000E100000000FFFF7F45 -:1049FC00557EC87F59FE557EC37E04FF00302000D3 -:104A0C00E0FF88D8CD45AB891255C20D55C205556E -:104A1C0087558B55E020676F72504D564E55E065AB -:104A2C00736172454D564E55E065742673554D565F -:104A3C004E55C72055CA0355E655C85955C3085598 -:104A4C00C20555C85955C80055C30400000000EEF6 -:044A5C00040D0A003B +:102FF000CDBFDEBF80911863811110C0E0911A63CC +:10300000E29580910B0C82FDFCCFF0E0F595E79501 +:10301000F595E795E05CF34F8BE080831092486470 +:10302000109249643ECF8430D9F480911B638F9312 +:1030300080911A638F93809119638F9380911863A5 +:103040008F9386E192E09F938F931F930F930E943B +:103050002E0A1092486410924964CDBFDEBF21CF82 +:103060008530E1F480911863F82EE894F7F80E9417 +:1030700056058091466481FFFCCFF092030C1F92AD +:10308000FF9286E092E09F938F931F930F930E948D +:103090002E0A109248641092496464C1863009F087 +:1030A0004DC140901C63F0911D63FD8380911863B6 +:1030B00090911963913009F061C042E150E067ECF2 +:1030C00071E08EE193E60E94B72180910014909107 +:1030D0000114A0910214B09103148F3F2FEF9207B7 +:1030E000A207B20741F08093266390932763A093D1 +:1030F0002863B0932963809129638F93809128631B +:103100008F93809127638F93809126638F9382EBB7 +:1031100091E09F938F931F930F930E942E0ACDBF30 +:10312000DEBF82E1E82EF12C842D9D81E816F906A0 +:1031300008F4C70197017C01E0924864F092496469 +:10314000232B09F0AECE85E692E09F938F931F93D9 +:103150000F930E942E0A0F900F900F900F90809166 +:103160000B0C82FDFCCF88E08093430C80910B0C0C +:1031700082FDFCCF88E08093410C97CE923009F419 +:10318000C0C0963009F4C8C0913209F4CBC0923265 +:1031900009F4CEC08115E3E09E0779F484E08093C2 +:1031A0001E6393E090931F6399E090932063809354 +:1031B0002163B4E0EB2EF12CB7CF8230F3E09F0710 +:1031C00031F148F48130934009F495C0F12CE12CA1 +:1031D00070E060E00BC083309807F9F0F8E1EF2E63 +:1031E000F12C68E870E08430934081F7E0921E6330 +:1031F00083E080931F63A7014250510980E293E668 +:10320000E114F10409F085C030E020E095CFA6E498 +:10321000EA2EF12C60EA70E0E9CF4091041450915D +:103220000514609106147091071449835A836B83C7 +:103230007C834F3FFFEF5F076F077F0751F5E0E8A3 +:10324000F0E1CF0101962081422728E06A017B014D +:10325000F694E794D794C79441705527662777274B +:1032600070956095509541955F4F6F4F7F4F4072BD +:103270005378687B7D7E4C255D256E257F2521500A +:1032800029F7FC01803A9041E1F649835A836B8328 +:103290007C8386E180931E6383E080931F638DE4CB +:1032A000809320631092216388E5809322631092BB +:1032B000236334E2E32E33E6F32ECE0101966C0154 +:1032C000F60151906F01852D82958F700E94E50463 +:1032D000F70180831182852D0E94E504F701828326 +:1032E0001382F4E0EF0EF11C2C143D0449F726E1A3 +:1032F000E22EF12C19CF94E3E92EF12C66EE70E06A +:1033000075CF8BE6E82EF12C6DE371E0A7018EE11D +:1033100093E60E94B72108CFBAE0EB2EF12C68EAC1 +:1033200071E0F4CFA9E0EA2EF12C6FE471E0EECF6A +:10333000F3E2EF2EF12C6AE171E0E8CF8830C9F4B6 +:103340008091306480931E631F928F938AEF91E087 +:103350009F938F931F930F930E942E0A609248644D +:10336000709249640F900F900F900F900F900F90F4 +:1033700098CD893071F48091186380933064E09A1D +:103380000E94A408809130641F928F938EEE91E08A +:103390007ACE8A3099F425EE31E03F932F931F9334 +:1033A0000F930E942E0A10921E63609248647092DE +:1033B00049640F900F900F900F9073CD8B3009F0F0 +:1033C000C2CE809119638F93809118638F9389ED9A +:1033D00091E09F9359CE803209F0B5CE809117636A +:1033E0008A3061F4809118639091196399279F93B3 +:1033F0008F9329E532E03F932F9347CE8032E1F55A +:1034000080913E6481FFFCCF47E050E06EE173E6BF +:1034100086E890E60E94CD24892B91F080916E641D +:1034200081FD0E94FF040E94970F87E0EEE1F3E622 +:10343000A6E8B0E601900D928A95E1F70E94520A43 +:1034400083E592E09F938F931F930F930E942E0A20 +:1034500067E070E086E890E60E94BC090E94220ABC +:10346000E49A109232641092316410922F64109298 +:103470004864109249649DCF8132B9F587E0E6E84F +:10348000F0E6AEE1B3E601900D928A95E1F7809106 +:103490001E6390911F63A0912063B0912163892BDB +:1034A0008A2B8B2B59F480921E6390921F63A092FB +:1034B0002063B092216388E0809324632DE432E09E +:1034C0003F932F931F930F930E942E0A67E070E0A3 +:1034D0008EE193E60E94BC090E94220A87E090E0F8 +:1034E000809348649093496464CF823271F58091EF +:1034F00018639091196399279F938F9381E492E0C9 +:103500009F938F931F930F930E942E0A80911863AD +:103510000F900F900F900F900F900F90982F917029 +:1035200080FF0FC06C9881FF0EC06D982091846061 +:1035300020FD04C0992311F0E79AE69A80938460F5 +:103540006DCD6C9AF0CF6D9AF1CF833209F0FBCD3F +:10355000809119638F93809118638F9326E332E0F3 +:103560003F932F931F930F930E942E0A809118630D +:103570009091196380933364909334640F900F900B +:103580000F900F900F900F90892B71F0E19B0AC064 +:10359000E39908C0E49810922F640E946F0F029A7A +:1035A00010921204E39A3ACD0E94170B37CDE69B96 +:1035B000B0CC80919860853021F4109224600E94F4 +:1035C000B7040198FFE72AE136E0F150204030408F +:1035D000E1F700C0000084EA92E09F938F931F936D +:1035E0000F930E942E0A0F900F900F900F90E09B68 +:1035F00005C00E94A408E798E6988BCC8091030C44 +:10360000811103C00E94590EF6CF0E948F08F3CF9C +:103610004091706450917164282F30E0F12C421772 +:10362000530739F08F5F8093316422593C49F90187 +:10363000F0808091706490917164209131642817BA +:10364000190611F40E94FF04F09202087CCC8091CC +:103650006E6481FF78CC75CC109233641092346420 +:103660000E94170B8ACC90E0E4E095958795EA9547 +:10367000E1F7582EC090316331E0831302C01092FD +:10368000946001972CE3289F7001299FF00C11246E +:1036900070909460739470929460D12CA60162E350 +:1036A00073E6C70182539F490E94DA2481E0809328 +:1036B0002F63651411F0E12C0CC0EC0CFD1CE092A2 +:1036C0009C60F0929D6067109EC010929960EE24FD +:1036D000E39480E490E0809358649093596410924E +:1036E0005C6410925D6480910B0C82FDFCCF8EEFC8 +:1036F0008093460C109260641092616480910B0C70 +:1037000082FDFCCF8EEF8093480CEE2009F437CB7E +:10371000F090D2608091D6601F928F938091D56097 +:103720001F928F938091D3601F928F931F92FF926D +:1037300081E696E09F938F931F930F930E942E0A2A +:10374000CDBFDEBF91E0F91268C18091D360609077 +:10375000D5607090D6605090D760823009F028C153 +:10376000E52CF12CC72CD12C1F925F921F927F92D7 +:103770001F926F928BE493E09F938F931F930F930D +:103780000E942E0ACDBFDEBF6110ABC0B6016A5BDE +:103790007C4FA70185ED90E6EAD58CE393E09F93FB +:1037A0008F931F930F930E942E0AB70185ED90E629 +:1037B0000E94BC090E94220A0F900F900F900F9058 +:1037C00084E891E08093D3609093D4603FEFE31A54 +:1037D000F30A97012A5F3F4F20939C6030939D60CE +:1037E00010929A60C7018F5B9F4F6CE370E00E945C +:1037F0006E24609399608EE08093CF6022533F499E +:10380000F9011082BCCA8FEB92E0CFCB9138E9F579 +:10381000109230639091996091110DC080EB92E00D +:103820009F938F931F930F930E942E0A10922F63E2 +:1038300010923163C2CB80919A602CE3829FF00199 +:103840001124E153FF49A2E3B3E601900D922A95BA +:10385000E1F78F5F80939A6040E1849F900111248B +:10386000292B20932F6320919C6030919D609817A5 +:1038700051F08CE3809331632C53310920939C6089 +:1038800030939D6018CF822FF5CF91111CC08F3FD0 +:1038900021F095E0980F923048F482E080932F63F6 +:1038A00080E4809330631092316305CF813F09F04B +:1038B00002CF82E080932F6380E88093306381E0C1 +:1038C00080933163F8CE923009F4F5CE913031F423 +:1038D000882309F4F0CE10922F63EDCE9330D9F700 +:1038E000EACEF1E06F126CCF872D8F7D09F048C0D2 +:1038F0008FEF8093070610920E0610920F066092CB +:1039000000066092010684E0809302068AEF8093AD +:10391000040684E480930B0681E180930A0680917B +:10392000070681FFFCCF20910E0630910F06C901DA +:1039300063E0880F991F6A95E1F7220F331F820F0A +:10394000931F1092000680939560909396609F93CA +:103950008F938EE293E09F938F931F930F930E9418 +:103960002E0A80919560909196608093D560909397 +:10397000D6600F900F900F900F900F900F9020CF68 +:103980001F925F921F927F9288E193E09F938F93A3 +:103990001F930F930E942E0A672D677070E0605F7F +:1039A0007C4FA70185ED90E6E2D4CDBFDEBF08CF06 +:1039B0008031B9F481E093E09F938F931F930F932D +:1039C0000E942E0A1092986080E890E08093D36065 +:1039D0009093D4600F900F900F900F90F12CE12CEA +:1039E000F8CE813149F481EF92E09F938F931F933A +:1039F0000F930E942E0AE8CF1F925F921F927F9230 +:103A00001F926F928BED92E09F938F931F930F9372 +:103A10000E942E0ACDBFDEBFE1CF92E1F912A4C20F +:103A2000F090D360D090D560C090D6607090D76091 +:103A3000E1E0FE12CAC0E090D860F090D960FF9239 +:103A4000EF921F927F921F92CF921F92DF928DE092 +:103A500095E09F938F931F930F930E942E0ACDBFE3 +:103A6000DEBFD11029C0C11019C0FF92EF9280E0D3 +:103A700095E09F938F931F930F930E942E0AE092DD +:103A800098600F900F900F900F900F900F9080E81C +:103A900090E08093D3609093D460A0CF31E0C312C4 +:103AA000F6CFFF92EF928BEE94E09F938F931F934C +:103AB0000F930E942E0AE5CF41E0D4124AC0C110F4 +:103AC0000DC0FF92EF9288ED94E09F938F931F9328 +:103AD0000F930E942E0AE0929760D3CF81E3C81221 +:103AE000D6CFE0921860F0921960FF92EF928DECC1 +:103AF00094E09F938F931F930F930E942E0A0F9031 +:103B00000F900F900F900F900F90809198608530DC +:103B100009F0BDCF8091186090911960813F9105A7 +:103B200098F080EF90E080931860909319608091F6 +:103B3000186090911960E816F90609F4A8CF9F93D0 +:103B40008F938FEB94E0B1CF889788F788E290E06D +:103B5000EACF92E0D91226C0C11099CF1F927F926E +:103B60008EEA94E09F938F931F930F930E942E0AE7 +:103B7000472D4F7350E068ED70E68EE990E61AD756 +:103B80000F900F900F900F900F900F908091986072 +:103B9000853009F07CCF8091CD601F928F938FE9A3 +:103BA00094E083CFE3E0DE1272CFF6E0CF1205C0DF +:103BB000FF92EF928EE894E078CF27E0C21267CFB1 +:103BC000FF92EF928DE794E070CF32E0F31264C081 +:103BD000E72CF12C1F927F921F92CF921F92DF92BF +:103BE00089E594E09F938F931F930F930E942E0A71 +:103BF000CDBFDEBFD11022C0C11016C08091986029 +:103C00001F928F938CE494E09F938F931F930F9355 +:103C10000E942E0A809198608093D5600F900F903B +:103C20000F900F900F900F9084E891E08093D360F5 +:103C30009093D460FFEFEF1AFF0ACBCD91E0D91239 +:103C4000F3CFC1100FC0809197601F928F9389E3CB +:103C500094E09F938F931F930F930E942E0A80915D +:103C60009760DACFE1E3CE12DFCF809119608F93B6 +:103C7000809118608F938EE294E09F938F931F93AF +:103C80000F930E942E0A8091186090911960809382 +:103C9000D5609093D660C2CF80919860853009F04E +:103CA00060C120E1F21251C01F92DF9285E194E0E1 +:103CB0009F938F931F930F930E942E0A0E94970F3A +:103CC000EFB6F8948DE793E09F938F931F930F9334 +:103CD0000E942E0AF092E20580E28093040880910F +:103CE0001860909119600E9479058093080890935C +:103CF00009088BE2809307088AE08093050888EC26 +:103D00008093060820910608809108089091090880 +:103D10001F922F939F938F938BE693E09F938F93A4 +:103D20001F930F930E942E0AEFBE85ED91E10E9432 +:103D30003A157C01CDBFDEBF84E890E0E114F104C8 +:103D400009F0BCC080EA90E0B9C091E1F9121FC04F +:103D500084E094E09F938F931F930F930E942E0A09 +:103D60000F900F900F900F90E89B0DC08EEA91E19D +:103D70000E943A157C010E94970F0E94520AE1149A +:103D8000F10401F331C0EE24E394F12CF4CFE5E12A +:103D9000FE1218C081EF93E09F938F931F930F93B0 +:103DA0000E942E0A84EB9FE00E943A150F900F901C +:103DB0000F900F90892B21F4EDB2FE2DF170EF2EB4 +:103DC000F12CDDCF26E1F21212C08EED93E09F932D +:103DD0008F931F930F930E942E0A0F900F900F90B6 +:103DE0000F90EE24E394F12C80E890E067C030E27D +:103DF000F31220C08091D9608F938091D8608F9307 +:103E00008091D7608F938091D6608F931F92DF92BD +:103E100085EC93E09F938F931F930F930E942E0A3C +:103E200080911263909113630E943A157C01CDBF7B +:103E3000DEBFA5CFE89B92C091E2F9126BC08091E2 +:103E4000DB608F938091DA608F938091D9608F933C +:103E50008091D8608F938091D7608F938091D66046 +:103E60008F931F92DF9288EA93E09F938F931F9323 +:103E70000F930E942E0A8091D560E090DA60F09056 +:103E8000DB60CDBFDEBF833DF1F48091D6608F71E2 +:103E900090E0A701415051094F7155274F5F5F4F87 +:103EA0006EEE72E68B529F4985D5FFEFEF1AFF0A3F +:103EB00084E891E0E114F10409F444CF8093D360E5 +:103EC0009093D46086CCE99B08C080911063909158 +:103ED00011630E943A157C01EBCF843BA1F48091E1 +:103EE000EE62882381F09EE19093D560803209F4E0 +:103EF00081E48093D6608091F8628093D7602FEF41 +:103F0000E21AF20AD5CFA7016FEF70E085ED90E6D7 +:103F10005AD5F5CF33E2F31221C08091DB608F9345 +:103F20008091DA608F938091D9608F938091D8606F +:103F30008F938091D7608F938091D6608F931F92DB +:103F4000DF928AE893E09F938F931F930F930E94D1 +:103F50002E0A809114639091156366CFF12CE12CA9 +:103F6000F1CE80EA90E095CD94E1F91246C18091BE +:103F7000D360813009F06CC08CED95E09F938F93F6 +:103F80001F930F930E942E0A0E94970FFFB6F8947A +:103F900084E495E09F938F931F930F930E942E0AC2 +:103FA000209118603091196050E040E0CDBFDEBF35 +:103FB00060E27EE480E090E0C7D4DA01C9010196B6 +:103FC000A11DB11DB595A7959795879536E0880FEA +:103FD000991FAA1FBB1F3A95D1F720E12093E20554 +:103FE000029828E02093120420E2209304088034F1 +:103FF0009105A105B10520F480E490E0A0E0B0E0D7 +:1040000080930808909309088BE6809307088BE05B +:104010008093050888EC809306082091060880911B +:104020000808909109081F922F939F938F9382E322 +:1040300095E09F938F931F930F930E942E0AFFBECC +:1040400087EB90E10E943A157C01CDBFDEBF33C003 +:10405000823009F04BC086EC95E09F938F931F93BD +:104060000F930E942E0A80EC0E94F5070F900F908C +:104070000F900F90882319F080E00E94F50780E5EB +:1040800095E09F938F931F930F930E942E0A83EFC7 +:1040900091E00197F1F700C00000029801981DBA65 +:1040A0000E94970F0E94520A0F900F900F900F904E +:1040B000EE24E394F12C81E0E114F10409F080E0B6 +:1040C0008093D460FF92EF928CE595E09F938F935D +:1040D0001F930F930E942E0A9FEFE91AF90A0F907F +:1040E0000F900F900F900F900F9073CBE89B7AC0BA +:1040F0008330E1F46091D5607091D6608091D76093 +:104100009091D8603DD49F938F937F936F938091CC +:10411000D4601F928F938EEA95E09F938F931F93A5 +:104120000F930E942E0A8CE294E18CCF843029F503 +:104130002091DA603091DB603227232732276091AB +:10414000D6607091D7608091D8609091D96018D472 +:104150003F932F939F938F937F936F938091D4601E +:104160001F928F9381E995E09F938F931F930F93F5 +:104170000E942E0A8AE193E165CF853029F52091CE +:10418000D9603091DA603227232732276091D560D9 +:104190007091D6608091D7609091D860F1D33F93B1 +:1041A0002F939F938F937F936F938091D4601F92EF +:1041B0008F9385E795E09F938F931F930F930E94B2 +:1041C0002E0A8CEF93E13ECF863079F48AE695E0B3 +:1041D0009F938F931F930F930E942E0A0F900F901F +:1041E0000F900F90F12CE12C66CF21E090E087300A +:1041F00009F020E0E22EF92E5ECFE0E2FE12EECBD7 +:104200009091D360C090D560D090D6608091D760F7 +:10421000913099F5E090D860F090D960FF92EF92DC +:104220001F928F931F92DF921F92CF928CE396E0A2 +:104230009F938F931F930F930E942E0ACDBFDEBFD3 +:10424000C11025CC30E1D31222CCFF92EF9287E24D +:1042500096E09F938F931F930F930E942E0AE092F4 +:1042600000600F900F900F900F900F900F90EF281D +:1042700011F00E9A0CCC0E980ACC923009F0AECB0D +:10428000E82EF12C1F928F931F92DF921F92CF92F4 +:1042900087E096E09F938F931F930F930E942E0ABF +:1042A000CDBFDEBFC11019C090E1D91216C08091F8 +:1042B00000601F928F9382EF95E09F938F931F93DF +:1042C0000F930E942E0A809100608093D5600F901A +:1042D0000F900F900F900F900F9084E891E08093D3 +:1042E000D3609093D460EFEFEE1AFE0A72CADC013D +:1042F0002D923D924D925D926D927D928D929D9206 +:10430000AD92BD92CD92DD92ED92FD920D931D93F3 +:10431000CD93DD93FF91EF918DB78D938EB78D93F4 +:104320008FB78D93ED93FD93882799270994DC012E +:10433000CB0181309105811D2D903D904D905D9078 +:104340006D907D908D909D90AD90BD90CD90DD90C5 +:10435000ED90FD900D911D91CD91DD91ED91FD912F +:104360000D900FBEEDBFFEBFED91FD910994FB01D5 +:10437000DC0102C005900D9241505040D8F70895DD +:10438000CF93DF93EC018B8188608B83CE0106D0C5 +:104390002B81277F2B83DF91CF910895ABE0B0E095 +:1043A000E3EDF1E26AC27C013B018A01FC01168265 +:1043B0001782838181FFBAC1CE0101965C01F701AA +:1043C0009381F30193FD859193FF81913F018823B0 +:1043D00009F449C1853239F493FD859193FF8191A8 +:1043E0003F01853221F4B70190E0B9D1E8CF912C9B +:1043F000212C312CFFE1F31538F08B3211F190F4C0 +:10440000803209F1833229F137FC3CC020ED280FBE +:104410002A3050F536FE20C08AE0989E200D1124E7 +:10442000922E06C08D3291F0803371F7689430F887 +:10443000F30193FD859193FF81913F018111DACFC3 +:1044400021C0689431F8689432F8F2CF689433F858 +:10445000EFCF689434F8ECCFEAE02E9E200D1124C3 +:10446000222E689435F8E4CF8E3229F436FCFBC056 +:10447000689436F8DDCF8C3619F4689437F8D8CFC5 +:104480008836B1F2982F9F7D95549330D8F08336BB +:1044900091F18337B1F1833509F05EC02801F2E074 +:1044A0004F0E511CF801C080D180692D70E036FCA0 +:1044B00002C06FEF7FEFC6013CD14C01689437F822 +:1044C00082010AC00C5F1F4FFFE3F98388248394A5 +:1044D000912C6501E89437F833FE2AC0522C8114E0 +:1044E000910459F5552009F46ACFB70180E290E0B4 +:1044F00036D15A94F7CFF801808189830E5F1F4F20 +:10450000E5CF2801F2E04F0E511CF801C080D180A8 +:10451000692D70E036FC02C06FEF7FEFC60114D149 +:104520004C018201D7CFB70180E290E018D12A94E4 +:104530002814190409F0B8F7D1CFF60137FC85919A +:1045400037FE81916F01B70190E009D151105A9463 +:10455000F1E08F1A9108C3CF843619F0893609F03B +:1045600073C0F80137FE67C06081718182819381D9 +:104570000C5F1F4FF32DFF763F2E97FF09C09095DC +:104580008095709561957F4F8F4F9F4F689437F856 +:104590002AE030E0A50113D1C82ECA188C2C432C78 +:1045A00036FE0CC0E89440F8C91440F434FE05C04F +:1045B00032FC03C0F32DFE7E4F2E892C44FE90C0AA +:1045C000FE01EC0DF11D8081803309F082C0242DA5 +:1045D000297E422E842D8870582E43FC8FC040FEC9 +:1045E00089C09C2C821418F42C0C922C981844FE30 +:1045F0008BC0B70180E390E0B2D042FE08C088E7EC +:1046000090E041FE02C088E590E0B701A8D0C9144F +:1046100008F486C0CA94D12C9FEFC91AD90ACA0CD3 +:10462000DB1CF60182916F01B70190E098D0AC14C9 +:10463000BD04B9F757CF60817181072E000C880B3C +:10464000990B0E5F1F4F96CFD32CE894D4F82AE035 +:1046500030E0853731F1232D297FD22E8F36F9F0C6 +:1046600040F48835A1F0F701868197812B96E2E12D +:104670001DC1803749F08837B1F7D4FE02C0689475 +:10468000D2F820E130E00DC06894D4F8F6CF34FEC3 +:1046900003C0822F8660D82E20E132E002C028E0DD +:1046A00030E0F801D7FE0EC0608171818281938174 +:1046B0000C5F1F4FA50183D0C82ECA183D2CE8946B +:1046C00037F86CCF6081718190E080E00E5F1F4F02 +:1046D000F1CF42FC02C083947DCF839483947ACF40 +:1046E000842D867809F476CFF6CFB70180E290E08A +:1046F00036D083948214C8F3512C79CF522C581899 +:10470000821408F474CFF8CF842D867809F47FCF13 +:104710008BE241FE80E247FC8DE2B70190E076CF6C +:10472000B70180E390E01BD09A9471CF8FEF9FEF99 +:104730009DCFFC010590615070400110D8F7809525 +:1047400090958E0F9F1F0895FC016150704001905D +:104750000110D8F7809590958E0F9F1F08950F93A5 +:104760001F93CF93DF93182F092FEB018B8181FDCE +:1047700009C01FEF0FEF812F902FDF91CF911F9175 +:104780000F91089582FF14C02E813F818C819D81FD +:10479000281739073CF4E881F981CF010196888315 +:1047A000998310838E819F8101968E839F83E3CFAF +:1047B000E885F985812F0995892BA1F3DACFFA01D4 +:1047C000AA27283051F1203181F1E8946F936E7F50 +:1047D0006E5F7F4F8F4F9F4FAF4FB1E03ED0B4E041 +:1047E0003CD0670F781F891F9A1FA11D680F791F82 +:1047F0008A1F911DA11D6A0F711D811D911DA11D93 +:1048000020D009F468943F912AE0269F11243019A2 +:10481000305D3193DEF6CF010895462F4770405D3D +:104820004193B3E00FD0C9F7F6CF462F4F70405DEC +:104830004A3318F0495D31FD4052419302D0A9F747 +:10484000EACFB4E0A6959795879577956795BA9541 +:10485000C9F700976105710508959B01AC010A2E07 +:1048600006945795479537952795BA95C9F7620FDE +:10487000731F841F951FA01D08952F923F924F9282 +:104880005F926F927F928F929F92AF92BF92CF92E0 +:10489000DF92EF92FF920F931F93CF93DF93CDB7E9 +:1048A000DEB7CA1BDB0BCDBFDEBF09942A8839886F +:1048B00048885F846E847D848C849B84AA84B984B8 +:1048C000C884DF80EE80FD800C811B81AA81B981C4 +:1048D000CE0FD11DCDBFDEBFED010895AA1BBB1BBE +:1048E00051E107C0AA1FBB1FA617B70710F0A61BF0 +:1048F000B70B881F991F5A95A9F780959095BC0111 +:10490000CD010895A1E21A2EAA1BBB1BFD010DC00B +:10491000AA1FBB1FEE1FFF1FA217B307E407F5076F +:1049200020F0A21BB30BE40BF50B661F771F881F4B +:10493000991F1A9469F760957095809590959B01E1 +:10494000AC01BD01CF010895052E97FB16F400942C +:104950000FD057FD05D0D6DF07FC02D046F408C0C3 +:1049600050954095309521953F4F4F4F5F4F08959B +:1049700090958095709561957F4F8F4F9F4F0895CB +:104980006927962769277827872778270895EE0FC4 +:10499000FF1F0590F491E02D0994FB01DC0104C098 +:1049A0008D910190801921F441505040C8F7881B27 +:1049B000990B0895FB01DC0102C001900D9241505A +:1049C0005040D8F70895DC0101C06D93415050402C +:0849D000E0F70895F894FFCF11 +:1049D8000155080000000055480000000055A000DF +:1049E8005504556A00000000E100000000FFFF7F49 +:1049F800557EC87F59FE557EC37E04FF00302000D7 +:104A0800E0FF88D8CD45AB891255C20D55C2055572 +:104A180087558B55E020676F72504D564E55E065AF +:104A2800736172454D564E55E065742673554D5663 +:104A38004E55C72055CA0355E655C85955C308559C +:104A4800C20555C85955C80055C30400000000EEFA +:044A5800040D0A003F :00000001FF diff --git a/hex/updi4avr-usb/AVR64DU32_CNANO_DEBUG1.lst b/hex/updi4avr-usb/AVR64DU32_CNANO_DEBUG1.lst index 8dc5d11..ce7b565 100644 --- a/hex/updi4avr-usb/AVR64DU32_CNANO_DEBUG1.lst +++ b/hex/updi4avr-usb/AVR64DU32_CNANO_DEBUG1.lst @@ -1,5 +1,5 @@ -/var/folders/mz/_z9vt_y13rdf9tt_4qkvv0k40000gn/T/arduino_build_602599/UPDI4AVR-USB.ino.elf: file format elf32-avr +/var/folders/mz/_z9vt_y13rdf9tt_4qkvv0k40000gn/T/arduino_build_486959/UPDI4AVR-USB.ino.elf: file format elf32-avr Disassembly of section .data: @@ -308,7 +308,7 @@ __trampolines_start(): 33c: 20 56 45 53 52 49 4f 4e 3d 00 VESRION=. 00000346 : - 346: 00 01 20 2b 00 .. +. + 346: 00 01 20 2c 00 .. ,. 0000034b : 34b: 20 47 45 4e 5f 47 45 54 5f 50 41 52 41 4d 3d 25 GEN_GET_PARAM=% @@ -664,7 +664,7 @@ __do_copy_data(): 910: 10 e6 ldi r17, 0x60 ; 96 912: a0 e0 ldi r26, 0x00 ; 0 914: b0 e6 ldi r27, 0x60 ; 96 - 916: ec ed ldi r30, 0xDC ; 220 + 916: e8 ed ldi r30, 0xD8 ; 216 918: f9 e4 ldi r31, 0x49 ; 73 91a: 02 c0 rjmp .+4 ; 0x920 <__do_copy_data+0x10> 91c: 05 90 lpm r0, Z+ @@ -696,14 +696,14 @@ __do_global_ctors(): 93c: 04 c0 rjmp .+8 ; 0x946 <__do_global_ctors+0x10> 93e: 21 97 sbiw r28, 0x01 ; 1 940: fe 01 movw r30, r28 - 942: 0e 94 c9 24 call 0x4992 ; 0x4992 <__tablejump2__> + 942: 0e 94 c7 24 call 0x498e ; 0x498e <__tablejump2__> 946: cc 36 cpi r28, 0x6C ; 108 948: d1 07 cpc r29, r17 94a: c9 f7 brne .-14 ; 0x93e <__do_global_ctors+0x8> ../../../../crt1/gcrt1.S:314 94c: 0e 94 c2 15 call 0x2b84 ; 0x2b84
../../../../crt1/gcrt1.S:315 - 950: 0c 94 ec 24 jmp 0x49d8 ; 0x49d8 <_exit> + 950: 0c 94 ea 24 jmp 0x49d4 ; 0x49d4 <_exit> 00000954 <__bad_interrupt>: __vector_22(): @@ -734,7 +734,7 @@ static int printf_putchar (char _c, FILE *_fp) { 0000096e : send_bitmap(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:236 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:236 /*** Low level TDAT stream manipulation ***/ /* UPDI commands are sent from TDAT using only TCA0 and bit manipulation, without switching USART. */ @@ -743,13 +743,13 @@ send_bitmap(): TCA0_SPLIT_HPER = TCA0_225K; 96e: 88 e5 ldi r24, 0x58 ; 88 970: 80 93 27 0a sts 0x0A27, r24 ; 0x800a27 <__TEXT_REGION_LENGTH__+0x7f0a27> -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:237 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:237 TCA0_SPLIT_CTRLA = TCA_SPLIT_ENABLE_bm | TCA_SPLIT_CLKSEL_DIV1_gc; 974: 81 e0 ldi r24, 0x01 ; 1 976: 80 93 00 0a sts 0x0A00, r24 ; 0x800a00 <__TEXT_REGION_LENGTH__+0x7f0a00> 97a: 90 e0 ldi r25, 0x00 ; 0 97c: 80 e0 ldi r24, 0x00 ; 0 -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:239 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:239 for (uint8_t i = 0; i < _length; i++) { uint8_t _d = (_bitmap[i >> 3]) >> (i & 7); 97e: fc 01 movw r30, r24 @@ -769,19 +769,19 @@ send_bitmap(): 99a: 27 95 ror r18 99c: 4a 95 dec r20 99e: e2 f7 brpl .-8 ; 0x998 -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:240 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:240 loop_until_bit_is_set(TCA0_SPLIT_INTFLAGS, TCA_SPLIT_HUNF_bp); 9a0: 40 91 0b 0a lds r20, 0x0A0B ; 0x800a0b <__TEXT_REGION_LENGTH__+0x7f0a0b> 9a4: 41 ff sbrs r20, 1 9a6: fc cf rjmp .-8 ; 0x9a0 -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:241 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:241 if (bit_is_set(_d, 0)) 9a8: 20 ff sbrs r18, 0 9aa: 0d c0 rjmp .+26 ; 0x9c6 -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:242 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:242 openDrainWriteMacro(PIN_PG_TDAT, HIGH); 9ac: 00 98 cbi 0x00, 0 ; 0 -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:245 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:245 else openDrainWriteMacro(PIN_PG_TDAT, LOW); bit_set(TCA0_SPLIT_INTFLAGS, TCA_SPLIT_HUNF_bp); @@ -789,7 +789,7 @@ send_bitmap(): 9b2: 22 60 ori r18, 0x02 ; 2 9b4: 20 93 0b 0a sts 0x0A0B, r18 ; 0x800a0b <__TEXT_REGION_LENGTH__+0x7f0a0b> 9b8: 01 96 adiw r24, 0x01 ; 1 -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:238 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:238 /* UPDI commands are sent from TDAT using only TCA0 and bit manipulation, without switching USART. */ /* 128kbps is the lowest limit that can be achieved with an 8-bit timer at 32MHz or less. */ void send_bitmap (const uint8_t _bitmap[], const size_t _length) { @@ -799,7 +799,7 @@ send_bitmap(): 9ba: 80 39 cpi r24, 0x90 ; 144 9bc: 91 05 cpc r25, r1 9be: f9 f6 brne .-66 ; 0x97e -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:247 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:247 openDrainWriteMacro(PIN_PG_TDAT, HIGH); else openDrainWriteMacro(PIN_PG_TDAT, LOW); @@ -807,10 +807,10 @@ send_bitmap(): } TCA0_SPLIT_CTRLA = 0; 9c0: 10 92 00 0a sts 0x0A00, r1 ; 0x800a00 <__TEXT_REGION_LENGTH__+0x7f0a00> -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:248 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:248 } 9c4: 08 95 ret -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:244 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:244 uint8_t _d = (_bitmap[i >> 3]) >> (i & 7); loop_until_bit_is_set(TCA0_SPLIT_INTFLAGS, TCA_SPLIT_HUNF_bp); if (bit_is_set(_d, 0)) @@ -884,7 +884,7 @@ size_t UsartBaseClass::write (const uint8_t _c) { 000009fe : ep_cdo_listen(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:350 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:350 loop_until_bit_is_clear(USB0_INTFLAGSB, USB_RMWBUSY_bp); USB_EP_STATUS_CLR(USB_EP_CDI) = ~USB_TOGGLE_bm; } @@ -902,10 +902,10 @@ static __inline__ uint8_t __iCliRetVal(void) cli(); a00: f8 94 cli ep_cdo_listen(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:351 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:351 _recv_count = 0; a02: 10 92 31 64 sts 0x6431, r1 ; 0x806431 <_recv_count> -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:352 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:352 EP_CDO.CNT = 0; a06: 10 92 70 64 sts 0x6470, r1 ; 0x806470 a0a: 10 92 71 64 sts 0x6471, r1 ; 0x806471 @@ -919,23 +919,23 @@ static __inline__ void __iRestore(const uint8_t *__s) SREG = *__s; a0e: 8f bf out 0x3f, r24 ; 63 ep_cdo_listen(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:354 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:354 } loop_until_bit_is_clear(USB0_INTFLAGSB, USB_RMWBUSY_bp); a10: 80 91 0b 0c lds r24, 0x0C0B ; 0x800c0b <__TEXT_REGION_LENGTH__+0x7f0c0b> a14: 82 fd sbrc r24, 2 a16: fc cf rjmp .-8 ; 0xa10 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:355 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:355 USB_EP_STATUS_CLR(USB_EP_CDO) = ~USB_TOGGLE_bm; a18: 8e ef ldi r24, 0xFE ; 254 a1a: 80 93 4c 0c sts 0x0C4C, r24 ; 0x800c4c <__TEXT_REGION_LENGTH__+0x7f0c4c> -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:356 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:356 } a1e: 08 95 ret 00000a20 : ep_cdi_listen(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:325 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:325 #else /* If our math is correct, then if each side of the double */ /* buffer can complete the transmission of 64 characters */ @@ -947,7 +947,7 @@ ep_cdi_listen(): a24: 80 91 76 64 lds r24, 0x6476 ; 0x806476 a28: 81 ff sbrs r24, 1 a2a: 07 c0 rjmp .+14 ; 0xa3a -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:336 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:336 #endif D2PRINTF(" VI=%02X:", _send_count); D2PRINTHEX(bit_is_set(GPCONF, GPCONF_DBL_bp) @@ -965,7 +965,7 @@ static __inline__ uint8_t __iCliRetVal(void) cli(); a2e: f8 94 cli ep_cdi_listen(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:338 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:338 EP_CDI.DATAPTR = bit_is_set(GPCONF, GPCONF_DBL_bp) ? (register16_t)&EP_MEM.cdi_data[64] a30: e2 99 sbic 0x1c, 2 ; 28 @@ -973,7 +973,7 @@ ep_cdi_listen(): a34: 8e ea ldi r24, 0xAE ; 174 a36: 93 e6 ldi r25, 0x63 ; 99 a38: 09 c0 rjmp .+18 ; 0xa4c -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:328 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:328 /* in 1 ms, then it can support 640 kbps. */ if (bit_is_clear(GPCONF, GPCONF_OPN_bp) || bit_is_clear(EP_CDI.STATUS, USB_BUSNAK_bp)) { @@ -985,7 +985,7 @@ ep_cdi_listen(): a40: 11 f5 brne .+68 ; 0xa86 a42: 10 92 32 64 sts 0x6432, r1 ; 0x806432 <_send_count> a46: 08 95 ret -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:338 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:338 D2PRINTHEX(bit_is_set(GPCONF, GPCONF_DBL_bp) ? &EP_MEM.cdi_data[64] : &EP_MEM.cdi_data[0], _send_count); @@ -994,7 +994,7 @@ ep_cdi_listen(): ? (register16_t)&EP_MEM.cdi_data[64] a48: 8e ee ldi r24, 0xEE ; 238 a4a: 93 e6 ldi r25, 0x63 ; 99 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:337 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:337 D2PRINTF(" VI=%02X:", _send_count); D2PRINTHEX(bit_is_set(GPCONF, GPCONF_DBL_bp) ? &EP_MEM.cdi_data[64] @@ -1003,7 +1003,7 @@ ep_cdi_listen(): EP_CDI.DATAPTR = bit_is_set(GPCONF, GPCONF_DBL_bp) a4c: 80 93 7a 64 sts 0x647A, r24 ; 0x80647a a50: 90 93 7b 64 sts 0x647B, r25 ; 0x80647b -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:340 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:340 ? (register16_t)&EP_MEM.cdi_data[64] : (register16_t)&EP_MEM.cdi_data[0]; EP_CDI.CNT = _send_count; @@ -1011,14 +1011,14 @@ ep_cdi_listen(): a58: 90 e0 ldi r25, 0x00 ; 0 a5a: 80 93 78 64 sts 0x6478, r24 ; 0x806478 a5e: 90 93 79 64 sts 0x6479, r25 ; 0x806479 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:341 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:341 EP_CDI.MCNT = 0; a62: 10 92 7c 64 sts 0x647C, r1 ; 0x80647c a66: 10 92 7d 64 sts 0x647D, r1 ; 0x80647d -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:342 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:342 _send_count = 0; a6a: 10 92 32 64 sts 0x6432, r1 ; 0x806432 <_send_count> -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:343 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:343 GPCONF ^= GPCONF_DBL_bm; a6e: 8c b3 in r24, 0x1c ; 28 a70: 94 e0 ldi r25, 0x04 ; 4 @@ -1034,23 +1034,23 @@ static __inline__ void __iRestore(const uint8_t *__s) SREG = *__s; a76: 2f bf out 0x3f, r18 ; 63 ep_cdi_listen(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:345 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:345 } loop_until_bit_is_clear(USB0_INTFLAGSB, USB_RMWBUSY_bp); a78: 80 91 0b 0c lds r24, 0x0C0B ; 0x800c0b <__TEXT_REGION_LENGTH__+0x7f0c0b> a7c: 82 fd sbrc r24, 2 a7e: fc cf rjmp .-8 ; 0xa78 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:346 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:346 USB_EP_STATUS_CLR(USB_EP_CDI) = ~USB_TOGGLE_bm; a80: 8e ef ldi r24, 0xFE ; 254 a82: 80 93 4e 0c sts 0x0C4E, r24 ; 0x800c4e <__TEXT_REGION_LENGTH__+0x7f0c4e> -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:347 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:347 } a86: 08 95 ret 00000a88 : ep_cci_listen(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:292 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:292 loop_until_bit_is_clear(USB0_INTFLAGSB, USB_RMWBUSY_bp); USB_EP_STATUS_CLR(USB_EP_DPO) = ~USB_TOGGLE_bm; } @@ -1061,26 +1061,26 @@ ep_cci_listen(): a8a: 90 e0 ldi r25, 0x00 ; 0 a8c: 80 93 68 64 sts 0x6468, r24 ; 0x806468 a90: 90 93 69 64 sts 0x6469, r25 ; 0x806469 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:293 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:293 EP_CCI.MCNT = 0; a94: 10 92 6c 64 sts 0x646C, r1 ; 0x80646c a98: 10 92 6d 64 sts 0x646D, r1 ; 0x80646d -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:294 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:294 loop_until_bit_is_clear(USB0_INTFLAGSB, USB_RMWBUSY_bp); a9c: 80 91 0b 0c lds r24, 0x0C0B ; 0x800c0b <__TEXT_REGION_LENGTH__+0x7f0c0b> aa0: 82 fd sbrc r24, 2 aa2: fc cf rjmp .-8 ; 0xa9c -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:295 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:295 USB_EP_STATUS_CLR(USB_EP_CCI) = ~USB_TOGGLE_bm; aa4: 8e ef ldi r24, 0xFE ; 254 aa6: 80 93 4a 0c sts 0x0C4A, r24 ; 0x800c4a <__TEXT_REGION_LENGTH__+0x7f0c4a> -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:296 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:296 } aaa: 08 95 ret 00000aac : ep_res_listen(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:273 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:273 loop_until_bit_is_clear(USB0_INTFLAGSB, USB_RMWBUSY_bp); USB_EP_STATUS_CLR(USB_EP_REQ) = ~USB_TOGGLE_bm; } @@ -1089,22 +1089,22 @@ ep_res_listen(): EP_RES.MCNT = 0; aac: 10 92 4c 64 sts 0x644C, r1 ; 0x80644c ab0: 10 92 4d 64 sts 0x644D, r1 ; 0x80644d -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:274 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:274 loop_until_bit_is_clear(USB0_INTFLAGSB, USB_RMWBUSY_bp); ab4: 80 91 0b 0c lds r24, 0x0C0B ; 0x800c0b <__TEXT_REGION_LENGTH__+0x7f0c0b> ab8: 82 fd sbrc r24, 2 aba: fc cf rjmp .-8 ; 0xab4 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:275 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:275 USB_EP_STATUS_CLR(USB_EP_RES) = ~USB_TOGGLE_bm; abc: 8e ef ldi r24, 0xFE ; 254 abe: 80 93 42 0c sts 0x0C42, r24 ; 0x800c42 <__TEXT_REGION_LENGTH__+0x7f0c42> -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:276 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:276 } ac2: 08 95 ret 00000ac4 : ep_req_listen(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:267 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:267 void ep_cci_pending (void) { loop_until_bit_is_set(EP_CCI.STATUS, USB_BUSNAK_bp); } void ep_cdo_pending (void) { loop_until_bit_is_set(EP_CDO.STATUS, USB_BUSNAK_bp); } void ep_cdi_pending (void) { loop_until_bit_is_set(EP_CDI.STATUS, USB_BUSNAK_bp); } @@ -1113,22 +1113,22 @@ ep_req_listen(): EP_REQ.CNT = 0; ac4: 10 92 40 64 sts 0x6440, r1 ; 0x806440 ac8: 10 92 41 64 sts 0x6441, r1 ; 0x806441 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:268 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:268 loop_until_bit_is_clear(USB0_INTFLAGSB, USB_RMWBUSY_bp); acc: 80 91 0b 0c lds r24, 0x0C0B ; 0x800c0b <__TEXT_REGION_LENGTH__+0x7f0c0b> ad0: 82 fd sbrc r24, 2 ad2: fc cf rjmp .-8 ; 0xacc -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:269 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:269 USB_EP_STATUS_CLR(USB_EP_REQ) = ~USB_TOGGLE_bm; ad4: 8e ef ldi r24, 0xFE ; 254 ad6: 80 93 40 0c sts 0x0C40, r24 ; 0x800c40 <__TEXT_REGION_LENGTH__+0x7f0c40> -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:270 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:270 } ada: 08 95 ret 00000adc : drain(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/usart.cpp:41 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usart.cpp:41 return _baud; } @@ -1138,25 +1138,25 @@ drain(): adc: 20 91 04 08 lds r18, 0x0804 ; 0x800804 <__TEXT_REGION_LENGTH__+0x7f0804> ae0: 27 ff sbrs r18, 7 ae2: 04 c0 rjmp .+8 ; 0xaec -/Users/askn/Collaborator/UPDI4AVR-USB/src/usart.cpp:45 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usart.cpp:45 __asm__ __volatile__ ( "LDS R0, 0x0801\n" /* drop USART0_RXDATAH */ "LDS R0, 0x0800\n" /* drop USART0_RXDATAL */ ); ae4: 00 90 01 08 lds r0, 0x0801 ; 0x800801 <__TEXT_REGION_LENGTH__+0x7f0801> ae8: 00 90 00 08 lds r0, 0x0800 ; 0x800800 <__TEXT_REGION_LENGTH__+0x7f0800> -/Users/askn/Collaborator/UPDI4AVR-USB/src/usart.cpp:47 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usart.cpp:47 } } while (--_delay); aec: 01 97 sbiw r24, 0x01 ; 1 aee: b1 f7 brne .-20 ; 0xadc -/Users/askn/Collaborator/UPDI4AVR-USB/src/usart.cpp:48 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usart.cpp:48 } af0: 08 95 ret 00000af2 : calk_baud_khz(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/usart.cpp:33 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usart.cpp:33 pinModeMacro(PIN_PG_TRST, INPUT_PULLUP); /* USART0_ALT3 or USART0_DEFAULT */ } @@ -1170,7 +1170,7 @@ calk_baud_khz(): afa: 71 e7 ldi r23, 0x71 ; 113 afc: 82 e0 ldi r24, 0x02 ; 2 afe: 90 e0 ldi r25, 0x00 ; 0 - b00: 0e 94 a6 24 call 0x494c ; 0x494c <__divmodsi4> + b00: 0e 94 a4 24 call 0x4948 ; 0x4948 <__divmodsi4> b04: da 01 movw r26, r20 b06: c9 01 movw r24, r18 b08: 01 96 adiw r24, 0x01 ; 1 @@ -1180,7 +1180,7 @@ calk_baud_khz(): b10: a7 95 ror r26 b12: 97 95 ror r25 b14: 87 95 ror r24 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usart.cpp:34 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usart.cpp:34 if (_baud < 64) _baud = 64; b16: 80 34 cpi r24, 0x40 ; 64 b18: 91 05 cpc r25, r1 @@ -1201,7 +1201,7 @@ calk_baud_khz(): b36: 90 e0 ldi r25, 0x00 ; 0 b38: a0 e0 ldi r26, 0x00 ; 0 b3a: b0 e0 ldi r27, 0x00 ; 0 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usart.cpp:37 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usart.cpp:37 else if (_baud > 0xFFFFU) _baud = 0xFFFF; return _baud; } @@ -1209,7 +1209,7 @@ calk_baud_khz(): 00000b3e : prog_init(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv1.cpp:30 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv1.cpp:30 * This file is a template for the future. */ @@ -1222,7 +1222,7 @@ namespace NVM::V1 { 00000b44 : recv(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:72 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:72 send(0x00); USART0_BAUD = USART::calk_baud_khz(_xclk); } @@ -1232,22 +1232,22 @@ recv(): b44: 80 91 04 08 lds r24, 0x0804 ; 0x800804 <__TEXT_REGION_LENGTH__+0x7f0804> b48: 87 ff sbrs r24, 7 b4a: fc cf rjmp .-8 ; 0xb44 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:73 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:73 RXSTAT = USART0_RXDATAH ^ 0x80; b4c: 80 91 01 08 lds r24, 0x0801 ; 0x800801 <__TEXT_REGION_LENGTH__+0x7f0801> b50: 80 58 subi r24, 0x80 ; 128 b52: 8e bb out 0x1e, r24 ; 30 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:74 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:74 RXDATA = USART0_RXDATAL; b54: 80 91 00 08 lds r24, 0x0800 ; 0x800800 <__TEXT_REGION_LENGTH__+0x7f0800> b58: 8f bb out 0x1f, r24 ; 31 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:75 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:75 return RXSTAT == 0 || send_break(); b5a: 8e b3 in r24, 0x1e ; 30 b5c: 88 23 and r24, r24 b5e: 11 f1 breq .+68 ; 0xba4 send_break(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:57 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:57 0x55, 0x04 /* LD,ST PTR++ DATA1,2 */ }; @@ -1266,18 +1266,18 @@ send_break(): b7a: 93 1f adc r25, r19 b7c: 80 93 08 08 sts 0x0808, r24 ; 0x800808 <__TEXT_REGION_LENGTH__+0x7f0808> b80: 90 93 09 08 sts 0x0809, r25 ; 0x800809 <__TEXT_REGION_LENGTH__+0x7f0809> -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:58 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:58 send(0x00); b84: 80 e0 ldi r24, 0x00 ; 0 b86: 10 d0 rcall .+32 ; 0xba8 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:59 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:59 USART0_BAUD = USART::calk_baud_khz(_xclk); b88: 80 91 18 60 lds r24, 0x6018 ; 0x806018 <_xclk> b8c: 90 91 19 60 lds r25, 0x6019 ; 0x806019 <_xclk+0x1> b90: b0 df rcall .-160 ; 0xaf2 b92: 80 93 08 08 sts 0x0808, r24 ; 0x800808 <__TEXT_REGION_LENGTH__+0x7f0808> b96: 90 93 09 08 sts 0x0809, r25 ; 0x800809 <__TEXT_REGION_LENGTH__+0x7f0809> -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:60 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:60 USART::drain(); b9a: 90 e0 ldi r25, 0x00 ; 0 b9c: 80 e0 ldi r24, 0x00 ; 0 @@ -1285,7 +1285,7 @@ send_break(): ba0: 80 e0 ldi r24, 0x00 ; 0 ba2: 08 95 ret recv(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:75 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:75 bool recv (void) { loop_until_bit_is_set(USART0_STATUS, USART_RXCIF_bp); @@ -1293,13 +1293,13 @@ recv(): RXDATA = USART0_RXDATAL; return RXSTAT == 0 || send_break(); ba4: 81 e0 ldi r24, 0x01 ; 1 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:76 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:76 } ba6: 08 95 ret 00000ba8 : send(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:90 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:90 bool is_ack (void) { return recv() && 0x40 == RXDATA; @@ -1308,15 +1308,15 @@ send(): bool send (const uint8_t _data) { ba8: cf 93 push r28 baa: c8 2f mov r28, r24 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:91 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:91 loop_until_bit_is_set(USART0_STATUS, USART_DREIF_bp); bac: 80 91 04 08 lds r24, 0x0804 ; 0x800804 <__TEXT_REGION_LENGTH__+0x7f0804> bb0: 85 ff sbrs r24, 5 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:92 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:92 USART0_TXDATAL = _data; bb2: fc cf rjmp .-8 ; 0xbac bb4: c0 93 02 08 sts 0x0802, r28 ; 0x800802 <__TEXT_REGION_LENGTH__+0x7f0802> -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:93 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:93 return recv() && _data == RXDATA; bb8: c5 df rcall .-118 ; 0xb44 bba: 88 23 and r24, r24 @@ -1325,14 +1325,14 @@ send(): bc0: 81 e0 ldi r24, 0x01 ; 1 bc2: 9c 13 cpse r25, r28 bc4: 80 e0 ldi r24, 0x00 ; 0 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:94 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:94 } bc6: cf 91 pop r28 bc8: 08 95 ret 00000bca : send_bytes(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:96 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:96 bool send_bytes (const uint8_t* _data, size_t _len) { bca: 0f 93 push r16 @@ -1340,7 +1340,7 @@ send_bytes(): bce: cf 93 push r28 bd0: df 93 push r29 bd2: eb 01 movw r28, r22 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:98 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:98 do { if (!send(*_data++)) return false; bd4: 8c 01 movw r16, r24 @@ -1350,18 +1350,18 @@ send_bytes(): bdc: e5 df rcall .-54 ; 0xba8 bde: 88 23 and r24, r24 be0: 11 f0 breq .+4 ; 0xbe6 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:99 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:99 } while (--_len); be2: 21 97 sbiw r28, 0x01 ; 1 be4: c1 f7 brne .-16 ; 0xbd6 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:101 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:101 return true; } be6: df 91 pop r29 be8: cf 91 pop r28 bea: 1f 91 pop r17 bec: 0f 91 pop r16 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:223 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:223 return send_bytes(_key_stat, 2) && recv(); } @@ -1377,7 +1377,7 @@ sys_status(): bf4: 81 e4 ldi r24, 0x41 ; 65 bf6: 90 e6 ldi r25, 0x60 ; 96 bf8: e8 df rcall .-48 ; 0xbca -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:110 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:110 bool recv_byte (uint32_t _dwAddr) { static uint8_t _set_ptr[] = { 0x55, 0x08, 0, 0, 0, 0 /* LDS ADDR3 DATA1 */ @@ -1385,7 +1385,7 @@ sys_status(): _CAPS32(_set_ptr[2])->dword = _dwAddr; return send_bytes(_set_ptr, 5) && recv(); bfa: 81 11 cpse r24, r1 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:224 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:224 } bool sys_status (void) { @@ -1393,7 +1393,7 @@ sys_status(): return send_bytes(_sys_stat, 2) && recv(); } bfc: a3 cf rjmp .-186 ; 0xb44 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:218 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:218 return send_byte(0x1000, _nvmcmd); /* NVMCTRL_CTRLA */ } @@ -1410,7 +1410,7 @@ key_status(): c06: 8f e3 ldi r24, 0x3F ; 63 c08: 90 e6 ldi r25, 0x60 ; 96 c0a: df df rcall .-66 ; 0xbca -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:110 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:110 bool recv_byte (uint32_t _dwAddr) { static uint8_t _set_ptr[] = { 0x55, 0x08, 0, 0, 0, 0 /* LDS ADDR3 DATA1 */ @@ -1419,7 +1419,7 @@ key_status(): return send_bytes(_set_ptr, 5) && recv(); c0c: 81 11 cpse r24, r1 c0e: 9a cf rjmp .-204 ; 0xb44 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:219 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:219 } bool key_status (void) { @@ -1431,7 +1431,7 @@ key_status(): 00000c14 : recv_byte(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:109 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:109 /* The acquired data is stored in RXDATA. */ bool recv_byte (uint32_t _dwAddr) { static uint8_t _set_ptr[] = { @@ -1441,7 +1441,7 @@ recv_byte(): c14: 60 93 03 60 sts 0x6003, r22 ; 0x806003 c18: 70 93 04 60 sts 0x6004, r23 ; 0x806004 c1c: 80 93 05 60 sts 0x6005, r24 ; 0x806005 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:110 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:110 return send_bytes(_set_ptr, 5) && recv(); c20: 90 93 06 60 sts 0x6006, r25 ; 0x806006 c24: 65 e0 ldi r22, 0x05 ; 5 @@ -1450,11 +1450,11 @@ recv_byte(): c2a: 90 e6 ldi r25, 0x60 ; 96 c2c: ce df rcall .-100 ; 0xbca c2e: 81 11 cpse r24, r1 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:111 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:111 } c30: 89 cf rjmp .-238 ; 0xb44 c32: 80 e0 ldi r24, 0x00 ; 0 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:87 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:87 } while (--_len); return true; } @@ -1473,13 +1473,13 @@ is_ack(): c40: 90 34 cpi r25, 0x40 ; 64 c42: 09 f0 breq .+2 ; 0xc46 c44: 80 e0 ldi r24, 0x00 ; 0 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:88 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:88 } c46: 08 95 ret 00000c48 : send_words_block(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:186 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:186 && send_bytes(_set_repeat, sizeof(_set_repeat)) && send_bytes(&packet.out.memData[0], _wLength) && clear_rsd(); @@ -1489,7 +1489,7 @@ send_words_block(): c48: cf 93 push r28 c4a: df 93 push r29 c4c: ea 01 movw r28, r20 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:189 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:189 /* This function works in word units up to 256 words, */ /* and will round down any fractional words. */ _CAPS32(_set_ptr24[2])->dword = _dwAddr; @@ -1497,23 +1497,23 @@ send_words_block(): c52: 70 93 15 60 sts 0x6015, r23 ; 0x806015 c56: 80 93 16 60 sts 0x6016, r24 ; 0x806016 c5a: 90 93 17 60 sts 0x6017, r25 ; 0x806017 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:190 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:190 _set_repeat[2] = (_wLength >> 1) - 1; c5e: ca 01 movw r24, r20 c60: 96 95 lsr r25 c62: 87 95 ror r24 c64: 81 50 subi r24, 0x01 ; 1 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:191 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:191 _set_repeat[4] = 0x65; /* ST PTR++ DATA2 */ c66: 80 93 0f 60 sts 0x600F, r24 ; 0x80600f c6a: 85 e6 ldi r24, 0x65 ; 101 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:192 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:192 return send_bytes(_set_ptr24, 5) c6c: 80 93 11 60 sts 0x6011, r24 ; 0x806011 c70: 65 e0 ldi r22, 0x05 ; 5 c72: 70 e0 ldi r23, 0x00 ; 0 c74: 82 e1 ldi r24, 0x12 ; 18 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:197 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:197 && is_ack() && set_rsd() && send_bytes(_set_repeat, sizeof(_set_repeat)) @@ -1521,7 +1521,7 @@ send_words_block(): && clear_rsd(); c76: 90 e6 ldi r25, 0x60 ; 96 c78: a8 df rcall .-176 ; 0xbca -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:193 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:193 /* and will round down any fractional words. */ _CAPS32(_set_ptr24[2])->dword = _dwAddr; _set_repeat[2] = (_wLength >> 1) - 1; @@ -1531,7 +1531,7 @@ send_words_block(): c7a: 88 23 and r24, r24 c7c: f9 f0 breq .+62 ; 0xcbc c7e: db df rcall .-74 ; 0xc36 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:144 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:144 #endif } @@ -1544,7 +1544,7 @@ set_rsd(): c84: 63 e0 ldi r22, 0x03 ; 3 c86: 70 e0 ldi r23, 0x00 ; 0 c88: 89 e3 ldi r24, 0x39 ; 57 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:194 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:194 _CAPS32(_set_ptr24[2])->dword = _dwAddr; _set_repeat[2] = (_wLength >> 1) - 1; _set_repeat[4] = 0x65; /* ST PTR++ DATA2 */ @@ -1554,7 +1554,7 @@ set_rsd(): c8a: 90 e6 ldi r25, 0x60 ; 96 c8c: 9e df rcall .-196 ; 0xbca send_words_block(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:195 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:195 && send_bytes(_set_repeat, sizeof(_set_repeat)) c8e: 88 23 and r24, r24 c90: a9 f0 breq .+42 ; 0xcbc @@ -1563,7 +1563,7 @@ send_words_block(): c96: 8d e0 ldi r24, 0x0D ; 13 c98: 90 e6 ldi r25, 0x60 ; 96 c9a: 97 df rcall .-210 ; 0xbca -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:196 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:196 && send_bytes(&packet.out.memData[0], _wLength & ~1) c9c: 88 23 and r24, r24 c9e: 71 f0 breq .+28 ; 0xcbc @@ -1573,7 +1573,7 @@ send_words_block(): ca6: 90 e6 ldi r25, 0x60 ; 96 ca8: 90 df rcall .-224 ; 0xbca caa: 88 23 and r24, r24 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:149 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:149 return send_bytes(_set_rsd, 3); } @@ -1585,7 +1585,7 @@ clear_rsd(): cae: 63 e0 ldi r22, 0x03 ; 3 cb0: 70 e0 ldi r23, 0x00 ; 0 cb2: 8c e3 ldi r24, 0x3C ; 60 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:198 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:198 && is_ack() && set_rsd() && send_bytes(_set_repeat, sizeof(_set_repeat)) @@ -1595,7 +1595,7 @@ clear_rsd(): cb4: 90 e6 ldi r25, 0x60 ; 96 send_words_block(): cb6: df 91 pop r29 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:149 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:149 return send_bytes(_set_rsd, 3); } @@ -1606,7 +1606,7 @@ send_words_block(): clear_rsd(): cba: 87 cf rjmp .-242 ; 0xbca send_words_block(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:198 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:198 && is_ack() && set_rsd() && send_bytes(_set_repeat, sizeof(_set_repeat)) @@ -1620,7 +1620,7 @@ send_words_block(): 00000cc4 : send_bytes_block(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:174 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:174 && is_ack() && send_bytes(_set_repeat, sizeof(_set_repeat)) && recv_bytes(&packet.in.data[0], _wLength & ~1); @@ -1630,26 +1630,26 @@ send_bytes_block(): cc4: cf 93 push r28 cc6: df 93 push r29 cc8: ea 01 movw r28, r20 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:175 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:175 _CAPS32(_set_ptr24[2])->dword = _dwAddr; cca: 60 93 14 60 sts 0x6014, r22 ; 0x806014 cce: 70 93 15 60 sts 0x6015, r23 ; 0x806015 cd2: 80 93 16 60 sts 0x6016, r24 ; 0x806016 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:176 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:176 _set_repeat[2] = _wLength - 1; cd6: 90 93 17 60 sts 0x6017, r25 ; 0x806017 cda: 8f ef ldi r24, 0xFF ; 255 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:177 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:177 _set_repeat[4] = 0x64; /* ST PTR++ DATA1 */ cdc: 84 0f add r24, r20 cde: 80 93 0f 60 sts 0x600F, r24 ; 0x80600f -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:178 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:178 return send_bytes(_set_ptr24, 5) ce2: 84 e6 ldi r24, 0x64 ; 100 ce4: 80 93 11 60 sts 0x6011, r24 ; 0x806011 ce8: 65 e0 ldi r22, 0x05 ; 5 cea: 70 e0 ldi r23, 0x00 ; 0 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:183 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:183 && is_ack() && set_rsd() && send_bytes(_set_repeat, sizeof(_set_repeat)) @@ -1657,7 +1657,7 @@ send_bytes_block(): && clear_rsd(); cec: 82 e1 ldi r24, 0x12 ; 18 cee: 90 e6 ldi r25, 0x60 ; 96 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:179 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:179 bool send_bytes_block (uint32_t _dwAddr, size_t _wLength) { _CAPS32(_set_ptr24[2])->dword = _dwAddr; _set_repeat[2] = _wLength - 1; @@ -1667,7 +1667,7 @@ send_bytes_block(): cf0: 6c df rcall .-296 ; 0xbca cf2: 88 23 and r24, r24 cf4: f1 f0 breq .+60 ; 0xd32 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:144 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:144 #endif } @@ -1681,7 +1681,7 @@ set_rsd(): cfc: 63 e0 ldi r22, 0x03 ; 3 cfe: 70 e0 ldi r23, 0x00 ; 0 d00: 89 e3 ldi r24, 0x39 ; 57 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:180 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:180 _CAPS32(_set_ptr24[2])->dword = _dwAddr; _set_repeat[2] = _wLength - 1; _set_repeat[4] = 0x64; /* ST PTR++ DATA1 */ @@ -1689,7 +1689,7 @@ set_rsd(): && is_ack() && set_rsd() d02: 90 e6 ldi r25, 0x60 ; 96 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:181 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:181 && send_bytes(_set_repeat, sizeof(_set_repeat)) d04: 62 df rcall .-316 ; 0xbca send_bytes_block(): @@ -1700,7 +1700,7 @@ send_bytes_block(): d0e: 8d e0 ldi r24, 0x0D ; 13 d10: 90 e6 ldi r25, 0x60 ; 96 d12: 5b df rcall .-330 ; 0xbca -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:182 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:182 && send_bytes(&packet.out.memData[0], _wLength) d14: 88 23 and r24, r24 d16: 69 f0 breq .+26 ; 0xd32 @@ -1709,7 +1709,7 @@ send_bytes_block(): d1c: 90 e6 ldi r25, 0x60 ; 96 d1e: 55 df rcall .-342 ; 0xbca d20: 88 23 and r24, r24 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:149 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:149 return send_bytes(_set_rsd, 3); } @@ -1720,7 +1720,7 @@ send_bytes_block(): clear_rsd(): d24: 63 e0 ldi r22, 0x03 ; 3 d26: 70 e0 ldi r23, 0x00 ; 0 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:184 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:184 && is_ack() && set_rsd() && send_bytes(_set_repeat, sizeof(_set_repeat)) @@ -1728,7 +1728,7 @@ clear_rsd(): && clear_rsd(); } d28: 8c e3 ldi r24, 0x3C ; 60 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:149 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:149 return send_bytes(_set_rsd, 3); } @@ -1738,7 +1738,7 @@ clear_rsd(): d2a: 90 e6 ldi r25, 0x60 ; 96 send_bytes_block(): d2c: df 91 pop r29 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:184 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:184 && is_ack() && set_rsd() && send_bytes(_set_repeat, sizeof(_set_repeat)) @@ -1750,7 +1750,7 @@ clear_rsd(): d30: 4c cf rjmp .-360 ; 0xbca send_bytes_block(): d32: 80 e0 ldi r24, 0x00 ; 0 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:113 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:113 }; _CAPS32(_set_ptr[2])->dword = _dwAddr; return send_bytes(_set_ptr, 5) && recv(); @@ -1758,7 +1758,7 @@ send_bytes_block(): bool send_byte (uint32_t _dwAddr, uint8_t _data) { d34: df 91 pop r29 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:117 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:117 static uint8_t _set_ptr[] = { 0x55, 0x48, 0, 0, 0, 0 /* STS ADDR3 DATA1 */ }; @@ -1772,18 +1772,18 @@ send_byte(): d3c: c4 2f mov r28, r20 d3e: 60 93 09 60 sts 0x6009, r22 ; 0x806009 d42: 70 93 0a 60 sts 0x600A, r23 ; 0x80600a -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:118 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:118 return send_bytes(_set_ptr, 5) d46: 80 93 0b 60 sts 0x600B, r24 ; 0x80600b d4a: 90 93 0c 60 sts 0x600C, r25 ; 0x80600c d4e: 65 e0 ldi r22, 0x05 ; 5 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:121 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:121 && is_ack() && send(_data) && is_ack(); d50: 70 e0 ldi r23, 0x00 ; 0 d52: 87 e0 ldi r24, 0x07 ; 7 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:119 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:119 static uint8_t _set_ptr[] = { 0x55, 0x48, 0, 0, 0, 0 /* STS ADDR3 DATA1 */ }; @@ -1794,18 +1794,18 @@ send_byte(): d56: 39 df rcall .-398 ; 0xbca d58: 88 23 and r24, r24 d5a: 49 f0 breq .+18 ; 0xd6e -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:120 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:120 && send(_data) d5c: 6c df rcall .-296 ; 0xc36 d5e: 88 23 and r24, r24 d60: 31 f0 breq .+12 ; 0xd6e d62: 8c 2f mov r24, r28 d64: 21 df rcall .-446 ; 0xba8 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:122 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:122 && is_ack(); } d66: 88 23 and r24, r24 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:121 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:121 }; _CAPS32(_set_ptr[2])->dword = _dwAddr; return send_bytes(_set_ptr, 5) @@ -1814,12 +1814,12 @@ send_byte(): && is_ack(); d68: 11 f0 breq .+4 ; 0xd6e d6a: cf 91 pop r28 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:122 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:122 } d6c: 64 cf rjmp .-312 ; 0xc36 d6e: 80 e0 ldi r24, 0x00 ; 0 d70: cf 91 pop r28 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:213 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:213 /* This slow process is due to USERROW and BOOTROW. */ return send_bytes_data(_dwAddr, &packet.out.memData[0], _wLength); } @@ -1835,7 +1835,7 @@ nvm_ctrl(): d78: 70 e1 ldi r23, 0x10 ; 16 d7a: 80 e0 ldi r24, 0x00 ; 0 d7c: 90 e0 ldi r25, 0x00 ; 0 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:207 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:207 if (!send_byte(_dwAddr++, *_data++)) return false; } return true; @@ -1858,7 +1858,7 @@ send_bytes_block_slow(): d92: d0 e6 ldi r29, 0x60 ; 96 d94: 8a 01 movw r16, r20 d96: 02 53 subi r16, 0x32 ; 50 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:201 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:201 && send_bytes(&packet.out.memData[0], _wLength & ~1) && clear_rsd(); } @@ -1869,7 +1869,7 @@ send_bytes_block_slow(): send_bytes_data(): d9a: c0 17 cp r28, r16 d9c: d1 07 cpc r29, r17 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:202 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:202 if (!send_byte(_dwAddr++, *_data++)) return false; d9e: c1 f0 breq .+48 ; 0xdd0 da0: 6b 01 movw r12, r22 @@ -1883,7 +1883,7 @@ send_bytes_data(): db0: c4 df rcall .-120 ; 0xd3a db2: 21 96 adiw r28, 0x01 ; 1 db4: 81 11 cpse r24, r1 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:210 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:210 } bool send_bytes_block_slow (uint32_t _dwAddr, size_t _wLength) { @@ -1900,7 +1900,7 @@ send_bytes_block_slow(): dc2: ef 90 pop r14 dc4: df 90 pop r13 dc6: cf 90 pop r12 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:202 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:202 && clear_rsd(); } @@ -1910,12 +1910,12 @@ send_bytes_block_slow(): dc8: 08 95 ret dca: c7 01 movw r24, r14 dcc: b6 01 movw r22, r12 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:204 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:204 } return true; dce: e5 cf rjmp .-54 ; 0xd9a dd0: 81 e0 ldi r24, 0x01 ; 1 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:78 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:78 RXSTAT = USART0_RXDATAH ^ 0x80; RXDATA = USART0_RXDATAL; return RXSTAT == 0 || send_break(); @@ -1931,30 +1931,30 @@ recv_bytes(): dd8: cf 93 push r28 dda: df 93 push r29 ddc: eb 01 movw r28, r22 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:80 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:80 do { if (!recv()) return false; dde: 8c 01 movw r16, r24 de0: b1 de rcall .-670 ; 0xb44 de2: 88 23 and r24, r24 de4: 31 f0 breq .+12 ; 0xdf2 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:81 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:81 *_data++ = RXDATA; de6: 9f b3 in r25, 0x1f ; 31 de8: f8 01 movw r30, r16 dea: 91 93 st Z+, r25 dec: 8f 01 movw r16, r30 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:82 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:82 } while (--_len); dee: 21 97 sbiw r28, 0x01 ; 1 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:84 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:84 return true; } df0: b9 f7 brne .-18 ; 0xde0 df2: df 91 pop r29 df4: cf 91 pop r28 df6: 1f 91 pop r17 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:162 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:162 && is_ack() && send_bytes(_set_repeat, sizeof(_set_repeat)) && recv_bytes(&packet.in.data[0], _wLength); @@ -1967,7 +1967,7 @@ recv_bytes(): 00000dfc : recv_words_block(): dfc: cf 93 push r28 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:165 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:165 /* This function works in word units up to 256 words, */ /* and will round down any fractional words. */ _CAPS32(_set_ptr24[2])->dword = _dwAddr; @@ -1976,29 +1976,29 @@ recv_words_block(): e02: 60 93 14 60 sts 0x6014, r22 ; 0x806014 e06: 70 93 15 60 sts 0x6015, r23 ; 0x806015 e0a: 80 93 16 60 sts 0x6016, r24 ; 0x806016 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:166 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:166 _set_repeat[2] = (_wLength >> 1) - 1; e0e: 90 93 17 60 sts 0x6017, r25 ; 0x806017 e12: ca 01 movw r24, r20 e14: 96 95 lsr r25 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:167 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:167 _set_repeat[4] = 0x25; /* LD PTR++ DATA2 */ e16: 87 95 ror r24 e18: 81 50 subi r24, 0x01 ; 1 e1a: 80 93 0f 60 sts 0x600F, r24 ; 0x80600f -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:168 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:168 return send_bytes(_set_ptr24, 5) e1e: 85 e2 ldi r24, 0x25 ; 37 e20: 80 93 11 60 sts 0x6011, r24 ; 0x806011 e24: 65 e0 ldi r22, 0x05 ; 5 e26: 70 e0 ldi r23, 0x00 ; 0 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:171 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:171 && is_ack() && send_bytes(_set_repeat, sizeof(_set_repeat)) && recv_bytes(&packet.in.data[0], _wLength & ~1); e28: 82 e1 ldi r24, 0x12 ; 18 e2a: 90 e6 ldi r25, 0x60 ; 96 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:169 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:169 /* and will round down any fractional words. */ _CAPS32(_set_ptr24[2])->dword = _dwAddr; _set_repeat[2] = (_wLength >> 1) - 1; @@ -2009,7 +2009,7 @@ recv_words_block(): e2e: 88 23 and r24, r24 e30: 89 f0 breq .+34 ; 0xe54 e32: 01 df rcall .-510 ; 0xc36 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:170 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:170 && send_bytes(_set_repeat, sizeof(_set_repeat)) e34: 88 23 and r24, r24 e36: 71 f0 breq .+28 ; 0xe54 @@ -2018,16 +2018,16 @@ recv_words_block(): e3c: 8d e0 ldi r24, 0x0D ; 13 e3e: 90 e6 ldi r25, 0x60 ; 96 e40: c4 de rcall .-632 ; 0xbca -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:171 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:171 && recv_bytes(&packet.in.data[0], _wLength & ~1); e42: 88 23 and r24, r24 e44: 39 f0 breq .+14 ; 0xe54 e46: be 01 movw r22, r28 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:172 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:172 } e48: 6e 7f andi r22, 0xFE ; 254 e4a: 85 ed ldi r24, 0xD5 ; 213 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:171 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:171 _set_repeat[2] = (_wLength >> 1) - 1; _set_repeat[4] = 0x25; /* LD PTR++ DATA2 */ return send_bytes(_set_ptr24, 5) @@ -2036,12 +2036,12 @@ recv_words_block(): && recv_bytes(&packet.in.data[0], _wLength & ~1); e4c: 90 e6 ldi r25, 0x60 ; 96 e4e: df 91 pop r29 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:172 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:172 } e50: cf 91 pop r28 e52: c0 cf rjmp .-128 ; 0xdd4 e54: 80 e0 ldi r24, 0x00 ; 0 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:152 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:152 bool clear_rsd (void) { const static uint8_t _clear_rsd[] = {0x55, 0xC2, 0x05}; return send_bytes(_clear_rsd, 3); @@ -2054,35 +2054,35 @@ recv_words_block(): 00000e5c : recv_bytes_block(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:153 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:153 _CAPS32(_set_ptr24[2])->dword = _dwAddr; e5c: cf 93 push r28 e5e: df 93 push r29 e60: ea 01 movw r28, r20 e62: 60 93 14 60 sts 0x6014, r22 ; 0x806014 e66: 70 93 15 60 sts 0x6015, r23 ; 0x806015 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:154 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:154 _set_repeat[2] = _wLength - 1; e6a: 80 93 16 60 sts 0x6016, r24 ; 0x806016 e6e: 90 93 17 60 sts 0x6017, r25 ; 0x806017 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:155 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:155 _set_repeat[4] = 0x24; /* LD PTR++ DATA1 */ e72: 8f ef ldi r24, 0xFF ; 255 e74: 84 0f add r24, r20 e76: 80 93 0f 60 sts 0x600F, r24 ; 0x80600f -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:156 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:156 return send_bytes(_set_ptr24, 5) e7a: 84 e2 ldi r24, 0x24 ; 36 e7c: 80 93 11 60 sts 0x6011, r24 ; 0x806011 e80: 65 e0 ldi r22, 0x05 ; 5 e82: 70 e0 ldi r23, 0x00 ; 0 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:159 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:159 && is_ack() && send_bytes(_set_repeat, sizeof(_set_repeat)) && recv_bytes(&packet.in.data[0], _wLength); e84: 82 e1 ldi r24, 0x12 ; 18 e86: 90 e6 ldi r25, 0x60 ; 96 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:157 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:157 bool recv_bytes_block (uint32_t _dwAddr, size_t _wLength) { _CAPS32(_set_ptr24[2])->dword = _dwAddr; _set_repeat[2] = _wLength - 1; @@ -2093,7 +2093,7 @@ recv_bytes_block(): e8a: 88 23 and r24, r24 e8c: 81 f0 breq .+32 ; 0xeae e8e: d3 de rcall .-602 ; 0xc36 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:158 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:158 && send_bytes(_set_repeat, sizeof(_set_repeat)) e90: 88 23 and r24, r24 e92: 69 f0 breq .+26 ; 0xeae @@ -2103,15 +2103,15 @@ recv_bytes_block(): e9a: 90 e6 ldi r25, 0x60 ; 96 e9c: 96 de rcall .-724 ; 0xbca e9e: 88 23 and r24, r24 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:159 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:159 && recv_bytes(&packet.in.data[0], _wLength); ea0: 31 f0 breq .+12 ; 0xeae ea2: be 01 movw r22, r28 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:160 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:160 } ea4: 85 ed ldi r24, 0xD5 ; 213 ea6: 90 e6 ldi r25, 0x60 ; 96 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:159 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:159 _set_repeat[2] = _wLength - 1; _set_repeat[4] = 0x24; /* LD PTR++ DATA1 */ return send_bytes(_set_ptr24, 5) @@ -2120,13 +2120,13 @@ recv_bytes_block(): && recv_bytes(&packet.in.data[0], _wLength); ea8: df 91 pop r29 eaa: cf 91 pop r28 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:160 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:160 } eac: 93 cf rjmp .-218 ; 0xdd4 eae: 80 e0 ldi r24, 0x00 ; 0 eb0: df 91 pop r29 eb2: cf 91 pop r28 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv4.cpp:119 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv4.cpp:119 size_t prog_init (void) { return nvm_ctrl_change(0x00); @@ -2138,14 +2138,14 @@ recv_bytes_block(): 00000eb6 : read_memory(): eb6: cf 93 push r28 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv4.cpp:123 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv4.cpp:123 uint8_t m_type = packet.out.bMType; uint32_t _dwAddr = packet.out.dwAddr; size_t _wLength = packet.out.dwLength; if (bit_is_set(PGCONF, PGCONF_PROG_bp)) { eb8: df 93 push r29 eba: e9 99 sbic 0x1d, 1 ; 29 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv4.cpp:136 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv4.cpp:136 _dwAddr = PROD_SIG + ((uint8_t)_dwAddr & 0x7F); } if (UPDI::recv_bytes_block(_dwAddr, _wLength)) @@ -2154,11 +2154,11 @@ read_memory(): return 0; ebc: 05 c0 rjmp .+10 ; 0xec8 ebe: 90 e0 ldi r25, 0x00 ; 0 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv4.cpp:137 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv4.cpp:137 } ec0: 80 e0 ldi r24, 0x00 ; 0 ec2: df 91 pop r29 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv4.cpp:120 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv4.cpp:120 size_t prog_init (void) { return nvm_ctrl_change(0x00); } @@ -2167,31 +2167,31 @@ read_memory(): uint8_t m_type = packet.out.bMType; ec4: cf 91 pop r28 ec6: 08 95 ret -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv4.cpp:121 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv4.cpp:121 uint32_t _dwAddr = packet.out.dwAddr; ec8: 20 91 d5 60 lds r18, 0x60D5 ; 0x8060d5 ecc: 60 91 d6 60 lds r22, 0x60D6 ; 0x8060d6 ed0: 70 91 d7 60 lds r23, 0x60D7 ; 0x8060d7 ed4: 80 91 d8 60 lds r24, 0x60D8 ; 0x8060d8 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv4.cpp:122 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv4.cpp:122 size_t _wLength = packet.out.dwLength; ed8: 90 91 d9 60 lds r25, 0x60D9 ; 0x8060d9 edc: c0 91 da 60 lds r28, 0x60DA ; 0x8060da -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv4.cpp:124 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv4.cpp:124 if (bit_is_set(PGCONF, PGCONF_PROG_bp)) { if (m_type == 0xB0) { ee0: d0 91 db 60 lds r29, 0x60DB ; 0x8060db -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv4.cpp:126 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv4.cpp:126 /* MTYPE_FLASH_PAGE (PROGMEM) */ _dwAddr += PROG_START; ee4: 20 3b cpi r18, 0xB0 ; 176 ee6: 49 f4 brne .+18 ; 0xefa -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv4.cpp:127 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv4.cpp:127 return UPDI::recv_words_block(_dwAddr, _wLength) ? _wLength + 1 : 0; ee8: 80 58 subi r24, 0x80 ; 128 eea: 9f 4f sbci r25, 0xFF ; 255 eec: ae 01 movw r20, r28 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv4.cpp:133 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv4.cpp:133 } if (m_type == 0xB4) { /* MTYPE_SIGN_JTAG */ @@ -2200,12 +2200,12 @@ read_memory(): if (UPDI::recv_bytes_block(_dwAddr, _wLength)) eee: 86 df rcall .-244 ; 0xdfc ef0: 88 23 and r24, r24 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv4.cpp:134 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv4.cpp:134 return _wLength + 1; ef2: 29 f3 breq .-54 ; 0xebe ef4: ce 01 movw r24, r28 ef6: 01 96 adiw r24, 0x01 ; 1 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv4.cpp:129 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv4.cpp:129 if (m_type == 0xB0) { /* MTYPE_FLASH_PAGE (PROGMEM) */ _dwAddr += PROG_START; @@ -2214,7 +2214,7 @@ read_memory(): if (m_type == 0xB4) { ef8: e4 cf rjmp .-56 ; 0xec2 efa: 24 3b cpi r18, 0xB4 ; 180 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv4.cpp:131 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv4.cpp:131 /* MTYPE_SIGN_JTAG */ _dwAddr = PROD_SIG + ((uint8_t)_dwAddr & 0x7F); efc: 41 f4 brne .+16 ; 0xf0e @@ -2224,7 +2224,7 @@ read_memory(): f04: 7f 4e sbci r23, 0xEF ; 239 f06: 07 2e mov r0, r23 f08: 00 0c add r0, r0 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv4.cpp:133 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv4.cpp:133 } if (UPDI::recv_bytes_block(_dwAddr, _wLength)) f0a: 88 0b sbc r24, r24 @@ -2239,7 +2239,7 @@ _ZN3NVM2V511read_memoryEv(): 00000f16 : read_memory(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv2.cpp:116 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv2.cpp:116 size_t prog_init (void) { return nvm_ctrl_change(0x00); @@ -2248,13 +2248,13 @@ read_memory(): size_t read_memory (void) { f16: cf 93 push r28 f18: df 93 push r29 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv2.cpp:120 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv2.cpp:120 uint8_t m_type = packet.out.bMType; uint32_t _dwAddr = packet.out.dwAddr; size_t _wLength = packet.out.dwLength; if (bit_is_set(PGCONF, PGCONF_PROG_bp)) { f1a: e9 99 sbic 0x1d, 1 ; 29 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv2.cpp:133 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv2.cpp:133 _dwAddr = PROD_SIG + ((uint8_t)_dwAddr & 0x7F); } if (UPDI::recv_bytes_block(_dwAddr, _wLength)) @@ -2262,12 +2262,12 @@ read_memory(): } return 0; f1c: 05 c0 rjmp .+10 ; 0xf28 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv2.cpp:134 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv2.cpp:134 } f1e: 90 e0 ldi r25, 0x00 ; 0 f20: 80 e0 ldi r24, 0x00 ; 0 f22: df 91 pop r29 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv2.cpp:117 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv2.cpp:117 size_t prog_init (void) { return nvm_ctrl_change(0x00); } @@ -2276,31 +2276,31 @@ read_memory(): uint8_t m_type = packet.out.bMType; f24: cf 91 pop r28 f26: 08 95 ret -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv2.cpp:118 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv2.cpp:118 uint32_t _dwAddr = packet.out.dwAddr; f28: 20 91 d5 60 lds r18, 0x60D5 ; 0x8060d5 f2c: 60 91 d6 60 lds r22, 0x60D6 ; 0x8060d6 f30: 70 91 d7 60 lds r23, 0x60D7 ; 0x8060d7 f34: 80 91 d8 60 lds r24, 0x60D8 ; 0x8060d8 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv2.cpp:119 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv2.cpp:119 size_t _wLength = packet.out.dwLength; f38: 90 91 d9 60 lds r25, 0x60D9 ; 0x8060d9 f3c: c0 91 da 60 lds r28, 0x60DA ; 0x8060da -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv2.cpp:121 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv2.cpp:121 if (bit_is_set(PGCONF, PGCONF_PROG_bp)) { if (m_type == 0xB0) { f40: d0 91 db 60 lds r29, 0x60DB ; 0x8060db -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv2.cpp:123 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv2.cpp:123 /* MTYPE_FLASH_PAGE (PROGMEM) */ _dwAddr += PROG_START; f44: 20 3b cpi r18, 0xB0 ; 176 f46: 49 f4 brne .+18 ; 0xf5a -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv2.cpp:124 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv2.cpp:124 return UPDI::recv_words_block(_dwAddr, _wLength) ? _wLength + 1 : 0; f48: 80 58 subi r24, 0x80 ; 128 f4a: 9f 4f sbci r25, 0xFF ; 255 f4c: ae 01 movw r20, r28 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv2.cpp:130 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv2.cpp:130 } if (m_type == 0xB4) { /* MTYPE_SIGN_JTAG */ @@ -2309,12 +2309,12 @@ read_memory(): if (UPDI::recv_bytes_block(_dwAddr, _wLength)) f4e: 56 df rcall .-340 ; 0xdfc f50: 88 23 and r24, r24 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv2.cpp:131 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv2.cpp:131 return _wLength + 1; f52: 29 f3 breq .-54 ; 0xf1e f54: ce 01 movw r24, r28 f56: 01 96 adiw r24, 0x01 ; 1 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv2.cpp:126 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv2.cpp:126 if (m_type == 0xB0) { /* MTYPE_FLASH_PAGE (PROGMEM) */ _dwAddr += PROG_START; @@ -2323,7 +2323,7 @@ read_memory(): if (m_type == 0xB4) { f58: e4 cf rjmp .-56 ; 0xf22 f5a: 24 3b cpi r18, 0xB4 ; 180 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv2.cpp:128 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv2.cpp:128 /* MTYPE_SIGN_JTAG */ _dwAddr = PROD_SIG + ((uint8_t)_dwAddr & 0x7F); f5c: 39 f4 brne .+14 ; 0xf6c @@ -2332,7 +2332,7 @@ read_memory(): f62: 7f 5e subi r23, 0xEF ; 239 f64: 07 2e mov r0, r23 f66: 00 0c add r0, r0 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv2.cpp:130 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv2.cpp:130 } if (UPDI::recv_bytes_block(_dwAddr, _wLength)) f68: 88 0b sbc r24, r24 @@ -2347,7 +2347,7 @@ _ZN3NVM2V311read_memoryEv(): 00000f74 : read_memory(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv0.cpp:114 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv0.cpp:114 UPDI::nvm_ctrl(0x04); /* NVM_CMD_PBC */ nvm_wait(); return UPDI::nvm_ctrl(0x00); @@ -2356,25 +2356,25 @@ read_memory(): size_t read_memory (void) { f74: cf 93 push r28 f76: df 93 push r29 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv0.cpp:115 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv0.cpp:115 uint8_t m_type = packet.out.bMType; f78: 80 91 d5 60 lds r24, 0x60D5 ; 0x8060d5 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv0.cpp:116 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv0.cpp:116 uint16_t _wAddr = packet.out.dwAddr; f7c: 60 91 d6 60 lds r22, 0x60D6 ; 0x8060d6 f80: 30 91 d7 60 lds r19, 0x60D7 ; 0x8060d7 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv0.cpp:118 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv0.cpp:118 size_t _wLength = packet.out.dwLength; if (m_type == 0xB4) { f84: 84 3b cpi r24, 0xB4 ; 180 f86: 51 f4 brne .+20 ; 0xf9c -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv0.cpp:120 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv0.cpp:120 /* MTYPE_SIGN_JTAG */ _wAddr = PROD_SIG + ((uint8_t)_wAddr & 0x7F); f88: 6f 77 andi r22, 0x7F ; 127 f8a: 70 e0 ldi r23, 0x00 ; 0 f8c: 7f 5e subi r23, 0xEF ; 239 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv0.cpp:127 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv0.cpp:127 else if (m_type == 0xB0) { /* MTYPE_FLASH_PAGE (PROGMEM) */ _wAddr += Device_Descriptor.UPDI.prog_base; @@ -2383,17 +2383,17 @@ read_memory(): && UPDI::recv_bytes_block(_wAddr, _wLength)) f8e: e9 99 sbic 0x1d, 1 ; 29 f90: 0f c0 rjmp .+30 ; 0xfb0 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv0.cpp:129 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv0.cpp:129 return _wLength + 1; return 0; f92: 90 e0 ldi r25, 0x00 ; 0 f94: 80 e0 ldi r24, 0x00 ; 0 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv0.cpp:130 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv0.cpp:130 } f96: df 91 pop r29 f98: cf 91 pop r28 f9a: 08 95 ret -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv0.cpp:116 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv0.cpp:116 return UPDI::nvm_ctrl(0x00); } @@ -2401,7 +2401,7 @@ read_memory(): uint8_t m_type = packet.out.bMType; uint16_t _wAddr = packet.out.dwAddr; f9c: 73 2f mov r23, r19 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv0.cpp:122 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv0.cpp:122 size_t _wLength = packet.out.dwLength; if (m_type == 0xB4) { /* MTYPE_SIGN_JTAG */ @@ -2409,7 +2409,7 @@ read_memory(): } else if (m_type == 0xB0) { f9e: 80 3b cpi r24, 0xB0 ; 176 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv0.cpp:124 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv0.cpp:124 /* MTYPE_FLASH_PAGE (PROGMEM) */ _wAddr += Device_Descriptor.UPDI.prog_base; fa0: b1 f7 brne .-20 ; 0xf8e @@ -2417,7 +2417,7 @@ read_memory(): fa6: 90 91 9f 60 lds r25, 0x609F ; 0x80609f faa: 68 0f add r22, r24 fac: 79 1f adc r23, r25 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv0.cpp:117 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv0.cpp:117 } size_t read_memory (void) { @@ -2427,7 +2427,7 @@ read_memory(): fae: ef cf rjmp .-34 ; 0xf8e fb0: c0 91 da 60 lds r28, 0x60DA ; 0x8060da fb4: d0 91 db 60 lds r29, 0x60DB ; 0x8060db -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv0.cpp:127 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv0.cpp:127 else if (m_type == 0xB0) { /* MTYPE_FLASH_PAGE (PROGMEM) */ _wAddr += Device_Descriptor.UPDI.prog_base; @@ -2438,12 +2438,12 @@ read_memory(): fba: 80 e0 ldi r24, 0x00 ; 0 fbc: ae 01 movw r20, r28 fbe: 4e df rcall .-356 ; 0xe5c -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv0.cpp:128 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv0.cpp:128 return _wLength + 1; fc0: 88 23 and r24, r24 fc2: 39 f3 breq .-50 ; 0xf92 fc4: ce 01 movw r24, r28 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:50 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:50 loop_until_bit_is_clear(TCLK_IN, TCLK_bp); } } @@ -2456,28 +2456,28 @@ read_memory(): 00000fca : recv(): fca: 80 91 04 08 lds r24, 0x0804 ; 0x800804 <__TEXT_REGION_LENGTH__+0x7f0804> -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:51 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:51 RXSTAT = USART0_RXDATAH ^ 0x80; fce: 87 ff sbrs r24, 7 fd0: fc cf rjmp .-8 ; 0xfca fd2: 80 91 01 08 lds r24, 0x0801 ; 0x800801 <__TEXT_REGION_LENGTH__+0x7f0801> -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:52 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:52 RXDATA = USART0_RXDATAL; fd6: 80 58 subi r24, 0x80 ; 128 fd8: 8e bb out 0x1e, r24 ; 30 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:53 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:53 return RXSTAT == 0; fda: 80 91 00 08 lds r24, 0x0800 ; 0x800800 <__TEXT_REGION_LENGTH__+0x7f0800> fde: 8f bb out 0x1f, r24 ; 31 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:54 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:54 } fe0: 9e b3 in r25, 0x1e ; 30 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:56 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:56 bool send (const uint8_t _data) { fe2: 81 e0 ldi r24, 0x01 ; 1 fe4: 91 11 cpse r25, r1 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:57 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:57 loop_until_bit_is_set(USART0_STATUS, USART_DREIF_bp); fe6: 80 e0 ldi r24, 0x00 ; 0 fe8: 08 95 ret @@ -2485,21 +2485,21 @@ recv(): 00000fea : send(): fea: cf 93 push r28 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:58 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:58 USART0_TXDATAL = _data; fec: c8 2f mov r28, r24 fee: 80 91 04 08 lds r24, 0x0804 ; 0x800804 <__TEXT_REGION_LENGTH__+0x7f0804> -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:59 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:59 return (recv() && _data == RXDATA); ff2: 85 ff sbrs r24, 5 ff4: fc cf rjmp .-8 ; 0xfee ff6: c0 93 02 08 sts 0x0802, r28 ; 0x800802 <__TEXT_REGION_LENGTH__+0x7f0802> ffa: e7 df rcall .-50 ; 0xfca -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:60 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:60 } ffc: 88 23 and r24, r24 ffe: 21 f0 breq .+8 ; 0x1008 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:99 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:99 bool nvm_wait (void) { while (get_sin(0x62) && RXDATA); /* NVMCSR_REG: IO=0x32 */ return true; @@ -2507,7 +2507,7 @@ send(): bool nvm_ctrl (const uint8_t _nvmcmd) { 1000: 9f b3 in r25, 0x1f ; 31 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:73 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:73 bool set_sstcs (const uint8_t _addr, const uint8_t _data) { return (send(0xC0 | _addr) && send(_data)); } @@ -2518,7 +2518,7 @@ send(): 1004: 9c 13 cpse r25, r28 1006: 80 e0 ldi r24, 0x00 ; 0 1008: cf 91 pop r28 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:69 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:69 bool get_sldcs (const uint8_t _addr) { return (send(0x80 | _addr) && recv()); } @@ -2532,7 +2532,7 @@ nvm_ctrl(): 100c: cf 93 push r28 100e: c8 2f mov r28, r24 set_sout(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:101 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:101 return true; } @@ -2542,7 +2542,7 @@ set_sout(): 1010: 83 ef ldi r24, 0xF3 ; 243 1012: eb df rcall .-42 ; 0xfea 1014: 88 23 and r24, r24 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:77 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:77 bool set_sout (const uint8_t _addr, const uint8_t _data) { return (send(0x90 | _addr) && send(_data)); } @@ -2556,7 +2556,7 @@ nvm_ctrl(): set_sout(): 101c: e6 cf rjmp .-52 ; 0xfea nvm_ctrl(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:65 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:65 } /*** TPI control and CSS area command ***/ @@ -2570,7 +2570,7 @@ nvm_ctrl(): 00001024 : get_sin(): 1024: 82 e7 ldi r24, 0x72 ; 114 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:95 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:95 } /*** NVM control ****/ @@ -2580,12 +2580,12 @@ get_sin(): 1026: e1 df rcall .-62 ; 0xfea 1028: 88 23 and r24, r24 102a: 31 f0 breq .+12 ; 0x1038 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:97 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:97 return true; } 102c: ce df rcall .-100 ; 0xfca 102e: 88 23 and r24, r24 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:88 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:88 bool get_sld (void) { return (send(0x24) && recv()); @@ -2595,7 +2595,7 @@ get_sin(): 1030: 19 f0 breq .+6 ; 0x1038 nvm_wait(): 1032: 8f b3 in r24, 0x1f ; 31 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:89 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:89 return (send(0x64) && send(_data)); 1034: 81 11 cpse r24, r1 1036: f6 cf rjmp .-20 ; 0x1024 @@ -2605,7 +2605,7 @@ nvm_wait(): 0000103c : set_sst(): 103c: cf 93 push r28 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:69 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:69 bool get_sldcs (const uint8_t _addr) { return (send(0x80 | _addr) && recv()); } @@ -2613,7 +2613,7 @@ set_sst(): bool set_sstcs (const uint8_t _addr, const uint8_t _data) { return (send(0xC0 | _addr) && send(_data)); 103e: c8 2f mov r28, r24 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:90 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:90 return (send(0x24) && recv()); } @@ -2621,7 +2621,7 @@ set_sst(): return (send(0x64) && send(_data)); } 1040: 84 e6 ldi r24, 0x64 ; 100 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:69 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:69 bool get_sldcs (const uint8_t _addr) { return (send(0x80 | _addr) && recv()); } @@ -2630,7 +2630,7 @@ set_sst(): return (send(0xC0 | _addr) && send(_data)); 1042: d3 df rcall .-90 ; 0xfea 1044: 88 23 and r24, r24 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:90 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:90 return (send(0x24) && recv()); } @@ -2640,7 +2640,7 @@ set_sst(): 1046: 19 f0 breq .+6 ; 0x104e 1048: 8c 2f mov r24, r28 104a: cf 91 pop r28 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:85 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:85 bool set_sstpr (const uint16_t _addr) { return (send(0x68) && send(_addr & 0xFF) && send(0x69) && send(_addr >> 8)); } @@ -2654,7 +2654,7 @@ set_sst(): 00001054 : get_sld(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:65 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:65 } /*** TPI control and CSS area command ***/ @@ -2663,7 +2663,7 @@ get_sld(): return (send(0x80 | _addr) && recv()); 1054: 84 e2 ldi r24, 0x24 ; 36 1056: c9 df rcall .-110 ; 0xfea -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:86 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:86 return (send(0x68) && send(_addr & 0xFF) && send(0x69) && send(_addr >> 8)); } @@ -2672,7 +2672,7 @@ get_sld(): } 1058: 81 11 cpse r24, r1 105a: b7 cf rjmp .-146 ; 0xfca -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:80 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:80 bool get_sin (const uint8_t _addr) { return (send(0x10 | _addr) && recv()); @@ -2686,7 +2686,7 @@ get_sld(): set_sstpr(): 1060: cf 93 push r28 1062: df 93 push r29 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:81 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:81 return (send(0x68) && send(_addr & 0xFF) && send(0x69) && send(_addr >> 8)); 1064: d8 2f mov r29, r24 1066: c9 2f mov r28, r25 @@ -2704,11 +2704,11 @@ set_sstpr(): 107e: 21 f0 breq .+8 ; 0x1088 1080: 8c 2f mov r24, r28 1082: df 91 pop r29 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:82 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:82 } 1084: cf 91 pop r28 1086: b1 cf rjmp .-158 ; 0xfea -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:81 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:81 bool get_sin (const uint8_t _addr) { return (send(0x10 | _addr) && recv()); } @@ -2717,7 +2717,7 @@ set_sstpr(): return (send(0x68) && send(_addr & 0xFF) && send(0x69) && send(_addr >> 8)); 1088: 80 e0 ldi r24, 0x00 ; 0 108a: df 91 pop r29 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:82 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:82 } 108c: cf 91 pop r28 108e: 08 95 ret @@ -2726,7 +2726,7 @@ set_sstpr(): idle_clock(): 1090: 30 e0 ldi r19, 0x00 ; 0 1092: 20 e0 ldi r18, 0x00 ; 0 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:43 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:43 const static uint8_t nvmprog_key[] = { 0xE0, 0xFF, 0x88, 0xD8, 0xCD, 0x45, 0xAB, 0x89, 0x12 }; @@ -2734,18 +2734,18 @@ idle_clock(): void idle_clock (const size_t clock) { for (size_t i = 0; i < clock; i++) { 1094: 40 91 08 04 lds r20, 0x0408 ; 0x800408 <__TEXT_REGION_LENGTH__+0x7f0408> -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:44 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:44 loop_until_bit_is_set(TCLK_IN, TCLK_bp); 1098: 42 ff sbrs r20, 2 109a: fc cf rjmp .-8 ; 0x1094 109c: 40 91 08 04 lds r20, 0x0408 ; 0x800408 <__TEXT_REGION_LENGTH__+0x7f0408> -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:45 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:45 loop_until_bit_is_clear(TCLK_IN, TCLK_bp); 10a0: 42 fd sbrc r20, 2 10a2: fc cf rjmp .-8 ; 0x109c 10a4: 2f 5f subi r18, 0xFF ; 255 10a6: 3f 4f sbci r19, 0xFF ; 255 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:43 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:43 const static uint8_t nvmprog_key[] = { 0xE0, 0xFF, 0x88, 0xD8, 0xCD, 0x45, 0xAB, 0x89, 0x12 }; @@ -2760,13 +2760,13 @@ idle_clock(): 000010b0 : is_boundary_flash_page(): 10b0: cf 92 push r12 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:47 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:47 loop_until_bit_is_set(TCLK_IN, TCLK_bp); loop_until_bit_is_clear(TCLK_IN, TCLK_bp); } } 10b2: df 92 push r13 -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:315 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:315 * Flash memory boundary check * * True when a page area address different from the previous time is detected. @@ -2778,21 +2778,21 @@ is_boundary_flash_page(): 10b8: ab 01 movw r20, r22 10ba: bc 01 movw r22, r24 10bc: 80 91 cb 60 lds r24, 0x60CB ; 0x8060cb -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:316 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:316 uint32_t _mask = ~(((uint16_t)Device_Descriptor.UPDI.flash_page_size_msb << 8) 10c0: 28 2f mov r18, r24 10c2: 30 e0 ldi r19, 0x00 ; 0 10c4: 32 2f mov r19, r18 10c6: 22 27 eor r18, r18 10c8: 80 91 a0 60 lds r24, 0x60A0 ; 0x8060a0 -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:317 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:317 + Device_Descriptor.UPDI.flash_page_size - 1); 10cc: 82 0f add r24, r18 10ce: 93 2f mov r25, r19 10d0: 91 1d adc r25, r1 10d2: 91 95 neg r25 10d4: 81 95 neg r24 -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:316 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:316 * * True when a page area address different from the previous time is detected. * Indicates the need to erase a page in FLASH/USERROW/BOOTROW of the AVR-Dx series. @@ -2804,14 +2804,14 @@ is_boundary_flash_page(): 10da: a0 e0 ldi r26, 0x00 ; 0 10dc: 84 23 and r24, r20 10de: 95 23 and r25, r21 -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:318 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:318 + Device_Descriptor.UPDI.flash_page_size - 1); uint32_t _after_page = _dwAddr & _mask; 10e0: a6 23 and r26, r22 10e2: b7 23 and r27, r23 10e4: 21 e0 ldi r18, 0x01 ; 1 10e6: c0 90 ea 62 lds r12, 0x62EA ; 0x8062ea <_before_page> -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:319 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:319 bool _result = _before_page != _after_page; 10ea: d0 90 eb 62 lds r13, 0x62EB ; 0x8062eb <_before_page+0x1> 10ee: e0 90 ec 62 lds r14, 0x62EC ; 0x8062ec <_before_page+0x2> @@ -2823,13 +2823,13 @@ is_boundary_flash_page(): 10fe: 09 f4 brne .+2 ; 0x1102 1100: 20 e0 ldi r18, 0x00 ; 0 1102: 80 93 ea 62 sts 0x62EA, r24 ; 0x8062ea <_before_page> -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:320 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:320 _before_page = _after_page; 1106: 90 93 eb 62 sts 0x62EB, r25 ; 0x8062eb <_before_page+0x1> 110a: a0 93 ec 62 sts 0x62EC, r26 ; 0x8062ec <_before_page+0x2> 110e: b0 93 ed 62 sts 0x62ED, r27 ; 0x8062ed <_before_page+0x3> 1112: 82 2f mov r24, r18 -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:322 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:322 return _result; } 1114: ff 90 pop r15 @@ -2840,7 +2840,7 @@ is_boundary_flash_page(): 0000111e : LED_TCB1(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:198 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:198 _led_mode = 1; } } @@ -2849,26 +2849,26 @@ LED_TCB1(): if (_led_mode != _mode) { 111e: 80 91 85 60 lds r24, 0x6085 ; 0x806085 <_led_mode> 1122: 82 30 cpi r24, 0x02 ; 2 -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:199 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:199 TCA0_SPLIT_CTRLA = 0; 1124: 81 f0 breq .+32 ; 0x1146 1126: 10 92 00 0a sts 0x0A00, r1 ; 0x800a00 <__TEXT_REGION_LENGTH__+0x7f0a00> -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:200 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:200 TCB1_CNTL = 0; 112a: 10 92 1a 0b sts 0x0B1A, r1 ; 0x800b1a <__TEXT_REGION_LENGTH__+0x7f0b1a> -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:201 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:201 TCB1_CCMP = _ccmp; 112e: 89 ea ldi r24, 0xA9 ; 169 1130: 95 e0 ldi r25, 0x05 ; 5 1132: 80 93 1c 0b sts 0x0B1C, r24 ; 0x800b1c <__TEXT_REGION_LENGTH__+0x7f0b1c> -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:202 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:202 TCB1_CTRLA = TCB_RUNSTDBY_bm | TCB_ENABLE_bm | TCB_CLKSEL_EVENT_gc; 1136: 90 93 1d 0b sts 0x0B1D, r25 ; 0x800b1d <__TEXT_REGION_LENGTH__+0x7f0b1d> 113a: 8f e4 ldi r24, 0x4F ; 79 -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:203 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:203 _led_mode = _mode; 113c: 80 93 10 0b sts 0x0B10, r24 ; 0x800b10 <__TEXT_REGION_LENGTH__+0x7f0b10> -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:216 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:216 * Restarting TCBn in PWM8 mode may cause the duty * cycle of TCBn_WO to invert. Solution unknown. * This function is affected. @@ -2876,7 +2876,7 @@ LED_TCB1(): LED_TCB1(2, TCB1_FLASH); } 1140: 82 e0 ldi r24, 0x02 ; 2 -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:188 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:188 * LED operation switching */ @@ -2890,29 +2890,29 @@ LED_Flash(): 00001148 : LED_HeartBeat(): 1148: 80 91 85 60 lds r24, 0x6085 ; 0x806085 <_led_mode> -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:189 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:189 TCA0_SPLIT_CTRLA = TCA_SPLIT_ENABLE_bm | TCA_SPLIT_CLKSEL_DIV1024_gc; 114c: 81 30 cpi r24, 0x01 ; 1 -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:190 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:190 TCB1_CNTL = 0; 114e: 89 f0 breq .+34 ; 0x1172 1150: 8f e0 ldi r24, 0x0F ; 15 -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:191 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:191 TCB1_CCMP = TCB1_HBEAT; 1152: 80 93 00 0a sts 0x0A00, r24 ; 0x800a00 <__TEXT_REGION_LENGTH__+0x7f0a00> 1156: 10 92 1a 0b sts 0x0B1A, r1 ; 0x800b1a <__TEXT_REGION_LENGTH__+0x7f0b1a> -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:192 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:192 TCB1_CTRLA = TCB_RUNSTDBY_bm | TCB_ENABLE_bm | TCB_CLKSEL_TCA0_gc; 115a: 84 ec ldi r24, 0xC4 ; 196 115c: 92 e6 ldi r25, 0x62 ; 98 -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:193 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:193 _led_mode = 1; 115e: 80 93 1c 0b sts 0x0B1C, r24 ; 0x800b1c <__TEXT_REGION_LENGTH__+0x7f0b1c> -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:195 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:195 } } 1162: 90 93 1d 0b sts 0x0B1D, r25 ; 0x800b1d <__TEXT_REGION_LENGTH__+0x7f0b1d> -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv3.cpp:55 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv3.cpp:55 constexpr auto NVM_STATUS = 0x1006; constexpr auto PROD_SIG = 0x1100; constexpr auto PROG_START = 0x800000; @@ -2927,13 +2927,13 @@ LED_HeartBeat(): 00001174 : nvm_wait(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv3.cpp:56 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv3.cpp:56 return RXDATA; 1174: 66 e0 ldi r22, 0x06 ; 6 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv3.cpp:57 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv3.cpp:57 } 1176: 70 e1 ldi r23, 0x10 ; 16 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv3.cpp:73 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv3.cpp:73 D2PRINTF(" NVM_V3_FLPERW=%06lX\r\n", _dwAddr); return ( nvm_ctrl_change(0x00) @@ -2946,7 +2946,7 @@ nvm_wait(): 117e: 8f b3 in r24, 0x1f ; 31 1180: 83 70 andi r24, 0x03 ; 3 1182: c1 f7 brne .-16 ; 0x1174 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv3.cpp:59 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv3.cpp:59 uint8_t nvm_wait (void) { do { UPDI::recv_byte(NVM_STATUS); } while (RXDATA & 3); return RXDATA; @@ -2958,11 +2958,11 @@ nvm_wait(): 00001188 : _ZN3NVM2V317write_words_flashEmj.part.1(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv3.cpp:60 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv3.cpp:60 nvm_wait(); 1188: f5 df rcall .-22 ; 0x1174 118a: 98 2f mov r25, r24 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv3.cpp:61 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv3.cpp:61 if (UPDI::recv_byte(NVM_CTRL) && RXDATA == _nvmcmd) return true; 118c: 93 77 andi r25, 0x73 ; 115 118e: 81 e0 ldi r24, 0x01 ; 1 @@ -2978,14 +2978,14 @@ nvm_ctrl_change(): 119c: 60 e0 ldi r22, 0x00 ; 0 119e: 70 e1 ldi r23, 0x10 ; 16 11a0: 80 e0 ldi r24, 0x00 ; 0 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv3.cpp:65 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv3.cpp:65 if (!UPDI::nvm_ctrl(0x00)) return false; if (0 != _nvmcmd) return UPDI::nvm_ctrl(_nvmcmd); return true; } 11a2: 90 e0 ldi r25, 0x00 ; 0 11a4: 37 dd rcall .-1426 ; 0xc14 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv3.cpp:62 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv3.cpp:62 } bool nvm_ctrl_change (uint8_t _nvmcmd) { @@ -2997,7 +2997,7 @@ nvm_ctrl_change(): 11aa: 8f b3 in r24, 0x1f ; 31 11ac: 8c 13 cpse r24, r28 11ae: 03 c0 rjmp .+6 ; 0x11b6 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv2.cpp:65 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv2.cpp:65 bool nvm_ctrl_change (uint8_t _nvmcmd) { nvm_wait(); @@ -3012,7 +3012,7 @@ nvm_ctrl_change(): } 11b6: 80 e0 ldi r24, 0x00 ; 0 11b8: dd dd rcall .-1094 ; 0xd74 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv4.cpp:116 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv4.cpp:116 && nvm_ctrl_change(0x00) ); } @@ -3022,10 +3022,10 @@ nvm_ctrl_change(): 11ba: 88 23 and r24, r24 11bc: d1 f3 breq .-12 ; 0x11b2 11be: cc 23 and r28, r28 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv4.cpp:117 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv4.cpp:117 } 11c0: b9 f3 breq .-18 ; 0x11b0 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv4.cpp:78 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv4.cpp:78 D2PRINTF(" NVM_V4_FLPER=%06lX\r\n", _dwAddr); return ( nvm_ctrl_change(0x08) /* NVM_V4_CMD_FLPER */ @@ -3038,7 +3038,7 @@ nvm_ctrl_change(): 000011c8 : prog_init(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv3.cpp:98 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv3.cpp:98 && (nvm_wait() & 0x73) == 0 ); } @@ -3047,7 +3047,7 @@ prog_init(): nvm_ctrl_change(0x0F); /* NVM_V3_CMD_FLPBCLR */ 11c8: 80 e0 ldi r24, 0x00 ; 0 11ca: e5 df rcall .-54 ; 0x1196 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv3.cpp:99 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv3.cpp:99 nvm_ctrl_change(0x1F); /* NVM_V3_CMD_EEPBCLR */ 11cc: 90 e0 ldi r25, 0x00 ; 0 11ce: 08 95 ret @@ -3055,7 +3055,7 @@ prog_init(): 000011d0 : _ZN3NVM2V416erase_flash_pageEm.part.1(): 11d0: 80 e0 ldi r24, 0x00 ; 0 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv3.cpp:100 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv3.cpp:100 return nvm_ctrl_change(0x00); 11d2: e1 cf rjmp .-62 ; 0x1196 @@ -3063,12 +3063,12 @@ _ZN3NVM2V416erase_flash_pageEm.part.1(): prog_init(): 11d4: 8f e0 ldi r24, 0x0F ; 15 11d6: df df rcall .-66 ; 0x1196 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv3.cpp:101 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv3.cpp:101 } 11d8: 8f e1 ldi r24, 0x1F ; 31 11da: dd df rcall .-70 ; 0x1196 11dc: 80 e0 ldi r24, 0x00 ; 0 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv3.cpp:77 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv3.cpp:77 && nvm_ctrl_change(0x05) /* NVM_V3_CMD_FLPERW */ && (nvm_wait() & 0x73) == 0 ); @@ -3090,19 +3090,19 @@ write_bytes_flash(): 11ea: ef 92 push r14 11ec: ff 92 push r15 11ee: cf 93 push r28 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv3.cpp:80 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv3.cpp:80 D2PRINTF(" NVM_V3_FLPERW=%06lX\r\n", _dwAddr); return ( nvm_ctrl_change(0x00) 11f0: df 93 push r29 11f2: 6b 01 movw r12, r22 11f4: 7c 01 movw r14, r24 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv3.cpp:83 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv3.cpp:83 && UPDI::send_bytes_block(_dwAddr, _wLength) && nvm_ctrl_change(0x05) /* NVM_V3_CMD_FLPERW */ && (nvm_wait() & 0x73) == 0 11f6: ea 01 movw r28, r20 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv3.cpp:81 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv3.cpp:81 bool write_bytes_flash (uint32_t _dwAddr, size_t _wLength) { D2PRINTF(" NVM_V3_FLPERW=%06lX\r\n", _dwAddr); @@ -3115,13 +3115,13 @@ write_bytes_flash(): 11fe: 89 f0 breq .+34 ; 0x1222 1200: ae 01 movw r20, r28 1202: c7 01 movw r24, r14 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv3.cpp:82 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv3.cpp:82 && nvm_ctrl_change(0x05) /* NVM_V3_CMD_FLPERW */ 1204: b6 01 movw r22, r12 1206: 5e dd rcall .-1348 ; 0xcc4 1208: 88 23 and r24, r24 120a: 59 f0 breq .+22 ; 0x1222 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv3.cpp:85 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv3.cpp:85 && (nvm_wait() & 0x73) == 0 ); } @@ -3139,7 +3139,7 @@ write_bytes_flash(): 1222: 80 e0 ldi r24, 0x00 ; 0 1224: df 91 pop r29 1226: cf 91 pop r28 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv3.cpp:67 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv3.cpp:67 if (!UPDI::nvm_ctrl(0x00)) return false; if (0 != _nvmcmd) return UPDI::nvm_ctrl(_nvmcmd); return true; @@ -3155,19 +3155,19 @@ write_bytes_flash(): 00001232 : write_words_flash(): 1232: cf 92 push r12 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv3.cpp:70 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv3.cpp:70 D2PRINTF(" NVM_V3_FLPERW=%06lX\r\n", _dwAddr); return ( nvm_ctrl_change(0x00) 1234: df 92 push r13 1236: ef 92 push r14 1238: ff 92 push r15 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv3.cpp:73 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv3.cpp:73 && UPDI::send_words_block(_dwAddr, _wLength) && nvm_ctrl_change(0x05) /* NVM_V3_CMD_FLPERW */ && (nvm_wait() & 0x73) == 0 123a: cf 93 push r28 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv3.cpp:71 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv3.cpp:71 bool write_words_flash (uint32_t _dwAddr, size_t _wLength) { D2PRINTF(" NVM_V3_FLPERW=%06lX\r\n", _dwAddr); @@ -3180,14 +3180,14 @@ write_words_flash(): 1242: ea 01 movw r28, r20 1244: 80 e0 ldi r24, 0x00 ; 0 1246: a7 df rcall .-178 ; 0x1196 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv3.cpp:72 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv3.cpp:72 && nvm_ctrl_change(0x05) /* NVM_V3_CMD_FLPERW */ 1248: 88 23 and r24, r24 124a: 89 f0 breq .+34 ; 0x126e 124c: ae 01 movw r20, r28 124e: c7 01 movw r24, r14 1250: b6 01 movw r22, r12 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv3.cpp:75 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv3.cpp:75 && (nvm_wait() & 0x73) == 0 ); } @@ -3204,7 +3204,7 @@ write_words_flash(): 1266: ef 90 pop r14 1268: df 90 pop r13 126a: cf 90 pop r12 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv4.cpp:72 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv4.cpp:72 if (!UPDI::nvm_ctrl(0x00)) return false; if (0 != _nvmcmd) return UPDI::nvm_ctrl(_nvmcmd); return true; @@ -3217,13 +3217,13 @@ write_words_flash(): 1272: cf 91 pop r28 1274: ff 90 pop r15 1276: ef 90 pop r14 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv4.cpp:75 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv4.cpp:75 D2PRINTF(" NVM_V4_FLPER=%06lX\r\n", _dwAddr); return ( nvm_ctrl_change(0x08) /* NVM_V4_CMD_FLPER */ 1278: df 90 pop r13 127a: cf 90 pop r12 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv4.cpp:78 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv4.cpp:78 && UPDI::send_byte(_dwAddr, 0xFF) && (nvm_wait() & 0x73) == 0 && nvm_ctrl_change(0x00) @@ -3232,7 +3232,7 @@ write_words_flash(): 0000127e : erase_flash_page(): 127e: cf 92 push r12 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv4.cpp:76 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv4.cpp:76 bool erase_flash_page (uint32_t _dwAddr) { D2PRINTF(" NVM_V4_FLPER=%06lX\r\n", _dwAddr); @@ -3244,13 +3244,13 @@ erase_flash_page(): 1284: ff 92 push r15 1286: 6b 01 movw r12, r22 1288: 7c 01 movw r14, r24 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv4.cpp:77 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv4.cpp:77 && (nvm_wait() & 0x73) == 0 128a: 88 e0 ldi r24, 0x08 ; 8 128c: 84 df rcall .-248 ; 0x1196 128e: 88 23 and r24, r24 1290: 71 f0 breq .+28 ; 0x12ae -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv4.cpp:80 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv4.cpp:80 && nvm_ctrl_change(0x00) ); } @@ -3265,7 +3265,7 @@ erase_flash_page(): 12a2: 29 f4 brne .+10 ; 0x12ae 12a4: ff 90 pop r15 12a6: ef 90 pop r14 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv0.cpp:62 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv0.cpp:62 constexpr auto NVM_STATUS = 0x1002; constexpr auto NVM_DATA = 0x1006; constexpr auto PROD_SIG = 0x1100; @@ -3284,13 +3284,13 @@ erase_flash_page(): 000012ba : nvm_wait(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv0.cpp:63 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv0.cpp:63 return RXDATA; 12ba: 62 e0 ldi r22, 0x02 ; 2 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv0.cpp:64 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv0.cpp:64 } 12bc: 70 e1 ldi r23, 0x10 ; 16 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv0.cpp:108 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv0.cpp:108 && (nvm_wait() & 7) == 0 ); } @@ -3299,16 +3299,16 @@ nvm_wait(): nvm_wait(); 12be: 80 e0 ldi r24, 0x00 ; 0 12c0: 90 e0 ldi r25, 0x00 ; 0 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv0.cpp:109 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv0.cpp:109 UPDI::nvm_ctrl(0x04); /* NVM_CMD_PBC */ 12c2: a8 dc rcall .-1712 ; 0xc14 12c4: 8f b3 in r24, 0x1f ; 31 12c6: 83 70 andi r24, 0x03 ; 3 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv0.cpp:110 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv0.cpp:110 nvm_wait(); 12c8: c1 f7 brne .-16 ; 0x12ba 12ca: 8f b3 in r24, 0x1f ; 31 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv0.cpp:111 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv0.cpp:111 return UPDI::nvm_ctrl(0x00); 12cc: 08 95 ret @@ -3316,11 +3316,11 @@ nvm_wait(): prog_init(): 12ce: f5 df rcall .-22 ; 0x12ba 12d0: 84 e0 ldi r24, 0x04 ; 4 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv0.cpp:112 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv0.cpp:112 } 12d2: 50 dd rcall .-1376 ; 0xd74 12d4: f2 df rcall .-28 ; 0x12ba -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv2.cpp:61 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv2.cpp:61 uint8_t nvm_wait (void) { do { UPDI::recv_byte(NVM_STATUS); } while (RXDATA & 3); return RXDATA; @@ -3329,14 +3329,14 @@ prog_init(): bool nvm_ctrl_change (uint8_t _nvmcmd) { 12d6: 80 e0 ldi r24, 0x00 ; 0 12d8: 4d dd rcall .-1382 ; 0xd74 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv2.cpp:62 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv2.cpp:62 nvm_wait(); 12da: 90 e0 ldi r25, 0x00 ; 0 12dc: 08 95 ret 000012de : nvm_ctrl_change(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv2.cpp:63 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv2.cpp:63 if (UPDI::recv_byte(NVM_CTRL) && RXDATA == _nvmcmd) return true; 12de: cf 93 push r28 12e0: c8 2f mov r28, r24 @@ -3349,13 +3349,13 @@ nvm_ctrl_change(): 12ee: 88 23 and r24, r24 12f0: 31 f0 breq .+12 ; 0x12fe 12f2: 8f b3 in r24, 0x1f ; 31 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv2.cpp:67 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv2.cpp:67 if (!UPDI::nvm_ctrl(0x00)) return false; if (0 != _nvmcmd) return UPDI::nvm_ctrl(_nvmcmd); return true; } 12f4: 8c 13 cpse r24, r28 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv2.cpp:64 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv2.cpp:64 } bool nvm_ctrl_change (uint8_t _nvmcmd) { @@ -3366,16 +3366,16 @@ nvm_ctrl_change(): 12f8: 81 e0 ldi r24, 0x01 ; 1 12fa: cf 91 pop r28 12fc: 08 95 ret -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv2.cpp:65 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv2.cpp:65 if (0 != _nvmcmd) return UPDI::nvm_ctrl(_nvmcmd); 12fe: 80 e0 ldi r24, 0x00 ; 0 1300: 39 dd rcall .-1422 ; 0xd74 1302: 88 23 and r24, r24 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv2.cpp:67 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv2.cpp:67 return true; } 1304: d1 f3 breq .-12 ; 0x12fa -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv2.cpp:65 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv2.cpp:65 bool nvm_ctrl_change (uint8_t _nvmcmd) { nvm_wait(); @@ -3384,7 +3384,7 @@ nvm_ctrl_change(): if (0 != _nvmcmd) return UPDI::nvm_ctrl(_nvmcmd); 1306: cc 23 and r28, r28 1308: b9 f3 breq .-18 ; 0x12f8 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv2.cpp:113 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv2.cpp:113 && nvm_ctrl_change(0x00) ); } @@ -3397,11 +3397,11 @@ nvm_ctrl_change(): 00001310 : prog_init(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv2.cpp:114 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv2.cpp:114 } 1310: 80 e0 ldi r24, 0x00 ; 0 1312: e5 df rcall .-54 ; 0x12de -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv2.cpp:75 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv2.cpp:75 D2PRINTF(" NVM_V2_FLPER=%06lX\r\n", _dwAddr); return ( nvm_ctrl_change(0x08) /* NVM_V2_CMD_FLPER */ @@ -3414,7 +3414,7 @@ prog_init(): 00001318 : _ZN3NVM2V216erase_flash_pageEm.part.1(): 1318: 80 e0 ldi r24, 0x00 ; 0 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv2.cpp:69 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv2.cpp:69 if (!UPDI::nvm_ctrl(0x00)) return false; if (0 != _nvmcmd) return UPDI::nvm_ctrl(_nvmcmd); return true; @@ -3429,20 +3429,20 @@ erase_flash_page(): 131e: df 92 push r13 1320: ef 92 push r14 1322: ff 92 push r15 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv2.cpp:72 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv2.cpp:72 D2PRINTF(" NVM_V2_FLPER=%06lX\r\n", _dwAddr); return ( nvm_ctrl_change(0x08) /* NVM_V2_CMD_FLPER */ 1324: 6b 01 movw r12, r22 1326: 7c 01 movw r14, r24 1328: 88 e0 ldi r24, 0x08 ; 8 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv2.cpp:75 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv2.cpp:75 && UPDI::send_byte(_dwAddr, 0xFF) && (nvm_wait() & 0x73) == 0 && nvm_ctrl_change(0x00) 132a: d9 df rcall .-78 ; 0x12de 132c: 88 23 and r24, r24 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv2.cpp:73 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv2.cpp:73 bool erase_flash_page (uint32_t _dwAddr) { D2PRINTF(" NVM_V2_FLPER=%06lX\r\n", _dwAddr); @@ -3455,13 +3455,13 @@ erase_flash_page(): 1334: b6 01 movw r22, r12 1336: 01 dd rcall .-1534 ; 0xd3a 1338: 88 23 and r24, r24 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv2.cpp:74 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv2.cpp:74 && (nvm_wait() & 0x73) == 0 133a: 41 f0 breq .+16 ; 0x134c 133c: be df rcall .-132 ; 0x12ba 133e: 83 77 andi r24, 0x73 ; 115 1340: 29 f4 brne .+10 ; 0x134c -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv2.cpp:77 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv2.cpp:77 && nvm_ctrl_change(0x00) ); } @@ -3774,7 +3774,7 @@ Print& Print::printf (const PGM_t *_format, ...) { va_start(_ap, _format); vfprintf_P(&_fp, (const char *) _format, _ap); 148e: 01 96 adiw r24, 0x01 ; 1 - 1490: 0e 94 c2 21 call 0x4384 ; 0x4384 + 1490: 0e 94 c0 21 call 0x4380 ; 0x4380 1494: 8d e8 ldi r24, 0x8D ; 141 1496: 90 e6 ldi r25, 0x60 ; 96 1498: 2e 96 adiw r28, 0x0e ; 14 @@ -3795,7 +3795,7 @@ change_vcp(): 14aa: ef 92 push r14 14ac: ff 92 push r15 14ae: 0f 93 push r16 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usart.cpp:115 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usart.cpp:115 } } @@ -3812,7 +3812,7 @@ change_vcp(): 14be: c0 90 86 60 lds r12, 0x6086 ; 0x806086 <_set_line_encoding> 14c2: d0 90 87 60 lds r13, 0x6087 ; 0x806087 <_set_line_encoding+0x1> 14c6: e0 90 88 60 lds r14, 0x6088 ; 0x806088 <_set_line_encoding+0x2> -/Users/askn/Collaborator/UPDI4AVR-USB/src/usart.cpp:121 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usart.cpp:121 #ifdef CONFIG_VCP_TXD_ODM uint8_t _ctrlb = USART_RXEN_bm | USART_TXEN_bm | USART_ODME_bm; #else @@ -3826,7 +3826,7 @@ change_vcp(): 14d4: f1 04 cpc r15, r1 14d6: d9 f0 breq .+54 ; 0x150e 14d8: 60 e0 ldi r22, 0x00 ; 0 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usart.cpp:123 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usart.cpp:123 /* If the BAUD value is small, select double speed mode. */ if (_baud) _baud = (((F_CPU * 8L) / _baud) + 1) >> 1; 14da: 78 e6 ldi r23, 0x68 ; 104 @@ -3834,7 +3834,7 @@ change_vcp(): 14de: 99 e0 ldi r25, 0x09 ; 9 14e0: a7 01 movw r20, r14 14e2: 96 01 movw r18, r12 - 14e4: 0e 94 84 24 call 0x4908 ; 0x4908 <__udivmodsi4> + 14e4: 0e 94 82 24 call 0x4904 ; 0x4904 <__udivmodsi4> 14e8: 69 01 movw r12, r18 14ea: 7a 01 movw r14, r20 14ec: 8f ef ldi r24, 0xFF ; 255 @@ -3851,7 +3851,7 @@ change_vcp(): 1502: 90 e6 ldi r25, 0x60 ; 96 1504: c9 16 cp r12, r25 1506: d1 04 cpc r13, r1 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usart.cpp:117 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usart.cpp:117 /*** Activates VCP operation. ***/ /* Detailed parameters are specified in SET_LINE_ENCODING. */ @@ -3860,7 +3860,7 @@ change_vcp(): uint8_t _ctrlb = USART_RXEN_bm | USART_TXEN_bm | USART_ODME_bm; 1508: e1 04 cpc r14, r1 150a: f1 04 cpc r15, r1 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usart.cpp:124 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usart.cpp:124 uint8_t _ctrlb = USART_RXEN_bm | USART_TXEN_bm; #endif uint32_t _baud = _set_line_encoding.dwDTERate; @@ -3872,17 +3872,17 @@ change_vcp(): 1510: dd 1c adc r13, r13 1512: ee 1c adc r14, r14 1514: ff 1c adc r15, r15 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usart.cpp:125 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usart.cpp:125 _baud <<= 1; 1516: 2a ec ldi r18, 0xCA ; 202 1518: b2 2e mov r11, r18 151a: 1f 92 push r1 151c: bf 92 push r11 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usart.cpp:126 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usart.cpp:126 _ctrlb |= USART_RXMODE_CLK2X_gc; 151e: ff 92 push r15 1520: ef 92 push r14 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usart.cpp:128 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usart.cpp:128 } D1PRINTF(" BAUD=%08lX:%02X\r\n", _baud, _ctrlb); 1522: df 92 push r13 @@ -3900,7 +3900,7 @@ change_vcp(): 153a: de bf out 0x3e, r29 ; 62 153c: d7 01 movw r26, r14 153e: c6 01 movw r24, r12 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usart.cpp:129 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usart.cpp:129 if (_baud < 0x10000UL && _baud >= 64) { 1540: 80 54 subi r24, 0x40 ; 64 1542: 91 09 sbc r25, r1 @@ -3914,10 +3914,10 @@ change_vcp(): 1552: 58 c0 rjmp .+176 ; 0x1604 1554: 90 91 8c 60 lds r25, 0x608C ; 0x80608c <_set_line_encoding+0x6> 1558: 95 50 subi r25, 0x05 ; 5 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usart.cpp:130 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usart.cpp:130 uint8_t _bits = _set_line_encoding.bDataBits - 5; 155a: 40 91 2c 60 lds r20, 0x602C ; 0x80602c -/Users/askn/Collaborator/UPDI4AVR-USB/src/usart.cpp:131 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usart.cpp:131 uint8_t _ctrlc = (uint8_t[]){ 155e: 50 91 2d 60 lds r21, 0x602D ; 0x80602d 1562: 60 91 2e 60 lds r22, 0x602E ; 0x80602e @@ -3927,7 +3927,7 @@ change_vcp(): 156e: 6b 83 std Y+3, r22 ; 0x03 1570: 7c 83 std Y+4, r23 ; 0x04 1572: e0 91 8b 60 lds r30, 0x608B ; 0x80608b <_set_line_encoding+0x5> -/Users/askn/Collaborator/UPDI4AVR-USB/src/usart.cpp:133 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usart.cpp:133 USART_PMODE_DISABLED_gc, USART_PMODE_ODD_gc, USART_PMODE_EVEN_gc, USART_PMODE_DISABLED_gc }[_set_line_encoding.bParityType & 3] 1576: e3 70 andi r30, 0x03 ; 3 @@ -3935,7 +3935,7 @@ change_vcp(): 157a: fd 2f mov r31, r29 157c: f1 1d adc r31, r1 157e: 21 81 ldd r18, Z+1 ; 0x01 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usart.cpp:134 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usart.cpp:134 + _set_line_encoding.bCharFormat ? USART_SBMODE_2BIT_gc : USART_SBMODE_1BIT_gc; 1580: 80 91 8a 60 lds r24, 0x608A ; 0x80608a <_set_line_encoding+0x4> 1584: 28 0f add r18, r24 @@ -3944,11 +3944,11 @@ change_vcp(): 158a: 80 e0 ldi r24, 0x00 ; 0 158c: 23 2b or r18, r19 158e: 09 f0 breq .+2 ; 0x1592 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usart.cpp:135 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usart.cpp:135 if (_bits < 4) { 1590: 88 e0 ldi r24, 0x08 ; 8 1592: 94 30 cpi r25, 0x04 ; 4 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usart.cpp:151 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usart.cpp:151 } else { _ctrlc += USART_CHSIZE_8BIT_gc; @@ -3964,28 +3964,28 @@ static __inline__ uint8_t __iCliRetVal(void) { cli(); 1596: 89 0f add r24, r25 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usart.cpp:152 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usart.cpp:152 PORTMUX_USARTROUTEA = PORTMUX_USART_VCP; 1598: 9f b7 in r25, 0x3f ; 63 __iCliRetVal(): 159a: f8 94 cli change_vcp(): 159c: 22 e1 ldi r18, 0x12 ; 18 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usart.cpp:153 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usart.cpp:153 USART0_STATUS = USART_DREIF_bm; 159e: 20 93 e2 05 sts 0x05E2, r18 ; 0x8005e2 <__TEXT_REGION_LENGTH__+0x7f05e2> 15a2: 20 e2 ldi r18, 0x20 ; 32 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usart.cpp:154 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usart.cpp:154 USART0_BAUD = (uint16_t)_baud; 15a4: 20 93 04 08 sts 0x0804, r18 ; 0x800804 <__TEXT_REGION_LENGTH__+0x7f0804> 15a8: c0 92 08 08 sts 0x0808, r12 ; 0x800808 <__TEXT_REGION_LENGTH__+0x7f0808> -/Users/askn/Collaborator/UPDI4AVR-USB/src/usart.cpp:155 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usart.cpp:155 USART0_CTRLC = _ctrlc; 15ac: d0 92 09 08 sts 0x0809, r13 ; 0x800809 <__TEXT_REGION_LENGTH__+0x7f0809> -/Users/askn/Collaborator/UPDI4AVR-USB/src/usart.cpp:156 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usart.cpp:156 USART0_CTRLA = USART_RXCIF_bm; 15b0: 80 93 07 08 sts 0x0807, r24 ; 0x800807 <__TEXT_REGION_LENGTH__+0x7f0807> -/Users/askn/Collaborator/UPDI4AVR-USB/src/usart.cpp:157 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usart.cpp:157 USART0_CTRLB = _ctrlb; 15b4: 80 e8 ldi r24, 0x80 ; 128 15b6: 80 93 05 08 sts 0x0805, r24 ; 0x800805 <__TEXT_REGION_LENGTH__+0x7f0805> @@ -3997,7 +3997,7 @@ static __inline__ void __iRestore(const uint8_t *__s) { SREG = *__s; 15ba: b0 92 06 08 sts 0x0806, r11 ; 0x800806 <__TEXT_REGION_LENGTH__+0x7f0806> -/Users/askn/Collaborator/UPDI4AVR-USB/src/usart.cpp:160 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usart.cpp:160 bit_set(GPCONF, GPCONF_VCP_bp); } D1PRINTF(" UART=VCP\r\n"); @@ -4011,13 +4011,13 @@ change_vcp(): 15c8: 8f 93 push r24 15ca: 8d e8 ldi r24, 0x8D ; 141 15cc: 90 e6 ldi r25, 0x60 ; 96 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usart.cpp:161 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usart.cpp:161 drain(32768); 15ce: 9f 93 push r25 15d0: 8f 93 push r24 15d2: 44 df rcall .-376 ; 0x145c 15d4: 80 e0 ldi r24, 0x00 ; 0 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usart.cpp:165 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usart.cpp:165 } else { /* If outside the supported range, the USART will remain in the BREAK state. */ @@ -4026,12 +4026,12 @@ change_vcp(): 15d8: 81 da rcall .-2814 ; 0xadc 15da: 0f 90 pop r0 15dc: 0f 90 pop r0 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usart.cpp:167 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usart.cpp:167 } if (bit_is_set(GPCONF, GPCONF_USB_bp)) 15de: 0f 90 pop r0 15e0: 0f 90 pop r0 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usart.cpp:171 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usart.cpp:171 SYS::LED_HeartBeat(); else SYS::LED_Flash(); @@ -4048,7 +4048,7 @@ change_vcp(): 15f4: ff 90 pop r15 15f6: ef 90 pop r14 15f8: df 90 pop r13 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usart.cpp:168 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usart.cpp:168 else { /* If outside the supported range, the USART will remain in the BREAK state. */ D1PRINTF(" UART=FAIL\r\n"); @@ -4057,7 +4057,7 @@ change_vcp(): SYS::LED_HeartBeat(); 15fa: cf 90 pop r12 15fc: bf 90 pop r11 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usart.cpp:148 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usart.cpp:148 usart_receiver = &USB::vcp_receiver_9bit; usart_transmitter = &USB::vcp_transceiver_9bit; #else @@ -4066,7 +4066,7 @@ change_vcp(): _ctrlc += USART_CHSIZE_8BIT_gc; 15fe: a4 cd rjmp .-1208 ; 0x1148 1600: 8d 5f subi r24, 0xFD ; 253 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usart.cpp:165 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usart.cpp:165 D1PRINTF(" UART=VCP\r\n"); drain(32768); } @@ -4082,7 +4082,7 @@ change_vcp(): 160e: 0f 93 push r16 1610: 25 df rcall .-438 ; 0x145c 1612: e3 cf rjmp .-58 ; 0x15da -/Users/askn/Collaborator/UPDI4AVR-USB/src/usart.cpp:171 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usart.cpp:171 } if (bit_is_set(GPCONF, GPCONF_USB_bp)) SYS::LED_HeartBeat(); @@ -4101,7 +4101,7 @@ change_vcp(): 1626: df 90 pop r13 1628: cf 90 pop r12 162a: bf 90 pop r11 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usart.cpp:170 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usart.cpp:170 D1PRINTF(" UART=FAIL\r\n"); } if (bit_is_set(GPCONF, GPCONF_USB_bp)) @@ -4113,7 +4113,7 @@ change_vcp(): 0000162e : break_off(): 162e: e1 9b sbis 0x1c, 1 ; 28 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:388 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:388 bit_set(GPCONF, GPCONF_BRK_bp); } @@ -4124,11 +4124,11 @@ break_off(): 1632: e3 9b sbis 0x1c, 3 ; 28 1634: 02 c0 rjmp .+4 ; 0x163a 1636: 36 df rcall .-404 ; 0x14a4 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:389 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:389 USART::change_vcp(); 1638: e4 9a sbi 0x1c, 4 ; 28 163a: e3 98 cbi 0x1c, 3 ; 28 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:392 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:392 bit_set(GPCONF, GPCONF_OPN_bp); } bit_clear(GPCONF, GPCONF_BRK_bp); @@ -4136,10 +4136,10 @@ break_off(): 0000163e : set_nvmprog_key(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:393 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:393 } 163e: cf 93 push r28 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:226 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:226 bool sys_status (void) { const static uint8_t _sys_stat[] = {0x55, 0x8B}; return send_bytes(_sys_stat, 2) && recv(); @@ -4149,7 +4149,7 @@ set_nvmprog_key(): 1640: df 93 push r29 1642: d8 2f mov r29, r24 1644: 8d e5 ldi r24, 0x5D ; 93 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:227 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:227 D1PRINTF(" PROG_KEY\r\n"); 1646: 97 e0 ldi r25, 0x07 ; 7 1648: 9f 93 push r25 @@ -4160,7 +4160,7 @@ set_nvmprog_key(): 1652: 8f 93 push r24 1654: 03 df rcall .-506 ; 0x145c 1656: 6a e0 ldi r22, 0x0A ; 10 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:228 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:228 if (!send_bytes(nvmprog_key, sizeof(nvmprog_key))) return false; 1658: 70 e0 ldi r23, 0x00 ; 0 165a: 83 e4 ldi r24, 0x43 ; 67 @@ -4173,13 +4173,13 @@ set_nvmprog_key(): 1668: 0f 90 pop r0 166a: 88 23 and r24, r24 166c: f1 f0 breq .+60 ; 0x16aa -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:229 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:229 do { key_status(); } while(bit_is_clear(RXDATA, 4)); /* wait set NVMPROG */ 166e: c9 da rcall .-2670 ; 0xc02 1670: fc 9b sbis 0x1f, 4 ; 31 1672: fd cf rjmp .-6 ; 0x166e 1674: 8f b3 in r24, 0x1f ; 31 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:230 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:230 D1PRINTF(" KEY=%02X\r\n", RXDATA); 1676: 1f 92 push r1 1678: 8f 93 push r24 @@ -4193,7 +4193,7 @@ set_nvmprog_key(): 1688: 8f 93 push r24 168a: e8 de rcall .-560 ; 0x145c 168c: 0f 90 pop r0 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:231 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:231 return _reset ? sys_reset(false) : true; 168e: 0f 90 pop r0 1690: 0f 90 pop r0 @@ -4203,7 +4203,7 @@ set_nvmprog_key(): 1698: dd 23 and r29, r29 169a: 39 f0 breq .+14 ; 0x16aa sys_reset(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:130 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:130 const static uint8_t _reset[] = { 0x55, 0xC8, 0x59, /* SYSRST */ 0x55, 0xC8, 0x00, /* SYSRUN */ @@ -4213,7 +4213,7 @@ sys_reset(): 169c: 66 e0 ldi r22, 0x06 ; 6 169e: 70 e0 ldi r23, 0x00 ; 0 16a0: 82 e7 ldi r24, 0x72 ; 114 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:232 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:232 D1PRINTF(" PROG_KEY\r\n"); if (!send_bytes(nvmprog_key, sizeof(nvmprog_key))) return false; do { key_status(); } while(bit_is_clear(RXDATA, 4)); /* wait set NVMPROG */ @@ -4223,7 +4223,7 @@ sys_reset(): 16a2: 90 e6 ldi r25, 0x60 ; 96 set_nvmprog_key(): 16a4: df 91 pop r29 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:130 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:130 const static uint8_t _reset[] = { 0x55, 0xC8, 0x59, /* SYSRST */ 0x55, 0xC8, 0x00, /* SYSRUN */ @@ -4234,7 +4234,7 @@ set_nvmprog_key(): sys_reset(): 16a8: 90 ca rjmp .-2784 ; 0xbca set_nvmprog_key(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:232 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:232 D1PRINTF(" PROG_KEY\r\n"); if (!send_bytes(nvmprog_key, sizeof(nvmprog_key))) return false; do { key_status(); } while(bit_is_clear(RXDATA, 4)); /* wait set NVMPROG */ @@ -4248,7 +4248,7 @@ set_nvmprog_key(): 000016b2 : write_userrow(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:276 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:276 /* * Use the UPDI ACC to write to the USERROW of the locked chip. * The write start address should match the USERROW address. @@ -4262,7 +4262,7 @@ write_userrow(): 16ba: 0f 93 push r16 16bc: 1f 93 push r17 16be: cf 93 push r28 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:285 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:285 uint32_t _dwAddr = packet.out.dwAddr; size_t _wLength = packet.out.dwLength; if (bit_is_clear(PGCONF, PGCONF_UPDI_bp) @@ -4272,7 +4272,7 @@ write_userrow(): 16c0: df 93 push r29 16c2: e8 99 sbic 0x1d, 0 ; 29 16c4: 0b c0 rjmp .+22 ; 0x16dc -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:301 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:301 do { sys_status(); } while(bit_is_clear(RXDATA, 3)); /* wait set PROGSTART */ D1PRINTF(" RE_PROGSTART=%02X\r\n", RXDATA); return true; @@ -4287,7 +4287,7 @@ write_userrow(): 16d0: 0f 91 pop r16 16d2: ff 90 pop r15 16d4: ef 90 pop r14 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:283 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:283 const static uint8_t _urowstop[] = { 0x55, 0xC7, 0x20 }; /* ASI_KEY_STATUS <= UROWWR */ uint8_t m_type = packet.out.bMType; uint32_t _dwAddr = packet.out.dwAddr; @@ -4297,7 +4297,7 @@ write_userrow(): 16d6: df 90 pop r13 16d8: cf 90 pop r12 16da: 08 95 ret -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:284 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:284 || _wLength != Device_Descriptor.UPDI.user_sig_bytes 16dc: 80 91 d5 60 lds r24, 0x60D5 ; 0x8060d5 16e0: 85 3c cpi r24, 0xC5 ; 197 @@ -4305,7 +4305,7 @@ write_userrow(): 16e4: c0 91 b6 60 lds r28, 0x60B6 ; 0x8060b6 16e8: d0 91 b7 60 lds r29, 0x60B7 ; 0x8060b7 16ec: 80 91 da 60 lds r24, 0x60DA ; 0x8060da -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:280 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:280 */ bool write_userrow (void) { const static uint8_t _urowdone[] = { 0x55, 0xCA, 0x03 }; /* ASI_SYS_CTRLA <= UROWDONE|CLKREQ */ @@ -4317,7 +4317,7 @@ write_userrow(): 16f6: d9 07 cpc r29, r25 16f8: 31 f7 brne .-52 ; 0x16c6 16fa: c0 90 d6 60 lds r12, 0x60D6 ; 0x8060d6 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:285 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:285 size_t _wLength = packet.out.dwLength; if (bit_is_clear(PGCONF, PGCONF_UPDI_bp) || m_type != 0xC5 @@ -4327,11 +4327,11 @@ write_userrow(): 1702: e0 90 d8 60 lds r14, 0x60D8 ; 0x8060d8 1706: f0 90 d9 60 lds r15, 0x60D9 ; 0x8060d9 170a: 80 91 c0 60 lds r24, 0x60C0 ; 0x8060c0 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:286 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:286 USART::drain(); 170e: 90 91 c1 60 lds r25, 0x60C1 ; 0x8060c1 1712: 8c 15 cp r24, r12 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:287 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:287 D1PRINTF(" ENTER_UROW=%04lX:%04X\r\n", _dwAddr, _wLength); 1714: 9d 05 cpc r25, r13 1716: b9 f6 brne .-82 ; 0x16c6 @@ -4347,7 +4347,7 @@ write_userrow(): 172a: 8f ec ldi r24, 0xCF ; 207 172c: 97 e0 ldi r25, 0x07 ; 7 172e: 9f 93 push r25 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:244 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:244 D1PRINTF(" KEY=%02X\r\n", RXDATA); return sys_reset(false); } @@ -4363,7 +4363,7 @@ write_userrow(): set_urowwrite_key(): 173c: 8e ea ldi r24, 0xAE ; 174 173e: 97 e0 ldi r25, 0x07 ; 7 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:245 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:245 if (!send_bytes(urowwrite_key, sizeof(urowwrite_key))) return false; 1740: 9f 93 push r25 1742: 8f 93 push r24 @@ -4380,13 +4380,13 @@ set_urowwrite_key(): 1758: 22 5f subi r18, 0xF2 ; 242 175a: 3f 4f sbci r19, 0xFF ; 255 175c: 2d bf out 0x3d, r18 ; 61 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:246 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:246 do { key_status(); } while(bit_is_clear(RXDATA, 5)); /* wait set UROWWRITE */ 175e: 3e bf out 0x3e, r19 ; 62 1760: 88 23 and r24, r24 1762: 09 f4 brne .+2 ; 0x1766 1764: b0 cf rjmp .-160 ; 0x16c6 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:247 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:247 D1PRINTF(" KEY=%02X\r\n", RXDATA); 1766: 4d da rcall .-2918 ; 0xc02 1768: fd 9b sbis 0x1f, 5 ; 31 @@ -4399,7 +4399,7 @@ set_urowwrite_key(): 1776: 9f 93 push r25 1778: 8f 93 push r24 177a: 8d e8 ldi r24, 0x8D ; 141 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:130 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:130 const static uint8_t _reset[] = { 0x55, 0xC8, 0x59, /* SYSRST */ 0x55, 0xC8, 0x00, /* SYSRUN */ @@ -4412,7 +4412,7 @@ set_urowwrite_key(): 1782: 6c de rcall .-808 ; 0x145c sys_reset(): 1784: 66 e0 ldi r22, 0x06 ; 6 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:288 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:288 || m_type != 0xC5 || _wLength != Device_Descriptor.UPDI.user_sig_bytes || (uint16_t)_dwAddr != Device_Descriptor.UPDI.user_sig_base) return false; @@ -4428,54 +4428,54 @@ write_userrow(): 1790: 0f 90 pop r0 1792: 0f 90 pop r0 1794: 0f 90 pop r0 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:289 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:289 do { sys_status(); } while(bit_is_clear(RXDATA, 2)); /* wait set UROWPROG */ 1796: 0f 90 pop r0 1798: 0f 90 pop r0 179a: 0f 90 pop r0 179c: 88 23 and r24, r24 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:290 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:290 send_words_block(_dwAddr, _wLength); 179e: 09 f4 brne .+2 ; 0x17a2 17a0: 92 cf rjmp .-220 ; 0x16c6 17a2: 26 da rcall .-2996 ; 0xbf0 17a4: fa 9b sbis 0x1f, 2 ; 31 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:291 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:291 send_bytes(_urowdone, 3); 17a6: fd cf rjmp .-6 ; 0x17a2 17a8: ae 01 movw r20, r28 17aa: c7 01 movw r24, r14 17ac: b6 01 movw r22, r12 17ae: 4c da rcall .-2920 ; 0xc48 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:292 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:292 do { sys_status(); } while(bit_is_set(RXDATA, 2)); /* wait clear UROWPROG */ 17b0: 63 e0 ldi r22, 0x03 ; 3 17b2: 70 e0 ldi r23, 0x00 ; 0 17b4: 84 e6 ldi r24, 0x64 ; 100 17b6: 90 e6 ldi r25, 0x60 ; 96 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:293 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:293 send_bytes(_urowstop, 3); 17b8: 08 da rcall .-3056 ; 0xbca 17ba: 1a da rcall .-3020 ; 0xbf0 17bc: fa 99 sbic 0x1f, 2 ; 31 17be: fd cf rjmp .-6 ; 0x17ba 17c0: 63 e0 ldi r22, 0x03 ; 3 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:294 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:294 if (bit_is_set(PGCONF, PGCONF_PROG_bp)) { 17c2: 70 e0 ldi r23, 0x00 ; 0 17c4: 81 e6 ldi r24, 0x61 ; 97 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:295 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:295 set_nvmprog_key(); 17c6: 90 e6 ldi r25, 0x60 ; 96 17c8: 00 da rcall .-3072 ; 0xbca 17ca: e9 9b sbis 0x1d, 1 ; 29 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:296 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:296 do { sys_status(); } while(bit_is_clear(RXDATA, 3)); /* wait set PROGSTART */ 17cc: 18 c0 rjmp .+48 ; 0x17fe 17ce: 81 e0 ldi r24, 0x01 ; 1 17d0: 36 df rcall .-404 ; 0x163e 17d2: 0e da rcall .-3044 ; 0xbf0 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:297 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:297 D1PRINTF(" RE_PROGSTART=%02X\r\n", RXDATA); 17d4: fb 9b sbis 0x1f, 3 ; 31 17d6: fd cf rjmp .-6 ; 0x17d2 @@ -4496,7 +4496,7 @@ write_userrow(): 17f4: 0f 90 pop r0 17f6: 0f 90 pop r0 17f8: 0f 90 pop r0 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:130 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:130 const static uint8_t _reset[] = { 0x55, 0xC8, 0x59, /* SYSRST */ 0x55, 0xC8, 0x00, /* SYSRUN */ @@ -4508,7 +4508,7 @@ write_userrow(): sys_reset(): 17fe: 66 e0 ldi r22, 0x06 ; 6 1800: 70 e0 ldi r23, 0x00 ; 0 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:301 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:301 do { sys_status(); } while(bit_is_clear(RXDATA, 3)); /* wait set PROGSTART */ D1PRINTF(" RE_PROGSTART=%02X\r\n", RXDATA); return true; @@ -4522,7 +4522,7 @@ write_userrow(): 1808: cf 91 pop r28 180a: 1f 91 pop r17 180c: 0f 91 pop r16 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:130 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:130 const static uint8_t _reset[] = { 0x55, 0xC8, 0x59, /* SYSRST */ 0x55, 0xC8, 0x00, /* SYSRUN */ @@ -4530,7 +4530,7 @@ write_userrow(): }; return send_bytes(_reset, _leave ? 9 : 6); 180e: ff 90 pop r15 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv5.cpp:136 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv5.cpp:136 } /* Page erase will not be used if received. */ return 1; @@ -4547,7 +4547,7 @@ sys_reset(): write_memory(): 1818: cf 92 push r12 181a: df 92 push r13 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv5.cpp:140 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv5.cpp:140 uint8_t m_type = packet.out.bMType; uint32_t _dwAddr = packet.out.dwAddr; size_t _wLength = packet.out.dwLength; @@ -4555,7 +4555,7 @@ write_memory(): 181c: ef 92 push r14 181e: ff 92 push r15 1820: cf 93 push r28 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv5.cpp:160 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv5.cpp:160 _dwAddr += PROG_START; return write_words_flash(_dwAddr, _wLength); } @@ -4563,7 +4563,7 @@ write_memory(): /* MTYPE_SRAM */ return UPDI::send_bytes_block(_dwAddr, _wLength); 1822: df 93 push r29 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv5.cpp:162 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv5.cpp:162 } } 1824: e9 99 sbic 0x1d, 1 ; 29 @@ -4571,7 +4571,7 @@ write_memory(): 1828: 44 df rcall .-376 ; 0x16b2 182a: 90 e0 ldi r25, 0x00 ; 0 182c: df 91 pop r29 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv5.cpp:137 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv5.cpp:137 /* Page erase will not be used if received. */ return 1; } @@ -4580,25 +4580,25 @@ write_memory(): uint8_t m_type = packet.out.bMType; 182e: cf 91 pop r28 1830: ff 90 pop r15 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv5.cpp:138 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv5.cpp:138 uint32_t _dwAddr = packet.out.dwAddr; 1832: ef 90 pop r14 1834: df 90 pop r13 1836: cf 90 pop r12 1838: 08 95 ret 183a: 80 91 d5 60 lds r24, 0x60D5 ; 0x8060d5 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv5.cpp:139 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv5.cpp:139 size_t _wLength = packet.out.dwLength; 183e: c0 90 d6 60 lds r12, 0x60D6 ; 0x8060d6 1842: d0 90 d7 60 lds r13, 0x60D7 ; 0x8060d7 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv5.cpp:141 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv5.cpp:141 if (bit_is_clear(PGCONF, PGCONF_PROG_bp)) return UPDI::write_userrow(); if (m_type == 0x22 || m_type == 0xB2 || m_type == 0xB3 || m_type == 0xC4) { 1846: e0 90 d8 60 lds r14, 0x60D8 ; 0x8060d8 184a: f0 90 d9 60 lds r15, 0x60D9 ; 0x8060d9 184e: c0 91 da 60 lds r28, 0x60DA ; 0x8060da 1852: d0 91 db 60 lds r29, 0x60DB ; 0x8060db -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv5.cpp:93 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv5.cpp:93 } bool write_eeprom (uint32_t _dwAddr, size_t _wLength) { @@ -4606,14 +4606,14 @@ write_memory(): return ( nvm_ctrl_change(0x00) 1856: 82 32 cpi r24, 0x22 ; 34 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv5.cpp:96 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv5.cpp:96 && UPDI::send_bytes_block(_dwAddr, _wLength) && nvm_ctrl_change(0x15) /* NVM_V5_CMD_EEPERW */ && (nvm_wait() & 0x73) == 0 1858: 31 f0 breq .+12 ; 0x1866 185a: 9e e4 ldi r25, 0x4E ; 78 185c: 98 0f add r25, r24 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv5.cpp:94 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv5.cpp:94 bool write_eeprom (uint32_t _dwAddr, size_t _wLength) { D2PRINTF(" NVM_V5_EEPERW=%06lX\r\n", _dwAddr); @@ -4627,7 +4627,7 @@ write_memory(): write_eeprom(): 1866: 80 e0 ldi r24, 0x00 ; 0 1868: 96 dc rcall .-1748 ; 0x1196 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv5.cpp:95 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv5.cpp:95 && nvm_ctrl_change(0x15) /* NVM_V5_CMD_EEPERW */ 186a: 81 11 cpse r24, r1 186c: 02 c0 rjmp .+4 ; 0x1872 @@ -4637,7 +4637,7 @@ write_memory(): write_eeprom(): 1872: ae 01 movw r20, r28 1874: c7 01 movw r24, r14 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv5.cpp:148 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv5.cpp:148 /* MTYPE_LOCK_BITS */ /* MTYPE_EEPROM */ /* MTYPE_EEPROM_XMEGA */ @@ -4647,7 +4647,7 @@ write_eeprom(): 1876: b6 01 movw r22, r12 1878: 25 da rcall .-2998 ; 0xcc4 187a: 88 23 and r24, r24 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv5.cpp:151 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv5.cpp:151 /* MTYPE_FLASH (alias) */ /* MTYPE_USERSIG (USERROW, BOOTROW) */ return write_bytes_flash(_dwAddr, _wLength); @@ -4657,25 +4657,25 @@ write_eeprom(): 1882: 88 23 and r24, r24 1884: a1 f3 breq .-24 ; 0x186e 1886: 80 dc rcall .-1792 ; 0x1188 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv5.cpp:153 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv5.cpp:153 } else if (m_type == 0xB0) { 1888: d0 cf rjmp .-96 ; 0x182a write_memory(): 188a: 80 3c cpi r24, 0xC0 ; 192 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv5.cpp:155 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv5.cpp:155 /* MTYPE_FLASH_PAGE (PROGMEM) */ _dwAddr += PROG_START; 188c: 11 f0 breq .+4 ; 0x1892 188e: 85 3c cpi r24, 0xC5 ; 197 1890: 29 f4 brne .+10 ; 0x189c -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv5.cpp:156 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv5.cpp:156 return write_words_flash(_dwAddr, _wLength); 1892: ae 01 movw r20, r28 1894: c7 01 movw r24, r14 1896: b6 01 movw r22, r12 1898: a6 dc rcall .-1716 ; 0x11e6 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv5.cpp:160 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv5.cpp:160 } else { /* MTYPE_SRAM */ @@ -4686,7 +4686,7 @@ write_memory(): 18a0: c7 01 movw r24, r14 18a2: b6 01 movw r22, r12 18a4: 80 58 subi r24, 0x80 ; 128 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv4.cpp:158 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv4.cpp:158 /* Page erase will not be used if received. */ /* Instead, page erase is determined by the is_boundary_flash_page function. */ return 1; @@ -4699,7 +4699,7 @@ write_memory(): 18ac: be cf rjmp .-132 ; 0x182a 18ae: ae 01 movw r20, r28 18b0: c7 01 movw r24, r14 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv4.cpp:162 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv4.cpp:162 uint8_t m_type = packet.out.bMType; uint32_t _dwAddr = packet.out.dwAddr; size_t _wLength = packet.out.dwLength; @@ -4710,7 +4710,7 @@ write_memory(): 000018b8 : 18b8: cf 92 push r12 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv4.cpp:182 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv4.cpp:182 _dwAddr += PROG_START; return write_words_flash(_dwAddr, _wLength); } @@ -4718,7 +4718,7 @@ write_memory(): /* MTYPE_SRAM */ return UPDI::send_bytes_block(_dwAddr, _wLength); 18ba: df 92 push r13 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv4.cpp:184 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv4.cpp:184 } } 18bc: ef 92 push r14 @@ -4728,7 +4728,7 @@ write_memory(): 18c4: e9 99 sbic 0x1d, 1 ; 29 18c6: 09 c0 rjmp .+18 ; 0x18da 18c8: f4 de rcall .-536 ; 0x16b2 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv4.cpp:159 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv4.cpp:159 /* Instead, page erase is determined by the is_boundary_flash_page function. */ return 1; } @@ -4736,7 +4736,7 @@ write_memory(): size_t write_memory (void) { uint8_t m_type = packet.out.bMType; 18ca: 90 e0 ldi r25, 0x00 ; 0 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv4.cpp:160 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv4.cpp:160 uint32_t _dwAddr = packet.out.dwAddr; 18cc: df 91 pop r29 18ce: cf 91 pop r28 @@ -4745,17 +4745,17 @@ write_memory(): 18d4: df 90 pop r13 18d6: cf 90 pop r12 18d8: 08 95 ret -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv4.cpp:161 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv4.cpp:161 size_t _wLength = packet.out.dwLength; 18da: 80 91 d5 60 lds r24, 0x60D5 ; 0x8060d5 18de: c0 90 d6 60 lds r12, 0x60D6 ; 0x8060d6 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv4.cpp:163 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv4.cpp:163 if (bit_is_clear(PGCONF, PGCONF_PROG_bp)) return UPDI::write_userrow(); if (m_type == 0x22 || m_type == 0xB2 || m_type == 0xB3 || m_type == 0xC4) { 18e2: d0 90 d7 60 lds r13, 0x60D7 ; 0x8060d7 18e6: e0 90 d8 60 lds r14, 0x60D8 ; 0x8060d8 18ea: f0 90 d9 60 lds r15, 0x60D9 ; 0x8060d9 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv4.cpp:108 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv4.cpp:108 } bool write_eeprom (uint32_t _dwAddr, size_t _wLength) { @@ -4763,12 +4763,12 @@ write_memory(): return ( nvm_ctrl_change(0x13) /* NVM_V4_CMD_EEERWR */ 18ee: c0 91 da 60 lds r28, 0x60DA ; 0x8060da -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv4.cpp:111 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv4.cpp:111 && UPDI::send_bytes_block_slow(_dwAddr, _wLength) && (nvm_wait() & 0x73) == 0 && nvm_ctrl_change(0x00) 18f2: d0 91 db 60 lds r29, 0x60DB ; 0x8060db -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv4.cpp:90 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv4.cpp:90 D2PRINTF(" NVM_V4_FLWR=%06lX\r\n", _dwAddr); return ( nvm_ctrl_change(0x02) /* NVM_V4_CMD_FLWR */ @@ -4777,7 +4777,7 @@ write_memory(): && nvm_ctrl_change(0x00) 18f6: 82 32 cpi r24, 0x22 ; 34 18f8: 31 f0 breq .+12 ; 0x1906 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv4.cpp:109 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv4.cpp:109 bool write_eeprom (uint32_t _dwAddr, size_t _wLength) { D2PRINTF(" NVM_V4_EEERWR=%06lX\r\n", _dwAddr); @@ -4791,7 +4791,7 @@ write_memory(): 1902: 84 3c cpi r24, 0xC4 ; 196 1904: 89 f4 brne .+34 ; 0x1928 write_eeprom(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv4.cpp:110 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv4.cpp:110 && (nvm_wait() & 0x73) == 0 1906: 83 e1 ldi r24, 0x13 ; 19 1908: 46 dc rcall .-1908 ; 0x1196 @@ -4801,7 +4801,7 @@ write_memory(): 190e: 80 e0 ldi r24, 0x00 ; 0 1910: dc cf rjmp .-72 ; 0x18ca write_eeprom(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv4.cpp:170 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv4.cpp:170 /* MTYPE_LOCK_BITS */ /* MTYPE_EEPROM */ /* MTYPE_EEPROM_XMEGA */ @@ -4812,7 +4812,7 @@ write_eeprom(): 1914: c7 01 movw r24, r14 1916: b6 01 movw r22, r12 1918: 33 da rcall .-2970 ; 0xd80 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv4.cpp:95 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv4.cpp:95 && nvm_ctrl_change(0x00) ); } @@ -4829,7 +4829,7 @@ write_eeprom(): write_memory(): 1928: 80 3c cpi r24, 0xC0 ; 192 192a: 11 f0 breq .+4 ; 0x1930 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv4.cpp:98 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv4.cpp:98 D2PRINTF(" NVM_V4_FLWR=%06lX\r\n", _dwAddr); return ( nvm_ctrl_change(0x02) /* NVM_V4_CMD_FLWR */ @@ -4837,13 +4837,13 @@ write_memory(): 192e: b9 f4 brne .+46 ; 0x195e write_bytes_flash(): 1930: c7 01 movw r24, r14 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv4.cpp:101 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv4.cpp:101 && UPDI::send_bytes_block_slow(_dwAddr, _wLength) && (nvm_wait() & 0x73) == 0 && nvm_ctrl_change(0x00) 1932: b6 01 movw r22, r12 1934: bd db rcall .-2182 ; 0x10b0 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv4.cpp:99 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv4.cpp:99 bool write_bytes_flash (uint32_t _dwAddr, size_t _wLength) { if (SYS::is_boundary_flash_page(_dwAddr)) erase_flash_page(_dwAddr); D2PRINTF(" NVM_V4_FLWR=%06lX\r\n", _dwAddr); @@ -4857,7 +4857,7 @@ write_bytes_flash(): 193e: 9f dc rcall .-1730 ; 0x127e 1940: 82 e0 ldi r24, 0x02 ; 2 1942: 29 dc rcall .-1966 ; 0x1196 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv4.cpp:100 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv4.cpp:100 && (nvm_wait() & 0x73) == 0 1944: 88 23 and r24, r24 1946: 19 f3 breq .-58 ; 0x190e @@ -4866,7 +4866,7 @@ write_bytes_flash(): 194c: b6 01 movw r22, r12 194e: 18 da rcall .-3024 ; 0xd80 1950: 88 23 and r24, r24 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv4.cpp:175 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv4.cpp:175 else if (m_type == 0xC0 || m_type == 0xC5) { /* MTYPE_FLASH (alias) */ /* MTYPE_USERSIG (USERROW, BOOTROW) */ @@ -4875,12 +4875,12 @@ write_bytes_flash(): else if (m_type == 0xB0) { 1952: e9 f2 breq .-70 ; 0x190e 1954: 0f dc rcall .-2018 ; 0x1174 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv4.cpp:177 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv4.cpp:177 /* MTYPE_FLASH_PAGE (PROGMEM) */ _dwAddr += PROG_START; 1956: 83 77 andi r24, 0x73 ; 115 1958: d1 f6 brne .-76 ; 0x190e -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv4.cpp:84 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv4.cpp:84 ); } @@ -4899,20 +4899,20 @@ write_words_flash(): 1968: ea 99 sbic 0x1d, 2 ; 29 196a: 08 c0 rjmp .+16 ; 0x197c 196c: c7 01 movw r24, r14 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv4.cpp:87 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv4.cpp:87 D2PRINTF(" NVM_V4_FLWR=%06lX\r\n", _dwAddr); return ( nvm_ctrl_change(0x02) /* NVM_V4_CMD_FLWR */ 196e: b6 01 movw r22, r12 1970: 9f db rcall .-2242 ; 0x10b0 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv4.cpp:90 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv4.cpp:90 && UPDI::send_words_block(_dwAddr, _wLength) && (nvm_wait() & 0x73) == 0 && nvm_ctrl_change(0x00) 1972: 88 23 and r24, r24 1974: 19 f0 breq .+6 ; 0x197c 1976: c7 01 movw r24, r14 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv4.cpp:88 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv4.cpp:88 if (bit_is_clear(PGCONF, PGCONF_ERSE_bp) && SYS::is_boundary_flash_page(_dwAddr)) erase_flash_page(_dwAddr); D2PRINTF(" NVM_V4_FLWR=%06lX\r\n", _dwAddr); @@ -4926,7 +4926,7 @@ write_words_flash(): 1980: 88 23 and r24, r24 1982: 09 f4 brne .+2 ; 0x1986 1984: c4 cf rjmp .-120 ; 0x190e -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv4.cpp:89 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv4.cpp:89 && (nvm_wait() & 0x73) == 0 1986: ae 01 movw r20, r28 1988: c7 01 movw r24, r14 @@ -4934,7 +4934,7 @@ write_words_flash(): 198c: 5d d9 rcall .-3398 ; 0xc48 198e: 88 23 and r24, r24 1990: 09 f4 brne .+2 ; 0x1994 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv4.cpp:182 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv4.cpp:182 _dwAddr += PROG_START; return write_words_flash(_dwAddr, _wLength); } @@ -4945,7 +4945,7 @@ write_words_flash(): 1994: ef db rcall .-2082 ; 0x1174 1996: 83 77 andi r24, 0x73 ; 115 1998: 09 f0 breq .+2 ; 0x199c -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv3.cpp:133 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv3.cpp:133 } /* Page erase will not be used if received. */ return 1; @@ -4958,7 +4958,7 @@ write_words_flash(): write_memory(): 19a0: ae 01 movw r20, r28 19a2: c7 01 movw r24, r14 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv3.cpp:137 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv3.cpp:137 uint8_t m_type = packet.out.bMType; uint32_t _dwAddr = packet.out.dwAddr; size_t _wLength = packet.out.dwLength; @@ -4969,7 +4969,7 @@ write_memory(): 000019aa : 19aa: cf 92 push r12 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv3.cpp:157 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv3.cpp:157 _dwAddr += PROG_START; return write_words_flash(_dwAddr, _wLength); } @@ -4977,7 +4977,7 @@ write_memory(): /* MTYPE_SRAM */ return UPDI::send_bytes_block(_dwAddr, _wLength); 19ac: df 92 push r13 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv3.cpp:159 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv3.cpp:159 } } 19ae: ef 92 push r14 @@ -4985,7 +4985,7 @@ write_memory(): 19b2: cf 93 push r28 19b4: df 93 push r29 19b6: e9 99 sbic 0x1d, 1 ; 29 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv3.cpp:134 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv3.cpp:134 /* Page erase will not be used if received. */ return 1; } @@ -4993,7 +4993,7 @@ write_memory(): size_t write_memory (void) { uint8_t m_type = packet.out.bMType; 19b8: 09 c0 rjmp .+18 ; 0x19cc -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv3.cpp:135 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv3.cpp:135 uint32_t _dwAddr = packet.out.dwAddr; 19ba: 7b de rcall .-778 ; 0x16b2 19bc: 90 e0 ldi r25, 0x00 ; 0 @@ -5002,18 +5002,18 @@ write_memory(): 19c2: ff 90 pop r15 19c4: ef 90 pop r14 19c6: df 90 pop r13 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv3.cpp:136 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv3.cpp:136 size_t _wLength = packet.out.dwLength; 19c8: cf 90 pop r12 19ca: 08 95 ret 19cc: 80 91 d5 60 lds r24, 0x60D5 ; 0x8060d5 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv3.cpp:138 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv3.cpp:138 if (bit_is_clear(PGCONF, PGCONF_PROG_bp)) return UPDI::write_userrow(); if (m_type == 0x22 || m_type == 0xB2 || m_type == 0xB3 || m_type == 0xC4) { 19d0: c0 90 d6 60 lds r12, 0x60D6 ; 0x8060d6 19d4: d0 90 d7 60 lds r13, 0x60D7 ; 0x8060d7 19d8: e0 90 d8 60 lds r14, 0x60D8 ; 0x8060d8 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv3.cpp:90 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv3.cpp:90 } bool write_eeprom (uint32_t _dwAddr, size_t _wLength) { @@ -5021,13 +5021,13 @@ write_memory(): return ( nvm_ctrl_change(0x10) 19dc: f0 90 d9 60 lds r15, 0x60D9 ; 0x8060d9 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv3.cpp:93 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv3.cpp:93 && UPDI::send_bytes_block(_dwAddr, _wLength) && nvm_ctrl_change(0x15) /* NVM_V3_CMD_EEPERW */ && (nvm_wait() & 0x73) == 0 19e0: c0 91 da 60 lds r28, 0x60DA ; 0x8060da 19e4: d0 91 db 60 lds r29, 0x60DB ; 0x8060db -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv3.cpp:91 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv3.cpp:91 bool write_eeprom (uint32_t _dwAddr, size_t _wLength) { D2PRINTF(" NVM_V3_EEPERW=%06lX\r\n", _dwAddr); @@ -5041,7 +5041,7 @@ write_memory(): 19f0: 92 30 cpi r25, 0x02 ; 2 19f2: 10 f0 brcs .+4 ; 0x19f8 19f4: 84 3c cpi r24, 0xC4 ; 196 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv3.cpp:92 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv3.cpp:92 && nvm_ctrl_change(0x15) /* NVM_V3_CMD_EEPERW */ 19f6: 91 f4 brne .+36 ; 0x1a1c write_eeprom(): @@ -5053,7 +5053,7 @@ write_memory(): 1a00: 80 e0 ldi r24, 0x00 ; 0 1a02: dc cf rjmp .-72 ; 0x19bc write_eeprom(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv3.cpp:145 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv3.cpp:145 /* MTYPE_LOCK_BITS */ /* MTYPE_EEPROM */ /* MTYPE_EEPROM_XMEGA */ @@ -5064,7 +5064,7 @@ write_eeprom(): 1a06: c7 01 movw r24, r14 1a08: b6 01 movw r22, r12 1a0a: 5c d9 rcall .-3400 ; 0xcc4 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv3.cpp:148 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv3.cpp:148 /* MTYPE_FLASH (alias) */ /* MTYPE_USERSIG (USERROW) */ return write_bytes_flash(_dwAddr, _wLength); @@ -5074,26 +5074,26 @@ write_eeprom(): 1a12: c1 db rcall .-2174 ; 0x1196 1a14: 88 23 and r24, r24 1a16: a1 f3 breq .-24 ; 0x1a00 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv3.cpp:150 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv3.cpp:150 } else if (m_type == 0xB0) { 1a18: b7 db rcall .-2194 ; 0x1188 1a1a: d0 cf rjmp .-96 ; 0x19bc write_memory(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv3.cpp:152 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv3.cpp:152 /* MTYPE_FLASH_PAGE (PROGMEM) */ _dwAddr += PROG_START; 1a1c: 80 3c cpi r24, 0xC0 ; 192 1a1e: 11 f0 breq .+4 ; 0x1a24 1a20: 85 3c cpi r24, 0xC5 ; 197 1a22: 29 f4 brne .+10 ; 0x1a2e -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv3.cpp:153 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv3.cpp:153 return write_words_flash(_dwAddr, _wLength); 1a24: ae 01 movw r20, r28 1a26: c7 01 movw r24, r14 1a28: b6 01 movw r22, r12 1a2a: dd db rcall .-2118 ; 0x11e6 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv3.cpp:157 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv3.cpp:157 } else { /* MTYPE_SRAM */ @@ -5104,7 +5104,7 @@ write_memory(): 1a32: c7 01 movw r24, r14 1a34: b6 01 movw r22, r12 1a36: 80 58 subi r24, 0x80 ; 128 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv2.cpp:155 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv2.cpp:155 /* Page erase will not be used if received. */ /* Instead, page erase is determined by the is_boundary_flash_page function. */ return 1; @@ -5117,7 +5117,7 @@ write_memory(): 1a3e: be cf rjmp .-132 ; 0x19bc 1a40: ae 01 movw r20, r28 1a42: c7 01 movw r24, r14 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv2.cpp:159 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv2.cpp:159 uint8_t m_type = packet.out.bMType; uint32_t _dwAddr = packet.out.dwAddr; size_t _wLength = packet.out.dwLength; @@ -5128,7 +5128,7 @@ write_memory(): 00001a4a : 1a4a: cf 92 push r12 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv2.cpp:179 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv2.cpp:179 _dwAddr += PROG_START; return write_words_flash(_dwAddr, _wLength); } @@ -5136,7 +5136,7 @@ write_memory(): /* MTYPE_SRAM */ return UPDI::send_bytes_block(_dwAddr, _wLength); 1a4c: df 92 push r13 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv2.cpp:181 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv2.cpp:181 } } 1a4e: ef 92 push r14 @@ -5146,7 +5146,7 @@ write_memory(): 1a56: e9 99 sbic 0x1d, 1 ; 29 1a58: 09 c0 rjmp .+18 ; 0x1a6c 1a5a: 2b de rcall .-938 ; 0x16b2 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv2.cpp:156 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv2.cpp:156 /* Instead, page erase is determined by the is_boundary_flash_page function. */ return 1; } @@ -5155,7 +5155,7 @@ write_memory(): uint8_t m_type = packet.out.bMType; 1a5c: 90 e0 ldi r25, 0x00 ; 0 1a5e: df 91 pop r29 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv2.cpp:157 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv2.cpp:157 uint32_t _dwAddr = packet.out.dwAddr; 1a60: cf 91 pop r28 1a62: ff 90 pop r15 @@ -5164,18 +5164,18 @@ write_memory(): 1a68: cf 90 pop r12 1a6a: 08 95 ret 1a6c: 80 91 d5 60 lds r24, 0x60D5 ; 0x8060d5 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv2.cpp:158 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv2.cpp:158 size_t _wLength = packet.out.dwLength; 1a70: c0 90 d6 60 lds r12, 0x60D6 ; 0x8060d6 1a74: d0 90 d7 60 lds r13, 0x60D7 ; 0x8060d7 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv2.cpp:160 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv2.cpp:160 if (bit_is_clear(PGCONF, PGCONF_PROG_bp)) return UPDI::write_userrow(); if (m_type == 0x22 || m_type == 0xB2 || m_type == 0xB3 || m_type == 0xC4) { 1a78: e0 90 d8 60 lds r14, 0x60D8 ; 0x8060d8 1a7c: f0 90 d9 60 lds r15, 0x60D9 ; 0x8060d9 1a80: c0 91 da 60 lds r28, 0x60DA ; 0x8060da 1a84: d0 91 db 60 lds r29, 0x60DB ; 0x8060db -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv2.cpp:105 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv2.cpp:105 } bool write_eeprom (uint32_t _dwAddr, size_t _wLength) { @@ -5184,13 +5184,13 @@ write_memory(): nvm_ctrl_change(0x13) /* NVM_V2_CMD_EEERWR */ 1a88: 82 32 cpi r24, 0x22 ; 34 1a8a: 31 f0 breq .+12 ; 0x1a98 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv2.cpp:108 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv2.cpp:108 && UPDI::send_bytes_block_slow(_dwAddr, _wLength) && (nvm_wait() & 0x73) == 0 && nvm_ctrl_change(0x00) 1a8c: 9e e4 ldi r25, 0x4E ; 78 1a8e: 98 0f add r25, r24 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv2.cpp:87 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv2.cpp:87 D2PRINTF(" NVM_V2_FLWR=%06lX\r\n", _dwAddr); return ( nvm_ctrl_change(0x02) /* NVM_V2_CMD_FLWR */ @@ -5199,7 +5199,7 @@ write_memory(): && nvm_ctrl_change(0x00) 1a90: 92 30 cpi r25, 0x02 ; 2 1a92: 10 f0 brcs .+4 ; 0x1a98 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv2.cpp:106 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv2.cpp:106 bool write_eeprom (uint32_t _dwAddr, size_t _wLength) { D2PRINTF(" NVM_V2_EEERWR=%06lX\r\n", _dwAddr); @@ -5215,7 +5215,7 @@ write_eeprom(): 1a9e: 02 c0 rjmp .+4 ; 0x1aa4 write_memory(): 1aa0: 80 e0 ldi r24, 0x00 ; 0 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv2.cpp:107 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv2.cpp:107 && (nvm_wait() & 0x73) == 0 1aa2: dc cf rjmp .-72 ; 0x1a5c write_eeprom(): @@ -5224,7 +5224,7 @@ write_eeprom(): 1aa8: b6 01 movw r22, r12 1aaa: 6a d9 rcall .-3372 ; 0xd80 1aac: 88 23 and r24, r24 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv2.cpp:167 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv2.cpp:167 /* MTYPE_LOCK_BITS */ /* MTYPE_EEPROM */ /* MTYPE_EEPROM_XMEGA */ @@ -5235,7 +5235,7 @@ write_eeprom(): 1ab0: 04 dc rcall .-2040 ; 0x12ba 1ab2: 83 77 andi r24, 0x73 ; 115 1ab4: a9 f7 brne .-22 ; 0x1aa0 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv2.cpp:92 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv2.cpp:92 && nvm_ctrl_change(0x00) ); } @@ -5252,20 +5252,20 @@ write_memory(): write_bytes_flash(): 1ac2: c7 01 movw r24, r14 1ac4: b6 01 movw r22, r12 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv2.cpp:95 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv2.cpp:95 D2PRINTF(" NVM_V2_FLWR=%06lX\r\n", _dwAddr); return ( nvm_ctrl_change(0x02) /* NVM_V2_CMD_FLWR */ 1ac6: f4 da rcall .-2584 ; 0x10b0 1ac8: 88 23 and r24, r24 1aca: 19 f0 breq .+6 ; 0x1ad2 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv2.cpp:98 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv2.cpp:98 && UPDI::send_bytes_block_slow(_dwAddr, _wLength) && (nvm_wait() & 0x73) == 0 && nvm_ctrl_change(0x00) 1acc: c7 01 movw r24, r14 1ace: b6 01 movw r22, r12 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv2.cpp:96 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv2.cpp:96 bool write_bytes_flash (uint32_t _dwAddr, size_t _wLength) { if (SYS::is_boundary_flash_page(_dwAddr)) erase_flash_page(_dwAddr); D2PRINTF(" NVM_V2_FLWR=%06lX\r\n", _dwAddr); @@ -5278,7 +5278,7 @@ write_bytes_flash(): 1ad6: 88 23 and r24, r24 1ad8: 19 f3 breq .-58 ; 0x1aa0 1ada: ae 01 movw r20, r28 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv2.cpp:97 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv2.cpp:97 && (nvm_wait() & 0x73) == 0 1adc: c7 01 movw r24, r14 1ade: b6 01 movw r22, r12 @@ -5286,7 +5286,7 @@ write_bytes_flash(): 1ae2: 88 23 and r24, r24 1ae4: e9 f2 breq .-70 ; 0x1aa0 1ae6: e9 db rcall .-2094 ; 0x12ba -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv2.cpp:172 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv2.cpp:172 else if (m_type == 0xC0 || m_type == 0xC5) { /* MTYPE_FLASH (alias) */ /* MTYPE_USERSIG (USERROW) */ @@ -5295,14 +5295,14 @@ write_bytes_flash(): else if (m_type == 0xB0) { 1ae8: 83 77 andi r24, 0x73 ; 115 1aea: d1 f6 brne .-76 ; 0x1aa0 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv2.cpp:174 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv2.cpp:174 /* MTYPE_FLASH_PAGE (PROGMEM) */ _dwAddr += PROG_START; 1aec: 15 dc rcall .-2006 ; 0x1318 1aee: b6 cf rjmp .-148 ; 0x1a5c write_memory(): 1af0: 80 3b cpi r24, 0xB0 ; 176 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv2.cpp:81 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv2.cpp:81 ); } @@ -5322,19 +5322,19 @@ write_words_flash(): 1b04: 88 23 and r24, r24 1b06: 19 f0 breq .+6 ; 0x1b0e 1b08: c7 01 movw r24, r14 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv2.cpp:84 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv2.cpp:84 D2PRINTF(" NVM_V2_FLWR=%06lX\r\n", _dwAddr); return ( nvm_ctrl_change(0x02) /* NVM_V2_CMD_FLWR */ 1b0a: b6 01 movw r22, r12 1b0c: 07 dc rcall .-2034 ; 0x131c -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv2.cpp:87 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv2.cpp:87 && UPDI::send_words_block(_dwAddr, _wLength) && (nvm_wait() & 0x73) == 0 && nvm_ctrl_change(0x00) 1b0e: 82 e0 ldi r24, 0x02 ; 2 1b10: e6 db rcall .-2100 ; 0x12de -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv2.cpp:85 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv2.cpp:85 if (bit_is_clear(PGCONF, PGCONF_ERSE_bp) && SYS::is_boundary_flash_page(_dwAddr)) erase_flash_page(_dwAddr); D2PRINTF(" NVM_V2_FLWR=%06lX\r\n", _dwAddr); @@ -5347,7 +5347,7 @@ write_words_flash(): 1b18: ae 01 movw r20, r28 1b1a: c7 01 movw r24, r14 1b1c: b6 01 movw r22, r12 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv2.cpp:86 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv2.cpp:86 && (nvm_wait() & 0x73) == 0 1b1e: 94 d8 rcall .-3800 ; 0xc48 1b20: 88 23 and r24, r24 @@ -5356,7 +5356,7 @@ write_words_flash(): 1b26: c9 db rcall .-2158 ; 0x12ba 1b28: 83 77 andi r24, 0x73 ; 115 1b2a: 09 f0 breq .+2 ; 0x1b2e -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv2.cpp:179 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv2.cpp:179 _dwAddr += PROG_START; return write_words_flash(_dwAddr, _wLength); } @@ -5369,7 +5369,7 @@ write_words_flash(): write_memory(): 1b32: ae 01 movw r20, r28 1b34: c7 01 movw r24, r14 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv0.cpp:142 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv0.cpp:142 } /* Page erase will not be used if received. */ return 1; @@ -5395,7 +5395,7 @@ write_memory(): 1b52: 1f 93 push r17 1b54: cf 93 push r28 1b56: df 93 push r29 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv0.cpp:146 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv0.cpp:146 uint8_t m_type = packet.out.bMType; uint16_t _wAddr = packet.out.dwAddr; size_t _wLength = packet.out.dwLength; @@ -5404,7 +5404,7 @@ write_memory(): 1b5a: 00 d0 rcall .+0 ; 0x1b5c 1b5c: cd b7 in r28, 0x3d ; 61 1b5e: de b7 in r29, 0x3e ; 62 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv0.cpp:166 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv0.cpp:166 _wAddr += Device_Descriptor.UPDI.prog_base; return write_flash(_wAddr, _wLength); } @@ -5412,7 +5412,7 @@ write_memory(): /* MTYPE_SRAM */ return UPDI::send_bytes_block(_wAddr, _wLength); 1b60: e9 99 sbic 0x1d, 1 ; 29 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv0.cpp:168 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv0.cpp:168 } } 1b62: 14 c0 rjmp .+40 ; 0x1b8c @@ -5433,7 +5433,7 @@ write_memory(): 1b80: af 90 pop r10 1b82: 7f 90 pop r7 1b84: 6f 90 pop r6 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv0.cpp:143 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv0.cpp:143 /* Page erase will not be used if received. */ return 1; } @@ -5442,19 +5442,19 @@ write_memory(): uint8_t m_type = packet.out.bMType; 1b86: 5f 90 pop r5 1b88: 4f 90 pop r4 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv0.cpp:144 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv0.cpp:144 uint16_t _wAddr = packet.out.dwAddr; 1b8a: 08 95 ret 1b8c: 80 91 d5 60 lds r24, 0x60D5 ; 0x8060d5 1b90: c0 90 d6 60 lds r12, 0x60D6 ; 0x8060d6 1b94: d0 90 d7 60 lds r13, 0x60D7 ; 0x8060d7 1b98: e0 90 d8 60 lds r14, 0x60D8 ; 0x8060d8 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv0.cpp:145 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv0.cpp:145 size_t _wLength = packet.out.dwLength; 1b9c: f0 90 d9 60 lds r15, 0x60D9 ; 0x8060d9 1ba0: 96 01 movw r18, r12 1ba2: 00 91 da 60 lds r16, 0x60DA ; 0x8060da -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv0.cpp:147 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv0.cpp:147 if (bit_is_clear(PGCONF, PGCONF_PROG_bp)) return UPDI::write_userrow(); if (m_type == 0xB2 || m_type == 0xB3) { 1ba6: 10 91 db 60 lds r17, 0x60DB ; 0x8060db @@ -5464,7 +5464,7 @@ write_memory(): 1bb0: 08 f0 brcs .+2 ; 0x1bb4 1bb2: 44 c0 rjmp .+136 ; 0x1c3c 1bb4: 8e ec ldi r24, 0xCE ; 206 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv0.cpp:73 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv0.cpp:73 uint16_t data; /* NVMCTRL_REG_DATA */ uint16_t addr; /* NVMCTRL_REG_ADDR */ } fuses; @@ -5476,7 +5476,7 @@ write_memory(): 1bba: f8 2e mov r15, r24 write_fuse(): 1bbc: c9 01 movw r24, r18 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv0.cpp:71 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv0.cpp:71 bool write_fuse (uint16_t _wAddr, size_t _wLength) { struct fuse_packet_t { uint16_t data; /* NVMCTRL_REG_DATA */ @@ -5489,21 +5489,21 @@ write_fuse(): 1bc4: c7 01 movw r24, r14 1bc6: 8e 5c subi r24, 0xCE ; 206 1bc8: 90 46 sbci r25, 0x60 ; 96 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv0.cpp:72 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv0.cpp:72 fuses.data = packet.out.memData[_i]; 1bca: 80 17 cp r24, r16 1bcc: 91 07 cpc r25, r17 1bce: a0 f5 brcc .+104 ; 0x1c38 1bd0: f7 01 movw r30, r14 1bd2: 81 89 ldd r24, Z+17 ; 0x11 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv0.cpp:73 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv0.cpp:73 fuses.addr = _wAddr + _i; 1bd4: 90 e0 ldi r25, 0x00 ; 0 1bd6: 89 83 std Y+1, r24 ; 0x01 1bd8: 9a 83 std Y+2, r25 ; 0x02 1bda: c6 01 movw r24, r12 1bdc: 8e 0d add r24, r14 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv0.cpp:75 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv0.cpp:75 D2PRINTF(" NVM_V0_WFU=%04X<%02X\r\n", fuses.addr, fuses.data); nvm_wait(); 1bde: 9f 1d adc r25, r15 @@ -5515,7 +5515,7 @@ write_fuse(): 1bea: 5c 01 movw r10, r24 1bec: 66 e0 ldi r22, 0x06 ; 6 1bee: 70 e1 ldi r23, 0x10 ; 16 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:202 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:202 && clear_rsd(); } @@ -5537,7 +5537,7 @@ send_bytes_data(): 1c06: 7f 0a sbc r7, r31 1c08: 98 d8 rcall .-3792 ; 0xd3a 1c0a: 81 11 cpse r24, r1 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv0.cpp:78 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv0.cpp:78 if (!(UPDI::send_bytes_data(NVM_DATA, (uint8_t*)&fuses, 4) && UPDI::nvm_ctrl(0x07) /* NVM_CMD_WFU */ && (nvm_wait() & 7) == 0)) return false; @@ -5546,7 +5546,7 @@ write_memory(): 1c0e: 80 e0 ldi r24, 0x00 ; 0 1c10: aa cf rjmp .-172 ; 0x1b66 1c12: c3 01 movw r24, r6 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:201 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:201 && send_bytes(&packet.out.memData[0], _wLength & ~1) && clear_rsd(); } @@ -5560,7 +5560,7 @@ send_bytes_data(): 1c1a: 72 07 cpc r23, r18 1c1c: 81 05 cpc r24, r1 1c1e: 91 05 cpc r25, r1 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv0.cpp:77 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv0.cpp:77 fuses.data = packet.out.memData[_i]; fuses.addr = _wAddr + _i; D2PRINTF(" NVM_V0_WFU=%04X<%02X\r\n", fuses.addr, fuses.data); @@ -5573,14 +5573,14 @@ write_fuse(): 1c24: a7 d8 rcall .-3762 ; 0xd74 1c26: 88 23 and r24, r24 1c28: 91 f3 breq .-28 ; 0x1c0e -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv0.cpp:78 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv0.cpp:78 && (nvm_wait() & 7) == 0)) return false; 1c2a: 47 db rcall .-2418 ; 0x12ba 1c2c: 9f ef ldi r25, 0xFF ; 255 1c2e: e9 1a sub r14, r25 1c30: f9 0a sbc r15, r25 1c32: 87 70 andi r24, 0x07 ; 7 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv0.cpp:76 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv0.cpp:76 for (size_t _i = 0; _i < _wLength; _i++) { fuses.data = packet.out.memData[_i]; fuses.addr = _wAddr + _i; @@ -5591,14 +5591,14 @@ write_fuse(): 1c36: eb cf rjmp .-42 ; 0x1c0e write_memory(): 1c38: 81 e0 ldi r24, 0x01 ; 1 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv0.cpp:80 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv0.cpp:80 && UPDI::nvm_ctrl(0x07) /* NVM_CMD_WFU */ && (nvm_wait() & 7) == 0)) return false; } return true; 1c3a: 95 cf rjmp .-214 ; 0x1b66 1c3c: 82 32 cpi r24, 0x22 ; 34 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv0.cpp:152 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv0.cpp:152 if (m_type == 0xB2 || m_type == 0xB3) { /* MTYPE_FUSE_BITS */ /* MTYPE_LOCK_BITS */ @@ -5612,7 +5612,7 @@ write_memory(): 1c46: 58 f4 brcc .+22 ; 0x1c5e write_eeprom(): 1c48: 38 db rcall .-2448 ; 0x12ba -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv0.cpp:99 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv0.cpp:99 ); } @@ -5621,7 +5621,7 @@ write_eeprom(): nvm_wait(); 1c4a: c7 01 movw r24, r14 1c4c: b6 01 movw r22, r12 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv0.cpp:101 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv0.cpp:101 return ( UPDI::send_bytes_block(_wAddr, _wLength) 1c4e: 88 27 eor r24, r24 @@ -5630,7 +5630,7 @@ write_eeprom(): write_flash(): 1c54: 37 d8 rcall .-3986 ; 0xcc4 1c56: 81 11 cpse r24, r1 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv0.cpp:91 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv0.cpp:91 nvm_wait(); UPDI::nvm_ctrl(0x04); /* NVM_CMD_PBC */ } @@ -5639,7 +5639,7 @@ write_flash(): UPDI::send_bytes_block(_wAddr, _wLength) 1c58: 1b c0 rjmp .+54 ; 0x1c90 1c5a: 90 e0 ldi r25, 0x00 ; 0 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv0.cpp:93 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv0.cpp:93 && UPDI::nvm_ctrl(0x03) /* NVM_CMD_ERWP */ && (nvm_wait() & 7) == 0 1c5c: 21 c0 rjmp .+66 ; 0x1ca0 @@ -5647,7 +5647,7 @@ write_memory(): 1c5e: 80 3b cpi r24, 0xB0 ; 176 1c60: 11 f0 breq .+4 ; 0x1c66 1c62: 80 3c cpi r24, 0xC0 ; 192 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv0.cpp:158 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv0.cpp:158 /* MTYPE_EEPROM */ /* MTYPE_EEPROM_XMEGA */ /* MTYPE_USERSIG (USERROW) */ @@ -5657,7 +5657,7 @@ write_memory(): 1c64: f9 f4 brne .+62 ; 0x1ca4 1c66: 60 91 9e 60 lds r22, 0x609E ; 0x80609e 1c6a: 70 91 9f 60 lds r23, 0x609F ; 0x80609f -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv0.cpp:161 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv0.cpp:161 /* MTYPE_FLASH_PAGE (PROGMEM) */ /* MTYPE_FLASH (alias) */ _wAddr += Device_Descriptor.UPDI.prog_base; @@ -5667,7 +5667,7 @@ write_flash(): 1c72: f1 2c mov r15, r1 1c74: e1 2c mov r14, r1 1c76: c7 01 movw r24, r14 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv0.cpp:85 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv0.cpp:85 return true; } @@ -5682,28 +5682,28 @@ write_flash(): 1c82: 84 e0 ldi r24, 0x04 ; 4 1c84: 77 d8 rcall .-3858 ; 0xd74 1c86: 19 db rcall .-2510 ; 0x12ba -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv0.cpp:86 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv0.cpp:86 nvm_wait(); 1c88: a8 01 movw r20, r16 1c8a: c7 01 movw r24, r14 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv0.cpp:87 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv0.cpp:87 UPDI::nvm_ctrl(0x04); /* NVM_CMD_PBC */ 1c8c: b6 01 movw r22, r12 1c8e: e2 cf rjmp .-60 ; 0x1c54 1c90: 83 e0 ldi r24, 0x03 ; 3 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv0.cpp:89 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv0.cpp:89 } nvm_wait(); 1c92: 70 d8 rcall .-3872 ; 0xd74 1c94: 88 23 and r24, r24 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv0.cpp:91 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv0.cpp:91 return ( UPDI::send_bytes_block(_wAddr, _wLength) 1c96: 09 f3 breq .-62 ; 0x1c5a 1c98: 10 db rcall .-2528 ; 0x12ba 1c9a: 87 70 andi r24, 0x07 ; 7 1c9c: 91 e0 ldi r25, 0x01 ; 1 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv0.cpp:92 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv0.cpp:92 && UPDI::nvm_ctrl(0x03) /* NVM_CMD_ERWP */ 1c9e: e9 f6 brne .-70 ; 0x1c5a write_memory(): @@ -5711,7 +5711,7 @@ write_memory(): 1ca2: 61 cf rjmp .-318 ; 0x1b66 1ca4: c7 01 movw r24, r14 1ca6: b6 01 movw r22, r12 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv0.cpp:93 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv0.cpp:93 && (nvm_wait() & 7) == 0 1ca8: 88 27 eor r24, r24 1caa: 99 27 eor r25, r25 @@ -5721,7 +5721,7 @@ write_memory(): 00001cb2 : reboot(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv0.cpp:162 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv0.cpp:162 } else if (m_type == 0xB0 || m_type == 0xC0) { /* MTYPE_FLASH_PAGE (PROGMEM) */ @@ -5730,7 +5730,7 @@ reboot(): return write_flash(_wAddr, _wLength); 1cb2: 82 ed ldi r24, 0xD2 ; 210 1cb4: 96 e0 ldi r25, 0x06 ; 6 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv0.cpp:166 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv0.cpp:166 } else { /* MTYPE_SRAM */ @@ -5743,7 +5743,7 @@ reboot(): 1cc0: 8f 93 push r24 1cc2: cc db rcall .-2152 ; 0x145c 1cc4: e0 91 8f 60 lds r30, 0x608F ; 0x80608f -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:303 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:303 * * Always run it after the USB has stopped. */ @@ -5780,7 +5780,7 @@ _print_integer(): 1cea: 5f 92 push r5 1cec: 6f 92 push r6 1cee: 7f 92 push r7 -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:306 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:306 Serial.flush(); #endif _PROTECTED_WRITE(RSTCTRL_SWRR, 1); @@ -5789,7 +5789,7 @@ _print_integer(): 1cf4: af 92 push r10 1cf6: bf 92 push r11 1cf8: cf 92 push r12 -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:307 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:307 } 1cfa: df 92 push r13 /Users/askn/Library/Arduino15/packages/MultiX-Zinnia/hardware/modernAVR/0.2.14/cores/modernAVR/api/cpp/Print_integer.cpp:15 @@ -5942,7 +5942,7 @@ Print& Print::_print_integer (uint32_t _number, uint8_t _base, int8_t _direction 1da6: b2 01 movw r22, r4 1da8: a7 01 movw r20, r14 1daa: 96 01 movw r18, r12 - 1dac: 0e 94 84 24 call 0x4908 ; 0x4908 <__udivmodsi4> + 1dac: 0e 94 82 24 call 0x4904 ; 0x4904 <__udivmodsi4> /Users/askn/Library/Arduino15/packages/MultiX-Zinnia/hardware/modernAVR/0.2.14/cores/modernAVR/api/cpp/Print_integer.cpp:42 } } @@ -6095,7 +6095,7 @@ _ZN3USB12setup_deviceEb.part.2(): 1e64: dc e0 ldi r29, 0x0C ; 12 1e66: 18 82 st Y, r1 1e68: 10 92 04 0c sts 0x0C04, r1 ; 0x800c04 <__TEXT_REGION_LENGTH__+0x7f0c04> -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:234 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:234 EP_MEM.cci_header.wIndex = 1; /* Interface#1 */ EP_MEM.cci_header.wLength = 2; EP_MEM.cci_wValue = _state; @@ -6103,60 +6103,60 @@ _ZN3USB12setup_deviceEb.part.2(): void setup_device (bool _force) { 1e6c: 8e e3 ldi r24, 0x3E ; 62 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:238 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:238 if (_led_mode != 3) SYS::LED_Flash(); USB0_ADDR = 0; if (USB0_CTRLA || _force) { USB0_CTRLA = 0; 1e6e: 94 e6 ldi r25, 0x64 ; 100 1e70: 80 93 06 0c sts 0x0C06, r24 ; 0x800c06 <__TEXT_REGION_LENGTH__+0x7f0c06> -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:239 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:239 USB0_FIFOWP = 0; 1e74: 90 93 07 0c sts 0x0C07, r25 ; 0x800c07 <__TEXT_REGION_LENGTH__+0x7f0c07> -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:240 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:240 USB0_EPPTR = (uint16_t)&EP_TABLE.EP; 1e78: 81 e0 ldi r24, 0x01 ; 1 1e7a: 80 93 01 0c sts 0x0C01, r24 ; 0x800c01 <__TEXT_REGION_LENGTH__+0x7f0c01> 1e7e: 1c ba out 0x1c, r1 ; 28 1e80: 1d ba out 0x1d, r1 ; 29 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:241 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:241 USB0_CTRLB = USB_ATTACH_bm; 1e82: 1e ba out 0x1e, r1 ; 30 1e84: 10 92 33 64 sts 0x6433, r1 ; 0x806433 <_send_break> -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:242 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:242 GPCONF = 0; 1e88: 10 92 34 64 sts 0x6434, r1 ; 0x806434 <_send_break+0x1> -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:244 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:244 PGCONF = 0; RXSTAT = 0; 1e8c: 10 92 32 64 sts 0x6432, r1 ; 0x806432 <_send_count> -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:245 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:245 _send_break = 0; 1e90: 10 92 31 64 sts 0x6431, r1 ; 0x806431 <_recv_count> 1e94: 10 92 30 64 sts 0x6430, r1 ; 0x806430 <_set_config> -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:246 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:246 _send_count = 0; 1e98: 10 92 2f 64 sts 0x642F, r1 ; 0x80642f <_sof_count> -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:247 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:247 _recv_count = 0; 1e9c: 4a e4 ldi r20, 0x4A ; 74 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:248 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:248 _set_config = 0; 1e9e: 50 e0 ldi r21, 0x00 ; 0 1ea0: 62 e7 ldi r22, 0x72 ; 114 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:249 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:249 _sof_count = 0; 1ea2: 78 e0 ldi r23, 0x08 ; 8 1ea4: 86 e3 ldi r24, 0x36 ; 54 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:250 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:250 memcpy_P(&EP_TABLE, &ep_init, sizeof(EP_TABLE_t)); 1ea6: 94 e6 ldi r25, 0x64 ; 100 - 1ea8: 0e 94 b9 21 call 0x4372 ; 0x4372 + 1ea8: 0e 94 b7 21 call 0x436e ; 0x436e set_cci_data(): 1eac: 10 92 2e 64 sts 0x642E, r1 ; 0x80642e <_set_serial_state> 1eb0: e6 e1 ldi r30, 0x16 ; 22 1eb2: f3 e6 ldi r31, 0x63 ; 99 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:225 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:225 if (_size) memcpy_P(_buffer, _pgmem, _size); return _size; } @@ -6165,38 +6165,38 @@ set_cci_data(): _set_serial_state = _state; 1eb4: 81 ea ldi r24, 0xA1 ; 161 1eb6: 80 87 std Z+8, r24 ; 0x08 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:226 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:226 EP_MEM.cci_header.bmRequestType = 0xA1; /* REQTYPE_DIRECTION | REQTYPE_CLASS | RECIPIENT_INTERFACE */ 1eb8: 80 e2 ldi r24, 0x20 ; 32 1eba: 81 87 std Z+9, r24 ; 0x09 1ebc: 12 86 std Z+10, r1 ; 0x0a 1ebe: 13 86 std Z+11, r1 ; 0x0b -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:227 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:227 EP_MEM.cci_header.bRequest = 0x20; /* CDC_REQ_SerialState */ 1ec0: 81 e0 ldi r24, 0x01 ; 1 1ec2: 90 e0 ldi r25, 0x00 ; 0 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:228 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:228 EP_MEM.cci_header.wValue = 0; 1ec4: 84 87 std Z+12, r24 ; 0x0c 1ec6: 95 87 std Z+13, r25 ; 0x0d -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:229 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:229 EP_MEM.cci_header.wIndex = 1; /* Interface#1 */ 1ec8: 82 e0 ldi r24, 0x02 ; 2 1eca: 90 e0 ldi r25, 0x00 ; 0 1ecc: 86 87 std Z+14, r24 ; 0x0e 1ece: 97 87 std Z+15, r25 ; 0x0f -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:230 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:230 EP_MEM.cci_header.wLength = 2; 1ed0: 10 8a std Z+16, r1 ; 0x10 1ed2: 11 8a std Z+17, r1 ; 0x11 _ZN3USB12setup_deviceEb.part.2(): 1ed4: 83 e8 ldi r24, 0x83 ; 131 1ed6: 88 83 st Y, r24 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:231 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:231 EP_MEM.cci_wValue = _state; 1ed8: df 91 pop r29 1eda: cf 91 pop r28 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:252 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:252 _recv_count = 0; _set_config = 0; _sof_count = 0; @@ -6208,13 +6208,13 @@ _ZN3USB12setup_deviceEb.part.2(): 00001ede : disable_vcp(): 1ede: 84 e3 ldi r24, 0x34 ; 52 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:254 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:254 } } 1ee0: 98 e0 ldi r25, 0x08 ; 8 1ee2: 9f 93 push r25 1ee4: 8f 93 push r24 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usart.cpp:52 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usart.cpp:52 } while (--_delay); } @@ -6245,7 +6245,7 @@ void delay_micros (uint32_t _us) { disable_vcp(): 1efc: 10 92 06 08 sts 0x0806, r1 ; 0x800806 <__TEXT_REGION_LENGTH__+0x7f0806> 1f00: 10 92 05 08 sts 0x0805, r1 ; 0x800805 <__TEXT_REGION_LENGTH__+0x7f0805> -/Users/askn/Collaborator/UPDI4AVR-USB/src/usart.cpp:58 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usart.cpp:58 /* Allow time to move USART0_TXDATA */ delay_micros(4); ATOMIC_BLOCK(ATOMIC_RESTORESTATE) { @@ -6254,33 +6254,33 @@ disable_vcp(): USART0_CTRLB = 0; 1f04: 1e ba out 0x1e, r1 ; 30 1f06: 1f ba out 0x1f, r1 ; 31 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usart.cpp:59 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usart.cpp:59 USART0_CTRLA = 0; 1f08: 1d ba out 0x1d, r1 ; 29 1f0a: 92 e1 ldi r25, 0x12 ; 18 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usart.cpp:60 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usart.cpp:60 RXSTAT = 0; 1f0c: 90 93 e2 05 sts 0x05E2, r25 ; 0x8005e2 <__TEXT_REGION_LENGTH__+0x7f05e2> -/Users/askn/Collaborator/UPDI4AVR-USB/src/usart.cpp:62 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usart.cpp:62 RXDATA = 0; PGCONF = 0; 1f10: e1 98 cbi 0x1c, 1 ; 28 __iRestore(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/usart.cpp:63 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usart.cpp:63 PORTMUX_USARTROUTEA = PORTMUX_USART_VCP; 1f12: 8f bf out 0x3f, r24 ; 63 disable_vcp(): 1f14: 00 98 cbi 0x00, 0 ; 0 1f16: 88 e0 ldi r24, 0x08 ; 8 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usart.cpp:64 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usart.cpp:64 bit_clear(GPCONF, GPCONF_VCP_bp); 1f18: 80 93 10 04 sts 0x0410, r24 ; 0x800410 <__TEXT_REGION_LENGTH__+0x7f0410> -/Users/askn/Collaborator/UPDI4AVR-USB/src/usart.cpp:66 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usart.cpp:66 } pinModeMacro(PIN_PG_TDAT, INPUT_PULLUP); /* open-drain */ 1f1c: 02 98 cbi 0x00, 2 ; 0 1f1e: 80 93 12 04 sts 0x0412, r24 ; 0x800412 <__TEXT_REGION_LENGTH__+0x7f0412> -/Users/askn/Collaborator/UPDI4AVR-USB/src/usart.cpp:70 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usart.cpp:70 /* TXD changes to INPUT when USART is disabled. */ /* Force OUTPUT to maintain BREAK state. */ #ifdef CONFIG_VCP_TXD_ODM @@ -6288,7 +6288,7 @@ disable_vcp(): 1f22: 02 98 cbi 0x00, 2 ; 0 1f24: 0f 90 pop r0 1f26: 0f 90 pop r0 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usart.cpp:71 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usart.cpp:71 openDrainWriteMacro(PIN_VCP_TXD, HIGH); 1f28: 0f 90 pop r0 1f2a: 0f 90 pop r0 @@ -6297,13 +6297,13 @@ disable_vcp(): 00001f2e : LED_TCB1(): 1f2e: 80 91 85 60 lds r24, 0x6085 ; 0x806085 <_led_mode> -/Users/askn/Collaborator/UPDI4AVR-USB/src/usart.cpp:75 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usart.cpp:75 #else pinModeMacro(PIN_VCP_TXD, OUTPUT); /* push-pull : There are problems when using TPI. */ #endif } 1f32: 84 30 cpi r24, 0x04 ; 4 -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:198 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:198 _led_mode = 1; } } @@ -6313,28 +6313,28 @@ LED_TCB1(): 1f34: 81 f0 breq .+32 ; 0x1f56 1f36: 10 92 00 0a sts 0x0A00, r1 ; 0x800a00 <__TEXT_REGION_LENGTH__+0x7f0a00> 1f3a: 10 92 1a 0b sts 0x0B1A, r1 ; 0x800b1a <__TEXT_REGION_LENGTH__+0x7f0b1a> -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:199 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:199 TCA0_SPLIT_CTRLA = 0; 1f3e: 82 e2 ldi r24, 0x22 ; 34 -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:200 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:200 TCB1_CNTL = 0; 1f40: 91 e1 ldi r25, 0x11 ; 17 1f42: 80 93 1c 0b sts 0x0B1C, r24 ; 0x800b1c <__TEXT_REGION_LENGTH__+0x7f0b1c> -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:201 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:201 TCB1_CCMP = _ccmp; 1f46: 90 93 1d 0b sts 0x0B1D, r25 ; 0x800b1d <__TEXT_REGION_LENGTH__+0x7f0b1d> 1f4a: 8f e4 ldi r24, 0x4F ; 79 1f4c: 80 93 10 0b sts 0x0B10, r24 ; 0x800b10 <__TEXT_REGION_LENGTH__+0x7f0b10> -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:202 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:202 TCB1_CTRLA = TCB_RUNSTDBY_bm | TCB_ENABLE_bm | TCB_CLKSEL_EVENT_gc; 1f50: 84 e0 ldi r24, 0x04 ; 4 1f52: 80 93 85 60 sts 0x6085, r24 ; 0x806085 <_led_mode> setup(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:203 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:203 _led_mode = _mode; 1f56: c3 df rcall .-122 ; 0x1ede 1f58: 03 98 cbi 0x00, 3 ; 0 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usart.cpp:26 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usart.cpp:26 namespace USART { @@ -6343,11 +6343,11 @@ namespace USART { disable_vcp(); 1f5a: 88 e0 ldi r24, 0x08 ; 8 1f5c: 80 93 13 04 sts 0x0413, r24 ; 0x800413 <__TEXT_REGION_LENGTH__+0x7f0413> -/Users/askn/Collaborator/UPDI4AVR-USB/src/usart.cpp:27 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usart.cpp:27 pinModeMacro(PIN_VCP_RXD, INPUT_PULLUP); /* USART0_DEFAULT or USART0_ALT2 */ 1f60: 01 98 cbi 0x00, 1 ; 0 1f62: 80 93 11 04 sts 0x0411, r24 ; 0x800411 <__TEXT_REGION_LENGTH__+0x7f0411> -/Users/askn/Collaborator/UPDI4AVR-USB/src/usart.cpp:28 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usart.cpp:28 pinModeMacro(PIN_PG_TRST, INPUT_PULLUP); /* USART0_ALT3 or USART0_DEFAULT */ 1f66: 08 95 ret @@ -6355,10 +6355,10 @@ namespace USART { enter_progmode(): 1f68: cf 93 push r28 1f6a: 8d b3 in r24, 0x1d ; 29 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usart.cpp:29 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usart.cpp:29 } 1f6c: c8 2f mov r28, r24 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:391 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:391 nop(); openDrainWriteMacro(PIN_PG_TRST, HIGH); return _result; @@ -6366,13 +6366,13 @@ enter_progmode(): size_t enter_progmode (void) { 1f6e: c2 70 andi r28, 0x02 ; 2 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:392 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:392 if (bit_is_set(PGCONF, PGCONF_PROG_bp)) return 1; 1f70: 81 fd sbrc r24, 1 1f72: 2e c0 rjmp .+92 ; 0x1fd0 1f74: 81 e0 ldi r24, 0x01 ; 1 1f76: 63 db rcall .-2362 ; 0x163e -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:393 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:393 if (!set_nvmprog_key()) return 0; 1f78: 81 11 cpse r24, r1 1f7a: 06 c0 rjmp .+12 ; 0x1f88 @@ -6381,7 +6381,7 @@ enter_progmode(): 1f80: cf 91 pop r28 1f82: 08 95 ret 1f84: c1 30 cpi r28, 0x01 ; 1 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:406 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:406 sys_status(); } while (bit_is_clear(RXDATA, 3)); /* wait set PROGSTART */ D1PRINTF(" PROGSTART=%02X\r\n", RXDATA); @@ -6391,7 +6391,7 @@ enter_progmode(): 1f86: d1 f3 breq .-12 ; 0x1f7c delay_micros(): 1f88: 89 ef ldi r24, 0xF9 ; 249 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:399 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:399 uint8_t _count = 0; do { /* Do not wait for the global timeout to ensure that LOCKSTAT cannot */ @@ -6406,16 +6406,16 @@ delay_micros(): 1f92: 00 00 nop enter_progmode(): 1f94: 0e 94 f8 05 call 0xbf0 ; 0xbf0 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:401 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:401 delay_micros(50); sys_status(); 1f98: c1 50 subi r28, 0x01 ; 1 1f9a: fb 9b sbis 0x1f, 3 ; 31 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:402 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:402 } while (bit_is_clear(RXDATA, 3)); /* wait set PROGSTART */ 1f9c: f3 cf rjmp .-26 ; 0x1f84 1f9e: 8f b3 in r24, 0x1f ; 31 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:403 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:403 D1PRINTF(" PROGSTART=%02X\r\n", RXDATA); 1fa0: 1f 92 push r1 1fa2: 8f 93 push r24 @@ -6429,10 +6429,10 @@ enter_progmode(): 1fb2: 8f 93 push r24 1fb4: 53 da rcall .-2906 ; 0x145c 1fb6: e9 9a sbi 0x1d, 1 ; 29 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:404 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:404 bit_set(PGCONF, PGCONF_PROG_bp); 1fb8: 0f 90 pop r0 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:405 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:405 return (*Command_Table.prog_init)(); 1fba: 0f 90 pop r0 1fbc: 0f 90 pop r0 @@ -6441,10 +6441,10 @@ enter_progmode(): 1fc2: 0f 90 pop r0 1fc4: e0 91 0e 63 lds r30, 0x630E ; 0x80630e 1fc8: f0 91 0f 63 lds r31, 0x630F ; 0x80630f -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:406 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:406 } 1fcc: cf 91 pop r28 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:392 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:392 openDrainWriteMacro(PIN_PG_TRST, HIGH); return _result; } @@ -6453,7 +6453,7 @@ enter_progmode(): if (bit_is_set(PGCONF, PGCONF_PROG_bp)) return 1; 1fce: 09 94 ijmp 1fd0: 81 e0 ldi r24, 0x01 ; 1 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:252 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:252 D1PRINTF(" KEY=%02X\r\n", RXDATA); return sys_reset(false); } @@ -6467,7 +6467,7 @@ enter_progmode(): chip_erase(): 1fd6: 90 e0 ldi r25, 0x00 ; 0 1fd8: 80 e0 ldi r24, 0x00 ; 0 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:235 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:235 D1PRINTF(" KEY=%02X\r\n", RXDATA); return _reset ? sys_reset(false) : true; } @@ -6479,7 +6479,7 @@ set_erase_key(): 1fde: e9 99 sbic 0x1d, 1 ; 29 1fe0: 02 c0 rjmp .+4 ; 0x1fe6 1fe2: 80 e0 ldi r24, 0x00 ; 0 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:236 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:236 D1PRINTF(" ERASE_KEY\r\n"); 1fe4: 2c db rcall .-2472 ; 0x163e 1fe6: 85 e7 ldi r24, 0x75 ; 117 @@ -6491,7 +6491,7 @@ set_erase_key(): 1ff2: 9f 93 push r25 1ff4: 8f 93 push r24 1ff6: 32 da rcall .-2972 ; 0x145c -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:237 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:237 if (!send_bytes(erase_key, sizeof(erase_key))) return false; 1ff8: 6a e0 ldi r22, 0x0A ; 10 1ffa: 70 e0 ldi r23, 0x00 ; 0 @@ -6505,7 +6505,7 @@ set_erase_key(): 200c: 81 11 cpse r24, r1 200e: 02 c0 rjmp .+4 ; 0x2014 <__DATA_REGION_LENGTH__+0x14> chip_erase(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:268 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:268 do { sys_status(); } while(bit_is_clear(RXDATA, 3)); /* wait set PROGSTART */ } D1PRINTF(" PROGSTART=%02X\r\n", RXDATA); @@ -6513,7 +6513,7 @@ chip_erase(): bit_set(PGCONF, PGCONF_PROG_bp); return (*Command_Table.prog_init)(); 2010: 20 e0 ldi r18, 0x00 ; 0 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:238 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:238 bool set_erase_key (void) { if (bit_is_clear(PGCONF, PGCONF_PROG_bp)) set_nvmprog_key(false); @@ -6524,7 +6524,7 @@ chip_erase(): set_erase_key(): 2014: 0e 94 01 06 call 0xc02 ; 0xc02 2018: fb 9b sbis 0x1f, 3 ; 31 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:239 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:239 D1PRINTF(" KEY=%02X\r\n", RXDATA); 201a: fc cf rjmp .-8 ; 0x2014 <__DATA_REGION_LENGTH__+0x14> 201c: 8f b3 in r24, 0x1f ; 31 @@ -6540,7 +6540,7 @@ set_erase_key(): 2030: 8f 93 push r24 2032: 14 da rcall .-3032 ; 0x145c sys_reset(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:130 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:130 const static uint8_t _reset[] = { 0x55, 0xC8, 0x59, /* SYSRST */ 0x55, 0xC8, 0x00, /* SYSRUN */ @@ -6553,7 +6553,7 @@ sys_reset(): 203a: 90 e6 ldi r25, 0x60 ; 96 203c: 0e 94 e5 05 call 0xbca ; 0xbca chip_erase(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:253 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:253 return sys_reset(false); } @@ -6584,7 +6584,7 @@ void delay_millis (uint32_t _ms) { 205a: 90 40 sbci r25, 0x00 ; 0 205c: e1 f7 brne .-8 ; 0x2056 <__DATA_REGION_LENGTH__+0x56> 205e: 00 c0 rjmp .+0 ; 0x2060 <__DATA_REGION_LENGTH__+0x60> -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:255 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:255 delay_millis(200); USART::drain(); 2060: 00 00 nop @@ -6592,16 +6592,16 @@ chip_erase(): 2062: 90 e0 ldi r25, 0x00 ; 0 2064: 80 e0 ldi r24, 0x00 ; 0 2066: 0e 94 6e 05 call 0xadc ; 0xadc -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:256 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:256 do { sys_status(); } while(bit_is_set(RXDATA, 5)); /* wait clear RSTSYS */ 206a: 0e 94 f8 05 call 0xbf0 ; 0xbf0 206e: fd 99 sbic 0x1f, 5 ; 31 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:257 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:257 do { sys_status(); } while(bit_is_set(RXDATA, 0)); /* wait clear LOCKSTATUS */ 2070: fc cf rjmp .-8 ; 0x206a <__DATA_REGION_LENGTH__+0x6a> 2072: 0e 94 f8 05 call 0xbf0 ; 0xbf0 2076: f8 99 sbic 0x1f, 0 ; 31 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:258 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:258 D1PRINTF(" \r\n", RXDATA); 2078: fc cf rjmp .-8 ; 0x2072 <__DATA_REGION_LENGTH__+0x72> 207a: 8f b3 in r24, 0x1f ; 31 @@ -6621,19 +6621,19 @@ chip_erase(): 2096: 0f 90 pop r0 2098: 0f 90 pop r0 209a: 0f 90 pop r0 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:259 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:259 do { key_status(); } while(bit_is_set(RXDATA, 3)); /* wait clear CHIPERASE */ 209c: 0f 90 pop r0 209e: 0e 94 01 06 call 0xc02 ; 0xc02 20a2: fb 99 sbic 0x1f, 3 ; 31 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:260 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:260 sys_status(); 20a4: fc cf rjmp .-8 ; 0x209e <__DATA_REGION_LENGTH__+0x9e> 20a6: 0e 94 f8 05 call 0xbf0 ; 0xbf0 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:261 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:261 if (bit_is_clear(RXDATA, 3)) { 20aa: fb 99 sbic 0x1f, 3 ; 31 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:262 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:262 if (!set_nvmprog_key()) return false; 20ac: 09 c0 rjmp .+18 ; 0x20c0 <__DATA_REGION_LENGTH__+0xc0> 20ae: 81 e0 ldi r24, 0x01 ; 1 @@ -6641,12 +6641,12 @@ chip_erase(): 20b2: 88 23 and r24, r24 20b4: 09 f4 brne .+2 ; 0x20b8 <__DATA_REGION_LENGTH__+0xb8> 20b6: ac cf rjmp .-168 ; 0x2010 <__DATA_REGION_LENGTH__+0x10> -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:263 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:263 do { sys_status(); } while(bit_is_clear(RXDATA, 3)); /* wait set PROGSTART */ 20b8: 0e 94 f8 05 call 0xbf0 ; 0xbf0 20bc: fb 9b sbis 0x1f, 3 ; 31 20be: fc cf rjmp .-8 ; 0x20b8 <__DATA_REGION_LENGTH__+0xb8> -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:265 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:265 } D1PRINTF(" PROGSTART=%02X\r\n", RXDATA); 20c0: 8f b3 in r24, 0x1f ; 31 @@ -6662,13 +6662,13 @@ chip_erase(): 20d4: 8f 93 push r24 20d6: c2 d9 rcall .-3196 ; 0x145c 20d8: ea 9a sbi 0x1d, 2 ; 29 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:266 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:266 bit_set(PGCONF, PGCONF_ERSE_bp); 20da: e9 9a sbi 0x1d, 1 ; 29 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:267 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:267 bit_set(PGCONF, PGCONF_PROG_bp); 20dc: e0 91 0e 63 lds r30, 0x630E ; 0x80630e -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:268 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:268 return (*Command_Table.prog_init)(); 20e0: f0 91 0f 63 lds r31, 0x630F ; 0x80630f 20e4: 09 95 icall @@ -6682,14 +6682,14 @@ chip_erase(): 20f4: 89 2b or r24, r25 20f6: 09 f4 brne .+2 ; 0x20fa <__DATA_REGION_LENGTH__+0xfa> 20f8: 8b cf rjmp .-234 ; 0x2010 <__DATA_REGION_LENGTH__+0x10> -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:269 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:269 } 20fa: 82 2f mov r24, r18 20fc: 08 95 ret 000020fe : erase_memory(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv4.cpp:140 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv4.cpp:140 } return 0; } @@ -6697,16 +6697,16 @@ erase_memory(): size_t erase_memory (void) { uint8_t e_type = packet.out.bEType; 20fe: 80 91 d5 60 lds r24, 0x60D5 ; 0x8060d5 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv4.cpp:141 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv4.cpp:141 if (e_type == 0x00) { 2102: 81 11 cpse r24, r1 2104: 03 c0 rjmp .+6 ; 0x210c -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv4.cpp:143 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv4.cpp:143 /* XMEGA_ERASE_CHIP */ return UPDI::chip_erase(); 2106: 67 df rcall .-306 ; 0x1fd6 2108: 90 e0 ldi r25, 0x00 ; 0 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv4.cpp:150 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv4.cpp:150 else { /* NOTE: AVRDUDE<=7.3 may pass the wrong M_TYPE. */ /* For safety, only USERROW and BOOTROW are allowed to erase pages. */ @@ -6715,7 +6715,7 @@ erase_memory(): return erase_flash_page(packet.out.dwAddr); 210a: 08 95 ret 210c: 87 30 cpi r24, 0x07 ; 7 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv4.cpp:148 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv4.cpp:148 return UPDI::chip_erase(); } else { @@ -6724,7 +6724,7 @@ erase_memory(): if (e_type == 0x07) { 210e: 51 f4 brne .+20 ; 0x2124 2110: 60 91 d6 60 lds r22, 0x60D6 ; 0x8060d6 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv4.cpp:150 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv4.cpp:150 /* XMEGA_ERASE_USERSIG */ return erase_flash_page(packet.out.dwAddr); 2114: 70 91 d7 60 lds r23, 0x60D7 ; 0x8060d7 @@ -6734,7 +6734,7 @@ erase_memory(): 2122: f2 cf rjmp .-28 ; 0x2108 2124: 81 e0 ldi r24, 0x01 ; 1 2126: 90 e0 ldi r25, 0x00 ; 0 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv4.cpp:155 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv4.cpp:155 } } /* Page erase will not be used if received. */ @@ -6744,7 +6744,7 @@ erase_memory(): 0000212a : 212a: 80 91 d5 60 lds r24, 0x60D5 ; 0x8060d5 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv2.cpp:137 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv2.cpp:137 } return 0; } @@ -6753,16 +6753,16 @@ erase_memory(): uint8_t e_type = packet.out.bEType; 212e: 81 11 cpse r24, r1 2130: 03 c0 rjmp .+6 ; 0x2138 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv2.cpp:138 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv2.cpp:138 if (e_type == 0x00) { 2132: 51 df rcall .-350 ; 0x1fd6 2134: 90 e0 ldi r25, 0x00 ; 0 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv2.cpp:140 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv2.cpp:140 /* XMEGA_ERASE_CHIP */ return UPDI::chip_erase(); 2136: 08 95 ret 2138: 87 30 cpi r24, 0x07 ; 7 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv2.cpp:147 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv2.cpp:147 else { /* NOTE: AVRDUDE<=7.3 may pass the wrong M_TYPE. */ /* For safety, only USERROW and BOOTROW are allowed to erase pages. */ @@ -6770,7 +6770,7 @@ erase_memory(): /* XMEGA_ERASE_USERSIG */ return erase_flash_page(packet.out.dwAddr); 213a: 51 f4 brne .+20 ; 0x2150 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv2.cpp:145 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv2.cpp:145 return UPDI::chip_erase(); } else { @@ -6778,7 +6778,7 @@ erase_memory(): /* For safety, only USERROW and BOOTROW are allowed to erase pages. */ if (e_type == 0x07) { 213c: 60 91 d6 60 lds r22, 0x60D6 ; 0x8060d6 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv2.cpp:147 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv2.cpp:147 /* XMEGA_ERASE_USERSIG */ return erase_flash_page(packet.out.dwAddr); 2140: 70 91 d7 60 lds r23, 0x60D7 ; 0x8060d7 @@ -6791,17 +6791,17 @@ erase_memory(): 2154: 08 95 ret 00002156 : -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv2.cpp:152 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv2.cpp:152 } } /* Page erase will not be used if received. */ /* Instead, page erase is determined by the is_boundary_flash_page function. */ return 1; 2156: 80 91 d5 60 lds r24, 0x60D5 ; 0x8060d5 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv2.cpp:153 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv2.cpp:153 } 215a: 81 11 cpse r24, r1 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv0.cpp:134 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv0.cpp:134 return 0; } @@ -6812,7 +6812,7 @@ erase_memory(): 215e: 3b df rcall .-394 ; 0x1fd6 2160: 90 e0 ldi r25, 0x00 ; 0 2162: 08 95 ret -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv0.cpp:136 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv0.cpp:136 /* XMEGA_ERASE_CHIP */ return UPDI::chip_erase(); 2164: 81 e0 ldi r24, 0x01 ; 1 @@ -6825,7 +6825,7 @@ _ZN3NVM2V512erase_memoryEv(): 0000216c : _ZN3NVM2V312erase_memoryEv(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv0.cpp:139 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv0.cpp:139 } /* Page erase will not be used if received. */ return 1; @@ -6834,14 +6834,14 @@ _ZN3NVM2V312erase_memoryEv(): 0000216e : connect(): 216e: af 92 push r10 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv0.cpp:140 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv0.cpp:140 } 2170: bf 92 push r11 2172: cf 92 push r12 2174: df 92 push r13 2176: ef 92 push r14 2178: ff 92 push r15 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:211 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:211 return nvm_ctrl(0x00); } @@ -6859,10 +6859,10 @@ connect(): 218a: 8d bb out 0x1d, r24 ; 29 218c: 80 91 9c 60 lds r24, 0x609C ; 0x80609c <_packet_length> 2190: 90 91 9d 60 lds r25, 0x609D ; 0x80609d <_packet_length+0x1> -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:212 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:212 PGCONF = PGCONF_FAIL_bm; 2194: 07 97 sbiw r24, 0x07 ; 7 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:214 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:214 if (_packet_length > 6 && packet.out.tpi.bType) { 2196: 88 f0 brcs .+34 ; 0x21ba @@ -6874,7 +6874,7 @@ connect(): 21a4: 9f 93 push r25 21a6: 8f 93 push r24 21a8: 8d e8 ldi r24, 0x8D ; 141 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:216 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:216 /* External Reset : Activation High-Voltage mode */ D1PRINTF("\r\n"); 21aa: 90 e6 ldi r25, 0x60 ; 96 @@ -6892,7 +6892,7 @@ delay_millis(): 21c0: 84 e3 ldi r24, 0x34 ; 52 21c2: 9c e0 ldi r25, 0x0C ; 12 21c4: 21 50 subi r18, 0x01 ; 1 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:222 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:222 /* STUB */ } @@ -6900,7 +6900,7 @@ delay_millis(): /* TRST remains LOW until program mode is exited. */ openDrainWriteMacro(PIN_VCP_TXD, LOW); 21c6: 80 40 sbci r24, 0x00 ; 0 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:223 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:223 openDrainWriteMacro(PIN_PG_TRST, LOW); 21c8: 90 40 sbci r25, 0x00 ; 0 /Users/askn/Library/Arduino15/packages/MultiX-Zinnia/hardware/modernAVR/0.2.14/cores/modernAVR/api/delay_busywait.h:42 @@ -6914,7 +6914,7 @@ set_sstcs(): 21d8: 03 c0 rjmp .+6 ; 0x21e0 connect(): 21da: 90 e0 ldi r25, 0x00 ; 0 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:69 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:69 bool get_sldcs (const uint8_t _addr) { return (send(0x80 | _addr) && recv()); } @@ -6926,7 +6926,7 @@ connect(): set_sstcs(): 21e0: 85 e0 ldi r24, 0x05 ; 5 21e2: 0e 94 f5 07 call 0xfea ; 0xfea -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:246 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:246 while (!(get_sldcs(0x00) && RXDATA == 0x02)) { /* get TPISR */ D1PRINTF(" SKEY\r\n"); @@ -6936,7 +6936,7 @@ set_sstcs(): 21e6: 88 23 and r24, r24 21e8: c1 f3 breq .-16 ; 0x21da connect(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:69 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:69 bool get_sldcs (const uint8_t _addr) { return (send(0x80 | _addr) && recv()); } @@ -6948,7 +6948,7 @@ connect(): 21ee: 9f 93 push r25 21f0: 8f 93 push r24 21f2: 8d e8 ldi r24, 0x8D ; 141 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:233 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:233 /* During the wait, TCLK will emit a sufficient number of pulses. */ delay_millis(200); @@ -6969,7 +6969,7 @@ get_sldcs(): 220a: 88 23 and r24, r24 220c: d9 f3 breq .-10 ; 0x2204 220e: 0e 94 e5 07 call 0xfca ; 0xfca -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:65 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:65 } /*** TPI control and CSS area command ***/ @@ -6985,7 +6985,7 @@ connect(): 221c: 8f b3 in r24, 0x1f ; 31 221e: 1f 92 push r1 2220: 8f 93 push r24 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:236 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:236 /*** Set TPIPCR Guard Time : 4 clock ****/ if (!set_sstcs(0x02, 0x05)) return 0; D1PRINTF(" TPIPCR<05\r\n"); @@ -6995,7 +6995,7 @@ connect(): 2222: 8d e2 ldi r24, 0x2D ; 45 2224: 97 e0 ldi r25, 0x07 ; 7 2226: 9f 93 push r25 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:237 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:237 D1PRINTF(" TPIIR>%02X\r\n", RXDATA); 2228: 8f 93 push r24 222a: 8d e8 ldi r24, 0x8D ; 141 @@ -7010,7 +7010,7 @@ connect(): 223c: 0f 90 pop r0 223e: 0f 90 pop r0 2240: 0f 90 pop r0 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:238 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:238 bit_set(PGCONF, PGCONF_UPDI_bp); 2242: 87 e1 ldi r24, 0x17 ; 23 2244: e8 2e mov r14, r24 @@ -7019,7 +7019,7 @@ connect(): 224a: 9d e8 ldi r25, 0x8D ; 141 224c: c9 2e mov r12, r25 224e: 90 e6 ldi r25, 0x60 ; 96 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:243 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:243 /*** Activate NVMPROG mode ***/ @@ -7036,7 +7036,7 @@ get_sldcs(): 2260: 88 23 and r24, r24 2262: e1 f1 breq .+120 ; 0x22dc 2264: 0e 94 e5 07 call 0xfca ; 0xfca -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:65 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:65 } /*** TPI control and CSS area command ***/ @@ -7052,7 +7052,7 @@ connect(): 2272: 8f b3 in r24, 0x1f ; 31 2274: 1f 92 push r1 2276: 8f 93 push r24 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:242 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:242 D1PRINTF(" TPIIR>%02X\r\n", RXDATA); bit_set(PGCONF, PGCONF_UPDI_bp); @@ -7062,7 +7062,7 @@ connect(): 2278: 8f e1 ldi r24, 0x1F ; 31 227a: 97 e0 ldi r25, 0x07 ; 7 227c: 9f 93 push r25 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:251 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:251 return 0; } idle_clock(4); @@ -7081,7 +7081,7 @@ connect(): 2290: 9f e3 ldi r25, 0x3F ; 63 2292: 0e 94 30 08 call 0x1060 ; 0x1060 2296: 0f 90 pop r0 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:265 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:265 * Other is written in 1 word chunks. * * The original PICKit4 probably does the same thing, @@ -7090,7 +7090,7 @@ connect(): uint16_t _signature = 0; 2298: 0f 90 pop r0 229a: 0f 90 pop r0 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:266 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:266 if (set_sstpr(0x3FC1) && get_sld()) { 229c: 0f 90 pop r0 229e: 0f 90 pop r0 @@ -7108,11 +7108,11 @@ connect(): 22ba: 88 23 and r24, r24 22bc: 11 f0 breq .+4 ; 0x22c2 22be: 8f b3 in r24, 0x1f ; 31 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:267 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:267 _CAPS16(_signature)->bytes[1] = RXDATA; 22c0: 89 83 std Y+1, r24 ; 0x01 22c2: 29 81 ldd r18, Y+1 ; 0x01 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:268 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:268 if (get_sld()) _CAPS16(_signature)->bytes[0] = RXDATA; 22c4: 3a 81 ldd r19, Y+2 ; 0x02 22c6: 88 e0 ldi r24, 0x08 ; 8 @@ -7120,7 +7120,7 @@ connect(): 22ca: f2 e9 ldi r31, 0x92 ; 146 22cc: 3f 07 cpc r19, r31 22ce: 11 f1 breq .+68 ; 0x2314 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:270 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:270 } _tpi_chunks = _signature == 0x920E ? 8 /* ATtiny40 */ 22d0: 2f 30 cpi r18, 0x0F ; 15 @@ -7136,7 +7136,7 @@ connect(): 22e4: bb d8 rcall .-3722 ; 0x145c 22e6: 00 e3 ldi r16, 0x30 ; 48 22e8: 10 e6 ldi r17, 0x60 ; 96 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:243 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:243 bit_set(PGCONF, PGCONF_UPDI_bp); /*** Activate NVMPROG mode ***/ @@ -7154,7 +7154,7 @@ connect(): 22fc: 88 23 and r24, r24 22fe: 09 f4 brne .+2 ; 0x2302 2300: 6c cf rjmp .-296 ; 0x21da -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:245 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:245 for (uint8_t i = 0; i < (uint8_t)sizeof(nvmprog_key); i++) { if (!send(nvmprog_key[i])) { 2302: 84 e0 ldi r24, 0x04 ; 4 @@ -7164,14 +7164,14 @@ connect(): 230c: b1 06 cpc r11, r17 230e: 89 f7 brne .-30 ; 0x22f2 2310: a4 cf rjmp .-184 ; 0x225a -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:248 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:248 return 0; } idle_clock(4); 2312: 84 e0 ldi r24, 0x04 ; 4 2314: 80 93 9b 60 sts 0x609B, r24 ; 0x80609b <_tpi_chunks> 2318: 1f 92 push r1 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:244 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:244 /*** Activate NVMPROG mode ***/ @@ -7182,7 +7182,7 @@ connect(): 231c: 3f 93 push r19 231e: 2f 93 push r18 2320: 86 e0 ldi r24, 0x06 ; 6 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:270 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:270 uint16_t _signature = 0; if (set_sstpr(0x3FC1) && get_sld()) { _CAPS16(_signature)->bytes[1] = RXDATA; @@ -7192,7 +7192,7 @@ connect(): 2322: 97 e0 ldi r25, 0x07 ; 7 2324: 9f 93 push r25 2326: 8f 93 push r24 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:273 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:273 : _signature == 0x910F ? 4 /* ATtiny20 */ : 2; /* Othres */ D1PRINTF(" SIG>%04X:%02X\r\n", _signature, _tpi_chunks); @@ -7210,16 +7210,16 @@ connect(): 233e: 0f 90 pop r0 2340: df 91 pop r29 2342: cf 91 pop r28 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:274 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:274 bit_set(PGCONF, PGCONF_PROG_bp); 2344: 1f 91 pop r17 2346: 0f 91 pop r16 2348: ff 90 pop r15 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:275 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:275 return 1; 234a: ef 90 pop r14 234c: df 90 pop r13 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:276 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:276 } 234e: cf 90 pop r12 2350: bf 90 pop r11 @@ -7237,7 +7237,7 @@ disconnect(): 2362: 80 e0 ldi r24, 0x00 ; 0 2364: 0e 94 6e 05 call 0xadc ; 0xadc sys_reset(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:270 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:270 uint16_t _signature = 0; if (set_sstpr(0x3FC1) && get_sld()) { _CAPS16(_signature)->bytes[1] = RXDATA; @@ -7247,7 +7247,7 @@ sys_reset(): 2368: 69 e0 ldi r22, 0x09 ; 9 236a: 70 e0 ldi r23, 0x00 ; 0 236c: 82 e7 ldi r24, 0x72 ; 114 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:380 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:380 } } return 0; @@ -7257,12 +7257,12 @@ sys_reset(): 236e: 90 e6 ldi r25, 0x60 ; 96 2370: 0e 94 e5 05 call 0xbca ; 0xbca disconnect(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:381 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:381 USART::drain(); 2374: 1d ba out 0x1d, r1 ; 29 2376: c8 2f mov r28, r24 2378: d0 e0 ldi r29, 0x00 ; 0 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:130 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:130 const static uint8_t _reset[] = { 0x55, 0xC8, 0x59, /* SYSRST */ 0x55, 0xC8, 0x00, /* SYSRUN */ @@ -7275,7 +7275,7 @@ disconnect(): 2380: 98 e0 ldi r25, 0x08 ; 8 2382: 9f 93 push r25 2384: 8f 93 push r24 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:383 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:383 } size_t disconnect (void) { @@ -7283,7 +7283,7 @@ disconnect(): bool _result = sys_reset(true); PGCONF = 0; 2386: 8d e8 ldi r24, 0x8D ; 141 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:384 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:384 D1PRINTF(" \r\n", _result); 2388: 90 e6 ldi r25, 0x60 ; 96 238a: 9f 93 push r25 @@ -7299,32 +7299,32 @@ disconnect(): 239e: 0f 90 pop r0 23a0: 0f 90 pop r0 23a2: ce 01 movw r24, r28 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:385 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:385 openDrainWriteMacro(PIN_PG_TRST, LOW); 23a4: df 91 pop r29 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:386 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:386 nop(); 23a6: cf 91 pop r28 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:387 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:387 openDrainWriteMacro(PIN_PG_TRST, HIGH); 23a8: 08 95 ret 000023aa : connect(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:388 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:388 return _result; 23aa: cf 93 push r28 23ac: df 93 push r29 23ae: 80 e8 ldi r24, 0x80 ; 128 23b0: 8d bb out 0x1d, r24 ; 29 23b2: 10 92 ee 62 sts 0x62EE, r1 ; 0x8062ee <_sib> -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:389 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:389 } 23b6: 8f ef ldi r24, 0xFF ; 255 23b8: 9f ef ldi r25, 0xFF ; 255 23ba: dc 01 movw r26, r24 23bc: 80 93 ea 62 sts 0x62EA, r24 ; 0x8062ea <_before_page> -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:326 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:326 * For UPDI communication, first set the following: * - Keep forced reset for wakeup * - Ignore communication collisions @@ -7332,7 +7332,7 @@ connect(): */ size_t connect (void) { 23c0: 90 93 eb 62 sts 0x62EB, r25 ; 0x8062eb <_before_page+0x1> -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:335 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:335 0x55, 0xC2, 0x05, /* GTVAL[4] */ }; const static uint8_t _sib256[] = { @@ -7340,11 +7340,11 @@ connect(): }; PGCONF = PGCONF_FAIL_bm; 23c4: a0 93 ec 62 sts 0x62EC, r26 ; 0x8062ec <_before_page+0x2> -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:336 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:336 _sib[0] = 0; 23c8: b0 93 ed 62 sts 0x62ED, r27 ; 0x8062ed <_before_page+0x3> setup(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:337 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:337 _before_page = -1L; 23cc: 8f e9 ldi r24, 0x9F ; 159 23ce: 95 e0 ldi r25, 0x05 ; 5 @@ -7353,7 +7353,7 @@ setup(): 23d8: 8f ea ldi r24, 0xAF ; 175 23da: 99 e0 ldi r25, 0x09 ; 9 23dc: 80 93 10 63 sts 0x6310, r24 ; 0x806310 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv1.cpp:68 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv1.cpp:68 // else if (m_type == 0xD3) /* MTYPE_SIB */ /* This is in its own memory space. */ return 0; } @@ -7364,20 +7364,20 @@ setup(): 23e4: 82 eb ldi r24, 0xB2 ; 178 23e6: 99 e0 ldi r25, 0x09 ; 9 23e8: 80 93 12 63 sts 0x6312, r24 ; 0x806312 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv1.cpp:69 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv1.cpp:69 Command_Table.read_memory = &read_memory; 23ec: 90 93 13 63 sts 0x6313, r25 ; 0x806313 23f0: 8c ea ldi r24, 0xAC ; 172 23f2: 99 e0 ldi r25, 0x09 ; 9 23f4: 80 93 14 63 sts 0x6314, r24 ; 0x806314 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv1.cpp:70 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv1.cpp:70 Command_Table.erase_memory = &erase_memory; 23f8: 90 93 15 63 sts 0x6315, r25 ; 0x806315 connect(): 23fc: 01 9a sbi 0x00, 1 ; 0 23fe: 00 00 nop 2400: 80 91 d5 60 lds r24, 0x60D5 ; 0x8060d5 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv1.cpp:71 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv1.cpp:71 Command_Table.write_memory = &write_memory; 2404: 88 23 and r24, r24 2406: c1 f0 breq .+48 ; 0x2438 @@ -7385,14 +7385,14 @@ connect(): 240a: 98 e0 ldi r25, 0x08 ; 8 240c: 9f 93 push r25 240e: 8f 93 push r24 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:339 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:339 NVM::V1::setup(); /* default is dummy callback */ openDrainWriteMacro(PIN_PG_TRST, LOW); 2410: 8d e8 ldi r24, 0x8D ; 141 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:340 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:340 nop(); 2412: 90 e6 ldi r25, 0x60 ; 96 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:343 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:343 /* External Reset */ if (packet.out.bMType) { @@ -7402,7 +7402,7 @@ connect(): power_reset(): 241a: 0e 98 cbi 0x01, 6 ; 1 delay_millis(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:344 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:344 D1PRINTF("\r\n"); 241c: 2f ef ldi r18, 0xFF ; 255 241e: 34 e3 ldi r19, 0x34 ; 52 @@ -7415,7 +7415,7 @@ delay_millis(): 242c: 00 00 nop power_reset(): 242e: 0e 9a sbi 0x01, 6 ; 1 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:136 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:136 } void power_reset (void) { @@ -7434,13 +7434,13 @@ connect(): 243e: 0e 94 6e 05 call 0xadc ; 0xadc long_break(): 2442: 80 91 18 60 lds r24, 0x6018 ; 0x806018 <_xclk> -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:138 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:138 delay_millis(200); digitalWriteMacro(PIN_HV_POWER, HIGH); 2446: 90 91 19 60 lds r25, 0x6019 ; 0x806019 <_xclk+0x1> 244a: 96 95 lsr r25 244c: 87 95 ror r24 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:351 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:351 #ifdef CONFIG_HVCTRL_ENABLE /* High-Voltage control */ #endif @@ -7448,12 +7448,12 @@ long_break(): openDrainWriteMacro(PIN_PG_TRST, HIGH); 244e: 96 95 lsr r25 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:352 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:352 USART::drain(); 2450: 87 95 ror r24 2452: 0e 94 79 05 call 0xaf2 ; 0xaf2 2456: 80 93 08 08 sts 0x0808, r24 ; 0x800808 <__TEXT_REGION_LENGTH__+0x7f0808> -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:66 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:66 return false; } @@ -7467,12 +7467,12 @@ long_break(): 2468: 90 91 19 60 lds r25, 0x6019 ; 0x806019 <_xclk+0x1> 246c: 0e 94 79 05 call 0xaf2 ; 0xaf2 2470: 80 93 08 08 sts 0x0808, r24 ; 0x800808 <__TEXT_REGION_LENGTH__+0x7f0808> -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:67 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:67 send(0x00); 2474: 90 93 09 08 sts 0x0809, r25 ; 0x800809 <__TEXT_REGION_LENGTH__+0x7f0809> connect(): 2478: 69 e0 ldi r22, 0x09 ; 9 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:68 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:68 USART0_BAUD = USART::calk_baud_khz(_xclk); 247a: 70 e0 ldi r23, 0x00 ; 0 247c: 89 e6 ldi r24, 0x69 ; 105 @@ -7483,7 +7483,7 @@ connect(): 2488: 90 e0 ldi r25, 0x00 ; 0 248a: 80 e0 ldi r24, 0x00 ; 0 248c: df 91 pop r29 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:354 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:354 } openDrainWriteMacro(PIN_PG_TRST, HIGH); @@ -7497,7 +7497,7 @@ connect(): 2498: fc cf rjmp .-8 ; 0x2492 249a: 8f b3 in r24, 0x1f ; 31 249c: 1f 92 push r1 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:377 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:377 bit_set(PGCONF, PGCONF_UPDI_bp); return 5; } @@ -7506,12 +7506,12 @@ connect(): return 0; 249e: 8f 93 push r24 24a0: 80 e0 ldi r24, 0x00 ; 0 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:378 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:378 } 24a2: 98 e0 ldi r25, 0x08 ; 8 24a4: 9f 93 push r25 24a6: 8f 93 push r24 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:355 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:355 openDrainWriteMacro(PIN_PG_TRST, HIGH); USART::drain(); @@ -7522,7 +7522,7 @@ connect(): 24aa: d0 e6 ldi r29, 0x60 ; 96 24ac: df 93 push r29 24ae: cf 93 push r28 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:356 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:356 D1PRINTF("", RXDATA); 24b0: 0e 94 2e 0a call 0x145c ; 0x145c 24b4: 62 e0 ldi r22, 0x02 ; 2 @@ -7535,7 +7535,7 @@ connect(): 24c4: 0f 90 pop r0 24c6: 0f 90 pop r0 24c8: 0f 90 pop r0 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:357 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:357 if (send_bytes(_sib256, sizeof(_sib256)) 24ca: 0f 90 pop r0 24cc: 88 23 and r24, r24 @@ -7543,7 +7543,7 @@ connect(): 24d0: 60 e2 ldi r22, 0x20 ; 32 24d2: 70 e0 ldi r23, 0x00 ; 0 24d4: 8e ee ldi r24, 0xEE ; 238 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:358 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:358 && recv_bytes(_sib, 32)) { 24d6: 92 e6 ldi r25, 0x62 ; 98 24d8: 0e 94 ea 06 call 0xdd4 ; 0xdd4 @@ -7560,7 +7560,7 @@ connect(): 24f0: df 93 push r29 24f2: cf 93 push r28 24f4: 0e 94 2e 0a call 0x145c ; 0x145c -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:360 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:360 size_t _result = 0; D1PRINTF(" SIB=%s\r\n", _sib); 24f8: 80 91 f8 62 lds r24, 0x62F8 ; 0x8062f8 <_sib+0xa> @@ -7573,7 +7573,7 @@ connect(): 2508: df 93 push r29 250a: cf 93 push r28 250c: 0e 94 2e 0a call 0x145c ; 0x145c -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:361 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:361 D1PRINTF(" \r\n", _sib[10]); 2510: 80 91 f8 62 lds r24, 0x62F8 ; 0x8062f8 <_sib+0xa> 2514: 2d b7 in r18, 0x3d ; 61 @@ -7586,7 +7586,7 @@ connect(): 2522: 59 f5 brne .+86 ; 0x257a setup(): 2524: 82 ef ldi r24, 0xF2 ; 242 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:363 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:363 /* Depending on the SIB, different low-level methods are executed. */ if (_sib[10] == '5') _result = NVM::V5::setup(); 2526: 98 e0 ldi r25, 0x08 ; 8 @@ -7596,7 +7596,7 @@ setup(): 2532: 97 e0 ldi r25, 0x07 ; 7 2534: 80 93 10 63 sts 0x6310, r24 ; 0x806310 2538: 90 93 11 63 sts 0x6311, r25 ; 0x806311 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv5.cpp:165 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv5.cpp:165 } } @@ -7606,24 +7606,24 @@ setup(): 253e: 90 e1 ldi r25, 0x10 ; 16 2540: 80 93 12 63 sts 0x6312, r24 ; 0x806312 2544: 90 93 13 63 sts 0x6313, r25 ; 0x806313 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv5.cpp:166 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv5.cpp:166 Command_Table.read_memory = &read_memory; 2548: 8c e0 ldi r24, 0x0C ; 12 254a: 9c e0 ldi r25, 0x0C ; 12 254c: 80 93 14 63 sts 0x6314, r24 ; 0x806314 2550: 90 93 15 63 sts 0x6315, r25 ; 0x806315 connect(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv5.cpp:167 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv5.cpp:167 Command_Table.erase_memory = &erase_memory; 2554: 80 91 ee 62 lds r24, 0x62EE ; 0x8062ee <_sib> 2558: ee ee ldi r30, 0xEE ; 238 255a: f2 e6 ldi r31, 0x62 ; 98 255c: 80 32 cpi r24, 0x20 ; 32 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv5.cpp:168 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv5.cpp:168 Command_Table.write_memory = &write_memory; 255e: 11 f4 brne .+4 ; 0x2564 2560: e2 ef ldi r30, 0xF2 ; 242 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv0.cpp:174 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv0.cpp:174 bool setup (void) { Command_Table.prog_init = &prog_init; @@ -7634,7 +7634,7 @@ connect(): 2564: 84 e0 ldi r24, 0x04 ; 4 2566: a5 ed ldi r26, 0xD5 ; 213 2568: b0 e6 ldi r27, 0x60 ; 96 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:371 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:371 else if (_sib[10] == '2') _result = NVM::V2::setup(); else if (_sib[10] == '0') _result = NVM::V0::setup(); if (_result) { @@ -7656,13 +7656,13 @@ setup(): 2580: 98 e0 ldi r25, 0x08 ; 8 2582: 80 93 0e 63 sts 0x630E, r24 ; 0x80630e 2586: 90 93 0f 63 sts 0x630F, r25 ; 0x80630f -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:373 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:373 bit_set(PGCONF, PGCONF_UPDI_bp); return 5; 258a: 8b e5 ldi r24, 0x5B ; 91 258c: 97 e0 ldi r25, 0x07 ; 7 258e: 80 93 10 63 sts 0x6310, r24 ; 0x806310 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:364 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:364 size_t _result = 0; D1PRINTF(" SIB=%s\r\n", _sib); D1PRINTF(" \r\n", _sib[10]); @@ -7670,7 +7670,7 @@ setup(): if (_sib[10] == '5') _result = NVM::V5::setup(); else if (_sib[10] == '4') _result = NVM::V4::setup(); 2592: 90 93 11 63 sts 0x6311, r25 ; 0x806311 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv4.cpp:187 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv4.cpp:187 return UPDI::send_bytes_block(_dwAddr, _wLength); } } @@ -7681,7 +7681,7 @@ setup(): 2598: 90 e1 ldi r25, 0x10 ; 16 259a: 80 93 12 63 sts 0x6312, r24 ; 0x806312 259e: 90 93 13 63 sts 0x6313, r25 ; 0x806313 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv4.cpp:188 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv4.cpp:188 Command_Table.read_memory = &read_memory; 25a2: 8c e5 ldi r24, 0x5C ; 92 25a4: 9c e0 ldi r25, 0x0C ; 12 @@ -7690,21 +7690,21 @@ connect(): 25a8: 83 33 cpi r24, 0x33 ; 51 25aa: a9 f4 brne .+42 ; 0x25d6 setup(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv4.cpp:189 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv4.cpp:189 Command_Table.erase_memory = &erase_memory; 25ac: 8a ee ldi r24, 0xEA ; 234 25ae: 98 e0 ldi r25, 0x08 ; 8 25b0: 80 93 0e 63 sts 0x630E, r24 ; 0x80630e 25b4: 90 93 0f 63 sts 0x630F, r25 ; 0x80630f -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv4.cpp:190 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv4.cpp:190 Command_Table.write_memory = &write_memory; 25b8: 89 eb ldi r24, 0xB9 ; 185 25ba: 97 e0 ldi r25, 0x07 ; 7 25bc: 80 93 10 63 sts 0x6310, r24 ; 0x806310 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:365 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:365 else if (_sib[10] == '3') _result = NVM::V3::setup(); 25c0: 90 93 11 63 sts 0x6311, r25 ; 0x806311 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv3.cpp:162 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv3.cpp:162 } } @@ -7714,7 +7714,7 @@ setup(): 25c6: 90 e1 ldi r25, 0x10 ; 16 25c8: 80 93 12 63 sts 0x6312, r24 ; 0x806312 25cc: 90 93 13 63 sts 0x6313, r25 ; 0x806313 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv3.cpp:163 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv3.cpp:163 Command_Table.read_memory = &read_memory; 25d0: 85 ed ldi r24, 0xD5 ; 213 25d2: 9c e0 ldi r25, 0x0C ; 12 @@ -7723,21 +7723,21 @@ connect(): 25d6: 82 33 cpi r24, 0x32 ; 50 25d8: a9 f4 brne .+42 ; 0x2604 setup(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv3.cpp:164 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv3.cpp:164 Command_Table.erase_memory = &erase_memory; 25da: 88 e8 ldi r24, 0x88 ; 136 25dc: 99 e0 ldi r25, 0x09 ; 9 25de: 80 93 0e 63 sts 0x630E, r24 ; 0x80630e 25e2: 90 93 0f 63 sts 0x630F, r25 ; 0x80630f -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv3.cpp:165 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv3.cpp:165 Command_Table.write_memory = &write_memory; 25e6: 8b e8 ldi r24, 0x8B ; 139 25e8: 97 e0 ldi r25, 0x07 ; 7 25ea: 80 93 10 63 sts 0x6310, r24 ; 0x806310 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:366 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:366 else if (_sib[10] == '2') _result = NVM::V2::setup(); 25ee: 90 93 11 63 sts 0x6311, r25 ; 0x806311 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv2.cpp:184 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv2.cpp:184 return UPDI::send_bytes_block(_dwAddr, _wLength); } } @@ -7748,7 +7748,7 @@ setup(): 25f4: 90 e1 ldi r25, 0x10 ; 16 25f6: 80 93 12 63 sts 0x6312, r24 ; 0x806312 25fa: 90 93 13 63 sts 0x6313, r25 ; 0x806313 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv2.cpp:185 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv2.cpp:185 Command_Table.read_memory = &read_memory; 25fe: 85 e2 ldi r24, 0x25 ; 37 2600: 9d e0 ldi r25, 0x0D ; 13 @@ -7756,7 +7756,7 @@ setup(): connect(): 2604: 80 33 cpi r24, 0x30 ; 48 2606: 09 f0 breq .+2 ; 0x260a -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv2.cpp:186 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv2.cpp:186 Command_Table.erase_memory = &erase_memory; 2608: 3f cf rjmp .-386 ; 0x2488 setup(): @@ -7764,15 +7764,15 @@ setup(): 260c: 99 e0 ldi r25, 0x09 ; 9 260e: 80 93 0e 63 sts 0x630E, r24 ; 0x80630e 2612: 90 93 0f 63 sts 0x630F, r25 ; 0x80630f -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv2.cpp:187 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv2.cpp:187 Command_Table.write_memory = &write_memory; 2616: 8a eb ldi r24, 0xBA ; 186 2618: 97 e0 ldi r25, 0x07 ; 7 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:367 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:367 else if (_sib[10] == '0') _result = NVM::V0::setup(); 261a: 80 93 10 63 sts 0x6310, r24 ; 0x806310 261e: 90 93 11 63 sts 0x6311, r25 ; 0x806311 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv0.cpp:171 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv0.cpp:171 return UPDI::send_bytes_block(_wAddr, _wLength); } } @@ -7783,7 +7783,7 @@ setup(): 2624: 90 e1 ldi r25, 0x10 ; 16 2626: 80 93 12 63 sts 0x6312, r24 ; 0x806312 262a: 90 93 13 63 sts 0x6313, r25 ; 0x806313 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv0.cpp:172 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv0.cpp:172 Command_Table.read_memory = &read_memory; 262e: 8e e9 ldi r24, 0x9E ; 158 2630: 9d e0 ldi r25, 0x0D ; 13 @@ -7793,7 +7793,7 @@ setup(): write_memory(): 2634: 6f 92 push r6 2636: 7f 92 push r7 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv0.cpp:173 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv0.cpp:173 Command_Table.erase_memory = &erase_memory; 2638: 8f 92 push r8 263a: 9f 92 push r9 @@ -7801,12 +7801,12 @@ write_memory(): 263e: bf 92 push r11 2640: cf 92 push r12 2642: df 92 push r13 -/Users/askn/Collaborator/UPDI4AVR-USB/src/nvmv0.cpp:174 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/nvmv0.cpp:174 Command_Table.write_memory = &write_memory; 2644: ef 92 push r14 2646: ff 92 push r15 2648: 0f 93 push r16 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:152 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:152 ++_cnt; } return _wLength + 1; @@ -7824,7 +7824,7 @@ bswap16(): 265e: cd 24 eor r12, r13 2660: dc 24 eor r13, r12 2662: 00 91 da 60 lds r16, 0x60DA ; 0x8060da -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:153 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:153 uint8_t m_type = packet.out.tpi.read.bMType; 2666: 10 91 db 60 lds r17, 0x60DB ; 0x8060db /Users/askn/Library/Arduino15/packages/MultiX-Zinnia/hardware/modernAVR/0.2.14/cores/modernAVR/api/cpp/btools.cpp:45 @@ -7848,7 +7848,7 @@ write_memory(): 2680: 3f ef ldi r19, 0xFF ; 255 2682: ac 01 movw r20, r24 2684: 4c 21 and r20, r12 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:161 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:161 uint8_t *_p = &packet.out.tpi.write.memData[0]; bool _result = true; @@ -7861,7 +7861,7 @@ write_memory(): 268c: 3f ef ldi r19, 0xFF ; 255 268e: 7c 01 movw r14, r24 2690: e0 22 and r14, r16 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:156 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:156 size_t write_memory (void) { uint8_t m_type = packet.out.tpi.read.bMType; @@ -7870,7 +7870,7 @@ write_memory(): uint8_t *_p = &packet.out.tpi.write.memData[0]; 2692: f1 22 and r15, r17 2694: e1 14 cp r14, r1 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:164 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:164 /* To accommodate older host programs, */ /* the address must be aligned to the top of the page. */ while (_dwAddr & (_tpi_chunks - 1)) { @@ -7878,7 +7878,7 @@ write_memory(): _wLength++; *--_p = 0xFF; /* NAND masked dummy bytes */ 2696: f1 04 cpc r15, r1 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:161 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:161 uint8_t *_p = &packet.out.tpi.write.memData[0]; bool _result = true; @@ -7890,7 +7890,7 @@ write_memory(): 269c: ec 0d add r30, r12 269e: fd 1d adc r31, r13 26a0: 30 83 st Z, r19 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:167 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:167 _dwAddr--; _wLength++; *--_p = 0xFF; /* NAND masked dummy bytes */ @@ -7898,7 +7898,7 @@ write_memory(): while (_wLength & (_tpi_chunks - 1)) { *((uint8_t*)(_dwAddr + _wLength++)) = 0xFF; 26a2: 0f 5f subi r16, 0xFF ; 255 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:166 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:166 while (_dwAddr & (_tpi_chunks - 1)) { _dwAddr--; _wLength++; @@ -7911,7 +7911,7 @@ write_memory(): 26aa: c4 1a sub r12, r20 26ac: d1 08 sbc r13, r1 26ae: 0f 5f subi r16, 0xFF ; 255 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:167 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:167 *((uint8_t*)(_dwAddr + _wLength++)) = 0xFF; 26b0: 1f 4f sbci r17, 0xFF ; 255 26b2: 3a 93 st -Y, r19 @@ -7919,7 +7919,7 @@ write_memory(): 26b6: 21 30 cpi r18, 0x01 ; 1 26b8: 49 f5 brne .+82 ; 0x270c 26ba: 0e 94 12 08 call 0x1024 ; 0x1024 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:162 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:162 bool _result = true; /* To accommodate older host programs, */ @@ -7929,14 +7929,14 @@ write_memory(): 26be: 78 2e mov r7, r24 26c0: 88 23 and r24, r24 26c2: 21 f0 breq .+8 ; 0x26cc -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:163 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:163 _wLength++; 26c4: c6 01 movw r24, r12 26c6: 0e 94 30 08 call 0x1060 ; 0x1060 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:164 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:164 *--_p = 0xFF; /* NAND masked dummy bytes */ 26ca: 78 2e mov r7, r24 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:174 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:174 D2PRINTF(" FIXED_WRITE=%08X:%04X\r\n", _dwAddr, _wLength); /* For the flash code area, the page erase can be */ @@ -7945,7 +7945,7 @@ write_memory(): if (m_type != 0x01) { 26cc: b1 2c mov r11, r1 26ce: a1 2c mov r10, r1 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:185 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:185 && set_sst(0xFF) && nvm_wait() && nvm_ctrl(0x00); @@ -7960,7 +7960,7 @@ write_memory(): 26da: 0e 94 06 08 call 0x100c ; 0x100c 26de: 88 23 and r24, r24 26e0: 31 f0 breq .+12 ; 0x26ee -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:156 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:156 size_t write_memory (void) { uint8_t m_type = packet.out.tpi.read.bMType; @@ -7969,7 +7969,7 @@ write_memory(): uint8_t *_p = &packet.out.tpi.write.memData[0]; 26e2: 88 81 ld r24, Y 26e4: 0e 94 1e 08 call 0x103c ; 0x103c -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:187 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:187 && nvm_ctrl(0x00); if (!_result) return 0; } @@ -7979,18 +7979,18 @@ write_memory(): 26e8: 81 11 cpse r24, r1 26ea: 3d c0 rjmp .+122 ; 0x2766 26ec: 21 96 adiw r28, 0x01 ; 1 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:189 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:189 D2PRINTF(" CODE_WRITE=%08X:%04X\r\n", _dwAddr, _tpi_chunks); _result &= nvm_ctrl(0x1D) 26ee: 78 22 and r7, r24 26f0: 94 e0 ldi r25, 0x04 ; 4 26f2: 69 12 cpse r6, r25 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:191 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:191 && set_sst(*_p++) && set_sst(*_p++); 26f4: 51 c0 rjmp .+162 ; 0x2798 26f6: 8c e0 ldi r24, 0x0C ; 12 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:190 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:190 _result &= nvm_wait() && set_sstpr(_dwAddr); /* WRITE_PAGE */ for (size_t _i = 0; _i < _wLength; _i += _tpi_chunks) { @@ -8002,24 +8002,24 @@ write_memory(): 26fe: 88 81 ld r24, Y 2700: 0e 94 1e 08 call 0x103c ; 0x103c 2704: 81 11 cpse r24, r1 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:192 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:192 && set_sst(*_p++); if (_tpi_chunks == 4) { 2706: 38 c0 rjmp .+112 ; 0x2778 2708: 21 96 adiw r28, 0x01 ; 1 270a: 3e c0 rjmp .+124 ; 0x2788 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:193 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:193 idle_clock(12); 270c: 0e 94 12 08 call 0x1024 ; 0x1024 2710: 88 23 and r24, r24 2712: c9 f0 breq .+50 ; 0x2746 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:194 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:194 _result &= set_sst(*_p++) && set_sst(*_p++); 2714: c6 01 movw r24, r12 2716: 81 60 ori r24, 0x01 ; 1 2718: 0e 94 30 08 call 0x1060 ; 0x1060 271c: 88 23 and r24, r24 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:200 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:200 } if (_tpi_chunks == 8) { idle_clock(12); @@ -8028,7 +8028,7 @@ write_memory(): _result &= set_sst(*_p++) && set_sst(*_p++); 271e: 99 f0 breq .+38 ; 0x2746 2720: 84 e1 ldi r24, 0x14 ; 20 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:177 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:177 /* omitted if the chip has already been erased. */ /* 0x01: XPRG_MEM_TYPE_APPL */ if (m_type != 0x01) { @@ -8036,7 +8036,7 @@ write_memory(): D2PRINTF(" SECTION_ERASE=%04X>%04X\r\n", _dwAddr | 1, _CAPS16(_before_page)->word); _result &= nvm_wait() 2722: 0e 94 06 08 call 0x100c ; 0x100c -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:182 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:182 && set_sstpr(_dwAddr | 1) && nvm_ctrl(0x14) && set_sst(0xFF) @@ -8044,7 +8044,7 @@ write_memory(): && nvm_ctrl(0x00); 2726: 88 23 and r24, r24 2728: 71 f0 breq .+28 ; 0x2746 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:178 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:178 /* 0x01: XPRG_MEM_TYPE_APPL */ if (m_type != 0x01) { /* SECTION_ERASE */ @@ -8056,32 +8056,32 @@ write_memory(): 2730: 88 23 and r24, r24 2732: 49 f0 breq .+18 ; 0x2746 2734: 0e 94 12 08 call 0x1024 ; 0x1024 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:179 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:179 && nvm_ctrl(0x14) 2738: 88 23 and r24, r24 273a: 29 f0 breq .+10 ; 0x2746 273c: 80 e0 ldi r24, 0x00 ; 0 273e: 0e 94 06 08 call 0x100c ; 0x100c -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:180 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:180 && set_sst(0xFF) 2742: 81 11 cpse r24, r1 2744: ba cf rjmp .-140 ; 0x26ba 2746: c7 01 movw r24, r14 2748: df 91 pop r29 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:181 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:181 && nvm_wait() 274a: cf 91 pop r28 274c: 1f 91 pop r17 274e: 0f 91 pop r16 2750: ff 90 pop r15 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:182 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:182 && nvm_ctrl(0x00); 2752: ef 90 pop r14 2754: df 90 pop r13 2756: cf 90 pop r12 2758: bf 90 pop r11 275a: af 90 pop r10 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:207 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:207 _result &= nvm_wait(); if (!_result) return 0; _dwAddr += _tpi_chunks; @@ -8103,7 +8103,7 @@ write_memory(): 2776: bb cf rjmp .-138 ; 0x26ee 2778: 6e 01 movw r12, r28 277a: e2 e0 ldi r30, 0x02 ; 2 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:191 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:191 /* WRITE_PAGE */ for (size_t _i = 0; _i < _wLength; _i += _tpi_chunks) { D2PRINTF(" CODE_WRITE=%08X:%04X\r\n", _dwAddr, _tpi_chunks); @@ -8117,7 +8117,7 @@ write_memory(): 2786: e6 01 movw r28, r12 2788: 78 22 and r7, r24 278a: 0e 94 12 08 call 0x1024 ; 0x1024 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:194 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:194 if (_tpi_chunks == 4) { idle_clock(12); _result &= set_sst(*_p++) && set_sst(*_p++); @@ -8130,7 +8130,7 @@ write_memory(): 279a: 6f 12 cpse r6, r31 279c: f6 cf rjmp .-20 ; 0x278a 279e: 8c e0 ldi r24, 0x0C ; 12 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:202 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:202 idle_clock(12); _result &= set_sst(*_p++) && set_sst(*_p++); idle_clock(12); @@ -8139,10 +8139,10 @@ write_memory(): _result &= nvm_wait(); 27a0: 90 e0 ldi r25, 0x00 ; 0 27a2: 0e 94 48 08 call 0x1090 ; 0x1090 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:203 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:203 if (!_result) return 0; 27a6: 88 81 ld r24, Y -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:187 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:187 && nvm_ctrl(0x00); if (!_result) return 0; } @@ -8151,7 +8151,7 @@ write_memory(): for (size_t _i = 0; _i < _wLength; _i += _tpi_chunks) { 27a8: 0e 94 1e 08 call 0x103c ; 0x103c 27ac: 6e 01 movw r12, r28 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:196 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:196 && set_sst(*_p++); if (_tpi_chunks == 4) { idle_clock(12); @@ -8161,13 +8161,13 @@ write_memory(): 27ae: 81 11 cpse r24, r1 27b0: 16 c0 rjmp .+44 ; 0x27de 27b2: 4f ef ldi r20, 0xFF ; 255 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:197 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:197 idle_clock(12); 27b4: c4 1a sub r12, r20 27b6: d4 0a sbc r13, r20 27b8: 78 22 and r7, r24 27ba: 8c e0 ldi r24, 0x0C ; 12 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:198 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:198 _result &= set_sst(*_p++) && set_sst(*_p++); 27bc: 90 e0 ldi r25, 0x00 ; 0 27be: 0e 94 48 08 call 0x1090 ; 0x1090 @@ -8177,13 +8177,13 @@ write_memory(): 27ca: e6 01 movw r28, r12 27cc: 88 23 and r24, r24 27ce: 09 f4 brne .+2 ; 0x27d2 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:199 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:199 idle_clock(12); 27d0: 9b cf rjmp .-202 ; 0x2708 27d2: 22 96 adiw r28, 0x02 ; 2 27d4: f6 01 movw r30, r12 27d6: 81 81 ldd r24, Z+1 ; 0x01 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:200 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:200 _result &= set_sst(*_p++) && set_sst(*_p++); 27d8: 0e 94 1e 08 call 0x103c ; 0x103c 27dc: d5 cf rjmp .-86 ; 0x2788 @@ -8196,7 +8196,7 @@ write_memory(): 27ec: 80 e0 ldi r24, 0x00 ; 0 27ee: 0e 94 06 08 call 0x100c ; 0x100c 27f2: e8 2e mov r14, r24 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:198 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:198 idle_clock(12); _result &= set_sst(*_p++) && set_sst(*_p++); } @@ -8214,7 +8214,7 @@ read_memory(): 27fe: df 93 push r29 bswap16(): 2800: 80 91 d7 60 lds r24, 0x60D7 ; 0x8060d7 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:206 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:206 } _result &= nvm_wait(); if (!_result) return 0; @@ -8224,7 +8224,7 @@ bswap16(): 2804: 90 91 d8 60 lds r25, 0x60D8 ; 0x8060d8 2808: c0 91 d9 60 lds r28, 0x60D9 ; 0x8060d9 280c: d0 91 da 60 lds r29, 0x60DA ; 0x8060da -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:136 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:136 } } return 0; @@ -8246,7 +8246,7 @@ read_memory(): 2826: 8e 5c subi r24, 0xCE ; 206 2828: 90 46 sbci r25, 0x60 ; 96 282a: 8c 17 cp r24, r28 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:143 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:143 uint16_t _dwAddr = bswap16(_CAPS32(packet.out.tpi.read.dwAddr)->words[1]); size_t _wLength = bswap16(packet.out.tpi.read.wLength); uint8_t *_q = &packet.in.data[0]; @@ -8259,7 +8259,7 @@ read_memory(): 2834: 0f 5f subi r16, 0xFF ; 255 2836: 1f 4f sbci r17, 0xFF ; 255 2838: 88 23 and r24, r24 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:144 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:144 while (_cnt < _wLength) { 283a: 59 f0 breq .+22 ; 0x2852 283c: 8f b3 in r24, 0x1f ; 31 @@ -8267,7 +8267,7 @@ read_memory(): 2840: 86 83 std Z+6, r24 ; 0x06 2842: f0 cf rjmp .-32 ; 0x2824 2844: ce 01 movw r24, r28 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:145 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:145 if (!get_sld()) return 0; 2846: 01 96 adiw r24, 0x01 ; 1 2848: df 91 pop r29 @@ -8275,7 +8275,7 @@ read_memory(): 284c: 1f 91 pop r17 284e: 0f 91 pop r16 2850: 08 95 ret -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:146 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:146 *_q++ = RXDATA; 2852: 90 e0 ldi r25, 0x00 ; 0 2854: 80 e0 ldi r24, 0x00 ; 0 @@ -8284,19 +8284,19 @@ read_memory(): 00002858 : erase_memory(): 2858: cf 93 push r28 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:149 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:149 ++_cnt; } return _wLength + 1; 285a: df 93 push r29 bswap16(): 285c: c0 91 d7 60 lds r28, 0x60D7 ; 0x8060d7 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:150 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:150 } 2860: d0 91 d8 60 lds r29, 0x60D8 ; 0x8060d8 2864: dc 27 eor r29, r28 2866: cd 27 eor r28, r29 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:145 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:145 uint8_t *_q = &packet.in.data[0]; size_t _cnt = 0; D2PRINTF(" READ=%08X:%04X\r\n", _dwAddr, _wLength); @@ -8306,7 +8306,7 @@ bswap16(): 2868: dc 27 eor r29, r28 erase_memory(): 286a: 80 91 d4 60 lds r24, 0x60D4 ; 0x8060d4 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:103 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:103 bool nvm_ctrl (const uint8_t _nvmcmd) { return set_sout(0x63, _nvmcmd); /* NVMCMD_REG: IO=0x33 */ @@ -8323,7 +8323,7 @@ erase_memory(): 287a: 9f 93 push r25 287c: 8f 93 push r24 287e: 8d e8 ldi r24, 0x8D ; 141 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:106 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:106 uint8_t m_type = packet.out.tpi.read.bMType; uint16_t _dwAddr = bswap16(_CAPS32(packet.out.tpi.read.dwAddr)->words[1]); if (m_type == 0x01) { @@ -8331,7 +8331,7 @@ erase_memory(): 2882: 9f 93 push r25 2884: 8f 93 push r24 2886: 0e 94 2e 0a call 0x145c ; 0x145c -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:108 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:108 /* XPRG_ERASE_CHIP */ D1PRINTF(" CHIP_ERASE=%04X\r\n", _dwAddr); 288a: 0e 94 12 08 call 0x1024 ; 0x1024 @@ -8344,11 +8344,11 @@ erase_memory(): 289a: 81 11 cpse r24, r1 289c: 05 c0 rjmp .+10 ; 0x28a8 289e: 90 e0 ldi r25, 0x00 ; 0 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:109 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:109 if (nvm_wait() 28a0: 80 e0 ldi r24, 0x00 ; 0 28a2: df 91 pop r29 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:114 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:114 && set_sstpr(_dwAddr) && nvm_ctrl(0x10) && set_sst(0xFF) @@ -8361,7 +8361,7 @@ erase_memory(): 28ae: 88 23 and r24, r24 28b0: b1 f3 breq .-20 ; 0x289e 28b2: 80 e1 ldi r24, 0x10 ; 16 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:133 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:133 && nvm_wait() && nvm_ctrl(0x00)) { return 1; @@ -8369,12 +8369,12 @@ erase_memory(): } return 0; 28b4: 0e 94 06 08 call 0x100c ; 0x100c -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:134 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:134 } 28b8: 88 23 and r24, r24 28ba: 89 f3 breq .-30 ; 0x289e 28bc: 8f ef ldi r24, 0xFF ; 255 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:110 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:110 uint16_t _dwAddr = bswap16(_CAPS32(packet.out.tpi.read.dwAddr)->words[1]); if (m_type == 0x01) { /* XPRG_ERASE_CHIP */ @@ -8385,7 +8385,7 @@ erase_memory(): 28c2: 88 23 and r24, r24 28c4: 61 f3 breq .-40 ; 0x289e 28c6: 0e 94 12 08 call 0x1024 ; 0x1024 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:126 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:126 /* Currently not called on AVRDUDE<=7.3. */ /* It may be called from terminal mode. */ D1PRINTF(" SECTION_ERASE=%04X\r\n", _dwAddr); @@ -8396,31 +8396,31 @@ erase_memory(): 28cc: 41 f3 breq .-48 ; 0x289e 28ce: 80 e0 ldi r24, 0x00 ; 0 28d0: 0e 94 06 08 call 0x100c ; 0x100c -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:127 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:127 && set_sst(0xFF) 28d4: 90 e0 ldi r25, 0x00 ; 0 28d6: e5 cf rjmp .-54 ; 0x28a2 28d8: df 93 push r29 28da: cf 93 push r28 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:128 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:128 && nvm_wait() 28dc: 8d ed ldi r24, 0xDD ; 221 28de: 96 e0 ldi r25, 0x06 ; 6 28e0: 9f 93 push r25 28e2: 8f 93 push r24 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:129 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:129 && nvm_ctrl(0x00)) { 28e4: 8d e8 ldi r24, 0x8D ; 141 28e6: 90 e6 ldi r25, 0x60 ; 96 28e8: 9f 93 push r25 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:133 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:133 return 1; } } return 0; 28ea: 8f 93 push r24 28ec: 0e 94 2e 0a call 0x145c ; 0x145c -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:123 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:123 else { /* 0x02: XPRG_ERASE_APP */ /* 0x09: XPRG_ERASE_CONFIG */ @@ -8437,10 +8437,10 @@ erase_memory(): 2900: 88 23 and r24, r24 2902: 69 f2 breq .-102 ; 0x289e 2904: ce 01 movw r24, r28 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:124 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:124 if (nvm_wait() 2906: 0e 94 30 08 call 0x1060 ; 0x1060 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:129 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:129 && set_sstpr(_dwAddr) && nvm_ctrl(0x14) && set_sst(0xFF) @@ -8457,7 +8457,7 @@ __vector_19(): 2914: 0f 92 push r0 2916: 0f b6 in r0, 0x3f ; 63 2918: 0f 92 push r0 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:125 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:125 /* 0x09: XPRG_ERASE_CONFIG */ /* Currently not called on AVRDUDE<=7.3. */ /* It may be called from terminal mode. */ @@ -8468,11 +8468,11 @@ __vector_19(): 291c: 2f 93 push r18 291e: 3f 93 push r19 2920: 4f 93 push r20 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:126 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:126 && nvm_ctrl(0x14) 2922: 5f 93 push r21 2924: 6f 93 push r22 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usart.cpp:222 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usart.cpp:222 } }; @@ -8498,7 +8498,7 @@ write_byte(): 2946: 75 c0 rjmp .+234 ; 0x2a32 <__vector_19+0x120> __vector_19(): 2948: 8e ea ldi r24, 0xAE ; 174 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:470 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:470 void read_drop (void) { if (bit_is_set(EP_CDO.STATUS, USB_BUSNAK_bp)) ep_cdo_listen(); } @@ -8508,14 +8508,14 @@ __vector_19(): 294a: 93 e6 ldi r25, 0x63 ; 99 write_byte(): 294c: e0 91 32 64 lds r30, 0x6432 ; 0x806432 <_send_count> -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:471 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:471 uint8_t _c = USART0_RXDATAL; 2950: 31 e0 ldi r19, 0x01 ; 1 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:472 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:472 if (!(_d & (USART_BUFOVF_bm | USART_FERR_bm | USART_PERR_bm))) { 2952: 3e 0f add r19, r30 2954: 30 93 32 64 sts 0x6432, r19 ; 0x806432 <_send_count> -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:434 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:434 } void write_byte (const uint8_t _c) { @@ -8526,7 +8526,7 @@ write_byte(): 295a: f9 2f mov r31, r25 295c: f1 1d adc r31, r1 295e: 20 83 st Z, r18 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:436 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:436 : &EP_MEM.cdi_data[0]; _buf[_send_count++] = _c; 2960: 80 91 32 64 lds r24, 0x6432 ; 0x806432 <_send_count> @@ -8538,7 +8538,7 @@ write_byte(): vcp_receiver(): 2970: 8e b3 in r24, 0x1e ; 30 2972: c8 2b or r28, r24 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:437 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:437 if (_send_count < 64) _sof_count = 30; 2974: ce bb out 0x1e, r28 ; 30 2976: 80 91 66 64 lds r24, 0x6466 ; 0x806466 @@ -8548,7 +8548,7 @@ cci_interrupt(): 297e: 8e b1 in r24, 0x0e ; 14 2980: 80 95 com r24 2982: 8b 70 andi r24, 0x0B ; 11 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:475 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:475 uint8_t _d = USART0_RXDATAH; uint8_t _c = USART0_RXDATAL; if (!(_d & (USART_BUFOVF_bm | USART_FERR_bm | USART_PERR_bm))) { @@ -8558,14 +8558,14 @@ cci_interrupt(): 2984: f2 99 sbic 0x1e, 2 ; 30 2986: 80 61 ori r24, 0x10 ; 16 2988: f1 99 sbic 0x1e, 1 ; 30 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:477 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:477 #if defined(CONFIG_VCP_INTERRUPT_SUPPRT) if (bit_is_set(EP_CCI.STATUS, USB_BUSNAK_bp)) cci_interrupt(); 298a: 80 62 ori r24, 0x20 ; 32 298c: f6 99 sbic 0x1e, 6 ; 30 298e: 80 64 ori r24, 0x40 ; 64 2990: 1e ba out 0x1e, r1 ; 30 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:415 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:415 void cci_interrupt (void) { #if defined(CONFIG_VCP_INTERRUPT_SUPPRT) @@ -8573,31 +8573,31 @@ cci_interrupt(): #if defined(CONFIG_VCP_RS232C_ENABLE) uint8_t _c = VPORTD_IN; 2992: e4 9b sbis 0x1c, 4 ; 28 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:416 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:416 _value.bValue = (_c ^ 0x0B) & 0x0B; 2994: 3c c0 rjmp .+120 ; 0x2a0e <__vector_19+0xfc> 2996: 90 91 2e 64 lds r25, 0x642E ; 0x80642e <_set_serial_state> -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:418 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:418 #endif if (bit_is_set(RXSTAT, USART_FERR_bp)) _value.bFraming = true; 299a: 89 17 cp r24, r25 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:419 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:419 if (bit_is_set(RXSTAT, USART_PERR_bp)) _value.bParity = true; 299c: c1 f1 breq .+112 ; 0x2a0e <__vector_19+0xfc> set_cci_data(): 299e: 80 93 2e 64 sts 0x642E, r24 ; 0x80642e <_set_serial_state> -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:420 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:420 if (bit_is_set(RXSTAT, USART_BUFOVF_bp)) _value.bOverRun = true; 29a2: 91 ea ldi r25, 0xA1 ; 161 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:421 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:421 RXSTAT = 0; 29a4: 90 93 1e 63 sts 0x631E, r25 ; 0x80631e -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:422 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:422 if (bit_is_set(GPCONF, GPCONF_OPN_bp) && _set_serial_state != _value.bValue) { 29a8: 90 e2 ldi r25, 0x20 ; 32 29aa: 90 93 1f 63 sts 0x631F, r25 ; 0x80631f 29ae: 10 92 20 63 sts 0x6320, r1 ; 0x806320 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:225 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:225 if (_size) memcpy_P(_buffer, _pgmem, _size); return _size; } @@ -8605,34 +8605,34 @@ set_cci_data(): void set_cci_data (uint16_t _state) { _set_serial_state = _state; 29b2: 10 92 21 63 sts 0x6321, r1 ; 0x806321 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:226 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:226 EP_MEM.cci_header.bmRequestType = 0xA1; /* REQTYPE_DIRECTION | REQTYPE_CLASS | RECIPIENT_INTERFACE */ 29b6: 21 e0 ldi r18, 0x01 ; 1 29b8: 30 e0 ldi r19, 0x00 ; 0 29ba: 20 93 22 63 sts 0x6322, r18 ; 0x806322 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:227 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:227 EP_MEM.cci_header.bRequest = 0x20; /* CDC_REQ_SerialState */ 29be: 30 93 23 63 sts 0x6323, r19 ; 0x806323 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:228 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:228 EP_MEM.cci_header.wValue = 0; 29c2: 22 e0 ldi r18, 0x02 ; 2 29c4: 30 e0 ldi r19, 0x00 ; 0 29c6: 20 93 24 63 sts 0x6324, r18 ; 0x806324 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:229 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:229 EP_MEM.cci_header.wIndex = 1; /* Interface#1 */ 29ca: 30 93 25 63 sts 0x6325, r19 ; 0x806325 cci_interrupt(): 29ce: 90 e0 ldi r25, 0x00 ; 0 29d0: 80 93 26 63 sts 0x6326, r24 ; 0x806326 29d4: 90 93 27 63 sts 0x6327, r25 ; 0x806327 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:230 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:230 EP_MEM.cci_header.wLength = 2; 29d8: 8c e6 ldi r24, 0x6C ; 108 29da: 98 e0 ldi r25, 0x08 ; 8 29dc: 9f 93 push r25 29de: 8f 93 push r24 29e0: 8d e8 ldi r24, 0x8D ; 141 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:423 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:423 if (bit_is_set(RXSTAT, USART_FERR_bp)) _value.bFraming = true; if (bit_is_set(RXSTAT, USART_PERR_bp)) _value.bParity = true; if (bit_is_set(RXSTAT, USART_BUFOVF_bp)) _value.bOverRun = true; @@ -8643,7 +8643,7 @@ cci_interrupt(): 29e4: 9f 93 push r25 29e6: 8f 93 push r24 29e8: 0e 94 2e 0a call 0x145c ; 0x145c -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:424 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:424 D1PRINTF(" CCI="); 29ec: 6a e0 ldi r22, 0x0A ; 10 29ee: 70 e0 ldi r23, 0x00 ; 0 @@ -8652,7 +8652,7 @@ cci_interrupt(): 29f4: 0e 94 bc 09 call 0x1378 ; 0x1378 29f8: 0e 94 22 0a call 0x1444 ; 0x1444 29fc: 80 91 66 64 lds r24, 0x6466 ; 0x806466 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:425 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:425 D1PRINTHEX(&EP_MEM.cci_data, 10); 2a00: 0f 90 pop r0 2a02: 0f 90 pop r0 @@ -8662,7 +8662,7 @@ cci_interrupt(): 2a0a: 0e 94 44 05 call 0xa88 ; 0xa88 __vector_19(): 2a0e: ff 91 pop r31 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:426 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:426 if (bit_is_set(EP_CCI.STATUS, USB_BUSNAK_bp)) ep_cci_listen(); 2a10: ef 91 pop r30 2a12: cf 91 pop r28 @@ -8673,7 +8673,7 @@ __vector_19(): 2a1c: 7f 91 pop r23 2a1e: 6f 91 pop r22 2a20: 5f 91 pop r21 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usart.cpp:228 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usart.cpp:228 #if defined(CONFIG_VCP_9BIT_SUPPORT) usart_receiver(); #else @@ -8701,7 +8701,7 @@ __vector_15(): 2a40: 8d b7 in r24, 0x3d ; 61 2a42: 9e b7 in r25, 0x3e ; 62 2a44: 80 93 4c 01 sts 0x014C, r24 ; 0x80014c <__TEXT_REGION_LENGTH__+0x7f014c> -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:434 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:434 } void write_byte (const uint8_t _c) { @@ -8709,14 +8709,14 @@ __vector_15(): uint8_t* _buf = bit_is_set(GPCONF, GPCONF_DBL_bp) ? &EP_MEM.cdi_data[64] 2a48: 90 93 4d 01 sts 0x014D, r25 ; 0x80014d <__TEXT_REGION_LENGTH__+0x7f014d> -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:438 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:438 : &EP_MEM.cdi_data[0]; _buf[_send_count++] = _c; if (_send_count < 64) _sof_count = 30; else ep_cdi_listen(); 2a4c: 10 92 00 0b sts 0x0B00, r1 ; 0x800b00 <__TEXT_REGION_LENGTH__+0x7f0b00> 2a50: 81 e0 ldi r24, 0x01 ; 1 -/Users/askn/Collaborator/UPDI4AVR-USB/src/timeout.cpp:102 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/timeout.cpp:102 ISR(TCB0_INT_vect, ISR_NAKED) { /*** This interrupt is a global escape due to timeout. @@ -8724,28 +8724,28 @@ ISR(TCB0_INT_vect, ISR_NAKED) { ***/ __asm__ __volatile__ ("EOR R1,R1"); 2a52: 80 93 06 0b sts 0x0B06, r24 ; 0x800b06 <__TEXT_REGION_LENGTH__+0x7f0b06> -/Users/askn/Collaborator/UPDI4AVR-USB/src/timeout.cpp:104 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/timeout.cpp:104 #if defined(DEBUG) RTC_CMP = SP; 2a56: 62 e0 ldi r22, 0x02 ; 2 2a58: 70 e0 ldi r23, 0x00 ; 0 2a5a: 80 e8 ldi r24, 0x80 ; 128 2a5c: 94 e6 ldi r25, 0x64 ; 100 - 2a5e: 0e 94 99 21 call 0x4332 ; 0x4332 + 2a5e: 0e 94 97 21 call 0x432e ; 0x432e 00002a62 : _ZN7Timeout4stopEv(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/timeout.cpp:106 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/timeout.cpp:106 #endif TCB0_CTRLA = 0; 2a62: 8f b7 in r24, 0x3f ; 63 __iCliRetVal(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/timeout.cpp:107 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/timeout.cpp:107 TCB0_INTFLAGS = TCB_CAPT_bm; 2a64: f8 94 cli _ZN7Timeout4stopEv(): 2a66: 10 92 00 0b sts 0x0B00, r1 ; 0x800b00 <__TEXT_REGION_LENGTH__+0x7f0b00> -/Users/askn/Collaborator/UPDI4AVR-USB/src/timeout.cpp:108 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/timeout.cpp:108 longjmp(TIMEOUT_CONTEXT, 2); 2a6a: 91 e0 ldi r25, 0x01 ; 1 2a6c: 90 93 06 0b sts 0x0B06, r25 ; 0x800b06 <__TEXT_REGION_LENGTH__+0x7f0b06> @@ -8757,7 +8757,7 @@ _ZN7Timeout4stopEv(): 00002a74 : command(): 2a74: 0f 93 push r16 -/Users/askn/Collaborator/UPDI4AVR-USB/src/timeout.cpp:53 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/timeout.cpp:53 * Exit from the timeout block. * The last RETI is required. */ @@ -8773,11 +8773,11 @@ static __inline__ uint8_t __iCliRetVal(void) { cli(); 2a78: cf 93 push r28 -/Users/askn/Collaborator/UPDI4AVR-USB/src/timeout.cpp:54 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/timeout.cpp:54 TCB0_CTRLA = 0; 2a7a: df 93 push r29 2a7c: 00 d0 rcall .+0 ; 0x2a7e -/Users/askn/Collaborator/UPDI4AVR-USB/src/timeout.cpp:55 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/timeout.cpp:55 TCB0_INTFLAGS = TCB_CAPT_bm; 2a7e: 00 d0 rcall .+0 ; 0x2a80 2a80: cd b7 in r28, 0x3d ; 61 @@ -8790,11 +8790,11 @@ static __inline__ void __iRestore(const uint8_t *__s) { SREG = *__s; 2a84: 8b 83 std Y+3, r24 ; 0x03 -/Users/askn/Collaborator/UPDI4AVR-USB/src/timeout.cpp:57 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/timeout.cpp:57 } reti(); 2a86: 9c 83 std Y+4, r25 ; 0x04 -/Users/askn/Collaborator/UPDI4AVR-USB/src/timeout.cpp:74 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/timeout.cpp:74 /* * Timeout block. * Does not work with interrupts disabled. @@ -8805,7 +8805,7 @@ static __inline__ void __iRestore(const uint8_t *__s) 2a8a: 1a 82 std Y+2, r1 ; 0x02 2a8c: 80 e8 ldi r24, 0x80 ; 128 2a8e: 94 e6 ldi r25, 0x64 ; 100 - 2a90: 0e 94 79 21 call 0x42f2 ; 0x42f2 + 2a90: 0e 94 77 21 call 0x42ee ; 0x42ee 2a94: 89 2b or r24, r25 2a96: 31 f5 brne .+76 ; 0x2ae4 start(): @@ -8813,16 +8813,16 @@ start(): __iCliRetVal(): 2a9a: f8 94 cli start(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/timeout.cpp:75 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/timeout.cpp:75 volatile size_t _result = 0; 2a9c: 10 92 0a 0b sts 0x0B0A, r1 ; 0x800b0a <__TEXT_REGION_LENGTH__+0x7f0b0a> -/Users/askn/Collaborator/UPDI4AVR-USB/src/timeout.cpp:76 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/timeout.cpp:76 if (setjmp(TIMEOUT_CONTEXT) == 0) { 2aa0: 10 92 0b 0b sts 0x0B0B, r1 ; 0x800b0b <__TEXT_REGION_LENGTH__+0x7f0b0b> 2aa4: 20 e2 ldi r18, 0x20 ; 32 2aa6: 33 e0 ldi r19, 0x03 ; 3 2aa8: 20 93 0c 0b sts 0x0B0C, r18 ; 0x800b0c <__TEXT_REGION_LENGTH__+0x7f0b0c> -/Users/askn/Collaborator/UPDI4AVR-USB/src/timeout.cpp:38 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/timeout.cpp:38 /* * Timeout after the specified time. * To be precise, in 1/1024 sec units. @@ -8830,12 +8830,12 @@ start(): void start (uint16_t _ms) { ATOMIC_BLOCK(ATOMIC_RESTORESTATE) { 2aac: 30 93 0d 0b sts 0x0B0D, r19 ; 0x800b0d <__TEXT_REGION_LENGTH__+0x7f0b0d> -/Users/askn/Collaborator/UPDI4AVR-USB/src/timeout.cpp:39 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/timeout.cpp:39 TCB0_CNT = 0; 2ab0: 81 e0 ldi r24, 0x01 ; 1 2ab2: 80 93 05 0b sts 0x0B05, r24 ; 0x800b05 <__TEXT_REGION_LENGTH__+0x7f0b05> 2ab6: 80 93 06 0b sts 0x0B06, r24 ; 0x800b06 <__TEXT_REGION_LENGTH__+0x7f0b06> -/Users/askn/Collaborator/UPDI4AVR-USB/src/timeout.cpp:40 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/timeout.cpp:40 TCB0_CCMP = _ms; 2aba: 8f e0 ldi r24, 0x0F ; 15 2abc: 80 93 00 0b sts 0x0B00, r24 ; 0x800b00 <__TEXT_REGION_LENGTH__+0x7f0b00> @@ -8843,23 +8843,23 @@ __iRestore(): 2ac0: 9f bf out 0x3f, r25 ; 63 command(): 2ac2: eb 81 ldd r30, Y+3 ; 0x03 -/Users/askn/Collaborator/UPDI4AVR-USB/src/timeout.cpp:41 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/timeout.cpp:41 TCB0_INTCTRL = TCB_CAPT_bm; 2ac4: fc 81 ldd r31, Y+4 ; 0x04 2ac6: 09 95 icall 2ac8: 89 83 std Y+1, r24 ; 0x01 -/Users/askn/Collaborator/UPDI4AVR-USB/src/timeout.cpp:42 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/timeout.cpp:42 TCB0_INTFLAGS = TCB_CAPT_bm; 2aca: 9a 83 std Y+2, r25 ; 0x02 2acc: ef 98 cbi 0x1d, 7 ; 29 -/Users/askn/Collaborator/UPDI4AVR-USB/src/timeout.cpp:43 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/timeout.cpp:43 TCB0_CTRLA = TCB_ENABLE_bm | TCB_CLKSEL_EVENT_gc; /* for EVSYS_USERTCB0COUNT */ 2ace: c9 df rcall .-110 ; 0x2a62 2ad0: 89 81 ldd r24, Y+1 ; 0x01 2ad2: 9a 81 ldd r25, Y+2 ; 0x02 /Users/askn/Library/Arduino15/packages/MultiX-Zinnia/tools/avr-gcc/7.3.0-avr8-gnu-toolchain/avr/include/util/atomic.h:70 2ad4: 24 96 adiw r28, 0x04 ; 4 -/Users/askn/Collaborator/UPDI4AVR-USB/src/timeout.cpp:78 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/timeout.cpp:78 */ size_t command (size_t (*func_p)(void), uint16_t _ms) { volatile size_t _result = 0; @@ -8871,10 +8871,10 @@ command(): 2ada: df 91 pop r29 2adc: cf 91 pop r28 2ade: 1f 91 pop r17 -/Users/askn/Collaborator/UPDI4AVR-USB/src/timeout.cpp:79 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/timeout.cpp:79 bit_clear(PGCONF, PGCONF_FAIL_bp); 2ae0: 0f 91 pop r16 -/Users/askn/Collaborator/UPDI4AVR-USB/src/timeout.cpp:87 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/timeout.cpp:87 /* Stack dump. */ /* An unused register is borrowed to store the SP. */ D1PRINTF("\r\n!TIMEOUT:%04X>", RTC_CMP); @@ -8883,11 +8883,11 @@ command(): Timeout::stop(); 2ae2: 08 95 ret 2ae4: 0c e4 ldi r16, 0x4C ; 76 -/Users/askn/Collaborator/UPDI4AVR-USB/src/timeout.cpp:88 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/timeout.cpp:88 return _result; 2ae6: 11 e0 ldi r17, 0x01 ; 1 2ae8: f8 01 movw r30, r16 -/Users/askn/Collaborator/UPDI4AVR-USB/src/timeout.cpp:89 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/timeout.cpp:89 } 2aea: 80 81 ld r24, Z 2aec: 91 81 ldd r25, Z+1 ; 0x01 @@ -8897,7 +8897,7 @@ command(): 2af4: 98 e0 ldi r25, 0x08 ; 8 2af6: 9f 93 push r25 2af8: 8f 93 push r24 -/Users/askn/Collaborator/UPDI4AVR-USB/src/timeout.cpp:84 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/timeout.cpp:84 bit_clear(PGCONF, PGCONF_FAIL_bp); } else { @@ -8927,7 +8927,7 @@ command(): 00002b28 <__vector_6>: __vector_6(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/timeout.cpp:85 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/timeout.cpp:85 D1PRINTHEX((const void*)(RTC_CMP + 1), 16); 2b28: 1f 92 push r1 2b2a: 0f 92 push r0 @@ -8939,7 +8939,7 @@ __vector_6(): 2b36: 80 93 c7 01 sts 0x01C7, r24 ; 0x8001c7 <__TEXT_REGION_LENGTH__+0x7f01c7> 2b3a: e7 9a sbi 0x1c, 7 ; 28 2b3c: 8f 91 pop r24 -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:358 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:358 /* SW0 Raising Interrupt */ vportRegister(PIN_SYS_SW0).INTFLAGS = ~0; bit_set(GPCONF, GPCONF_RIS_bp); @@ -8955,16 +8955,16 @@ ISR(CCL_CCL_vect) { 00002b48 <__vector_24>: __vector_24(): 2b48: 1f 92 push r1 -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:360 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:360 /* SW0 Falling Intrrupt */ CCL_INTFLAGS = ~0; 2b4a: 0f 92 push r0 2b4c: 0f b6 in r0, 0x3f ; 63 2b4e: 0f 92 push r0 -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:361 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:361 bit_set(GPCONF, GPCONF_FAL_bp); 2b50: 11 24 eor r1, r1 -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:362 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:362 } 2b52: 8f 93 push r24 2b54: 8f ef ldi r24, 0xFF ; 255 @@ -8972,7 +8972,7 @@ __vector_24(): 2b58: e6 9a sbi 0x1c, 6 ; 28 2b5a: 8f 91 pop r24 2b5c: 0f 90 pop r0 -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:352 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:352 }; @@ -8988,15 +8988,15 @@ ISR(portIntrruptVector(PIN_SYS_SW0)) { _ZN14UsartBaseClassC2EP12USART_struct(): 2b66: ed e8 ldi r30, 0x8D ; 141 2b68: f0 e6 ldi r31, 0x60 ; 96 -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:354 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:354 /* SW0 Raising Interrupt */ vportRegister(PIN_SYS_SW0).INTFLAGS = ~0; 2b6a: 80 e2 ldi r24, 0x20 ; 32 2b6c: 98 e0 ldi r25, 0x08 ; 8 -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:355 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:355 bit_set(GPCONF, GPCONF_RIS_bp); 2b6e: 82 83 std Z+2, r24 ; 0x02 -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:356 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:356 } 2b70: 93 83 std Z+3, r25 ; 0x03 _ZN14HarfUART_ClassC2EP12USART_structPK14UART_portmux_t(): @@ -9027,7 +9027,7 @@ HarfUART_Class Serial1C {&USART1, &_portmux_usart1c}; 00002b84
: main(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/main.cpp:83 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/main.cpp:83 } /* NAMELESS */; __attribute__((used, naked, section(".init3"))) @@ -9263,7 +9263,7 @@ println(): 2c68: 90 e6 ldi r25, 0x60 ; 96 2c6a: 0e 94 22 0a call 0x1444 ; 0x1444 setup(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:48 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:48 /* * GPIO - VCP */ @@ -9272,13 +9272,13 @@ setup(): pinModeMacro(PIN_VCP_DTR, OUTPUT); 2c6e: 64 9a sbi 0x0c, 4 ; 12 2c70: 10 92 74 04 sts 0x0474, r1 ; 0x800474 <__TEXT_REGION_LENGTH__+0x7f0474> -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:51 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:51 #endif #if defined(PIN_VCP_RTS) pinModeMacro(PIN_VCP_RTS, OUTPUT); 2c74: 65 9a sbi 0x0c, 5 ; 12 2c76: 10 92 75 04 sts 0x0475, r1 ; 0x800475 <__TEXT_REGION_LENGTH__+0x7f0475> -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:57 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:57 #endif #if defined(PIN_VCP_CTS) && defined(CONFIG_VCP_CTS_ENABLE) pinControlRegister(PIN_VCP_CTS) = PORT_PULLUPEN_bm; @@ -9286,17 +9286,17 @@ setup(): #if defined(PIN_VCP_DCD) pinControlRegister(PIN_VCP_DCD) = PORT_PULLUPEN_bm; 2c7a: 10 93 70 04 sts 0x0470, r17 ; 0x800470 <__TEXT_REGION_LENGTH__+0x7f0470> -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:60 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:60 #endif #if defined(PIN_VCP_DSR) pinControlRegister(PIN_VCP_DSR) = PORT_PULLUPEN_bm; 2c7e: 10 93 71 04 sts 0x0471, r17 ; 0x800471 <__TEXT_REGION_LENGTH__+0x7f0471> -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:63 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:63 #endif #if defined(PIN_VCP_RI) pinControlRegister(PIN_VCP_RI) = PORT_PULLUPEN_bm; 2c82: 10 93 73 04 sts 0x0473, r17 ; 0x800473 <__TEXT_REGION_LENGTH__+0x7f0473> -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:90 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:90 pinControlRegister(PIN_HV_SWITCH) = PORT_INVEN_bm; pinModeMacro(PIN_HV_SWITCH, OUTPUT); #endif @@ -9305,10 +9305,10 @@ setup(): pinModeMacro(PIN_HV_POWER, OUTPUT); 2c86: 06 9a sbi 0x00, 6 ; 0 2c88: 10 92 16 04 sts 0x0416, r1 ; 0x800416 <__TEXT_REGION_LENGTH__+0x7f0416> -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:91 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:91 digitalWriteMacro(PIN_HV_POWER, HIGH); 2c8c: 0e 9a sbi 0x01, 6 ; 1 -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:99 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:99 /* * GPIO - USB */ @@ -9316,7 +9316,7 @@ setup(): #if defined(PIN_USB_VDETECT) pinControlRegister(PIN_USB_VDETECT) = PORT_PULLUPEN_bm; 2c8e: 10 93 b4 04 sts 0x04B4, r17 ; 0x8004b4 <__TEXT_REGION_LENGTH__+0x7f04b4> -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:110 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:110 #if defined(PIN_SYS_SW0) /* SW0 detection: Input negative logic. */ @@ -9325,16 +9325,16 @@ setup(): pinControlRegister(PIN_SYS_SW0) = PORT_PULLUPEN_bm | PORT_ISC_RISING_gc; 2c92: 8a e0 ldi r24, 0x0A ; 10 2c94: 80 93 b6 04 sts 0x04B6, r24 ; 0x8004b6 <__TEXT_REGION_LENGTH__+0x7f04b6> -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:111 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:111 portRegister(PIN_SYS_SW0).EVGENCTRLA = pinPosition(PIN_SYS_SW0); 2c98: 96 e0 ldi r25, 0x06 ; 6 2c9a: 90 93 b8 04 sts 0x04B8, r25 ; 0x8004b8 <__TEXT_REGION_LENGTH__+0x7f04b8> -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:113 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:113 #if (PIN_SYS_SW0 & 0xF0) == 176 EVSYS_CHANNEL3 = EVSYS_CHANNEL_PORTF_EVGEN0_gc; 2c9e: 8a e4 ldi r24, 0x4A ; 74 2ca0: 80 93 13 02 sts 0x0213, r24 ; 0x800213 <__TEXT_REGION_LENGTH__+0x7f0213> -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:133 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:133 CCL_TRUTH0 = CCL_TRUTH_1_bm | CCL_TRUTH_2_bm; CCL_LUT0CTRLB = CCL_INSEL0_TCA0_gc | CCL_INSEL1_TCB1_gc; CCL_LUT0CTRLA = CCL_ENABLE_bm | CCL_OUTEN_bm; /* PIN_PC3 */ @@ -9343,26 +9343,26 @@ setup(): pinControlRegister(PIN_PF2) = PORT_INVEN_bm; 2ca4: 20 e8 ldi r18, 0x80 ; 128 2ca6: 20 93 b2 04 sts 0x04B2, r18 ; 0x8004b2 <__TEXT_REGION_LENGTH__+0x7f04b2> -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:134 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:134 EVSYS_CHANNEL0 = EVSYS_CHANNEL_CCL_LUT0_gc; 2caa: 80 e1 ldi r24, 0x10 ; 16 2cac: 80 93 10 02 sts 0x0210, r24 ; 0x800210 <__TEXT_REGION_LENGTH__+0x7f0210> -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:135 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:135 EVSYS_USEREVSYSEVOUTF = EVSYS_USER_CHANNEL0_gc; 2cb0: 81 e0 ldi r24, 0x01 ; 1 2cb2: 80 93 2b 02 sts 0x022B, r24 ; 0x80022b <__TEXT_REGION_LENGTH__+0x7f022b> -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:137 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:137 /* TRUTH0: 000 001 010 011 is ON */ CCL_TRUTH0 = CCL_TRUTH_1_bm | CCL_TRUTH_2_bm; 2cb6: 90 93 cb 01 sts 0x01CB, r25 ; 0x8001cb <__TEXT_REGION_LENGTH__+0x7f01cb> -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:138 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:138 CCL_LUT0CTRLB = CCL_INSEL0_TCA0_gc | CCL_INSEL1_TCB1_gc; 2cba: 99 ea ldi r25, 0xA9 ; 169 2cbc: 90 93 c9 01 sts 0x01C9, r25 ; 0x8001c9 <__TEXT_REGION_LENGTH__+0x7f01c9> -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:139 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:139 CCL_LUT0CTRLA = CCL_ENABLE_bm; 2cc0: 80 93 c8 01 sts 0x01C8, r24 ; 0x8001c8 <__TEXT_REGION_LENGTH__+0x7f01c8> -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:151 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:151 CCL_LUT1CTRLA = CCL_ENABLE_bm | CCL_OUTEN_bm; /* PIN_PA6 */ #endif @@ -9371,21 +9371,21 @@ setup(): EVSYS_USERCCLLUT3A = EVSYS_USER_CHANNEL3_gc; 2cc4: 94 e0 ldi r25, 0x04 ; 4 2cc6: 90 93 26 02 sts 0x0226, r25 ; 0x800226 <__TEXT_REGION_LENGTH__+0x7f0226> -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:152 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:152 CCL_TRUTH3 = CCL_TRUTH_1_bm; 2cca: 92 e0 ldi r25, 0x02 ; 2 2ccc: 90 93 d7 01 sts 0x01D7, r25 ; 0x8001d7 <__TEXT_REGION_LENGTH__+0x7f01d7> -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:153 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:153 CCL_LUT3CTRLB = CCL_INSEL0_EVENTA_gc; 2cd0: 00 93 d5 01 sts 0x01D5, r16 ; 0x8001d5 <__TEXT_REGION_LENGTH__+0x7f01d5> -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:154 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:154 CCL_LUT3CTRLA = CCL_ENABLE_bm | CCL_FILTSEL_FILTER_gc; 2cd4: 31 e2 ldi r19, 0x21 ; 33 2cd6: 30 93 d4 01 sts 0x01D4, r19 ; 0x8001d4 <__TEXT_REGION_LENGTH__+0x7f01d4> -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:155 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:155 CCL_INTCTRL0 = CCL_INTMODE3_FALLING_gc; 2cda: 20 93 c5 01 sts 0x01C5, r18 ; 0x8001c5 <__TEXT_REGION_LENGTH__+0x7f01c5> -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:160 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:160 #endif /*** CCL enable ***/ @@ -9393,7 +9393,7 @@ setup(): CCL_CTRLA = CCL_RUNSTDBY_bm | CCL_ENABLE_bm; 2cde: 21 e4 ldi r18, 0x41 ; 65 2ce0: 20 93 c0 01 sts 0x01C0, r18 ; 0x8001c0 <__TEXT_REGION_LENGTH__+0x7f01c0> -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:167 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:167 /*** TCA0 ***/ /* TCA0 is split into two 8-bit timers. */ /* The lower timer controls the blinking rate of the LED. */ @@ -9401,15 +9401,15 @@ setup(): /* and as the output for the charge pump. */ TCA0_SPLIT_CTRLD = TCA_SPLIT_SPLITM_bm; 2ce4: 80 93 03 0a sts 0x0A03, r24 ; 0x800a03 <__TEXT_REGION_LENGTH__+0x7f0a03> -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:168 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:168 TCA0_SPLIT_LPER = TCA0_STEP - 2; 2ce8: 23 ec ldi r18, 0xC3 ; 195 2cea: 20 93 26 0a sts 0x0A26, r18 ; 0x800a26 <__TEXT_REGION_LENGTH__+0x7f0a26> -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:169 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:169 TCA0_SPLIT_LCMP0 = TCA0_STEP / 2; 2cee: 22 e6 ldi r18, 0x62 ; 98 2cf0: 20 93 28 0a sts 0x0A28, r18 ; 0x800a28 <__TEXT_REGION_LENGTH__+0x7f0a28> -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:176 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:176 /*** TCB0 ***/ /* The TCB0 timer is configured in the module. */ @@ -9418,17 +9418,17 @@ setup(): TCB1_CTRLB = TCB_ASYNC_bm | TCB_CNTMODE_PWM8_gc; 2cf4: 27 e4 ldi r18, 0x47 ; 71 2cf6: 20 93 11 0b sts 0x0B11, r18 ; 0x800b11 <__TEXT_REGION_LENGTH__+0x7f0b11> -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:177 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:177 TCB1_CCMP = TCB1_FLASH; 2cfa: 29 ea ldi r18, 0xA9 ; 169 2cfc: 35 e0 ldi r19, 0x05 ; 5 2cfe: 20 93 1c 0b sts 0x0B1C, r18 ; 0x800b1c <__TEXT_REGION_LENGTH__+0x7f0b1c> 2d02: 30 93 1d 0b sts 0x0B1D, r19 ; 0x800b1d <__TEXT_REGION_LENGTH__+0x7f0b1d> -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:178 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:178 TCB1_CTRLA = TCB_RUNSTDBY_bm | TCB_ENABLE_bm | TCB_CLKSEL_EVENT_gc; 2d06: 2f e4 ldi r18, 0x4F ; 79 2d08: 20 93 10 0b sts 0x0B10, r18 ; 0x800b10 <__TEXT_REGION_LENGTH__+0x7f0b10> -/Users/askn/Collaborator/UPDI4AVR-USB/src/timeout.cpp:25 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/timeout.cpp:25 #include "prototype.h" namespace Timeout { @@ -9437,24 +9437,24 @@ namespace Timeout { RTC_PITEVGENCTRLA = RTC_EVGEN0SEL_DIV32_gc | RTC_EVGEN1SEL_DIV128_gc; 2d0c: 24 e6 ldi r18, 0x64 ; 100 2d0e: 20 93 56 01 sts 0x0156, r18 ; 0x800156 <__TEXT_REGION_LENGTH__+0x7f0156> -/Users/askn/Collaborator/UPDI4AVR-USB/src/timeout.cpp:26 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/timeout.cpp:26 EVSYS_CHANNEL1 = EVSYS_CHANNEL_RTC_EVGEN0_gc; /* 1024Hz periodic. */ 2d12: 10 93 11 02 sts 0x0211, r17 ; 0x800211 <__TEXT_REGION_LENGTH__+0x7f0211> -/Users/askn/Collaborator/UPDI4AVR-USB/src/timeout.cpp:27 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/timeout.cpp:27 EVSYS_CHANNEL2 = EVSYS_CHANNEL_RTC_EVGEN1_gc; /* 32Hz periodic. */ 2d16: 29 e0 ldi r18, 0x09 ; 9 2d18: 20 93 12 02 sts 0x0212, r18 ; 0x800212 <__TEXT_REGION_LENGTH__+0x7f0212> -/Users/askn/Collaborator/UPDI4AVR-USB/src/timeout.cpp:28 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/timeout.cpp:28 EVSYS_USERTCB0COUNT = EVSYS_USER_CHANNEL1_gc; /* TCB0_CLK = 1024Hz */ 2d1c: 90 93 31 02 sts 0x0231, r25 ; 0x800231 <__TEXT_REGION_LENGTH__+0x7f0231> -/Users/askn/Collaborator/UPDI4AVR-USB/src/timeout.cpp:29 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/timeout.cpp:29 EVSYS_USERTCB1COUNT = EVSYS_USER_CHANNEL2_gc; /* TCB1_CLK = 32Hz */ 2d20: 00 93 33 02 sts 0x0233, r16 ; 0x800233 <__TEXT_REGION_LENGTH__+0x7f0233> -/Users/askn/Collaborator/UPDI4AVR-USB/src/timeout.cpp:30 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/timeout.cpp:30 RTC_PITCTRLA = RTC_PITEN_bm; 2d24: 80 93 50 01 sts 0x0150, r24 ; 0x800150 <__TEXT_REGION_LENGTH__+0x7f0150> main(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/main.cpp:94 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/main.cpp:94 Serial.print(F("__AVR_ARCH__ = ")).println(__AVR_ARCH__, DEC); #endif @@ -9462,33 +9462,33 @@ main(): Timeout::setup(); USART::setup(); 2d28: 02 d9 rcall .-3580 ; 0x1f2e -/Users/askn/Collaborator/UPDI4AVR-USB/src/main.cpp:96 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/main.cpp:96 loop_until_bit_is_clear(WDT_STATUS, WDT_SYNCBUSY_bp); 2d2a: 80 91 01 01 lds r24, 0x0101 ; 0x800101 <__TEXT_REGION_LENGTH__+0x7f0101> 2d2e: 80 fd sbrc r24, 0 2d30: fc cf rjmp .-8 ; 0x2d2a -/Users/askn/Collaborator/UPDI4AVR-USB/src/main.cpp:97 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/main.cpp:97 _PROTECTED_WRITE(WDT_CTRLA, WDT_PERIOD_1KCLK_gc); 2d32: 88 ed ldi r24, 0xD8 ; 216 2d34: 98 e0 ldi r25, 0x08 ; 8 2d36: 84 bf out 0x34, r24 ; 52 2d38: 90 93 00 01 sts 0x0100, r25 ; 0x800100 <__TEXT_REGION_LENGTH__+0x7f0100> -/Users/askn/Collaborator/UPDI4AVR-USB/src/main.cpp:101 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/main.cpp:101 #if defined(PIN_SYS_SW0) /* Clear the dirty flag before enabling interrupts. */ vportRegister(PIN_SYS_SW0).INTFLAGS = ~0; 2d3c: 8f ef ldi r24, 0xFF ; 255 2d3e: 87 bb out 0x17, r24 ; 23 -/Users/askn/Collaborator/UPDI4AVR-USB/src/main.cpp:102 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/main.cpp:102 CCL_INTFLAGS = ~0; 2d40: 80 93 c7 01 sts 0x01C7, r24 ; 0x8001c7 <__TEXT_REGION_LENGTH__+0x7f01c7> -/Users/askn/Collaborator/UPDI4AVR-USB/src/main.cpp:104 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/main.cpp:104 #endif interrupts(); 2d44: 78 94 sei -/Users/askn/Collaborator/UPDI4AVR-USB/src/main.cpp:111 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/main.cpp:111 #if !defined(PIN_USB_VDETECT) /* If you do not use VBD, insert the shortest possible delay instead. */ delay_millis(250); @@ -9496,7 +9496,7 @@ main(): #else SYS::LED_Flash(); 2d46: 0e 94 8f 08 call 0x111e ; 0x111e -/Users/askn/Collaborator/UPDI4AVR-USB/src/main.cpp:115 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/main.cpp:115 #endif /* From here on, it's an endless loop. */ @@ -9515,7 +9515,7 @@ main(): 2d62: 0f 90 pop r0 2d64: 0f 90 pop r0 handling_control_transactions(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:657 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:658 /* This process is equivalent to a endpoint interrupt. */ /* The reason for using polling is to prioritize VCP performance. */ void handling_control_transactions (void) { @@ -9529,7 +9529,7 @@ handling_control_transactions(): 2d6e: 22 0e add r2, r18 2d70: 31 1c adc r3, r1 request_class(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:623 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:624 else if (bRequest == 0x21) { /* GET_LINE_ENCODING */ memcpy(&EP_MEM.res_encoding, &_set_line_encoding, sizeof(LineEncoding_t)); if (EP_MEM.res_encoding.dwDTERate == 0) { @@ -9543,7 +9543,7 @@ request_class(): 2d7a: a1 2c mov r10, r1 2d7c: b1 2c mov r11, r1 request_standard(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:578 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:579 } else if (bRequest == 0x0A) { /* GET_INTREFACE */ /* It seems not to be used. */ @@ -9554,12 +9554,12 @@ request_standard(): 2d80: 63 94 inc r6 2d82: 71 2c mov r7, r1 main(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/main.cpp:117 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/main.cpp:117 while (true) { wdt_reset(); 2d84: a8 95 wdr handling_bus_events(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:688 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:689 /*** This process is equivalent to a bus interrupt. ***/ /* The reason for using polling is to prioritize VCP performance. */ @@ -9567,22 +9567,22 @@ handling_bus_events(): void handling_bus_events (void) { uint8_t busstate = USB0_INTFLAGSA; 2d86: f0 90 0a 0c lds r15, 0x0C0A ; 0x800c0a <__TEXT_REGION_LENGTH__+0x7f0c0a> -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:689 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:690 USB0_INTFLAGSA = busstate; 2d8a: f0 92 0a 0c sts 0x0C0A, r15 ; 0x800c0a <__TEXT_REGION_LENGTH__+0x7f0c0a> -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:692 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:693 #if defined(PIN_USB_VDETECT) /* This section is still experimental. */ if (digitalReadMacro(PIN_USB_VDETECT)) { 2d8e: b4 9b sbis 0x16, 4 ; 22 2d90: 10 c0 rjmp .+32 ; 0x2db2 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:693 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:694 if (!USB0_CTRLA) { 2d92: 80 91 00 0c lds r24, 0x0C00 ; 0x800c00 <__TEXT_REGION_LENGTH__+0x7f0c00> 2d96: 81 11 cpse r24, r1 2d98: 11 c0 rjmp .+34 ; 0x2dbc setup_device(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:235 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:235 EP_MEM.cci_header.wLength = 2; EP_MEM.cci_wValue = _state; } @@ -9593,16 +9593,16 @@ setup_device(): 2d9e: 83 30 cpi r24, 0x03 ; 3 2da0: 11 f0 breq .+4 ; 0x2da6 2da2: 0e 94 8f 08 call 0x111e ; 0x111e -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:236 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:236 USB0_ADDR = 0; 2da6: 10 92 03 0c sts 0x0C03, r1 ; 0x800c03 <__TEXT_REGION_LENGTH__+0x7f0c03> -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:237 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:237 if (USB0_CTRLA || _force) { 2daa: 80 91 00 0c lds r24, 0x0C00 ; 0x800c00 <__TEXT_REGION_LENGTH__+0x7f0c00> 2dae: 57 d8 rcall .-3922 ; 0x1e5e 2db0: 31 c0 rjmp .+98 ; 0x2e14 handling_bus_events(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:698 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:699 if (!USB0_CTRLA) { setup_device(true); return; @@ -9611,11 +9611,11 @@ handling_bus_events(): else if (USB0_CTRLA) { 2db2: 80 91 00 0c lds r24, 0x0C00 ; 0x800c00 <__TEXT_REGION_LENGTH__+0x7f0c00> 2db6: 81 11 cpse r24, r1 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:700 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:701 /* System reboot */ SYS::reboot(); 2db8: 0e 94 59 0e call 0x1cb2 ; 0x1cb2 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:714 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:715 } if (bit_is_set(busstate, USB_RESUME_bp)) { D1PRINTF("\r\n", USB0_ADDR); @@ -9624,7 +9624,7 @@ handling_bus_events(): if (bit_is_set(busstate, USB_SOF_bp)) { 2dbc: f7 fe sbrs r15, 7 2dbe: 14 c0 rjmp .+40 ; 0x2de8 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:716 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:717 /* If there is deferred data for a block transfer, it is sent here. */ if (_sof_count > 0 && 0 == (--_sof_count)) { 2dc0: 80 91 2f 64 lds r24, 0x642F ; 0x80642f <_sof_count> @@ -9635,17 +9635,17 @@ handling_bus_events(): 2dce: 80 93 2f 64 sts 0x642F, r24 ; 0x80642f <_sof_count> 2dd2: 81 11 cpse r24, r1 2dd4: 09 c0 rjmp .+18 ; 0x2de8 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:717 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:718 if (bit_is_set(EP_CDI.STATUS, USB_BUSNAK_bp) && _send_count > 0) { 2dd6: 80 91 76 64 lds r24, 0x6476 ; 0x806476 2dda: 81 ff sbrs r24, 1 2ddc: 05 c0 rjmp .+10 ; 0x2de8 2dde: 80 91 32 64 lds r24, 0x6432 ; 0x806432 <_send_count> 2de2: 81 11 cpse r24, r1 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:718 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:719 ep_cdi_listen(); 2de4: 0e 94 10 05 call 0xa20 ; 0xa20 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:723 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:724 } } } @@ -9654,27 +9654,27 @@ handling_bus_events(): 2de8: 8f 2d mov r24, r15 2dea: 80 76 andi r24, 0x60 ; 96 2dec: 29 f0 breq .+10 ; 0x2df8 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:726 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:727 /* This implementation does not transition to power saving mode. */ /* This is only passed when the USB cable is unplugged. */ if (bit_is_set(GPCONF, GPCONF_USB_bp)) { 2dee: e0 99 sbic 0x1c, 0 ; 28 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:728 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:729 /* System reboot */ SYS::reboot(); 2df0: 0e 94 59 0e call 0x1cb2 ; 0x1cb2 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:730 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:731 } bit_set(busstate, USB_RESET_bp); 2df4: 68 94 set 2df6: f4 f8 bld r15, 4 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:732 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:733 } if (bit_is_set(busstate, USB_RESET_bp)) { 2df8: f4 fe sbrs r15, 4 2dfa: 0c c0 rjmp .+24 ; 0x2e14 setup_device(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:235 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:235 EP_MEM.cci_header.wLength = 2; EP_MEM.cci_wValue = _state; } @@ -9685,16 +9685,16 @@ setup_device(): 2e00: 83 30 cpi r24, 0x03 ; 3 2e02: 11 f0 breq .+4 ; 0x2e08 2e04: 0e 94 8f 08 call 0x111e ; 0x111e -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:236 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:236 USB0_ADDR = 0; 2e08: 10 92 03 0c sts 0x0C03, r1 ; 0x800c03 <__TEXT_REGION_LENGTH__+0x7f0c03> -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:237 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:237 if (USB0_CTRLA || _force) { 2e0c: 80 91 00 0c lds r24, 0x0C00 ; 0x800c00 <__TEXT_REGION_LENGTH__+0x7f0c00> 2e10: 81 11 cpse r24, r1 2e12: cd cf rjmp .-102 ; 0x2dae is_ep_setup(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:256 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:256 set_cci_data(0x00); USB0_CTRLA = USB_ENABLE_bm | (USB_ENDPOINTS_MAX - 1); } @@ -9703,7 +9703,7 @@ is_ep_setup(): bool is_ep_setup (void) { return bit_is_set(EP_REQ.STATUS, USB_EPSETUP_bp); } 2e14: 80 91 3e 64 lds r24, 0x643E ; 0x80643e main(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/main.cpp:121 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/main.cpp:121 /*** USB control handling ***/ USB::handling_bus_events(); @@ -9711,7 +9711,7 @@ main(): 2e18: 84 ff sbrs r24, 4 2e1a: 4c c0 rjmp .+152 ; 0x2eb4 handling_control_transactions(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:656 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:657 /*** Accept the EP0 setup packet. ***/ /* This process is equivalent to a endpoint interrupt. */ /* The reason for using polling is to prioritize VCP performance. */ @@ -9719,7 +9719,7 @@ handling_control_transactions(): bool _listen = false; uint8_t bmRequestType = EP_MEM.req_data.bmRequestType; 2e1c: f0 90 16 63 lds r15, 0x6316 ; 0x806316 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:657 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:658 D1PRINTF("RQ=%02X:%04X:%02X:%02X:%04X:%04X:%04X\r\n", 2e20: 80 91 40 64 lds r24, 0x6440 ; 0x806440 2e24: 90 91 41 64 lds r25, 0x6441 ; 0x806441 @@ -9752,7 +9752,7 @@ handling_control_transactions(): 2e6c: 1f 93 push r17 2e6e: 0f 93 push r16 2e70: 0e 94 2e 0a call 0x145c ; 0x145c -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:661 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:662 EP_REQ.STATUS, EP_REQ.CNT, EP_MEM.req_data.bmRequestType, EP_MEM.req_data.bRequest, EP_MEM.req_data.wValue, EP_MEM.req_data.wIndex, EP_MEM.req_data.wLength); /* Accepts subsequent EP0_DATA packets as needed. */ @@ -9761,16 +9761,16 @@ handling_control_transactions(): 2e76: de bf out 0x3e, r29 ; 62 2e78: f7 fe sbrs r15, 7 2e7a: 0e 94 62 05 call 0xac4 ; 0xac4 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:662 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:663 bmRequestType &= (3 << 5); 2e7e: 8f 2d mov r24, r15 2e80: 80 76 andi r24, 0x60 ; 96 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:663 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:664 if (bmRequestType == (0 << 5)) { 2e82: 09 f0 breq .+2 ; 0x2e86 - 2e84: aa c2 rjmp .+1364 ; 0x33da + 2e84: a8 c2 rjmp .+1360 ; 0x33d6 request_standard(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:526 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:526 } /*** USB Standard Request Enumeration. ***/ @@ -9778,24 +9778,24 @@ request_standard(): bool _listen = true; uint8_t bRequest = EP_MEM.req_data.bRequest; 2e86: 80 91 17 63 lds r24, 0x6317 ; 0x806317 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:527 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:527 if (bRequest == 0x00) { /* GET_STATUS */ 2e8a: 81 11 cpse r24, r1 2e8c: 9b c0 rjmp .+310 ; 0x2fc4 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:528 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:528 EP_MEM.res_data[0] = 0; 2e8e: 10 92 1e 63 sts 0x631E, r1 ; 0x80631e -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:529 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:529 EP_MEM.res_data[1] = 0; 2e92: 10 92 1f 63 sts 0x631F, r1 ; 0x80631f -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:530 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:530 EP_RES.CNT = 2; 2e96: 82 e0 ldi r24, 0x02 ; 2 2e98: 90 e0 ldi r25, 0x00 ; 0 2e9a: 80 93 48 64 sts 0x6448, r24 ; 0x806448 2e9e: 90 93 49 64 sts 0x6449, r25 ; 0x806449 handling_control_transactions(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:675 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:676 else if (bmRequestType == (2 << 5)) { _listen = request_vendor(); } @@ -9803,10 +9803,10 @@ handling_control_transactions(): if (_listen) { ep_res_listen(); 2ea2: 0e 94 56 05 call 0xaac ; 0xaac -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:676 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:677 ep_req_listen(); 2ea6: 0e 94 62 05 call 0xac4 ; 0xac4 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:681 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:682 } else { ep0_stalled(); @@ -9816,18 +9816,18 @@ handling_control_transactions(): 2eae: 84 60 ori r24, 0x04 ; 4 2eb0: 80 93 0b 0c sts 0x0C0B, r24 ; 0x800c0b <__TEXT_REGION_LENGTH__+0x7f0c0b> main(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/main.cpp:124 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/main.cpp:124 /* If SW0 was used, work here. */ if (bit_is_clear(PGCONF, PGCONF_UPDI_bp)) { 2eb4: e8 99 sbic 0x1d, 0 ; 29 2eb6: 2d c0 rjmp .+90 ; 0x2f12 -/Users/askn/Collaborator/UPDI4AVR-USB/src/main.cpp:125 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/main.cpp:125 if (bit_is_set(GPCONF, GPCONF_FAL_bp)) SYS::reset_enter(); 2eb8: e7 9b sbis 0x1c, 7 ; 28 - 2eba: 7b c3 rjmp .+1782 ; 0x35b2 + 2eba: 79 c3 rjmp .+1778 ; 0x35ae LED_TCB1(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:198 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:198 _led_mode = 1; } } @@ -9837,28 +9837,28 @@ LED_TCB1(): 2ebc: 80 91 85 60 lds r24, 0x6085 ; 0x806085 <_led_mode> 2ec0: 83 30 cpi r24, 0x03 ; 3 2ec2: 81 f0 breq .+32 ; 0x2ee4 -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:199 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:199 TCA0_SPLIT_CTRLA = 0; 2ec4: 10 92 00 0a sts 0x0A00, r1 ; 0x800a00 <__TEXT_REGION_LENGTH__+0x7f0a00> -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:200 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:200 TCB1_CNTL = 0; 2ec8: 10 92 1a 0b sts 0x0B1A, r1 ; 0x800b1a <__TEXT_REGION_LENGTH__+0x7f0b1a> -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:201 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:201 TCB1_CCMP = _ccmp; 2ecc: 89 ea ldi r24, 0xA9 ; 169 2ece: 95 e5 ldi r25, 0x55 ; 85 2ed0: 80 93 1c 0b sts 0x0B1C, r24 ; 0x800b1c <__TEXT_REGION_LENGTH__+0x7f0b1c> 2ed4: 90 93 1d 0b sts 0x0B1D, r25 ; 0x800b1d <__TEXT_REGION_LENGTH__+0x7f0b1d> -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:202 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:202 TCB1_CTRLA = TCB_RUNSTDBY_bm | TCB_ENABLE_bm | TCB_CLKSEL_EVENT_gc; 2ed8: 8f e4 ldi r24, 0x4F ; 79 2eda: 80 93 10 0b sts 0x0B10, r24 ; 0x800b10 <__TEXT_REGION_LENGTH__+0x7f0b10> -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:203 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:203 _led_mode = _mode; 2ede: 83 e0 ldi r24, 0x03 ; 3 2ee0: 80 93 85 60 sts 0x6085, r24 ; 0x806085 <_led_mode> reset_enter(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:256 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:256 * Executed when SW0 is detected as being pressed. * May be called multiple times due to chattering. */ @@ -9868,7 +9868,7 @@ reset_enter(): 2ee4: 80 91 98 60 lds r24, 0x6098 ; 0x806098 <_jtag_arch> 2ee8: 85 30 cpi r24, 0x05 ; 5 2eea: 29 f4 brne .+10 ; 0x2ef6 -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:262 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:262 /* * Puts a tinyAVR-0 which does not have a reset pad into reset state. * This applies to all chips which have an enabled UPDI pad. @@ -9877,14 +9877,14 @@ reset_enter(): _updi_bitmap[10] = 0x59; /* SYSRST */ 2eec: 89 e5 ldi r24, 0x59 ; 89 2eee: 80 93 24 60 sts 0x6024, r24 ; 0x806024 -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:263 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:263 send_bitmap(_updi_bitmap, sizeof(_updi_bitmap) * 8); 2ef2: 0e 94 b7 04 call 0x96e ; 0x96e -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:265 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:265 } openDrainWriteMacro(PIN_PG_TRST, LOW); 2ef6: 01 9a sbi 0x00, 1 ; 0 -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:266 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:266 D1PRINTF("\r\n"); 2ef8: 89 e9 ldi r24, 0x99 ; 153 2efa: 92 e0 ldi r25, 0x02 ; 2 @@ -9893,7 +9893,7 @@ reset_enter(): 2f00: 1f 93 push r17 2f02: 0f 93 push r16 2f04: 0e 94 2e 0a call 0x145c ; 0x145c -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:267 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:267 bit_clear(GPCONF, GPCONF_FAL_bp); 2f08: e7 98 cbi 0x1c, 7 ; 28 2f0a: 0f 90 pop r0 @@ -9901,7 +9901,7 @@ reset_enter(): 2f0e: 0f 90 pop r0 2f10: 0f 90 pop r0 main(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/main.cpp:130 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/main.cpp:130 else if (bit_is_set(GPCONF, GPCONF_RIS_bp)) SYS::reset_leave(); } @@ -9909,7 +9909,7 @@ main(): if (bit_is_clear(GPCONF, GPCONF_USB_bp)) continue; 2f12: e0 9b sbis 0x1c, 0 ; 28 2f14: 37 cf rjmp .-402 ; 0x2d84 -/Users/askn/Collaborator/UPDI4AVR-USB/src/main.cpp:140 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/main.cpp:140 /* character arrives every 400 clocks on a 20MHz reference. */ /* So we avoid using interrupts here and use polling to gain speed. */ #if defined(CONFIG_VCP_9BIT_SUPPORT) @@ -9917,9 +9917,9 @@ main(): #else if (bit_is_set(GPCONF, GPCONF_VCP_bp)) USB::vcp_transceiver(); 2f16: e1 9b sbis 0x1c, 1 ; 28 - 2f18: 9c c3 rjmp .+1848 ; 0x3652 + 2f18: 9a c3 rjmp .+1844 ; 0x364e vcp_transceiver(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:502 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:502 if (bit_is_clear(GPCONF, GPCONF_BRK_bp) #if defined(CONFIG_VCP_CTS_ENABLE) && !digitalReadMacro(PIN_VCP_CTS) @@ -9928,7 +9928,7 @@ vcp_transceiver(): && read_available()) { 2f1a: e3 99 sbic 0x1c, 3 ; 28 2f1c: 14 c0 rjmp .+40 ; 0x2f46 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:501 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:501 void vcp_transceiver (void) { if (bit_is_clear(GPCONF, GPCONF_BRK_bp) #if defined(CONFIG_VCP_CTS_ENABLE) @@ -9939,7 +9939,7 @@ vcp_transceiver(): 2f22: 85 ff sbrs r24, 5 2f24: 10 c0 rjmp .+32 ; 0x2f46 read_available(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:458 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:458 return _c; } @@ -9951,18 +9951,18 @@ read_available(): 2f2c: 0c c0 rjmp .+24 ; 0x2f46 2f2e: e1 9b sbis 0x1c, 1 ; 28 2f30: 0a c0 rjmp .+20 ; 0x2f46 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:459 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:459 _s = EP_CDO.CNT - _recv_count; 2f32: 20 91 70 64 lds r18, 0x6470 ; 0x806470 2f36: 30 91 71 64 lds r19, 0x6471 ; 0x806471 2f3a: 80 91 31 64 lds r24, 0x6431 ; 0x806431 <_recv_count> -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:460 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:460 if (_s == 0) ep_cdo_listen(); 2f3e: 82 13 cpse r24, r18 - 2f40: 69 c3 rjmp .+1746 ; 0x3614 + 2f40: 67 c3 rjmp .+1742 ; 0x3610 2f42: 0e 94 ff 04 call 0x9fe ; 0x9fe main(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/main.cpp:145 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/main.cpp:145 #endif else USB::read_drop(); @@ -9971,7 +9971,7 @@ main(): 2f46: e3 9b sbis 0x1c, 3 ; 28 2f48: 18 c0 rjmp .+48 ; 0x2f7a cci_break_count(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:397 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:397 bit_clear(GPCONF, GPCONF_BRK_bp); } @@ -9986,26 +9986,26 @@ cci_break_count(): 2f58: 22 30 cpi r18, 0x02 ; 2 2f5a: 31 05 cpc r19, r1 2f5c: 70 f0 brcs .+28 ; 0x2f7a -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:398 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:398 if (_send_break > USB_CCI_INTERVAL) { 2f5e: 85 30 cpi r24, 0x05 ; 5 2f60: 91 05 cpc r25, r1 2f62: 08 f4 brcc .+2 ; 0x2f66 - 2f64: 7b c3 rjmp .+1782 ; 0x365c -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:399 + 2f64: 79 c3 rjmp .+1778 ; 0x3658 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:399 _send_break -= USB_CCI_INTERVAL; 2f66: 04 97 sbiw r24, 0x04 ; 4 2f68: 80 93 33 64 sts 0x6433, r24 ; 0x806433 <_send_break> 2f6c: 90 93 34 64 sts 0x6434, r25 ; 0x806434 <_send_break+0x1> -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:400 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:400 if (bit_is_set(EP_CCI.STATUS, USB_BUSNAK_bp)) 2f70: 80 91 66 64 lds r24, 0x6466 ; 0x806466 2f74: 81 fd sbrc r24, 1 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:401 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:401 ep_cci_listen(); 2f76: 0e 94 44 05 call 0xa88 ; 0xa88 is_not_dap(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:257 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:257 USB0_CTRLA = USB_ENABLE_bm | (USB_ENDPOINTS_MAX - 1); } } @@ -10014,14 +10014,14 @@ is_not_dap(): bool is_not_dap (void) { return bit_is_clear(EP_DPO.STATUS, USB_BUSNAK_bp); } 2f7a: 80 91 5e 64 lds r24, 0x645E ; 0x80645e main(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/main.cpp:148 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/main.cpp:148 /*** If CMSIS-DAP is not received, return to the top. ***/ if (USB::is_not_dap()) continue; 2f7e: 81 ff sbrs r24, 1 2f80: fe ce rjmp .-516 ; 0x2d7e dap_command_check(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:52 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:52 * Command numbers 0x80 and above are vendor extensions, EDBG Payload uses 0x80 and x81. * Additionally, 0x82 is reserved for device event notification. */ @@ -10029,11 +10029,11 @@ dap_command_check(): bool _result = false; uint8_t _cmd = EP_MEM.dap_data[0]; 2f82: 90 91 2e 63 lds r25, 0x632E ; 0x80632e -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:53 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:53 uint8_t _sub = EP_MEM.dap_data[1]; 2f86: 80 91 2f 63 lds r24, 0x632F ; 0x80632f ep_dpi_pending(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:260 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:260 void ep_req_pending (void) { loop_until_bit_is_set(EP_REQ.STATUS, USB_BUSNAK_bp); } void ep_res_pending (void) { loop_until_bit_is_set(EP_RES.STATUS, USB_BUSNAK_bp); } void ep_dpi_pending (void) { loop_until_bit_is_set(EP_DPI.STATUS, USB_BUSNAK_bp); } @@ -10041,7 +10041,7 @@ ep_dpi_pending(): 2f8e: 21 ff sbrs r18, 1 2f90: fc cf rjmp .-8 ; 0x2f8a dap_command_check(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:65 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:65 * and the data is sent and received with a fixed length of 64 bytes, * determined by the value specified in the HID Report. * A maximum of 15 chunks is possible, @@ -10050,13 +10050,13 @@ dap_command_check(): if (_cmd == 0x80) { /* DAP_EDBG_VENDOR_AVR_CMD */ 2f92: 90 38 cpi r25, 0x80 ; 128 2f94: 09 f0 breq .+2 ; 0x2f98 - 2f96: 3c c4 rjmp .+2168 ; 0x3810 -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:66 + 2f96: 3a c4 rjmp .+2164 ; 0x380c +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:66 uint8_t _endf = _sub & 0x0F; 2f98: f8 2f mov r31, r24 2f9a: ff 70 andi r31, 0x0F ; 15 2f9c: 6f 2e mov r6, r31 -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:70 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:70 uint8_t _frag = _sub >> 4; uint8_t _size = EP_MEM.dap_data[3]; size_t _ofst = (_frag - 1) * 60; @@ -10064,13 +10064,13 @@ dap_command_check(): 2f9e: 29 e0 ldi r18, 0x09 ; 9 2fa0: 2f 17 cp r18, r31 2fa2: 08 f0 brcs .+2 ; 0x2fa6 - 2fa4: 62 c3 rjmp .+1732 ; 0x366a -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:72 + 2fa4: 60 c3 rjmp .+1728 ; 0x3666 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:72 /* Only a maximum of 540 bytes : 9 fragment records is accepted. */ D1PRINTF("\r\n"); 2fa6: 8d ec ldi r24, 0xCD ; 205 2fa8: 92 e0 ldi r25, 0x02 ; 2 -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:94 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:94 _packet_endfrag = 0; _result = true; } @@ -10082,10 +10082,10 @@ dap_command_check(): 2fae: 1f 93 push r17 2fb0: 0f 93 push r16 2fb2: 0e 94 2e 0a call 0x145c ; 0x145c -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:95 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:95 EP_MEM.dap_data[1] = 0x00; /* EDBG_RSP_FAIL */ 2fb6: 10 92 2f 63 sts 0x632F, r1 ; 0x80632f -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:105 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:105 else if (_cmd == 0x81) { /* DAP_EDBG_VENDOR_AVR_RSP */ EP_MEM.dap_data[2] = 0; /* Always zero */ if (_packet_endfrag == 0) { @@ -10096,9 +10096,9 @@ dap_command_check(): 2fbc: 0f 90 pop r0 2fbe: 0f 90 pop r0 2fc0: 0f 90 pop r0 - 2fc2: 7b c3 rjmp .+1782 ; 0x36ba + 2fc2: 79 c3 rjmp .+1778 ; 0x36b6 request_standard(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:532 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:532 if (bRequest == 0x00) { /* GET_STATUS */ EP_MEM.res_data[0] = 0; EP_MEM.res_data[1] = 0; @@ -10106,8 +10106,8 @@ request_standard(): } else if (bRequest == 0x01) { /* CLEAR_FEATURE */ 2fc4: 81 30 cpi r24, 0x01 ; 1 - 2fc6: 89 f5 brne .+98 ; 0x302a -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:533 + 2fc6: 79 f5 brne .+94 ; 0x3026 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:533 D1PRINTF(" CF=%02X:%02X\r\n", EP_MEM.req_data.wValue, EP_MEM.req_data.wIndex); 2fc8: 80 91 1b 63 lds r24, 0x631B ; 0x80631b 2fcc: 8f 93 push r24 @@ -10124,500 +10124,500 @@ request_standard(): 2fe8: 1f 93 push r17 2fea: 0f 93 push r16 2fec: 0e 94 2e 0a call 0x145c ; 0x145c -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:534 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:534 if (0 == (uint8_t)EP_MEM.req_data.wValue) { 2ff0: cd bf out 0x3d, r28 ; 61 2ff2: de bf out 0x3e, r29 ; 62 2ff4: 80 91 18 63 lds r24, 0x6318 ; 0x806318 2ff8: 81 11 cpse r24, r1 - 2ffa: 12 c0 rjmp .+36 ; 0x3020 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:536 - /* Assumes that an Endpoint number is passed. */ - uint8_t _EP = EP_MEM.req_data.wIndex; + 2ffa: 10 c0 rjmp .+32 ; 0x301c +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:537 + /* Expects an endpoint number to be passed in. Swaps the high and low */ + /* nibbles to make it a representation of the USB controller. */ + uint8_t _EP = USB_EP_ID_SWAP(EP_MEM.req_data.wIndex); 2ffc: e0 91 1a 63 lds r30, 0x631A ; 0x80631a - 3000: f0 91 1b 63 lds r31, 0x631B ; 0x80631b -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:537 + 3000: e2 95 swap r30 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:538 loop_until_bit_is_clear(USB0_INTFLAGSB, USB_RMWBUSY_bp); - 3004: 80 91 0b 0c lds r24, 0x0C0B ; 0x800c0b <__TEXT_REGION_LENGTH__+0x7f0c0b> - 3008: 82 fd sbrc r24, 2 - 300a: fc cf rjmp .-8 ; 0x3004 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:538 - USB_EP_STATUS_CLR(_EP) = USB_STALLED_bm | USB_TOGGLE_bm; + 3002: 80 91 0b 0c lds r24, 0x0C0B ; 0x800c0b <__TEXT_REGION_LENGTH__+0x7f0c0b> + 3006: 82 fd sbrc r24, 2 + 3008: fc cf rjmp .-8 ; 0x3002 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:539 + USB_EP_STATUS_CLR(_EP) = USB_STALLED_bm | USB_BUSNAK_bm | USB_TOGGLE_bm; + 300a: f0 e0 ldi r31, 0x00 ; 0 300c: f5 95 asr r31 300e: e7 95 ror r30 3010: f5 95 asr r31 3012: e7 95 ror r30 - 3014: ef 73 andi r30, 0x3F ; 63 - 3016: ff 27 eor r31, r31 - 3018: e0 5c subi r30, 0xC0 ; 192 - 301a: f3 4f sbci r31, 0xF3 ; 243 - 301c: 89 e0 ldi r24, 0x09 ; 9 - 301e: 80 83 st Z, r24 + 3014: e0 5c subi r30, 0xC0 ; 192 + 3016: f3 4f sbci r31, 0xF3 ; 243 + 3018: 8b e0 ldi r24, 0x0B ; 11 + 301a: 80 83 st Z, r24 request_class(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:643 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:644 /* Nothing else is used unless programmed by the application. */ D1PRINTF(" SB=%04X\r\n", EP_MEM.req_data.wValue); _send_break = EP_MEM.req_data.wValue; if (_send_break) break_on(); else break_off(); EP_RES.CNT = 0; - 3020: 10 92 48 64 sts 0x6448, r1 ; 0x806448 - 3024: 10 92 49 64 sts 0x6449, r1 ; 0x806449 - 3028: 3c cf rjmp .-392 ; 0x2ea2 + 301c: 10 92 48 64 sts 0x6448, r1 ; 0x806448 + 3020: 10 92 49 64 sts 0x6449, r1 ; 0x806449 + 3024: 3e cf rjmp .-388 ; 0x2ea2 request_standard(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:542 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:543 loop_until_bit_is_clear(USB0_INTFLAGSB, USB_RMWBUSY_bp); - USB_EP_STATUS_CLR(_EP) = USB_STALLED_bm | USB_TOGGLE_bm; + USB_EP_STATUS_CLR(_EP) = USB_STALLED_bm | USB_BUSNAK_bm | USB_TOGGLE_bm; } EP_RES.CNT = 0; } else if (bRequest == 0x04) { /* SET_FEATURE */ - 302a: 84 30 cpi r24, 0x04 ; 4 - 302c: d9 f4 brne .+54 ; 0x3064 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:544 + 3026: 84 30 cpi r24, 0x04 ; 4 + 3028: d9 f4 brne .+54 ; 0x3060 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:545 /* If used, it will be ignored. */ D1PRINTF(" SF=%02X:%02X\r\n", EP_MEM.req_data.wValue, EP_MEM.req_data.wIndex); - 302e: 80 91 1b 63 lds r24, 0x631B ; 0x80631b - 3032: 8f 93 push r24 - 3034: 80 91 1a 63 lds r24, 0x631A ; 0x80631a - 3038: 8f 93 push r24 - 303a: 80 91 19 63 lds r24, 0x6319 ; 0x806319 - 303e: 8f 93 push r24 - 3040: 80 91 18 63 lds r24, 0x6318 ; 0x806318 - 3044: 8f 93 push r24 - 3046: 86 e1 ldi r24, 0x16 ; 22 - 3048: 92 e0 ldi r25, 0x02 ; 2 - 304a: 9f 93 push r25 - 304c: 8f 93 push r24 - 304e: 1f 93 push r17 - 3050: 0f 93 push r16 - 3052: 0e 94 2e 0a call 0x145c ; 0x145c -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:545 + 302a: 80 91 1b 63 lds r24, 0x631B ; 0x80631b + 302e: 8f 93 push r24 + 3030: 80 91 1a 63 lds r24, 0x631A ; 0x80631a + 3034: 8f 93 push r24 + 3036: 80 91 19 63 lds r24, 0x6319 ; 0x806319 + 303a: 8f 93 push r24 + 303c: 80 91 18 63 lds r24, 0x6318 ; 0x806318 + 3040: 8f 93 push r24 + 3042: 86 e1 ldi r24, 0x16 ; 22 + 3044: 92 e0 ldi r25, 0x02 ; 2 + 3046: 9f 93 push r25 + 3048: 8f 93 push r24 + 304a: 1f 93 push r17 + 304c: 0f 93 push r16 + 304e: 0e 94 2e 0a call 0x145c ; 0x145c +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:546 EP_RES.CNT = 0; - 3056: 10 92 48 64 sts 0x6448, r1 ; 0x806448 - 305a: 10 92 49 64 sts 0x6449, r1 ; 0x806449 - 305e: cd bf out 0x3d, r28 ; 61 - 3060: de bf out 0x3e, r29 ; 62 - 3062: 1f cf rjmp .-450 ; 0x2ea2 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:547 + 3052: 10 92 48 64 sts 0x6448, r1 ; 0x806448 + 3056: 10 92 49 64 sts 0x6449, r1 ; 0x806449 + 305a: cd bf out 0x3d, r28 ; 61 + 305c: de bf out 0x3e, r29 ; 62 + 305e: 21 cf rjmp .-446 ; 0x2ea2 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:548 } else if (bRequest == 0x05) { /* SET_ADDRESS */ - 3064: 85 30 cpi r24, 0x05 ; 5 - 3066: e1 f4 brne .+56 ; 0x30a0 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:548 + 3060: 85 30 cpi r24, 0x05 ; 5 + 3062: e1 f4 brne .+56 ; 0x309c +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:549 uint8_t _addr = EP_MEM.req_data.wValue & 0x7F; - 3068: 80 91 18 63 lds r24, 0x6318 ; 0x806318 - 306c: f8 2e mov r15, r24 - 306e: e8 94 clt - 3070: f7 f8 bld r15, 7 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:549 + 3064: 80 91 18 63 lds r24, 0x6318 ; 0x806318 + 3068: f8 2e mov r15, r24 + 306a: e8 94 clt + 306c: f7 f8 bld r15, 7 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:550 ep_res_listen(); - 3072: 0e 94 56 05 call 0xaac ; 0xaac + 306e: 0e 94 56 05 call 0xaac ; 0xaac ep_res_pending(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:259 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:259 } bool is_ep_setup (void) { return bit_is_set(EP_REQ.STATUS, USB_EPSETUP_bp); } bool is_not_dap (void) { return bit_is_clear(EP_DPO.STATUS, USB_BUSNAK_bp); } void ep_req_pending (void) { loop_until_bit_is_set(EP_REQ.STATUS, USB_BUSNAK_bp); } void ep_res_pending (void) { loop_until_bit_is_set(EP_RES.STATUS, USB_BUSNAK_bp); } - 3076: 80 91 46 64 lds r24, 0x6446 ; 0x806446 - 307a: 81 ff sbrs r24, 1 - 307c: fc cf rjmp .-8 ; 0x3076 + 3072: 80 91 46 64 lds r24, 0x6446 ; 0x806446 + 3076: 81 ff sbrs r24, 1 + 3078: fc cf rjmp .-8 ; 0x3072 request_standard(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:551 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:552 } else if (bRequest == 0x05) { /* SET_ADDRESS */ uint8_t _addr = EP_MEM.req_data.wValue & 0x7F; ep_res_listen(); ep_res_pending(); USB0_ADDR = _addr; - 307e: f0 92 03 0c sts 0x0C03, r15 ; 0x800c03 <__TEXT_REGION_LENGTH__+0x7f0c03> -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:552 + 307a: f0 92 03 0c sts 0x0C03, r15 ; 0x800c03 <__TEXT_REGION_LENGTH__+0x7f0c03> +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:553 D1PRINTF(" USB0_ADDR=%d\r\n", _addr); - 3082: 1f 92 push r1 - 3084: ff 92 push r15 - 3086: 86 e0 ldi r24, 0x06 ; 6 - 3088: 92 e0 ldi r25, 0x02 ; 2 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:571 + 307e: 1f 92 push r1 + 3080: ff 92 push r15 + 3082: 86 e0 ldi r24, 0x06 ; 6 + 3084: 92 e0 ldi r25, 0x02 ; 2 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:572 else if (bRequest == 0x09) { /* SET_CONFIGURATION */ /* Once the USB connection is fully initiated, it will go through here. */ _set_config = (uint8_t)EP_MEM.req_data.wValue; bit_set(GPCONF, GPCONF_USB_bp); SYS::LED_HeartBeat(); D1PRINTF("\r\n", _set_config); - 308a: 9f 93 push r25 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:582 + 3086: 9f 93 push r25 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:583 EP_MEM.res_data[0] = 0; EP_RES.CNT = 1; } else if (bRequest == 0x0B) { /* SET_INTREFACE */ /* It seems not to be used. */ D1PRINTF("\r\n", EP_MEM.req_data.wValue); - 308c: 8f 93 push r24 - 308e: 1f 93 push r17 - 3090: 0f 93 push r16 - 3092: 0e 94 2e 0a call 0x145c ; 0x145c -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:583 + 3088: 8f 93 push r24 + 308a: 1f 93 push r17 + 308c: 0f 93 push r16 + 308e: 0e 94 2e 0a call 0x145c ; 0x145c +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:584 EP_RES.CNT = 0; - 3096: 10 92 48 64 sts 0x6448, r1 ; 0x806448 - 309a: 10 92 49 64 sts 0x6449, r1 ; 0x806449 - 309e: 64 c1 rjmp .+712 ; 0x3368 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:555 + 3092: 10 92 48 64 sts 0x6448, r1 ; 0x806448 + 3096: 10 92 49 64 sts 0x6449, r1 ; 0x806449 + 309a: 64 c1 rjmp .+712 ; 0x3364 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:556 ep_res_pending(); USB0_ADDR = _addr; D1PRINTF(" USB0_ADDR=%d\r\n", _addr); EP_RES.CNT = 0; } else if (bRequest == 0x06) { /* GET_DESCRIPTOR */ - 30a0: 86 30 cpi r24, 0x06 ; 6 - 30a2: 09 f0 breq .+2 ; 0x30a6 - 30a4: 4d c1 rjmp .+666 ; 0x3340 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:556 + 309c: 86 30 cpi r24, 0x06 ; 6 + 309e: 09 f0 breq .+2 ; 0x30a2 + 30a0: 4d c1 rjmp .+666 ; 0x333c +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:557 size_t _length = EP_MEM.req_data.wLength; - 30a6: 40 90 1c 63 lds r4, 0x631C ; 0x80631c - 30aa: f0 91 1d 63 lds r31, 0x631D ; 0x80631d - 30ae: fd 83 std Y+5, r31 ; 0x05 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:557 + 30a2: 40 90 1c 63 lds r4, 0x631C ; 0x80631c + 30a6: f0 91 1d 63 lds r31, 0x631D ; 0x80631d + 30aa: fd 83 std Y+5, r31 ; 0x05 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:558 size_t _size = get_descriptor((uint8_t*)&EP_MEM.res_data, EP_MEM.req_data.wValue); - 30b0: 80 91 18 63 lds r24, 0x6318 ; 0x806318 - 30b4: 90 91 19 63 lds r25, 0x6319 ; 0x806319 + 30ac: 80 91 18 63 lds r24, 0x6318 ; 0x806318 + 30b0: 90 91 19 63 lds r25, 0x6319 ; 0x806319 get_descriptor(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:154 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:154 size_t get_descriptor (uint8_t* _buffer, uint16_t _index) { uint8_t* _pgmem = 0; size_t _size = 0; uint8_t _type = _index >> 8; if (_type == 0x01) { /* DEVICE */ - 30b8: 91 30 cpi r25, 0x01 ; 1 - 30ba: 09 f0 breq .+2 ; 0x30be - 30bc: 61 c0 rjmp .+194 ; 0x3180 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:157 + 30b4: 91 30 cpi r25, 0x01 ; 1 + 30b6: 09 f0 breq .+2 ; 0x30ba + 30b8: 61 c0 rjmp .+194 ; 0x317c +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:157 _pgmem = (uint8_t*)&device_descriptor; _size = sizeof(device_descriptor); memcpy_P(_buffer, _pgmem, _size); - 30be: 42 e1 ldi r20, 0x12 ; 18 - 30c0: 50 e0 ldi r21, 0x00 ; 0 - 30c2: 67 ec ldi r22, 0xC7 ; 199 - 30c4: 71 e0 ldi r23, 0x01 ; 1 - 30c6: 8e e1 ldi r24, 0x1E ; 30 - 30c8: 93 e6 ldi r25, 0x63 ; 99 - 30ca: 0e 94 b9 21 call 0x4372 ; 0x4372 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:158 + 30ba: 42 e1 ldi r20, 0x12 ; 18 + 30bc: 50 e0 ldi r21, 0x00 ; 0 + 30be: 67 ec ldi r22, 0xC7 ; 199 + 30c0: 71 e0 ldi r23, 0x01 ; 1 + 30c2: 8e e1 ldi r24, 0x1E ; 30 + 30c4: 93 e6 ldi r25, 0x63 ; 99 + 30c6: 0e 94 b7 21 call 0x436e ; 0x436e +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:158 uint32_t _vidpid = *((uint32_t*)EEPROM_START); - 30ce: 80 91 00 14 lds r24, 0x1400 ; 0x801400 <__TEXT_REGION_LENGTH__+0x7f1400> - 30d2: 90 91 01 14 lds r25, 0x1401 ; 0x801401 <__TEXT_REGION_LENGTH__+0x7f1401> - 30d6: a0 91 02 14 lds r26, 0x1402 ; 0x801402 <__TEXT_REGION_LENGTH__+0x7f1402> - 30da: b0 91 03 14 lds r27, 0x1403 ; 0x801403 <__TEXT_REGION_LENGTH__+0x7f1403> -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:159 + 30ca: 80 91 00 14 lds r24, 0x1400 ; 0x801400 <__TEXT_REGION_LENGTH__+0x7f1400> + 30ce: 90 91 01 14 lds r25, 0x1401 ; 0x801401 <__TEXT_REGION_LENGTH__+0x7f1401> + 30d2: a0 91 02 14 lds r26, 0x1402 ; 0x801402 <__TEXT_REGION_LENGTH__+0x7f1402> + 30d6: b0 91 03 14 lds r27, 0x1403 ; 0x801403 <__TEXT_REGION_LENGTH__+0x7f1403> +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:159 if (_vidpid + 1) _CAPS32(_buffer[8])->dword = _vidpid; - 30de: 8f 3f cpi r24, 0xFF ; 255 - 30e0: 2f ef ldi r18, 0xFF ; 255 - 30e2: 92 07 cpc r25, r18 - 30e4: a2 07 cpc r26, r18 - 30e6: b2 07 cpc r27, r18 - 30e8: 41 f0 breq .+16 ; 0x30fa - 30ea: 80 93 26 63 sts 0x6326, r24 ; 0x806326 - 30ee: 90 93 27 63 sts 0x6327, r25 ; 0x806327 - 30f2: a0 93 28 63 sts 0x6328, r26 ; 0x806328 - 30f6: b0 93 29 63 sts 0x6329, r27 ; 0x806329 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:160 + 30da: 8f 3f cpi r24, 0xFF ; 255 + 30dc: 2f ef ldi r18, 0xFF ; 255 + 30de: 92 07 cpc r25, r18 + 30e0: a2 07 cpc r26, r18 + 30e2: b2 07 cpc r27, r18 + 30e4: 41 f0 breq .+16 ; 0x30f6 + 30e6: 80 93 26 63 sts 0x6326, r24 ; 0x806326 + 30ea: 90 93 27 63 sts 0x6327, r25 ; 0x806327 + 30ee: a0 93 28 63 sts 0x6328, r26 ; 0x806328 + 30f2: b0 93 29 63 sts 0x6329, r27 ; 0x806329 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:160 D1PRINTF(" VID:PID=%04X:%04X\r\n", _CAPS16(_buffer[8])->word, _CAPS16(_buffer[10])->word); - 30fa: 80 91 29 63 lds r24, 0x6329 ; 0x806329 - 30fe: 8f 93 push r24 - 3100: 80 91 28 63 lds r24, 0x6328 ; 0x806328 - 3104: 8f 93 push r24 - 3106: 80 91 27 63 lds r24, 0x6327 ; 0x806327 - 310a: 8f 93 push r24 - 310c: 80 91 26 63 lds r24, 0x6326 ; 0x806326 - 3110: 8f 93 push r24 - 3112: 82 eb ldi r24, 0xB2 ; 178 - 3114: 91 e0 ldi r25, 0x01 ; 1 - 3116: 9f 93 push r25 - 3118: 8f 93 push r24 - 311a: 1f 93 push r17 - 311c: 0f 93 push r16 - 311e: 0e 94 2e 0a call 0x145c ; 0x145c - 3122: cd bf out 0x3d, r28 ; 61 - 3124: de bf out 0x3e, r29 ; 62 + 30f6: 80 91 29 63 lds r24, 0x6329 ; 0x806329 + 30fa: 8f 93 push r24 + 30fc: 80 91 28 63 lds r24, 0x6328 ; 0x806328 + 3100: 8f 93 push r24 + 3102: 80 91 27 63 lds r24, 0x6327 ; 0x806327 + 3106: 8f 93 push r24 + 3108: 80 91 26 63 lds r24, 0x6326 ; 0x806326 + 310c: 8f 93 push r24 + 310e: 82 eb ldi r24, 0xB2 ; 178 + 3110: 91 e0 ldi r25, 0x01 ; 1 + 3112: 9f 93 push r25 + 3114: 8f 93 push r24 + 3116: 1f 93 push r17 + 3118: 0f 93 push r16 + 311a: 0e 94 2e 0a call 0x145c ; 0x145c + 311e: cd bf out 0x3d, r28 ; 61 + 3120: de bf out 0x3e, r29 ; 62 main(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:161 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:161 return _size; - 3126: 82 e1 ldi r24, 0x12 ; 18 - 3128: e8 2e mov r14, r24 - 312a: f1 2c mov r15, r1 - 312c: 84 2d mov r24, r4 - 312e: 9d 81 ldd r25, Y+5 ; 0x05 - 3130: e8 16 cp r14, r24 - 3132: f9 06 cpc r15, r25 - 3134: 08 f4 brcc .+2 ; 0x3138 - 3136: c7 01 movw r24, r14 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:185 + 3122: 82 e1 ldi r24, 0x12 ; 18 + 3124: e8 2e mov r14, r24 + 3126: f1 2c mov r15, r1 + 3128: 84 2d mov r24, r4 + 312a: 9d 81 ldd r25, Y+5 ; 0x05 + 312c: e8 16 cp r14, r24 + 312e: f9 06 cpc r15, r25 + 3130: 08 f4 brcc .+2 ; 0x3134 + 3132: c7 01 movw r24, r14 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:185 _size = 4; *_buffer++ = 4; *_buffer++ = 3; *_buffer++ = 0x09; *_buffer++ = 0x04; return _size; - 3138: 97 01 movw r18, r14 - 313a: 7c 01 movw r14, r24 + 3134: 97 01 movw r18, r14 + 3136: 7c 01 movw r14, r24 request_standard(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:558 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:559 EP_RES.CNT = 0; } else if (bRequest == 0x06) { /* GET_DESCRIPTOR */ size_t _length = EP_MEM.req_data.wLength; size_t _size = get_descriptor((uint8_t*)&EP_MEM.res_data, EP_MEM.req_data.wValue); EP_RES.CNT = (_size > _length) ? _length : _size; - 313c: e0 92 48 64 sts 0x6448, r14 ; 0x806448 - 3140: f0 92 49 64 sts 0x6449, r15 ; 0x806449 + 3138: e0 92 48 64 sts 0x6448, r14 ; 0x806448 + 313c: f0 92 49 64 sts 0x6449, r15 ; 0x806449 handling_control_transactions(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:674 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:675 #ifdef _Not_being_used_STUB_ else if (bmRequestType == (2 << 5)) { _listen = request_vendor(); } #endif if (_listen) { - 3144: 23 2b or r18, r19 - 3146: 09 f0 breq .+2 ; 0x314a - 3148: ac ce rjmp .-680 ; 0x2ea2 + 3140: 23 2b or r18, r19 + 3142: 09 f0 breq .+2 ; 0x3146 + 3144: ae ce rjmp .-676 ; 0x2ea2 ep0_stalled(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:359 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:359 loop_until_bit_is_clear(USB0_INTFLAGSB, USB_RMWBUSY_bp); USB_EP_STATUS_CLR(USB_EP_CDO) = ~USB_TOGGLE_bm; } void ep0_stalled (void) { D1PRINTF("[STALLED]\r\n"); - 314a: 85 e6 ldi r24, 0x65 ; 101 - 314c: 92 e0 ldi r25, 0x02 ; 2 - 314e: 9f 93 push r25 - 3150: 8f 93 push r24 - 3152: 1f 93 push r17 - 3154: 0f 93 push r16 - 3156: 0e 94 2e 0a call 0x145c ; 0x145c + 3146: 85 e6 ldi r24, 0x65 ; 101 + 3148: 92 e0 ldi r25, 0x02 ; 2 + 314a: 9f 93 push r25 + 314c: 8f 93 push r24 + 314e: 1f 93 push r17 + 3150: 0f 93 push r16 + 3152: 0e 94 2e 0a call 0x145c ; 0x145c + 3156: 0f 90 pop r0 + 3158: 0f 90 pop r0 315a: 0f 90 pop r0 315c: 0f 90 pop r0 - 315e: 0f 90 pop r0 - 3160: 0f 90 pop r0 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:360 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:360 loop_until_bit_is_clear(USB0_INTFLAGSB, USB_RMWBUSY_bp); - 3162: 80 91 0b 0c lds r24, 0x0C0B ; 0x800c0b <__TEXT_REGION_LENGTH__+0x7f0c0b> - 3166: 82 fd sbrc r24, 2 - 3168: fc cf rjmp .-8 ; 0x3162 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:361 + 315e: 80 91 0b 0c lds r24, 0x0C0B ; 0x800c0b <__TEXT_REGION_LENGTH__+0x7f0c0b> + 3162: 82 fd sbrc r24, 2 + 3164: fc cf rjmp .-8 ; 0x315e +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:361 USB_EP_STATUS_SET(USB_EP_RES) = USB_STALLED_bm; - 316a: 88 e0 ldi r24, 0x08 ; 8 - 316c: 80 93 43 0c sts 0x0C43, r24 ; 0x800c43 <__TEXT_REGION_LENGTH__+0x7f0c43> -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:362 + 3166: 88 e0 ldi r24, 0x08 ; 8 + 3168: 80 93 43 0c sts 0x0C43, r24 ; 0x800c43 <__TEXT_REGION_LENGTH__+0x7f0c43> +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:362 loop_until_bit_is_clear(USB0_INTFLAGSB, USB_RMWBUSY_bp); - 3170: 80 91 0b 0c lds r24, 0x0C0B ; 0x800c0b <__TEXT_REGION_LENGTH__+0x7f0c0b> - 3174: 82 fd sbrc r24, 2 - 3176: fc cf rjmp .-8 ; 0x3170 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:363 + 316c: 80 91 0b 0c lds r24, 0x0C0B ; 0x800c0b <__TEXT_REGION_LENGTH__+0x7f0c0b> + 3170: 82 fd sbrc r24, 2 + 3172: fc cf rjmp .-8 ; 0x316c +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:363 USB_EP_STATUS_SET(USB_EP_REQ) = USB_STALLED_bm; - 3178: 88 e0 ldi r24, 0x08 ; 8 - 317a: 80 93 41 0c sts 0x0C41, r24 ; 0x800c41 <__TEXT_REGION_LENGTH__+0x7f0c41> - 317e: 95 ce rjmp .-726 ; 0x2eaa + 3174: 88 e0 ldi r24, 0x08 ; 8 + 3176: 80 93 41 0c sts 0x0C41, r24 ; 0x800c41 <__TEXT_REGION_LENGTH__+0x7f0c41> + 317a: 97 ce rjmp .-722 ; 0x2eaa get_descriptor(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:163 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:163 uint32_t _vidpid = *((uint32_t*)EEPROM_START); if (_vidpid + 1) _CAPS32(_buffer[8])->dword = _vidpid; D1PRINTF(" VID:PID=%04X:%04X\r\n", _CAPS16(_buffer[8])->word, _CAPS16(_buffer[10])->word); return _size; } else if (_type == 0x02) { /* CONFIGURATION */ - 3180: 92 30 cpi r25, 0x02 ; 2 - 3182: 09 f4 brne .+2 ; 0x3186 - 3184: c0 c0 rjmp .+384 ; 0x3306 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:167 + 317c: 92 30 cpi r25, 0x02 ; 2 + 317e: 09 f4 brne .+2 ; 0x3182 + 3180: c0 c0 rjmp .+384 ; 0x3302 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:167 _pgmem = (uint8_t*)¤t_descriptor; _size = sizeof(current_descriptor); } else if (_type == 0x06) { /* QUALIFIER */ - 3186: 96 30 cpi r25, 0x06 ; 6 - 3188: 09 f4 brne .+2 ; 0x318c - 318a: c8 c0 rjmp .+400 ; 0x331c -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:171 + 3182: 96 30 cpi r25, 0x06 ; 6 + 3184: 09 f4 brne .+2 ; 0x3188 + 3186: c8 c0 rjmp .+400 ; 0x3318 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:171 _pgmem = (uint8_t*)&qualifier_descriptor; _size = sizeof(qualifier_descriptor); } else if (_type == 0x21) { /* HID */ - 318c: 91 32 cpi r25, 0x21 ; 33 - 318e: 09 f4 brne .+2 ; 0x3192 - 3190: cb c0 rjmp .+406 ; 0x3328 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:175 + 3188: 91 32 cpi r25, 0x21 ; 33 + 318a: 09 f4 brne .+2 ; 0x318e + 318c: cb c0 rjmp .+406 ; 0x3324 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:175 _pgmem = (uint8_t*)¤t_descriptor + 18; _size = 9; } else if (_type == 0x22) { /* REPORT */ - 3192: 92 32 cpi r25, 0x22 ; 34 - 3194: 09 f4 brne .+2 ; 0x3198 - 3196: ce c0 rjmp .+412 ; 0x3334 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:179 + 318e: 92 32 cpi r25, 0x22 ; 34 + 3190: 09 f4 brne .+2 ; 0x3194 + 3192: ce c0 rjmp .+412 ; 0x3330 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:179 _pgmem = (uint8_t*)&report_descriptor; _size = sizeof(report_descriptor); } else if (_index == 0x0300) { /* LANGUAGE */ - 3198: 81 15 cp r24, r1 - 319a: e3 e0 ldi r30, 0x03 ; 3 - 319c: 9e 07 cpc r25, r30 - 319e: 79 f4 brne .+30 ; 0x31be -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:181 + 3194: 81 15 cp r24, r1 + 3196: e3 e0 ldi r30, 0x03 ; 3 + 3198: 9e 07 cpc r25, r30 + 319a: 79 f4 brne .+30 ; 0x31ba +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:181 _size = 4; *_buffer++ = 4; - 31a0: 84 e0 ldi r24, 0x04 ; 4 - 31a2: 80 93 1e 63 sts 0x631E, r24 ; 0x80631e -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:182 + 319c: 84 e0 ldi r24, 0x04 ; 4 + 319e: 80 93 1e 63 sts 0x631E, r24 ; 0x80631e +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:182 *_buffer++ = 3; - 31a6: 93 e0 ldi r25, 0x03 ; 3 - 31a8: 90 93 1f 63 sts 0x631F, r25 ; 0x80631f -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:183 + 31a2: 93 e0 ldi r25, 0x03 ; 3 + 31a4: 90 93 1f 63 sts 0x631F, r25 ; 0x80631f +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:183 *_buffer++ = 0x09; - 31ac: 99 e0 ldi r25, 0x09 ; 9 - 31ae: 90 93 20 63 sts 0x6320, r25 ; 0x806320 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:184 + 31a8: 99 e0 ldi r25, 0x09 ; 9 + 31aa: 90 93 20 63 sts 0x6320, r25 ; 0x806320 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:184 *_buffer++ = 0x04; - 31b2: 80 93 21 63 sts 0x6321, r24 ; 0x806321 + 31ae: 80 93 21 63 sts 0x6321, r24 ; 0x806321 main(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:185 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:185 return _size; - 31b6: b4 e0 ldi r27, 0x04 ; 4 - 31b8: eb 2e mov r14, r27 - 31ba: f1 2c mov r15, r1 - 31bc: b7 cf rjmp .-146 ; 0x312c + 31b2: b4 e0 ldi r27, 0x04 ; 4 + 31b4: eb 2e mov r14, r27 + 31b6: f1 2c mov r15, r1 + 31b8: b7 cf rjmp .-146 ; 0x3128 get_descriptor(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:188 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:188 } else { switch (_index) { - 31be: 82 30 cpi r24, 0x02 ; 2 - 31c0: f3 e0 ldi r31, 0x03 ; 3 - 31c2: 9f 07 cpc r25, r31 - 31c4: 31 f1 breq .+76 ; 0x3212 - 31c6: 48 f4 brcc .+18 ; 0x31da - 31c8: 81 30 cpi r24, 0x01 ; 1 - 31ca: 93 40 sbci r25, 0x03 ; 3 - 31cc: 09 f4 brne .+2 ; 0x31d0 - 31ce: 95 c0 rjmp .+298 ; 0x32fa + 31ba: 82 30 cpi r24, 0x02 ; 2 + 31bc: f3 e0 ldi r31, 0x03 ; 3 + 31be: 9f 07 cpc r25, r31 + 31c0: 31 f1 breq .+76 ; 0x320e + 31c2: 48 f4 brcc .+18 ; 0x31d6 + 31c4: 81 30 cpi r24, 0x01 ; 1 + 31c6: 93 40 sbci r25, 0x03 ; 3 + 31c8: 09 f4 brne .+2 ; 0x31cc + 31ca: 95 c0 rjmp .+298 ; 0x32f6 main(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:152 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:152 { /* FRAMENUM */ } }; size_t get_descriptor (uint8_t* _buffer, uint16_t _index) { uint8_t* _pgmem = 0; size_t _size = 0; - 31d0: f1 2c mov r15, r1 - 31d2: e1 2c mov r14, r1 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:151 + 31cc: f1 2c mov r15, r1 + 31ce: e1 2c mov r14, r1 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:151 }, { /* FRAMENUM */ } }; size_t get_descriptor (uint8_t* _buffer, uint16_t _index) { uint8_t* _pgmem = 0; - 31d4: 70 e0 ldi r23, 0x00 ; 0 - 31d6: 60 e0 ldi r22, 0x00 ; 0 - 31d8: 0b c0 rjmp .+22 ; 0x31f0 + 31d0: 70 e0 ldi r23, 0x00 ; 0 + 31d2: 60 e0 ldi r22, 0x00 ; 0 + 31d4: 0b c0 rjmp .+22 ; 0x31ec get_descriptor(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:188 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:188 *_buffer++ = 0x09; *_buffer++ = 0x04; return _size; } else { switch (_index) { - 31da: 83 30 cpi r24, 0x03 ; 3 - 31dc: 98 07 cpc r25, r24 - 31de: f9 f0 breq .+62 ; 0x321e + 31d6: 83 30 cpi r24, 0x03 ; 3 + 31d8: 98 07 cpc r25, r24 + 31da: f9 f0 breq .+62 ; 0x321a main(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:191 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:191 case 0x0301: _pgmem = (uint8_t*)&vstring; _size = sizeof(vstring); break; case 0x0302: _pgmem = (uint8_t*)&mstring; _size = sizeof(mstring); break; case 0x0304: _pgmem = (uint8_t*)&istring; _size = sizeof(istring); break; - 31e0: f8 e1 ldi r31, 0x18 ; 24 - 31e2: ef 2e mov r14, r31 - 31e4: f1 2c mov r15, r1 - 31e6: 68 e8 ldi r22, 0x88 ; 136 - 31e8: 70 e0 ldi r23, 0x00 ; 0 + 31dc: f8 e1 ldi r31, 0x18 ; 24 + 31de: ef 2e mov r14, r31 + 31e0: f1 2c mov r15, r1 + 31e2: 68 e8 ldi r22, 0x88 ; 136 + 31e4: 70 e0 ldi r23, 0x00 ; 0 get_descriptor(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:188 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:188 *_buffer++ = 0x09; *_buffer++ = 0x04; return _size; } else { switch (_index) { - 31ea: 84 30 cpi r24, 0x04 ; 4 - 31ec: 93 40 sbci r25, 0x03 ; 3 - 31ee: 81 f7 brne .-32 ; 0x31d0 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:215 + 31e6: 84 30 cpi r24, 0x04 ; 4 + 31e8: 93 40 sbci r25, 0x03 ; 3 + 31ea: 81 f7 brne .-32 ; 0x31cc +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:215 *_buffer++ = btoh(_c ); *_buffer++ = 0; } return 22; } } *_buffer++ = (uint8_t)_size; - 31f0: e0 92 1e 63 sts 0x631E, r14 ; 0x80631e -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:216 + 31ec: e0 92 1e 63 sts 0x631E, r14 ; 0x80631e +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:216 *_buffer++ = 3; - 31f4: 83 e0 ldi r24, 0x03 ; 3 - 31f6: 80 93 1f 63 sts 0x631F, r24 ; 0x80631f -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:217 + 31f0: 83 e0 ldi r24, 0x03 ; 3 + 31f2: 80 93 1f 63 sts 0x631F, r24 ; 0x80631f +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:217 if (_size) memcpy_P(_buffer, _pgmem, _size - 2); - 31fa: a7 01 movw r20, r14 - 31fc: 42 50 subi r20, 0x02 ; 2 - 31fe: 51 09 sbc r21, r1 - 3200: 80 e2 ldi r24, 0x20 ; 32 - 3202: 93 e6 ldi r25, 0x63 ; 99 - 3204: e1 14 cp r14, r1 - 3206: f1 04 cpc r15, r1 - 3208: 09 f0 breq .+2 ; 0x320c - 320a: 85 c0 rjmp .+266 ; 0x3316 - 320c: 30 e0 ldi r19, 0x00 ; 0 - 320e: 20 e0 ldi r18, 0x00 ; 0 - 3210: 95 cf rjmp .-214 ; 0x313c + 31f6: a7 01 movw r20, r14 + 31f8: 42 50 subi r20, 0x02 ; 2 + 31fa: 51 09 sbc r21, r1 + 31fc: 80 e2 ldi r24, 0x20 ; 32 + 31fe: 93 e6 ldi r25, 0x63 ; 99 + 3200: e1 14 cp r14, r1 + 3202: f1 04 cpc r15, r1 + 3204: 09 f0 breq .+2 ; 0x3208 + 3206: 85 c0 rjmp .+266 ; 0x3312 + 3208: 30 e0 ldi r19, 0x00 ; 0 + 320a: 20 e0 ldi r18, 0x00 ; 0 + 320c: 95 cf rjmp .-214 ; 0x3138 main(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:190 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:190 return _size; } else { switch (_index) { case 0x0301: _pgmem = (uint8_t*)&vstring; _size = sizeof(vstring); break; case 0x0302: _pgmem = (uint8_t*)&mstring; _size = sizeof(mstring); break; - 3212: a6 e4 ldi r26, 0x46 ; 70 - 3214: ea 2e mov r14, r26 - 3216: f1 2c mov r15, r1 - 3218: 60 ea ldi r22, 0xA0 ; 160 - 321a: 70 e0 ldi r23, 0x00 ; 0 - 321c: e9 cf rjmp .-46 ; 0x31f0 + 320e: a6 e4 ldi r26, 0x46 ; 70 + 3210: ea 2e mov r14, r26 + 3212: f1 2c mov r15, r1 + 3214: 60 ea ldi r22, 0xA0 ; 160 + 3216: 70 e0 ldi r23, 0x00 ; 0 + 3218: e9 cf rjmp .-46 ; 0x31ec get_descriptor(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:201 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:201 * * If the 4 bytes from offset 4 of the EEPROM are anything other * than 0xFFFF:FFFF, use them, otherwise generate a 32-bit random * serial number using CRC32 from the factory information. */ uint32_t _sn = ((User_EEP_t*)EEPROM_START)->dwSerialNumber; - 321e: 40 91 04 14 lds r20, 0x1404 ; 0x801404 <__TEXT_REGION_LENGTH__+0x7f1404> - 3222: 50 91 05 14 lds r21, 0x1405 ; 0x801405 <__TEXT_REGION_LENGTH__+0x7f1405> - 3226: 60 91 06 14 lds r22, 0x1406 ; 0x801406 <__TEXT_REGION_LENGTH__+0x7f1406> - 322a: 70 91 07 14 lds r23, 0x1407 ; 0x801407 <__TEXT_REGION_LENGTH__+0x7f1407> - 322e: 49 83 std Y+1, r20 ; 0x01 - 3230: 5a 83 std Y+2, r21 ; 0x02 - 3232: 6b 83 std Y+3, r22 ; 0x03 - 3234: 7c 83 std Y+4, r23 ; 0x04 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:202 + 321a: 40 91 04 14 lds r20, 0x1404 ; 0x801404 <__TEXT_REGION_LENGTH__+0x7f1404> + 321e: 50 91 05 14 lds r21, 0x1405 ; 0x801405 <__TEXT_REGION_LENGTH__+0x7f1405> + 3222: 60 91 06 14 lds r22, 0x1406 ; 0x801406 <__TEXT_REGION_LENGTH__+0x7f1406> + 3226: 70 91 07 14 lds r23, 0x1407 ; 0x801407 <__TEXT_REGION_LENGTH__+0x7f1407> + 322a: 49 83 std Y+1, r20 ; 0x01 + 322c: 5a 83 std Y+2, r21 ; 0x02 + 322e: 6b 83 std Y+3, r22 ; 0x03 + 3230: 7c 83 std Y+4, r23 ; 0x04 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:202 if (!(_sn + 1)) _sn = crc32((uint8_t*)SIGNATURES_START, 32); - 3236: 4f 3f cpi r20, 0xFF ; 255 - 3238: ff ef ldi r31, 0xFF ; 255 - 323a: 5f 07 cpc r21, r31 - 323c: 6f 07 cpc r22, r31 - 323e: 7f 07 cpc r23, r31 - 3240: 51 f5 brne .+84 ; 0x3296 + 3232: 4f 3f cpi r20, 0xFF ; 255 + 3234: ff ef ldi r31, 0xFF ; 255 + 3236: 5f 07 cpc r21, r31 + 3238: 6f 07 cpc r22, r31 + 323a: 7f 07 cpc r23, r31 + 323c: 51 f5 brne .+84 ; 0x3292 main(): /Users/askn/Library/Arduino15/packages/MultiX-Zinnia/hardware/modernAVR/0.2.14/cores/modernAVR/api/cpp/btools.cpp:210 return _crc; @@ -10626,13 +10626,13 @@ main(): uint32_t crc32 (void* _data, size_t _len) { uint32_t _crc = ~0; uint8_t* _p = (uint8_t*)_data; - 3242: e0 e8 ldi r30, 0x80 ; 128 - 3244: f0 e1 ldi r31, 0x10 ; 16 + 323e: e0 e8 ldi r30, 0x80 ; 128 + 3240: f0 e1 ldi r31, 0x10 ; 16 crc32(): /Users/askn/Library/Arduino15/packages/MultiX-Zinnia/hardware/modernAVR/0.2.14/cores/modernAVR/api/cpp/btools.cpp:211 while (_len--) _crc = _crc32_update(_crc, *_p++); - 3246: cf 01 movw r24, r30 - 3248: 01 96 adiw r24, 0x01 ; 1 + 3242: cf 01 movw r24, r30 + 3244: 01 96 adiw r24, 0x01 ; 1 _crc32_update(): /Users/askn/Library/Arduino15/packages/MultiX-Zinnia/hardware/modernAVR/0.2.14/cores/modernAVR/api/cpp/btools.cpp:201 } @@ -10641,38 +10641,38 @@ _crc32_update(): /* (0xEDB88320 rev) init -1 */ uint32_t _crc32_update (uint32_t _crc, uint8_t _data) { _crc ^= _data; - 324a: 20 81 ld r18, Z - 324c: 42 27 eor r20, r18 - 324e: 28 e0 ldi r18, 0x08 ; 8 + 3246: 20 81 ld r18, Z + 3248: 42 27 eor r20, r18 + 324a: 28 e0 ldi r18, 0x08 ; 8 /Users/askn/Library/Arduino15/packages/MultiX-Zinnia/hardware/modernAVR/0.2.14/cores/modernAVR/api/cpp/btools.cpp:203 for (uint8_t j = 0; j < 8; j++) { _crc = (_crc >> 1) ^ (0xEDB88320UL & -(_crc & 1)); - 3250: 6a 01 movw r12, r20 - 3252: 7b 01 movw r14, r22 - 3254: f6 94 lsr r15 - 3256: e7 94 ror r14 - 3258: d7 94 ror r13 - 325a: c7 94 ror r12 - 325c: 41 70 andi r20, 0x01 ; 1 - 325e: 55 27 eor r21, r21 - 3260: 66 27 eor r22, r22 - 3262: 77 27 eor r23, r23 - 3264: 70 95 com r23 - 3266: 60 95 com r22 - 3268: 50 95 com r21 - 326a: 41 95 neg r20 - 326c: 5f 4f sbci r21, 0xFF ; 255 - 326e: 6f 4f sbci r22, 0xFF ; 255 - 3270: 7f 4f sbci r23, 0xFF ; 255 - 3272: 40 72 andi r20, 0x20 ; 32 - 3274: 53 78 andi r21, 0x83 ; 131 - 3276: 68 7b andi r22, 0xB8 ; 184 - 3278: 7d 7e andi r23, 0xED ; 237 - 327a: 4c 25 eor r20, r12 - 327c: 5d 25 eor r21, r13 - 327e: 6e 25 eor r22, r14 - 3280: 7f 25 eor r23, r15 - 3282: 21 50 subi r18, 0x01 ; 1 + 324c: 6a 01 movw r12, r20 + 324e: 7b 01 movw r14, r22 + 3250: f6 94 lsr r15 + 3252: e7 94 ror r14 + 3254: d7 94 ror r13 + 3256: c7 94 ror r12 + 3258: 41 70 andi r20, 0x01 ; 1 + 325a: 55 27 eor r21, r21 + 325c: 66 27 eor r22, r22 + 325e: 77 27 eor r23, r23 + 3260: 70 95 com r23 + 3262: 60 95 com r22 + 3264: 50 95 com r21 + 3266: 41 95 neg r20 + 3268: 5f 4f sbci r21, 0xFF ; 255 + 326a: 6f 4f sbci r22, 0xFF ; 255 + 326c: 7f 4f sbci r23, 0xFF ; 255 + 326e: 40 72 andi r20, 0x20 ; 32 + 3270: 53 78 andi r21, 0x83 ; 131 + 3272: 68 7b andi r22, 0xB8 ; 184 + 3274: 7d 7e andi r23, 0xED ; 237 + 3276: 4c 25 eor r20, r12 + 3278: 5d 25 eor r21, r13 + 327a: 6e 25 eor r22, r14 + 327c: 7f 25 eor r23, r15 + 327e: 21 50 subi r18, 0x01 ; 1 /Users/askn/Library/Arduino15/packages/MultiX-Zinnia/hardware/modernAVR/0.2.14/cores/modernAVR/api/cpp/btools.cpp:202 /* x32 + x26 + x23 + x22 + x16 + x12 + x11 + x10 + x8 + x7 + x5 + x4 + x2 + x + 1 */ @@ -10680,8 +10680,8 @@ uint32_t _crc32_update (uint32_t _crc, uint8_t _data) { uint32_t _crc32_update (uint32_t _crc, uint8_t _data) { _crc ^= _data; for (uint8_t j = 0; j < 8; j++) { - 3284: 29 f7 brne .-54 ; 0x3250 - 3286: fc 01 movw r30, r24 + 3280: 29 f7 brne .-54 ; 0x324c + 3282: fc 01 movw r30, r24 crc32(): /Users/askn/Library/Arduino15/packages/MultiX-Zinnia/hardware/modernAVR/0.2.14/cores/modernAVR/api/cpp/btools.cpp:211 } @@ -10690,2156 +10690,2156 @@ uint32_t crc32 (void* _data, size_t _len) { uint32_t _crc = ~0; uint8_t* _p = (uint8_t*)_data; while (_len--) _crc = _crc32_update(_crc, *_p++); - 3288: 80 3a cpi r24, 0xA0 ; 160 - 328a: 90 41 sbci r25, 0x10 ; 16 - 328c: e1 f6 brne .-72 ; 0x3246 + 3284: 80 3a cpi r24, 0xA0 ; 160 + 3286: 90 41 sbci r25, 0x10 ; 16 + 3288: e1 f6 brne .-72 ; 0x3242 get_descriptor(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:202 - 328e: 49 83 std Y+1, r20 ; 0x01 - 3290: 5a 83 std Y+2, r21 ; 0x02 - 3292: 6b 83 std Y+3, r22 ; 0x03 - 3294: 7c 83 std Y+4, r23 ; 0x04 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:204 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:202 + 328a: 49 83 std Y+1, r20 ; 0x01 + 328c: 5a 83 std Y+2, r21 ; 0x02 + 328e: 6b 83 std Y+3, r22 ; 0x03 + 3290: 7c 83 std Y+4, r23 ; 0x04 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:204 uint8_t* _p = (uint8_t*)&_sn; *_buffer++ = 22; *_buffer++ = 3; - 3296: 86 e1 ldi r24, 0x16 ; 22 - 3298: 80 93 1e 63 sts 0x631E, r24 ; 0x80631e - 329c: 83 e0 ldi r24, 0x03 ; 3 - 329e: 80 93 1f 63 sts 0x631F, r24 ; 0x80631f -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:205 + 3292: 86 e1 ldi r24, 0x16 ; 22 + 3294: 80 93 1e 63 sts 0x631E, r24 ; 0x80631e + 3298: 83 e0 ldi r24, 0x03 ; 3 + 329a: 80 93 1f 63 sts 0x631F, r24 ; 0x80631f +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:205 *_buffer++ = 'M'; *_buffer++ = 0; - 32a2: 8d e4 ldi r24, 0x4D ; 77 - 32a4: 80 93 20 63 sts 0x6320, r24 ; 0x806320 - 32a8: 10 92 21 63 sts 0x6321, r1 ; 0x806321 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:206 + 329e: 8d e4 ldi r24, 0x4D ; 77 + 32a0: 80 93 20 63 sts 0x6320, r24 ; 0x806320 + 32a4: 10 92 21 63 sts 0x6321, r1 ; 0x806321 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:206 *_buffer++ = 'X'; *_buffer++ = 0; - 32ac: 88 e5 ldi r24, 0x58 ; 88 - 32ae: 80 93 22 63 sts 0x6322, r24 ; 0x806322 - 32b2: 10 92 23 63 sts 0x6323, r1 ; 0x806323 - 32b6: 34 e2 ldi r19, 0x24 ; 36 - 32b8: e3 2e mov r14, r19 - 32ba: 33 e6 ldi r19, 0x63 ; 99 - 32bc: f3 2e mov r15, r19 - 32be: ce 01 movw r24, r28 - 32c0: 01 96 adiw r24, 0x01 ; 1 - 32c2: 6c 01 movw r12, r24 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:208 + 32a8: 88 e5 ldi r24, 0x58 ; 88 + 32aa: 80 93 22 63 sts 0x6322, r24 ; 0x806322 + 32ae: 10 92 23 63 sts 0x6323, r1 ; 0x806323 + 32b2: 34 e2 ldi r19, 0x24 ; 36 + 32b4: e3 2e mov r14, r19 + 32b6: 33 e6 ldi r19, 0x63 ; 99 + 32b8: f3 2e mov r15, r19 + 32ba: ce 01 movw r24, r28 + 32bc: 01 96 adiw r24, 0x01 ; 1 + 32be: 6c 01 movw r12, r24 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:208 for (uint8_t _i = 0; _i < 4; _i++) { uint8_t _c = *_p++; - 32c4: f6 01 movw r30, r12 - 32c6: 51 90 ld r5, Z+ - 32c8: 6f 01 movw r12, r30 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:209 + 32c0: f6 01 movw r30, r12 + 32c2: 51 90 ld r5, Z+ + 32c4: 6f 01 movw r12, r30 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:209 *_buffer++ = btoh(_c >> 4); *_buffer++ = 0; - 32ca: 85 2d mov r24, r5 - 32cc: 82 95 swap r24 - 32ce: 8f 70 andi r24, 0x0F ; 15 - 32d0: 0e 94 e5 04 call 0x9ca ; 0x9ca - 32d4: f7 01 movw r30, r14 - 32d6: 80 83 st Z, r24 - 32d8: 11 82 std Z+1, r1 ; 0x01 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:210 + 32c6: 85 2d mov r24, r5 + 32c8: 82 95 swap r24 + 32ca: 8f 70 andi r24, 0x0F ; 15 + 32cc: 0e 94 e5 04 call 0x9ca ; 0x9ca + 32d0: f7 01 movw r30, r14 + 32d2: 80 83 st Z, r24 + 32d4: 11 82 std Z+1, r1 ; 0x01 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:210 *_buffer++ = btoh(_c ); *_buffer++ = 0; - 32da: 85 2d mov r24, r5 - 32dc: 0e 94 e5 04 call 0x9ca ; 0x9ca - 32e0: f7 01 movw r30, r14 - 32e2: 82 83 std Z+2, r24 ; 0x02 - 32e4: 13 82 std Z+3, r1 ; 0x03 - 32e6: f4 e0 ldi r31, 0x04 ; 4 - 32e8: ef 0e add r14, r31 - 32ea: f1 1c adc r15, r1 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:207 + 32d6: 85 2d mov r24, r5 + 32d8: 0e 94 e5 04 call 0x9ca ; 0x9ca + 32dc: f7 01 movw r30, r14 + 32de: 82 83 std Z+2, r24 ; 0x02 + 32e0: 13 82 std Z+3, r1 ; 0x03 + 32e2: f4 e0 ldi r31, 0x04 ; 4 + 32e4: ef 0e add r14, r31 + 32e6: f1 1c adc r15, r1 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:207 if (!(_sn + 1)) _sn = crc32((uint8_t*)SIGNATURES_START, 32); uint8_t* _p = (uint8_t*)&_sn; *_buffer++ = 22; *_buffer++ = 3; *_buffer++ = 'M'; *_buffer++ = 0; *_buffer++ = 'X'; *_buffer++ = 0; for (uint8_t _i = 0; _i < 4; _i++) { - 32ec: 2c 14 cp r2, r12 - 32ee: 3d 04 cpc r3, r13 - 32f0: 49 f7 brne .-46 ; 0x32c4 + 32e8: 2c 14 cp r2, r12 + 32ea: 3d 04 cpc r3, r13 + 32ec: 49 f7 brne .-46 ; 0x32c0 main(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:212 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:212 uint8_t _c = *_p++; *_buffer++ = btoh(_c >> 4); *_buffer++ = 0; *_buffer++ = btoh(_c ); *_buffer++ = 0; } return 22; - 32f2: 26 e1 ldi r18, 0x16 ; 22 - 32f4: e2 2e mov r14, r18 - 32f6: f1 2c mov r15, r1 - 32f8: 19 cf rjmp .-462 ; 0x312c -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:189 + 32ee: 26 e1 ldi r18, 0x16 ; 22 + 32f0: e2 2e mov r14, r18 + 32f2: f1 2c mov r15, r1 + 32f4: 19 cf rjmp .-462 ; 0x3128 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:189 *_buffer++ = 0x04; return _size; } else { switch (_index) { case 0x0301: _pgmem = (uint8_t*)&vstring; _size = sizeof(vstring); break; - 32fa: 94 e3 ldi r25, 0x34 ; 52 - 32fc: e9 2e mov r14, r25 - 32fe: f1 2c mov r15, r1 - 3300: 66 ee ldi r22, 0xE6 ; 230 - 3302: 70 e0 ldi r23, 0x00 ; 0 - 3304: 75 cf rjmp .-278 ; 0x31f0 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:165 + 32f6: 94 e3 ldi r25, 0x34 ; 52 + 32f8: e9 2e mov r14, r25 + 32fa: f1 2c mov r15, r1 + 32fc: 66 ee ldi r22, 0xE6 ; 230 + 32fe: 70 e0 ldi r23, 0x00 ; 0 + 3300: 75 cf rjmp .-278 ; 0x31ec +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:165 D1PRINTF(" VID:PID=%04X:%04X\r\n", _CAPS16(_buffer[8])->word, _CAPS16(_buffer[10])->word); return _size; } else if (_type == 0x02) { /* CONFIGURATION */ _pgmem = (uint8_t*)¤t_descriptor; _size = sizeof(current_descriptor); - 3306: 8b e6 ldi r24, 0x6B ; 107 - 3308: e8 2e mov r14, r24 - 330a: f1 2c mov r15, r1 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:164 + 3302: 8b e6 ldi r24, 0x6B ; 107 + 3304: e8 2e mov r14, r24 + 3306: f1 2c mov r15, r1 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:164 if (_vidpid + 1) _CAPS32(_buffer[8])->dword = _vidpid; D1PRINTF(" VID:PID=%04X:%04X\r\n", _CAPS16(_buffer[8])->word, _CAPS16(_buffer[10])->word); return _size; } else if (_type == 0x02) { /* CONFIGURATION */ _pgmem = (uint8_t*)¤t_descriptor; - 330c: 6d e3 ldi r22, 0x3D ; 61 - 330e: 71 e0 ldi r23, 0x01 ; 1 + 3308: 6d e3 ldi r22, 0x3D ; 61 + 330a: 71 e0 ldi r23, 0x01 ; 1 get_descriptor(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:220 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:220 *_buffer++ = (uint8_t)_size; *_buffer++ = 3; if (_size) memcpy_P(_buffer, _pgmem, _size - 2); return _size; } if (_size) memcpy_P(_buffer, _pgmem, _size); - 3310: a7 01 movw r20, r14 - 3312: 8e e1 ldi r24, 0x1E ; 30 - 3314: 93 e6 ldi r25, 0x63 ; 99 - 3316: 0e 94 b9 21 call 0x4372 ; 0x4372 - 331a: 08 cf rjmp .-496 ; 0x312c + 330c: a7 01 movw r20, r14 + 330e: 8e e1 ldi r24, 0x1E ; 30 + 3310: 93 e6 ldi r25, 0x63 ; 99 + 3312: 0e 94 b7 21 call 0x436e ; 0x436e + 3316: 08 cf rjmp .-496 ; 0x3128 main(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:169 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:169 _pgmem = (uint8_t*)¤t_descriptor; _size = sizeof(current_descriptor); } else if (_type == 0x06) { /* QUALIFIER */ _pgmem = (uint8_t*)&qualifier_descriptor; _size = sizeof(qualifier_descriptor); - 331c: ba e0 ldi r27, 0x0A ; 10 - 331e: eb 2e mov r14, r27 - 3320: f1 2c mov r15, r1 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:168 + 3318: ba e0 ldi r27, 0x0A ; 10 + 331a: eb 2e mov r14, r27 + 331c: f1 2c mov r15, r1 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:168 else if (_type == 0x02) { /* CONFIGURATION */ _pgmem = (uint8_t*)¤t_descriptor; _size = sizeof(current_descriptor); } else if (_type == 0x06) { /* QUALIFIER */ _pgmem = (uint8_t*)&qualifier_descriptor; - 3322: 68 ea ldi r22, 0xA8 ; 168 - 3324: 71 e0 ldi r23, 0x01 ; 1 - 3326: f4 cf rjmp .-24 ; 0x3310 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:173 + 331e: 68 ea ldi r22, 0xA8 ; 168 + 3320: 71 e0 ldi r23, 0x01 ; 1 + 3322: f4 cf rjmp .-24 ; 0x330c +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:173 _size = sizeof(qualifier_descriptor); } else if (_type == 0x21) { /* HID */ _pgmem = (uint8_t*)¤t_descriptor + 18; _size = 9; - 3328: a9 e0 ldi r26, 0x09 ; 9 - 332a: ea 2e mov r14, r26 - 332c: f1 2c mov r15, r1 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:172 + 3324: a9 e0 ldi r26, 0x09 ; 9 + 3326: ea 2e mov r14, r26 + 3328: f1 2c mov r15, r1 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:172 else if (_type == 0x06) { /* QUALIFIER */ _pgmem = (uint8_t*)&qualifier_descriptor; _size = sizeof(qualifier_descriptor); } else if (_type == 0x21) { /* HID */ _pgmem = (uint8_t*)¤t_descriptor + 18; - 332e: 6f e4 ldi r22, 0x4F ; 79 - 3330: 71 e0 ldi r23, 0x01 ; 1 - 3332: ee cf rjmp .-36 ; 0x3310 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:177 + 332a: 6f e4 ldi r22, 0x4F ; 79 + 332c: 71 e0 ldi r23, 0x01 ; 1 + 332e: ee cf rjmp .-36 ; 0x330c +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:177 _size = 9; } else if (_type == 0x22) { /* REPORT */ _pgmem = (uint8_t*)&report_descriptor; _size = sizeof(report_descriptor); - 3334: f3 e2 ldi r31, 0x23 ; 35 - 3336: ef 2e mov r14, r31 - 3338: f1 2c mov r15, r1 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:176 + 3330: f3 e2 ldi r31, 0x23 ; 35 + 3332: ef 2e mov r14, r31 + 3334: f1 2c mov r15, r1 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:176 else if (_type == 0x21) { /* HID */ _pgmem = (uint8_t*)¤t_descriptor + 18; _size = 9; } else if (_type == 0x22) { /* REPORT */ _pgmem = (uint8_t*)&report_descriptor; - 333a: 6a e1 ldi r22, 0x1A ; 26 - 333c: 71 e0 ldi r23, 0x01 ; 1 - 333e: e8 cf rjmp .-48 ; 0x3310 + 3336: 6a e1 ldi r22, 0x1A ; 26 + 3338: 71 e0 ldi r23, 0x01 ; 1 + 333a: e8 cf rjmp .-48 ; 0x330c request_standard(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:561 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:562 size_t _length = EP_MEM.req_data.wLength; size_t _size = get_descriptor((uint8_t*)&EP_MEM.res_data, EP_MEM.req_data.wValue); EP_RES.CNT = (_size > _length) ? _length : _size; _listen = !!_size; } else if (bRequest == 0x08) { /* GET_CONFIGURATION */ - 3340: 88 30 cpi r24, 0x08 ; 8 - 3342: c9 f4 brne .+50 ; 0x3376 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:562 + 333c: 88 30 cpi r24, 0x08 ; 8 + 333e: c9 f4 brne .+50 ; 0x3372 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:563 EP_MEM.res_data[0] = _set_config; - 3344: 80 91 30 64 lds r24, 0x6430 ; 0x806430 <_set_config> - 3348: 80 93 1e 63 sts 0x631E, r24 ; 0x80631e -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:563 + 3340: 80 91 30 64 lds r24, 0x6430 ; 0x806430 <_set_config> + 3344: 80 93 1e 63 sts 0x631E, r24 ; 0x80631e +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:564 D1PRINTF("\r\n", _set_config); - 334c: 1f 92 push r1 - 334e: 8f 93 push r24 - 3350: 8a ef ldi r24, 0xFA ; 250 - 3352: 91 e0 ldi r25, 0x01 ; 1 - 3354: 9f 93 push r25 - 3356: 8f 93 push r24 - 3358: 1f 93 push r17 - 335a: 0f 93 push r16 - 335c: 0e 94 2e 0a call 0x145c ; 0x145c -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:564 + 3348: 1f 92 push r1 + 334a: 8f 93 push r24 + 334c: 8a ef ldi r24, 0xFA ; 250 + 334e: 91 e0 ldi r25, 0x01 ; 1 + 3350: 9f 93 push r25 + 3352: 8f 93 push r24 + 3354: 1f 93 push r17 + 3356: 0f 93 push r16 + 3358: 0e 94 2e 0a call 0x145c ; 0x145c +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:565 EP_RES.CNT = 1; - 3360: 60 92 48 64 sts 0x6448, r6 ; 0x806448 - 3364: 70 92 49 64 sts 0x6449, r7 ; 0x806449 + 335c: 60 92 48 64 sts 0x6448, r6 ; 0x806448 + 3360: 70 92 49 64 sts 0x6449, r7 ; 0x806449 + 3364: 0f 90 pop r0 + 3366: 0f 90 pop r0 3368: 0f 90 pop r0 336a: 0f 90 pop r0 336c: 0f 90 pop r0 336e: 0f 90 pop r0 - 3370: 0f 90 pop r0 - 3372: 0f 90 pop r0 - 3374: 96 cd rjmp .-1236 ; 0x2ea2 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:566 + 3370: 98 cd rjmp .-1232 ; 0x2ea2 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:567 } else if (bRequest == 0x09) { /* SET_CONFIGURATION */ - 3376: 89 30 cpi r24, 0x09 ; 9 - 3378: 71 f4 brne .+28 ; 0x3396 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:568 + 3372: 89 30 cpi r24, 0x09 ; 9 + 3374: 71 f4 brne .+28 ; 0x3392 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:569 /* Once the USB connection is fully initiated, it will go through here. */ _set_config = (uint8_t)EP_MEM.req_data.wValue; - 337a: 80 91 18 63 lds r24, 0x6318 ; 0x806318 - 337e: 80 93 30 64 sts 0x6430, r24 ; 0x806430 <_set_config> -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:569 + 3376: 80 91 18 63 lds r24, 0x6318 ; 0x806318 + 337a: 80 93 30 64 sts 0x6430, r24 ; 0x806430 <_set_config> +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:570 bit_set(GPCONF, GPCONF_USB_bp); - 3382: e0 9a sbi 0x1c, 0 ; 28 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:570 + 337e: e0 9a sbi 0x1c, 0 ; 28 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:571 SYS::LED_HeartBeat(); - 3384: 0e 94 a4 08 call 0x1148 ; 0x1148 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:571 + 3380: 0e 94 a4 08 call 0x1148 ; 0x1148 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:572 D1PRINTF("\r\n", _set_config); - 3388: 80 91 30 64 lds r24, 0x6430 ; 0x806430 <_set_config> - 338c: 1f 92 push r1 - 338e: 8f 93 push r24 - 3390: 8e ee ldi r24, 0xEE ; 238 - 3392: 91 e0 ldi r25, 0x01 ; 1 - 3394: 7a ce rjmp .-780 ; 0x308a -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:574 + 3384: 80 91 30 64 lds r24, 0x6430 ; 0x806430 <_set_config> + 3388: 1f 92 push r1 + 338a: 8f 93 push r24 + 338c: 8e ee ldi r24, 0xEE ; 238 + 338e: 91 e0 ldi r25, 0x01 ; 1 + 3390: 7a ce rjmp .-780 ; 0x3086 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:575 EP_RES.CNT = 0; } else if (bRequest == 0x0A) { /* GET_INTREFACE */ - 3396: 8a 30 cpi r24, 0x0A ; 10 - 3398: 99 f4 brne .+38 ; 0x33c0 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:576 + 3392: 8a 30 cpi r24, 0x0A ; 10 + 3394: 99 f4 brne .+38 ; 0x33bc +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:577 /* It seems not to be used. */ D1PRINTF("\r\n"); - 339a: 25 ee ldi r18, 0xE5 ; 229 - 339c: 31 e0 ldi r19, 0x01 ; 1 - 339e: 3f 93 push r19 - 33a0: 2f 93 push r18 - 33a2: 1f 93 push r17 - 33a4: 0f 93 push r16 - 33a6: 0e 94 2e 0a call 0x145c ; 0x145c -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:577 + 3396: 25 ee ldi r18, 0xE5 ; 229 + 3398: 31 e0 ldi r19, 0x01 ; 1 + 339a: 3f 93 push r19 + 339c: 2f 93 push r18 + 339e: 1f 93 push r17 + 33a0: 0f 93 push r16 + 33a2: 0e 94 2e 0a call 0x145c ; 0x145c +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:578 EP_MEM.res_data[0] = 0; - 33aa: 10 92 1e 63 sts 0x631E, r1 ; 0x80631e -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:578 + 33a6: 10 92 1e 63 sts 0x631E, r1 ; 0x80631e +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:579 EP_RES.CNT = 1; - 33ae: 60 92 48 64 sts 0x6448, r6 ; 0x806448 - 33b2: 70 92 49 64 sts 0x6449, r7 ; 0x806449 + 33aa: 60 92 48 64 sts 0x6448, r6 ; 0x806448 + 33ae: 70 92 49 64 sts 0x6449, r7 ; 0x806449 request_class(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:628 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:629 EP_MEM.res_encoding.dwDTERate = 9600UL; EP_MEM.res_encoding.bDataBits = 8; } D1PRINTF(" GLE="); D1PRINTHEX(&EP_MEM.res_encoding, sizeof(LineEncoding_t)); EP_RES.CNT = sizeof(LineEncoding_t); + 33b2: 0f 90 pop r0 + 33b4: 0f 90 pop r0 33b6: 0f 90 pop r0 33b8: 0f 90 pop r0 - 33ba: 0f 90 pop r0 - 33bc: 0f 90 pop r0 - 33be: 71 cd rjmp .-1310 ; 0x2ea2 + 33ba: 73 cd rjmp .-1306 ; 0x2ea2 request_standard(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:580 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:581 /* It seems not to be used. */ D1PRINTF("\r\n"); EP_MEM.res_data[0] = 0; EP_RES.CNT = 1; } else if (bRequest == 0x0B) { /* SET_INTREFACE */ - 33c0: 8b 30 cpi r24, 0x0B ; 11 - 33c2: 09 f0 breq .+2 ; 0x33c6 - 33c4: c2 ce rjmp .-636 ; 0x314a -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:582 + 33bc: 8b 30 cpi r24, 0x0B ; 11 + 33be: 09 f0 breq .+2 ; 0x33c2 + 33c0: c2 ce rjmp .-636 ; 0x3146 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:583 /* It seems not to be used. */ D1PRINTF("\r\n", EP_MEM.req_data.wValue); - 33c6: 80 91 19 63 lds r24, 0x6319 ; 0x806319 - 33ca: 8f 93 push r24 - 33cc: 80 91 18 63 lds r24, 0x6318 ; 0x806318 - 33d0: 8f 93 push r24 - 33d2: 89 ed ldi r24, 0xD9 ; 217 - 33d4: 91 e0 ldi r25, 0x01 ; 1 - 33d6: 9f 93 push r25 - 33d8: 59 ce rjmp .-846 ; 0x308c + 33c2: 80 91 19 63 lds r24, 0x6319 ; 0x806319 + 33c6: 8f 93 push r24 + 33c8: 80 91 18 63 lds r24, 0x6318 ; 0x806318 + 33cc: 8f 93 push r24 + 33ce: 89 ed ldi r24, 0xD9 ; 217 + 33d0: 91 e0 ldi r25, 0x01 ; 1 + 33d2: 9f 93 push r25 + 33d4: 59 ce rjmp .-846 ; 0x3088 handling_control_transactions(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:666 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:667 if (bit_is_clear(bmRequestType, 7)) ep_req_listen(); bmRequestType &= (3 << 5); if (bmRequestType == (0 << 5)) { _listen = request_standard(); } else if (bmRequestType == (1 << 5)) { - 33da: 80 32 cpi r24, 0x20 ; 32 - 33dc: 09 f0 breq .+2 ; 0x33e0 - 33de: b5 ce rjmp .-662 ; 0x314a + 33d6: 80 32 cpi r24, 0x20 ; 32 + 33d8: 09 f0 breq .+2 ; 0x33dc + 33da: b5 ce rjmp .-662 ; 0x3146 request_class(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:594 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:595 } /*** CDC-ACM request processing. ***/ bool request_class (void) { bool _listen = true; uint8_t bRequest = EP_MEM.req_data.bRequest; - 33e0: 80 91 17 63 lds r24, 0x6317 ; 0x806317 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:595 + 33dc: 80 91 17 63 lds r24, 0x6317 ; 0x806317 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:596 if (bRequest == 0x0A) { /* SET_IDLE */ - 33e4: 8a 30 cpi r24, 0x0A ; 10 - 33e6: 61 f4 brne .+24 ; 0x3400 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:598 + 33e0: 8a 30 cpi r24, 0x0A ; 10 + 33e2: 61 f4 brne .+24 ; 0x33fc +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:599 /* This is a HID Compliance Class Request. */ /* It is called but not used. */ D1PRINTF(" IDL=%02X\r\n", (uint8_t)EP_MEM.req_data.wValue); - 33e8: 80 91 18 63 lds r24, 0x6318 ; 0x806318 - 33ec: 90 91 19 63 lds r25, 0x6319 ; 0x806319 - 33f0: 99 27 eor r25, r25 - 33f2: 9f 93 push r25 - 33f4: 8f 93 push r24 - 33f6: 29 e5 ldi r18, 0x59 ; 89 - 33f8: 32 e0 ldi r19, 0x02 ; 2 - 33fa: 3f 93 push r19 - 33fc: 2f 93 push r18 - 33fe: 47 ce rjmp .-882 ; 0x308e -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:601 + 33e4: 80 91 18 63 lds r24, 0x6318 ; 0x806318 + 33e8: 90 91 19 63 lds r25, 0x6319 ; 0x806319 + 33ec: 99 27 eor r25, r25 + 33ee: 9f 93 push r25 + 33f0: 8f 93 push r24 + 33f2: 29 e5 ldi r18, 0x59 ; 89 + 33f4: 32 e0 ldi r19, 0x02 ; 2 + 33f6: 3f 93 push r19 + 33f8: 2f 93 push r18 + 33fa: 47 ce rjmp .-882 ; 0x308a +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:602 EP_RES.CNT = 0; } else if (bRequest == 0x20) { /* SET_LINE_ENCODING */ - 3400: 80 32 cpi r24, 0x20 ; 32 - 3402: e1 f5 brne .+120 ; 0x347c + 33fc: 80 32 cpi r24, 0x20 ; 32 + 33fe: e1 f5 brne .+120 ; 0x3478 ep_req_pending(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:258 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:258 } } bool is_ep_setup (void) { return bit_is_set(EP_REQ.STATUS, USB_EPSETUP_bp); } bool is_not_dap (void) { return bit_is_clear(EP_DPO.STATUS, USB_BUSNAK_bp); } void ep_req_pending (void) { loop_until_bit_is_set(EP_REQ.STATUS, USB_BUSNAK_bp); } - 3404: 80 91 3e 64 lds r24, 0x643E ; 0x80643e - 3408: 81 ff sbrs r24, 1 - 340a: fc cf rjmp .-8 ; 0x3404 + 3400: 80 91 3e 64 lds r24, 0x643E ; 0x80643e + 3404: 81 ff sbrs r24, 1 + 3406: fc cf rjmp .-8 ; 0x3400 set_line_encoding(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/usart.cpp:175 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usart.cpp:175 SYS::LED_Flash(); } void set_line_encoding (LineEncoding_t* _buff) { /* The USART will not change unless a different setting is given. */ if (0 == memcmp(&_set_line_encoding, _buff, sizeof(LineEncoding_t))) return; - 340c: 47 e0 ldi r20, 0x07 ; 7 - 340e: 50 e0 ldi r21, 0x00 ; 0 - 3410: 6e e1 ldi r22, 0x1E ; 30 - 3412: 73 e6 ldi r23, 0x63 ; 99 - 3414: 86 e8 ldi r24, 0x86 ; 134 - 3416: 90 e6 ldi r25, 0x60 ; 96 - 3418: 0e 94 cf 24 call 0x499e ; 0x499e - 341c: 89 2b or r24, r25 - 341e: 91 f0 breq .+36 ; 0x3444 + 3408: 47 e0 ldi r20, 0x07 ; 7 + 340a: 50 e0 ldi r21, 0x00 ; 0 + 340c: 6e e1 ldi r22, 0x1E ; 30 + 340e: 73 e6 ldi r23, 0x63 ; 99 + 3410: 86 e8 ldi r24, 0x86 ; 134 + 3412: 90 e6 ldi r25, 0x60 ; 96 + 3414: 0e 94 cd 24 call 0x499a ; 0x499a + 3418: 89 2b or r24, r25 + 341a: 91 f0 breq .+36 ; 0x3440 read_drop(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:466 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:466 } return _s != 0; } void read_drop (void) { if (bit_is_set(EP_CDO.STATUS, USB_BUSNAK_bp)) ep_cdo_listen(); - 3420: 80 91 6e 64 lds r24, 0x646E ; 0x80646e - 3424: 81 fd sbrc r24, 1 - 3426: 0e 94 ff 04 call 0x9fe ; 0x9fe + 341c: 80 91 6e 64 lds r24, 0x646E ; 0x80646e + 3420: 81 fd sbrc r24, 1 + 3422: 0e 94 ff 04 call 0x9fe ; 0x9fe set_line_encoding(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/usart.cpp:177 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usart.cpp:177 USB::read_drop(); USART::setup(); - 342a: 0e 94 97 0f call 0x1f2e ; 0x1f2e -/Users/askn/Collaborator/UPDI4AVR-USB/src/usart.cpp:178 + 3426: 0e 94 97 0f call 0x1f2e ; 0x1f2e +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usart.cpp:178 memcpy(&_set_line_encoding, _buff, sizeof(LineEncoding_t)); - 342e: 87 e0 ldi r24, 0x07 ; 7 - 3430: ee e1 ldi r30, 0x1E ; 30 - 3432: f3 e6 ldi r31, 0x63 ; 99 - 3434: a6 e8 ldi r26, 0x86 ; 134 - 3436: b0 e6 ldi r27, 0x60 ; 96 - 3438: 01 90 ld r0, Z+ - 343a: 0d 92 st X+, r0 - 343c: 8a 95 dec r24 - 343e: e1 f7 brne .-8 ; 0x3438 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usart.cpp:179 + 342a: 87 e0 ldi r24, 0x07 ; 7 + 342c: ee e1 ldi r30, 0x1E ; 30 + 342e: f3 e6 ldi r31, 0x63 ; 99 + 3430: a6 e8 ldi r26, 0x86 ; 134 + 3432: b0 e6 ldi r27, 0x60 ; 96 + 3434: 01 90 ld r0, Z+ + 3436: 0d 92 st X+, r0 + 3438: 8a 95 dec r24 + 343a: e1 f7 brne .-8 ; 0x3434 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usart.cpp:179 change_vcp(); - 3440: 0e 94 52 0a call 0x14a4 ; 0x14a4 + 343c: 0e 94 52 0a call 0x14a4 ; 0x14a4 request_class(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:610 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:611 /* In any case, this isn't a one-off thing. */ /* If the same parameter settings persist, */ /* it's probably best to do nothing. */ ep_req_pending(); USART::set_line_encoding(&EP_MEM.res_encoding); D1PRINTF(" SLE="); - 3444: 83 e5 ldi r24, 0x53 ; 83 - 3446: 92 e0 ldi r25, 0x02 ; 2 - 3448: 9f 93 push r25 - 344a: 8f 93 push r24 - 344c: 1f 93 push r17 - 344e: 0f 93 push r16 - 3450: 0e 94 2e 0a call 0x145c ; 0x145c -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:611 + 3440: 83 e5 ldi r24, 0x53 ; 83 + 3442: 92 e0 ldi r25, 0x02 ; 2 + 3444: 9f 93 push r25 + 3446: 8f 93 push r24 + 3448: 1f 93 push r17 + 344a: 0f 93 push r16 + 344c: 0e 94 2e 0a call 0x145c ; 0x145c +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:612 D1PRINTHEX(&_set_line_encoding, sizeof(LineEncoding_t)); - 3454: 67 e0 ldi r22, 0x07 ; 7 - 3456: 70 e0 ldi r23, 0x00 ; 0 - 3458: 86 e8 ldi r24, 0x86 ; 134 - 345a: 90 e6 ldi r25, 0x60 ; 96 - 345c: 0e 94 bc 09 call 0x1378 ; 0x1378 - 3460: 0e 94 22 0a call 0x1444 ; 0x1444 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:612 + 3450: 67 e0 ldi r22, 0x07 ; 7 + 3452: 70 e0 ldi r23, 0x00 ; 0 + 3454: 86 e8 ldi r24, 0x86 ; 134 + 3456: 90 e6 ldi r25, 0x60 ; 96 + 3458: 0e 94 bc 09 call 0x1378 ; 0x1378 + 345c: 0e 94 22 0a call 0x1444 ; 0x1444 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:613 bit_set(GPCONF, GPCONF_OPN_bp); - 3464: e4 9a sbi 0x1c, 4 ; 28 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:613 + 3460: e4 9a sbi 0x1c, 4 ; 28 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:614 _send_count = 0; - 3466: 10 92 32 64 sts 0x6432, r1 ; 0x806432 <_send_count> -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:614 + 3462: 10 92 32 64 sts 0x6432, r1 ; 0x806432 <_send_count> +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:615 _recv_count = 0; - 346a: 10 92 31 64 sts 0x6431, r1 ; 0x806431 <_recv_count> -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:615 + 3466: 10 92 31 64 sts 0x6431, r1 ; 0x806431 <_recv_count> +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:616 _sof_count = 0; - 346e: 10 92 2f 64 sts 0x642F, r1 ; 0x80642f <_sof_count> -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:616 + 346a: 10 92 2f 64 sts 0x642F, r1 ; 0x80642f <_sof_count> +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:617 EP_RES.CNT = 0; - 3472: 10 92 48 64 sts 0x6448, r1 ; 0x806448 - 3476: 10 92 49 64 sts 0x6449, r1 ; 0x806449 - 347a: 9d cf rjmp .-198 ; 0x33b6 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:618 + 346e: 10 92 48 64 sts 0x6448, r1 ; 0x806448 + 3472: 10 92 49 64 sts 0x6449, r1 ; 0x806449 + 3476: 9d cf rjmp .-198 ; 0x33b2 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:619 } else if (bRequest == 0x21) { /* GET_LINE_ENCODING */ - 347c: 81 32 cpi r24, 0x21 ; 33 - 347e: b9 f5 brne .+110 ; 0x34ee -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:619 + 3478: 81 32 cpi r24, 0x21 ; 33 + 347a: b9 f5 brne .+110 ; 0x34ea +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:620 memcpy(&EP_MEM.res_encoding, &_set_line_encoding, sizeof(LineEncoding_t)); - 3480: 87 e0 ldi r24, 0x07 ; 7 - 3482: e6 e8 ldi r30, 0x86 ; 134 - 3484: f0 e6 ldi r31, 0x60 ; 96 - 3486: ae e1 ldi r26, 0x1E ; 30 - 3488: b3 e6 ldi r27, 0x63 ; 99 - 348a: 01 90 ld r0, Z+ - 348c: 0d 92 st X+, r0 - 348e: 8a 95 dec r24 - 3490: e1 f7 brne .-8 ; 0x348a -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:620 + 347c: 87 e0 ldi r24, 0x07 ; 7 + 347e: e6 e8 ldi r30, 0x86 ; 134 + 3480: f0 e6 ldi r31, 0x60 ; 96 + 3482: ae e1 ldi r26, 0x1E ; 30 + 3484: b3 e6 ldi r27, 0x63 ; 99 + 3486: 01 90 ld r0, Z+ + 3488: 0d 92 st X+, r0 + 348a: 8a 95 dec r24 + 348c: e1 f7 brne .-8 ; 0x3486 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:621 if (EP_MEM.res_encoding.dwDTERate == 0) { - 3492: 80 91 1e 63 lds r24, 0x631E ; 0x80631e - 3496: 90 91 1f 63 lds r25, 0x631F ; 0x80631f - 349a: a0 91 20 63 lds r26, 0x6320 ; 0x806320 - 349e: b0 91 21 63 lds r27, 0x6321 ; 0x806321 - 34a2: 89 2b or r24, r25 - 34a4: 8a 2b or r24, r26 - 34a6: 8b 2b or r24, r27 - 34a8: 59 f4 brne .+22 ; 0x34c0 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:623 + 348e: 80 91 1e 63 lds r24, 0x631E ; 0x80631e + 3492: 90 91 1f 63 lds r25, 0x631F ; 0x80631f + 3496: a0 91 20 63 lds r26, 0x6320 ; 0x806320 + 349a: b0 91 21 63 lds r27, 0x6321 ; 0x806321 + 349e: 89 2b or r24, r25 + 34a0: 8a 2b or r24, r26 + 34a2: 8b 2b or r24, r27 + 34a4: 59 f4 brne .+22 ; 0x34bc +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:624 /* Parameters that, if incorrectly accepted, */ /* would result in division by zero must be corrected. */ EP_MEM.res_encoding.dwDTERate = 9600UL; - 34aa: 80 92 1e 63 sts 0x631E, r8 ; 0x80631e - 34ae: 90 92 1f 63 sts 0x631F, r9 ; 0x80631f - 34b2: a0 92 20 63 sts 0x6320, r10 ; 0x806320 - 34b6: b0 92 21 63 sts 0x6321, r11 ; 0x806321 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:624 + 34a6: 80 92 1e 63 sts 0x631E, r8 ; 0x80631e + 34aa: 90 92 1f 63 sts 0x631F, r9 ; 0x80631f + 34ae: a0 92 20 63 sts 0x6320, r10 ; 0x806320 + 34b2: b0 92 21 63 sts 0x6321, r11 ; 0x806321 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:625 EP_MEM.res_encoding.bDataBits = 8; - 34ba: 88 e0 ldi r24, 0x08 ; 8 - 34bc: 80 93 24 63 sts 0x6324, r24 ; 0x806324 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:626 + 34b6: 88 e0 ldi r24, 0x08 ; 8 + 34b8: 80 93 24 63 sts 0x6324, r24 ; 0x806324 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:627 } D1PRINTF(" GLE="); - 34c0: 2d e4 ldi r18, 0x4D ; 77 - 34c2: 32 e0 ldi r19, 0x02 ; 2 - 34c4: 3f 93 push r19 - 34c6: 2f 93 push r18 - 34c8: 1f 93 push r17 - 34ca: 0f 93 push r16 - 34cc: 0e 94 2e 0a call 0x145c ; 0x145c -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:627 + 34bc: 2d e4 ldi r18, 0x4D ; 77 + 34be: 32 e0 ldi r19, 0x02 ; 2 + 34c0: 3f 93 push r19 + 34c2: 2f 93 push r18 + 34c4: 1f 93 push r17 + 34c6: 0f 93 push r16 + 34c8: 0e 94 2e 0a call 0x145c ; 0x145c +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:628 D1PRINTHEX(&EP_MEM.res_encoding, sizeof(LineEncoding_t)); - 34d0: 67 e0 ldi r22, 0x07 ; 7 - 34d2: 70 e0 ldi r23, 0x00 ; 0 - 34d4: 8e e1 ldi r24, 0x1E ; 30 - 34d6: 93 e6 ldi r25, 0x63 ; 99 - 34d8: 0e 94 bc 09 call 0x1378 ; 0x1378 - 34dc: 0e 94 22 0a call 0x1444 ; 0x1444 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:628 + 34cc: 67 e0 ldi r22, 0x07 ; 7 + 34ce: 70 e0 ldi r23, 0x00 ; 0 + 34d0: 8e e1 ldi r24, 0x1E ; 30 + 34d2: 93 e6 ldi r25, 0x63 ; 99 + 34d4: 0e 94 bc 09 call 0x1378 ; 0x1378 + 34d8: 0e 94 22 0a call 0x1444 ; 0x1444 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:629 EP_RES.CNT = sizeof(LineEncoding_t); - 34e0: 87 e0 ldi r24, 0x07 ; 7 - 34e2: 90 e0 ldi r25, 0x00 ; 0 - 34e4: 80 93 48 64 sts 0x6448, r24 ; 0x806448 - 34e8: 90 93 49 64 sts 0x6449, r25 ; 0x806449 - 34ec: 64 cf rjmp .-312 ; 0x33b6 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:630 + 34dc: 87 e0 ldi r24, 0x07 ; 7 + 34de: 90 e0 ldi r25, 0x00 ; 0 + 34e0: 80 93 48 64 sts 0x6448, r24 ; 0x806448 + 34e4: 90 93 49 64 sts 0x6449, r25 ; 0x806449 + 34e8: 64 cf rjmp .-312 ; 0x33b2 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:631 } else if (bRequest == 0x22) { /* SET_LINE_STATE */ - 34ee: 82 32 cpi r24, 0x22 ; 34 - 34f0: 71 f5 brne .+92 ; 0x354e -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:632 + 34ea: 82 32 cpi r24, 0x22 ; 34 + 34ec: 71 f5 brne .+92 ; 0x354a +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:633 /* This includes the DTR and RTS settings. */ D1PRINTF(" SLS=%02X\r\n", (uint8_t)EP_MEM.req_data.wValue); - 34f2: 80 91 18 63 lds r24, 0x6318 ; 0x806318 - 34f6: 90 91 19 63 lds r25, 0x6319 ; 0x806319 - 34fa: 99 27 eor r25, r25 - 34fc: 9f 93 push r25 - 34fe: 8f 93 push r24 - 3500: 81 e4 ldi r24, 0x41 ; 65 - 3502: 92 e0 ldi r25, 0x02 ; 2 - 3504: 9f 93 push r25 - 3506: 8f 93 push r24 - 3508: 1f 93 push r17 - 350a: 0f 93 push r16 - 350c: 0e 94 2e 0a call 0x145c ; 0x145c -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:633 + 34ee: 80 91 18 63 lds r24, 0x6318 ; 0x806318 + 34f2: 90 91 19 63 lds r25, 0x6319 ; 0x806319 + 34f6: 99 27 eor r25, r25 + 34f8: 9f 93 push r25 + 34fa: 8f 93 push r24 + 34fc: 81 e4 ldi r24, 0x41 ; 65 + 34fe: 92 e0 ldi r25, 0x02 ; 2 + 3500: 9f 93 push r25 + 3502: 8f 93 push r24 + 3504: 1f 93 push r17 + 3506: 0f 93 push r16 + 3508: 0e 94 2e 0a call 0x145c ; 0x145c +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:634 USART::set_line_state((uint8_t)EP_MEM.req_data.wValue); - 3510: 80 91 18 63 lds r24, 0x6318 ; 0x806318 + 350c: 80 91 18 63 lds r24, 0x6318 ; 0x806318 set_line_state(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/usart.cpp:191 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usart.cpp:191 void set_line_state (uint8_t _line_state) { /* If a physical port exists, it reflects DTR/RTS. */ #if defined(PIN_VCP_DTR) if (bit_is_set(_line_state, 0)) + 3510: 0f 90 pop r0 + 3512: 0f 90 pop r0 3514: 0f 90 pop r0 3516: 0f 90 pop r0 3518: 0f 90 pop r0 351a: 0f 90 pop r0 - 351c: 0f 90 pop r0 - 351e: 0f 90 pop r0 - 3520: 98 2f mov r25, r24 - 3522: 91 70 andi r25, 0x01 ; 1 - 3524: 80 ff sbrs r24, 0 - 3526: 0f c0 rjmp .+30 ; 0x3546 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usart.cpp:192 + 351c: 98 2f mov r25, r24 + 351e: 91 70 andi r25, 0x01 ; 1 + 3520: 80 ff sbrs r24, 0 + 3522: 0f c0 rjmp .+30 ; 0x3542 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usart.cpp:192 digitalWriteMacro(PIN_VCP_DTR, LOW); - 3528: 6c 98 cbi 0x0d, 4 ; 13 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usart.cpp:198 + 3524: 6c 98 cbi 0x0d, 4 ; 13 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usart.cpp:198 else digitalWriteMacro(PIN_VCP_DTR, HIGH); #endif #if defined(PIN_VCP_RTS) if (bit_is_set(_line_state, 1)) - 352a: 81 ff sbrs r24, 1 - 352c: 0e c0 rjmp .+28 ; 0x354a -/Users/askn/Collaborator/UPDI4AVR-USB/src/usart.cpp:199 + 3526: 81 ff sbrs r24, 1 + 3528: 0e c0 rjmp .+28 ; 0x3546 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usart.cpp:199 digitalWriteMacro(PIN_VCP_RTS, LOW); - 352e: 6d 98 cbi 0x0d, 5 ; 13 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usart.cpp:206 + 352a: 6d 98 cbi 0x0d, 5 ; 13 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usart.cpp:206 digitalWriteMacro(PIN_VCP_RTS, HIGH); #endif #if defined(CONFIG_VCP_DTR_RESET) /* If DTR is set, the device will reboot assuming the host has opened the port. */ if (!_set_line_state.bStateDTR && bit_is_set(_line_state, 0)) { - 3530: 20 91 84 60 lds r18, 0x6084 ; 0x806084 <__data_end> - 3534: 20 fd sbrc r18, 0 - 3536: 04 c0 rjmp .+8 ; 0x3540 - 3538: 99 23 and r25, r25 - 353a: 11 f0 breq .+4 ; 0x3540 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usart.cpp:207 + 352c: 20 91 84 60 lds r18, 0x6084 ; 0x806084 <__data_end> + 3530: 20 fd sbrc r18, 0 + 3532: 04 c0 rjmp .+8 ; 0x353c + 3534: 99 23 and r25, r25 + 3536: 11 f0 breq .+4 ; 0x353c +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usart.cpp:207 bit_set(GPCONF, GPCONF_FAL_bp); - 353c: e7 9a sbi 0x1c, 7 ; 28 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usart.cpp:208 + 3538: e7 9a sbi 0x1c, 7 ; 28 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usart.cpp:208 bit_set(GPCONF, GPCONF_RIS_bp); - 353e: e6 9a sbi 0x1c, 6 ; 28 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usart.cpp:212 + 353a: e6 9a sbi 0x1c, 6 ; 28 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usart.cpp:212 } #endif _set_line_state.bValue = _line_state; - 3540: 80 93 84 60 sts 0x6084, r24 ; 0x806084 <__data_end> - 3544: 6d cd rjmp .-1318 ; 0x3020 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usart.cpp:194 + 353c: 80 93 84 60 sts 0x6084, r24 ; 0x806084 <__data_end> + 3540: 6d cd rjmp .-1318 ; 0x301c +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usart.cpp:194 #if defined(PIN_VCP_DTR) if (bit_is_set(_line_state, 0)) digitalWriteMacro(PIN_VCP_DTR, LOW); else digitalWriteMacro(PIN_VCP_DTR, HIGH); - 3546: 6c 9a sbi 0x0d, 4 ; 13 - 3548: f0 cf rjmp .-32 ; 0x352a -/Users/askn/Collaborator/UPDI4AVR-USB/src/usart.cpp:201 + 3542: 6c 9a sbi 0x0d, 4 ; 13 + 3544: f0 cf rjmp .-32 ; 0x3526 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usart.cpp:201 #if defined(PIN_VCP_RTS) if (bit_is_set(_line_state, 1)) digitalWriteMacro(PIN_VCP_RTS, LOW); else digitalWriteMacro(PIN_VCP_RTS, HIGH); - 354a: 6d 9a sbi 0x0d, 5 ; 13 - 354c: f1 cf rjmp .-30 ; 0x3530 + 3546: 6d 9a sbi 0x0d, 5 ; 13 + 3548: f1 cf rjmp .-30 ; 0x352c request_class(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:636 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:637 EP_RES.CNT = 0; } else if (bRequest == 0x23) { /* SET_SEND_BREAK */ - 354e: 83 32 cpi r24, 0x23 ; 35 - 3550: 09 f0 breq .+2 ; 0x3554 - 3552: fb cd rjmp .-1034 ; 0x314a -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:639 + 354a: 83 32 cpi r24, 0x23 ; 35 + 354c: 09 f0 breq .+2 ; 0x3550 + 354e: fb cd rjmp .-1034 ; 0x3146 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:640 /* When the host application closes the port, it may send a BREAK=0. */ /* Nothing else is used unless programmed by the application. */ D1PRINTF(" SB=%04X\r\n", EP_MEM.req_data.wValue); - 3554: 80 91 19 63 lds r24, 0x6319 ; 0x806319 - 3558: 8f 93 push r24 - 355a: 80 91 18 63 lds r24, 0x6318 ; 0x806318 - 355e: 8f 93 push r24 - 3560: 26 e3 ldi r18, 0x36 ; 54 - 3562: 32 e0 ldi r19, 0x02 ; 2 - 3564: 3f 93 push r19 - 3566: 2f 93 push r18 - 3568: 1f 93 push r17 - 356a: 0f 93 push r16 - 356c: 0e 94 2e 0a call 0x145c ; 0x145c -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:640 + 3550: 80 91 19 63 lds r24, 0x6319 ; 0x806319 + 3554: 8f 93 push r24 + 3556: 80 91 18 63 lds r24, 0x6318 ; 0x806318 + 355a: 8f 93 push r24 + 355c: 26 e3 ldi r18, 0x36 ; 54 + 355e: 32 e0 ldi r19, 0x02 ; 2 + 3560: 3f 93 push r19 + 3562: 2f 93 push r18 + 3564: 1f 93 push r17 + 3566: 0f 93 push r16 + 3568: 0e 94 2e 0a call 0x145c ; 0x145c +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:641 _send_break = EP_MEM.req_data.wValue; - 3570: 80 91 18 63 lds r24, 0x6318 ; 0x806318 - 3574: 90 91 19 63 lds r25, 0x6319 ; 0x806319 - 3578: 80 93 33 64 sts 0x6433, r24 ; 0x806433 <_send_break> - 357c: 90 93 34 64 sts 0x6434, r25 ; 0x806434 <_send_break+0x1> -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:641 + 356c: 80 91 18 63 lds r24, 0x6318 ; 0x806318 + 3570: 90 91 19 63 lds r25, 0x6319 ; 0x806319 + 3574: 80 93 33 64 sts 0x6433, r24 ; 0x806433 <_send_break> + 3578: 90 93 34 64 sts 0x6434, r25 ; 0x806434 <_send_break+0x1> +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:642 if (_send_break) break_on(); + 357c: 0f 90 pop r0 + 357e: 0f 90 pop r0 3580: 0f 90 pop r0 3582: 0f 90 pop r0 3584: 0f 90 pop r0 3586: 0f 90 pop r0 - 3588: 0f 90 pop r0 - 358a: 0f 90 pop r0 - 358c: 89 2b or r24, r25 - 358e: 71 f0 breq .+28 ; 0x35ac + 3588: 89 2b or r24, r25 + 358a: 71 f0 breq .+28 ; 0x35a8 break_on(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:373 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:373 ep_dpo_listen(); /* continue transaction */ } void break_on (void) { if (bit_is_set(GPCONF, GPCONF_VCP_bp) && bit_is_clear(GPCONF, GPCONF_BRK_bp)) { - 3590: e1 9b sbis 0x1c, 1 ; 28 - 3592: 0a c0 rjmp .+20 ; 0x35a8 - 3594: e3 99 sbic 0x1c, 3 ; 28 - 3596: 08 c0 rjmp .+16 ; 0x35a8 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:375 + 358c: e1 9b sbis 0x1c, 1 ; 28 + 358e: 0a c0 rjmp .+20 ; 0x35a4 + 3590: e3 99 sbic 0x1c, 3 ; 28 + 3592: 08 c0 rjmp .+16 ; 0x35a4 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:375 /* SET_SEND_BREAK is called when the port is closed successfully. */ bit_clear(GPCONF, GPCONF_OPN_bp); - 3598: e4 98 cbi 0x1c, 4 ; 28 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:376 + 3594: e4 98 cbi 0x1c, 4 ; 28 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:376 _sof_count = 0; - 359a: 10 92 2f 64 sts 0x642F, r1 ; 0x80642f <_sof_count> -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:377 + 3596: 10 92 2f 64 sts 0x642F, r1 ; 0x80642f <_sof_count> +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:377 USART::disable_vcp(); - 359e: 0e 94 6f 0f call 0x1ede ; 0x1ede -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:380 + 359a: 0e 94 6f 0f call 0x1ede ; 0x1ede +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:380 #ifdef CONFIG_VCP_TXD_ODM /* During Break, VCP-TxD is pulled LOW. */ pinModeMacro(PIN_VCP_TXD, OUTPUT); - 35a2: 02 9a sbi 0x00, 2 ; 0 - 35a4: 10 92 12 04 sts 0x0412, r1 ; 0x800412 <__TEXT_REGION_LENGTH__+0x7f0412> -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:383 + 359e: 02 9a sbi 0x00, 2 ; 0 + 35a0: 10 92 12 04 sts 0x0412, r1 ; 0x800412 <__TEXT_REGION_LENGTH__+0x7f0412> +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:383 #endif } bit_set(GPCONF, GPCONF_BRK_bp); - 35a8: e3 9a sbi 0x1c, 3 ; 28 - 35aa: 3a cd rjmp .-1420 ; 0x3020 + 35a4: e3 9a sbi 0x1c, 3 ; 28 + 35a6: 3a cd rjmp .-1420 ; 0x301c request_class(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:642 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:643 /* When the host application closes the port, it may send a BREAK=0. */ /* Nothing else is used unless programmed by the application. */ D1PRINTF(" SB=%04X\r\n", EP_MEM.req_data.wValue); _send_break = EP_MEM.req_data.wValue; if (_send_break) break_on(); else break_off(); - 35ac: 0e 94 17 0b call 0x162e ; 0x162e - 35b0: 37 cd rjmp .-1426 ; 0x3020 + 35a8: 0e 94 17 0b call 0x162e ; 0x162e + 35ac: 37 cd rjmp .-1426 ; 0x301c main(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/main.cpp:126 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/main.cpp:126 if (USB::is_ep_setup()) USB::handling_control_transactions(); /* If SW0 was used, work here. */ if (bit_is_clear(PGCONF, PGCONF_UPDI_bp)) { if (bit_is_set(GPCONF, GPCONF_FAL_bp)) SYS::reset_enter(); else if (bit_is_set(GPCONF, GPCONF_RIS_bp)) SYS::reset_leave(); - 35b2: e6 9b sbis 0x1c, 6 ; 28 - 35b4: ae cc rjmp .-1700 ; 0x2f12 + 35ae: e6 9b sbis 0x1c, 6 ; 28 + 35b0: b0 cc rjmp .-1696 ; 0x2f12 reset_leave(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:276 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:276 * This will be executed when SW0 is released. * If the VCP is operating, it will return to normal operation, * but if the USB is stopped, it will reboot at the end. */ void reset_leave (void) { if (_jtag_arch == 5) { - 35b6: 80 91 98 60 lds r24, 0x6098 ; 0x806098 <_jtag_arch> - 35ba: 85 30 cpi r24, 0x05 ; 5 - 35bc: 21 f4 brne .+8 ; 0x35c6 -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:277 + 35b2: 80 91 98 60 lds r24, 0x6098 ; 0x806098 <_jtag_arch> + 35b6: 85 30 cpi r24, 0x05 ; 5 + 35b8: 21 f4 brne .+8 ; 0x35c2 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:277 _updi_bitmap[10] = 0x00; /* SYSRUN */ - 35be: 10 92 24 60 sts 0x6024, r1 ; 0x806024 -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:278 + 35ba: 10 92 24 60 sts 0x6024, r1 ; 0x806024 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:278 send_bitmap(_updi_bitmap, sizeof(_updi_bitmap) * 8); - 35c2: 0e 94 b7 04 call 0x96e ; 0x96e -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:280 + 35be: 0e 94 b7 04 call 0x96e ; 0x96e +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:280 } openDrainWriteMacro(PIN_PG_TRST, HIGH); - 35c6: 01 98 cbi 0x00, 1 ; 0 + 35c2: 01 98 cbi 0x00, 1 ; 0 delay_millis(): /Users/askn/Library/Arduino15/packages/MultiX-Zinnia/hardware/modernAVR/0.2.14/cores/modernAVR/api/delay_busywait.h:42 - 35c8: ff e7 ldi r31, 0x7F ; 127 - 35ca: 2a e1 ldi r18, 0x1A ; 26 - 35cc: 36 e0 ldi r19, 0x06 ; 6 - 35ce: f1 50 subi r31, 0x01 ; 1 - 35d0: 20 40 sbci r18, 0x00 ; 0 - 35d2: 30 40 sbci r19, 0x00 ; 0 - 35d4: e1 f7 brne .-8 ; 0x35ce - 35d6: 00 c0 rjmp .+0 ; 0x35d8 - 35d8: 00 00 nop + 35c4: ff e7 ldi r31, 0x7F ; 127 + 35c6: 2a e1 ldi r18, 0x1A ; 26 + 35c8: 36 e0 ldi r19, 0x06 ; 6 + 35ca: f1 50 subi r31, 0x01 ; 1 + 35cc: 20 40 sbci r18, 0x00 ; 0 + 35ce: 30 40 sbci r19, 0x00 ; 0 + 35d0: e1 f7 brne .-8 ; 0x35ca + 35d2: 00 c0 rjmp .+0 ; 0x35d4 + 35d4: 00 00 nop reset_leave(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:285 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:285 #ifdef CONFIG_VCP_DTR_RESET /* A delay of 64ms or more between when the bootloader starts and when RxD opens. */ delay_millis(100); #endif D1PRINTF("\r\n"); - 35da: 84 ea ldi r24, 0xA4 ; 164 - 35dc: 92 e0 ldi r25, 0x02 ; 2 - 35de: 9f 93 push r25 - 35e0: 8f 93 push r24 - 35e2: 1f 93 push r17 - 35e4: 0f 93 push r16 - 35e6: 0e 94 2e 0a call 0x145c ; 0x145c -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:286 + 35d6: 84 ea ldi r24, 0xA4 ; 164 + 35d8: 92 e0 ldi r25, 0x02 ; 2 + 35da: 9f 93 push r25 + 35dc: 8f 93 push r24 + 35de: 1f 93 push r17 + 35e0: 0f 93 push r16 + 35e2: 0e 94 2e 0a call 0x145c ; 0x145c +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:286 if (bit_is_set(GPCONF, GPCONF_USB_bp)) + 35e6: 0f 90 pop r0 + 35e8: 0f 90 pop r0 35ea: 0f 90 pop r0 35ec: 0f 90 pop r0 - 35ee: 0f 90 pop r0 - 35f0: 0f 90 pop r0 - 35f2: e0 9b sbis 0x1c, 0 ; 28 - 35f4: 05 c0 rjmp .+10 ; 0x3600 -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:287 + 35ee: e0 9b sbis 0x1c, 0 ; 28 + 35f0: 05 c0 rjmp .+10 ; 0x35fc +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:287 LED_HeartBeat(); /* The USB is ready. */ - 35f6: 0e 94 a4 08 call 0x1148 ; 0x1148 -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:292 + 35f2: 0e 94 a4 08 call 0x1148 ; 0x1148 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:292 else if (!USB0_ADDR) reboot(); /* USB disconnected, System reboot. */ else LED_Flash(); /* USB is not yet enabled. */ bit_clear(GPCONF, GPCONF_FAL_bp); - 35fa: e7 98 cbi 0x1c, 7 ; 28 -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:293 + 35f6: e7 98 cbi 0x1c, 7 ; 28 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:293 bit_clear(GPCONF, GPCONF_RIS_bp); - 35fc: e6 98 cbi 0x1c, 6 ; 28 - 35fe: 89 cc rjmp .-1774 ; 0x2f12 -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:288 + 35f8: e6 98 cbi 0x1c, 6 ; 28 + 35fa: 8b cc rjmp .-1770 ; 0x2f12 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:288 delay_millis(100); #endif D1PRINTF("\r\n"); if (bit_is_set(GPCONF, GPCONF_USB_bp)) LED_HeartBeat(); /* The USB is ready. */ else if (!USB0_ADDR) - 3600: 80 91 03 0c lds r24, 0x0C03 ; 0x800c03 <__TEXT_REGION_LENGTH__+0x7f0c03> - 3604: 81 11 cpse r24, r1 - 3606: 03 c0 rjmp .+6 ; 0x360e -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:289 + 35fc: 80 91 03 0c lds r24, 0x0C03 ; 0x800c03 <__TEXT_REGION_LENGTH__+0x7f0c03> + 3600: 81 11 cpse r24, r1 + 3602: 03 c0 rjmp .+6 ; 0x360a +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:289 reboot(); /* USB disconnected, System reboot. */ - 3608: 0e 94 59 0e call 0x1cb2 ; 0x1cb2 - 360c: f6 cf rjmp .-20 ; 0x35fa -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:291 + 3604: 0e 94 59 0e call 0x1cb2 ; 0x1cb2 + 3608: f6 cf rjmp .-20 ; 0x35f6 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:291 else LED_Flash(); /* USB is not yet enabled. */ - 360e: 0e 94 8f 08 call 0x111e ; 0x111e - 3612: f3 cf rjmp .-26 ; 0x35fa + 360a: 0e 94 8f 08 call 0x111e ; 0x111e + 360e: f3 cf rjmp .-26 ; 0x35f6 read_byte(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:443 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:443 else ep_cdi_listen(); } uint8_t read_byte (void) { uint8_t _c = 0; if (EP_CDO.CNT != _recv_count) { - 3614: 40 91 70 64 lds r20, 0x6470 ; 0x806470 - 3618: 50 91 71 64 lds r21, 0x6471 ; 0x806471 - 361c: 28 2f mov r18, r24 - 361e: 30 e0 ldi r19, 0x00 ; 0 + 3610: 40 91 70 64 lds r20, 0x6470 ; 0x806470 + 3614: 50 91 71 64 lds r21, 0x6471 ; 0x806471 + 3618: 28 2f mov r18, r24 + 361a: 30 e0 ldi r19, 0x00 ; 0 main(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:442 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:442 if (_send_count < 64) _sof_count = 30; else ep_cdi_listen(); } uint8_t read_byte (void) { uint8_t _c = 0; - 3620: f1 2c mov r15, r1 + 361c: f1 2c mov r15, r1 read_byte(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:443 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:443 if (EP_CDO.CNT != _recv_count) { - 3622: 42 17 cp r20, r18 - 3624: 53 07 cpc r21, r19 - 3626: 39 f0 breq .+14 ; 0x3636 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:450 + 361e: 42 17 cp r20, r18 + 3620: 53 07 cpc r21, r19 + 3622: 39 f0 breq .+14 ; 0x3632 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:450 if (_recv_count == 0) { D2PRINTF(" VO=%02X:", EP_CDO.CNT); D2PRINTHEX(&EP_MEM.cdo_data, EP_CDO.CNT); } #endif _c = EP_MEM.cdo_data[_recv_count++]; - 3628: 8f 5f subi r24, 0xFF ; 255 - 362a: 80 93 31 64 sts 0x6431, r24 ; 0x806431 <_recv_count> - 362e: 22 59 subi r18, 0x92 ; 146 - 3630: 3c 49 sbci r19, 0x9C ; 156 - 3632: f9 01 movw r30, r18 - 3634: f0 80 ld r15, Z -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:452 + 3624: 8f 5f subi r24, 0xFF ; 255 + 3626: 80 93 31 64 sts 0x6431, r24 ; 0x806431 <_recv_count> + 362a: 22 59 subi r18, 0x92 ; 146 + 362c: 3c 49 sbci r19, 0x9C ; 156 + 362e: f9 01 movw r30, r18 + 3630: f0 80 ld r15, Z +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:452 } if (EP_CDO.CNT == _recv_count) ep_cdo_listen(); - 3636: 80 91 70 64 lds r24, 0x6470 ; 0x806470 - 363a: 90 91 71 64 lds r25, 0x6471 ; 0x806471 - 363e: 20 91 31 64 lds r18, 0x6431 ; 0x806431 <_recv_count> - 3642: 28 17 cp r18, r24 - 3644: 19 06 cpc r1, r25 - 3646: 11 f4 brne .+4 ; 0x364c - 3648: 0e 94 ff 04 call 0x9fe ; 0x9fe + 3632: 80 91 70 64 lds r24, 0x6470 ; 0x806470 + 3636: 90 91 71 64 lds r25, 0x6471 ; 0x806471 + 363a: 20 91 31 64 lds r18, 0x6431 ; 0x806431 <_recv_count> + 363e: 28 17 cp r18, r24 + 3640: 19 06 cpc r1, r25 + 3642: 11 f4 brne .+4 ; 0x3648 + 3644: 0e 94 ff 04 call 0x9fe ; 0x9fe vcp_transceiver(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:503 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:503 #if defined(CONFIG_VCP_CTS_ENABLE) && !digitalReadMacro(PIN_VCP_CTS) #endif && bit_is_set(USART0_STATUS, USART_DREIF_bp) && read_available()) { USART0_TXDATAL = read_byte(); - 364c: f0 92 02 08 sts 0x0802, r15 ; 0x800802 <__TEXT_REGION_LENGTH__+0x7f0802> - 3650: 7a cc rjmp .-1804 ; 0x2f46 + 3648: f0 92 02 08 sts 0x0802, r15 ; 0x800802 <__TEXT_REGION_LENGTH__+0x7f0802> + 364c: 7c cc rjmp .-1800 ; 0x2f46 read_drop(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:466 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:466 } return _s != 0; } void read_drop (void) { if (bit_is_set(EP_CDO.STATUS, USB_BUSNAK_bp)) ep_cdo_listen(); - 3652: 80 91 6e 64 lds r24, 0x646E ; 0x80646e - 3656: 81 ff sbrs r24, 1 - 3658: 76 cc rjmp .-1812 ; 0x2f46 - 365a: 73 cc rjmp .-1818 ; 0x2f42 + 364e: 80 91 6e 64 lds r24, 0x646E ; 0x80646e + 3652: 81 ff sbrs r24, 1 + 3654: 78 cc rjmp .-1808 ; 0x2f46 + 3656: 75 cc rjmp .-1814 ; 0x2f42 cci_break_count(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:404 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:404 _send_break -= USB_CCI_INTERVAL; if (bit_is_set(EP_CCI.STATUS, USB_BUSNAK_bp)) ep_cci_listen(); } else { _send_break = 0; - 365c: 10 92 33 64 sts 0x6433, r1 ; 0x806433 <_send_break> - 3660: 10 92 34 64 sts 0x6434, r1 ; 0x806434 <_send_break+0x1> -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:405 + 3658: 10 92 33 64 sts 0x6433, r1 ; 0x806433 <_send_break> + 365c: 10 92 34 64 sts 0x6434, r1 ; 0x806434 <_send_break+0x1> +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:405 break_off(); - 3664: 0e 94 17 0b call 0x162e ; 0x162e - 3668: 88 cc rjmp .-1776 ; 0x2f7a + 3660: 0e 94 17 0b call 0x162e ; 0x162e + 3664: 8a cc rjmp .-1772 ; 0x2f7a dap_command_check(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:67 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:67 * A maximum of 15 chunks is possible, * resulting in a maximum payload length of 900 bytes. */ if (_cmd == 0x80) { /* DAP_EDBG_VENDOR_AVR_CMD */ uint8_t _endf = _sub & 0x0F; uint8_t _frag = _sub >> 4; - 366a: 90 e0 ldi r25, 0x00 ; 0 - 366c: e4 e0 ldi r30, 0x04 ; 4 - 366e: 95 95 asr r25 - 3670: 87 95 ror r24 - 3672: ea 95 dec r30 - 3674: e1 f7 brne .-8 ; 0x366e - 3676: 58 2e mov r5, r24 -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:68 + 3666: 90 e0 ldi r25, 0x00 ; 0 + 3668: e4 e0 ldi r30, 0x04 ; 4 + 366a: 95 95 asr r25 + 366c: 87 95 ror r24 + 366e: ea 95 dec r30 + 3670: e1 f7 brne .-8 ; 0x366a + 3672: 58 2e mov r5, r24 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:68 uint8_t _size = EP_MEM.dap_data[3]; - 3678: c0 90 31 63 lds r12, 0x6331 ; 0x806331 -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:77 + 3674: c0 90 31 63 lds r12, 0x6331 ; 0x806331 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:77 D1PRINTF("\r\n"); EP_MEM.dap_data[1] = 0x00; /* EDBG_RSP_FAIL */ } else { /* Detect the first chunk. */ if (_frag == 1) _packet_chunks = 0; - 367c: 31 e0 ldi r19, 0x01 ; 1 - 367e: 83 13 cpse r24, r19 - 3680: 02 c0 rjmp .+4 ; 0x3686 - 3682: 10 92 94 60 sts 0x6094, r1 ; 0x806094 <__bss_end> -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:69 + 3678: 31 e0 ldi r19, 0x01 ; 1 + 367a: 83 13 cpse r24, r19 + 367c: 02 c0 rjmp .+4 ; 0x3682 + 367e: 10 92 94 60 sts 0x6094, r1 ; 0x806094 <__bss_end> +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:69 */ if (_cmd == 0x80) { /* DAP_EDBG_VENDOR_AVR_CMD */ uint8_t _endf = _sub & 0x0F; uint8_t _frag = _sub >> 4; uint8_t _size = EP_MEM.dap_data[3]; size_t _ofst = (_frag - 1) * 60; - 3686: 01 97 sbiw r24, 0x01 ; 1 - 3688: 2c e3 ldi r18, 0x3C ; 60 - 368a: 28 9f mul r18, r24 - 368c: 70 01 movw r14, r0 - 368e: 29 9f mul r18, r25 - 3690: f0 0c add r15, r0 - 3692: 11 24 eor r1, r1 -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:78 + 3682: 01 97 sbiw r24, 0x01 ; 1 + 3684: 2c e3 ldi r18, 0x3C ; 60 + 3686: 28 9f mul r18, r24 + 3688: 70 01 movw r14, r0 + 368a: 29 9f mul r18, r25 + 368c: f0 0c add r15, r0 + 368e: 11 24 eor r1, r1 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:78 EP_MEM.dap_data[1] = 0x00; /* EDBG_RSP_FAIL */ } else { /* Detect the first chunk. */ if (_frag == 1) _packet_chunks = 0; ++_packet_chunks; - 3694: 70 90 94 60 lds r7, 0x6094 ; 0x806094 <__bss_end> - 3698: 73 94 inc r7 - 369a: 70 92 94 60 sts 0x6094, r7 ; 0x806094 <__bss_end> -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:79 + 3690: 70 90 94 60 lds r7, 0x6094 ; 0x806094 <__bss_end> + 3694: 73 94 inc r7 + 3696: 70 92 94 60 sts 0x6094, r7 ; 0x806094 <__bss_end> +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:79 memcpy(&packet.rawData[_ofst], &EP_MEM.dap_data[4], _size); - 369e: d1 2c mov r13, r1 - 36a0: a6 01 movw r20, r12 - 36a2: 62 e3 ldi r22, 0x32 ; 50 - 36a4: 73 e6 ldi r23, 0x63 ; 99 - 36a6: c7 01 movw r24, r14 - 36a8: 82 53 subi r24, 0x32 ; 50 - 36aa: 9f 49 sbci r25, 0x9F ; 159 - 36ac: 0e 94 dc 24 call 0x49b8 ; 0x49b8 -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:80 + 369a: d1 2c mov r13, r1 + 369c: a6 01 movw r20, r12 + 369e: 62 e3 ldi r22, 0x32 ; 50 + 36a0: 73 e6 ldi r23, 0x63 ; 99 + 36a2: c7 01 movw r24, r14 + 36a4: 82 53 subi r24, 0x32 ; 50 + 36a6: 9f 49 sbci r25, 0x9F ; 159 + 36a8: 0e 94 da 24 call 0x49b4 ; 0x49b4 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:80 EP_MEM.dap_data[1] = 0x01; /* EDBG_RSP_OK */ - 36b0: 81 e0 ldi r24, 0x01 ; 1 - 36b2: 80 93 2f 63 sts 0x632F, r24 ; 0x80632f -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:82 + 36ac: 81 e0 ldi r24, 0x01 ; 1 + 36ae: 80 93 2f 63 sts 0x632F, r24 ; 0x80632f +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:82 D3PRINTHEX(&EP_MEM.dap_data, _size + 4); if (_endf == _frag) { /* end of defragment */ - 36b6: 65 14 cp r6, r5 - 36b8: 11 f0 breq .+4 ; 0x36be + 36b2: 65 14 cp r6, r5 + 36b4: 11 f0 breq .+4 ; 0x36ba main(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:51 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:51 /* * Command numbers 0x80 and above are vendor extensions, EDBG Payload uses 0x80 and x81. * Additionally, 0x82 is reserved for device event notification. */ bool dap_command_check (void) { bool _result = false; - 36ba: e1 2c mov r14, r1 - 36bc: 0c c0 rjmp .+24 ; 0x36d6 + 36b6: e1 2c mov r14, r1 + 36b8: 0c c0 rjmp .+24 ; 0x36d2 dap_command_check(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:83 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:83 ++_packet_chunks; memcpy(&packet.rawData[_ofst], &EP_MEM.dap_data[4], _size); EP_MEM.dap_data[1] = 0x01; /* EDBG_RSP_OK */ D3PRINTHEX(&EP_MEM.dap_data, _size + 4); if (_endf == _frag) { /* end of defragment */ _packet_length = _ofst + _size; - 36be: ec 0c add r14, r12 - 36c0: fd 1c adc r15, r13 - 36c2: e0 92 9c 60 sts 0x609C, r14 ; 0x80609c <_packet_length> - 36c6: f0 92 9d 60 sts 0x609D, r15 ; 0x80609d <_packet_length+0x1> -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:86 + 36ba: ec 0c add r14, r12 + 36bc: fd 1c adc r15, r13 + 36be: e0 92 9c 60 sts 0x609C, r14 ; 0x80609c <_packet_length> + 36c2: f0 92 9d 60 sts 0x609D, r15 ; 0x80609d <_packet_length+0x1> +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:86 D2PRINTF(" SQ=%03X:%03X<", packet.out.sequence, _packet_length); D2PRINTHEX(&packet, _packet_length); if (_packet_chunks == _endf) { - 36ca: 67 10 cpse r6, r7 - 36cc: 9e c0 rjmp .+316 ; 0x380a -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:89 + 36c6: 67 10 cpse r6, r7 + 36c8: 9e c0 rjmp .+316 ; 0x3806 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:89 /* True if an EDBG Payload is received. */ D2PRINTF("\r\n"); _packet_endfrag = 0; - 36ce: 10 92 99 60 sts 0x6099, r1 ; 0x806099 <_packet_endfrag> + 36ca: 10 92 99 60 sts 0x6099, r1 ; 0x806099 <_packet_endfrag> main(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:90 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:90 _result = true; - 36d2: ee 24 eor r14, r14 - 36d4: e3 94 inc r14 + 36ce: ee 24 eor r14, r14 + 36d0: e3 94 inc r14 ep_dpi_listen(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:279 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:279 loop_until_bit_is_clear(USB0_INTFLAGSB, USB_RMWBUSY_bp); USB_EP_STATUS_CLR(USB_EP_RES) = ~USB_TOGGLE_bm; } void ep_dpi_listen (void) { EP_DPI.CNT = 64; - 36d6: 80 e4 ldi r24, 0x40 ; 64 - 36d8: 90 e0 ldi r25, 0x00 ; 0 - 36da: 80 93 58 64 sts 0x6458, r24 ; 0x806458 - 36de: 90 93 59 64 sts 0x6459, r25 ; 0x806459 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:280 + 36d2: 80 e4 ldi r24, 0x40 ; 64 + 36d4: 90 e0 ldi r25, 0x00 ; 0 + 36d6: 80 93 58 64 sts 0x6458, r24 ; 0x806458 + 36da: 90 93 59 64 sts 0x6459, r25 ; 0x806459 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:280 EP_DPI.MCNT = 0; - 36e2: 10 92 5c 64 sts 0x645C, r1 ; 0x80645c - 36e6: 10 92 5d 64 sts 0x645D, r1 ; 0x80645d -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:281 + 36de: 10 92 5c 64 sts 0x645C, r1 ; 0x80645c + 36e2: 10 92 5d 64 sts 0x645D, r1 ; 0x80645d +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:281 loop_until_bit_is_clear(USB0_INTFLAGSB, USB_RMWBUSY_bp); - 36ea: 80 91 0b 0c lds r24, 0x0C0B ; 0x800c0b <__TEXT_REGION_LENGTH__+0x7f0c0b> - 36ee: 82 fd sbrc r24, 2 - 36f0: fc cf rjmp .-8 ; 0x36ea -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:282 + 36e6: 80 91 0b 0c lds r24, 0x0C0B ; 0x800c0b <__TEXT_REGION_LENGTH__+0x7f0c0b> + 36ea: 82 fd sbrc r24, 2 + 36ec: fc cf rjmp .-8 ; 0x36e6 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:282 USB_EP_STATUS_CLR(USB_EP_DPI) = ~USB_TOGGLE_bm; - 36f2: 8e ef ldi r24, 0xFE ; 254 - 36f4: 80 93 46 0c sts 0x0C46, r24 ; 0x800c46 <__TEXT_REGION_LENGTH__+0x7f0c46> + 36ee: 8e ef ldi r24, 0xFE ; 254 + 36f0: 80 93 46 0c sts 0x0C46, r24 ; 0x800c46 <__TEXT_REGION_LENGTH__+0x7f0c46> ep_dpo_listen(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:286 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:286 } void ep_dpo_listen (void) { EP_DPO.CNT = 0; - 36f8: 10 92 60 64 sts 0x6460, r1 ; 0x806460 - 36fc: 10 92 61 64 sts 0x6461, r1 ; 0x806461 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:287 + 36f4: 10 92 60 64 sts 0x6460, r1 ; 0x806460 + 36f8: 10 92 61 64 sts 0x6461, r1 ; 0x806461 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:287 loop_until_bit_is_clear(USB0_INTFLAGSB, USB_RMWBUSY_bp); - 3700: 80 91 0b 0c lds r24, 0x0C0B ; 0x800c0b <__TEXT_REGION_LENGTH__+0x7f0c0b> - 3704: 82 fd sbrc r24, 2 - 3706: fc cf rjmp .-8 ; 0x3700 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usb.cpp:288 + 36fc: 80 91 0b 0c lds r24, 0x0C0B ; 0x800c0b <__TEXT_REGION_LENGTH__+0x7f0c0b> + 3700: 82 fd sbrc r24, 2 + 3702: fc cf rjmp .-8 ; 0x36fc +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usb.cpp:288 USB_EP_STATUS_CLR(USB_EP_DPO) = ~USB_TOGGLE_bm; - 3708: 8e ef ldi r24, 0xFE ; 254 - 370a: 80 93 48 0c sts 0x0C48, r24 ; 0x800c48 <__TEXT_REGION_LENGTH__+0x7f0c48> + 3704: 8e ef ldi r24, 0xFE ; 254 + 3706: 80 93 48 0c sts 0x0C48, r24 ; 0x800c48 <__TEXT_REGION_LENGTH__+0x7f0c48> main(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/main.cpp:151 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/main.cpp:151 /*** If CMSIS-DAP is not received, return to the top. ***/ if (USB::is_not_dap()) continue; /*** CMSIS-DAP and JTAG3 packet receiver ***/ if (JTAG::dap_command_check()) JTAG::jtag_scope_branch(); - 370e: ee 20 and r14, r14 - 3710: 09 f4 brne .+2 ; 0x3714 - 3712: 35 cb rjmp .-2454 ; 0x2d7e + 370a: ee 20 and r14, r14 + 370c: 09 f4 brne .+2 ; 0x3710 + 370e: 37 cb rjmp .-2450 ; 0x2d7e jtag_scope_branch(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:384 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:384 /* Processing branches depending on the scope specifier. */ /* Currently, four types of scope are known: */ void jtag_scope_branch (void) { size_t _rspsize = 0; uint8_t _scope = packet.out.scope; - 3714: f0 90 d2 60 lds r15, 0x60D2 ; 0x8060d2 -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:385 + 3710: f0 90 d2 60 lds r15, 0x60D2 ; 0x8060d2 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:385 D1PRINTF("SCOPE=%02X,C=%02X,S=%02X,L=%02X\r\n", - 3718: 80 91 d6 60 lds r24, 0x60D6 ; 0x8060d6 - 371c: 1f 92 push r1 - 371e: 8f 93 push r24 - 3720: 80 91 d5 60 lds r24, 0x60D5 ; 0x8060d5 - 3724: 1f 92 push r1 - 3726: 8f 93 push r24 - 3728: 80 91 d3 60 lds r24, 0x60D3 ; 0x8060d3 + 3714: 80 91 d6 60 lds r24, 0x60D6 ; 0x8060d6 + 3718: 1f 92 push r1 + 371a: 8f 93 push r24 + 371c: 80 91 d5 60 lds r24, 0x60D5 ; 0x8060d5 + 3720: 1f 92 push r1 + 3722: 8f 93 push r24 + 3724: 80 91 d3 60 lds r24, 0x60D3 ; 0x8060d3 + 3728: 1f 92 push r1 + 372a: 8f 93 push r24 372c: 1f 92 push r1 - 372e: 8f 93 push r24 - 3730: 1f 92 push r1 - 3732: ff 92 push r15 - 3734: 81 e6 ldi r24, 0x61 ; 97 - 3736: 96 e0 ldi r25, 0x06 ; 6 - 3738: 9f 93 push r25 - 373a: 8f 93 push r24 - 373c: 1f 93 push r17 - 373e: 0f 93 push r16 - 3740: 0e 94 2e 0a call 0x145c ; 0x145c -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:390 + 372e: ff 92 push r15 + 3730: 81 e6 ldi r24, 0x61 ; 97 + 3732: 96 e0 ldi r25, 0x06 ; 6 + 3734: 9f 93 push r25 + 3736: 8f 93 push r24 + 3738: 1f 93 push r17 + 373a: 0f 93 push r16 + 373c: 0e 94 2e 0a call 0x145c ; 0x145c +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:390 _scope, packet.out.cmd, packet.out.section, packet.out.index); if (_scope == 0x01) _rspsize = jtag_scope_general(); /* SCOPE_GENERAL */ - 3744: cd bf out 0x3d, r28 ; 61 - 3746: de bf out 0x3e, r29 ; 62 - 3748: 91 e0 ldi r25, 0x01 ; 1 - 374a: f9 12 cpse r15, r25 - 374c: 68 c1 rjmp .+720 ; 0x3a1e + 3740: cd bf out 0x3d, r28 ; 61 + 3742: de bf out 0x3e, r29 ; 62 + 3744: 91 e0 ldi r25, 0x01 ; 1 + 3746: f9 12 cpse r15, r25 + 3748: 68 c1 rjmp .+720 ; 0x3a1a jtag_scope_general(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:175 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:175 } /*** Only a subset of JTAGICE3 commands are implemented. ***/ size_t jtag_scope_general (void) { size_t _rspsize = 0; uint8_t _cmd = packet.out.cmd; - 374e: 80 91 d3 60 lds r24, 0x60D3 ; 0x8060d3 -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:176 + 374a: 80 91 d3 60 lds r24, 0x60D3 ; 0x8060d3 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:176 uint8_t _section = packet.out.section; - 3752: 60 90 d5 60 lds r6, 0x60D5 ; 0x8060d5 -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:177 + 374e: 60 90 d5 60 lds r6, 0x60D5 ; 0x8060d5 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:177 uint8_t _index = packet.out.index; - 3756: 70 90 d6 60 lds r7, 0x60D6 ; 0x8060d6 -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:178 + 3752: 70 90 d6 60 lds r7, 0x60D6 ; 0x8060d6 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:178 uint8_t _length = packet.out.length; - 375a: 50 90 d7 60 lds r5, 0x60D7 ; 0x8060d7 -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:179 + 3756: 50 90 d7 60 lds r5, 0x60D7 ; 0x8060d7 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:179 if (_cmd == 0x02) { /* CMD3_GET_PARAMETER */ - 375e: 82 30 cpi r24, 0x02 ; 2 - 3760: 09 f0 breq .+2 ; 0x3764 - 3762: 28 c1 rjmp .+592 ; 0x39b4 -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:180 + 375a: 82 30 cpi r24, 0x02 ; 2 + 375c: 09 f0 breq .+2 ; 0x3760 + 375e: 28 c1 rjmp .+592 ; 0x39b0 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:180 D1PRINTF(" GEN_GET_PARAM=%02X:%02X:%02X\r\n", _section, _index, _length); - 3764: e5 2c mov r14, r5 - 3766: f1 2c mov r15, r1 - 3768: c7 2c mov r12, r7 - 376a: d1 2c mov r13, r1 + 3760: e5 2c mov r14, r5 + 3762: f1 2c mov r15, r1 + 3764: c7 2c mov r12, r7 + 3766: d1 2c mov r13, r1 + 3768: 1f 92 push r1 + 376a: 5f 92 push r5 376c: 1f 92 push r1 - 376e: 5f 92 push r5 + 376e: 7f 92 push r7 3770: 1f 92 push r1 - 3772: 7f 92 push r7 - 3774: 1f 92 push r1 - 3776: 6f 92 push r6 - 3778: 8b e4 ldi r24, 0x4B ; 75 - 377a: 93 e0 ldi r25, 0x03 ; 3 - 377c: 9f 93 push r25 - 377e: 8f 93 push r24 - 3780: 1f 93 push r17 - 3782: 0f 93 push r16 - 3784: 0e 94 2e 0a call 0x145c ; 0x145c -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:181 + 3772: 6f 92 push r6 + 3774: 8b e4 ldi r24, 0x4B ; 75 + 3776: 93 e0 ldi r25, 0x03 ; 3 + 3778: 9f 93 push r25 + 377a: 8f 93 push r24 + 377c: 1f 93 push r17 + 377e: 0f 93 push r16 + 3780: 0e 94 2e 0a call 0x145c ; 0x145c +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:181 if (_section == 0) { /* SET_GET_CTXT_CONFIG */ - 3788: cd bf out 0x3d, r28 ; 61 - 378a: de bf out 0x3e, r29 ; 62 - 378c: 61 10 cpse r6, r1 - 378e: ab c0 rjmp .+342 ; 0x38e6 -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:183 + 3784: cd bf out 0x3d, r28 ; 61 + 3786: de bf out 0x3e, r29 ; 62 + 3788: 61 10 cpse r6, r1 + 378a: ab c0 rjmp .+342 ; 0x38e2 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:183 /* _index == 0-5 */ memcpy_P(&packet.in.data[0], &jtag_version[_index], _length); - 3790: b6 01 movw r22, r12 - 3792: 6a 5b subi r22, 0xBA ; 186 - 3794: 7c 4f sbci r23, 0xFC ; 252 - 3796: a7 01 movw r20, r14 - 3798: 85 ed ldi r24, 0xD5 ; 213 - 379a: 90 e6 ldi r25, 0x60 ; 96 - 379c: ea d5 rcall .+3028 ; 0x4372 -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:184 + 378c: b6 01 movw r22, r12 + 378e: 6a 5b subi r22, 0xBA ; 186 + 3790: 7c 4f sbci r23, 0xFC ; 252 + 3792: a7 01 movw r20, r14 + 3794: 85 ed ldi r24, 0xD5 ; 213 + 3796: 90 e6 ldi r25, 0x60 ; 96 + 3798: ea d5 rcall .+3028 ; 0x436e +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:184 D1PRINTF(" VESRION="); - 379e: 8c e3 ldi r24, 0x3C ; 60 - 37a0: 93 e0 ldi r25, 0x03 ; 3 - 37a2: 9f 93 push r25 - 37a4: 8f 93 push r24 - 37a6: 1f 93 push r17 - 37a8: 0f 93 push r16 - 37aa: 0e 94 2e 0a call 0x145c ; 0x145c -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:185 + 379a: 8c e3 ldi r24, 0x3C ; 60 + 379c: 93 e0 ldi r25, 0x03 ; 3 + 379e: 9f 93 push r25 + 37a0: 8f 93 push r24 + 37a2: 1f 93 push r17 + 37a4: 0f 93 push r16 + 37a6: 0e 94 2e 0a call 0x145c ; 0x145c +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:185 D1PRINTHEX(&packet.in.data[0], _length); - 37ae: b7 01 movw r22, r14 - 37b0: 85 ed ldi r24, 0xD5 ; 213 - 37b2: 90 e6 ldi r25, 0x60 ; 96 - 37b4: 0e 94 bc 09 call 0x1378 ; 0x1378 - 37b8: 0e 94 22 0a call 0x1444 ; 0x1444 + 37aa: b7 01 movw r22, r14 + 37ac: 85 ed ldi r24, 0xD5 ; 213 + 37ae: 90 e6 ldi r25, 0x60 ; 96 + 37b0: 0e 94 bc 09 call 0x1378 ; 0x1378 + 37b4: 0e 94 22 0a call 0x1444 ; 0x1444 + 37b8: 0f 90 pop r0 + 37ba: 0f 90 pop r0 37bc: 0f 90 pop r0 37be: 0f 90 pop r0 - 37c0: 0f 90 pop r0 - 37c2: 0f 90 pop r0 -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:200 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:200 /* Called with PowerDebugger HAS_VTARG_ADJ */ D1PRINTF(" PHYSICAL=%02X:%02X\r\n", _index, _length); memcpy_P(&packet.in.data[0], &jtag_physical[_index & 7], _length); } } packet.in.res = 0x184; /* RSP3_DATA */ - 37c4: 84 e8 ldi r24, 0x84 ; 132 - 37c6: 91 e0 ldi r25, 0x01 ; 1 - 37c8: 80 93 d3 60 sts 0x60D3, r24 ; 0x8060d3 - 37cc: 90 93 d4 60 sts 0x60D4, r25 ; 0x8060d4 -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:201 + 37c0: 84 e8 ldi r24, 0x84 ; 132 + 37c2: 91 e0 ldi r25, 0x01 ; 1 + 37c4: 80 93 d3 60 sts 0x60D3, r24 ; 0x8060d3 + 37c8: 90 93 d4 60 sts 0x60D4, r25 ; 0x8060d4 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:201 _rspsize = _length + 1; - 37d0: 3f ef ldi r19, 0xFF ; 255 - 37d2: e3 1a sub r14, r19 - 37d4: f3 0a sbc r15, r19 + 37cc: 3f ef ldi r19, 0xFF ; 255 + 37ce: e3 1a sub r14, r19 + 37d0: f3 0a sbc r15, r19 complete_jtag_transactions(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:163 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:163 return _result; /* True if an EDBG Payload is received. */ } /*** Prepare for EDBG payload request from device to host ***/ void complete_jtag_transactions (size_t _length) { _packet_length = _length + 6; /* TOKEN + SEQ[2] + EOT + PAD */ - 37d6: 97 01 movw r18, r14 - 37d8: 2a 5f subi r18, 0xFA ; 250 - 37da: 3f 4f sbci r19, 0xFF ; 255 - 37dc: 20 93 9c 60 sts 0x609C, r18 ; 0x80609c <_packet_length> - 37e0: 30 93 9d 60 sts 0x609D, r19 ; 0x80609d <_packet_length+0x1> -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:164 + 37d2: 97 01 movw r18, r14 + 37d4: 2a 5f subi r18, 0xFA ; 250 + 37d6: 3f 4f sbci r19, 0xFF ; 255 + 37d8: 20 93 9c 60 sts 0x609C, r18 ; 0x80609c <_packet_length> + 37dc: 30 93 9d 60 sts 0x609D, r19 ; 0x80609d <_packet_length+0x1> +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:164 _packet_fragment = 0; - 37e4: 10 92 9a 60 sts 0x609A, r1 ; 0x80609a <_packet_fragment> -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:165 + 37e0: 10 92 9a 60 sts 0x609A, r1 ; 0x80609a <_packet_fragment> +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:165 _packet_endfrag = (_length + 65) / 60; /* 1 to 15 */ - 37e8: c7 01 movw r24, r14 - 37ea: 8f 5b subi r24, 0xBF ; 191 - 37ec: 9f 4f sbci r25, 0xFF ; 255 - 37ee: 6c e3 ldi r22, 0x3C ; 60 - 37f0: 70 e0 ldi r23, 0x00 ; 0 - 37f2: 0e 94 70 24 call 0x48e0 ; 0x48e0 <__udivmodhi4> - 37f6: 60 93 99 60 sts 0x6099, r22 ; 0x806099 <_packet_endfrag> -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:166 + 37e4: c7 01 movw r24, r14 + 37e6: 8f 5b subi r24, 0xBF ; 191 + 37e8: 9f 4f sbci r25, 0xFF ; 255 + 37ea: 6c e3 ldi r22, 0x3C ; 60 + 37ec: 70 e0 ldi r23, 0x00 ; 0 + 37ee: 0e 94 6e 24 call 0x48dc ; 0x48dc <__udivmodhi4> + 37f2: 60 93 99 60 sts 0x6099, r22 ; 0x806099 <_packet_endfrag> +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:166 packet.in.token = 0x0E; /* TOKEN */ - 37fa: 8e e0 ldi r24, 0x0E ; 14 - 37fc: 80 93 cf 60 sts 0x60CF, r24 ; 0x8060cf -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:167 + 37f6: 8e e0 ldi r24, 0x0E ; 14 + 37f8: 80 93 cf 60 sts 0x60CF, r24 ; 0x8060cf +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:167 packet.rawData[_packet_length] = 0; /* EOT */ - 3800: 22 53 subi r18, 0x32 ; 50 - 3802: 3f 49 sbci r19, 0x9F ; 159 - 3804: f9 01 movw r30, r18 - 3806: 10 82 st Z, r1 - 3808: ba ca rjmp .-2700 ; 0x2d7e + 37fc: 22 53 subi r18, 0x32 ; 50 + 37fe: 3f 49 sbci r19, 0x9F ; 159 + 3800: f9 01 movw r30, r18 + 3802: 10 82 st Z, r1 + 3804: bc ca rjmp .-2696 ; 0x2d7e dap_command_check(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:94 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:94 _packet_endfrag = 0; _result = true; } else { /* A missing chunk is detected, so an error is returned. */ D1PRINTF("\r\n"); - 380a: 8f eb ldi r24, 0xBF ; 191 - 380c: 92 e0 ldi r25, 0x02 ; 2 - 380e: cd cb rjmp .-2150 ; 0x2faa -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:100 + 3806: 8f eb ldi r24, 0xBF ; 191 + 3808: 92 e0 ldi r25, 0x02 ; 2 + 380a: cf cb rjmp .-2146 ; 0x2faa +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:100 EP_MEM.dap_data[1] = 0x00; /* EDBG_RSP_FAIL */ } } } } else if (_cmd == 0x81) { /* DAP_EDBG_VENDOR_AVR_RSP */ - 3810: 91 38 cpi r25, 0x81 ; 129 - 3812: e9 f5 brne .+122 ; 0x388e -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:101 + 380c: 91 38 cpi r25, 0x81 ; 129 + 380e: e9 f5 brne .+122 ; 0x388a +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:101 EP_MEM.dap_data[2] = 0; /* Always zero */ - 3814: 10 92 30 63 sts 0x6330, r1 ; 0x806330 -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:102 + 3810: 10 92 30 63 sts 0x6330, r1 ; 0x806330 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:102 if (_packet_endfrag == 0) { - 3818: 90 91 99 60 lds r25, 0x6099 ; 0x806099 <_packet_endfrag> - 381c: 91 11 cpse r25, r1 - 381e: 0d c0 rjmp .+26 ; 0x383a -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:103 + 3814: 90 91 99 60 lds r25, 0x6099 ; 0x806099 <_packet_endfrag> + 3818: 91 11 cpse r25, r1 + 381a: 0d c0 rjmp .+26 ; 0x3836 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:103 D1PRINTF("\r\n"); - 3820: 80 eb ldi r24, 0xB0 ; 176 - 3822: 92 e0 ldi r25, 0x02 ; 2 - 3824: 9f 93 push r25 - 3826: 8f 93 push r24 - 3828: 1f 93 push r17 - 382a: 0f 93 push r16 - 382c: 0e 94 2e 0a call 0x145c ; 0x145c -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:104 + 381c: 80 eb ldi r24, 0xB0 ; 176 + 381e: 92 e0 ldi r25, 0x02 ; 2 + 3820: 9f 93 push r25 + 3822: 8f 93 push r24 + 3824: 1f 93 push r17 + 3826: 0f 93 push r16 + 3828: 0e 94 2e 0a call 0x145c ; 0x145c +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:104 EP_MEM.dap_data[1] = 0; - 3830: 10 92 2f 63 sts 0x632F, r1 ; 0x80632f -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:105 + 382c: 10 92 2f 63 sts 0x632F, r1 ; 0x80632f +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:105 EP_MEM.dap_data[3] = 0; - 3834: 10 92 31 63 sts 0x6331, r1 ; 0x806331 - 3838: c0 cb rjmp .-2176 ; 0x2fba -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:108 + 3830: 10 92 31 63 sts 0x6331, r1 ; 0x806331 + 3834: c2 cb rjmp .-2172 ; 0x2fba +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:108 } else { memcpy(&EP_MEM.dap_data[4], &packet.in.token + (_packet_fragment * 60), 60); - 383a: 80 91 9a 60 lds r24, 0x609A ; 0x80609a <_packet_fragment> - 383e: 2c e3 ldi r18, 0x3C ; 60 - 3840: 82 9f mul r24, r18 - 3842: f0 01 movw r30, r0 - 3844: 11 24 eor r1, r1 - 3846: e1 53 subi r30, 0x31 ; 49 - 3848: ff 49 sbci r31, 0x9F ; 159 - 384a: a2 e3 ldi r26, 0x32 ; 50 - 384c: b3 e6 ldi r27, 0x63 ; 99 - 384e: 01 90 ld r0, Z+ - 3850: 0d 92 st X+, r0 - 3852: 2a 95 dec r18 - 3854: e1 f7 brne .-8 ; 0x384e -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:109 + 3836: 80 91 9a 60 lds r24, 0x609A ; 0x80609a <_packet_fragment> + 383a: 2c e3 ldi r18, 0x3C ; 60 + 383c: 82 9f mul r24, r18 + 383e: f0 01 movw r30, r0 + 3840: 11 24 eor r1, r1 + 3842: e1 53 subi r30, 0x31 ; 49 + 3844: ff 49 sbci r31, 0x9F ; 159 + 3846: a2 e3 ldi r26, 0x32 ; 50 + 3848: b3 e6 ldi r27, 0x63 ; 99 + 384a: 01 90 ld r0, Z+ + 384c: 0d 92 st X+, r0 + 384e: 2a 95 dec r18 + 3850: e1 f7 brne .-8 ; 0x384a +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:109 EP_MEM.dap_data[1] = ((++_packet_fragment) << 4) | _packet_endfrag; - 3856: 8f 5f subi r24, 0xFF ; 255 - 3858: 80 93 9a 60 sts 0x609A, r24 ; 0x80609a <_packet_fragment> - 385c: 40 e1 ldi r20, 0x10 ; 16 - 385e: 84 9f mul r24, r20 - 3860: 90 01 movw r18, r0 - 3862: 11 24 eor r1, r1 - 3864: 29 2b or r18, r25 - 3866: 20 93 2f 63 sts 0x632F, r18 ; 0x80632f - 386a: 20 91 9c 60 lds r18, 0x609C ; 0x80609c <_packet_length> - 386e: 30 91 9d 60 lds r19, 0x609D ; 0x80609d <_packet_length+0x1> -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:110 + 3852: 8f 5f subi r24, 0xFF ; 255 + 3854: 80 93 9a 60 sts 0x609A, r24 ; 0x80609a <_packet_fragment> + 3858: 40 e1 ldi r20, 0x10 ; 16 + 385a: 84 9f mul r24, r20 + 385c: 90 01 movw r18, r0 + 385e: 11 24 eor r1, r1 + 3860: 29 2b or r18, r25 + 3862: 20 93 2f 63 sts 0x632F, r18 ; 0x80632f + 3866: 20 91 9c 60 lds r18, 0x609C ; 0x80609c <_packet_length> + 386a: 30 91 9d 60 lds r19, 0x609D ; 0x80609d <_packet_length+0x1> +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:110 EP_MEM.dap_data[3] = _packet_fragment == _packet_endfrag ? _packet_length : 60; - 3872: 98 17 cp r25, r24 - 3874: 51 f0 breq .+20 ; 0x388a - 3876: 8c e3 ldi r24, 0x3C ; 60 - 3878: 80 93 31 63 sts 0x6331, r24 ; 0x806331 -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:111 + 386e: 98 17 cp r25, r24 + 3870: 51 f0 breq .+20 ; 0x3886 + 3872: 8c e3 ldi r24, 0x3C ; 60 + 3874: 80 93 31 63 sts 0x6331, r24 ; 0x806331 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:111 _packet_length -= 60; - 387c: 2c 53 subi r18, 0x3C ; 60 - 387e: 31 09 sbc r19, r1 - 3880: 20 93 9c 60 sts 0x609C, r18 ; 0x80609c <_packet_length> - 3884: 30 93 9d 60 sts 0x609D, r19 ; 0x80609d <_packet_length+0x1> - 3888: 18 cf rjmp .-464 ; 0x36ba -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:110 + 3878: 2c 53 subi r18, 0x3C ; 60 + 387a: 31 09 sbc r19, r1 + 387c: 20 93 9c 60 sts 0x609C, r18 ; 0x80609c <_packet_length> + 3880: 30 93 9d 60 sts 0x609D, r19 ; 0x80609d <_packet_length+0x1> + 3884: 18 cf rjmp .-464 ; 0x36b6 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:110 EP_MEM.dap_data[3] = 0; } else { memcpy(&EP_MEM.dap_data[4], &packet.in.token + (_packet_fragment * 60), 60); EP_MEM.dap_data[1] = ((++_packet_fragment) << 4) | _packet_endfrag; EP_MEM.dap_data[3] = _packet_fragment == _packet_endfrag ? _packet_length : 60; - 388a: 82 2f mov r24, r18 - 388c: f5 cf rjmp .-22 ; 0x3878 -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:118 + 3886: 82 2f mov r24, r18 + 3888: f5 cf rjmp .-22 ; 0x3874 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:118 D3PRINTHEX(&EP_MEM.dap_data, EP_MEM.dap_data[3] + 4); } } /*** DAP Standard ***/ else if (_cmd == 0x00) { /* DAP_CMD_INFO */ - 388e: 91 11 cpse r25, r1 - 3890: 1c c0 rjmp .+56 ; 0x38ca -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:119 + 388a: 91 11 cpse r25, r1 + 388c: 1c c0 rjmp .+56 ; 0x38c6 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:119 if (_sub == 0xFF /* DAP_INFO_PACKET_SIZE */ - 3892: 8f 3f cpi r24, 0xFF ; 255 - 3894: 21 f0 breq .+8 ; 0x389e -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:120 + 388e: 8f 3f cpi r24, 0xFF ; 255 + 3890: 21 f0 breq .+8 ; 0x389a +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:120 || _sub == 0xFB /* UART Receive Buffer Size */ - 3896: 95 e0 ldi r25, 0x05 ; 5 - 3898: 98 0f add r25, r24 - 389a: 92 30 cpi r25, 0x02 ; 2 - 389c: 48 f4 brcc .+18 ; 0x38b0 -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:122 + 3892: 95 e0 ldi r25, 0x05 ; 5 + 3894: 98 0f add r25, r24 + 3896: 92 30 cpi r25, 0x02 ; 2 + 3898: 48 f4 brcc .+18 ; 0x38ac +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:122 || _sub == 0xFC) { /* UART Transmit Buffer Size */ EP_MEM.dap_data[1] = 0x02; /* length=2 */ - 389e: 82 e0 ldi r24, 0x02 ; 2 - 38a0: 80 93 2f 63 sts 0x632F, r24 ; 0x80632f -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:123 + 389a: 82 e0 ldi r24, 0x02 ; 2 + 389c: 80 93 2f 63 sts 0x632F, r24 ; 0x80632f +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:123 EP_MEM.dap_data[2] = 0x40; /* MaxPacketSize = 64 */ - 38a4: 80 e4 ldi r24, 0x40 ; 64 - 38a6: 80 93 30 63 sts 0x6330, r24 ; 0x806330 -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:124 + 38a0: 80 e4 ldi r24, 0x40 ; 64 + 38a2: 80 93 30 63 sts 0x6330, r24 ; 0x806330 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:124 EP_MEM.dap_data[3] = 0x00; - 38aa: 10 92 31 63 sts 0x6331, r1 ; 0x806331 - 38ae: 05 cf rjmp .-502 ; 0x36ba -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:128 + 38a6: 10 92 31 63 sts 0x6331, r1 ; 0x806331 + 38aa: 05 cf rjmp .-502 ; 0x36b6 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:128 D3PRINTF(" PI="); D3PRINTHEX(&EP_MEM.dap_data, 4); } else if (_sub == 0xF1) { /* DAP_INFO_Capabilities */ - 38b0: 81 3f cpi r24, 0xF1 ; 241 - 38b2: 09 f0 breq .+2 ; 0x38b6 - 38b4: 02 cf rjmp .-508 ; 0x36ba -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:129 + 38ac: 81 3f cpi r24, 0xF1 ; 241 + 38ae: 09 f0 breq .+2 ; 0x38b2 + 38b0: 02 cf rjmp .-508 ; 0x36b6 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:129 EP_MEM.dap_data[1] = 0x02; /* length=2 */ - 38b6: 82 e0 ldi r24, 0x02 ; 2 - 38b8: 80 93 2f 63 sts 0x632F, r24 ; 0x80632f -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:130 + 38b2: 82 e0 ldi r24, 0x02 ; 2 + 38b4: 80 93 2f 63 sts 0x632F, r24 ; 0x80632f +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:130 EP_MEM.dap_data[2] = 0x80; /* 7:UART Communication Port */ - 38bc: 80 e8 ldi r24, 0x80 ; 128 - 38be: 80 93 30 63 sts 0x6330, r24 ; 0x806330 -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:131 + 38b8: 80 e8 ldi r24, 0x80 ; 128 + 38ba: 80 93 30 63 sts 0x6330, r24 ; 0x806330 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:131 EP_MEM.dap_data[3] = 0x01; /* 1:USB COM Port */ - 38c2: 81 e0 ldi r24, 0x01 ; 1 - 38c4: 80 93 31 63 sts 0x6331, r24 ; 0x806331 - 38c8: f8 ce rjmp .-528 ; 0x36ba -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:136 + 38be: 81 e0 ldi r24, 0x01 ; 1 + 38c0: 80 93 31 63 sts 0x6331, r24 ; 0x806331 + 38c4: f8 ce rjmp .-528 ; 0x36b6 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:136 D3PRINTF(" PI="); D3PRINTHEX(&EP_MEM.dap_data, 4); } } else if (_cmd == 0x02) { /* DAP_CMD_CONNECT */ - 38ca: 92 30 cpi r25, 0x02 ; 2 - 38cc: 09 f4 brne .+2 ; 0x38d0 - 38ce: f5 ce rjmp .-534 ; 0x36ba -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:142 + 38c6: 92 30 cpi r25, 0x02 ; 2 + 38c8: 09 f4 brne .+2 ; 0x38cc + 38ca: f5 ce rjmp .-534 ; 0x36b6 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:142 /* EP_MEM.dap_data[1] == CONN_TYPE */ /* Here, the response is returned without processing. */ D3PRINTF(" PI="); D3PRINTHEX(&EP_MEM.dap_data, 2); } else if (_cmd == 0x01 /* DAP_CMD_HOSTSTATUS */ - 38d0: 91 30 cpi r25, 0x01 ; 1 - 38d2: 31 f4 brne .+12 ; 0x38e0 -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:143 + 38cc: 91 30 cpi r25, 0x01 ; 1 + 38ce: 31 f4 brne .+12 ; 0x38dc +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:143 && _sub == 0x00) { /* DAP_LED_CONNECT */ - 38d4: 88 23 and r24, r24 - 38d6: 09 f4 brne .+2 ; 0x38da - 38d8: f0 ce rjmp .-544 ; 0x36ba -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:155 + 38d0: 88 23 and r24, r24 + 38d2: 09 f4 brne .+2 ; 0x38d6 + 38d4: f0 ce rjmp .-544 ; 0x36b6 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:155 /* Here, the response is returned without processing. */ D3PRINTF(" PI="); D3PRINTHEX(&EP_MEM.dap_data, 2); } else { EP_MEM.dap_data[1] = 0x00; /* other 0 length result */ - 38da: 10 92 2f 63 sts 0x632F, r1 ; 0x80632f - 38de: ed ce rjmp .-550 ; 0x36ba -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:149 + 38d6: 10 92 2f 63 sts 0x632F, r1 ; 0x80632f + 38da: ed ce rjmp .-550 ; 0x36b6 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:149 /* EP_MEM.dap_data[2] == LED_ON/OFF */ /* Here, the response is returned without processing. */ D3PRINTF(" PI="); D3PRINTHEX(&EP_MEM.dap_data, 3); } else if (_cmd == 0x03) { /* DAP_CMD_DISCONNECT */ - 38e0: 93 30 cpi r25, 0x03 ; 3 - 38e2: d9 f7 brne .-10 ; 0x38da - 38e4: ea ce rjmp .-556 ; 0x36ba + 38dc: 93 30 cpi r25, 0x03 ; 3 + 38de: d9 f7 brne .-10 ; 0x38d6 + 38e0: ea ce rjmp .-556 ; 0x36b6 jtag_scope_general(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:187 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:187 /* _index == 0-5 */ memcpy_P(&packet.in.data[0], &jtag_version[_index], _length); D1PRINTF(" VESRION="); D1PRINTHEX(&packet.in.data[0], _length); } else if (_section == 1) { /* SET_GET_CTXT_PHYSICAL */ - 38e6: f1 e0 ldi r31, 0x01 ; 1 - 38e8: 6f 12 cpse r6, r31 - 38ea: 6c cf rjmp .-296 ; 0x37c4 -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:188 + 38e2: f1 e0 ldi r31, 0x01 ; 1 + 38e4: 6f 12 cpse r6, r31 + 38e6: 6c cf rjmp .-296 ; 0x37c0 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:188 if (_index == 0 || _index == 0x20) { /* PARM3_VTARGET */ - 38ec: 87 2d mov r24, r7 - 38ee: 8f 7d andi r24, 0xDF ; 223 - 38f0: 09 f0 breq .+2 ; 0x38f4 - 38f2: 48 c0 rjmp .+144 ; 0x3984 + 38e8: 87 2d mov r24, r7 + 38ea: 8f 7d andi r24, 0xDF ; 223 + 38ec: 09 f0 breq .+2 ; 0x38f0 + 38ee: 48 c0 rjmp .+144 ; 0x3980 get_vdd(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:333 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:333 * A delay of 1250us is required for the voltage to stabilize. * The result is 10-bit, so multiply by 10.0 to convert to 1V * 0.0001. * The ADC0 peripheral is operational only during voltage measurements. */ uint16_t get_vdd (void) { ADC0_INTFLAGS = ~0; - 38f4: 8f ef ldi r24, 0xFF ; 255 - 38f6: 80 93 07 06 sts 0x0607, r24 ; 0x800607 <__TEXT_REGION_LENGTH__+0x7f0607> -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:334 + 38f0: 8f ef ldi r24, 0xFF ; 255 + 38f2: 80 93 07 06 sts 0x0607, r24 ; 0x800607 <__TEXT_REGION_LENGTH__+0x7f0607> +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:334 ADC0_SAMPLE = 0; - 38fa: 10 92 0e 06 sts 0x060E, r1 ; 0x80060e <__TEXT_REGION_LENGTH__+0x7f060e> - 38fe: 10 92 0f 06 sts 0x060F, r1 ; 0x80060f <__TEXT_REGION_LENGTH__+0x7f060f> -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:335 + 38f6: 10 92 0e 06 sts 0x060E, r1 ; 0x80060e <__TEXT_REGION_LENGTH__+0x7f060e> + 38fa: 10 92 0f 06 sts 0x060F, r1 ; 0x80060f <__TEXT_REGION_LENGTH__+0x7f060f> +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:335 ADC0_CTRLA = ADC_ENABLE_bm; - 3902: 60 92 00 06 sts 0x0600, r6 ; 0x800600 <__TEXT_REGION_LENGTH__+0x7f0600> -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:336 + 38fe: 60 92 00 06 sts 0x0600, r6 ; 0x800600 <__TEXT_REGION_LENGTH__+0x7f0600> +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:336 ADC0_CTRLB = ADC_PRESC_DIV4_gc; - 3906: 60 92 01 06 sts 0x0601, r6 ; 0x800601 <__TEXT_REGION_LENGTH__+0x7f0601> -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:337 + 3902: 60 92 01 06 sts 0x0601, r6 ; 0x800601 <__TEXT_REGION_LENGTH__+0x7f0601> +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:337 ADC0_CTRLC = ADC_REFSEL_1V024_gc; - 390a: 84 e0 ldi r24, 0x04 ; 4 - 390c: 80 93 02 06 sts 0x0602, r24 ; 0x800602 <__TEXT_REGION_LENGTH__+0x7f0602> -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:338 + 3906: 84 e0 ldi r24, 0x04 ; 4 + 3908: 80 93 02 06 sts 0x0602, r24 ; 0x800602 <__TEXT_REGION_LENGTH__+0x7f0602> +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:338 ADC0_CTRLE = 250; /* (SAMPDUR + 0.5) * fCLK_ADC sample duration */ - 3910: 8a ef ldi r24, 0xFA ; 250 - 3912: 80 93 04 06 sts 0x0604, r24 ; 0x800604 <__TEXT_REGION_LENGTH__+0x7f0604> -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:339 + 390c: 8a ef ldi r24, 0xFA ; 250 + 390e: 80 93 04 06 sts 0x0604, r24 ; 0x800604 <__TEXT_REGION_LENGTH__+0x7f0604> +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:339 ADC0_MUXPOS = ADC_MUXPOS_VDDDIV10_gc; /* ADC channel VDD * 0.1 */ - 3916: 84 e4 ldi r24, 0x44 ; 68 - 3918: 80 93 0b 06 sts 0x060B, r24 ; 0x80060b <__TEXT_REGION_LENGTH__+0x7f060b> -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:340 + 3912: 84 e4 ldi r24, 0x44 ; 68 + 3914: 80 93 0b 06 sts 0x060B, r24 ; 0x80060b <__TEXT_REGION_LENGTH__+0x7f060b> +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:340 ADC0_COMMAND = ADC_MODE_SINGLE_10BIT_gc | ADC_START_IMMEDIATE_gc; - 391c: 81 e1 ldi r24, 0x11 ; 17 - 391e: 80 93 0a 06 sts 0x060A, r24 ; 0x80060a <__TEXT_REGION_LENGTH__+0x7f060a> -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:341 + 3918: 81 e1 ldi r24, 0x11 ; 17 + 391a: 80 93 0a 06 sts 0x060A, r24 ; 0x80060a <__TEXT_REGION_LENGTH__+0x7f060a> +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:341 loop_until_bit_is_set(ADC0_INTFLAGS, ADC_SAMPRDY_bp); - 3922: 80 91 07 06 lds r24, 0x0607 ; 0x800607 <__TEXT_REGION_LENGTH__+0x7f0607> - 3926: 81 ff sbrs r24, 1 - 3928: fc cf rjmp .-8 ; 0x3922 -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:342 + 391e: 80 91 07 06 lds r24, 0x0607 ; 0x800607 <__TEXT_REGION_LENGTH__+0x7f0607> + 3922: 81 ff sbrs r24, 1 + 3924: fc cf rjmp .-8 ; 0x391e +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:342 uint16_t _adc_reading = ADC0_SAMPLE; - 392a: 20 91 0e 06 lds r18, 0x060E ; 0x80060e <__TEXT_REGION_LENGTH__+0x7f060e> - 392e: 30 91 0f 06 lds r19, 0x060F ; 0x80060f <__TEXT_REGION_LENGTH__+0x7f060f> -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:343 + 3926: 20 91 0e 06 lds r18, 0x060E ; 0x80060e <__TEXT_REGION_LENGTH__+0x7f060e> + 392a: 30 91 0f 06 lds r19, 0x060F ; 0x80060f <__TEXT_REGION_LENGTH__+0x7f060f> +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:343 _adc_reading += (_adc_reading << 3) + _adc_reading; - 3932: c9 01 movw r24, r18 - 3934: 63 e0 ldi r22, 0x03 ; 3 - 3936: 88 0f add r24, r24 - 3938: 99 1f adc r25, r25 - 393a: 6a 95 dec r22 - 393c: e1 f7 brne .-8 ; 0x3936 - 393e: 22 0f add r18, r18 - 3940: 33 1f adc r19, r19 - 3942: 82 0f add r24, r18 - 3944: 93 1f adc r25, r19 -/Users/askn/Collaborator/UPDI4AVR-USB/src/sys.cpp:344 + 392e: c9 01 movw r24, r18 + 3930: 63 e0 ldi r22, 0x03 ; 3 + 3932: 88 0f add r24, r24 + 3934: 99 1f adc r25, r25 + 3936: 6a 95 dec r22 + 3938: e1 f7 brne .-8 ; 0x3932 + 393a: 22 0f add r18, r18 + 393c: 33 1f adc r19, r19 + 393e: 82 0f add r24, r18 + 3940: 93 1f adc r25, r19 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/sys.cpp:344 ADC0_CTRLA = 0; - 3946: 10 92 00 06 sts 0x0600, r1 ; 0x800600 <__TEXT_REGION_LENGTH__+0x7f0600> + 3942: 10 92 00 06 sts 0x0600, r1 ; 0x800600 <__TEXT_REGION_LENGTH__+0x7f0600> jtag_scope_general(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:190 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:190 /* Called with `-xvtarget` HAS_VTARG_READ */ _vtarget = SYS::get_vdd(); - 394a: 80 93 95 60 sts 0x6095, r24 ; 0x806095 <_vtarget> - 394e: 90 93 96 60 sts 0x6096, r25 ; 0x806096 <_vtarget+0x1> -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:191 + 3946: 80 93 95 60 sts 0x6095, r24 ; 0x806095 <_vtarget> + 394a: 90 93 96 60 sts 0x6096, r25 ; 0x806096 <_vtarget+0x1> +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:191 D1PRINTF(" VTARGET=%d\r\n", _vtarget); - 3952: 9f 93 push r25 - 3954: 8f 93 push r24 - 3956: 8e e2 ldi r24, 0x2E ; 46 - 3958: 93 e0 ldi r25, 0x03 ; 3 - 395a: 9f 93 push r25 - 395c: 8f 93 push r24 - 395e: 1f 93 push r17 - 3960: 0f 93 push r16 - 3962: 0e 94 2e 0a call 0x145c ; 0x145c -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:192 + 394e: 9f 93 push r25 + 3950: 8f 93 push r24 + 3952: 8e e2 ldi r24, 0x2E ; 46 + 3954: 93 e0 ldi r25, 0x03 ; 3 + 3956: 9f 93 push r25 + 3958: 8f 93 push r24 + 395a: 1f 93 push r17 + 395c: 0f 93 push r16 + 395e: 0e 94 2e 0a call 0x145c ; 0x145c +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:192 packet.in.wValue = _vtarget; - 3966: 80 91 95 60 lds r24, 0x6095 ; 0x806095 <_vtarget> - 396a: 90 91 96 60 lds r25, 0x6096 ; 0x806096 <_vtarget+0x1> - 396e: 80 93 d5 60 sts 0x60D5, r24 ; 0x8060d5 - 3972: 90 93 d6 60 sts 0x60D6, r25 ; 0x8060d6 + 3962: 80 91 95 60 lds r24, 0x6095 ; 0x806095 <_vtarget> + 3966: 90 91 96 60 lds r25, 0x6096 ; 0x806096 <_vtarget+0x1> + 396a: 80 93 d5 60 sts 0x60D5, r24 ; 0x8060d5 + 396e: 90 93 d6 60 sts 0x60D6, r25 ; 0x8060d6 + 3972: 0f 90 pop r0 + 3974: 0f 90 pop r0 3976: 0f 90 pop r0 3978: 0f 90 pop r0 397a: 0f 90 pop r0 397c: 0f 90 pop r0 - 397e: 0f 90 pop r0 - 3980: 0f 90 pop r0 - 3982: 20 cf rjmp .-448 ; 0x37c4 -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:196 + 397e: 20 cf rjmp .-448 ; 0x37c0 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:196 } else { /* PARM3_ANALOG_XXXX */ /* Called with PowerDebugger HAS_VTARG_ADJ */ D1PRINTF(" PHYSICAL=%02X:%02X\r\n", _index, _length); + 3980: 1f 92 push r1 + 3982: 5f 92 push r5 3984: 1f 92 push r1 - 3986: 5f 92 push r5 - 3988: 1f 92 push r1 - 398a: 7f 92 push r7 - 398c: 88 e1 ldi r24, 0x18 ; 24 - 398e: 93 e0 ldi r25, 0x03 ; 3 - 3990: 9f 93 push r25 - 3992: 8f 93 push r24 - 3994: 1f 93 push r17 - 3996: 0f 93 push r16 - 3998: 0e 94 2e 0a call 0x145c ; 0x145c -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:197 + 3986: 7f 92 push r7 + 3988: 88 e1 ldi r24, 0x18 ; 24 + 398a: 93 e0 ldi r25, 0x03 ; 3 + 398c: 9f 93 push r25 + 398e: 8f 93 push r24 + 3990: 1f 93 push r17 + 3992: 0f 93 push r16 + 3994: 0e 94 2e 0a call 0x145c ; 0x145c +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:197 memcpy_P(&packet.in.data[0], &jtag_physical[_index & 7], _length); - 399c: 67 2d mov r22, r7 - 399e: 67 70 andi r22, 0x07 ; 7 - 39a0: 70 e0 ldi r23, 0x00 ; 0 - 39a2: 60 5f subi r22, 0xF0 ; 240 - 39a4: 7c 4f sbci r23, 0xFC ; 252 - 39a6: a7 01 movw r20, r14 - 39a8: 85 ed ldi r24, 0xD5 ; 213 - 39aa: 90 e6 ldi r25, 0x60 ; 96 - 39ac: e2 d4 rcall .+2500 ; 0x4372 - 39ae: cd bf out 0x3d, r28 ; 61 - 39b0: de bf out 0x3e, r29 ; 62 - 39b2: 08 cf rjmp .-496 ; 0x37c4 -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:203 + 3998: 67 2d mov r22, r7 + 399a: 67 70 andi r22, 0x07 ; 7 + 399c: 70 e0 ldi r23, 0x00 ; 0 + 399e: 60 5f subi r22, 0xF0 ; 240 + 39a0: 7c 4f sbci r23, 0xFC ; 252 + 39a2: a7 01 movw r20, r14 + 39a4: 85 ed ldi r24, 0xD5 ; 213 + 39a6: 90 e6 ldi r25, 0x60 ; 96 + 39a8: e2 d4 rcall .+2500 ; 0x436e + 39aa: cd bf out 0x3d, r28 ; 61 + 39ac: de bf out 0x3e, r29 ; 62 + 39ae: 08 cf rjmp .-496 ; 0x37c0 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:203 } } packet.in.res = 0x184; /* RSP3_DATA */ _rspsize = _length + 1; } else if (_cmd == 0x10) { /* CMD3_SIGN_ON */ - 39b4: 80 31 cpi r24, 0x10 ; 16 - 39b6: b9 f4 brne .+46 ; 0x39e6 -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:204 + 39b0: 80 31 cpi r24, 0x10 ; 16 + 39b2: b9 f4 brne .+46 ; 0x39e2 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:204 D1PRINTF(" GEN_SIGN_ON\r\n"); - 39b8: 81 e0 ldi r24, 0x01 ; 1 - 39ba: 93 e0 ldi r25, 0x03 ; 3 - 39bc: 9f 93 push r25 - 39be: 8f 93 push r24 - 39c0: 1f 93 push r17 - 39c2: 0f 93 push r16 - 39c4: 0e 94 2e 0a call 0x145c ; 0x145c -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:207 + 39b4: 81 e0 ldi r24, 0x01 ; 1 + 39b6: 93 e0 ldi r25, 0x03 ; 3 + 39b8: 9f 93 push r25 + 39ba: 8f 93 push r24 + 39bc: 1f 93 push r17 + 39be: 0f 93 push r16 + 39c0: 0e 94 2e 0a call 0x145c ; 0x145c +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:207 _jtag_hvctrl = 0; _jtag_unlock = 0; _jtag_arch = 0; - 39c8: 10 92 98 60 sts 0x6098, r1 ; 0x806098 <_jtag_arch> -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:213 + 39c4: 10 92 98 60 sts 0x6098, r1 ; 0x806098 <_jtag_arch> +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:213 _tpi_setmode = 0; packet.in.res = 0x80; /* RSP3_OK */ } else if (_cmd == 0x11) { /* CMD3_SIGN_OFF */ D1PRINTF(" GEN_SIGN_OFF\r\n"); packet.in.res = 0x80; /* RSP3_OK */ - 39cc: 80 e8 ldi r24, 0x80 ; 128 - 39ce: 90 e0 ldi r25, 0x00 ; 0 - 39d0: 80 93 d3 60 sts 0x60D3, r24 ; 0x8060d3 - 39d4: 90 93 d4 60 sts 0x60D4, r25 ; 0x8060d4 + 39c8: 80 e8 ldi r24, 0x80 ; 128 + 39ca: 90 e0 ldi r25, 0x00 ; 0 + 39cc: 80 93 d3 60 sts 0x60D3, r24 ; 0x8060d3 + 39d0: 90 93 d4 60 sts 0x60D4, r25 ; 0x8060d4 + 39d4: 0f 90 pop r0 + 39d6: 0f 90 pop r0 39d8: 0f 90 pop r0 39da: 0f 90 pop r0 - 39dc: 0f 90 pop r0 - 39de: 0f 90 pop r0 main(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:383 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:383 } /* jtag_scope_avr_core */ /* Processing branches depending on the scope specifier. */ /* Currently, four types of scope are known: */ void jtag_scope_branch (void) { size_t _rspsize = 0; - 39e0: f1 2c mov r15, r1 - 39e2: e1 2c mov r14, r1 - 39e4: f8 ce rjmp .-528 ; 0x37d6 + 39dc: f1 2c mov r15, r1 + 39de: e1 2c mov r14, r1 + 39e0: f8 ce rjmp .-528 ; 0x37d2 jtag_scope_general(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:211 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:211 _jtag_unlock = 0; _jtag_arch = 0; _tpi_setmode = 0; packet.in.res = 0x80; /* RSP3_OK */ } else if (_cmd == 0x11) { /* CMD3_SIGN_OFF */ - 39e6: 81 31 cpi r24, 0x11 ; 17 - 39e8: 49 f4 brne .+18 ; 0x39fc -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:212 + 39e2: 81 31 cpi r24, 0x11 ; 17 + 39e4: 49 f4 brne .+18 ; 0x39f8 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:212 D1PRINTF(" GEN_SIGN_OFF\r\n"); - 39ea: 81 ef ldi r24, 0xF1 ; 241 - 39ec: 92 e0 ldi r25, 0x02 ; 2 - 39ee: 9f 93 push r25 - 39f0: 8f 93 push r24 - 39f2: 1f 93 push r17 - 39f4: 0f 93 push r16 - 39f6: 0e 94 2e 0a call 0x145c ; 0x145c - 39fa: e8 cf rjmp .-48 ; 0x39cc -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:216 + 39e6: 81 ef ldi r24, 0xF1 ; 241 + 39e8: 92 e0 ldi r25, 0x02 ; 2 + 39ea: 9f 93 push r25 + 39ec: 8f 93 push r24 + 39ee: 1f 93 push r17 + 39f0: 0f 93 push r16 + 39f2: 0e 94 2e 0a call 0x145c ; 0x145c + 39f6: e8 cf rjmp .-48 ; 0x39c8 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:216 packet.in.res = 0x80; /* RSP3_OK */ } else { D1PRINTF(" GEN=%02X:%02X:%02X\r\n", _section, _index, _length); + 39f8: 1f 92 push r1 + 39fa: 5f 92 push r5 39fc: 1f 92 push r1 - 39fe: 5f 92 push r5 + 39fe: 7f 92 push r7 3a00: 1f 92 push r1 - 3a02: 7f 92 push r7 - 3a04: 1f 92 push r1 - 3a06: 6f 92 push r6 - 3a08: 8b ed ldi r24, 0xDB ; 219 - 3a0a: 92 e0 ldi r25, 0x02 ; 2 - 3a0c: 9f 93 push r25 - 3a0e: 8f 93 push r24 - 3a10: 1f 93 push r17 - 3a12: 0f 93 push r16 - 3a14: 0e 94 2e 0a call 0x145c ; 0x145c - 3a18: cd bf out 0x3d, r28 ; 61 - 3a1a: de bf out 0x3e, r29 ; 62 - 3a1c: e1 cf rjmp .-62 ; 0x39e0 + 3a02: 6f 92 push r6 + 3a04: 8b ed ldi r24, 0xDB ; 219 + 3a06: 92 e0 ldi r25, 0x02 ; 2 + 3a08: 9f 93 push r25 + 3a0a: 8f 93 push r24 + 3a0c: 1f 93 push r17 + 3a0e: 0f 93 push r16 + 3a10: 0e 94 2e 0a call 0x145c ; 0x145c + 3a14: cd bf out 0x3d, r28 ; 61 + 3a16: de bf out 0x3e, r29 ; 62 + 3a18: e1 cf rjmp .-62 ; 0x39dc jtag_scope_branch(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:396 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:396 #ifdef _Not_yet_implemented_stub_ else if (_scope == 0x00) _rspsize = jtag_scope_info(); /* SCOPE_INFO */ /* Not used with EDBG/CMSIS-DAP type */ else if (_scope == 0x11) _rspsize = ISP::jtag_scope_isp(); /* SCOPE_AVR_ISP */ else if (_scope == 0x13) _rspsize = AVR32::jtag_scope_avr32(); /* SCOPE_AVR32 */ #endif else if (_scope == 0x12) _rspsize = jtag_scope_avr_core(); /* SCOPE_AVR */ - 3a1e: 92 e1 ldi r25, 0x12 ; 18 - 3a20: f9 12 cpse r15, r25 - 3a22: a4 c2 rjmp .+1352 ; 0x3f6c + 3a1a: 92 e1 ldi r25, 0x12 ; 18 + 3a1c: f9 12 cpse r15, r25 + 3a1e: a4 c2 rjmp .+1352 ; 0x3f68 jtag_scope_avr_core(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:265 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:265 } /* The AVR scope is further branched by the ARCH designator. */ size_t jtag_scope_avr_core (void) { size_t _rspsize = 0; uint8_t _cmd = packet.out.cmd; - 3a24: f0 90 d3 60 lds r15, 0x60D3 ; 0x8060d3 -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:266 + 3a20: f0 90 d3 60 lds r15, 0x60D3 ; 0x8060d3 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:266 uint8_t _section = packet.out.section; - 3a28: d0 90 d5 60 lds r13, 0x60D5 ; 0x8060d5 -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:267 + 3a24: d0 90 d5 60 lds r13, 0x60D5 ; 0x8060d5 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:267 uint8_t _index = packet.out.index; - 3a2c: c0 90 d6 60 lds r12, 0x60D6 ; 0x8060d6 -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:268 + 3a28: c0 90 d6 60 lds r12, 0x60D6 ; 0x8060d6 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:268 uint8_t _length = packet.out.length; - 3a30: 70 90 d7 60 lds r7, 0x60D7 ; 0x8060d7 -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:269 + 3a2c: 70 90 d7 60 lds r7, 0x60D7 ; 0x8060d7 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:269 if (_cmd == 0x01) { /* CMD3_SET_PARAMETER */ - 3a34: e1 e0 ldi r30, 0x01 ; 1 - 3a36: fe 12 cpse r15, r30 - 3a38: ca c0 rjmp .+404 ; 0x3bce -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:270 + 3a30: e1 e0 ldi r30, 0x01 ; 1 + 3a32: fe 12 cpse r15, r30 + 3a34: ca c0 rjmp .+404 ; 0x3bca +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:270 uint16_t _data = packet.out.wValue; - 3a3a: e0 90 d8 60 lds r14, 0x60D8 ; 0x8060d8 - 3a3e: f0 90 d9 60 lds r15, 0x60D9 ; 0x8060d9 -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:271 + 3a36: e0 90 d8 60 lds r14, 0x60D8 ; 0x8060d8 + 3a3a: f0 90 d9 60 lds r15, 0x60D9 ; 0x8060d9 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:271 D1PRINTF(" AVR_SET_PARAM=%02X:%02X:%02X:%02X\r\n", _section, _index, _length, _data); - 3a42: ff 92 push r15 - 3a44: ef 92 push r14 + 3a3e: ff 92 push r15 + 3a40: ef 92 push r14 + 3a42: 1f 92 push r1 + 3a44: 7f 92 push r7 3a46: 1f 92 push r1 - 3a48: 7f 92 push r7 + 3a48: cf 92 push r12 3a4a: 1f 92 push r1 - 3a4c: cf 92 push r12 - 3a4e: 1f 92 push r1 - 3a50: df 92 push r13 - 3a52: 8d e0 ldi r24, 0x0D ; 13 - 3a54: 95 e0 ldi r25, 0x05 ; 5 - 3a56: 9f 93 push r25 - 3a58: 8f 93 push r24 - 3a5a: 1f 93 push r17 - 3a5c: 0f 93 push r16 - 3a5e: 0e 94 2e 0a call 0x145c ; 0x145c -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:272 + 3a4c: df 92 push r13 + 3a4e: 8d e0 ldi r24, 0x0D ; 13 + 3a50: 95 e0 ldi r25, 0x05 ; 5 + 3a52: 9f 93 push r25 + 3a54: 8f 93 push r24 + 3a56: 1f 93 push r17 + 3a58: 0f 93 push r16 + 3a5a: 0e 94 2e 0a call 0x145c ; 0x145c +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:272 if (_section == 0) { /* SET_GET_CTXT_CONFIG */ - 3a62: cd bf out 0x3d, r28 ; 61 - 3a64: de bf out 0x3e, r29 ; 62 - 3a66: d1 10 cpse r13, r1 - 3a68: 29 c0 rjmp .+82 ; 0x3abc -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:273 + 3a5e: cd bf out 0x3d, r28 ; 61 + 3a60: de bf out 0x3e, r29 ; 62 + 3a62: d1 10 cpse r13, r1 + 3a64: 29 c0 rjmp .+82 ; 0x3ab8 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:273 if (_index == 0) { /* PARM3_ARCH */ - 3a6a: c1 10 cpse r12, r1 - 3a6c: 19 c0 rjmp .+50 ; 0x3aa0 -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:274 + 3a66: c1 10 cpse r12, r1 + 3a68: 19 c0 rjmp .+50 ; 0x3a9c +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:274 D1PRINTF(" ARCH=%02X\r\n", _data); - 3a6e: ff 92 push r15 - 3a70: ef 92 push r14 - 3a72: 80 e0 ldi r24, 0x00 ; 0 - 3a74: 95 e0 ldi r25, 0x05 ; 5 - 3a76: 9f 93 push r25 - 3a78: 8f 93 push r24 - 3a7a: 1f 93 push r17 - 3a7c: 0f 93 push r16 - 3a7e: 0e 94 2e 0a call 0x145c ; 0x145c -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:275 + 3a6a: ff 92 push r15 + 3a6c: ef 92 push r14 + 3a6e: 80 e0 ldi r24, 0x00 ; 0 + 3a70: 95 e0 ldi r25, 0x05 ; 5 + 3a72: 9f 93 push r25 + 3a74: 8f 93 push r24 + 3a76: 1f 93 push r17 + 3a78: 0f 93 push r16 + 3a7a: 0e 94 2e 0a call 0x145c ; 0x145c +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:275 _jtag_arch = _data; /* 5:PARM3_ARCH_UPDI */ - 3a82: e0 92 98 60 sts 0x6098, r14 ; 0x806098 <_jtag_arch> -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:341 + 3a7e: e0 92 98 60 sts 0x6098, r14 ; 0x806098 <_jtag_arch> +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:341 } else if (_index == 7) { /* PARM3_OPT_CHIP_ERASE_TO_ENTER */ /* This is a stub that shows no signs of being used. */ /* force unlock chip-erase */ /* This might be called having no `-e` or `-D`, but having `-F`. */ D1PRINTF(" UNLOCKEN=%02X\r\n", _data); + 3a82: 0f 90 pop r0 + 3a84: 0f 90 pop r0 3a86: 0f 90 pop r0 3a88: 0f 90 pop r0 3a8a: 0f 90 pop r0 3a8c: 0f 90 pop r0 - 3a8e: 0f 90 pop r0 - 3a90: 0f 90 pop r0 -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:345 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:345 _jtag_unlock = _data; /* 1:ENABLE */ } } packet.in.res = 0x80; /* RSP3_OK */ - 3a92: 80 e8 ldi r24, 0x80 ; 128 - 3a94: 90 e0 ldi r25, 0x00 ; 0 -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:376 + 3a8e: 80 e8 ldi r24, 0x80 ; 128 + 3a90: 90 e0 ldi r25, 0x00 ; 0 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:376 else if (_jtag_arch == 0x01) _rspsize = DWIRE::jtag_scope_tiny(); /* dWire? */ else if (_jtag_arch == 0x02) _rspsize = MEGA::jtag_scope_mega(); /* MEGA */ else if (_jtag_arch == 0x03) _rspsize = XMEGA::jtag_scope_xmega(); /* XMEGA */ #endif else if (_jtag_arch == 0x05) _rspsize = UPDI::jtag_scope_updi(); /* UPDI support */ else packet.in.res = 0xA0; /* RSP3_FAILED */ - 3a96: 80 93 d3 60 sts 0x60D3, r24 ; 0x8060d3 - 3a9a: 90 93 d4 60 sts 0x60D4, r25 ; 0x8060d4 - 3a9e: a0 cf rjmp .-192 ; 0x39e0 -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:277 + 3a92: 80 93 d3 60 sts 0x60D3, r24 ; 0x8060d3 + 3a96: 90 93 d4 60 sts 0x60D4, r25 ; 0x8060d4 + 3a9a: a0 cf rjmp .-192 ; 0x39dc +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:277 if (_section == 0) { /* SET_GET_CTXT_CONFIG */ if (_index == 0) { /* PARM3_ARCH */ D1PRINTF(" ARCH=%02X\r\n", _data); _jtag_arch = _data; /* 5:PARM3_ARCH_UPDI */ } else if (_index == 1) { /* PARM3_SESS_PURPOSE */ - 3aa0: 31 e0 ldi r19, 0x01 ; 1 - 3aa2: c3 12 cpse r12, r19 - 3aa4: f6 cf rjmp .-20 ; 0x3a92 -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:278 + 3a9c: 31 e0 ldi r19, 0x01 ; 1 + 3a9e: c3 12 cpse r12, r19 + 3aa0: f6 cf rjmp .-20 ; 0x3a8e +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:278 D1PRINTF(" SESS_PURPOSE=%02X\r\n", _data); - 3aa6: ff 92 push r15 - 3aa8: ef 92 push r14 - 3aaa: 8b ee ldi r24, 0xEB ; 235 - 3aac: 94 e0 ldi r25, 0x04 ; 4 -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:341 + 3aa2: ff 92 push r15 + 3aa4: ef 92 push r14 + 3aa6: 8b ee ldi r24, 0xEB ; 235 + 3aa8: 94 e0 ldi r25, 0x04 ; 4 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:341 } else if (_index == 7) { /* PARM3_OPT_CHIP_ERASE_TO_ENTER */ /* This is a stub that shows no signs of being used. */ /* force unlock chip-erase */ /* This might be called having no `-e` or `-D`, but having `-F`. */ D1PRINTF(" UNLOCKEN=%02X\r\n", _data); - 3aae: 9f 93 push r25 - 3ab0: 8f 93 push r24 - 3ab2: 1f 93 push r17 - 3ab4: 0f 93 push r16 - 3ab6: 0e 94 2e 0a call 0x145c ; 0x145c - 3aba: e5 cf rjmp .-54 ; 0x3a86 -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:282 + 3aaa: 9f 93 push r25 + 3aac: 8f 93 push r24 + 3aae: 1f 93 push r17 + 3ab0: 0f 93 push r16 + 3ab2: 0e 94 2e 0a call 0x145c ; 0x145c + 3ab6: e5 cf rjmp .-54 ; 0x3a82 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:282 else if (_index == 1) { /* PARM3_SESS_PURPOSE */ D1PRINTF(" SESS_PURPOSE=%02X\r\n", _data); _jtag_sess = _data; /* */ } } else if (_section == 1) { /* SET_GET_CTXT_PHYSICAL */ - 3abc: 41 e0 ldi r20, 0x01 ; 1 - 3abe: d4 12 cpse r13, r20 - 3ac0: 4a c0 rjmp .+148 ; 0x3b56 -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:283 + 3ab8: 41 e0 ldi r20, 0x01 ; 1 + 3aba: d4 12 cpse r13, r20 + 3abc: 4a c0 rjmp .+148 ; 0x3b52 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:283 if (_index == 0) { /* PARM3_CONNECTION */ - 3ac2: c1 10 cpse r12, r1 - 3ac4: 0d c0 rjmp .+26 ; 0x3ae0 -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:284 + 3abe: c1 10 cpse r12, r1 + 3ac0: 0d c0 rjmp .+26 ; 0x3adc +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:284 D1PRINTF(" CONNECTION=%02X\r\n", _data); - 3ac6: ff 92 push r15 - 3ac8: ef 92 push r14 - 3aca: 88 ed ldi r24, 0xD8 ; 216 - 3acc: 94 e0 ldi r25, 0x04 ; 4 - 3ace: 9f 93 push r25 - 3ad0: 8f 93 push r24 - 3ad2: 1f 93 push r17 - 3ad4: 0f 93 push r16 - 3ad6: 0e 94 2e 0a call 0x145c ; 0x145c -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:285 + 3ac2: ff 92 push r15 + 3ac4: ef 92 push r14 + 3ac6: 88 ed ldi r24, 0xD8 ; 216 + 3ac8: 94 e0 ldi r25, 0x04 ; 4 + 3aca: 9f 93 push r25 + 3acc: 8f 93 push r24 + 3ace: 1f 93 push r17 + 3ad0: 0f 93 push r16 + 3ad2: 0e 94 2e 0a call 0x145c ; 0x145c +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:285 _jtag_conn = _data; /* 8:PARM3_CONN_UPDI */ - 3ada: e0 92 97 60 sts 0x6097, r14 ; 0x806097 <_jtag_conn> - 3ade: d3 cf rjmp .-90 ; 0x3a86 -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:287 + 3ad6: e0 92 97 60 sts 0x6097, r14 ; 0x806097 <_jtag_conn> + 3ada: d3 cf rjmp .-90 ; 0x3a82 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:287 } else if (_index == 0x31) { /* PARM3_CLK_XMEGA_PDI */ - 3ae0: 81 e3 ldi r24, 0x31 ; 49 - 3ae2: c8 12 cpse r12, r24 - 3ae4: d6 cf rjmp .-84 ; 0x3a92 -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:288 + 3adc: 81 e3 ldi r24, 0x31 ; 49 + 3ade: c8 12 cpse r12, r24 + 3ae0: d6 cf rjmp .-84 ; 0x3a8e +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:288 _xclk = _data; - 3ae6: e0 92 18 60 sts 0x6018, r14 ; 0x806018 <_xclk> - 3aea: f0 92 19 60 sts 0x6019, r15 ; 0x806019 <_xclk+0x1> -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:289 + 3ae2: e0 92 18 60 sts 0x6018, r14 ; 0x806018 <_xclk> + 3ae6: f0 92 19 60 sts 0x6019, r15 ; 0x806019 <_xclk+0x1> +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:289 D1PRINTF(" XCLK=%d\r\n", _xclk); - 3aee: ff 92 push r15 - 3af0: ef 92 push r14 - 3af2: 8d ec ldi r24, 0xCD ; 205 - 3af4: 94 e0 ldi r25, 0x04 ; 4 - 3af6: 9f 93 push r25 - 3af8: 8f 93 push r24 - 3afa: 1f 93 push r17 - 3afc: 0f 93 push r16 - 3afe: 0e 94 2e 0a call 0x145c ; 0x145c -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:290 + 3aea: ff 92 push r15 + 3aec: ef 92 push r14 + 3aee: 8d ec ldi r24, 0xCD ; 205 + 3af0: 94 e0 ldi r25, 0x04 ; 4 + 3af2: 9f 93 push r25 + 3af4: 8f 93 push r24 + 3af6: 1f 93 push r17 + 3af8: 0f 93 push r16 + 3afa: 0e 94 2e 0a call 0x145c ; 0x145c +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:290 if (_jtag_arch == 5) { + 3afe: 0f 90 pop r0 + 3b00: 0f 90 pop r0 3b02: 0f 90 pop r0 3b04: 0f 90 pop r0 3b06: 0f 90 pop r0 3b08: 0f 90 pop r0 - 3b0a: 0f 90 pop r0 - 3b0c: 0f 90 pop r0 - 3b0e: 80 91 98 60 lds r24, 0x6098 ; 0x806098 <_jtag_arch> - 3b12: 85 30 cpi r24, 0x05 ; 5 - 3b14: 09 f0 breq .+2 ; 0x3b18 - 3b16: bd cf rjmp .-134 ; 0x3a92 -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:293 + 3b0a: 80 91 98 60 lds r24, 0x6098 ; 0x806098 <_jtag_arch> + 3b0e: 85 30 cpi r24, 0x05 ; 5 + 3b10: 09 f0 breq .+2 ; 0x3b14 + 3b12: bd cf rjmp .-134 ; 0x3a8e +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:293 /* Called with `-B xclk[unit]`. */ /* XCLK Range Limitation : LSB=kHz */ if (_xclk > 240) _xclk = 240; - 3b18: 80 91 18 60 lds r24, 0x6018 ; 0x806018 <_xclk> - 3b1c: 90 91 19 60 lds r25, 0x6019 ; 0x806019 <_xclk+0x1> - 3b20: 81 3f cpi r24, 0xF1 ; 241 - 3b22: 91 05 cpc r25, r1 - 3b24: 98 f0 brcs .+38 ; 0x3b4c - 3b26: 80 ef ldi r24, 0xF0 ; 240 - 3b28: 90 e0 ldi r25, 0x00 ; 0 -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:294 + 3b14: 80 91 18 60 lds r24, 0x6018 ; 0x806018 <_xclk> + 3b18: 90 91 19 60 lds r25, 0x6019 ; 0x806019 <_xclk+0x1> + 3b1c: 81 3f cpi r24, 0xF1 ; 241 + 3b1e: 91 05 cpc r25, r1 + 3b20: 98 f0 brcs .+38 ; 0x3b48 + 3b22: 80 ef ldi r24, 0xF0 ; 240 + 3b24: 90 e0 ldi r25, 0x00 ; 0 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:294 else if (_xclk < 40) _xclk = 40; - 3b2a: 80 93 18 60 sts 0x6018, r24 ; 0x806018 <_xclk> - 3b2e: 90 93 19 60 sts 0x6019, r25 ; 0x806019 <_xclk+0x1> -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:296 + 3b26: 80 93 18 60 sts 0x6018, r24 ; 0x806018 <_xclk> + 3b2a: 90 93 19 60 sts 0x6019, r25 ; 0x806019 <_xclk+0x1> +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:296 #if defined(DEBUG) if (_xclk != _data) D1PRINTF(" FIX_CLK=%d\r\n", _xclk); - 3b32: 80 91 18 60 lds r24, 0x6018 ; 0x806018 <_xclk> - 3b36: 90 91 19 60 lds r25, 0x6019 ; 0x806019 <_xclk+0x1> - 3b3a: e8 16 cp r14, r24 - 3b3c: f9 06 cpc r15, r25 - 3b3e: 09 f4 brne .+2 ; 0x3b42 - 3b40: a8 cf rjmp .-176 ; 0x3a92 - 3b42: 9f 93 push r25 - 3b44: 8f 93 push r24 - 3b46: 8f eb ldi r24, 0xBF ; 191 - 3b48: 94 e0 ldi r25, 0x04 ; 4 - 3b4a: b1 cf rjmp .-158 ; 0x3aae -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:294 + 3b2e: 80 91 18 60 lds r24, 0x6018 ; 0x806018 <_xclk> + 3b32: 90 91 19 60 lds r25, 0x6019 ; 0x806019 <_xclk+0x1> + 3b36: e8 16 cp r14, r24 + 3b38: f9 06 cpc r15, r25 + 3b3a: 09 f4 brne .+2 ; 0x3b3e + 3b3c: a8 cf rjmp .-176 ; 0x3a8e + 3b3e: 9f 93 push r25 + 3b40: 8f 93 push r24 + 3b42: 8f eb ldi r24, 0xBF ; 191 + 3b44: 94 e0 ldi r25, 0x04 ; 4 + 3b46: b1 cf rjmp .-158 ; 0x3aaa +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:294 D1PRINTF(" XCLK=%d\r\n", _xclk); if (_jtag_arch == 5) { /* Called with `-B xclk[unit]`. */ /* XCLK Range Limitation : LSB=kHz */ if (_xclk > 240) _xclk = 240; else if (_xclk < 40) _xclk = 40; - 3b4c: 88 97 sbiw r24, 0x28 ; 40 - 3b4e: 88 f7 brcc .-30 ; 0x3b32 - 3b50: 88 e2 ldi r24, 0x28 ; 40 - 3b52: 90 e0 ldi r25, 0x00 ; 0 - 3b54: ea cf rjmp .-44 ; 0x3b2a -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:301 + 3b48: 88 97 sbiw r24, 0x28 ; 40 + 3b4a: 88 f7 brcc .-30 ; 0x3b2e + 3b4c: 88 e2 ldi r24, 0x28 ; 40 + 3b4e: 90 e0 ldi r25, 0x00 ; 0 + 3b50: ea cf rjmp .-44 ; 0x3b26 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:301 if (_xclk != _data) D1PRINTF(" FIX_CLK=%d\r\n", _xclk); #endif } } } else if (_section == 2) { /* SET_GET_CTXT_DEVICE */ - 3b56: 92 e0 ldi r25, 0x02 ; 2 - 3b58: d9 12 cpse r13, r25 - 3b5a: 26 c0 rjmp .+76 ; 0x3ba8 -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:302 + 3b52: 92 e0 ldi r25, 0x02 ; 2 + 3b54: d9 12 cpse r13, r25 + 3b56: 26 c0 rjmp .+76 ; 0x3ba4 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:302 if (_index == 0) { /* PARM3_DEVICEDESC */ - 3b5c: c1 10 cpse r12, r1 - 3b5e: 99 cf rjmp .-206 ; 0x3a92 -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:303 + 3b58: c1 10 cpse r12, r1 + 3b5a: 99 cf rjmp .-206 ; 0x3a8e +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:303 D1PRINTF(" DEVICEDESC=%X\r\n", _length); - 3b60: 1f 92 push r1 - 3b62: 7f 92 push r7 - 3b64: 8e ea ldi r24, 0xAE ; 174 - 3b66: 94 e0 ldi r25, 0x04 ; 4 - 3b68: 9f 93 push r25 - 3b6a: 8f 93 push r24 - 3b6c: 1f 93 push r17 - 3b6e: 0f 93 push r16 - 3b70: 0e 94 2e 0a call 0x145c ; 0x145c -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:304 + 3b5c: 1f 92 push r1 + 3b5e: 7f 92 push r7 + 3b60: 8e ea ldi r24, 0xAE ; 174 + 3b62: 94 e0 ldi r25, 0x04 ; 4 + 3b64: 9f 93 push r25 + 3b66: 8f 93 push r24 + 3b68: 1f 93 push r17 + 3b6a: 0f 93 push r16 + 3b6c: 0e 94 2e 0a call 0x145c ; 0x145c +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:304 memcpy(&Device_Descriptor, &packet.out.setData[0], _length & 63); - 3b74: 47 2d mov r20, r7 - 3b76: 4f 73 andi r20, 0x3F ; 63 - 3b78: 50 e0 ldi r21, 0x00 ; 0 - 3b7a: 68 ed ldi r22, 0xD8 ; 216 - 3b7c: 70 e6 ldi r23, 0x60 ; 96 - 3b7e: 8e e9 ldi r24, 0x9E ; 158 - 3b80: 90 e6 ldi r25, 0x60 ; 96 - 3b82: 1a d7 rcall .+3636 ; 0x49b8 -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:325 + 3b70: 47 2d mov r20, r7 + 3b72: 4f 73 andi r20, 0x3F ; 63 + 3b74: 50 e0 ldi r21, 0x00 ; 0 + 3b76: 68 ed ldi r22, 0xD8 ; 216 + 3b78: 70 e6 ldi r23, 0x60 ; 96 + 3b7a: 8e e9 ldi r24, 0x9E ; 158 + 3b7c: 90 e6 ldi r25, 0x60 ; 96 + 3b7e: 1a d7 rcall .+3636 ; 0x49b4 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:325 /* Even with all this, the BOOTROW information is still undefined! */ /* Re-analysis of newer ICE FW is needed! */ } /* STUB: And other descriptors. */ #elif defined(DEBUG) if (_jtag_arch == 5) { + 3b80: 0f 90 pop r0 + 3b82: 0f 90 pop r0 3b84: 0f 90 pop r0 3b86: 0f 90 pop r0 3b88: 0f 90 pop r0 3b8a: 0f 90 pop r0 - 3b8c: 0f 90 pop r0 - 3b8e: 0f 90 pop r0 - 3b90: 80 91 98 60 lds r24, 0x6098 ; 0x806098 <_jtag_arch> - 3b94: 85 30 cpi r24, 0x05 ; 5 - 3b96: 09 f0 breq .+2 ; 0x3b9a - 3b98: 7c cf rjmp .-264 ; 0x3a92 -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:326 + 3b8c: 80 91 98 60 lds r24, 0x6098 ; 0x806098 <_jtag_arch> + 3b90: 85 30 cpi r24, 0x05 ; 5 + 3b92: 09 f0 breq .+2 ; 0x3b96 + 3b94: 7c cf rjmp .-264 ; 0x3a8e +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:326 D1PRINTF(" HVTYPE=%02X\r\n", Device_Descriptor.UPDI.hvupdi_variant); - 3b9a: 80 91 cd 60 lds r24, 0x60CD ; 0x8060cd - 3b9e: 1f 92 push r1 - 3ba0: 8f 93 push r24 - 3ba2: 8f e9 ldi r24, 0x9F ; 159 - 3ba4: 94 e0 ldi r25, 0x04 ; 4 - 3ba6: 83 cf rjmp .-250 ; 0x3aae -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:331 + 3b96: 80 91 cd 60 lds r24, 0x60CD ; 0x8060cd + 3b9a: 1f 92 push r1 + 3b9c: 8f 93 push r24 + 3b9e: 8f e9 ldi r24, 0x9F ; 159 + 3ba0: 94 e0 ldi r25, 0x04 ; 4 + 3ba2: 83 cf rjmp .-250 ; 0x3aaa +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:331 } #endif } } else if (_section == 3) { /* SET_GET_CTXT_OPTIONS */ - 3ba8: e3 e0 ldi r30, 0x03 ; 3 - 3baa: de 12 cpse r13, r30 - 3bac: 72 cf rjmp .-284 ; 0x3a92 -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:332 + 3ba4: e3 e0 ldi r30, 0x03 ; 3 + 3ba6: de 12 cpse r13, r30 + 3ba8: 72 cf rjmp .-284 ; 0x3a8e +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:332 if (_index == 6) { /* PARM3_OPT_12V_UPDI_ENABLE */ - 3bae: f6 e0 ldi r31, 0x06 ; 6 - 3bb0: cf 12 cpse r12, r31 - 3bb2: 05 c0 rjmp .+10 ; 0x3bbe -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:334 + 3baa: f6 e0 ldi r31, 0x06 ; 6 + 3bac: cf 12 cpse r12, r31 + 3bae: 05 c0 rjmp .+10 ; 0x3bba +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:334 /* Called with `-xhvupdi` hvupdi_support */ D1PRINTF(" HVCTRLEN=%02X\r\n", _data); - 3bb4: ff 92 push r15 - 3bb6: ef 92 push r14 - 3bb8: 8e e8 ldi r24, 0x8E ; 142 - 3bba: 94 e0 ldi r25, 0x04 ; 4 - 3bbc: 78 cf rjmp .-272 ; 0x3aae -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:337 + 3bb0: ff 92 push r15 + 3bb2: ef 92 push r14 + 3bb4: 8e e8 ldi r24, 0x8E ; 142 + 3bb6: 94 e0 ldi r25, 0x04 ; 4 + 3bb8: 78 cf rjmp .-272 ; 0x3aaa +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:337 _jtag_hvctrl = _data; /* 1:ENABLE */ } else if (_index == 7) { /* PARM3_OPT_CHIP_ERASE_TO_ENTER */ - 3bbe: 27 e0 ldi r18, 0x07 ; 7 - 3bc0: c2 12 cpse r12, r18 - 3bc2: 67 cf rjmp .-306 ; 0x3a92 -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:341 + 3bba: 27 e0 ldi r18, 0x07 ; 7 + 3bbc: c2 12 cpse r12, r18 + 3bbe: 67 cf rjmp .-306 ; 0x3a8e +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:341 /* This is a stub that shows no signs of being used. */ /* force unlock chip-erase */ /* This might be called having no `-e` or `-D`, but having `-F`. */ D1PRINTF(" UNLOCKEN=%02X\r\n", _data); - 3bc4: ff 92 push r15 - 3bc6: ef 92 push r14 - 3bc8: 8d e7 ldi r24, 0x7D ; 125 - 3bca: 94 e0 ldi r25, 0x04 ; 4 - 3bcc: 70 cf rjmp .-288 ; 0x3aae -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:347 + 3bc0: ff 92 push r15 + 3bc2: ef 92 push r14 + 3bc4: 8d e7 ldi r24, 0x7D ; 125 + 3bc6: 94 e0 ldi r25, 0x04 ; 4 + 3bc8: 70 cf rjmp .-288 ; 0x3aaa +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:347 _jtag_unlock = _data; /* 1:ENABLE */ } } packet.in.res = 0x80; /* RSP3_OK */ } else if (_cmd == 0x02) { /* CMD3_GET_PARAMETER */ - 3bce: 32 e0 ldi r19, 0x02 ; 2 - 3bd0: f3 12 cpse r15, r19 - 3bd2: 64 c0 rjmp .+200 ; 0x3c9c -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:348 + 3bca: 32 e0 ldi r19, 0x02 ; 2 + 3bcc: f3 12 cpse r15, r19 + 3bce: 64 c0 rjmp .+200 ; 0x3c98 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:348 D1PRINTF(" AVR_GET_PARAMETER=%02X:%02X:%02X\r\n", _section, _index, _length); - 3bd4: e7 2c mov r14, r7 - 3bd6: f1 2c mov r15, r1 + 3bd0: e7 2c mov r14, r7 + 3bd2: f1 2c mov r15, r1 + 3bd4: 1f 92 push r1 + 3bd6: 7f 92 push r7 3bd8: 1f 92 push r1 - 3bda: 7f 92 push r7 + 3bda: cf 92 push r12 3bdc: 1f 92 push r1 - 3bde: cf 92 push r12 - 3be0: 1f 92 push r1 - 3be2: df 92 push r13 - 3be4: 89 e5 ldi r24, 0x59 ; 89 - 3be6: 94 e0 ldi r25, 0x04 ; 4 - 3be8: 9f 93 push r25 - 3bea: 8f 93 push r24 - 3bec: 1f 93 push r17 - 3bee: 0f 93 push r16 - 3bf0: 0e 94 2e 0a call 0x145c ; 0x145c -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:349 + 3bde: df 92 push r13 + 3be0: 89 e5 ldi r24, 0x59 ; 89 + 3be2: 94 e0 ldi r25, 0x04 ; 4 + 3be4: 9f 93 push r25 + 3be6: 8f 93 push r24 + 3be8: 1f 93 push r17 + 3bea: 0f 93 push r16 + 3bec: 0e 94 2e 0a call 0x145c ; 0x145c +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:349 if (_section == 0) { /* SET_GET_CTXT_CONFIG */ - 3bf4: cd bf out 0x3d, r28 ; 61 - 3bf6: de bf out 0x3e, r29 ; 62 - 3bf8: d1 10 cpse r13, r1 - 3bfa: 22 c0 rjmp .+68 ; 0x3c40 -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:350 + 3bf0: cd bf out 0x3d, r28 ; 61 + 3bf2: de bf out 0x3e, r29 ; 62 + 3bf4: d1 10 cpse r13, r1 + 3bf6: 22 c0 rjmp .+68 ; 0x3c3c +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:350 if (_index == 0) { /* PARM3_ARCH */ - 3bfc: c1 10 cpse r12, r1 - 3bfe: 16 c0 rjmp .+44 ; 0x3c2c -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:351 + 3bf8: c1 10 cpse r12, r1 + 3bfa: 16 c0 rjmp .+44 ; 0x3c28 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:351 D1PRINTF(" ARCH=%02X\r\n", _jtag_arch); - 3c00: 80 91 98 60 lds r24, 0x6098 ; 0x806098 <_jtag_arch> - 3c04: 1f 92 push r1 - 3c06: 8f 93 push r24 - 3c08: 8c e4 ldi r24, 0x4C ; 76 - 3c0a: 94 e0 ldi r25, 0x04 ; 4 - 3c0c: 9f 93 push r25 - 3c0e: 8f 93 push r24 - 3c10: 1f 93 push r17 - 3c12: 0f 93 push r16 - 3c14: 0e 94 2e 0a call 0x145c ; 0x145c -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:352 + 3bfc: 80 91 98 60 lds r24, 0x6098 ; 0x806098 <_jtag_arch> + 3c00: 1f 92 push r1 + 3c02: 8f 93 push r24 + 3c04: 8c e4 ldi r24, 0x4C ; 76 + 3c06: 94 e0 ldi r25, 0x04 ; 4 + 3c08: 9f 93 push r25 + 3c0a: 8f 93 push r24 + 3c0c: 1f 93 push r17 + 3c0e: 0f 93 push r16 + 3c10: 0e 94 2e 0a call 0x145c ; 0x145c +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:352 packet.in.data[0] = _jtag_arch; - 3c18: 80 91 98 60 lds r24, 0x6098 ; 0x806098 <_jtag_arch> -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:359 + 3c14: 80 91 98 60 lds r24, 0x6098 ; 0x806098 <_jtag_arch> +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:359 } else if (_section == 1) { /* SET_GET_CTXT_PHYSICAL */ if (_index == 0) { /* PARM3_CONNECTION */ /* This is a stub that is called but not used. */ D1PRINTF(" CONNECTION=%02X\r\n", _jtag_conn); packet.in.data[0] = _jtag_conn; - 3c1c: 80 93 d5 60 sts 0x60D5, r24 ; 0x8060d5 -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:364 + 3c18: 80 93 d5 60 sts 0x60D5, r24 ; 0x8060d5 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:364 } else if (_index == 0x31) { /* PARM3_CLK_XMEGA_PDI */ /* `-B khz` : "khz" units are required. */ D1PRINTF(" XCLK=%d\r\n", _xclk); packet.in.wValue = _xclk; + 3c1c: 0f 90 pop r0 + 3c1e: 0f 90 pop r0 3c20: 0f 90 pop r0 3c22: 0f 90 pop r0 3c24: 0f 90 pop r0 3c26: 0f 90 pop r0 - 3c28: 0f 90 pop r0 - 3c2a: 0f 90 pop r0 -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:367 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:367 } } packet.in.res = 0x184; /* RSP3_DATA */ - 3c2c: 84 e8 ldi r24, 0x84 ; 132 - 3c2e: 91 e0 ldi r25, 0x01 ; 1 - 3c30: 80 93 d3 60 sts 0x60D3, r24 ; 0x8060d3 - 3c34: 90 93 d4 60 sts 0x60D4, r25 ; 0x8060d4 -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:368 + 3c28: 84 e8 ldi r24, 0x84 ; 132 + 3c2a: 91 e0 ldi r25, 0x01 ; 1 + 3c2c: 80 93 d3 60 sts 0x60D3, r24 ; 0x8060d3 + 3c30: 90 93 d4 60 sts 0x60D4, r25 ; 0x8060d4 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:368 _rspsize = _length + 1; - 3c38: ff ef ldi r31, 0xFF ; 255 - 3c3a: ef 1a sub r14, r31 - 3c3c: ff 0a sbc r15, r31 - 3c3e: cb cd rjmp .-1130 ; 0x37d6 -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:355 + 3c34: ff ef ldi r31, 0xFF ; 255 + 3c36: ef 1a sub r14, r31 + 3c38: ff 0a sbc r15, r31 + 3c3a: cb cd rjmp .-1130 ; 0x37d2 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:355 if (_index == 0) { /* PARM3_ARCH */ D1PRINTF(" ARCH=%02X\r\n", _jtag_arch); packet.in.data[0] = _jtag_arch; } } else if (_section == 1) { /* SET_GET_CTXT_PHYSICAL */ - 3c40: 91 e0 ldi r25, 0x01 ; 1 - 3c42: d9 12 cpse r13, r25 - 3c44: f3 cf rjmp .-26 ; 0x3c2c -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:356 + 3c3c: 91 e0 ldi r25, 0x01 ; 1 + 3c3e: d9 12 cpse r13, r25 + 3c40: f3 cf rjmp .-26 ; 0x3c28 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:356 if (_index == 0) { /* PARM3_CONNECTION */ - 3c46: c1 10 cpse r12, r1 - 3c48: 0f c0 rjmp .+30 ; 0x3c68 -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:358 + 3c42: c1 10 cpse r12, r1 + 3c44: 0f c0 rjmp .+30 ; 0x3c64 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:358 /* This is a stub that is called but not used. */ D1PRINTF(" CONNECTION=%02X\r\n", _jtag_conn); - 3c4a: 80 91 97 60 lds r24, 0x6097 ; 0x806097 <_jtag_conn> - 3c4e: 1f 92 push r1 - 3c50: 8f 93 push r24 - 3c52: 89 e3 ldi r24, 0x39 ; 57 - 3c54: 94 e0 ldi r25, 0x04 ; 4 - 3c56: 9f 93 push r25 - 3c58: 8f 93 push r24 - 3c5a: 1f 93 push r17 - 3c5c: 0f 93 push r16 - 3c5e: 0e 94 2e 0a call 0x145c ; 0x145c -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:359 + 3c46: 80 91 97 60 lds r24, 0x6097 ; 0x806097 <_jtag_conn> + 3c4a: 1f 92 push r1 + 3c4c: 8f 93 push r24 + 3c4e: 89 e3 ldi r24, 0x39 ; 57 + 3c50: 94 e0 ldi r25, 0x04 ; 4 + 3c52: 9f 93 push r25 + 3c54: 8f 93 push r24 + 3c56: 1f 93 push r17 + 3c58: 0f 93 push r16 + 3c5a: 0e 94 2e 0a call 0x145c ; 0x145c +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:359 packet.in.data[0] = _jtag_conn; - 3c62: 80 91 97 60 lds r24, 0x6097 ; 0x806097 <_jtag_conn> - 3c66: da cf rjmp .-76 ; 0x3c1c -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:361 + 3c5e: 80 91 97 60 lds r24, 0x6097 ; 0x806097 <_jtag_conn> + 3c62: da cf rjmp .-76 ; 0x3c18 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:361 } else if (_index == 0x31) { /* PARM3_CLK_XMEGA_PDI */ - 3c68: e1 e3 ldi r30, 0x31 ; 49 - 3c6a: ce 12 cpse r12, r30 - 3c6c: df cf rjmp .-66 ; 0x3c2c -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:363 + 3c64: e1 e3 ldi r30, 0x31 ; 49 + 3c66: ce 12 cpse r12, r30 + 3c68: df cf rjmp .-66 ; 0x3c28 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:363 /* `-B khz` : "khz" units are required. */ D1PRINTF(" XCLK=%d\r\n", _xclk); - 3c6e: 80 91 19 60 lds r24, 0x6019 ; 0x806019 <_xclk+0x1> - 3c72: 8f 93 push r24 - 3c74: 80 91 18 60 lds r24, 0x6018 ; 0x806018 <_xclk> - 3c78: 8f 93 push r24 - 3c7a: 8e e2 ldi r24, 0x2E ; 46 - 3c7c: 94 e0 ldi r25, 0x04 ; 4 - 3c7e: 9f 93 push r25 - 3c80: 8f 93 push r24 - 3c82: 1f 93 push r17 - 3c84: 0f 93 push r16 - 3c86: 0e 94 2e 0a call 0x145c ; 0x145c -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:364 + 3c6a: 80 91 19 60 lds r24, 0x6019 ; 0x806019 <_xclk+0x1> + 3c6e: 8f 93 push r24 + 3c70: 80 91 18 60 lds r24, 0x6018 ; 0x806018 <_xclk> + 3c74: 8f 93 push r24 + 3c76: 8e e2 ldi r24, 0x2E ; 46 + 3c78: 94 e0 ldi r25, 0x04 ; 4 + 3c7a: 9f 93 push r25 + 3c7c: 8f 93 push r24 + 3c7e: 1f 93 push r17 + 3c80: 0f 93 push r16 + 3c82: 0e 94 2e 0a call 0x145c ; 0x145c +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:364 packet.in.wValue = _xclk; - 3c8a: 80 91 18 60 lds r24, 0x6018 ; 0x806018 <_xclk> - 3c8e: 90 91 19 60 lds r25, 0x6019 ; 0x806019 <_xclk+0x1> - 3c92: 80 93 d5 60 sts 0x60D5, r24 ; 0x8060d5 - 3c96: 90 93 d6 60 sts 0x60D6, r25 ; 0x8060d6 - 3c9a: c2 cf rjmp .-124 ; 0x3c20 -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:375 + 3c86: 80 91 18 60 lds r24, 0x6018 ; 0x806018 <_xclk> + 3c8a: 90 91 19 60 lds r25, 0x6019 ; 0x806019 <_xclk+0x1> + 3c8e: 80 93 d5 60 sts 0x60D5, r24 ; 0x8060d5 + 3c92: 90 93 d6 60 sts 0x60D6, r25 ; 0x8060d6 + 3c96: c2 cf rjmp .-124 ; 0x3c1c +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:375 #ifdef _Not_yet_implemented_stub_ else if (_jtag_arch == 0x01) _rspsize = DWIRE::jtag_scope_tiny(); /* dWire? */ else if (_jtag_arch == 0x02) _rspsize = MEGA::jtag_scope_mega(); /* MEGA */ else if (_jtag_arch == 0x03) _rspsize = XMEGA::jtag_scope_xmega(); /* XMEGA */ #endif else if (_jtag_arch == 0x05) _rspsize = UPDI::jtag_scope_updi(); /* UPDI support */ - 3c9c: 80 91 98 60 lds r24, 0x6098 ; 0x806098 <_jtag_arch> - 3ca0: 85 30 cpi r24, 0x05 ; 5 - 3ca2: 09 f0 breq .+2 ; 0x3ca6 - 3ca4: 60 c1 rjmp .+704 ; 0x3f66 + 3c98: 80 91 98 60 lds r24, 0x6098 ; 0x806098 <_jtag_arch> + 3c9c: 85 30 cpi r24, 0x05 ; 5 + 3c9e: 09 f0 breq .+2 ; 0x3ca2 + 3ca0: 60 c1 rjmp .+704 ; 0x3f62 jtag_scope_updi(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:412 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:412 /* ARCH=UPDI scope Provides functionality. */ size_t jtag_scope_updi (void) { size_t _rspsize = 0; uint8_t _cmd = packet.out.cmd; if (_cmd == 0x10) { /* CMD3_SIGN_ON */ - 3ca6: 20 e1 ldi r18, 0x10 ; 16 - 3ca8: f2 12 cpse r15, r18 - 3caa: 51 c0 rjmp .+162 ; 0x3d4e -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:413 + 3ca2: 20 e1 ldi r18, 0x10 ; 16 + 3ca4: f2 12 cpse r15, r18 + 3ca6: 51 c0 rjmp .+162 ; 0x3d4a +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:413 D1PRINTF(" UPDI_SIGN_ON=EXT:%02X\r\n", packet.out.bMType); - 3cac: 1f 92 push r1 - 3cae: df 92 push r13 - 3cb0: 85 e1 ldi r24, 0x15 ; 21 - 3cb2: 94 e0 ldi r25, 0x04 ; 4 - 3cb4: 9f 93 push r25 - 3cb6: 8f 93 push r24 - 3cb8: 1f 93 push r17 - 3cba: 0f 93 push r16 - 3cbc: 0e 94 2e 0a call 0x145c ; 0x145c -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:414 + 3ca8: 1f 92 push r1 + 3caa: df 92 push r13 + 3cac: 85 e1 ldi r24, 0x15 ; 21 + 3cae: 94 e0 ldi r25, 0x04 ; 4 + 3cb0: 9f 93 push r25 + 3cb2: 8f 93 push r24 + 3cb4: 1f 93 push r17 + 3cb6: 0f 93 push r16 + 3cb8: 0e 94 2e 0a call 0x145c ; 0x145c +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:414 USART::setup(); - 3cc0: 0e 94 97 0f call 0x1f2e ; 0x1f2e + 3cbc: 0e 94 97 0f call 0x1f2e ; 0x1f2e change_updi(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/usart.cpp:79 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usart.cpp:79 #endif } /*** Sets up single-wire asynchronous mode for UPDI operation. ***/ void change_updi (void) { ATOMIC_BLOCK(ATOMIC_RESTORESTATE) { - 3cc4: ef b6 in r14, 0x3f ; 63 + 3cc0: ef b6 in r14, 0x3f ; 63 __iCliRetVal(): /Users/askn/Library/Arduino15/packages/MultiX-Zinnia/tools/avr-gcc/7.3.0-avr8-gnu-toolchain/avr/include/util/atomic.h:50 return 1; @@ -12848,61 +12848,61 @@ __iCliRetVal(): static __inline__ uint8_t __iCliRetVal(void) { cli(); - 3cc6: f8 94 cli + 3cc2: f8 94 cli change_updi(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/usart.cpp:80 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usart.cpp:80 D1PRINTF(" UART=UPDI\r\n"); - 3cc8: 8d e7 ldi r24, 0x7D ; 125 - 3cca: 93 e0 ldi r25, 0x03 ; 3 - 3ccc: 9f 93 push r25 - 3cce: 8f 93 push r24 - 3cd0: 1f 93 push r17 - 3cd2: 0f 93 push r16 - 3cd4: 0e 94 2e 0a call 0x145c ; 0x145c -/Users/askn/Collaborator/UPDI4AVR-USB/src/usart.cpp:81 + 3cc4: 8d e7 ldi r24, 0x7D ; 125 + 3cc6: 93 e0 ldi r25, 0x03 ; 3 + 3cc8: 9f 93 push r25 + 3cca: 8f 93 push r24 + 3ccc: 1f 93 push r17 + 3cce: 0f 93 push r16 + 3cd0: 0e 94 2e 0a call 0x145c ; 0x145c +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usart.cpp:81 PORTMUX_USARTROUTEA = PORTMUX_USART_UPDI; - 3cd8: f0 92 e2 05 sts 0x05E2, r15 ; 0x8005e2 <__TEXT_REGION_LENGTH__+0x7f05e2> -/Users/askn/Collaborator/UPDI4AVR-USB/src/usart.cpp:82 + 3cd4: f0 92 e2 05 sts 0x05E2, r15 ; 0x8005e2 <__TEXT_REGION_LENGTH__+0x7f05e2> +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usart.cpp:82 USART0_STATUS = USART_DREIF_bm; - 3cdc: 80 e2 ldi r24, 0x20 ; 32 - 3cde: 80 93 04 08 sts 0x0804, r24 ; 0x800804 <__TEXT_REGION_LENGTH__+0x7f0804> -/Users/askn/Collaborator/UPDI4AVR-USB/src/usart.cpp:83 + 3cd8: 80 e2 ldi r24, 0x20 ; 32 + 3cda: 80 93 04 08 sts 0x0804, r24 ; 0x800804 <__TEXT_REGION_LENGTH__+0x7f0804> +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usart.cpp:83 USART0_BAUD = calk_baud_khz(_xclk); - 3ce2: 80 91 18 60 lds r24, 0x6018 ; 0x806018 <_xclk> - 3ce6: 90 91 19 60 lds r25, 0x6019 ; 0x806019 <_xclk+0x1> - 3cea: 0e 94 79 05 call 0xaf2 ; 0xaf2 - 3cee: 80 93 08 08 sts 0x0808, r24 ; 0x800808 <__TEXT_REGION_LENGTH__+0x7f0808> - 3cf2: 90 93 09 08 sts 0x0809, r25 ; 0x800809 <__TEXT_REGION_LENGTH__+0x7f0809> -/Users/askn/Collaborator/UPDI4AVR-USB/src/usart.cpp:84 + 3cde: 80 91 18 60 lds r24, 0x6018 ; 0x806018 <_xclk> + 3ce2: 90 91 19 60 lds r25, 0x6019 ; 0x806019 <_xclk+0x1> + 3ce6: 0e 94 79 05 call 0xaf2 ; 0xaf2 + 3cea: 80 93 08 08 sts 0x0808, r24 ; 0x800808 <__TEXT_REGION_LENGTH__+0x7f0808> + 3cee: 90 93 09 08 sts 0x0809, r25 ; 0x800809 <__TEXT_REGION_LENGTH__+0x7f0809> +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usart.cpp:84 USART0_CTRLC = USART_CHSIZE_8BIT_gc | USART_PMODE_EVEN_gc | USART_SBMODE_2BIT_gc; - 3cf6: 8b e2 ldi r24, 0x2B ; 43 - 3cf8: 80 93 07 08 sts 0x0807, r24 ; 0x800807 <__TEXT_REGION_LENGTH__+0x7f0807> -/Users/askn/Collaborator/UPDI4AVR-USB/src/usart.cpp:87 + 3cf2: 8b e2 ldi r24, 0x2B ; 43 + 3cf4: 80 93 07 08 sts 0x0807, r24 ; 0x800807 <__TEXT_REGION_LENGTH__+0x7f0807> +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usart.cpp:87 /* The RS485_INT:_BV(1) attribute is undocumented but works fine. */ /* Without it, an additional delay is required before sending a byte. */ USART0_CTRLA = USART_LBME_bm | USART_RS485_INT_gc; - 3cfc: 8a e0 ldi r24, 0x0A ; 10 - 3cfe: 80 93 05 08 sts 0x0805, r24 ; 0x800805 <__TEXT_REGION_LENGTH__+0x7f0805> -/Users/askn/Collaborator/UPDI4AVR-USB/src/usart.cpp:88 + 3cf8: 8a e0 ldi r24, 0x0A ; 10 + 3cfa: 80 93 05 08 sts 0x0805, r24 ; 0x800805 <__TEXT_REGION_LENGTH__+0x7f0805> +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usart.cpp:88 USART0_CTRLB = USART_RXEN_bm | USART_TXEN_bm | USART_ODME_bm; - 3d02: 88 ec ldi r24, 0xC8 ; 200 - 3d04: 80 93 06 08 sts 0x0806, r24 ; 0x800806 <__TEXT_REGION_LENGTH__+0x7f0806> -/Users/askn/Collaborator/UPDI4AVR-USB/src/usart.cpp:89 + 3cfe: 88 ec ldi r24, 0xC8 ; 200 + 3d00: 80 93 06 08 sts 0x0806, r24 ; 0x800806 <__TEXT_REGION_LENGTH__+0x7f0806> +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usart.cpp:89 D1PRINTF(" BAUD=%04X:%02X\r\n", USART0_BAUD, USART0_CTRLB); - 3d08: 20 91 06 08 lds r18, 0x0806 ; 0x800806 <__TEXT_REGION_LENGTH__+0x7f0806> - 3d0c: 80 91 08 08 lds r24, 0x0808 ; 0x800808 <__TEXT_REGION_LENGTH__+0x7f0808> - 3d10: 90 91 09 08 lds r25, 0x0809 ; 0x800809 <__TEXT_REGION_LENGTH__+0x7f0809> - 3d14: 1f 92 push r1 - 3d16: 2f 93 push r18 - 3d18: 9f 93 push r25 - 3d1a: 8f 93 push r24 - 3d1c: 8b e6 ldi r24, 0x6B ; 107 - 3d1e: 93 e0 ldi r25, 0x03 ; 3 - 3d20: 9f 93 push r25 - 3d22: 8f 93 push r24 - 3d24: 1f 93 push r17 - 3d26: 0f 93 push r16 - 3d28: 0e 94 2e 0a call 0x145c ; 0x145c + 3d04: 20 91 06 08 lds r18, 0x0806 ; 0x800806 <__TEXT_REGION_LENGTH__+0x7f0806> + 3d08: 80 91 08 08 lds r24, 0x0808 ; 0x800808 <__TEXT_REGION_LENGTH__+0x7f0808> + 3d0c: 90 91 09 08 lds r25, 0x0809 ; 0x800809 <__TEXT_REGION_LENGTH__+0x7f0809> + 3d10: 1f 92 push r1 + 3d12: 2f 93 push r18 + 3d14: 9f 93 push r25 + 3d16: 8f 93 push r24 + 3d18: 8b e6 ldi r24, 0x6B ; 107 + 3d1a: 93 e0 ldi r25, 0x03 ; 3 + 3d1c: 9f 93 push r25 + 3d1e: 8f 93 push r24 + 3d20: 1f 93 push r17 + 3d22: 0f 93 push r16 + 3d24: 0e 94 2e 0a call 0x145c ; 0x145c __iRestore(): /Users/askn/Library/Arduino15/packages/MultiX-Zinnia/tools/avr-gcc/7.3.0-avr8-gnu-toolchain/avr/include/util/atomic.h:70 (void)__s; @@ -12911,493 +12911,493 @@ __iRestore(): static __inline__ void __iRestore(const uint8_t *__s) { SREG = *__s; - 3d2c: ef be out 0x3f, r14 ; 63 + 3d28: ef be out 0x3f, r14 ; 63 jtag_scope_updi(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:416 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:416 USART::change_updi(); _rspsize = Timeout::command(&connect); - 3d2e: 85 ed ldi r24, 0xD5 ; 213 - 3d30: 91 e1 ldi r25, 0x11 ; 17 - 3d32: 0e 94 3a 15 call 0x2a74 ; 0x2a74 - 3d36: 7c 01 movw r14, r24 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:418 + 3d2a: 85 ed ldi r24, 0xD5 ; 213 + 3d2c: 91 e1 ldi r25, 0x11 ; 17 + 3d2e: 0e 94 3a 15 call 0x2a74 ; 0x2a74 + 3d32: 7c 01 movw r14, r24 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:418 /* If it fails here, it is expected to try again, giving it a chance at HV control. */ packet.in.res = _rspsize ? 0x84 : 0xA0; /* RSP3_DATA : RSP3_FAILED */ - 3d38: cd bf out 0x3d, r28 ; 61 - 3d3a: de bf out 0x3e, r29 ; 62 + 3d34: cd bf out 0x3d, r28 ; 61 + 3d36: de bf out 0x3e, r29 ; 62 main(): - 3d3c: 84 e8 ldi r24, 0x84 ; 132 - 3d3e: 90 e0 ldi r25, 0x00 ; 0 + 3d38: 84 e8 ldi r24, 0x84 ; 132 + 3d3a: 90 e0 ldi r25, 0x00 ; 0 jtag_scope_updi(): - 3d40: e1 14 cp r14, r1 - 3d42: f1 04 cpc r15, r1 - 3d44: 09 f0 breq .+2 ; 0x3d48 - 3d46: bc c0 rjmp .+376 ; 0x3ec0 + 3d3c: e1 14 cp r14, r1 + 3d3e: f1 04 cpc r15, r1 + 3d40: 09 f0 breq .+2 ; 0x3d44 + 3d42: bc c0 rjmp .+376 ; 0x3ebc main(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:471 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:471 else if (_cmd == 0x23) { /* CMD3_WRITE_MEMORY */ D1PRINTF(" UPDI_WRITE=%02X:%06lX:%04X\r\n", packet.out.bMType, packet.out.dwAddr, (size_t)packet.out.dwLength); _rspsize = Timeout::command(Command_Table.write_memory); } packet.in.res = _rspsize ? 0x80 : 0xA0; /* RSP3_OK : RSP3_FAILED */ - 3d48: 80 ea ldi r24, 0xA0 ; 160 - 3d4a: 90 e0 ldi r25, 0x00 ; 0 - 3d4c: b9 c0 rjmp .+370 ; 0x3ec0 + 3d44: 80 ea ldi r24, 0xA0 ; 160 + 3d46: 90 e0 ldi r25, 0x00 ; 0 + 3d48: b9 c0 rjmp .+370 ; 0x3ebc jtag_scope_updi(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:421 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:421 _rspsize = Timeout::command(&connect); /* If it fails here, it is expected to try again, giving it a chance at HV control. */ packet.in.res = _rspsize ? 0x84 : 0xA0; /* RSP3_DATA : RSP3_FAILED */ return _rspsize; } else if (_cmd == 0x11) { /* CMD3_SIGN_OFF */ - 3d4e: 91 e1 ldi r25, 0x11 ; 17 - 3d50: f9 12 cpse r15, r25 - 3d52: 1f c0 rjmp .+62 ; 0x3d92 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:422 + 3d4a: 91 e1 ldi r25, 0x11 ; 17 + 3d4c: f9 12 cpse r15, r25 + 3d4e: 1f c0 rjmp .+62 ; 0x3d8e +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:422 D1PRINTF(" UPDI_SIGN_OFF\r\n"); - 3d54: 84 e0 ldi r24, 0x04 ; 4 - 3d56: 94 e0 ldi r25, 0x04 ; 4 - 3d58: 9f 93 push r25 - 3d5a: 8f 93 push r24 - 3d5c: 1f 93 push r17 - 3d5e: 0f 93 push r16 - 3d60: 0e 94 2e 0a call 0x145c ; 0x145c -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:424 + 3d50: 84 e0 ldi r24, 0x04 ; 4 + 3d52: 94 e0 ldi r25, 0x04 ; 4 + 3d54: 9f 93 push r25 + 3d56: 8f 93 push r24 + 3d58: 1f 93 push r17 + 3d5a: 0f 93 push r16 + 3d5c: 0e 94 2e 0a call 0x145c ; 0x145c +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:424 /* If UPDI control has failed, RSP3_OK is always returned. */ _rspsize = bit_is_set(PGCONF, PGCONF_UPDI_bp) ? Timeout::command(&disconnect) : 1; + 3d60: 0f 90 pop r0 + 3d62: 0f 90 pop r0 3d64: 0f 90 pop r0 3d66: 0f 90 pop r0 - 3d68: 0f 90 pop r0 - 3d6a: 0f 90 pop r0 - 3d6c: e8 9b sbis 0x1d, 0 ; 29 - 3d6e: 0d c0 rjmp .+26 ; 0x3d8a - 3d70: 8e ea ldi r24, 0xAE ; 174 - 3d72: 91 e1 ldi r25, 0x11 ; 17 - 3d74: 0e 94 3a 15 call 0x2a74 ; 0x2a74 - 3d78: 7c 01 movw r14, r24 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:425 + 3d68: e8 9b sbis 0x1d, 0 ; 29 + 3d6a: 0d c0 rjmp .+26 ; 0x3d86 + 3d6c: 8e ea ldi r24, 0xAE ; 174 + 3d6e: 91 e1 ldi r25, 0x11 ; 17 + 3d70: 0e 94 3a 15 call 0x2a74 ; 0x2a74 + 3d74: 7c 01 movw r14, r24 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:425 USART::setup(); - 3d7a: 0e 94 97 0f call 0x1f2e ; 0x1f2e -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:426 + 3d76: 0e 94 97 0f call 0x1f2e ; 0x1f2e +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:426 USART::change_vcp(); - 3d7e: 0e 94 52 0a call 0x14a4 ; 0x14a4 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:471 + 3d7a: 0e 94 52 0a call 0x14a4 ; 0x14a4 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:471 else if (_cmd == 0x23) { /* CMD3_WRITE_MEMORY */ D1PRINTF(" UPDI_WRITE=%02X:%06lX:%04X\r\n", packet.out.bMType, packet.out.dwAddr, (size_t)packet.out.dwLength); _rspsize = Timeout::command(Command_Table.write_memory); } packet.in.res = _rspsize ? 0x80 : 0xA0; /* RSP3_OK : RSP3_FAILED */ - 3d82: e1 14 cp r14, r1 - 3d84: f1 04 cpc r15, r1 - 3d86: 01 f3 breq .-64 ; 0x3d48 - 3d88: 31 c0 rjmp .+98 ; 0x3dec + 3d7e: e1 14 cp r14, r1 + 3d80: f1 04 cpc r15, r1 + 3d82: 01 f3 breq .-64 ; 0x3d44 + 3d84: 31 c0 rjmp .+98 ; 0x3de8 main(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:424 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:424 return _rspsize; } else if (_cmd == 0x11) { /* CMD3_SIGN_OFF */ D1PRINTF(" UPDI_SIGN_OFF\r\n"); /* If UPDI control has failed, RSP3_OK is always returned. */ _rspsize = bit_is_set(PGCONF, PGCONF_UPDI_bp) ? Timeout::command(&disconnect) : 1; - 3d8a: ee 24 eor r14, r14 - 3d8c: e3 94 inc r14 - 3d8e: f1 2c mov r15, r1 - 3d90: f4 cf rjmp .-24 ; 0x3d7a + 3d86: ee 24 eor r14, r14 + 3d88: e3 94 inc r14 + 3d8a: f1 2c mov r15, r1 + 3d8c: f4 cf rjmp .-24 ; 0x3d76 jtag_scope_updi(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:428 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:428 USART::setup(); USART::change_vcp(); } else if (_cmd == 0x15) { /* CMD3_ENTER_PROGMODE */ - 3d92: e5 e1 ldi r30, 0x15 ; 21 - 3d94: fe 12 cpse r15, r30 - 3d96: 18 c0 rjmp .+48 ; 0x3dc8 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:429 + 3d8e: e5 e1 ldi r30, 0x15 ; 21 + 3d90: fe 12 cpse r15, r30 + 3d92: 18 c0 rjmp .+48 ; 0x3dc4 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:429 D1PRINTF(" UPDI_ENTER_PROG\r\n"); - 3d98: 81 ef ldi r24, 0xF1 ; 241 - 3d9a: 93 e0 ldi r25, 0x03 ; 3 - 3d9c: 9f 93 push r25 - 3d9e: 8f 93 push r24 - 3da0: 1f 93 push r17 - 3da2: 0f 93 push r16 - 3da4: 0e 94 2e 0a call 0x145c ; 0x145c -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:432 + 3d94: 81 ef ldi r24, 0xF1 ; 241 + 3d96: 93 e0 ldi r25, 0x03 ; 3 + 3d98: 9f 93 push r25 + 3d9a: 8f 93 push r24 + 3d9c: 1f 93 push r17 + 3d9e: 0f 93 push r16 + 3da0: 0e 94 2e 0a call 0x145c ; 0x145c +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:432 /* On failure, RSP3_OK is returned if a UPDI connection is available. */ /* Locked devices are given the opportunity to write to USERROW and erase the chip. */ _rspsize = Timeout::command(&enter_progmode) || bit_is_set(PGCONF, PGCONF_UPDI_bp); - 3da8: 84 eb ldi r24, 0xB4 ; 180 - 3daa: 9f e0 ldi r25, 0x0F ; 15 - 3dac: 0e 94 3a 15 call 0x2a74 ; 0x2a74 + 3da4: 84 eb ldi r24, 0xB4 ; 180 + 3da6: 9f e0 ldi r25, 0x0F ; 15 + 3da8: 0e 94 3a 15 call 0x2a74 ; 0x2a74 + 3dac: 0f 90 pop r0 + 3dae: 0f 90 pop r0 3db0: 0f 90 pop r0 3db2: 0f 90 pop r0 - 3db4: 0f 90 pop r0 - 3db6: 0f 90 pop r0 - 3db8: 89 2b or r24, r25 - 3dba: 21 f4 brne .+8 ; 0x3dc4 - 3dbc: ed b2 in r14, 0x1d ; 29 - 3dbe: fe 2d mov r31, r14 - 3dc0: f1 70 andi r31, 0x01 ; 1 - 3dc2: ef 2e mov r14, r31 - 3dc4: f1 2c mov r15, r1 - 3dc6: dd cf rjmp .-70 ; 0x3d82 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:434 + 3db4: 89 2b or r24, r25 + 3db6: 21 f4 brne .+8 ; 0x3dc0 + 3db8: ed b2 in r14, 0x1d ; 29 + 3dba: fe 2d mov r31, r14 + 3dbc: f1 70 andi r31, 0x01 ; 1 + 3dbe: ef 2e mov r14, r31 + 3dc0: f1 2c mov r15, r1 + 3dc2: dd cf rjmp .-70 ; 0x3d7e +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:434 } else if (_cmd == 0x16) { /* CMD3_LEAVE_PROGMODE */ - 3dc8: 26 e1 ldi r18, 0x16 ; 22 - 3dca: f2 12 cpse r15, r18 - 3dcc: 12 c0 rjmp .+36 ; 0x3df2 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:435 + 3dc4: 26 e1 ldi r18, 0x16 ; 22 + 3dc6: f2 12 cpse r15, r18 + 3dc8: 12 c0 rjmp .+36 ; 0x3dee +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:435 D1PRINTF(" UPDI_LEAVE_PROG\r\n"); - 3dce: 8e ed ldi r24, 0xDE ; 222 - 3dd0: 93 e0 ldi r25, 0x03 ; 3 - 3dd2: 9f 93 push r25 - 3dd4: 8f 93 push r24 - 3dd6: 1f 93 push r17 - 3dd8: 0f 93 push r16 - 3dda: 0e 94 2e 0a call 0x145c ; 0x145c + 3dca: 8e ed ldi r24, 0xDE ; 222 + 3dcc: 93 e0 ldi r25, 0x03 ; 3 + 3dce: 9f 93 push r25 + 3dd0: 8f 93 push r24 + 3dd2: 1f 93 push r17 + 3dd4: 0f 93 push r16 + 3dd6: 0e 94 2e 0a call 0x145c ; 0x145c + 3dda: 0f 90 pop r0 + 3ddc: 0f 90 pop r0 3dde: 0f 90 pop r0 3de0: 0f 90 pop r0 - 3de2: 0f 90 pop r0 - 3de4: 0f 90 pop r0 main(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:438 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:438 /* There is nothing to do. */ /* The actual termination process is delayed until CMD3_SIGN_OFF. */ _rspsize = 1; - 3de6: ee 24 eor r14, r14 - 3de8: e3 94 inc r14 - 3dea: f1 2c mov r15, r1 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:471 + 3de2: ee 24 eor r14, r14 + 3de4: e3 94 inc r14 + 3de6: f1 2c mov r15, r1 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:471 else if (_cmd == 0x23) { /* CMD3_WRITE_MEMORY */ D1PRINTF(" UPDI_WRITE=%02X:%06lX:%04X\r\n", packet.out.bMType, packet.out.dwAddr, (size_t)packet.out.dwLength); _rspsize = Timeout::command(Command_Table.write_memory); } packet.in.res = _rspsize ? 0x80 : 0xA0; /* RSP3_OK : RSP3_FAILED */ - 3dec: 80 e8 ldi r24, 0x80 ; 128 - 3dee: 90 e0 ldi r25, 0x00 ; 0 - 3df0: 67 c0 rjmp .+206 ; 0x3ec0 + 3de8: 80 e8 ldi r24, 0x80 ; 128 + 3dea: 90 e0 ldi r25, 0x00 ; 0 + 3dec: 67 c0 rjmp .+206 ; 0x3ebc jtag_scope_updi(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:440 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:440 D1PRINTF(" UPDI_LEAVE_PROG\r\n"); /* There is nothing to do. */ /* The actual termination process is delayed until CMD3_SIGN_OFF. */ _rspsize = 1; } else if (_cmd == 0x20) { /* CMD3_ERASE_MEMORY */ - 3df2: 30 e2 ldi r19, 0x20 ; 32 - 3df4: f3 12 cpse r15, r19 - 3df6: 20 c0 rjmp .+64 ; 0x3e38 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:441 + 3dee: 30 e2 ldi r19, 0x20 ; 32 + 3df0: f3 12 cpse r15, r19 + 3df2: 20 c0 rjmp .+64 ; 0x3e34 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:441 D1PRINTF(" UPDI_ERASE=%02X:%06lX\r\n", - 3df8: 80 91 d9 60 lds r24, 0x60D9 ; 0x8060d9 - 3dfc: 8f 93 push r24 - 3dfe: 80 91 d8 60 lds r24, 0x60D8 ; 0x8060d8 - 3e02: 8f 93 push r24 - 3e04: 80 91 d7 60 lds r24, 0x60D7 ; 0x8060d7 - 3e08: 8f 93 push r24 - 3e0a: 80 91 d6 60 lds r24, 0x60D6 ; 0x8060d6 - 3e0e: 8f 93 push r24 - 3e10: 1f 92 push r1 - 3e12: df 92 push r13 - 3e14: 85 ec ldi r24, 0xC5 ; 197 - 3e16: 93 e0 ldi r25, 0x03 ; 3 - 3e18: 9f 93 push r25 - 3e1a: 8f 93 push r24 - 3e1c: 1f 93 push r17 - 3e1e: 0f 93 push r16 - 3e20: 0e 94 2e 0a call 0x145c ; 0x145c -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:443 + 3df4: 80 91 d9 60 lds r24, 0x60D9 ; 0x8060d9 + 3df8: 8f 93 push r24 + 3dfa: 80 91 d8 60 lds r24, 0x60D8 ; 0x8060d8 + 3dfe: 8f 93 push r24 + 3e00: 80 91 d7 60 lds r24, 0x60D7 ; 0x8060d7 + 3e04: 8f 93 push r24 + 3e06: 80 91 d6 60 lds r24, 0x60D6 ; 0x8060d6 + 3e0a: 8f 93 push r24 + 3e0c: 1f 92 push r1 + 3e0e: df 92 push r13 + 3e10: 85 ec ldi r24, 0xC5 ; 197 + 3e12: 93 e0 ldi r25, 0x03 ; 3 + 3e14: 9f 93 push r25 + 3e16: 8f 93 push r24 + 3e18: 1f 93 push r17 + 3e1a: 0f 93 push r16 + 3e1c: 0e 94 2e 0a call 0x145c ; 0x145c +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:443 packet.out.bEType, packet.out.dwPageAddr); _rspsize = Timeout::command(Command_Table.erase_memory); - 3e24: 80 91 12 63 lds r24, 0x6312 ; 0x806312 - 3e28: 90 91 13 63 lds r25, 0x6313 ; 0x806313 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:469 + 3e20: 80 91 12 63 lds r24, 0x6312 ; 0x806312 + 3e24: 90 91 13 63 lds r25, 0x6313 ; 0x806313 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:469 return _rspsize; } else if (_cmd == 0x23) { /* CMD3_WRITE_MEMORY */ D1PRINTF(" UPDI_WRITE=%02X:%06lX:%04X\r\n", packet.out.bMType, packet.out.dwAddr, (size_t)packet.out.dwLength); _rspsize = Timeout::command(Command_Table.write_memory); - 3e2c: 0e 94 3a 15 call 0x2a74 ; 0x2a74 - 3e30: 7c 01 movw r14, r24 - 3e32: cd bf out 0x3d, r28 ; 61 - 3e34: de bf out 0x3e, r29 ; 62 - 3e36: a5 cf rjmp .-182 ; 0x3d82 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:445 + 3e28: 0e 94 3a 15 call 0x2a74 ; 0x2a74 + 3e2c: 7c 01 movw r14, r24 + 3e2e: cd bf out 0x3d, r28 ; 61 + 3e30: de bf out 0x3e, r29 ; 62 + 3e32: a5 cf rjmp .-182 ; 0x3d7e +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:445 else if (_cmd == 0x20) { /* CMD3_ERASE_MEMORY */ D1PRINTF(" UPDI_ERASE=%02X:%06lX\r\n", packet.out.bEType, packet.out.dwPageAddr); _rspsize = Timeout::command(Command_Table.erase_memory); } else if (bit_is_clear(PGCONF, PGCONF_UPDI_bp)) { /* empty */ } - 3e38: e8 9b sbis 0x1d, 0 ; 29 - 3e3a: 92 c0 rjmp .+292 ; 0x3f60 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:446 + 3e34: e8 9b sbis 0x1d, 0 ; 29 + 3e36: 92 c0 rjmp .+292 ; 0x3f5c +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:446 else if (_cmd == 0x21) { /* CMD3_READ_MEMORY */ - 3e3c: 91 e2 ldi r25, 0x21 ; 33 - 3e3e: f9 12 cpse r15, r25 - 3e40: 6b c0 rjmp .+214 ; 0x3f18 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:447 + 3e38: 91 e2 ldi r25, 0x21 ; 33 + 3e3a: f9 12 cpse r15, r25 + 3e3c: 6b c0 rjmp .+214 ; 0x3f14 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:447 D1PRINTF(" UPDI_READ=%02X:%06lX:%04X\r\n", packet.out.bMType, - 3e42: 80 91 db 60 lds r24, 0x60DB ; 0x8060db - 3e46: 8f 93 push r24 - 3e48: 80 91 da 60 lds r24, 0x60DA ; 0x8060da - 3e4c: 8f 93 push r24 - 3e4e: 80 91 d9 60 lds r24, 0x60D9 ; 0x8060d9 - 3e52: 8f 93 push r24 - 3e54: 80 91 d8 60 lds r24, 0x60D8 ; 0x8060d8 - 3e58: 8f 93 push r24 - 3e5a: 80 91 d7 60 lds r24, 0x60D7 ; 0x8060d7 - 3e5e: 8f 93 push r24 - 3e60: 80 91 d6 60 lds r24, 0x60D6 ; 0x8060d6 - 3e64: 8f 93 push r24 - 3e66: 1f 92 push r1 - 3e68: df 92 push r13 - 3e6a: 88 ea ldi r24, 0xA8 ; 168 - 3e6c: 93 e0 ldi r25, 0x03 ; 3 - 3e6e: 9f 93 push r25 - 3e70: 8f 93 push r24 - 3e72: 1f 93 push r17 - 3e74: 0f 93 push r16 - 3e76: 0e 94 2e 0a call 0x145c ; 0x145c -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:449 + 3e3e: 80 91 db 60 lds r24, 0x60DB ; 0x8060db + 3e42: 8f 93 push r24 + 3e44: 80 91 da 60 lds r24, 0x60DA ; 0x8060da + 3e48: 8f 93 push r24 + 3e4a: 80 91 d9 60 lds r24, 0x60D9 ; 0x8060d9 + 3e4e: 8f 93 push r24 + 3e50: 80 91 d8 60 lds r24, 0x60D8 ; 0x8060d8 + 3e54: 8f 93 push r24 + 3e56: 80 91 d7 60 lds r24, 0x60D7 ; 0x8060d7 + 3e5a: 8f 93 push r24 + 3e5c: 80 91 d6 60 lds r24, 0x60D6 ; 0x8060d6 + 3e60: 8f 93 push r24 + 3e62: 1f 92 push r1 + 3e64: df 92 push r13 + 3e66: 88 ea ldi r24, 0xA8 ; 168 + 3e68: 93 e0 ldi r25, 0x03 ; 3 + 3e6a: 9f 93 push r25 + 3e6c: 8f 93 push r24 + 3e6e: 1f 93 push r17 + 3e70: 0f 93 push r16 + 3e72: 0e 94 2e 0a call 0x145c ; 0x145c +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:449 packet.out.dwAddr, (size_t)packet.out.dwLength); uint8_t m_type = packet.out.bMType; - 3e7a: 80 91 d5 60 lds r24, 0x60D5 ; 0x8060d5 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:450 + 3e76: 80 91 d5 60 lds r24, 0x60D5 ; 0x8060d5 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:450 size_t _wLength = packet.out.dwLength; - 3e7e: e0 90 da 60 lds r14, 0x60DA ; 0x8060da - 3e82: f0 90 db 60 lds r15, 0x60DB ; 0x8060db -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:451 + 3e7a: e0 90 da 60 lds r14, 0x60DA ; 0x8060da + 3e7e: f0 90 db 60 lds r15, 0x60DB ; 0x8060db +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:451 if (m_type == 0xD3) { /* MTYPE_SIB */ - 3e86: cd bf out 0x3d, r28 ; 61 - 3e88: de bf out 0x3e, r29 ; 62 - 3e8a: 83 3d cpi r24, 0xD3 ; 211 - 3e8c: f1 f4 brne .+60 ; 0x3eca -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:453 + 3e82: cd bf out 0x3d, r28 ; 61 + 3e84: de bf out 0x3e, r29 ; 62 + 3e86: 83 3d cpi r24, 0xD3 ; 211 + 3e88: f1 f4 brne .+60 ; 0x3ec6 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:453 /* The SIB request occurs before ENTER_PROGMODE. */ memcpy(&packet.in.data[(uint8_t)packet.out.dwAddr & 31], &_sib, ((_wLength - 1) & 31) + 1); - 3e8e: 80 91 d6 60 lds r24, 0x60D6 ; 0x8060d6 - 3e92: 8f 71 andi r24, 0x1F ; 31 - 3e94: 90 e0 ldi r25, 0x00 ; 0 - 3e96: a7 01 movw r20, r14 - 3e98: 41 50 subi r20, 0x01 ; 1 - 3e9a: 51 09 sbc r21, r1 - 3e9c: 4f 71 andi r20, 0x1F ; 31 - 3e9e: 55 27 eor r21, r21 - 3ea0: 4f 5f subi r20, 0xFF ; 255 - 3ea2: 5f 4f sbci r21, 0xFF ; 255 - 3ea4: 6e ee ldi r22, 0xEE ; 238 - 3ea6: 72 e6 ldi r23, 0x62 ; 98 - 3ea8: 8b 52 subi r24, 0x2B ; 43 - 3eaa: 9f 49 sbci r25, 0x9F ; 159 - 3eac: 85 d5 rcall .+2826 ; 0x49b8 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:454 + 3e8a: 80 91 d6 60 lds r24, 0x60D6 ; 0x8060d6 + 3e8e: 8f 71 andi r24, 0x1F ; 31 + 3e90: 90 e0 ldi r25, 0x00 ; 0 + 3e92: a7 01 movw r20, r14 + 3e94: 41 50 subi r20, 0x01 ; 1 + 3e96: 51 09 sbc r21, r1 + 3e98: 4f 71 andi r20, 0x1F ; 31 + 3e9a: 55 27 eor r21, r21 + 3e9c: 4f 5f subi r20, 0xFF ; 255 + 3e9e: 5f 4f sbci r21, 0xFF ; 255 + 3ea0: 6e ee ldi r22, 0xEE ; 238 + 3ea2: 72 e6 ldi r23, 0x62 ; 98 + 3ea4: 8b 52 subi r24, 0x2B ; 43 + 3ea6: 9f 49 sbci r25, 0x9F ; 159 + 3ea8: 85 d5 rcall .+2826 ; 0x49b4 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:454 _rspsize = _wLength + 1; - 3eae: ff ef ldi r31, 0xFF ; 255 - 3eb0: ef 1a sub r14, r31 - 3eb2: ff 0a sbc r15, r31 + 3eaa: ff ef ldi r31, 0xFF ; 255 + 3eac: ef 1a sub r14, r31 + 3eae: ff 0a sbc r15, r31 main(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:463 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:463 } /* If not in PROGMODE, respond with a dummy. */ /* A dummy SIG will be returned for locked devices. */ /* This will prevent AVRDUDE from displaying annoying errors. */ else _rspsize = read_dummy(); packet.in.res = _rspsize ? 0x184 : 0xA0; - 3eb4: 84 e8 ldi r24, 0x84 ; 132 - 3eb6: 91 e0 ldi r25, 0x01 ; 1 + 3eb0: 84 e8 ldi r24, 0x84 ; 132 + 3eb2: 91 e0 ldi r25, 0x01 ; 1 jtag_scope_updi(): - 3eb8: e1 14 cp r14, r1 - 3eba: f1 04 cpc r15, r1 - 3ebc: 09 f4 brne .+2 ; 0x3ec0 - 3ebe: 44 cf rjmp .-376 ; 0x3d48 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:471 + 3eb4: e1 14 cp r14, r1 + 3eb6: f1 04 cpc r15, r1 + 3eb8: 09 f4 brne .+2 ; 0x3ebc + 3eba: 44 cf rjmp .-376 ; 0x3d44 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:471 else if (_cmd == 0x23) { /* CMD3_WRITE_MEMORY */ D1PRINTF(" UPDI_WRITE=%02X:%06lX:%04X\r\n", packet.out.bMType, packet.out.dwAddr, (size_t)packet.out.dwLength); _rspsize = Timeout::command(Command_Table.write_memory); } packet.in.res = _rspsize ? 0x80 : 0xA0; /* RSP3_OK : RSP3_FAILED */ - 3ec0: 80 93 d3 60 sts 0x60D3, r24 ; 0x8060d3 - 3ec4: 90 93 d4 60 sts 0x60D4, r25 ; 0x8060d4 - 3ec8: 86 cc rjmp .-1780 ; 0x37d6 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:456 + 3ebc: 80 93 d3 60 sts 0x60D3, r24 ; 0x8060d3 + 3ec0: 90 93 d4 60 sts 0x60D4, r25 ; 0x8060d4 + 3ec4: 86 cc rjmp .-1780 ; 0x37d2 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:456 if (m_type == 0xD3) { /* MTYPE_SIB */ /* The SIB request occurs before ENTER_PROGMODE. */ memcpy(&packet.in.data[(uint8_t)packet.out.dwAddr & 31], &_sib, ((_wLength - 1) & 31) + 1); _rspsize = _wLength + 1; } else if (bit_is_set(PGCONF, PGCONF_PROG_bp)) { - 3eca: e9 9b sbis 0x1d, 1 ; 29 - 3ecc: 08 c0 rjmp .+16 ; 0x3ede -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:457 + 3ec6: e9 9b sbis 0x1d, 1 ; 29 + 3ec8: 08 c0 rjmp .+16 ; 0x3eda +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:457 _rspsize = Timeout::command(Command_Table.read_memory); - 3ece: 80 91 10 63 lds r24, 0x6310 ; 0x806310 - 3ed2: 90 91 11 63 lds r25, 0x6311 ; 0x806311 - 3ed6: 0e 94 3a 15 call 0x2a74 ; 0x2a74 - 3eda: 7c 01 movw r14, r24 - 3edc: eb cf rjmp .-42 ; 0x3eb4 + 3eca: 80 91 10 63 lds r24, 0x6310 ; 0x806310 + 3ece: 90 91 11 63 lds r25, 0x6311 ; 0x806311 + 3ed2: 0e 94 3a 15 call 0x2a74 ; 0x2a74 + 3ed6: 7c 01 movw r14, r24 + 3ed8: eb cf rjmp .-42 ; 0x3eb0 read_dummy(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:309 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:309 * Read dummy memory if necessary. */ size_t read_dummy (void) { uint8_t m_type = packet.out.bMType; size_t _wLength = packet.out.dwLength; if (m_type == 0xB4 && _sib[0]) { - 3ede: 84 3b cpi r24, 0xB4 ; 180 - 3ee0: a1 f4 brne .+40 ; 0x3f0a - 3ee2: 80 91 ee 62 lds r24, 0x62EE ; 0x8062ee <_sib> - 3ee6: 88 23 and r24, r24 - 3ee8: 81 f0 breq .+32 ; 0x3f0a -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:312 + 3eda: 84 3b cpi r24, 0xB4 ; 180 + 3edc: a1 f4 brne .+40 ; 0x3f06 + 3ede: 80 91 ee 62 lds r24, 0x62EE ; 0x8062ee <_sib> + 3ee2: 88 23 and r24, r24 + 3ee4: 81 f0 breq .+32 ; 0x3f06 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:312 /* The SIGNATURE of a locked device cannot be read. */ /* But, the SIB can be read, so a Dummy SIGNATURE is returned. */ packet.in.data[0] = 0x1E; - 3eea: 9e e1 ldi r25, 0x1E ; 30 - 3eec: 90 93 d5 60 sts 0x60D5, r25 ; 0x8060d5 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:313 + 3ee6: 9e e1 ldi r25, 0x1E ; 30 + 3ee8: 90 93 d5 60 sts 0x60D5, r25 ; 0x8060d5 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:313 packet.in.data[1] = _sib[0] == ' ' ? 'A' : _sib[0]; - 3ef0: 80 32 cpi r24, 0x20 ; 32 - 3ef2: 09 f4 brne .+2 ; 0x3ef6 + 3eec: 80 32 cpi r24, 0x20 ; 32 + 3eee: 09 f4 brne .+2 ; 0x3ef2 main(): - 3ef4: 81 e4 ldi r24, 0x41 ; 65 + 3ef0: 81 e4 ldi r24, 0x41 ; 65 read_dummy(): - 3ef6: 80 93 d6 60 sts 0x60D6, r24 ; 0x8060d6 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:314 + 3ef2: 80 93 d6 60 sts 0x60D6, r24 ; 0x8060d6 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:314 packet.in.data[2] = _sib[10]; - 3efa: 80 91 f8 62 lds r24, 0x62F8 ; 0x8062f8 <_sib+0xa> - 3efe: 80 93 d7 60 sts 0x60D7, r24 ; 0x8060d7 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:317 + 3ef6: 80 91 f8 62 lds r24, 0x62F8 ; 0x8062f8 <_sib+0xa> + 3efa: 80 93 d7 60 sts 0x60D7, r24 ; 0x8060d7 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:317 } else memset(&packet.in.data[0], 0xFF, _wLength); return _wLength + 1; - 3f02: 2f ef ldi r18, 0xFF ; 255 - 3f04: e2 1a sub r14, r18 - 3f06: f2 0a sbc r15, r18 - 3f08: d5 cf rjmp .-86 ; 0x3eb4 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:316 + 3efe: 2f ef ldi r18, 0xFF ; 255 + 3f00: e2 1a sub r14, r18 + 3f02: f2 0a sbc r15, r18 + 3f04: d5 cf rjmp .-86 ; 0x3eb0 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:316 /* But, the SIB can be read, so a Dummy SIGNATURE is returned. */ packet.in.data[0] = 0x1E; packet.in.data[1] = _sib[0] == ' ' ? 'A' : _sib[0]; packet.in.data[2] = _sib[10]; } else memset(&packet.in.data[0], 0xFF, _wLength); - 3f0a: a7 01 movw r20, r14 - 3f0c: 6f ef ldi r22, 0xFF ; 255 - 3f0e: 70 e0 ldi r23, 0x00 ; 0 - 3f10: 85 ed ldi r24, 0xD5 ; 213 - 3f12: 90 e6 ldi r25, 0x60 ; 96 - 3f14: 5a d5 rcall .+2740 ; 0x49ca - 3f16: f5 cf rjmp .-22 ; 0x3f02 + 3f06: a7 01 movw r20, r14 + 3f08: 6f ef ldi r22, 0xFF ; 255 + 3f0a: 70 e0 ldi r23, 0x00 ; 0 + 3f0c: 85 ed ldi r24, 0xD5 ; 213 + 3f0e: 90 e6 ldi r25, 0x60 ; 96 + 3f10: 5a d5 rcall .+2740 ; 0x49c6 + 3f12: f5 cf rjmp .-22 ; 0x3efe jtag_scope_updi(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:466 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:466 /* This will prevent AVRDUDE from displaying annoying errors. */ else _rspsize = read_dummy(); packet.in.res = _rspsize ? 0x184 : 0xA0; return _rspsize; } else if (_cmd == 0x23) { /* CMD3_WRITE_MEMORY */ - 3f18: 33 e2 ldi r19, 0x23 ; 35 - 3f1a: f3 12 cpse r15, r19 - 3f1c: 21 c0 rjmp .+66 ; 0x3f60 -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:467 + 3f14: 33 e2 ldi r19, 0x23 ; 35 + 3f16: f3 12 cpse r15, r19 + 3f18: 21 c0 rjmp .+66 ; 0x3f5c +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:467 D1PRINTF(" UPDI_WRITE=%02X:%06lX:%04X\r\n", packet.out.bMType, - 3f1e: 80 91 db 60 lds r24, 0x60DB ; 0x8060db - 3f22: 8f 93 push r24 - 3f24: 80 91 da 60 lds r24, 0x60DA ; 0x8060da - 3f28: 8f 93 push r24 - 3f2a: 80 91 d9 60 lds r24, 0x60D9 ; 0x8060d9 - 3f2e: 8f 93 push r24 - 3f30: 80 91 d8 60 lds r24, 0x60D8 ; 0x8060d8 - 3f34: 8f 93 push r24 - 3f36: 80 91 d7 60 lds r24, 0x60D7 ; 0x8060d7 - 3f3a: 8f 93 push r24 - 3f3c: 80 91 d6 60 lds r24, 0x60D6 ; 0x8060d6 - 3f40: 8f 93 push r24 - 3f42: 1f 92 push r1 - 3f44: df 92 push r13 - 3f46: 8a e8 ldi r24, 0x8A ; 138 - 3f48: 93 e0 ldi r25, 0x03 ; 3 - 3f4a: 9f 93 push r25 - 3f4c: 8f 93 push r24 - 3f4e: 1f 93 push r17 - 3f50: 0f 93 push r16 - 3f52: 0e 94 2e 0a call 0x145c ; 0x145c -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:469 + 3f1a: 80 91 db 60 lds r24, 0x60DB ; 0x8060db + 3f1e: 8f 93 push r24 + 3f20: 80 91 da 60 lds r24, 0x60DA ; 0x8060da + 3f24: 8f 93 push r24 + 3f26: 80 91 d9 60 lds r24, 0x60D9 ; 0x8060d9 + 3f2a: 8f 93 push r24 + 3f2c: 80 91 d8 60 lds r24, 0x60D8 ; 0x8060d8 + 3f30: 8f 93 push r24 + 3f32: 80 91 d7 60 lds r24, 0x60D7 ; 0x8060d7 + 3f36: 8f 93 push r24 + 3f38: 80 91 d6 60 lds r24, 0x60D6 ; 0x8060d6 + 3f3c: 8f 93 push r24 + 3f3e: 1f 92 push r1 + 3f40: df 92 push r13 + 3f42: 8a e8 ldi r24, 0x8A ; 138 + 3f44: 93 e0 ldi r25, 0x03 ; 3 + 3f46: 9f 93 push r25 + 3f48: 8f 93 push r24 + 3f4a: 1f 93 push r17 + 3f4c: 0f 93 push r16 + 3f4e: 0e 94 2e 0a call 0x145c ; 0x145c +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:469 packet.out.dwAddr, (size_t)packet.out.dwLength); _rspsize = Timeout::command(Command_Table.write_memory); - 3f56: 80 91 14 63 lds r24, 0x6314 ; 0x806314 - 3f5a: 90 91 15 63 lds r25, 0x6315 ; 0x806315 - 3f5e: 66 cf rjmp .-308 ; 0x3e2c + 3f52: 80 91 14 63 lds r24, 0x6314 ; 0x806314 + 3f56: 90 91 15 63 lds r25, 0x6315 ; 0x806315 + 3f5a: 66 cf rjmp .-308 ; 0x3e28 main(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/updi.cpp:410 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/updi.cpp:410 return (*Command_Table.prog_init)(); } /* ARCH=UPDI scope Provides functionality. */ size_t jtag_scope_updi (void) { size_t _rspsize = 0; - 3f60: f1 2c mov r15, r1 - 3f62: e1 2c mov r14, r1 - 3f64: f1 ce rjmp .-542 ; 0x3d48 + 3f5c: f1 2c mov r15, r1 + 3f5e: e1 2c mov r14, r1 + 3f60: f1 ce rjmp .-542 ; 0x3d44 jtag_scope_avr_core(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:376 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:376 else packet.in.res = 0xA0; /* RSP3_FAILED */ - 3f66: 80 ea ldi r24, 0xA0 ; 160 - 3f68: 90 e0 ldi r25, 0x00 ; 0 - 3f6a: 95 cd rjmp .-1238 ; 0x3a96 + 3f62: 80 ea ldi r24, 0xA0 ; 160 + 3f64: 90 e0 ldi r25, 0x00 ; 0 + 3f66: 95 cd rjmp .-1238 ; 0x3a92 jtag_scope_branch(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:399 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:399 else if (_scope == 0x13) _rspsize = AVR32::jtag_scope_avr32(); /* SCOPE_AVR32 */ #endif else if (_scope == 0x12) _rspsize = jtag_scope_avr_core(); /* SCOPE_AVR */ #ifdef CONFIG_PGM_TPI_ENABLE /* The 14P models have limited TPI support due to insufficient pin count. */ else if (_scope == 0x14) _rspsize = TPI::jtag_scope_tpi(); /* SCOPE_AVR_TPI */ - 3f6c: 94 e1 ldi r25, 0x14 ; 20 - 3f6e: f9 12 cpse r15, r25 - 3f70: 46 c1 rjmp .+652 ; 0x41fe + 3f68: 94 e1 ldi r25, 0x14 ; 20 + 3f6a: f9 12 cpse r15, r25 + 3f6c: 46 c1 rjmp .+652 ; 0x41fa jtag_scope_tpi(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:301 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:301 * It doesn't seem to be implemented in the "mEDBG". * which means it will start immediately with XPRG_CMD_ENTER_PROGMODE. */ size_t jtag_scope_tpi (void) { size_t _rspsize = 0; /* Make final adjustments. */ uint8_t _cmd = packet.out.cmd; - 3f72: 80 91 d3 60 lds r24, 0x60D3 ; 0x8060d3 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:302 + 3f6e: 80 91 d3 60 lds r24, 0x60D3 ; 0x8060d3 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:302 if (_cmd == 0x01) { /* XPRG_CMD_ENTER_PROGMODE */ - 3f76: 81 30 cpi r24, 0x01 ; 1 - 3f78: 09 f0 breq .+2 ; 0x3f7c - 3f7a: 6c c0 rjmp .+216 ; 0x4054 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:303 + 3f72: 81 30 cpi r24, 0x01 ; 1 + 3f74: 09 f0 breq .+2 ; 0x3f78 + 3f76: 6c c0 rjmp .+216 ; 0x4050 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:303 D1PRINTF(" TPI_ENTER_PROGMODE\r\n"); - 3f7c: 8c ed ldi r24, 0xDC ; 220 - 3f7e: 95 e0 ldi r25, 0x05 ; 5 - 3f80: 9f 93 push r25 - 3f82: 8f 93 push r24 - 3f84: 1f 93 push r17 - 3f86: 0f 93 push r16 - 3f88: 0e 94 2e 0a call 0x145c ; 0x145c -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:304 + 3f78: 8c ed ldi r24, 0xDC ; 220 + 3f7a: 95 e0 ldi r25, 0x05 ; 5 + 3f7c: 9f 93 push r25 + 3f7e: 8f 93 push r24 + 3f80: 1f 93 push r17 + 3f82: 0f 93 push r16 + 3f84: 0e 94 2e 0a call 0x145c ; 0x145c +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:304 USART::setup(); - 3f8c: 0e 94 97 0f call 0x1f2e ; 0x1f2e + 3f88: 0e 94 97 0f call 0x1f2e ; 0x1f2e change_tpi(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/usart.cpp:96 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usart.cpp:96 } /*** Set up single-wire synchronous mode for TPI operation. ***/ /* The VCD-TxD is repurposed to transmit the synchronous clock. */ void change_tpi (void) { ATOMIC_BLOCK(ATOMIC_RESTORESTATE) { - 3f90: ff b6 in r15, 0x3f ; 63 + 3f8c: ff b6 in r15, 0x3f ; 63 __iCliRetVal(): /Users/askn/Library/Arduino15/packages/MultiX-Zinnia/tools/avr-gcc/7.3.0-avr8-gnu-toolchain/avr/include/util/atomic.h:50 return 1; @@ -13406,104 +13406,104 @@ __iCliRetVal(): static __inline__ uint8_t __iCliRetVal(void) { cli(); - 3f92: f8 94 cli + 3f8e: f8 94 cli change_tpi(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/usart.cpp:97 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usart.cpp:97 D1PRINTF(" UART=TPI\r\n"); - 3f94: 84 e4 ldi r24, 0x44 ; 68 - 3f96: 95 e0 ldi r25, 0x05 ; 5 - 3f98: 9f 93 push r25 - 3f9a: 8f 93 push r24 - 3f9c: 1f 93 push r17 - 3f9e: 0f 93 push r16 - 3fa0: 0e 94 2e 0a call 0x145c ; 0x145c -/Users/askn/Collaborator/UPDI4AVR-USB/src/usart.cpp:99 + 3f90: 84 e4 ldi r24, 0x44 ; 68 + 3f92: 95 e0 ldi r25, 0x05 ; 5 + 3f94: 9f 93 push r25 + 3f96: 8f 93 push r24 + 3f98: 1f 93 push r17 + 3f9a: 0f 93 push r16 + 3f9c: 0e 94 2e 0a call 0x145c ; 0x145c +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usart.cpp:99 /* In synchronous mode the formula is different. */ uint32_t _baud = ((F_CPU / 1000L) / _xclk + 1) / 2; - 3fa4: 20 91 18 60 lds r18, 0x6018 ; 0x806018 <_xclk> - 3fa8: 30 91 19 60 lds r19, 0x6019 ; 0x806019 <_xclk+0x1> - 3fac: 50 e0 ldi r21, 0x00 ; 0 - 3fae: 40 e0 ldi r20, 0x00 ; 0 - 3fb0: cd bf out 0x3d, r28 ; 61 - 3fb2: de bf out 0x3e, r29 ; 62 - 3fb4: 60 e2 ldi r22, 0x20 ; 32 - 3fb6: 7e e4 ldi r23, 0x4E ; 78 - 3fb8: 80 e0 ldi r24, 0x00 ; 0 - 3fba: 90 e0 ldi r25, 0x00 ; 0 - 3fbc: c7 d4 rcall .+2446 ; 0x494c <__divmodsi4> - 3fbe: da 01 movw r26, r20 - 3fc0: c9 01 movw r24, r18 - 3fc2: 01 96 adiw r24, 0x01 ; 1 - 3fc4: a1 1d adc r26, r1 - 3fc6: b1 1d adc r27, r1 - 3fc8: b5 95 asr r27 - 3fca: a7 95 ror r26 - 3fcc: 97 95 ror r25 - 3fce: 87 95 ror r24 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usart.cpp:100 + 3fa0: 20 91 18 60 lds r18, 0x6018 ; 0x806018 <_xclk> + 3fa4: 30 91 19 60 lds r19, 0x6019 ; 0x806019 <_xclk+0x1> + 3fa8: 50 e0 ldi r21, 0x00 ; 0 + 3faa: 40 e0 ldi r20, 0x00 ; 0 + 3fac: cd bf out 0x3d, r28 ; 61 + 3fae: de bf out 0x3e, r29 ; 62 + 3fb0: 60 e2 ldi r22, 0x20 ; 32 + 3fb2: 7e e4 ldi r23, 0x4E ; 78 + 3fb4: 80 e0 ldi r24, 0x00 ; 0 + 3fb6: 90 e0 ldi r25, 0x00 ; 0 + 3fb8: c7 d4 rcall .+2446 ; 0x4948 <__divmodsi4> + 3fba: da 01 movw r26, r20 + 3fbc: c9 01 movw r24, r18 + 3fbe: 01 96 adiw r24, 0x01 ; 1 + 3fc0: a1 1d adc r26, r1 + 3fc2: b1 1d adc r27, r1 + 3fc4: b5 95 asr r27 + 3fc6: a7 95 ror r26 + 3fc8: 97 95 ror r25 + 3fca: 87 95 ror r24 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usart.cpp:100 _baud <<= 6; - 3fd0: 36 e0 ldi r19, 0x06 ; 6 - 3fd2: 88 0f add r24, r24 - 3fd4: 99 1f adc r25, r25 - 3fd6: aa 1f adc r26, r26 - 3fd8: bb 1f adc r27, r27 - 3fda: 3a 95 dec r19 - 3fdc: d1 f7 brne .-12 ; 0x3fd2 -/Users/askn/Collaborator/UPDI4AVR-USB/src/usart.cpp:102 + 3fcc: 36 e0 ldi r19, 0x06 ; 6 + 3fce: 88 0f add r24, r24 + 3fd0: 99 1f adc r25, r25 + 3fd2: aa 1f adc r26, r26 + 3fd4: bb 1f adc r27, r27 + 3fd6: 3a 95 dec r19 + 3fd8: d1 f7 brne .-12 ; 0x3fce +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usart.cpp:102 if (_baud < 64) _baud = 64; PORTMUX_USARTROUTEA = PORTMUX_USART_UPDI; - 3fde: 20 e1 ldi r18, 0x10 ; 16 - 3fe0: 20 93 e2 05 sts 0x05E2, r18 ; 0x8005e2 <__TEXT_REGION_LENGTH__+0x7f05e2> -/Users/askn/Collaborator/UPDI4AVR-USB/src/usart.cpp:103 + 3fda: 20 e1 ldi r18, 0x10 ; 16 + 3fdc: 20 93 e2 05 sts 0x05E2, r18 ; 0x8005e2 <__TEXT_REGION_LENGTH__+0x7f05e2> +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usart.cpp:103 pinModeMacro(PIN_VCP_TXD, INPUT_PULLUP); - 3fe4: 02 98 cbi 0x00, 2 ; 0 - 3fe6: 28 e0 ldi r18, 0x08 ; 8 - 3fe8: 20 93 12 04 sts 0x0412, r18 ; 0x800412 <__TEXT_REGION_LENGTH__+0x7f0412> -/Users/askn/Collaborator/UPDI4AVR-USB/src/usart.cpp:104 + 3fe0: 02 98 cbi 0x00, 2 ; 0 + 3fe2: 28 e0 ldi r18, 0x08 ; 8 + 3fe4: 20 93 12 04 sts 0x0412, r18 ; 0x800412 <__TEXT_REGION_LENGTH__+0x7f0412> +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usart.cpp:104 USART0_STATUS = USART_DREIF_bm; - 3fec: 20 e2 ldi r18, 0x20 ; 32 - 3fee: 20 93 04 08 sts 0x0804, r18 ; 0x800804 <__TEXT_REGION_LENGTH__+0x7f0804> -/Users/askn/Collaborator/UPDI4AVR-USB/src/usart.cpp:105 + 3fe8: 20 e2 ldi r18, 0x20 ; 32 + 3fea: 20 93 04 08 sts 0x0804, r18 ; 0x800804 <__TEXT_REGION_LENGTH__+0x7f0804> +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usart.cpp:105 USART0_BAUD = _baud; - 3ff2: 80 34 cpi r24, 0x40 ; 64 - 3ff4: 91 05 cpc r25, r1 - 3ff6: a1 05 cpc r26, r1 - 3ff8: b1 05 cpc r27, r1 - 3ffa: 20 f4 brcc .+8 ; 0x4004 - 3ffc: 80 e4 ldi r24, 0x40 ; 64 - 3ffe: 90 e0 ldi r25, 0x00 ; 0 - 4000: a0 e0 ldi r26, 0x00 ; 0 - 4002: b0 e0 ldi r27, 0x00 ; 0 - 4004: 80 93 08 08 sts 0x0808, r24 ; 0x800808 <__TEXT_REGION_LENGTH__+0x7f0808> - 4008: 90 93 09 08 sts 0x0809, r25 ; 0x800809 <__TEXT_REGION_LENGTH__+0x7f0809> -/Users/askn/Collaborator/UPDI4AVR-USB/src/usart.cpp:106 + 3fee: 80 34 cpi r24, 0x40 ; 64 + 3ff0: 91 05 cpc r25, r1 + 3ff2: a1 05 cpc r26, r1 + 3ff4: b1 05 cpc r27, r1 + 3ff6: 20 f4 brcc .+8 ; 0x4000 + 3ff8: 80 e4 ldi r24, 0x40 ; 64 + 3ffa: 90 e0 ldi r25, 0x00 ; 0 + 3ffc: a0 e0 ldi r26, 0x00 ; 0 + 3ffe: b0 e0 ldi r27, 0x00 ; 0 + 4000: 80 93 08 08 sts 0x0808, r24 ; 0x800808 <__TEXT_REGION_LENGTH__+0x7f0808> + 4004: 90 93 09 08 sts 0x0809, r25 ; 0x800809 <__TEXT_REGION_LENGTH__+0x7f0809> +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usart.cpp:106 USART0_CTRLC = USART_CHSIZE_8BIT_gc | USART_PMODE_EVEN_gc | USART_CMODE_SYNCHRONOUS_gc | USART_SBMODE_2BIT_gc; - 400c: 8b e6 ldi r24, 0x6B ; 107 - 400e: 80 93 07 08 sts 0x0807, r24 ; 0x800807 <__TEXT_REGION_LENGTH__+0x7f0807> -/Users/askn/Collaborator/UPDI4AVR-USB/src/usart.cpp:107 + 4008: 8b e6 ldi r24, 0x6B ; 107 + 400a: 80 93 07 08 sts 0x0807, r24 ; 0x800807 <__TEXT_REGION_LENGTH__+0x7f0807> +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usart.cpp:107 USART0_CTRLA = USART_LBME_bm | USART_RS485_INT_gc | USART_RS485_EXT_gc; - 4012: 8b e0 ldi r24, 0x0B ; 11 - 4014: 80 93 05 08 sts 0x0805, r24 ; 0x800805 <__TEXT_REGION_LENGTH__+0x7f0805> -/Users/askn/Collaborator/UPDI4AVR-USB/src/usart.cpp:108 + 400e: 8b e0 ldi r24, 0x0B ; 11 + 4010: 80 93 05 08 sts 0x0805, r24 ; 0x800805 <__TEXT_REGION_LENGTH__+0x7f0805> +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usart.cpp:108 USART0_CTRLB = USART_RXEN_bm | USART_TXEN_bm | USART_ODME_bm; - 4018: 88 ec ldi r24, 0xC8 ; 200 - 401a: 80 93 06 08 sts 0x0806, r24 ; 0x800806 <__TEXT_REGION_LENGTH__+0x7f0806> -/Users/askn/Collaborator/UPDI4AVR-USB/src/usart.cpp:109 + 4014: 88 ec ldi r24, 0xC8 ; 200 + 4016: 80 93 06 08 sts 0x0806, r24 ; 0x800806 <__TEXT_REGION_LENGTH__+0x7f0806> +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/usart.cpp:109 D1PRINTF(" BAUD=%04X:%02X\r\n", USART0_BAUD, USART0_CTRLB); - 401e: 20 91 06 08 lds r18, 0x0806 ; 0x800806 <__TEXT_REGION_LENGTH__+0x7f0806> - 4022: 80 91 08 08 lds r24, 0x0808 ; 0x800808 <__TEXT_REGION_LENGTH__+0x7f0808> - 4026: 90 91 09 08 lds r25, 0x0809 ; 0x800809 <__TEXT_REGION_LENGTH__+0x7f0809> - 402a: 1f 92 push r1 - 402c: 2f 93 push r18 - 402e: 9f 93 push r25 - 4030: 8f 93 push r24 - 4032: 82 e3 ldi r24, 0x32 ; 50 - 4034: 95 e0 ldi r25, 0x05 ; 5 - 4036: 9f 93 push r25 - 4038: 8f 93 push r24 - 403a: 1f 93 push r17 - 403c: 0f 93 push r16 - 403e: 0e 94 2e 0a call 0x145c ; 0x145c + 401a: 20 91 06 08 lds r18, 0x0806 ; 0x800806 <__TEXT_REGION_LENGTH__+0x7f0806> + 401e: 80 91 08 08 lds r24, 0x0808 ; 0x800808 <__TEXT_REGION_LENGTH__+0x7f0808> + 4022: 90 91 09 08 lds r25, 0x0809 ; 0x800809 <__TEXT_REGION_LENGTH__+0x7f0809> + 4026: 1f 92 push r1 + 4028: 2f 93 push r18 + 402a: 9f 93 push r25 + 402c: 8f 93 push r24 + 402e: 82 e3 ldi r24, 0x32 ; 50 + 4030: 95 e0 ldi r25, 0x05 ; 5 + 4032: 9f 93 push r25 + 4034: 8f 93 push r24 + 4036: 1f 93 push r17 + 4038: 0f 93 push r16 + 403a: 0e 94 2e 0a call 0x145c ; 0x145c __iRestore(): /Users/askn/Library/Arduino15/packages/MultiX-Zinnia/tools/avr-gcc/7.3.0-avr8-gnu-toolchain/avr/include/util/atomic.h:70 (void)__s; @@ -13512,77 +13512,77 @@ __iRestore(): static __inline__ void __iRestore(const uint8_t *__s) { SREG = *__s; - 4042: ff be out 0x3f, r15 ; 63 + 403e: ff be out 0x3f, r15 ; 63 jtag_scope_tpi(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:306 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:306 USART::change_tpi(); _rspsize = Timeout::command(&connect); - 4044: 87 eb ldi r24, 0xB7 ; 183 - 4046: 90 e1 ldi r25, 0x10 ; 16 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:321 + 4040: 87 eb ldi r24, 0xB7 ; 183 + 4042: 90 e1 ldi r25, 0x10 ; 16 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:321 else if (_cmd == 0x03) { /* XPRG_CMD_ERASE */ D1PRINTF(" TPI_ERASE=%02X:%08lX\r\n", packet.out.tpi.read.bMType, bswap32(packet.out.tpi.read.dwAddr) ); _rspsize = Timeout::command(&erase_memory); - 4048: 0e 94 3a 15 call 0x2a74 ; 0x2a74 - 404c: 7c 01 movw r14, r24 - 404e: cd bf out 0x3d, r28 ; 61 - 4050: de bf out 0x3e, r29 ; 62 - 4052: 33 c0 rjmp .+102 ; 0x40ba -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:308 + 4044: 0e 94 3a 15 call 0x2a74 ; 0x2a74 + 4048: 7c 01 movw r14, r24 + 404a: cd bf out 0x3d, r28 ; 61 + 404c: de bf out 0x3e, r29 ; 62 + 404e: 33 c0 rjmp .+102 ; 0x40b6 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:308 D1PRINTF(" TPI_ENTER_PROGMODE\r\n"); USART::setup(); USART::change_tpi(); _rspsize = Timeout::command(&connect); } else if (_cmd == 0x02) { /* XPRG_CMD_LEAVE_PROGMODE */ - 4054: 82 30 cpi r24, 0x02 ; 2 - 4056: 09 f0 breq .+2 ; 0x405a - 4058: 4b c0 rjmp .+150 ; 0x40f0 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:309 + 4050: 82 30 cpi r24, 0x02 ; 2 + 4052: 09 f0 breq .+2 ; 0x4056 + 4054: 4b c0 rjmp .+150 ; 0x40ec +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:309 D1PRINTF(" TPI_LEAVE_PROGMODE\r\n"); - 405a: 86 ec ldi r24, 0xC6 ; 198 - 405c: 95 e0 ldi r25, 0x05 ; 5 - 405e: 9f 93 push r25 - 4060: 8f 93 push r24 - 4062: 1f 93 push r17 - 4064: 0f 93 push r16 - 4066: 0e 94 2e 0a call 0x145c ; 0x145c + 4056: 86 ec ldi r24, 0xC6 ; 198 + 4058: 95 e0 ldi r25, 0x05 ; 5 + 405a: 9f 93 push r25 + 405c: 8f 93 push r24 + 405e: 1f 93 push r17 + 4060: 0f 93 push r16 + 4062: 0e 94 2e 0a call 0x145c ; 0x145c set_sstcs(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:69 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:69 bool get_sldcs (const uint8_t _addr) { return (send(0x80 | _addr) && recv()); } bool set_sstcs (const uint8_t _addr, const uint8_t _data) { return (send(0xC0 | _addr) && send(_data)); - 406a: 80 ec ldi r24, 0xC0 ; 192 - 406c: 0e 94 f5 07 call 0xfea ; 0xfea + 4066: 80 ec ldi r24, 0xC0 ; 192 + 4068: 0e 94 f5 07 call 0xfea ; 0xfea + 406c: 0f 90 pop r0 + 406e: 0f 90 pop r0 4070: 0f 90 pop r0 4072: 0f 90 pop r0 - 4074: 0f 90 pop r0 - 4076: 0f 90 pop r0 - 4078: 88 23 and r24, r24 - 407a: 19 f0 breq .+6 ; 0x4082 - 407c: 80 e0 ldi r24, 0x00 ; 0 - 407e: 0e 94 f5 07 call 0xfea ; 0xfea + 4074: 88 23 and r24, r24 + 4076: 19 f0 breq .+6 ; 0x407e + 4078: 80 e0 ldi r24, 0x00 ; 0 + 407a: 0e 94 f5 07 call 0xfea ; 0xfea disconnect(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:281 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:281 } size_t disconnect (void) { /*** leave RESET (normal programing) ***/ set_sstcs(0x00, 0x00); D1PRINTF(" TPISR<00\r\n"); - 4082: 80 e5 ldi r24, 0x50 ; 80 - 4084: 95 e0 ldi r25, 0x05 ; 5 - 4086: 9f 93 push r25 - 4088: 8f 93 push r24 - 408a: 1f 93 push r17 - 408c: 0f 93 push r16 - 408e: 0e 94 2e 0a call 0x145c ; 0x145c + 407e: 80 e5 ldi r24, 0x50 ; 80 + 4080: 95 e0 ldi r25, 0x05 ; 5 + 4082: 9f 93 push r25 + 4084: 8f 93 push r24 + 4086: 1f 93 push r17 + 4088: 0f 93 push r16 + 408a: 0e 94 2e 0a call 0x145c ; 0x145c delay_micros(): /Users/askn/Library/Arduino15/packages/MultiX-Zinnia/hardware/modernAVR/0.2.14/cores/modernAVR/api/delay_busywait.h:33 static __inline__ __attribute__((__always_inline__)) void delay_micros (uint32_t _us); @@ -13591,103 +13591,103 @@ static __inline__ __attribute__((__always_inline__)) void delay_millis (uint32_t void delay_micros (uint32_t _us) { if (F_CPU >= 1000000L) { __builtin_avr_delay_cycles((F_CPU / 1000000L) * _us); - 4092: 83 ef ldi r24, 0xF3 ; 243 - 4094: 91 e0 ldi r25, 0x01 ; 1 - 4096: 01 97 sbiw r24, 0x01 ; 1 - 4098: f1 f7 brne .-4 ; 0x4096 - 409a: 00 c0 rjmp .+0 ; 0x409c - 409c: 00 00 nop + 408e: 83 ef ldi r24, 0xF3 ; 243 + 4090: 91 e0 ldi r25, 0x01 ; 1 + 4092: 01 97 sbiw r24, 0x01 ; 1 + 4094: f1 f7 brne .-4 ; 0x4092 + 4096: 00 c0 rjmp .+0 ; 0x4098 + 4098: 00 00 nop disconnect(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:284 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:284 /* Send the NVM exit command, wait a short while and release RESET. */ delay_micros(100); openDrainWriteMacro(PIN_VCP_TXD, HIGH); - 409e: 02 98 cbi 0x00, 2 ; 0 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:285 + 409a: 02 98 cbi 0x00, 2 ; 0 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:285 openDrainWriteMacro(PIN_PG_TRST, HIGH); - 40a0: 01 98 cbi 0x00, 1 ; 0 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:286 + 409c: 01 98 cbi 0x00, 1 ; 0 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:286 PGCONF = 0; - 40a2: 1d ba out 0x1d, r1 ; 29 + 409e: 1d ba out 0x1d, r1 ; 29 jtag_scope_tpi(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:312 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:312 } else if (_cmd == 0x02) { /* XPRG_CMD_LEAVE_PROGMODE */ D1PRINTF(" TPI_LEAVE_PROGMODE\r\n"); _rspsize = disconnect(); _tpi_setmode = 0; USART::setup(); - 40a4: 0e 94 97 0f call 0x1f2e ; 0x1f2e -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:313 + 40a0: 0e 94 97 0f call 0x1f2e ; 0x1f2e +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:313 USART::change_vcp(); - 40a8: 0e 94 52 0a call 0x14a4 ; 0x14a4 + 40a4: 0e 94 52 0a call 0x14a4 ; 0x14a4 + 40a8: 0f 90 pop r0 + 40aa: 0f 90 pop r0 40ac: 0f 90 pop r0 40ae: 0f 90 pop r0 - 40b0: 0f 90 pop r0 - 40b2: 0f 90 pop r0 main(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:310 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:310 USART::change_tpi(); _rspsize = Timeout::command(&connect); } else if (_cmd == 0x02) { /* XPRG_CMD_LEAVE_PROGMODE */ D1PRINTF(" TPI_LEAVE_PROGMODE\r\n"); _rspsize = disconnect(); - 40b4: ee 24 eor r14, r14 - 40b6: e3 94 inc r14 - 40b8: f1 2c mov r15, r1 + 40b0: ee 24 eor r14, r14 + 40b2: e3 94 inc r14 + 40b4: f1 2c mov r15, r1 jtag_scope_tpi(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:360 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:360 _tpi_csr_addr = _bValue; /* XPRG_TPI_NVMCSR_ADDRESS */ } #endif _rspsize = 1; } packet.in.tpi_res = _rspsize ? 0x00 : 0x01; /* XPRG_ERR_OK : XPRG_ERR_FAILED */ - 40ba: 81 e0 ldi r24, 0x01 ; 1 - 40bc: e1 14 cp r14, r1 - 40be: f1 04 cpc r15, r1 - 40c0: 09 f0 breq .+2 ; 0x40c4 - 40c2: 80 e0 ldi r24, 0x00 ; 0 - 40c4: 80 93 d4 60 sts 0x60D4, r24 ; 0x8060d4 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:361 + 40b6: 81 e0 ldi r24, 0x01 ; 1 + 40b8: e1 14 cp r14, r1 + 40ba: f1 04 cpc r15, r1 + 40bc: 09 f0 breq .+2 ; 0x40c0 + 40be: 80 e0 ldi r24, 0x00 ; 0 + 40c0: 80 93 d4 60 sts 0x60D4, r24 ; 0x8060d4 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:361 D1PRINTF(" \r\n", _rspsize); - 40c8: ff 92 push r15 - 40ca: ef 92 push r14 - 40cc: 8c e5 ldi r24, 0x5C ; 92 - 40ce: 95 e0 ldi r25, 0x05 ; 5 - 40d0: 9f 93 push r25 - 40d2: 8f 93 push r24 - 40d4: 1f 93 push r17 - 40d6: 0f 93 push r16 - 40d8: 0e 94 2e 0a call 0x145c ; 0x145c -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:364 + 40c4: ff 92 push r15 + 40c6: ef 92 push r14 + 40c8: 8c e5 ldi r24, 0x5C ; 92 + 40ca: 95 e0 ldi r25, 0x05 ; 5 + 40cc: 9f 93 push r25 + 40ce: 8f 93 push r24 + 40d0: 1f 93 push r17 + 40d2: 0f 93 push r16 + 40d4: 0e 94 2e 0a call 0x145c ; 0x145c +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:364 /* Adds padding to XPRG responses to adjust the length of the payload. */ return ++_rspsize; - 40dc: 9f ef ldi r25, 0xFF ; 255 - 40de: e9 1a sub r14, r25 - 40e0: f9 0a sbc r15, r25 + 40d8: 9f ef ldi r25, 0xFF ; 255 + 40da: e9 1a sub r14, r25 + 40dc: f9 0a sbc r15, r25 + 40de: 0f 90 pop r0 + 40e0: 0f 90 pop r0 40e2: 0f 90 pop r0 40e4: 0f 90 pop r0 40e6: 0f 90 pop r0 40e8: 0f 90 pop r0 - 40ea: 0f 90 pop r0 - 40ec: 0f 90 pop r0 - 40ee: 73 cb rjmp .-2330 ; 0x37d6 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:315 + 40ea: 73 cb rjmp .-2330 ; 0x37d2 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:315 _rspsize = disconnect(); _tpi_setmode = 0; USART::setup(); USART::change_vcp(); } else if (bit_is_clear(PGCONF, PGCONF_UPDI_bp)) { /* empty */ } - 40f0: e8 9b sbis 0x1d, 0 ; 29 - 40f2: 7a c0 rjmp .+244 ; 0x41e8 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:316 + 40ec: e8 9b sbis 0x1d, 0 ; 29 + 40ee: 7a c0 rjmp .+244 ; 0x41e4 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:316 else if (_cmd == 0x03) { /* XPRG_CMD_ERASE */ - 40f4: 83 30 cpi r24, 0x03 ; 3 - 40f6: e1 f4 brne .+56 ; 0x4130 + 40f0: 83 30 cpi r24, 0x03 ; 3 + 40f2: e1 f4 brne .+56 ; 0x412c bswap32(): /Users/askn/Library/Arduino15/packages/MultiX-Zinnia/hardware/modernAVR/0.2.14/cores/modernAVR/api/cpp/btools.cpp:49 uint16_t bswap16 (uint16_t _word) { @@ -13696,41 +13696,41 @@ uint16_t bswap16 (uint16_t _word) { uint32_t bswap32 (uint32_t _dword) { return __builtin_bswap32(_dword); - 40f8: 60 91 d5 60 lds r22, 0x60D5 ; 0x8060d5 - 40fc: 70 91 d6 60 lds r23, 0x60D6 ; 0x8060d6 - 4100: 80 91 d7 60 lds r24, 0x60D7 ; 0x8060d7 - 4104: 90 91 d8 60 lds r25, 0x60D8 ; 0x8060d8 - 4108: 3d d4 rcall .+2170 ; 0x4984 <__bswapsi2> + 40f4: 60 91 d5 60 lds r22, 0x60D5 ; 0x8060d5 + 40f8: 70 91 d6 60 lds r23, 0x60D6 ; 0x8060d6 + 40fc: 80 91 d7 60 lds r24, 0x60D7 ; 0x8060d7 + 4100: 90 91 d8 60 lds r25, 0x60D8 ; 0x8060d8 + 4104: 3d d4 rcall .+2170 ; 0x4980 <__bswapsi2> jtag_scope_tpi(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:317 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:317 D1PRINTF(" TPI_ERASE=%02X:%08lX\r\n", - 410a: 9f 93 push r25 - 410c: 8f 93 push r24 - 410e: 7f 93 push r23 - 4110: 6f 93 push r22 - 4112: 80 91 d4 60 lds r24, 0x60D4 ; 0x8060d4 - 4116: 1f 92 push r1 - 4118: 8f 93 push r24 - 411a: 8e ea ldi r24, 0xAE ; 174 - 411c: 95 e0 ldi r25, 0x05 ; 5 - 411e: 9f 93 push r25 - 4120: 8f 93 push r24 - 4122: 1f 93 push r17 - 4124: 0f 93 push r16 - 4126: 0e 94 2e 0a call 0x145c ; 0x145c -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:321 + 4106: 9f 93 push r25 + 4108: 8f 93 push r24 + 410a: 7f 93 push r23 + 410c: 6f 93 push r22 + 410e: 80 91 d4 60 lds r24, 0x60D4 ; 0x8060d4 + 4112: 1f 92 push r1 + 4114: 8f 93 push r24 + 4116: 8e ea ldi r24, 0xAE ; 174 + 4118: 95 e0 ldi r25, 0x05 ; 5 + 411a: 9f 93 push r25 + 411c: 8f 93 push r24 + 411e: 1f 93 push r17 + 4120: 0f 93 push r16 + 4122: 0e 94 2e 0a call 0x145c ; 0x145c +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:321 packet.out.tpi.read.bMType, bswap32(packet.out.tpi.read.dwAddr) ); _rspsize = Timeout::command(&erase_memory); - 412a: 8c e2 ldi r24, 0x2C ; 44 - 412c: 94 e1 ldi r25, 0x14 ; 20 - 412e: 8c cf rjmp .-232 ; 0x4048 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:323 + 4126: 8c e2 ldi r24, 0x2C ; 44 + 4128: 94 e1 ldi r25, 0x14 ; 20 + 412a: 8c cf rjmp .-232 ; 0x4044 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:323 } else if (_cmd == 0x04) { /* XPRG_CMD_WRITE_MEM */ - 4130: 84 30 cpi r24, 0x04 ; 4 - 4132: 29 f5 brne .+74 ; 0x417e + 412c: 84 30 cpi r24, 0x04 ; 4 + 412e: 29 f5 brne .+74 ; 0x417a bswap16(): /Users/askn/Library/Arduino15/packages/MultiX-Zinnia/hardware/modernAVR/0.2.14/cores/modernAVR/api/cpp/btools.cpp:45 // @@ -13739,55 +13739,55 @@ bswap16(): uint16_t bswap16 (uint16_t _word) { return __builtin_bswap16(_word); - 4134: 20 91 da 60 lds r18, 0x60DA ; 0x8060da - 4138: 30 91 db 60 lds r19, 0x60DB ; 0x8060db + 4130: 20 91 da 60 lds r18, 0x60DA ; 0x8060da + 4134: 30 91 db 60 lds r19, 0x60DB ; 0x8060db + 4138: 32 27 eor r19, r18 + 413a: 23 27 eor r18, r19 413c: 32 27 eor r19, r18 - 413e: 23 27 eor r18, r19 - 4140: 32 27 eor r19, r18 bswap32(): /Users/askn/Library/Arduino15/packages/MultiX-Zinnia/hardware/modernAVR/0.2.14/cores/modernAVR/api/cpp/btools.cpp:49 } uint32_t bswap32 (uint32_t _dword) { return __builtin_bswap32(_dword); - 4142: 60 91 d6 60 lds r22, 0x60D6 ; 0x8060d6 - 4146: 70 91 d7 60 lds r23, 0x60D7 ; 0x8060d7 - 414a: 80 91 d8 60 lds r24, 0x60D8 ; 0x8060d8 - 414e: 90 91 d9 60 lds r25, 0x60D9 ; 0x8060d9 - 4152: 18 d4 rcall .+2096 ; 0x4984 <__bswapsi2> + 413e: 60 91 d6 60 lds r22, 0x60D6 ; 0x8060d6 + 4142: 70 91 d7 60 lds r23, 0x60D7 ; 0x8060d7 + 4146: 80 91 d8 60 lds r24, 0x60D8 ; 0x8060d8 + 414a: 90 91 d9 60 lds r25, 0x60D9 ; 0x8060d9 + 414e: 18 d4 rcall .+2096 ; 0x4980 <__bswapsi2> jtag_scope_tpi(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:324 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:324 D1PRINTF(" TPI_WRITE=%02X:%08lX:%04X\r\n", - 4154: 3f 93 push r19 - 4156: 2f 93 push r18 - 4158: 9f 93 push r25 - 415a: 8f 93 push r24 - 415c: 7f 93 push r23 - 415e: 6f 93 push r22 - 4160: 80 91 d4 60 lds r24, 0x60D4 ; 0x8060d4 - 4164: 1f 92 push r1 - 4166: 8f 93 push r24 - 4168: 81 e9 ldi r24, 0x91 ; 145 - 416a: 95 e0 ldi r25, 0x05 ; 5 - 416c: 9f 93 push r25 - 416e: 8f 93 push r24 - 4170: 1f 93 push r17 - 4172: 0f 93 push r16 - 4174: 0e 94 2e 0a call 0x145c ; 0x145c -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:329 + 4150: 3f 93 push r19 + 4152: 2f 93 push r18 + 4154: 9f 93 push r25 + 4156: 8f 93 push r24 + 4158: 7f 93 push r23 + 415a: 6f 93 push r22 + 415c: 80 91 d4 60 lds r24, 0x60D4 ; 0x8060d4 + 4160: 1f 92 push r1 + 4162: 8f 93 push r24 + 4164: 81 e9 ldi r24, 0x91 ; 145 + 4166: 95 e0 ldi r25, 0x05 ; 5 + 4168: 9f 93 push r25 + 416a: 8f 93 push r24 + 416c: 1f 93 push r17 + 416e: 0f 93 push r16 + 4170: 0e 94 2e 0a call 0x145c ; 0x145c +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:329 packet.out.tpi.write.bMType, bswap32(packet.out.tpi.write.dwAddr), bswap16(packet.out.tpi.write.wLength) ); _rspsize = Timeout::command(&write_memory); - 4178: 8a e1 ldi r24, 0x1A ; 26 - 417a: 93 e1 ldi r25, 0x13 ; 19 - 417c: 65 cf rjmp .-310 ; 0x4048 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:331 + 4174: 8a e1 ldi r24, 0x1A ; 26 + 4176: 93 e1 ldi r25, 0x13 ; 19 + 4178: 65 cf rjmp .-310 ; 0x4044 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:331 } else if (_cmd == 0x05) { /* XPRG_CMD_READ_MEM */ - 417e: 85 30 cpi r24, 0x05 ; 5 - 4180: 29 f5 brne .+74 ; 0x41cc + 417a: 85 30 cpi r24, 0x05 ; 5 + 417c: 29 f5 brne .+74 ; 0x41c8 bswap16(): /Users/askn/Library/Arduino15/packages/MultiX-Zinnia/hardware/modernAVR/0.2.14/cores/modernAVR/api/cpp/btools.cpp:45 // @@ -13796,1241 +13796,1241 @@ bswap16(): uint16_t bswap16 (uint16_t _word) { return __builtin_bswap16(_word); - 4182: 20 91 d9 60 lds r18, 0x60D9 ; 0x8060d9 - 4186: 30 91 da 60 lds r19, 0x60DA ; 0x8060da - 418a: 32 27 eor r19, r18 - 418c: 23 27 eor r18, r19 + 417e: 20 91 d9 60 lds r18, 0x60D9 ; 0x8060d9 + 4182: 30 91 da 60 lds r19, 0x60DA ; 0x8060da + 4186: 32 27 eor r19, r18 + 4188: 23 27 eor r18, r19 /Users/askn/Library/Arduino15/packages/MultiX-Zinnia/hardware/modernAVR/0.2.14/cores/modernAVR/api/cpp/btools.cpp:49 } uint32_t bswap32 (uint32_t _dword) { return __builtin_bswap32(_dword); - 418e: 32 27 eor r19, r18 + 418a: 32 27 eor r19, r18 bswap32(): - 4190: 60 91 d5 60 lds r22, 0x60D5 ; 0x8060d5 - 4194: 70 91 d6 60 lds r23, 0x60D6 ; 0x8060d6 - 4198: 80 91 d7 60 lds r24, 0x60D7 ; 0x8060d7 - 419c: 90 91 d8 60 lds r25, 0x60D8 ; 0x8060d8 - 41a0: f1 d3 rcall .+2018 ; 0x4984 <__bswapsi2> + 418c: 60 91 d5 60 lds r22, 0x60D5 ; 0x8060d5 + 4190: 70 91 d6 60 lds r23, 0x60D6 ; 0x8060d6 + 4194: 80 91 d7 60 lds r24, 0x60D7 ; 0x8060d7 + 4198: 90 91 d8 60 lds r25, 0x60D8 ; 0x8060d8 + 419c: f1 d3 rcall .+2018 ; 0x4980 <__bswapsi2> jtag_scope_tpi(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:332 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:332 D1PRINTF(" TPI_READ=%02X:%08lX:%04X\r\n", - 41a2: 3f 93 push r19 - 41a4: 2f 93 push r18 - 41a6: 9f 93 push r25 - 41a8: 8f 93 push r24 - 41aa: 7f 93 push r23 - 41ac: 6f 93 push r22 - 41ae: 80 91 d4 60 lds r24, 0x60D4 ; 0x8060d4 - 41b2: 1f 92 push r1 - 41b4: 8f 93 push r24 - 41b6: 85 e7 ldi r24, 0x75 ; 117 - 41b8: 95 e0 ldi r25, 0x05 ; 5 - 41ba: 9f 93 push r25 - 41bc: 8f 93 push r24 - 41be: 1f 93 push r17 - 41c0: 0f 93 push r16 - 41c2: 0e 94 2e 0a call 0x145c ; 0x145c -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:337 + 419e: 3f 93 push r19 + 41a0: 2f 93 push r18 + 41a2: 9f 93 push r25 + 41a4: 8f 93 push r24 + 41a6: 7f 93 push r23 + 41a8: 6f 93 push r22 + 41aa: 80 91 d4 60 lds r24, 0x60D4 ; 0x8060d4 + 41ae: 1f 92 push r1 + 41b0: 8f 93 push r24 + 41b2: 85 e7 ldi r24, 0x75 ; 117 + 41b4: 95 e0 ldi r25, 0x05 ; 5 + 41b6: 9f 93 push r25 + 41b8: 8f 93 push r24 + 41ba: 1f 93 push r17 + 41bc: 0f 93 push r16 + 41be: 0e 94 2e 0a call 0x145c ; 0x145c +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:337 packet.out.tpi.read.bMType, bswap32(packet.out.tpi.read.dwAddr), bswap16(packet.out.tpi.read.wLength) ); _rspsize = Timeout::command(&read_memory); - 41c6: 8c ef ldi r24, 0xFC ; 252 - 41c8: 93 e1 ldi r25, 0x13 ; 19 - 41ca: 3e cf rjmp .-388 ; 0x4048 -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:339 + 41c2: 8c ef ldi r24, 0xFC ; 252 + 41c4: 93 e1 ldi r25, 0x13 ; 19 + 41c6: 3e cf rjmp .-388 ; 0x4044 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:339 } else if (_cmd == 0x06) { /* XPRG_CMD_CRC */ - 41cc: 86 30 cpi r24, 0x06 ; 6 - 41ce: 79 f4 brne .+30 ; 0x41ee -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:340 + 41c8: 86 30 cpi r24, 0x06 ; 6 + 41ca: 79 f4 brne .+30 ; 0x41ea +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:340 D1PRINTF(" TPI_CRC\r\n"); /* not used (Fail) */ - 41d0: 8a e6 ldi r24, 0x6A ; 106 - 41d2: 95 e0 ldi r25, 0x05 ; 5 - 41d4: 9f 93 push r25 - 41d6: 8f 93 push r24 - 41d8: 1f 93 push r17 - 41da: 0f 93 push r16 - 41dc: 0e 94 2e 0a call 0x145c ; 0x145c + 41cc: 8a e6 ldi r24, 0x6A ; 106 + 41ce: 95 e0 ldi r25, 0x05 ; 5 + 41d0: 9f 93 push r25 + 41d2: 8f 93 push r24 + 41d4: 1f 93 push r17 + 41d6: 0f 93 push r16 + 41d8: 0e 94 2e 0a call 0x145c ; 0x145c + 41dc: 0f 90 pop r0 + 41de: 0f 90 pop r0 41e0: 0f 90 pop r0 41e2: 0f 90 pop r0 - 41e4: 0f 90 pop r0 - 41e6: 0f 90 pop r0 main(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:300 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:300 * When this scope is used, CMD3_SIGN_ON will not be called, * It doesn't seem to be implemented in the "mEDBG". * which means it will start immediately with XPRG_CMD_ENTER_PROGMODE. */ size_t jtag_scope_tpi (void) { size_t _rspsize = 0; /* Make final adjustments. */ - 41e8: f1 2c mov r15, r1 - 41ea: e1 2c mov r14, r1 - 41ec: 66 cf rjmp .-308 ; 0x40ba + 41e4: f1 2c mov r15, r1 + 41e6: e1 2c mov r14, r1 + 41e8: 66 cf rjmp .-308 ; 0x40b6 jtag_scope_tpi(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:342 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:342 _rspsize = Timeout::command(&read_memory); } else if (_cmd == 0x06) { /* XPRG_CMD_CRC */ D1PRINTF(" TPI_CRC\r\n"); /* not used (Fail) */ } else if (_cmd == 0x07) { /* XPRG_CMD_SET_PARAM */ - 41ee: 21 e0 ldi r18, 0x01 ; 1 - 41f0: 90 e0 ldi r25, 0x00 ; 0 - 41f2: 87 30 cpi r24, 0x07 ; 7 - 41f4: 09 f0 breq .+2 ; 0x41f8 - 41f6: 20 e0 ldi r18, 0x00 ; 0 + 41ea: 21 e0 ldi r18, 0x01 ; 1 + 41ec: 90 e0 ldi r25, 0x00 ; 0 + 41ee: 87 30 cpi r24, 0x07 ; 7 + 41f0: 09 f0 breq .+2 ; 0x41f4 + 41f2: 20 e0 ldi r18, 0x00 ; 0 main(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/tpi.cpp:306 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/tpi.cpp:306 uint8_t _cmd = packet.out.cmd; if (_cmd == 0x01) { /* XPRG_CMD_ENTER_PROGMODE */ D1PRINTF(" TPI_ENTER_PROGMODE\r\n"); USART::setup(); USART::change_tpi(); _rspsize = Timeout::command(&connect); - 41f8: e2 2e mov r14, r18 - 41fa: f9 2e mov r15, r25 - 41fc: 5e cf rjmp .-324 ; 0x40ba + 41f4: e2 2e mov r14, r18 + 41f6: f9 2e mov r15, r25 + 41f8: 5e cf rjmp .-324 ; 0x40b6 jtag_scope_branch(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:401 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:401 #endif else if (_scope == 0x20) _rspsize = jtag_scope_edbg(); /* SCOPE_EDBG */ - 41fe: e0 e2 ldi r30, 0x20 ; 32 - 4200: fe 12 cpse r15, r30 - 4202: ee cb rjmp .-2084 ; 0x39e0 + 41fa: e0 e2 ldi r30, 0x20 ; 32 + 41fc: fe 12 cpse r15, r30 + 41fe: ee cb rjmp .-2084 ; 0x39dc jtag_scope_edbg(): -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:225 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:225 /*** The EDBG scope provides access to the writer's hardware specifications. ***/ /* There is no impact on operation if it is not called at all. */ size_t jtag_scope_edbg (void) { size_t _rspsize = 0; uint8_t _cmd = packet.out.cmd; - 4204: 90 91 d3 60 lds r25, 0x60D3 ; 0x8060d3 -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:226 + 4200: 90 91 d3 60 lds r25, 0x60D3 ; 0x8060d3 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:226 uint8_t _section = packet.out.section; - 4208: c0 90 d5 60 lds r12, 0x60D5 ; 0x8060d5 -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:227 + 4204: c0 90 d5 60 lds r12, 0x60D5 ; 0x8060d5 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:227 uint8_t _index = packet.out.index; - 420c: d0 90 d6 60 lds r13, 0x60D6 ; 0x8060d6 -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:228 + 4208: d0 90 d6 60 lds r13, 0x60D6 ; 0x8060d6 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:228 uint8_t _length = packet.out.length; - 4210: 80 91 d7 60 lds r24, 0x60D7 ; 0x8060d7 -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:229 + 420c: 80 91 d7 60 lds r24, 0x60D7 ; 0x8060d7 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:229 if (_cmd == 0x01) { /* CMD3_SET_PARAMETER */ - 4214: 91 30 cpi r25, 0x01 ; 1 - 4216: 99 f5 brne .+102 ; 0x427e -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:230 + 4210: 91 30 cpi r25, 0x01 ; 1 + 4212: 99 f5 brne .+102 ; 0x427a +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:230 uint16_t _data = packet.out.wValue; - 4218: e0 90 d8 60 lds r14, 0x60D8 ; 0x8060d8 - 421c: f0 90 d9 60 lds r15, 0x60D9 ; 0x8060d9 -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:231 + 4214: e0 90 d8 60 lds r14, 0x60D8 ; 0x8060d8 + 4218: f0 90 d9 60 lds r15, 0x60D9 ; 0x8060d9 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:231 D1PRINTF(" AVR_SET_PARAM=%02X:%02X:%02X:%02X\r\n", _section, _index, _length, _data); - 4220: ff 92 push r15 - 4222: ef 92 push r14 + 421c: ff 92 push r15 + 421e: ef 92 push r14 + 4220: 1f 92 push r1 + 4222: 8f 93 push r24 4224: 1f 92 push r1 - 4226: 8f 93 push r24 + 4226: df 92 push r13 4228: 1f 92 push r1 - 422a: df 92 push r13 - 422c: 1f 92 push r1 - 422e: cf 92 push r12 - 4230: 8c e3 ldi r24, 0x3C ; 60 - 4232: 96 e0 ldi r25, 0x06 ; 6 - 4234: 9f 93 push r25 - 4236: 8f 93 push r24 - 4238: 1f 93 push r17 - 423a: 0f 93 push r16 - 423c: 0e 94 2e 0a call 0x145c ; 0x145c -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:232 + 422a: cf 92 push r12 + 422c: 8c e3 ldi r24, 0x3C ; 60 + 422e: 96 e0 ldi r25, 0x06 ; 6 + 4230: 9f 93 push r25 + 4232: 8f 93 push r24 + 4234: 1f 93 push r17 + 4236: 0f 93 push r16 + 4238: 0e 94 2e 0a call 0x145c ; 0x145c +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:232 if (_section == 0) { /* SET_GET_CTXT_CONFIG */ - 4240: cd bf out 0x3d, r28 ; 61 - 4242: de bf out 0x3e, r29 ; 62 - 4244: c1 10 cpse r12, r1 - 4246: 25 cc rjmp .-1974 ; 0x3a92 -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:233 + 423c: cd bf out 0x3d, r28 ; 61 + 423e: de bf out 0x3e, r29 ; 62 + 4240: c1 10 cpse r12, r1 + 4242: 25 cc rjmp .-1974 ; 0x3a8e +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:233 if (_index == 0x10) { /* EDBG_CONTROL_TARGET_POWER */ - 4248: 30 e1 ldi r19, 0x10 ; 16 - 424a: d3 12 cpse r13, r19 - 424c: 22 cc rjmp .-1980 ; 0x3a92 -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:235 + 4244: 30 e1 ldi r19, 0x10 ; 16 + 4246: d3 12 cpse r13, r19 + 4248: 22 cc rjmp .-1980 ; 0x3a8e +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:235 /* Called with `-xvtarget_switch=0,1` HAS_VTARG_SWITCH */ D1PRINTF(" TARGET_POWER=%02X\r\n", _data); - 424e: ff 92 push r15 - 4250: ef 92 push r14 - 4252: 87 e2 ldi r24, 0x27 ; 39 - 4254: 96 e0 ldi r25, 0x06 ; 6 - 4256: 9f 93 push r25 - 4258: 8f 93 push r24 - 425a: 1f 93 push r17 - 425c: 0f 93 push r16 - 425e: 0e 94 2e 0a call 0x145c ; 0x145c -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:236 + 424a: ff 92 push r15 + 424c: ef 92 push r14 + 424e: 87 e2 ldi r24, 0x27 ; 39 + 4250: 96 e0 ldi r25, 0x06 ; 6 + 4252: 9f 93 push r25 + 4254: 8f 93 push r24 + 4256: 1f 93 push r17 + 4258: 0f 93 push r16 + 425a: 0e 94 2e 0a call 0x145c ; 0x145c +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:236 _jtag_vpow = _data; /* 0,1 */ - 4262: e0 92 00 60 sts 0x6000, r14 ; 0x806000 <__DATA_REGION_ORIGIN__> -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:238 + 425e: e0 92 00 60 sts 0x6000, r14 ; 0x806000 <__DATA_REGION_ORIGIN__> +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:238 #if defined(PIN_HV_POWER) if (_data) + 4262: 0f 90 pop r0 + 4264: 0f 90 pop r0 4266: 0f 90 pop r0 4268: 0f 90 pop r0 426a: 0f 90 pop r0 426c: 0f 90 pop r0 - 426e: 0f 90 pop r0 - 4270: 0f 90 pop r0 - 4272: ef 28 or r14, r15 - 4274: 11 f0 breq .+4 ; 0x427a -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:239 + 426e: ef 28 or r14, r15 + 4270: 11 f0 breq .+4 ; 0x4276 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:239 digitalWriteMacro(PIN_HV_POWER, HIGH); - 4276: 0e 9a sbi 0x01, 6 ; 1 - 4278: 0c cc rjmp .-2024 ; 0x3a92 -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:241 + 4272: 0e 9a sbi 0x01, 6 ; 1 + 4274: 0c cc rjmp .-2024 ; 0x3a8e +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:241 else digitalWriteMacro(PIN_HV_POWER, LOW); - 427a: 0e 98 cbi 0x01, 6 ; 1 - 427c: 0a cc rjmp .-2028 ; 0x3a92 -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:247 + 4276: 0e 98 cbi 0x01, 6 ; 1 + 4278: 0a cc rjmp .-2028 ; 0x3a8e +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:247 #endif } } packet.in.res = 0x80; /* RSP3_OK */ } else if (_cmd == 0x02) { /* CMD3_GET_PARAMETER */ - 427e: 92 30 cpi r25, 0x02 ; 2 - 4280: 09 f0 breq .+2 ; 0x4284 - 4282: ae cb rjmp .-2212 ; 0x39e0 -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:248 + 427a: 92 30 cpi r25, 0x02 ; 2 + 427c: 09 f0 breq .+2 ; 0x4280 + 427e: ae cb rjmp .-2212 ; 0x39dc +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:248 D1PRINTF(" AVR_GET_PARAM=%02X:%02X:%02X\r\n", _section, _index, _length); - 4284: e8 2e mov r14, r24 - 4286: f1 2c mov r15, r1 + 4280: e8 2e mov r14, r24 + 4282: f1 2c mov r15, r1 + 4284: 1f 92 push r1 + 4286: 8f 93 push r24 4288: 1f 92 push r1 - 428a: 8f 93 push r24 + 428a: df 92 push r13 428c: 1f 92 push r1 - 428e: df 92 push r13 - 4290: 1f 92 push r1 - 4292: cf 92 push r12 - 4294: 87 e0 ldi r24, 0x07 ; 7 - 4296: 96 e0 ldi r25, 0x06 ; 6 - 4298: 9f 93 push r25 - 429a: 8f 93 push r24 - 429c: 1f 93 push r17 - 429e: 0f 93 push r16 - 42a0: 0e 94 2e 0a call 0x145c ; 0x145c -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:249 + 428e: cf 92 push r12 + 4290: 87 e0 ldi r24, 0x07 ; 7 + 4292: 96 e0 ldi r25, 0x06 ; 6 + 4294: 9f 93 push r25 + 4296: 8f 93 push r24 + 4298: 1f 93 push r17 + 429a: 0f 93 push r16 + 429c: 0e 94 2e 0a call 0x145c ; 0x145c +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:249 if (_section == 0) { /* SET_GET_CTXT_CONFIG */ - 42a4: cd bf out 0x3d, r28 ; 61 - 42a6: de bf out 0x3e, r29 ; 62 - 42a8: c1 10 cpse r12, r1 - 42aa: 19 c0 rjmp .+50 ; 0x42de -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:250 + 42a0: cd bf out 0x3d, r28 ; 61 + 42a2: de bf out 0x3e, r29 ; 62 + 42a4: c1 10 cpse r12, r1 + 42a6: 19 c0 rjmp .+50 ; 0x42da +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:250 if (_index == 0x10) { /* EDBG_CONTROL_TARGET_POWER */ - 42ac: 90 e1 ldi r25, 0x10 ; 16 - 42ae: d9 12 cpse r13, r25 - 42b0: 16 c0 rjmp .+44 ; 0x42de -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:252 + 42a8: 90 e1 ldi r25, 0x10 ; 16 + 42aa: d9 12 cpse r13, r25 + 42ac: 16 c0 rjmp .+44 ; 0x42da +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:252 /* Called with `-xvtarget_switch` HAS_VTARG_SWITCH */ D1PRINTF(" TARGET_POWER=%02X\r\n", _jtag_vpow); - 42b2: 80 91 00 60 lds r24, 0x6000 ; 0x806000 <__DATA_REGION_ORIGIN__> - 42b6: 1f 92 push r1 - 42b8: 8f 93 push r24 - 42ba: 82 ef ldi r24, 0xF2 ; 242 - 42bc: 95 e0 ldi r25, 0x05 ; 5 - 42be: 9f 93 push r25 - 42c0: 8f 93 push r24 - 42c2: 1f 93 push r17 - 42c4: 0f 93 push r16 - 42c6: 0e 94 2e 0a call 0x145c ; 0x145c -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:253 + 42ae: 80 91 00 60 lds r24, 0x6000 ; 0x806000 <__DATA_REGION_ORIGIN__> + 42b2: 1f 92 push r1 + 42b4: 8f 93 push r24 + 42b6: 82 ef ldi r24, 0xF2 ; 242 + 42b8: 95 e0 ldi r25, 0x05 ; 5 + 42ba: 9f 93 push r25 + 42bc: 8f 93 push r24 + 42be: 1f 93 push r17 + 42c0: 0f 93 push r16 + 42c2: 0e 94 2e 0a call 0x145c ; 0x145c +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:253 packet.in.data[0] = _jtag_vpow; - 42ca: 80 91 00 60 lds r24, 0x6000 ; 0x806000 <__DATA_REGION_ORIGIN__> - 42ce: 80 93 d5 60 sts 0x60D5, r24 ; 0x8060d5 + 42c6: 80 91 00 60 lds r24, 0x6000 ; 0x806000 <__DATA_REGION_ORIGIN__> + 42ca: 80 93 d5 60 sts 0x60D5, r24 ; 0x8060d5 + 42ce: 0f 90 pop r0 + 42d0: 0f 90 pop r0 42d2: 0f 90 pop r0 42d4: 0f 90 pop r0 42d6: 0f 90 pop r0 42d8: 0f 90 pop r0 - 42da: 0f 90 pop r0 - 42dc: 0f 90 pop r0 -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:256 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:256 } } packet.in.res = 0x184; /* RSP3_DATA */ - 42de: 84 e8 ldi r24, 0x84 ; 132 - 42e0: 91 e0 ldi r25, 0x01 ; 1 - 42e2: 80 93 d3 60 sts 0x60D3, r24 ; 0x8060d3 - 42e6: 90 93 d4 60 sts 0x60D4, r25 ; 0x8060d4 -/Users/askn/Collaborator/UPDI4AVR-USB/src/jtag.cpp:257 + 42da: 84 e8 ldi r24, 0x84 ; 132 + 42dc: 91 e0 ldi r25, 0x01 ; 1 + 42de: 80 93 d3 60 sts 0x60D3, r24 ; 0x8060d3 + 42e2: 90 93 d4 60 sts 0x60D4, r25 ; 0x8060d4 +/Users/askn/Documents/Zinnia-tools/Products/software/UPDI4AVR-USB/src/jtag.cpp:257 _rspsize = _length + 1; - 42ea: ef ef ldi r30, 0xFF ; 255 - 42ec: ee 1a sub r14, r30 - 42ee: fe 0a sbc r15, r30 - 42f0: 72 ca rjmp .-2844 ; 0x37d6 + 42e6: ef ef ldi r30, 0xFF ; 255 + 42e8: ee 1a sub r14, r30 + 42ea: fe 0a sbc r15, r30 + 42ec: 72 ca rjmp .-2844 ; 0x37d2 -000042f2 : +000042ee : setjmp(): - 42f2: dc 01 movw r26, r24 - 42f4: 2d 92 st X+, r2 - 42f6: 3d 92 st X+, r3 - 42f8: 4d 92 st X+, r4 - 42fa: 5d 92 st X+, r5 - 42fc: 6d 92 st X+, r6 - 42fe: 7d 92 st X+, r7 - 4300: 8d 92 st X+, r8 - 4302: 9d 92 st X+, r9 - 4304: ad 92 st X+, r10 - 4306: bd 92 st X+, r11 - 4308: cd 92 st X+, r12 - 430a: dd 92 st X+, r13 - 430c: ed 92 st X+, r14 - 430e: fd 92 st X+, r15 - 4310: 0d 93 st X+, r16 - 4312: 1d 93 st X+, r17 - 4314: cd 93 st X+, r28 - 4316: dd 93 st X+, r29 - 4318: ff 91 pop r31 - 431a: ef 91 pop r30 - 431c: 8d b7 in r24, 0x3d ; 61 + 42ee: dc 01 movw r26, r24 + 42f0: 2d 92 st X+, r2 + 42f2: 3d 92 st X+, r3 + 42f4: 4d 92 st X+, r4 + 42f6: 5d 92 st X+, r5 + 42f8: 6d 92 st X+, r6 + 42fa: 7d 92 st X+, r7 + 42fc: 8d 92 st X+, r8 + 42fe: 9d 92 st X+, r9 + 4300: ad 92 st X+, r10 + 4302: bd 92 st X+, r11 + 4304: cd 92 st X+, r12 + 4306: dd 92 st X+, r13 + 4308: ed 92 st X+, r14 + 430a: fd 92 st X+, r15 + 430c: 0d 93 st X+, r16 + 430e: 1d 93 st X+, r17 + 4310: cd 93 st X+, r28 + 4312: dd 93 st X+, r29 + 4314: ff 91 pop r31 + 4316: ef 91 pop r30 + 4318: 8d b7 in r24, 0x3d ; 61 + 431a: 8d 93 st X+, r24 + 431c: 8e b7 in r24, 0x3e ; 62 431e: 8d 93 st X+, r24 - 4320: 8e b7 in r24, 0x3e ; 62 + 4320: 8f b7 in r24, 0x3f ; 63 4322: 8d 93 st X+, r24 - 4324: 8f b7 in r24, 0x3f ; 63 - 4326: 8d 93 st X+, r24 - 4328: ed 93 st X+, r30 - 432a: fd 93 st X+, r31 - 432c: 88 27 eor r24, r24 - 432e: 99 27 eor r25, r25 - 4330: 09 94 ijmp - -00004332 : + 4324: ed 93 st X+, r30 + 4326: fd 93 st X+, r31 + 4328: 88 27 eor r24, r24 + 432a: 99 27 eor r25, r25 + 432c: 09 94 ijmp + +0000432e : longjmp(): - 4332: dc 01 movw r26, r24 - 4334: cb 01 movw r24, r22 - 4336: 81 30 cpi r24, 0x01 ; 1 - 4338: 91 05 cpc r25, r1 - 433a: 81 1d adc r24, r1 - 433c: 2d 90 ld r2, X+ - 433e: 3d 90 ld r3, X+ - 4340: 4d 90 ld r4, X+ - 4342: 5d 90 ld r5, X+ - 4344: 6d 90 ld r6, X+ - 4346: 7d 90 ld r7, X+ - 4348: 8d 90 ld r8, X+ - 434a: 9d 90 ld r9, X+ - 434c: ad 90 ld r10, X+ - 434e: bd 90 ld r11, X+ - 4350: cd 90 ld r12, X+ - 4352: dd 90 ld r13, X+ - 4354: ed 90 ld r14, X+ - 4356: fd 90 ld r15, X+ - 4358: 0d 91 ld r16, X+ - 435a: 1d 91 ld r17, X+ - 435c: cd 91 ld r28, X+ - 435e: dd 91 ld r29, X+ - 4360: ed 91 ld r30, X+ - 4362: fd 91 ld r31, X+ - 4364: 0d 90 ld r0, X+ - 4366: 0f be out 0x3f, r0 ; 63 - 4368: ed bf out 0x3d, r30 ; 61 - 436a: fe bf out 0x3e, r31 ; 62 - 436c: ed 91 ld r30, X+ - 436e: fd 91 ld r31, X+ - 4370: 09 94 ijmp - -00004372 : + 432e: dc 01 movw r26, r24 + 4330: cb 01 movw r24, r22 + 4332: 81 30 cpi r24, 0x01 ; 1 + 4334: 91 05 cpc r25, r1 + 4336: 81 1d adc r24, r1 + 4338: 2d 90 ld r2, X+ + 433a: 3d 90 ld r3, X+ + 433c: 4d 90 ld r4, X+ + 433e: 5d 90 ld r5, X+ + 4340: 6d 90 ld r6, X+ + 4342: 7d 90 ld r7, X+ + 4344: 8d 90 ld r8, X+ + 4346: 9d 90 ld r9, X+ + 4348: ad 90 ld r10, X+ + 434a: bd 90 ld r11, X+ + 434c: cd 90 ld r12, X+ + 434e: dd 90 ld r13, X+ + 4350: ed 90 ld r14, X+ + 4352: fd 90 ld r15, X+ + 4354: 0d 91 ld r16, X+ + 4356: 1d 91 ld r17, X+ + 4358: cd 91 ld r28, X+ + 435a: dd 91 ld r29, X+ + 435c: ed 91 ld r30, X+ + 435e: fd 91 ld r31, X+ + 4360: 0d 90 ld r0, X+ + 4362: 0f be out 0x3f, r0 ; 63 + 4364: ed bf out 0x3d, r30 ; 61 + 4366: fe bf out 0x3e, r31 ; 62 + 4368: ed 91 ld r30, X+ + 436a: fd 91 ld r31, X+ + 436c: 09 94 ijmp + +0000436e : memcpy_P(): - 4372: fb 01 movw r30, r22 - 4374: dc 01 movw r26, r24 - 4376: 02 c0 rjmp .+4 ; 0x437c - 4378: 05 90 lpm r0, Z+ - 437a: 0d 92 st X+, r0 - 437c: 41 50 subi r20, 0x01 ; 1 - 437e: 50 40 sbci r21, 0x00 ; 0 - 4380: d8 f7 brcc .-10 ; 0x4378 - 4382: 08 95 ret - -00004384 : + 436e: fb 01 movw r30, r22 + 4370: dc 01 movw r26, r24 + 4372: 02 c0 rjmp .+4 ; 0x4378 + 4374: 05 90 lpm r0, Z+ + 4376: 0d 92 st X+, r0 + 4378: 41 50 subi r20, 0x01 ; 1 + 437a: 50 40 sbci r21, 0x00 ; 0 + 437c: d8 f7 brcc .-10 ; 0x4374 + 437e: 08 95 ret + +00004380 : vfprintf_P(): - 4384: cf 93 push r28 - 4386: df 93 push r29 - 4388: ec 01 movw r28, r24 - 438a: 8b 81 ldd r24, Y+3 ; 0x03 - 438c: 88 60 ori r24, 0x08 ; 8 - 438e: 8b 83 std Y+3, r24 ; 0x03 - 4390: ce 01 movw r24, r28 - 4392: 06 d0 rcall .+12 ; 0x43a0 - 4394: 2b 81 ldd r18, Y+3 ; 0x03 - 4396: 27 7f andi r18, 0xF7 ; 247 - 4398: 2b 83 std Y+3, r18 ; 0x03 - 439a: df 91 pop r29 - 439c: cf 91 pop r28 - 439e: 08 95 ret - -000043a0 : + 4380: cf 93 push r28 + 4382: df 93 push r29 + 4384: ec 01 movw r28, r24 + 4386: 8b 81 ldd r24, Y+3 ; 0x03 + 4388: 88 60 ori r24, 0x08 ; 8 + 438a: 8b 83 std Y+3, r24 ; 0x03 + 438c: ce 01 movw r24, r28 + 438e: 06 d0 rcall .+12 ; 0x439c + 4390: 2b 81 ldd r18, Y+3 ; 0x03 + 4392: 27 7f andi r18, 0xF7 ; 247 + 4394: 2b 83 std Y+3, r18 ; 0x03 + 4396: df 91 pop r29 + 4398: cf 91 pop r28 + 439a: 08 95 ret + +0000439c : vfprintf(): - 43a0: ab e0 ldi r26, 0x0B ; 11 - 43a2: b0 e0 ldi r27, 0x00 ; 0 - 43a4: e5 ed ldi r30, 0xD5 ; 213 - 43a6: f1 e2 ldi r31, 0x21 ; 33 - 43a8: 6a c2 rjmp .+1236 ; 0x487e <__prologue_saves__> - 43aa: 7c 01 movw r14, r24 - 43ac: 3b 01 movw r6, r22 - 43ae: 8a 01 movw r16, r20 - 43b0: fc 01 movw r30, r24 - 43b2: 16 82 std Z+6, r1 ; 0x06 - 43b4: 17 82 std Z+7, r1 ; 0x07 - 43b6: 83 81 ldd r24, Z+3 ; 0x03 - 43b8: 81 ff sbrs r24, 1 - 43ba: ba c1 rjmp .+884 ; 0x4730 - 43bc: ce 01 movw r24, r28 - 43be: 01 96 adiw r24, 0x01 ; 1 - 43c0: 5c 01 movw r10, r24 - 43c2: f7 01 movw r30, r14 - 43c4: 93 81 ldd r25, Z+3 ; 0x03 - 43c6: f3 01 movw r30, r6 - 43c8: 93 fd sbrc r25, 3 - 43ca: 85 91 lpm r24, Z+ - 43cc: 93 ff sbrs r25, 3 - 43ce: 81 91 ld r24, Z+ - 43d0: 3f 01 movw r6, r30 - 43d2: 88 23 and r24, r24 - 43d4: 09 f4 brne .+2 ; 0x43d8 - 43d6: 49 c1 rjmp .+658 ; 0x466a - 43d8: 85 32 cpi r24, 0x25 ; 37 - 43da: 39 f4 brne .+14 ; 0x43ea - 43dc: 93 fd sbrc r25, 3 - 43de: 85 91 lpm r24, Z+ - 43e0: 93 ff sbrs r25, 3 - 43e2: 81 91 ld r24, Z+ - 43e4: 3f 01 movw r6, r30 - 43e6: 85 32 cpi r24, 0x25 ; 37 - 43e8: 21 f4 brne .+8 ; 0x43f2 - 43ea: b7 01 movw r22, r14 - 43ec: 90 e0 ldi r25, 0x00 ; 0 - 43ee: b9 d1 rcall .+882 ; 0x4762 - 43f0: e8 cf rjmp .-48 ; 0x43c2 - 43f2: 91 2c mov r9, r1 - 43f4: 21 2c mov r2, r1 - 43f6: 31 2c mov r3, r1 - 43f8: ff e1 ldi r31, 0x1F ; 31 - 43fa: f3 15 cp r31, r3 - 43fc: 38 f0 brcs .+14 ; 0x440c - 43fe: 8b 32 cpi r24, 0x2B ; 43 - 4400: 11 f1 breq .+68 ; 0x4446 - 4402: 90 f4 brcc .+36 ; 0x4428 - 4404: 80 32 cpi r24, 0x20 ; 32 - 4406: 09 f1 breq .+66 ; 0x444a - 4408: 83 32 cpi r24, 0x23 ; 35 - 440a: 29 f1 breq .+74 ; 0x4456 - 440c: 37 fc sbrc r3, 7 - 440e: 3c c0 rjmp .+120 ; 0x4488 - 4410: 20 ed ldi r18, 0xD0 ; 208 - 4412: 28 0f add r18, r24 - 4414: 2a 30 cpi r18, 0x0A ; 10 - 4416: 50 f5 brcc .+84 ; 0x446c - 4418: 36 fe sbrs r3, 6 - 441a: 20 c0 rjmp .+64 ; 0x445c - 441c: 8a e0 ldi r24, 0x0A ; 10 - 441e: 98 9e mul r9, r24 - 4420: 20 0d add r18, r0 - 4422: 11 24 eor r1, r1 - 4424: 92 2e mov r9, r18 - 4426: 06 c0 rjmp .+12 ; 0x4434 - 4428: 8d 32 cpi r24, 0x2D ; 45 - 442a: 91 f0 breq .+36 ; 0x4450 - 442c: 80 33 cpi r24, 0x30 ; 48 - 442e: 71 f7 brne .-36 ; 0x440c - 4430: 68 94 set - 4432: 30 f8 bld r3, 0 - 4434: f3 01 movw r30, r6 - 4436: 93 fd sbrc r25, 3 - 4438: 85 91 lpm r24, Z+ - 443a: 93 ff sbrs r25, 3 - 443c: 81 91 ld r24, Z+ - 443e: 3f 01 movw r6, r30 - 4440: 81 11 cpse r24, r1 - 4442: da cf rjmp .-76 ; 0x43f8 - 4444: 21 c0 rjmp .+66 ; 0x4488 + 439c: ab e0 ldi r26, 0x0B ; 11 + 439e: b0 e0 ldi r27, 0x00 ; 0 + 43a0: e3 ed ldi r30, 0xD3 ; 211 + 43a2: f1 e2 ldi r31, 0x21 ; 33 + 43a4: 6a c2 rjmp .+1236 ; 0x487a <__prologue_saves__> + 43a6: 7c 01 movw r14, r24 + 43a8: 3b 01 movw r6, r22 + 43aa: 8a 01 movw r16, r20 + 43ac: fc 01 movw r30, r24 + 43ae: 16 82 std Z+6, r1 ; 0x06 + 43b0: 17 82 std Z+7, r1 ; 0x07 + 43b2: 83 81 ldd r24, Z+3 ; 0x03 + 43b4: 81 ff sbrs r24, 1 + 43b6: ba c1 rjmp .+884 ; 0x472c + 43b8: ce 01 movw r24, r28 + 43ba: 01 96 adiw r24, 0x01 ; 1 + 43bc: 5c 01 movw r10, r24 + 43be: f7 01 movw r30, r14 + 43c0: 93 81 ldd r25, Z+3 ; 0x03 + 43c2: f3 01 movw r30, r6 + 43c4: 93 fd sbrc r25, 3 + 43c6: 85 91 lpm r24, Z+ + 43c8: 93 ff sbrs r25, 3 + 43ca: 81 91 ld r24, Z+ + 43cc: 3f 01 movw r6, r30 + 43ce: 88 23 and r24, r24 + 43d0: 09 f4 brne .+2 ; 0x43d4 + 43d2: 49 c1 rjmp .+658 ; 0x4666 + 43d4: 85 32 cpi r24, 0x25 ; 37 + 43d6: 39 f4 brne .+14 ; 0x43e6 + 43d8: 93 fd sbrc r25, 3 + 43da: 85 91 lpm r24, Z+ + 43dc: 93 ff sbrs r25, 3 + 43de: 81 91 ld r24, Z+ + 43e0: 3f 01 movw r6, r30 + 43e2: 85 32 cpi r24, 0x25 ; 37 + 43e4: 21 f4 brne .+8 ; 0x43ee + 43e6: b7 01 movw r22, r14 + 43e8: 90 e0 ldi r25, 0x00 ; 0 + 43ea: b9 d1 rcall .+882 ; 0x475e + 43ec: e8 cf rjmp .-48 ; 0x43be + 43ee: 91 2c mov r9, r1 + 43f0: 21 2c mov r2, r1 + 43f2: 31 2c mov r3, r1 + 43f4: ff e1 ldi r31, 0x1F ; 31 + 43f6: f3 15 cp r31, r3 + 43f8: 38 f0 brcs .+14 ; 0x4408 + 43fa: 8b 32 cpi r24, 0x2B ; 43 + 43fc: 11 f1 breq .+68 ; 0x4442 + 43fe: 90 f4 brcc .+36 ; 0x4424 + 4400: 80 32 cpi r24, 0x20 ; 32 + 4402: 09 f1 breq .+66 ; 0x4446 + 4404: 83 32 cpi r24, 0x23 ; 35 + 4406: 29 f1 breq .+74 ; 0x4452 + 4408: 37 fc sbrc r3, 7 + 440a: 3c c0 rjmp .+120 ; 0x4484 + 440c: 20 ed ldi r18, 0xD0 ; 208 + 440e: 28 0f add r18, r24 + 4410: 2a 30 cpi r18, 0x0A ; 10 + 4412: 50 f5 brcc .+84 ; 0x4468 + 4414: 36 fe sbrs r3, 6 + 4416: 20 c0 rjmp .+64 ; 0x4458 + 4418: 8a e0 ldi r24, 0x0A ; 10 + 441a: 98 9e mul r9, r24 + 441c: 20 0d add r18, r0 + 441e: 11 24 eor r1, r1 + 4420: 92 2e mov r9, r18 + 4422: 06 c0 rjmp .+12 ; 0x4430 + 4424: 8d 32 cpi r24, 0x2D ; 45 + 4426: 91 f0 breq .+36 ; 0x444c + 4428: 80 33 cpi r24, 0x30 ; 48 + 442a: 71 f7 brne .-36 ; 0x4408 + 442c: 68 94 set + 442e: 30 f8 bld r3, 0 + 4430: f3 01 movw r30, r6 + 4432: 93 fd sbrc r25, 3 + 4434: 85 91 lpm r24, Z+ + 4436: 93 ff sbrs r25, 3 + 4438: 81 91 ld r24, Z+ + 443a: 3f 01 movw r6, r30 + 443c: 81 11 cpse r24, r1 + 443e: da cf rjmp .-76 ; 0x43f4 + 4440: 21 c0 rjmp .+66 ; 0x4484 + 4442: 68 94 set + 4444: 31 f8 bld r3, 1 4446: 68 94 set - 4448: 31 f8 bld r3, 1 - 444a: 68 94 set - 444c: 32 f8 bld r3, 2 - 444e: f2 cf rjmp .-28 ; 0x4434 - 4450: 68 94 set - 4452: 33 f8 bld r3, 3 - 4454: ef cf rjmp .-34 ; 0x4434 - 4456: 68 94 set - 4458: 34 f8 bld r3, 4 - 445a: ec cf rjmp .-40 ; 0x4434 - 445c: ea e0 ldi r30, 0x0A ; 10 - 445e: 2e 9e mul r2, r30 - 4460: 20 0d add r18, r0 - 4462: 11 24 eor r1, r1 - 4464: 22 2e mov r2, r18 - 4466: 68 94 set - 4468: 35 f8 bld r3, 5 - 446a: e4 cf rjmp .-56 ; 0x4434 - 446c: 8e 32 cpi r24, 0x2E ; 46 - 446e: 29 f4 brne .+10 ; 0x447a - 4470: 36 fc sbrc r3, 6 - 4472: fb c0 rjmp .+502 ; 0x466a - 4474: 68 94 set - 4476: 36 f8 bld r3, 6 - 4478: dd cf rjmp .-70 ; 0x4434 - 447a: 8c 36 cpi r24, 0x6C ; 108 - 447c: 19 f4 brne .+6 ; 0x4484 - 447e: 68 94 set - 4480: 37 f8 bld r3, 7 - 4482: d8 cf rjmp .-80 ; 0x4434 - 4484: 88 36 cpi r24, 0x68 ; 104 - 4486: b1 f2 breq .-84 ; 0x4434 - 4488: 98 2f mov r25, r24 - 448a: 9f 7d andi r25, 0xDF ; 223 - 448c: 95 54 subi r25, 0x45 ; 69 - 448e: 93 30 cpi r25, 0x03 ; 3 - 4490: d8 f0 brcs .+54 ; 0x44c8 - 4492: 83 36 cpi r24, 0x63 ; 99 - 4494: 91 f1 breq .+100 ; 0x44fa - 4496: 83 37 cpi r24, 0x73 ; 115 - 4498: b1 f1 breq .+108 ; 0x4506 - 449a: 83 35 cpi r24, 0x53 ; 83 - 449c: 09 f0 breq .+2 ; 0x44a0 - 449e: 5e c0 rjmp .+188 ; 0x455c - 44a0: 28 01 movw r4, r16 - 44a2: f2 e0 ldi r31, 0x02 ; 2 - 44a4: 4f 0e add r4, r31 - 44a6: 51 1c adc r5, r1 - 44a8: f8 01 movw r30, r16 - 44aa: c0 80 ld r12, Z - 44ac: d1 80 ldd r13, Z+1 ; 0x01 - 44ae: 69 2d mov r22, r9 - 44b0: 70 e0 ldi r23, 0x00 ; 0 - 44b2: 36 fc sbrc r3, 6 - 44b4: 02 c0 rjmp .+4 ; 0x44ba - 44b6: 6f ef ldi r22, 0xFF ; 255 - 44b8: 7f ef ldi r23, 0xFF ; 255 - 44ba: c6 01 movw r24, r12 - 44bc: 3c d1 rcall .+632 ; 0x4736 - 44be: 4c 01 movw r8, r24 - 44c0: 68 94 set - 44c2: 37 f8 bld r3, 7 - 44c4: 82 01 movw r16, r4 - 44c6: 0a c0 rjmp .+20 ; 0x44dc - 44c8: 0c 5f subi r16, 0xFC ; 252 - 44ca: 1f 4f sbci r17, 0xFF ; 255 - 44cc: ff e3 ldi r31, 0x3F ; 63 - 44ce: f9 83 std Y+1, r31 ; 0x01 - 44d0: 88 24 eor r8, r8 - 44d2: 83 94 inc r8 - 44d4: 91 2c mov r9, r1 - 44d6: 65 01 movw r12, r10 - 44d8: e8 94 clt - 44da: 37 f8 bld r3, 7 - 44dc: 33 fe sbrs r3, 3 - 44de: 2a c0 rjmp .+84 ; 0x4534 - 44e0: 52 2c mov r5, r2 - 44e2: 81 14 cp r8, r1 - 44e4: 91 04 cpc r9, r1 - 44e6: 59 f5 brne .+86 ; 0x453e - 44e8: 55 20 and r5, r5 - 44ea: 09 f4 brne .+2 ; 0x44ee - 44ec: 6a cf rjmp .-300 ; 0x43c2 - 44ee: b7 01 movw r22, r14 - 44f0: 80 e2 ldi r24, 0x20 ; 32 - 44f2: 90 e0 ldi r25, 0x00 ; 0 - 44f4: 36 d1 rcall .+620 ; 0x4762 - 44f6: 5a 94 dec r5 - 44f8: f7 cf rjmp .-18 ; 0x44e8 - 44fa: f8 01 movw r30, r16 - 44fc: 80 81 ld r24, Z - 44fe: 89 83 std Y+1, r24 ; 0x01 - 4500: 0e 5f subi r16, 0xFE ; 254 - 4502: 1f 4f sbci r17, 0xFF ; 255 - 4504: e5 cf rjmp .-54 ; 0x44d0 - 4506: 28 01 movw r4, r16 - 4508: f2 e0 ldi r31, 0x02 ; 2 - 450a: 4f 0e add r4, r31 - 450c: 51 1c adc r5, r1 - 450e: f8 01 movw r30, r16 - 4510: c0 80 ld r12, Z - 4512: d1 80 ldd r13, Z+1 ; 0x01 - 4514: 69 2d mov r22, r9 - 4516: 70 e0 ldi r23, 0x00 ; 0 - 4518: 36 fc sbrc r3, 6 - 451a: 02 c0 rjmp .+4 ; 0x4520 - 451c: 6f ef ldi r22, 0xFF ; 255 - 451e: 7f ef ldi r23, 0xFF ; 255 - 4520: c6 01 movw r24, r12 - 4522: 14 d1 rcall .+552 ; 0x474c - 4524: 4c 01 movw r8, r24 - 4526: 82 01 movw r16, r4 - 4528: d7 cf rjmp .-82 ; 0x44d8 - 452a: b7 01 movw r22, r14 - 452c: 80 e2 ldi r24, 0x20 ; 32 - 452e: 90 e0 ldi r25, 0x00 ; 0 - 4530: 18 d1 rcall .+560 ; 0x4762 - 4532: 2a 94 dec r2 - 4534: 28 14 cp r2, r8 - 4536: 19 04 cpc r1, r9 - 4538: 09 f0 breq .+2 ; 0x453c - 453a: b8 f7 brcc .-18 ; 0x452a - 453c: d1 cf rjmp .-94 ; 0x44e0 - 453e: f6 01 movw r30, r12 - 4540: 37 fc sbrc r3, 7 - 4542: 85 91 lpm r24, Z+ - 4544: 37 fe sbrs r3, 7 - 4546: 81 91 ld r24, Z+ - 4548: 6f 01 movw r12, r30 - 454a: b7 01 movw r22, r14 - 454c: 90 e0 ldi r25, 0x00 ; 0 - 454e: 09 d1 rcall .+530 ; 0x4762 - 4550: 51 10 cpse r5, r1 - 4552: 5a 94 dec r5 - 4554: f1 e0 ldi r31, 0x01 ; 1 - 4556: 8f 1a sub r8, r31 - 4558: 91 08 sbc r9, r1 - 455a: c3 cf rjmp .-122 ; 0x44e2 - 455c: 84 36 cpi r24, 0x64 ; 100 - 455e: 19 f0 breq .+6 ; 0x4566 - 4560: 89 36 cpi r24, 0x69 ; 105 - 4562: 09 f0 breq .+2 ; 0x4566 - 4564: 73 c0 rjmp .+230 ; 0x464c - 4566: f8 01 movw r30, r16 - 4568: 37 fe sbrs r3, 7 - 456a: 67 c0 rjmp .+206 ; 0x463a - 456c: 60 81 ld r22, Z - 456e: 71 81 ldd r23, Z+1 ; 0x01 - 4570: 82 81 ldd r24, Z+2 ; 0x02 - 4572: 93 81 ldd r25, Z+3 ; 0x03 - 4574: 0c 5f subi r16, 0xFC ; 252 - 4576: 1f 4f sbci r17, 0xFF ; 255 - 4578: f3 2d mov r31, r3 - 457a: ff 76 andi r31, 0x6F ; 111 - 457c: 3f 2e mov r3, r31 - 457e: 97 ff sbrs r25, 7 - 4580: 09 c0 rjmp .+18 ; 0x4594 - 4582: 90 95 com r25 - 4584: 80 95 com r24 - 4586: 70 95 com r23 - 4588: 61 95 neg r22 - 458a: 7f 4f sbci r23, 0xFF ; 255 - 458c: 8f 4f sbci r24, 0xFF ; 255 - 458e: 9f 4f sbci r25, 0xFF ; 255 - 4590: 68 94 set - 4592: 37 f8 bld r3, 7 - 4594: 2a e0 ldi r18, 0x0A ; 10 - 4596: 30 e0 ldi r19, 0x00 ; 0 - 4598: a5 01 movw r20, r10 - 459a: 13 d1 rcall .+550 ; 0x47c2 <__ultoa_invert> - 459c: c8 2e mov r12, r24 - 459e: ca 18 sub r12, r10 - 45a0: 8c 2c mov r8, r12 - 45a2: 43 2c mov r4, r3 - 45a4: 36 fe sbrs r3, 6 - 45a6: 0c c0 rjmp .+24 ; 0x45c0 - 45a8: e8 94 clt - 45aa: 40 f8 bld r4, 0 - 45ac: c9 14 cp r12, r9 - 45ae: 40 f4 brcc .+16 ; 0x45c0 - 45b0: 34 fe sbrs r3, 4 - 45b2: 05 c0 rjmp .+10 ; 0x45be - 45b4: 32 fc sbrc r3, 2 - 45b6: 03 c0 rjmp .+6 ; 0x45be - 45b8: f3 2d mov r31, r3 - 45ba: fe 7e andi r31, 0xEE ; 238 - 45bc: 4f 2e mov r4, r31 - 45be: 89 2c mov r8, r9 - 45c0: 44 fe sbrs r4, 4 - 45c2: 90 c0 rjmp .+288 ; 0x46e4 - 45c4: fe 01 movw r30, r28 - 45c6: ec 0d add r30, r12 - 45c8: f1 1d adc r31, r1 - 45ca: 80 81 ld r24, Z - 45cc: 80 33 cpi r24, 0x30 ; 48 - 45ce: 09 f0 breq .+2 ; 0x45d2 - 45d0: 82 c0 rjmp .+260 ; 0x46d6 - 45d2: 24 2d mov r18, r4 - 45d4: 29 7e andi r18, 0xE9 ; 233 - 45d6: 42 2e mov r4, r18 - 45d8: 84 2d mov r24, r4 - 45da: 88 70 andi r24, 0x08 ; 8 - 45dc: 58 2e mov r5, r24 - 45de: 43 fc sbrc r4, 3 - 45e0: 8f c0 rjmp .+286 ; 0x4700 - 45e2: 40 fe sbrs r4, 0 - 45e4: 89 c0 rjmp .+274 ; 0x46f8 - 45e6: 9c 2c mov r9, r12 - 45e8: 82 14 cp r8, r2 - 45ea: 18 f4 brcc .+6 ; 0x45f2 - 45ec: 2c 0c add r2, r12 - 45ee: 92 2c mov r9, r2 - 45f0: 98 18 sub r9, r8 - 45f2: 44 fe sbrs r4, 4 - 45f4: 8b c0 rjmp .+278 ; 0x470c - 45f6: b7 01 movw r22, r14 - 45f8: 80 e3 ldi r24, 0x30 ; 48 - 45fa: 90 e0 ldi r25, 0x00 ; 0 - 45fc: b2 d0 rcall .+356 ; 0x4762 - 45fe: 42 fe sbrs r4, 2 - 4600: 08 c0 rjmp .+16 ; 0x4612 - 4602: 88 e7 ldi r24, 0x78 ; 120 - 4604: 90 e0 ldi r25, 0x00 ; 0 - 4606: 41 fe sbrs r4, 1 - 4608: 02 c0 rjmp .+4 ; 0x460e - 460a: 88 e5 ldi r24, 0x58 ; 88 - 460c: 90 e0 ldi r25, 0x00 ; 0 - 460e: b7 01 movw r22, r14 - 4610: a8 d0 rcall .+336 ; 0x4762 - 4612: c9 14 cp r12, r9 - 4614: 08 f4 brcc .+2 ; 0x4618 - 4616: 86 c0 rjmp .+268 ; 0x4724 - 4618: ca 94 dec r12 - 461a: d1 2c mov r13, r1 - 461c: 9f ef ldi r25, 0xFF ; 255 - 461e: c9 1a sub r12, r25 - 4620: d9 0a sbc r13, r25 - 4622: ca 0c add r12, r10 - 4624: db 1c adc r13, r11 - 4626: f6 01 movw r30, r12 - 4628: 82 91 ld r24, -Z - 462a: 6f 01 movw r12, r30 - 462c: b7 01 movw r22, r14 - 462e: 90 e0 ldi r25, 0x00 ; 0 - 4630: 98 d0 rcall .+304 ; 0x4762 - 4632: ac 14 cp r10, r12 - 4634: bd 04 cpc r11, r13 - 4636: b9 f7 brne .-18 ; 0x4626 - 4638: 57 cf rjmp .-338 ; 0x44e8 - 463a: 60 81 ld r22, Z - 463c: 71 81 ldd r23, Z+1 ; 0x01 - 463e: 07 2e mov r0, r23 - 4640: 00 0c add r0, r0 - 4642: 88 0b sbc r24, r24 - 4644: 99 0b sbc r25, r25 - 4646: 0e 5f subi r16, 0xFE ; 254 - 4648: 1f 4f sbci r17, 0xFF ; 255 - 464a: 96 cf rjmp .-212 ; 0x4578 - 464c: d3 2c mov r13, r3 - 464e: e8 94 clt - 4650: d4 f8 bld r13, 4 - 4652: 2a e0 ldi r18, 0x0A ; 10 - 4654: 30 e0 ldi r19, 0x00 ; 0 - 4656: 85 37 cpi r24, 0x75 ; 117 - 4658: 31 f1 breq .+76 ; 0x46a6 - 465a: 23 2d mov r18, r3 - 465c: 29 7f andi r18, 0xF9 ; 249 - 465e: d2 2e mov r13, r18 - 4660: 8f 36 cpi r24, 0x6F ; 111 - 4662: f9 f0 breq .+62 ; 0x46a2 - 4664: 40 f4 brcc .+16 ; 0x4676 - 4666: 88 35 cpi r24, 0x58 ; 88 - 4668: a1 f0 breq .+40 ; 0x4692 - 466a: f7 01 movw r30, r14 - 466c: 86 81 ldd r24, Z+6 ; 0x06 - 466e: 97 81 ldd r25, Z+7 ; 0x07 - 4670: 2b 96 adiw r28, 0x0b ; 11 - 4672: e2 e1 ldi r30, 0x12 ; 18 - 4674: 1d c1 rjmp .+570 ; 0x48b0 <__epilogue_restores__> - 4676: 80 37 cpi r24, 0x70 ; 112 - 4678: 49 f0 breq .+18 ; 0x468c - 467a: 88 37 cpi r24, 0x78 ; 120 - 467c: b1 f7 brne .-20 ; 0x466a - 467e: d4 fe sbrs r13, 4 - 4680: 02 c0 rjmp .+4 ; 0x4686 - 4682: 68 94 set - 4684: d2 f8 bld r13, 2 - 4686: 20 e1 ldi r18, 0x10 ; 16 - 4688: 30 e0 ldi r19, 0x00 ; 0 - 468a: 0d c0 rjmp .+26 ; 0x46a6 - 468c: 68 94 set - 468e: d4 f8 bld r13, 4 - 4690: f6 cf rjmp .-20 ; 0x467e - 4692: 34 fe sbrs r3, 4 - 4694: 03 c0 rjmp .+6 ; 0x469c - 4696: 82 2f mov r24, r18 - 4698: 86 60 ori r24, 0x06 ; 6 - 469a: d8 2e mov r13, r24 - 469c: 20 e1 ldi r18, 0x10 ; 16 - 469e: 32 e0 ldi r19, 0x02 ; 2 - 46a0: 02 c0 rjmp .+4 ; 0x46a6 - 46a2: 28 e0 ldi r18, 0x08 ; 8 - 46a4: 30 e0 ldi r19, 0x00 ; 0 - 46a6: f8 01 movw r30, r16 - 46a8: d7 fe sbrs r13, 7 - 46aa: 0e c0 rjmp .+28 ; 0x46c8 - 46ac: 60 81 ld r22, Z - 46ae: 71 81 ldd r23, Z+1 ; 0x01 - 46b0: 82 81 ldd r24, Z+2 ; 0x02 - 46b2: 93 81 ldd r25, Z+3 ; 0x03 - 46b4: 0c 5f subi r16, 0xFC ; 252 - 46b6: 1f 4f sbci r17, 0xFF ; 255 - 46b8: a5 01 movw r20, r10 - 46ba: 83 d0 rcall .+262 ; 0x47c2 <__ultoa_invert> - 46bc: c8 2e mov r12, r24 - 46be: ca 18 sub r12, r10 - 46c0: 3d 2c mov r3, r13 - 46c2: e8 94 clt - 46c4: 37 f8 bld r3, 7 - 46c6: 6c cf rjmp .-296 ; 0x45a0 - 46c8: 60 81 ld r22, Z - 46ca: 71 81 ldd r23, Z+1 ; 0x01 - 46cc: 90 e0 ldi r25, 0x00 ; 0 - 46ce: 80 e0 ldi r24, 0x00 ; 0 - 46d0: 0e 5f subi r16, 0xFE ; 254 - 46d2: 1f 4f sbci r17, 0xFF ; 255 - 46d4: f1 cf rjmp .-30 ; 0x46b8 - 46d6: 42 fc sbrc r4, 2 - 46d8: 02 c0 rjmp .+4 ; 0x46de + 4448: 32 f8 bld r3, 2 + 444a: f2 cf rjmp .-28 ; 0x4430 + 444c: 68 94 set + 444e: 33 f8 bld r3, 3 + 4450: ef cf rjmp .-34 ; 0x4430 + 4452: 68 94 set + 4454: 34 f8 bld r3, 4 + 4456: ec cf rjmp .-40 ; 0x4430 + 4458: ea e0 ldi r30, 0x0A ; 10 + 445a: 2e 9e mul r2, r30 + 445c: 20 0d add r18, r0 + 445e: 11 24 eor r1, r1 + 4460: 22 2e mov r2, r18 + 4462: 68 94 set + 4464: 35 f8 bld r3, 5 + 4466: e4 cf rjmp .-56 ; 0x4430 + 4468: 8e 32 cpi r24, 0x2E ; 46 + 446a: 29 f4 brne .+10 ; 0x4476 + 446c: 36 fc sbrc r3, 6 + 446e: fb c0 rjmp .+502 ; 0x4666 + 4470: 68 94 set + 4472: 36 f8 bld r3, 6 + 4474: dd cf rjmp .-70 ; 0x4430 + 4476: 8c 36 cpi r24, 0x6C ; 108 + 4478: 19 f4 brne .+6 ; 0x4480 + 447a: 68 94 set + 447c: 37 f8 bld r3, 7 + 447e: d8 cf rjmp .-80 ; 0x4430 + 4480: 88 36 cpi r24, 0x68 ; 104 + 4482: b1 f2 breq .-84 ; 0x4430 + 4484: 98 2f mov r25, r24 + 4486: 9f 7d andi r25, 0xDF ; 223 + 4488: 95 54 subi r25, 0x45 ; 69 + 448a: 93 30 cpi r25, 0x03 ; 3 + 448c: d8 f0 brcs .+54 ; 0x44c4 + 448e: 83 36 cpi r24, 0x63 ; 99 + 4490: 91 f1 breq .+100 ; 0x44f6 + 4492: 83 37 cpi r24, 0x73 ; 115 + 4494: b1 f1 breq .+108 ; 0x4502 + 4496: 83 35 cpi r24, 0x53 ; 83 + 4498: 09 f0 breq .+2 ; 0x449c + 449a: 5e c0 rjmp .+188 ; 0x4558 + 449c: 28 01 movw r4, r16 + 449e: f2 e0 ldi r31, 0x02 ; 2 + 44a0: 4f 0e add r4, r31 + 44a2: 51 1c adc r5, r1 + 44a4: f8 01 movw r30, r16 + 44a6: c0 80 ld r12, Z + 44a8: d1 80 ldd r13, Z+1 ; 0x01 + 44aa: 69 2d mov r22, r9 + 44ac: 70 e0 ldi r23, 0x00 ; 0 + 44ae: 36 fc sbrc r3, 6 + 44b0: 02 c0 rjmp .+4 ; 0x44b6 + 44b2: 6f ef ldi r22, 0xFF ; 255 + 44b4: 7f ef ldi r23, 0xFF ; 255 + 44b6: c6 01 movw r24, r12 + 44b8: 3c d1 rcall .+632 ; 0x4732 + 44ba: 4c 01 movw r8, r24 + 44bc: 68 94 set + 44be: 37 f8 bld r3, 7 + 44c0: 82 01 movw r16, r4 + 44c2: 0a c0 rjmp .+20 ; 0x44d8 + 44c4: 0c 5f subi r16, 0xFC ; 252 + 44c6: 1f 4f sbci r17, 0xFF ; 255 + 44c8: ff e3 ldi r31, 0x3F ; 63 + 44ca: f9 83 std Y+1, r31 ; 0x01 + 44cc: 88 24 eor r8, r8 + 44ce: 83 94 inc r8 + 44d0: 91 2c mov r9, r1 + 44d2: 65 01 movw r12, r10 + 44d4: e8 94 clt + 44d6: 37 f8 bld r3, 7 + 44d8: 33 fe sbrs r3, 3 + 44da: 2a c0 rjmp .+84 ; 0x4530 + 44dc: 52 2c mov r5, r2 + 44de: 81 14 cp r8, r1 + 44e0: 91 04 cpc r9, r1 + 44e2: 59 f5 brne .+86 ; 0x453a + 44e4: 55 20 and r5, r5 + 44e6: 09 f4 brne .+2 ; 0x44ea + 44e8: 6a cf rjmp .-300 ; 0x43be + 44ea: b7 01 movw r22, r14 + 44ec: 80 e2 ldi r24, 0x20 ; 32 + 44ee: 90 e0 ldi r25, 0x00 ; 0 + 44f0: 36 d1 rcall .+620 ; 0x475e + 44f2: 5a 94 dec r5 + 44f4: f7 cf rjmp .-18 ; 0x44e4 + 44f6: f8 01 movw r30, r16 + 44f8: 80 81 ld r24, Z + 44fa: 89 83 std Y+1, r24 ; 0x01 + 44fc: 0e 5f subi r16, 0xFE ; 254 + 44fe: 1f 4f sbci r17, 0xFF ; 255 + 4500: e5 cf rjmp .-54 ; 0x44cc + 4502: 28 01 movw r4, r16 + 4504: f2 e0 ldi r31, 0x02 ; 2 + 4506: 4f 0e add r4, r31 + 4508: 51 1c adc r5, r1 + 450a: f8 01 movw r30, r16 + 450c: c0 80 ld r12, Z + 450e: d1 80 ldd r13, Z+1 ; 0x01 + 4510: 69 2d mov r22, r9 + 4512: 70 e0 ldi r23, 0x00 ; 0 + 4514: 36 fc sbrc r3, 6 + 4516: 02 c0 rjmp .+4 ; 0x451c + 4518: 6f ef ldi r22, 0xFF ; 255 + 451a: 7f ef ldi r23, 0xFF ; 255 + 451c: c6 01 movw r24, r12 + 451e: 14 d1 rcall .+552 ; 0x4748 + 4520: 4c 01 movw r8, r24 + 4522: 82 01 movw r16, r4 + 4524: d7 cf rjmp .-82 ; 0x44d4 + 4526: b7 01 movw r22, r14 + 4528: 80 e2 ldi r24, 0x20 ; 32 + 452a: 90 e0 ldi r25, 0x00 ; 0 + 452c: 18 d1 rcall .+560 ; 0x475e + 452e: 2a 94 dec r2 + 4530: 28 14 cp r2, r8 + 4532: 19 04 cpc r1, r9 + 4534: 09 f0 breq .+2 ; 0x4538 + 4536: b8 f7 brcc .-18 ; 0x4526 + 4538: d1 cf rjmp .-94 ; 0x44dc + 453a: f6 01 movw r30, r12 + 453c: 37 fc sbrc r3, 7 + 453e: 85 91 lpm r24, Z+ + 4540: 37 fe sbrs r3, 7 + 4542: 81 91 ld r24, Z+ + 4544: 6f 01 movw r12, r30 + 4546: b7 01 movw r22, r14 + 4548: 90 e0 ldi r25, 0x00 ; 0 + 454a: 09 d1 rcall .+530 ; 0x475e + 454c: 51 10 cpse r5, r1 + 454e: 5a 94 dec r5 + 4550: f1 e0 ldi r31, 0x01 ; 1 + 4552: 8f 1a sub r8, r31 + 4554: 91 08 sbc r9, r1 + 4556: c3 cf rjmp .-122 ; 0x44de + 4558: 84 36 cpi r24, 0x64 ; 100 + 455a: 19 f0 breq .+6 ; 0x4562 + 455c: 89 36 cpi r24, 0x69 ; 105 + 455e: 09 f0 breq .+2 ; 0x4562 + 4560: 73 c0 rjmp .+230 ; 0x4648 + 4562: f8 01 movw r30, r16 + 4564: 37 fe sbrs r3, 7 + 4566: 67 c0 rjmp .+206 ; 0x4636 + 4568: 60 81 ld r22, Z + 456a: 71 81 ldd r23, Z+1 ; 0x01 + 456c: 82 81 ldd r24, Z+2 ; 0x02 + 456e: 93 81 ldd r25, Z+3 ; 0x03 + 4570: 0c 5f subi r16, 0xFC ; 252 + 4572: 1f 4f sbci r17, 0xFF ; 255 + 4574: f3 2d mov r31, r3 + 4576: ff 76 andi r31, 0x6F ; 111 + 4578: 3f 2e mov r3, r31 + 457a: 97 ff sbrs r25, 7 + 457c: 09 c0 rjmp .+18 ; 0x4590 + 457e: 90 95 com r25 + 4580: 80 95 com r24 + 4582: 70 95 com r23 + 4584: 61 95 neg r22 + 4586: 7f 4f sbci r23, 0xFF ; 255 + 4588: 8f 4f sbci r24, 0xFF ; 255 + 458a: 9f 4f sbci r25, 0xFF ; 255 + 458c: 68 94 set + 458e: 37 f8 bld r3, 7 + 4590: 2a e0 ldi r18, 0x0A ; 10 + 4592: 30 e0 ldi r19, 0x00 ; 0 + 4594: a5 01 movw r20, r10 + 4596: 13 d1 rcall .+550 ; 0x47be <__ultoa_invert> + 4598: c8 2e mov r12, r24 + 459a: ca 18 sub r12, r10 + 459c: 8c 2c mov r8, r12 + 459e: 43 2c mov r4, r3 + 45a0: 36 fe sbrs r3, 6 + 45a2: 0c c0 rjmp .+24 ; 0x45bc + 45a4: e8 94 clt + 45a6: 40 f8 bld r4, 0 + 45a8: c9 14 cp r12, r9 + 45aa: 40 f4 brcc .+16 ; 0x45bc + 45ac: 34 fe sbrs r3, 4 + 45ae: 05 c0 rjmp .+10 ; 0x45ba + 45b0: 32 fc sbrc r3, 2 + 45b2: 03 c0 rjmp .+6 ; 0x45ba + 45b4: f3 2d mov r31, r3 + 45b6: fe 7e andi r31, 0xEE ; 238 + 45b8: 4f 2e mov r4, r31 + 45ba: 89 2c mov r8, r9 + 45bc: 44 fe sbrs r4, 4 + 45be: 90 c0 rjmp .+288 ; 0x46e0 + 45c0: fe 01 movw r30, r28 + 45c2: ec 0d add r30, r12 + 45c4: f1 1d adc r31, r1 + 45c6: 80 81 ld r24, Z + 45c8: 80 33 cpi r24, 0x30 ; 48 + 45ca: 09 f0 breq .+2 ; 0x45ce + 45cc: 82 c0 rjmp .+260 ; 0x46d2 + 45ce: 24 2d mov r18, r4 + 45d0: 29 7e andi r18, 0xE9 ; 233 + 45d2: 42 2e mov r4, r18 + 45d4: 84 2d mov r24, r4 + 45d6: 88 70 andi r24, 0x08 ; 8 + 45d8: 58 2e mov r5, r24 + 45da: 43 fc sbrc r4, 3 + 45dc: 8f c0 rjmp .+286 ; 0x46fc + 45de: 40 fe sbrs r4, 0 + 45e0: 89 c0 rjmp .+274 ; 0x46f4 + 45e2: 9c 2c mov r9, r12 + 45e4: 82 14 cp r8, r2 + 45e6: 18 f4 brcc .+6 ; 0x45ee + 45e8: 2c 0c add r2, r12 + 45ea: 92 2c mov r9, r2 + 45ec: 98 18 sub r9, r8 + 45ee: 44 fe sbrs r4, 4 + 45f0: 8b c0 rjmp .+278 ; 0x4708 + 45f2: b7 01 movw r22, r14 + 45f4: 80 e3 ldi r24, 0x30 ; 48 + 45f6: 90 e0 ldi r25, 0x00 ; 0 + 45f8: b2 d0 rcall .+356 ; 0x475e + 45fa: 42 fe sbrs r4, 2 + 45fc: 08 c0 rjmp .+16 ; 0x460e + 45fe: 88 e7 ldi r24, 0x78 ; 120 + 4600: 90 e0 ldi r25, 0x00 ; 0 + 4602: 41 fe sbrs r4, 1 + 4604: 02 c0 rjmp .+4 ; 0x460a + 4606: 88 e5 ldi r24, 0x58 ; 88 + 4608: 90 e0 ldi r25, 0x00 ; 0 + 460a: b7 01 movw r22, r14 + 460c: a8 d0 rcall .+336 ; 0x475e + 460e: c9 14 cp r12, r9 + 4610: 08 f4 brcc .+2 ; 0x4614 + 4612: 86 c0 rjmp .+268 ; 0x4720 + 4614: ca 94 dec r12 + 4616: d1 2c mov r13, r1 + 4618: 9f ef ldi r25, 0xFF ; 255 + 461a: c9 1a sub r12, r25 + 461c: d9 0a sbc r13, r25 + 461e: ca 0c add r12, r10 + 4620: db 1c adc r13, r11 + 4622: f6 01 movw r30, r12 + 4624: 82 91 ld r24, -Z + 4626: 6f 01 movw r12, r30 + 4628: b7 01 movw r22, r14 + 462a: 90 e0 ldi r25, 0x00 ; 0 + 462c: 98 d0 rcall .+304 ; 0x475e + 462e: ac 14 cp r10, r12 + 4630: bd 04 cpc r11, r13 + 4632: b9 f7 brne .-18 ; 0x4622 + 4634: 57 cf rjmp .-338 ; 0x44e4 + 4636: 60 81 ld r22, Z + 4638: 71 81 ldd r23, Z+1 ; 0x01 + 463a: 07 2e mov r0, r23 + 463c: 00 0c add r0, r0 + 463e: 88 0b sbc r24, r24 + 4640: 99 0b sbc r25, r25 + 4642: 0e 5f subi r16, 0xFE ; 254 + 4644: 1f 4f sbci r17, 0xFF ; 255 + 4646: 96 cf rjmp .-212 ; 0x4574 + 4648: d3 2c mov r13, r3 + 464a: e8 94 clt + 464c: d4 f8 bld r13, 4 + 464e: 2a e0 ldi r18, 0x0A ; 10 + 4650: 30 e0 ldi r19, 0x00 ; 0 + 4652: 85 37 cpi r24, 0x75 ; 117 + 4654: 31 f1 breq .+76 ; 0x46a2 + 4656: 23 2d mov r18, r3 + 4658: 29 7f andi r18, 0xF9 ; 249 + 465a: d2 2e mov r13, r18 + 465c: 8f 36 cpi r24, 0x6F ; 111 + 465e: f9 f0 breq .+62 ; 0x469e + 4660: 40 f4 brcc .+16 ; 0x4672 + 4662: 88 35 cpi r24, 0x58 ; 88 + 4664: a1 f0 breq .+40 ; 0x468e + 4666: f7 01 movw r30, r14 + 4668: 86 81 ldd r24, Z+6 ; 0x06 + 466a: 97 81 ldd r25, Z+7 ; 0x07 + 466c: 2b 96 adiw r28, 0x0b ; 11 + 466e: e2 e1 ldi r30, 0x12 ; 18 + 4670: 1d c1 rjmp .+570 ; 0x48ac <__epilogue_restores__> + 4672: 80 37 cpi r24, 0x70 ; 112 + 4674: 49 f0 breq .+18 ; 0x4688 + 4676: 88 37 cpi r24, 0x78 ; 120 + 4678: b1 f7 brne .-20 ; 0x4666 + 467a: d4 fe sbrs r13, 4 + 467c: 02 c0 rjmp .+4 ; 0x4682 + 467e: 68 94 set + 4680: d2 f8 bld r13, 2 + 4682: 20 e1 ldi r18, 0x10 ; 16 + 4684: 30 e0 ldi r19, 0x00 ; 0 + 4686: 0d c0 rjmp .+26 ; 0x46a2 + 4688: 68 94 set + 468a: d4 f8 bld r13, 4 + 468c: f6 cf rjmp .-20 ; 0x467a + 468e: 34 fe sbrs r3, 4 + 4690: 03 c0 rjmp .+6 ; 0x4698 + 4692: 82 2f mov r24, r18 + 4694: 86 60 ori r24, 0x06 ; 6 + 4696: d8 2e mov r13, r24 + 4698: 20 e1 ldi r18, 0x10 ; 16 + 469a: 32 e0 ldi r19, 0x02 ; 2 + 469c: 02 c0 rjmp .+4 ; 0x46a2 + 469e: 28 e0 ldi r18, 0x08 ; 8 + 46a0: 30 e0 ldi r19, 0x00 ; 0 + 46a2: f8 01 movw r30, r16 + 46a4: d7 fe sbrs r13, 7 + 46a6: 0e c0 rjmp .+28 ; 0x46c4 + 46a8: 60 81 ld r22, Z + 46aa: 71 81 ldd r23, Z+1 ; 0x01 + 46ac: 82 81 ldd r24, Z+2 ; 0x02 + 46ae: 93 81 ldd r25, Z+3 ; 0x03 + 46b0: 0c 5f subi r16, 0xFC ; 252 + 46b2: 1f 4f sbci r17, 0xFF ; 255 + 46b4: a5 01 movw r20, r10 + 46b6: 83 d0 rcall .+262 ; 0x47be <__ultoa_invert> + 46b8: c8 2e mov r12, r24 + 46ba: ca 18 sub r12, r10 + 46bc: 3d 2c mov r3, r13 + 46be: e8 94 clt + 46c0: 37 f8 bld r3, 7 + 46c2: 6c cf rjmp .-296 ; 0x459c + 46c4: 60 81 ld r22, Z + 46c6: 71 81 ldd r23, Z+1 ; 0x01 + 46c8: 90 e0 ldi r25, 0x00 ; 0 + 46ca: 80 e0 ldi r24, 0x00 ; 0 + 46cc: 0e 5f subi r16, 0xFE ; 254 + 46ce: 1f 4f sbci r17, 0xFF ; 255 + 46d0: f1 cf rjmp .-30 ; 0x46b4 + 46d2: 42 fc sbrc r4, 2 + 46d4: 02 c0 rjmp .+4 ; 0x46da + 46d6: 83 94 inc r8 + 46d8: 7d cf rjmp .-262 ; 0x45d4 46da: 83 94 inc r8 - 46dc: 7d cf rjmp .-262 ; 0x45d8 - 46de: 83 94 inc r8 - 46e0: 83 94 inc r8 - 46e2: 7a cf rjmp .-268 ; 0x45d8 - 46e4: 84 2d mov r24, r4 - 46e6: 86 78 andi r24, 0x86 ; 134 - 46e8: 09 f4 brne .+2 ; 0x46ec - 46ea: 76 cf rjmp .-276 ; 0x45d8 - 46ec: f6 cf rjmp .-20 ; 0x46da - 46ee: b7 01 movw r22, r14 - 46f0: 80 e2 ldi r24, 0x20 ; 32 - 46f2: 90 e0 ldi r25, 0x00 ; 0 - 46f4: 36 d0 rcall .+108 ; 0x4762 - 46f6: 83 94 inc r8 - 46f8: 82 14 cp r8, r2 - 46fa: c8 f3 brcs .-14 ; 0x46ee - 46fc: 51 2c mov r5, r1 - 46fe: 79 cf rjmp .-270 ; 0x45f2 - 4700: 52 2c mov r5, r2 - 4702: 58 18 sub r5, r8 - 4704: 82 14 cp r8, r2 - 4706: 08 f4 brcc .+2 ; 0x470a - 4708: 74 cf rjmp .-280 ; 0x45f2 - 470a: f8 cf rjmp .-16 ; 0x46fc - 470c: 84 2d mov r24, r4 - 470e: 86 78 andi r24, 0x86 ; 134 - 4710: 09 f4 brne .+2 ; 0x4714 - 4712: 7f cf rjmp .-258 ; 0x4612 - 4714: 8b e2 ldi r24, 0x2B ; 43 - 4716: 41 fe sbrs r4, 1 - 4718: 80 e2 ldi r24, 0x20 ; 32 - 471a: 47 fc sbrc r4, 7 - 471c: 8d e2 ldi r24, 0x2D ; 45 - 471e: b7 01 movw r22, r14 - 4720: 90 e0 ldi r25, 0x00 ; 0 - 4722: 76 cf rjmp .-276 ; 0x4610 - 4724: b7 01 movw r22, r14 - 4726: 80 e3 ldi r24, 0x30 ; 48 - 4728: 90 e0 ldi r25, 0x00 ; 0 - 472a: 1b d0 rcall .+54 ; 0x4762 - 472c: 9a 94 dec r9 - 472e: 71 cf rjmp .-286 ; 0x4612 - 4730: 8f ef ldi r24, 0xFF ; 255 - 4732: 9f ef ldi r25, 0xFF ; 255 - 4734: 9d cf rjmp .-198 ; 0x4670 - -00004736 : + 46dc: 83 94 inc r8 + 46de: 7a cf rjmp .-268 ; 0x45d4 + 46e0: 84 2d mov r24, r4 + 46e2: 86 78 andi r24, 0x86 ; 134 + 46e4: 09 f4 brne .+2 ; 0x46e8 + 46e6: 76 cf rjmp .-276 ; 0x45d4 + 46e8: f6 cf rjmp .-20 ; 0x46d6 + 46ea: b7 01 movw r22, r14 + 46ec: 80 e2 ldi r24, 0x20 ; 32 + 46ee: 90 e0 ldi r25, 0x00 ; 0 + 46f0: 36 d0 rcall .+108 ; 0x475e + 46f2: 83 94 inc r8 + 46f4: 82 14 cp r8, r2 + 46f6: c8 f3 brcs .-14 ; 0x46ea + 46f8: 51 2c mov r5, r1 + 46fa: 79 cf rjmp .-270 ; 0x45ee + 46fc: 52 2c mov r5, r2 + 46fe: 58 18 sub r5, r8 + 4700: 82 14 cp r8, r2 + 4702: 08 f4 brcc .+2 ; 0x4706 + 4704: 74 cf rjmp .-280 ; 0x45ee + 4706: f8 cf rjmp .-16 ; 0x46f8 + 4708: 84 2d mov r24, r4 + 470a: 86 78 andi r24, 0x86 ; 134 + 470c: 09 f4 brne .+2 ; 0x4710 + 470e: 7f cf rjmp .-258 ; 0x460e + 4710: 8b e2 ldi r24, 0x2B ; 43 + 4712: 41 fe sbrs r4, 1 + 4714: 80 e2 ldi r24, 0x20 ; 32 + 4716: 47 fc sbrc r4, 7 + 4718: 8d e2 ldi r24, 0x2D ; 45 + 471a: b7 01 movw r22, r14 + 471c: 90 e0 ldi r25, 0x00 ; 0 + 471e: 76 cf rjmp .-276 ; 0x460c + 4720: b7 01 movw r22, r14 + 4722: 80 e3 ldi r24, 0x30 ; 48 + 4724: 90 e0 ldi r25, 0x00 ; 0 + 4726: 1b d0 rcall .+54 ; 0x475e + 4728: 9a 94 dec r9 + 472a: 71 cf rjmp .-286 ; 0x460e + 472c: 8f ef ldi r24, 0xFF ; 255 + 472e: 9f ef ldi r25, 0xFF ; 255 + 4730: 9d cf rjmp .-198 ; 0x466c + +00004732 : strnlen_P(): - 4736: fc 01 movw r30, r24 - 4738: 05 90 lpm r0, Z+ - 473a: 61 50 subi r22, 0x01 ; 1 - 473c: 70 40 sbci r23, 0x00 ; 0 - 473e: 01 10 cpse r0, r1 - 4740: d8 f7 brcc .-10 ; 0x4738 - 4742: 80 95 com r24 - 4744: 90 95 com r25 - 4746: 8e 0f add r24, r30 - 4748: 9f 1f adc r25, r31 - 474a: 08 95 ret - -0000474c : + 4732: fc 01 movw r30, r24 + 4734: 05 90 lpm r0, Z+ + 4736: 61 50 subi r22, 0x01 ; 1 + 4738: 70 40 sbci r23, 0x00 ; 0 + 473a: 01 10 cpse r0, r1 + 473c: d8 f7 brcc .-10 ; 0x4734 + 473e: 80 95 com r24 + 4740: 90 95 com r25 + 4742: 8e 0f add r24, r30 + 4744: 9f 1f adc r25, r31 + 4746: 08 95 ret + +00004748 : strnlen(): - 474c: fc 01 movw r30, r24 - 474e: 61 50 subi r22, 0x01 ; 1 - 4750: 70 40 sbci r23, 0x00 ; 0 - 4752: 01 90 ld r0, Z+ - 4754: 01 10 cpse r0, r1 - 4756: d8 f7 brcc .-10 ; 0x474e - 4758: 80 95 com r24 - 475a: 90 95 com r25 - 475c: 8e 0f add r24, r30 - 475e: 9f 1f adc r25, r31 - 4760: 08 95 ret - -00004762 : + 4748: fc 01 movw r30, r24 + 474a: 61 50 subi r22, 0x01 ; 1 + 474c: 70 40 sbci r23, 0x00 ; 0 + 474e: 01 90 ld r0, Z+ + 4750: 01 10 cpse r0, r1 + 4752: d8 f7 brcc .-10 ; 0x474a + 4754: 80 95 com r24 + 4756: 90 95 com r25 + 4758: 8e 0f add r24, r30 + 475a: 9f 1f adc r25, r31 + 475c: 08 95 ret + +0000475e : fputc(): - 4762: 0f 93 push r16 - 4764: 1f 93 push r17 - 4766: cf 93 push r28 - 4768: df 93 push r29 - 476a: 18 2f mov r17, r24 - 476c: 09 2f mov r16, r25 - 476e: eb 01 movw r28, r22 - 4770: 8b 81 ldd r24, Y+3 ; 0x03 - 4772: 81 fd sbrc r24, 1 - 4774: 09 c0 rjmp .+18 ; 0x4788 - 4776: 1f ef ldi r17, 0xFF ; 255 - 4778: 0f ef ldi r16, 0xFF ; 255 - 477a: 81 2f mov r24, r17 - 477c: 90 2f mov r25, r16 - 477e: df 91 pop r29 - 4780: cf 91 pop r28 - 4782: 1f 91 pop r17 - 4784: 0f 91 pop r16 - 4786: 08 95 ret - 4788: 82 ff sbrs r24, 2 - 478a: 14 c0 rjmp .+40 ; 0x47b4 - 478c: 2e 81 ldd r18, Y+6 ; 0x06 - 478e: 3f 81 ldd r19, Y+7 ; 0x07 - 4790: 8c 81 ldd r24, Y+4 ; 0x04 - 4792: 9d 81 ldd r25, Y+5 ; 0x05 - 4794: 28 17 cp r18, r24 - 4796: 39 07 cpc r19, r25 - 4798: 3c f4 brge .+14 ; 0x47a8 - 479a: e8 81 ld r30, Y - 479c: f9 81 ldd r31, Y+1 ; 0x01 - 479e: cf 01 movw r24, r30 - 47a0: 01 96 adiw r24, 0x01 ; 1 - 47a2: 88 83 st Y, r24 - 47a4: 99 83 std Y+1, r25 ; 0x01 - 47a6: 10 83 st Z, r17 - 47a8: 8e 81 ldd r24, Y+6 ; 0x06 - 47aa: 9f 81 ldd r25, Y+7 ; 0x07 - 47ac: 01 96 adiw r24, 0x01 ; 1 - 47ae: 8e 83 std Y+6, r24 ; 0x06 - 47b0: 9f 83 std Y+7, r25 ; 0x07 - 47b2: e3 cf rjmp .-58 ; 0x477a - 47b4: e8 85 ldd r30, Y+8 ; 0x08 - 47b6: f9 85 ldd r31, Y+9 ; 0x09 - 47b8: 81 2f mov r24, r17 - 47ba: 09 95 icall - 47bc: 89 2b or r24, r25 - 47be: a1 f3 breq .-24 ; 0x47a8 - 47c0: da cf rjmp .-76 ; 0x4776 - -000047c2 <__ultoa_invert>: + 475e: 0f 93 push r16 + 4760: 1f 93 push r17 + 4762: cf 93 push r28 + 4764: df 93 push r29 + 4766: 18 2f mov r17, r24 + 4768: 09 2f mov r16, r25 + 476a: eb 01 movw r28, r22 + 476c: 8b 81 ldd r24, Y+3 ; 0x03 + 476e: 81 fd sbrc r24, 1 + 4770: 09 c0 rjmp .+18 ; 0x4784 + 4772: 1f ef ldi r17, 0xFF ; 255 + 4774: 0f ef ldi r16, 0xFF ; 255 + 4776: 81 2f mov r24, r17 + 4778: 90 2f mov r25, r16 + 477a: df 91 pop r29 + 477c: cf 91 pop r28 + 477e: 1f 91 pop r17 + 4780: 0f 91 pop r16 + 4782: 08 95 ret + 4784: 82 ff sbrs r24, 2 + 4786: 14 c0 rjmp .+40 ; 0x47b0 + 4788: 2e 81 ldd r18, Y+6 ; 0x06 + 478a: 3f 81 ldd r19, Y+7 ; 0x07 + 478c: 8c 81 ldd r24, Y+4 ; 0x04 + 478e: 9d 81 ldd r25, Y+5 ; 0x05 + 4790: 28 17 cp r18, r24 + 4792: 39 07 cpc r19, r25 + 4794: 3c f4 brge .+14 ; 0x47a4 + 4796: e8 81 ld r30, Y + 4798: f9 81 ldd r31, Y+1 ; 0x01 + 479a: cf 01 movw r24, r30 + 479c: 01 96 adiw r24, 0x01 ; 1 + 479e: 88 83 st Y, r24 + 47a0: 99 83 std Y+1, r25 ; 0x01 + 47a2: 10 83 st Z, r17 + 47a4: 8e 81 ldd r24, Y+6 ; 0x06 + 47a6: 9f 81 ldd r25, Y+7 ; 0x07 + 47a8: 01 96 adiw r24, 0x01 ; 1 + 47aa: 8e 83 std Y+6, r24 ; 0x06 + 47ac: 9f 83 std Y+7, r25 ; 0x07 + 47ae: e3 cf rjmp .-58 ; 0x4776 + 47b0: e8 85 ldd r30, Y+8 ; 0x08 + 47b2: f9 85 ldd r31, Y+9 ; 0x09 + 47b4: 81 2f mov r24, r17 + 47b6: 09 95 icall + 47b8: 89 2b or r24, r25 + 47ba: a1 f3 breq .-24 ; 0x47a4 + 47bc: da cf rjmp .-76 ; 0x4772 + +000047be <__ultoa_invert>: __ultoa_invert(): - 47c2: fa 01 movw r30, r20 - 47c4: aa 27 eor r26, r26 - 47c6: 28 30 cpi r18, 0x08 ; 8 - 47c8: 51 f1 breq .+84 ; 0x481e <__ultoa_invert+0x5c> - 47ca: 20 31 cpi r18, 0x10 ; 16 - 47cc: 81 f1 breq .+96 ; 0x482e <__ultoa_invert+0x6c> - 47ce: e8 94 clt - 47d0: 6f 93 push r22 - 47d2: 6e 7f andi r22, 0xFE ; 254 - 47d4: 6e 5f subi r22, 0xFE ; 254 - 47d6: 7f 4f sbci r23, 0xFF ; 255 - 47d8: 8f 4f sbci r24, 0xFF ; 255 - 47da: 9f 4f sbci r25, 0xFF ; 255 - 47dc: af 4f sbci r26, 0xFF ; 255 - 47de: b1 e0 ldi r27, 0x01 ; 1 - 47e0: 3e d0 rcall .+124 ; 0x485e <__ultoa_invert+0x9c> - 47e2: b4 e0 ldi r27, 0x04 ; 4 - 47e4: 3c d0 rcall .+120 ; 0x485e <__ultoa_invert+0x9c> - 47e6: 67 0f add r22, r23 - 47e8: 78 1f adc r23, r24 - 47ea: 89 1f adc r24, r25 - 47ec: 9a 1f adc r25, r26 - 47ee: a1 1d adc r26, r1 - 47f0: 68 0f add r22, r24 - 47f2: 79 1f adc r23, r25 - 47f4: 8a 1f adc r24, r26 - 47f6: 91 1d adc r25, r1 - 47f8: a1 1d adc r26, r1 - 47fa: 6a 0f add r22, r26 - 47fc: 71 1d adc r23, r1 - 47fe: 81 1d adc r24, r1 - 4800: 91 1d adc r25, r1 - 4802: a1 1d adc r26, r1 - 4804: 20 d0 rcall .+64 ; 0x4846 <__ultoa_invert+0x84> - 4806: 09 f4 brne .+2 ; 0x480a <__ultoa_invert+0x48> - 4808: 68 94 set - 480a: 3f 91 pop r19 - 480c: 2a e0 ldi r18, 0x0A ; 10 - 480e: 26 9f mul r18, r22 - 4810: 11 24 eor r1, r1 - 4812: 30 19 sub r19, r0 - 4814: 30 5d subi r19, 0xD0 ; 208 - 4816: 31 93 st Z+, r19 - 4818: de f6 brtc .-74 ; 0x47d0 <__ultoa_invert+0xe> - 481a: cf 01 movw r24, r30 - 481c: 08 95 ret - 481e: 46 2f mov r20, r22 - 4820: 47 70 andi r20, 0x07 ; 7 - 4822: 40 5d subi r20, 0xD0 ; 208 - 4824: 41 93 st Z+, r20 - 4826: b3 e0 ldi r27, 0x03 ; 3 - 4828: 0f d0 rcall .+30 ; 0x4848 <__ultoa_invert+0x86> - 482a: c9 f7 brne .-14 ; 0x481e <__ultoa_invert+0x5c> - 482c: f6 cf rjmp .-20 ; 0x481a <__ultoa_invert+0x58> - 482e: 46 2f mov r20, r22 - 4830: 4f 70 andi r20, 0x0F ; 15 - 4832: 40 5d subi r20, 0xD0 ; 208 - 4834: 4a 33 cpi r20, 0x3A ; 58 - 4836: 18 f0 brcs .+6 ; 0x483e <__ultoa_invert+0x7c> - 4838: 49 5d subi r20, 0xD9 ; 217 - 483a: 31 fd sbrc r19, 1 - 483c: 40 52 subi r20, 0x20 ; 32 - 483e: 41 93 st Z+, r20 - 4840: 02 d0 rcall .+4 ; 0x4846 <__ultoa_invert+0x84> - 4842: a9 f7 brne .-22 ; 0x482e <__ultoa_invert+0x6c> - 4844: ea cf rjmp .-44 ; 0x481a <__ultoa_invert+0x58> - 4846: b4 e0 ldi r27, 0x04 ; 4 - 4848: a6 95 lsr r26 - 484a: 97 95 ror r25 - 484c: 87 95 ror r24 - 484e: 77 95 ror r23 - 4850: 67 95 ror r22 - 4852: ba 95 dec r27 - 4854: c9 f7 brne .-14 ; 0x4848 <__ultoa_invert+0x86> - 4856: 00 97 sbiw r24, 0x00 ; 0 - 4858: 61 05 cpc r22, r1 - 485a: 71 05 cpc r23, r1 - 485c: 08 95 ret - 485e: 9b 01 movw r18, r22 - 4860: ac 01 movw r20, r24 - 4862: 0a 2e mov r0, r26 - 4864: 06 94 lsr r0 - 4866: 57 95 ror r21 - 4868: 47 95 ror r20 - 486a: 37 95 ror r19 - 486c: 27 95 ror r18 - 486e: ba 95 dec r27 - 4870: c9 f7 brne .-14 ; 0x4864 <__ultoa_invert+0xa2> - 4872: 62 0f add r22, r18 - 4874: 73 1f adc r23, r19 - 4876: 84 1f adc r24, r20 - 4878: 95 1f adc r25, r21 - 487a: a0 1d adc r26, r0 - 487c: 08 95 ret - -0000487e <__prologue_saves__>: + 47be: fa 01 movw r30, r20 + 47c0: aa 27 eor r26, r26 + 47c2: 28 30 cpi r18, 0x08 ; 8 + 47c4: 51 f1 breq .+84 ; 0x481a <__ultoa_invert+0x5c> + 47c6: 20 31 cpi r18, 0x10 ; 16 + 47c8: 81 f1 breq .+96 ; 0x482a <__ultoa_invert+0x6c> + 47ca: e8 94 clt + 47cc: 6f 93 push r22 + 47ce: 6e 7f andi r22, 0xFE ; 254 + 47d0: 6e 5f subi r22, 0xFE ; 254 + 47d2: 7f 4f sbci r23, 0xFF ; 255 + 47d4: 8f 4f sbci r24, 0xFF ; 255 + 47d6: 9f 4f sbci r25, 0xFF ; 255 + 47d8: af 4f sbci r26, 0xFF ; 255 + 47da: b1 e0 ldi r27, 0x01 ; 1 + 47dc: 3e d0 rcall .+124 ; 0x485a <__ultoa_invert+0x9c> + 47de: b4 e0 ldi r27, 0x04 ; 4 + 47e0: 3c d0 rcall .+120 ; 0x485a <__ultoa_invert+0x9c> + 47e2: 67 0f add r22, r23 + 47e4: 78 1f adc r23, r24 + 47e6: 89 1f adc r24, r25 + 47e8: 9a 1f adc r25, r26 + 47ea: a1 1d adc r26, r1 + 47ec: 68 0f add r22, r24 + 47ee: 79 1f adc r23, r25 + 47f0: 8a 1f adc r24, r26 + 47f2: 91 1d adc r25, r1 + 47f4: a1 1d adc r26, r1 + 47f6: 6a 0f add r22, r26 + 47f8: 71 1d adc r23, r1 + 47fa: 81 1d adc r24, r1 + 47fc: 91 1d adc r25, r1 + 47fe: a1 1d adc r26, r1 + 4800: 20 d0 rcall .+64 ; 0x4842 <__ultoa_invert+0x84> + 4802: 09 f4 brne .+2 ; 0x4806 <__ultoa_invert+0x48> + 4804: 68 94 set + 4806: 3f 91 pop r19 + 4808: 2a e0 ldi r18, 0x0A ; 10 + 480a: 26 9f mul r18, r22 + 480c: 11 24 eor r1, r1 + 480e: 30 19 sub r19, r0 + 4810: 30 5d subi r19, 0xD0 ; 208 + 4812: 31 93 st Z+, r19 + 4814: de f6 brtc .-74 ; 0x47cc <__ultoa_invert+0xe> + 4816: cf 01 movw r24, r30 + 4818: 08 95 ret + 481a: 46 2f mov r20, r22 + 481c: 47 70 andi r20, 0x07 ; 7 + 481e: 40 5d subi r20, 0xD0 ; 208 + 4820: 41 93 st Z+, r20 + 4822: b3 e0 ldi r27, 0x03 ; 3 + 4824: 0f d0 rcall .+30 ; 0x4844 <__ultoa_invert+0x86> + 4826: c9 f7 brne .-14 ; 0x481a <__ultoa_invert+0x5c> + 4828: f6 cf rjmp .-20 ; 0x4816 <__ultoa_invert+0x58> + 482a: 46 2f mov r20, r22 + 482c: 4f 70 andi r20, 0x0F ; 15 + 482e: 40 5d subi r20, 0xD0 ; 208 + 4830: 4a 33 cpi r20, 0x3A ; 58 + 4832: 18 f0 brcs .+6 ; 0x483a <__ultoa_invert+0x7c> + 4834: 49 5d subi r20, 0xD9 ; 217 + 4836: 31 fd sbrc r19, 1 + 4838: 40 52 subi r20, 0x20 ; 32 + 483a: 41 93 st Z+, r20 + 483c: 02 d0 rcall .+4 ; 0x4842 <__ultoa_invert+0x84> + 483e: a9 f7 brne .-22 ; 0x482a <__ultoa_invert+0x6c> + 4840: ea cf rjmp .-44 ; 0x4816 <__ultoa_invert+0x58> + 4842: b4 e0 ldi r27, 0x04 ; 4 + 4844: a6 95 lsr r26 + 4846: 97 95 ror r25 + 4848: 87 95 ror r24 + 484a: 77 95 ror r23 + 484c: 67 95 ror r22 + 484e: ba 95 dec r27 + 4850: c9 f7 brne .-14 ; 0x4844 <__ultoa_invert+0x86> + 4852: 00 97 sbiw r24, 0x00 ; 0 + 4854: 61 05 cpc r22, r1 + 4856: 71 05 cpc r23, r1 + 4858: 08 95 ret + 485a: 9b 01 movw r18, r22 + 485c: ac 01 movw r20, r24 + 485e: 0a 2e mov r0, r26 + 4860: 06 94 lsr r0 + 4862: 57 95 ror r21 + 4864: 47 95 ror r20 + 4866: 37 95 ror r19 + 4868: 27 95 ror r18 + 486a: ba 95 dec r27 + 486c: c9 f7 brne .-14 ; 0x4860 <__ultoa_invert+0xa2> + 486e: 62 0f add r22, r18 + 4870: 73 1f adc r23, r19 + 4872: 84 1f adc r24, r20 + 4874: 95 1f adc r25, r21 + 4876: a0 1d adc r26, r0 + 4878: 08 95 ret + +0000487a <__prologue_saves__>: __prologue_saves__(): - 487e: 2f 92 push r2 - 4880: 3f 92 push r3 - 4882: 4f 92 push r4 - 4884: 5f 92 push r5 - 4886: 6f 92 push r6 - 4888: 7f 92 push r7 - 488a: 8f 92 push r8 - 488c: 9f 92 push r9 - 488e: af 92 push r10 - 4890: bf 92 push r11 - 4892: cf 92 push r12 - 4894: df 92 push r13 - 4896: ef 92 push r14 - 4898: ff 92 push r15 - 489a: 0f 93 push r16 - 489c: 1f 93 push r17 - 489e: cf 93 push r28 - 48a0: df 93 push r29 - 48a2: cd b7 in r28, 0x3d ; 61 - 48a4: de b7 in r29, 0x3e ; 62 - 48a6: ca 1b sub r28, r26 - 48a8: db 0b sbc r29, r27 - 48aa: cd bf out 0x3d, r28 ; 61 - 48ac: de bf out 0x3e, r29 ; 62 - 48ae: 09 94 ijmp - -000048b0 <__epilogue_restores__>: + 487a: 2f 92 push r2 + 487c: 3f 92 push r3 + 487e: 4f 92 push r4 + 4880: 5f 92 push r5 + 4882: 6f 92 push r6 + 4884: 7f 92 push r7 + 4886: 8f 92 push r8 + 4888: 9f 92 push r9 + 488a: af 92 push r10 + 488c: bf 92 push r11 + 488e: cf 92 push r12 + 4890: df 92 push r13 + 4892: ef 92 push r14 + 4894: ff 92 push r15 + 4896: 0f 93 push r16 + 4898: 1f 93 push r17 + 489a: cf 93 push r28 + 489c: df 93 push r29 + 489e: cd b7 in r28, 0x3d ; 61 + 48a0: de b7 in r29, 0x3e ; 62 + 48a2: ca 1b sub r28, r26 + 48a4: db 0b sbc r29, r27 + 48a6: cd bf out 0x3d, r28 ; 61 + 48a8: de bf out 0x3e, r29 ; 62 + 48aa: 09 94 ijmp + +000048ac <__epilogue_restores__>: __epilogue_restores__(): - 48b0: 2a 88 ldd r2, Y+18 ; 0x12 - 48b2: 39 88 ldd r3, Y+17 ; 0x11 - 48b4: 48 88 ldd r4, Y+16 ; 0x10 - 48b6: 5f 84 ldd r5, Y+15 ; 0x0f - 48b8: 6e 84 ldd r6, Y+14 ; 0x0e - 48ba: 7d 84 ldd r7, Y+13 ; 0x0d - 48bc: 8c 84 ldd r8, Y+12 ; 0x0c - 48be: 9b 84 ldd r9, Y+11 ; 0x0b - 48c0: aa 84 ldd r10, Y+10 ; 0x0a - 48c2: b9 84 ldd r11, Y+9 ; 0x09 - 48c4: c8 84 ldd r12, Y+8 ; 0x08 - 48c6: df 80 ldd r13, Y+7 ; 0x07 - 48c8: ee 80 ldd r14, Y+6 ; 0x06 - 48ca: fd 80 ldd r15, Y+5 ; 0x05 - 48cc: 0c 81 ldd r16, Y+4 ; 0x04 - 48ce: 1b 81 ldd r17, Y+3 ; 0x03 - 48d0: aa 81 ldd r26, Y+2 ; 0x02 - 48d2: b9 81 ldd r27, Y+1 ; 0x01 - 48d4: ce 0f add r28, r30 - 48d6: d1 1d adc r29, r1 - 48d8: cd bf out 0x3d, r28 ; 61 - 48da: de bf out 0x3e, r29 ; 62 - 48dc: ed 01 movw r28, r26 - 48de: 08 95 ret - -000048e0 <__udivmodhi4>: + 48ac: 2a 88 ldd r2, Y+18 ; 0x12 + 48ae: 39 88 ldd r3, Y+17 ; 0x11 + 48b0: 48 88 ldd r4, Y+16 ; 0x10 + 48b2: 5f 84 ldd r5, Y+15 ; 0x0f + 48b4: 6e 84 ldd r6, Y+14 ; 0x0e + 48b6: 7d 84 ldd r7, Y+13 ; 0x0d + 48b8: 8c 84 ldd r8, Y+12 ; 0x0c + 48ba: 9b 84 ldd r9, Y+11 ; 0x0b + 48bc: aa 84 ldd r10, Y+10 ; 0x0a + 48be: b9 84 ldd r11, Y+9 ; 0x09 + 48c0: c8 84 ldd r12, Y+8 ; 0x08 + 48c2: df 80 ldd r13, Y+7 ; 0x07 + 48c4: ee 80 ldd r14, Y+6 ; 0x06 + 48c6: fd 80 ldd r15, Y+5 ; 0x05 + 48c8: 0c 81 ldd r16, Y+4 ; 0x04 + 48ca: 1b 81 ldd r17, Y+3 ; 0x03 + 48cc: aa 81 ldd r26, Y+2 ; 0x02 + 48ce: b9 81 ldd r27, Y+1 ; 0x01 + 48d0: ce 0f add r28, r30 + 48d2: d1 1d adc r29, r1 + 48d4: cd bf out 0x3d, r28 ; 61 + 48d6: de bf out 0x3e, r29 ; 62 + 48d8: ed 01 movw r28, r26 + 48da: 08 95 ret + +000048dc <__udivmodhi4>: __udivmodhi4(): - 48e0: aa 1b sub r26, r26 - 48e2: bb 1b sub r27, r27 - 48e4: 51 e1 ldi r21, 0x11 ; 17 - 48e6: 07 c0 rjmp .+14 ; 0x48f6 <__udivmodhi4_ep> - -000048e8 <__udivmodhi4_loop>: - 48e8: aa 1f adc r26, r26 - 48ea: bb 1f adc r27, r27 - 48ec: a6 17 cp r26, r22 - 48ee: b7 07 cpc r27, r23 - 48f0: 10 f0 brcs .+4 ; 0x48f6 <__udivmodhi4_ep> - 48f2: a6 1b sub r26, r22 - 48f4: b7 0b sbc r27, r23 - -000048f6 <__udivmodhi4_ep>: - 48f6: 88 1f adc r24, r24 - 48f8: 99 1f adc r25, r25 - 48fa: 5a 95 dec r21 - 48fc: a9 f7 brne .-22 ; 0x48e8 <__udivmodhi4_loop> - 48fe: 80 95 com r24 - 4900: 90 95 com r25 - 4902: bc 01 movw r22, r24 - 4904: cd 01 movw r24, r26 - 4906: 08 95 ret - -00004908 <__udivmodsi4>: + 48dc: aa 1b sub r26, r26 + 48de: bb 1b sub r27, r27 + 48e0: 51 e1 ldi r21, 0x11 ; 17 + 48e2: 07 c0 rjmp .+14 ; 0x48f2 <__udivmodhi4_ep> + +000048e4 <__udivmodhi4_loop>: + 48e4: aa 1f adc r26, r26 + 48e6: bb 1f adc r27, r27 + 48e8: a6 17 cp r26, r22 + 48ea: b7 07 cpc r27, r23 + 48ec: 10 f0 brcs .+4 ; 0x48f2 <__udivmodhi4_ep> + 48ee: a6 1b sub r26, r22 + 48f0: b7 0b sbc r27, r23 + +000048f2 <__udivmodhi4_ep>: + 48f2: 88 1f adc r24, r24 + 48f4: 99 1f adc r25, r25 + 48f6: 5a 95 dec r21 + 48f8: a9 f7 brne .-22 ; 0x48e4 <__udivmodhi4_loop> + 48fa: 80 95 com r24 + 48fc: 90 95 com r25 + 48fe: bc 01 movw r22, r24 + 4900: cd 01 movw r24, r26 + 4902: 08 95 ret + +00004904 <__udivmodsi4>: __udivmodsi4(): - 4908: a1 e2 ldi r26, 0x21 ; 33 - 490a: 1a 2e mov r1, r26 - 490c: aa 1b sub r26, r26 - 490e: bb 1b sub r27, r27 - 4910: fd 01 movw r30, r26 - 4912: 0d c0 rjmp .+26 ; 0x492e <__udivmodsi4_ep> - -00004914 <__udivmodsi4_loop>: - 4914: aa 1f adc r26, r26 - 4916: bb 1f adc r27, r27 - 4918: ee 1f adc r30, r30 - 491a: ff 1f adc r31, r31 - 491c: a2 17 cp r26, r18 - 491e: b3 07 cpc r27, r19 - 4920: e4 07 cpc r30, r20 - 4922: f5 07 cpc r31, r21 - 4924: 20 f0 brcs .+8 ; 0x492e <__udivmodsi4_ep> - 4926: a2 1b sub r26, r18 - 4928: b3 0b sbc r27, r19 - 492a: e4 0b sbc r30, r20 - 492c: f5 0b sbc r31, r21 - -0000492e <__udivmodsi4_ep>: - 492e: 66 1f adc r22, r22 - 4930: 77 1f adc r23, r23 - 4932: 88 1f adc r24, r24 - 4934: 99 1f adc r25, r25 - 4936: 1a 94 dec r1 - 4938: 69 f7 brne .-38 ; 0x4914 <__udivmodsi4_loop> - 493a: 60 95 com r22 - 493c: 70 95 com r23 - 493e: 80 95 com r24 - 4940: 90 95 com r25 - 4942: 9b 01 movw r18, r22 - 4944: ac 01 movw r20, r24 - 4946: bd 01 movw r22, r26 - 4948: cf 01 movw r24, r30 - 494a: 08 95 ret - -0000494c <__divmodsi4>: + 4904: a1 e2 ldi r26, 0x21 ; 33 + 4906: 1a 2e mov r1, r26 + 4908: aa 1b sub r26, r26 + 490a: bb 1b sub r27, r27 + 490c: fd 01 movw r30, r26 + 490e: 0d c0 rjmp .+26 ; 0x492a <__udivmodsi4_ep> + +00004910 <__udivmodsi4_loop>: + 4910: aa 1f adc r26, r26 + 4912: bb 1f adc r27, r27 + 4914: ee 1f adc r30, r30 + 4916: ff 1f adc r31, r31 + 4918: a2 17 cp r26, r18 + 491a: b3 07 cpc r27, r19 + 491c: e4 07 cpc r30, r20 + 491e: f5 07 cpc r31, r21 + 4920: 20 f0 brcs .+8 ; 0x492a <__udivmodsi4_ep> + 4922: a2 1b sub r26, r18 + 4924: b3 0b sbc r27, r19 + 4926: e4 0b sbc r30, r20 + 4928: f5 0b sbc r31, r21 + +0000492a <__udivmodsi4_ep>: + 492a: 66 1f adc r22, r22 + 492c: 77 1f adc r23, r23 + 492e: 88 1f adc r24, r24 + 4930: 99 1f adc r25, r25 + 4932: 1a 94 dec r1 + 4934: 69 f7 brne .-38 ; 0x4910 <__udivmodsi4_loop> + 4936: 60 95 com r22 + 4938: 70 95 com r23 + 493a: 80 95 com r24 + 493c: 90 95 com r25 + 493e: 9b 01 movw r18, r22 + 4940: ac 01 movw r20, r24 + 4942: bd 01 movw r22, r26 + 4944: cf 01 movw r24, r30 + 4946: 08 95 ret + +00004948 <__divmodsi4>: __divmodsi4(): - 494c: 05 2e mov r0, r21 - 494e: 97 fb bst r25, 7 - 4950: 16 f4 brtc .+4 ; 0x4956 <__divmodsi4+0xa> - 4952: 00 94 com r0 - 4954: 0f d0 rcall .+30 ; 0x4974 <__negsi2> - 4956: 57 fd sbrc r21, 7 - 4958: 05 d0 rcall .+10 ; 0x4964 <__divmodsi4_neg2> - 495a: d6 df rcall .-84 ; 0x4908 <__udivmodsi4> - 495c: 07 fc sbrc r0, 7 - 495e: 02 d0 rcall .+4 ; 0x4964 <__divmodsi4_neg2> - 4960: 46 f4 brtc .+16 ; 0x4972 <__divmodsi4_exit> - 4962: 08 c0 rjmp .+16 ; 0x4974 <__negsi2> - -00004964 <__divmodsi4_neg2>: - 4964: 50 95 com r21 - 4966: 40 95 com r20 - 4968: 30 95 com r19 - 496a: 21 95 neg r18 - 496c: 3f 4f sbci r19, 0xFF ; 255 - 496e: 4f 4f sbci r20, 0xFF ; 255 - 4970: 5f 4f sbci r21, 0xFF ; 255 - -00004972 <__divmodsi4_exit>: - 4972: 08 95 ret - -00004974 <__negsi2>: + 4948: 05 2e mov r0, r21 + 494a: 97 fb bst r25, 7 + 494c: 16 f4 brtc .+4 ; 0x4952 <__divmodsi4+0xa> + 494e: 00 94 com r0 + 4950: 0f d0 rcall .+30 ; 0x4970 <__negsi2> + 4952: 57 fd sbrc r21, 7 + 4954: 05 d0 rcall .+10 ; 0x4960 <__divmodsi4_neg2> + 4956: d6 df rcall .-84 ; 0x4904 <__udivmodsi4> + 4958: 07 fc sbrc r0, 7 + 495a: 02 d0 rcall .+4 ; 0x4960 <__divmodsi4_neg2> + 495c: 46 f4 brtc .+16 ; 0x496e <__divmodsi4_exit> + 495e: 08 c0 rjmp .+16 ; 0x4970 <__negsi2> + +00004960 <__divmodsi4_neg2>: + 4960: 50 95 com r21 + 4962: 40 95 com r20 + 4964: 30 95 com r19 + 4966: 21 95 neg r18 + 4968: 3f 4f sbci r19, 0xFF ; 255 + 496a: 4f 4f sbci r20, 0xFF ; 255 + 496c: 5f 4f sbci r21, 0xFF ; 255 + +0000496e <__divmodsi4_exit>: + 496e: 08 95 ret + +00004970 <__negsi2>: __negsi2(): - 4974: 90 95 com r25 - 4976: 80 95 com r24 - 4978: 70 95 com r23 - 497a: 61 95 neg r22 - 497c: 7f 4f sbci r23, 0xFF ; 255 - 497e: 8f 4f sbci r24, 0xFF ; 255 - 4980: 9f 4f sbci r25, 0xFF ; 255 - 4982: 08 95 ret - -00004984 <__bswapsi2>: + 4970: 90 95 com r25 + 4972: 80 95 com r24 + 4974: 70 95 com r23 + 4976: 61 95 neg r22 + 4978: 7f 4f sbci r23, 0xFF ; 255 + 497a: 8f 4f sbci r24, 0xFF ; 255 + 497c: 9f 4f sbci r25, 0xFF ; 255 + 497e: 08 95 ret + +00004980 <__bswapsi2>: __bswapsi2(): + 4980: 69 27 eor r22, r25 + 4982: 96 27 eor r25, r22 4984: 69 27 eor r22, r25 - 4986: 96 27 eor r25, r22 - 4988: 69 27 eor r22, r25 + 4986: 78 27 eor r23, r24 + 4988: 87 27 eor r24, r23 498a: 78 27 eor r23, r24 - 498c: 87 27 eor r24, r23 - 498e: 78 27 eor r23, r24 - 4990: 08 95 ret + 498c: 08 95 ret -00004992 <__tablejump2__>: +0000498e <__tablejump2__>: __tablejump2__(): - 4992: ee 0f add r30, r30 - 4994: ff 1f adc r31, r31 - 4996: 05 90 lpm r0, Z+ - 4998: f4 91 lpm r31, Z - 499a: e0 2d mov r30, r0 - 499c: 09 94 ijmp - -0000499e : + 498e: ee 0f add r30, r30 + 4990: ff 1f adc r31, r31 + 4992: 05 90 lpm r0, Z+ + 4994: f4 91 lpm r31, Z + 4996: e0 2d mov r30, r0 + 4998: 09 94 ijmp + +0000499a : memcmp(): - 499e: fb 01 movw r30, r22 - 49a0: dc 01 movw r26, r24 - 49a2: 04 c0 rjmp .+8 ; 0x49ac - 49a4: 8d 91 ld r24, X+ - 49a6: 01 90 ld r0, Z+ - 49a8: 80 19 sub r24, r0 - 49aa: 21 f4 brne .+8 ; 0x49b4 - 49ac: 41 50 subi r20, 0x01 ; 1 - 49ae: 50 40 sbci r21, 0x00 ; 0 - 49b0: c8 f7 brcc .-14 ; 0x49a4 - 49b2: 88 1b sub r24, r24 - 49b4: 99 0b sbc r25, r25 - 49b6: 08 95 ret - -000049b8 : + 499a: fb 01 movw r30, r22 + 499c: dc 01 movw r26, r24 + 499e: 04 c0 rjmp .+8 ; 0x49a8 + 49a0: 8d 91 ld r24, X+ + 49a2: 01 90 ld r0, Z+ + 49a4: 80 19 sub r24, r0 + 49a6: 21 f4 brne .+8 ; 0x49b0 + 49a8: 41 50 subi r20, 0x01 ; 1 + 49aa: 50 40 sbci r21, 0x00 ; 0 + 49ac: c8 f7 brcc .-14 ; 0x49a0 + 49ae: 88 1b sub r24, r24 + 49b0: 99 0b sbc r25, r25 + 49b2: 08 95 ret + +000049b4 : memcpy(): - 49b8: fb 01 movw r30, r22 - 49ba: dc 01 movw r26, r24 - 49bc: 02 c0 rjmp .+4 ; 0x49c2 - 49be: 01 90 ld r0, Z+ - 49c0: 0d 92 st X+, r0 - 49c2: 41 50 subi r20, 0x01 ; 1 - 49c4: 50 40 sbci r21, 0x00 ; 0 - 49c6: d8 f7 brcc .-10 ; 0x49be - 49c8: 08 95 ret - -000049ca : + 49b4: fb 01 movw r30, r22 + 49b6: dc 01 movw r26, r24 + 49b8: 02 c0 rjmp .+4 ; 0x49be + 49ba: 01 90 ld r0, Z+ + 49bc: 0d 92 st X+, r0 + 49be: 41 50 subi r20, 0x01 ; 1 + 49c0: 50 40 sbci r21, 0x00 ; 0 + 49c2: d8 f7 brcc .-10 ; 0x49ba + 49c4: 08 95 ret + +000049c6 : memset(): - 49ca: dc 01 movw r26, r24 - 49cc: 01 c0 rjmp .+2 ; 0x49d0 - 49ce: 6d 93 st X+, r22 - 49d0: 41 50 subi r20, 0x01 ; 1 - 49d2: 50 40 sbci r21, 0x00 ; 0 - 49d4: e0 f7 brcc .-8 ; 0x49ce - 49d6: 08 95 ret - -000049d8 <_exit>: + 49c6: dc 01 movw r26, r24 + 49c8: 01 c0 rjmp .+2 ; 0x49cc + 49ca: 6d 93 st X+, r22 + 49cc: 41 50 subi r20, 0x01 ; 1 + 49ce: 50 40 sbci r21, 0x00 ; 0 + 49d0: e0 f7 brcc .-8 ; 0x49ca + 49d2: 08 95 ret + +000049d4 <_exit>: exit(): - 49d8: f8 94 cli + 49d4: f8 94 cli -000049da <__stop_program>: +000049d6 <__stop_program>: __stop_program(): - 49da: ff cf rjmp .-2 ; 0x49da <__stop_program> + 49d6: ff cf rjmp .-2 ; 0x49d6 <__stop_program> Disassembly of section .nvmem: -00004a60 <.nvmem>: +00004a5c <.nvmem>: ... Disassembly of section .eeprom: diff --git a/src/configuration.h b/src/configuration.h index 6db0d31..cf1be90 100644 --- a/src/configuration.h +++ b/src/configuration.h @@ -227,7 +227,7 @@ * Columns: HW_VER, FW_MAJOR, FW_MINOR, FW_RELL, FW_RELH (all 1-byte decimal) */ -#define CONFIG_SYS_FWVER { 0, 1, 32, 43, 0 } +#define CONFIG_SYS_FWVER { 0, 1, 32, 44, 0 } /* * For CNANO, you can change the detection of SW0 to PIN_PF5. diff --git a/src/jtag.cpp b/src/jtag.cpp index 6dfcb50..71ea330 100644 --- a/src/jtag.cpp +++ b/src/jtag.cpp @@ -1,407 +1,407 @@ -/** - * @file jtag.cpp - * @author askn (K.Sato) multix.jp - * @brief UPDI4AVR-USB is a program writer for the AVR series, which are UPDI/TPI - * type devices that connect via USB 2.0 Full-Speed. It also has VCP-UART - * transfer function. It only works when installed on the AVR-DU series. - * Recognized by standard drivers for Windows/macos/Linux and AVRDUDE>=7.2. - * @version 1.32.40+ - * @date 2024-07-10 - * @copyright Copyright (c) 2024 askn37 at github.com - * @link Product Potal : https://askn37.github.io/ - * MIT License : https://askn37.github.io/LICENSE.html - */ - -#include -#include /* PROGMEM memcpy_P */ -#include /* memcpy */ -#include "api/btools.h" /* bswap16,32 */ -#include "peripheral.h" /* import Serial (Debug) */ -#include "configuration.h" -#include "prototype.h" - -/* - * NOTE: - * - * Handles JTAGICE3 payloads. - * - * Encapsulates higher level payloads in various formats using leading scope numbers. - * ATMEL based JTAG, AVRISP, STK600-XPRG, etc. - * - * EDBG payload is an ATMEL vendor extension to CSMIS-DAP. - * Splits JTAG3 payload into chunks to fit into USB-HID report packets. - * - * CSMIS-DAP is a common application foundation that leverages USB-HID directly. - * Encapsulates ARM based SWO/SWD technology and JTAG conventions. - * Only EDBG extensions and parts of the common API are actually used here. - */ - -namespace JTAG { - - /* PARM3_HW_VER, PARM3_FW_MAJOR, PARM3_FW_MINOR, PARM3_FW_REL[2] */ - const uint8_t PROGMEM jtag_version[] = CONFIG_SYS_FWVER; - const uint8_t PROGMEM jtag_physical[] = {0x90, 0x28, 0x00, 0x18, 0x38, 0x00, 0x00, 0x00}; - - /*** Only a subset of the CMSIS-DAP commands are implemented. ***/ - /* - * Command numbers 0x80 and above are vendor extensions, EDBG Payload uses 0x80 and x81. - * Additionally, 0x82 is reserved for device event notification. - */ - bool dap_command_check (void) { - bool _result = false; - uint8_t _cmd = EP_MEM.dap_data[0]; - uint8_t _sub = EP_MEM.dap_data[1]; - D2PRINTF("DAP=%02X SUB=%02X\r\n", _cmd, _sub); - USB::ep_dpi_pending(); - - /*** EDBG Payload ***/ - /* - * The payload is split into 60-byte chunks, a header is added, - * and the data is sent and received with a fixed length of 64 bytes, - * determined by the value specified in the HID Report. - * A maximum of 15 chunks is possible, - * resulting in a maximum payload length of 900 bytes. - */ - if (_cmd == 0x80) { /* DAP_EDBG_VENDOR_AVR_CMD */ - uint8_t _endf = _sub & 0x0F; - uint8_t _frag = _sub >> 4; - uint8_t _size = EP_MEM.dap_data[3]; - size_t _ofst = (_frag - 1) * 60; - if (_endf >= 10) { - /* Only a maximum of 540 bytes : 9 fragment records is accepted. */ - D1PRINTF("\r\n"); - EP_MEM.dap_data[1] = 0x00; /* EDBG_RSP_FAIL */ - } - else { - /* Detect the first chunk. */ - if (_frag == 1) _packet_chunks = 0; - ++_packet_chunks; - memcpy(&packet.rawData[_ofst], &EP_MEM.dap_data[4], _size); - EP_MEM.dap_data[1] = 0x01; /* EDBG_RSP_OK */ - D3PRINTHEX(&EP_MEM.dap_data, _size + 4); - if (_endf == _frag) { /* end of defragment */ - _packet_length = _ofst + _size; - D2PRINTF(" SQ=%03X:%03X<", packet.out.sequence, _packet_length); - D2PRINTHEX(&packet, _packet_length); - if (_packet_chunks == _endf) { - /* True if an EDBG Payload is received. */ - D2PRINTF("\r\n"); - _packet_endfrag = 0; - _result = true; - } - else { - /* A missing chunk is detected, so an error is returned. */ - D1PRINTF("\r\n"); - EP_MEM.dap_data[1] = 0x00; /* EDBG_RSP_FAIL */ - } - } - } - } - else if (_cmd == 0x81) { /* DAP_EDBG_VENDOR_AVR_RSP */ - EP_MEM.dap_data[2] = 0; /* Always zero */ - if (_packet_endfrag == 0) { - D1PRINTF("\r\n"); - EP_MEM.dap_data[1] = 0; - EP_MEM.dap_data[3] = 0; - } - else { - memcpy(&EP_MEM.dap_data[4], &packet.in.token + (_packet_fragment * 60), 60); - EP_MEM.dap_data[1] = ((++_packet_fragment) << 4) | _packet_endfrag; - EP_MEM.dap_data[3] = _packet_fragment == _packet_endfrag ? _packet_length : 60; - _packet_length -= 60; - D3PRINTF(" PI="); - D3PRINTHEX(&EP_MEM.dap_data, EP_MEM.dap_data[3] + 4); - } - } - - /*** DAP Standard ***/ - else if (_cmd == 0x00) { /* DAP_CMD_INFO */ - if (_sub == 0xFF /* DAP_INFO_PACKET_SIZE */ - || _sub == 0xFB /* UART Receive Buffer Size */ - || _sub == 0xFC) { /* UART Transmit Buffer Size */ - EP_MEM.dap_data[1] = 0x02; /* length=2 */ - EP_MEM.dap_data[2] = 0x40; /* MaxPacketSize = 64 */ - EP_MEM.dap_data[3] = 0x00; - D3PRINTF(" PI="); - D3PRINTHEX(&EP_MEM.dap_data, 4); - } - else if (_sub == 0xF1) { /* DAP_INFO_Capabilities */ - EP_MEM.dap_data[1] = 0x02; /* length=2 */ - EP_MEM.dap_data[2] = 0x80; /* 7:UART Communication Port */ - EP_MEM.dap_data[3] = 0x01; /* 1:USB COM Port */ - D3PRINTF(" PI="); - D3PRINTHEX(&EP_MEM.dap_data, 4); - } - } - else if (_cmd == 0x02) { /* DAP_CMD_CONNECT */ - /* EP_MEM.dap_data[1] == CONN_TYPE */ - /* Here, the response is returned without processing. */ - D3PRINTF(" PI="); - D3PRINTHEX(&EP_MEM.dap_data, 2); - } - else if (_cmd == 0x01 /* DAP_CMD_HOSTSTATUS */ - && _sub == 0x00) { /* DAP_LED_CONNECT */ - /* EP_MEM.dap_data[2] == LED_ON/OFF */ - /* Here, the response is returned without processing. */ - D3PRINTF(" PI="); - D3PRINTHEX(&EP_MEM.dap_data, 3); - } - else if (_cmd == 0x03) { /* DAP_CMD_DISCONNECT */ - /* Here, the response is returned without processing. */ - D3PRINTF(" PI="); - D3PRINTHEX(&EP_MEM.dap_data, 2); - } - else { - EP_MEM.dap_data[1] = 0x00; /* other 0 length result */ - } - USB::complete_dap_out(); - return _result; /* True if an EDBG Payload is received. */ - } - - /*** Prepare for EDBG payload request from device to host ***/ - void complete_jtag_transactions (size_t _length) { - _packet_length = _length + 6; /* TOKEN + SEQ[2] + EOT + PAD */ - _packet_fragment = 0; - _packet_endfrag = (_length + 65) / 60; /* 1 to 15 */ - packet.in.token = 0x0E; /* TOKEN */ - packet.rawData[_packet_length] = 0; /* EOT */ - D2PRINTF(" SQ=%03X:%03X>", packet.out.sequence, _packet_length); - D2PRINTHEX(&packet.in.token, _packet_length); - } - - /*** Only a subset of JTAGICE3 commands are implemented. ***/ - size_t jtag_scope_general (void) { - size_t _rspsize = 0; - uint8_t _cmd = packet.out.cmd; - uint8_t _section = packet.out.section; - uint8_t _index = packet.out.index; - uint8_t _length = packet.out.length; - if (_cmd == 0x02) { /* CMD3_GET_PARAMETER */ - D1PRINTF(" GEN_GET_PARAM=%02X:%02X:%02X\r\n", _section, _index, _length); - if (_section == 0) { /* SET_GET_CTXT_CONFIG */ - /* _index == 0-5 */ - memcpy_P(&packet.in.data[0], &jtag_version[_index], _length); - D1PRINTF(" VESRION="); - D1PRINTHEX(&packet.in.data[0], _length); - } - else if (_section == 1) { /* SET_GET_CTXT_PHYSICAL */ - if (_index == 0 || _index == 0x20) { /* PARM3_VTARGET */ - /* Called with `-xvtarget` HAS_VTARG_READ */ - _vtarget = SYS::get_vdd(); - D1PRINTF(" VTARGET=%d\r\n", _vtarget); - packet.in.wValue = _vtarget; - } - else { /* PARM3_ANALOG_XXXX */ - /* Called with PowerDebugger HAS_VTARG_ADJ */ - D1PRINTF(" PHYSICAL=%02X:%02X\r\n", _index, _length); - memcpy_P(&packet.in.data[0], &jtag_physical[_index & 7], _length); - } - } - packet.in.res = 0x184; /* RSP3_DATA */ - _rspsize = _length + 1; - } - else if (_cmd == 0x10) { /* CMD3_SIGN_ON */ - D1PRINTF(" GEN_SIGN_ON\r\n"); - _jtag_hvctrl = 0; - _jtag_unlock = 0; - _jtag_arch = 0; - _tpi_setmode = 0; - packet.in.res = 0x80; /* RSP3_OK */ - } - else if (_cmd == 0x11) { /* CMD3_SIGN_OFF */ - D1PRINTF(" GEN_SIGN_OFF\r\n"); - packet.in.res = 0x80; /* RSP3_OK */ - } - else { - D1PRINTF(" GEN=%02X:%02X:%02X\r\n", _section, _index, _length); - } - return _rspsize; - } - - /*** The EDBG scope provides access to the writer's hardware specifications. ***/ - /* There is no impact on operation if it is not called at all. */ - size_t jtag_scope_edbg (void) { - size_t _rspsize = 0; - uint8_t _cmd = packet.out.cmd; - uint8_t _section = packet.out.section; - uint8_t _index = packet.out.index; - uint8_t _length = packet.out.length; - if (_cmd == 0x01) { /* CMD3_SET_PARAMETER */ - uint16_t _data = packet.out.wValue; - D1PRINTF(" AVR_SET_PARAM=%02X:%02X:%02X:%02X\r\n", _section, _index, _length, _data); - if (_section == 0) { /* SET_GET_CTXT_CONFIG */ - if (_index == 0x10) { /* EDBG_CONTROL_TARGET_POWER */ - /* Called with `-xvtarget_switch=0,1` HAS_VTARG_SWITCH */ - D1PRINTF(" TARGET_POWER=%02X\r\n", _data); - _jtag_vpow = _data; /* 0,1 */ - #if defined(PIN_HV_POWER) - if (_data) - digitalWriteMacro(PIN_HV_POWER, HIGH); - else - digitalWriteMacro(PIN_HV_POWER, LOW); - #endif - } - } - packet.in.res = 0x80; /* RSP3_OK */ - } - else if (_cmd == 0x02) { /* CMD3_GET_PARAMETER */ - D1PRINTF(" AVR_GET_PARAM=%02X:%02X:%02X\r\n", _section, _index, _length); - if (_section == 0) { /* SET_GET_CTXT_CONFIG */ - if (_index == 0x10) { /* EDBG_CONTROL_TARGET_POWER */ - /* Called with `-xvtarget_switch` HAS_VTARG_SWITCH */ - D1PRINTF(" TARGET_POWER=%02X\r\n", _jtag_vpow); - packet.in.data[0] = _jtag_vpow; - } - } - packet.in.res = 0x184; /* RSP3_DATA */ - _rspsize = _length + 1; - } - return _rspsize; - } - - /* The AVR scope is further branched by the ARCH designator. */ - size_t jtag_scope_avr_core (void) { - size_t _rspsize = 0; - uint8_t _cmd = packet.out.cmd; - uint8_t _section = packet.out.section; - uint8_t _index = packet.out.index; - uint8_t _length = packet.out.length; - if (_cmd == 0x01) { /* CMD3_SET_PARAMETER */ - uint16_t _data = packet.out.wValue; - D1PRINTF(" AVR_SET_PARAM=%02X:%02X:%02X:%02X\r\n", _section, _index, _length, _data); - if (_section == 0) { /* SET_GET_CTXT_CONFIG */ - if (_index == 0) { /* PARM3_ARCH */ - D1PRINTF(" ARCH=%02X\r\n", _data); - _jtag_arch = _data; /* 5:PARM3_ARCH_UPDI */ - } - else if (_index == 1) { /* PARM3_SESS_PURPOSE */ - D1PRINTF(" SESS_PURPOSE=%02X\r\n", _data); - _jtag_sess = _data; /* */ - } - } - else if (_section == 1) { /* SET_GET_CTXT_PHYSICAL */ - if (_index == 0) { /* PARM3_CONNECTION */ - D1PRINTF(" CONNECTION=%02X\r\n", _data); - _jtag_conn = _data; /* 8:PARM3_CONN_UPDI */ - } - else if (_index == 0x31) { /* PARM3_CLK_XMEGA_PDI */ - _xclk = _data; - D1PRINTF(" XCLK=%d\r\n", _xclk); - if (_jtag_arch == 5) { - /* Called with `-B xclk[unit]`. */ - /* XCLK Range Limitation : LSB=kHz */ - if (_xclk > 240) _xclk = 240; - else if (_xclk < 40) _xclk = 40; - #if defined(DEBUG) - if (_xclk != _data) D1PRINTF(" FIX_CLK=%d\r\n", _xclk); - #endif - } - } - } - else if (_section == 2) { /* SET_GET_CTXT_DEVICE */ - if (_index == 0) { /* PARM3_DEVICEDESC */ - D1PRINTF(" DEVICEDESC=%X\r\n", _length); - memcpy(&Device_Descriptor, &packet.out.setData[0], _length & 63); - #if defined(DEBUG) && (DEBUG >= 2) - if (_jtag_arch == 5) { - D2PRINTF("(UPDI) prog_base=%02X,%04X\r\n", Device_Descriptor.UPDI.prog_base_msb, Device_Descriptor.UPDI.prog_base); - D2PRINTF(" flash_page_size=%02X,%02X\r\n", Device_Descriptor.UPDI.flash_page_size_msb, Device_Descriptor.UPDI.flash_page_size); - D2PRINTF(" flash_bytes=%06lX\r\n", Device_Descriptor.UPDI.flash_bytes); - D2PRINTF(" eeprom_bytes=%04X\r\n", Device_Descriptor.UPDI.eeprom_bytes); - D2PRINTF(" user_sig_bytes=%04X\r\n", Device_Descriptor.UPDI.user_sig_bytes); - D2PRINTF(" fuses_bytes=%04X\r\n", Device_Descriptor.UPDI.fuses_bytes); - D2PRINTF(" eeprom_base=%04X\r\n", Device_Descriptor.UPDI.eeprom_base); - D2PRINTF(" user_sig_base=%04X\r\n", Device_Descriptor.UPDI.user_sig_base); - D2PRINTF(" signature_base=%04X\r\n", Device_Descriptor.UPDI.signature_base); - D2PRINTF(" fuses_base=%04X\r\n", Device_Descriptor.UPDI.fuses_base); - D2PRINTF(" lockbits_base=%04X\r\n", Device_Descriptor.UPDI.lockbits_base); - D2PRINTF(" address_mode=%02X\r\n", Device_Descriptor.UPDI.address_mode); - D2PRINTF(" hvupdi_variant=%02X\r\n", Device_Descriptor.UPDI.hvupdi_variant); - /* Even with all this, the BOOTROW information is still undefined! */ - /* Re-analysis of newer ICE FW is needed! */ - } - /* STUB: And other descriptors. */ - #elif defined(DEBUG) - if (_jtag_arch == 5) { - D1PRINTF(" HVTYPE=%02X\r\n", Device_Descriptor.UPDI.hvupdi_variant); - } - #endif - } - } - else if (_section == 3) { /* SET_GET_CTXT_OPTIONS */ - if (_index == 6) { /* PARM3_OPT_12V_UPDI_ENABLE */ - /* Called with `-xhvupdi` hvupdi_support */ - D1PRINTF(" HVCTRLEN=%02X\r\n", _data); - _jtag_hvctrl = _data; /* 1:ENABLE */ - } - else if (_index == 7) { /* PARM3_OPT_CHIP_ERASE_TO_ENTER */ - /* This is a stub that shows no signs of being used. */ - /* force unlock chip-erase */ - /* This might be called having no `-e` or `-D`, but having `-F`. */ - D1PRINTF(" UNLOCKEN=%02X\r\n", _data); - _jtag_unlock = _data; /* 1:ENABLE */ - } - } - packet.in.res = 0x80; /* RSP3_OK */ - } - else if (_cmd == 0x02) { /* CMD3_GET_PARAMETER */ - D1PRINTF(" AVR_GET_PARAMETER=%02X:%02X:%02X\r\n", _section, _index, _length); - if (_section == 0) { /* SET_GET_CTXT_CONFIG */ - if (_index == 0) { /* PARM3_ARCH */ - D1PRINTF(" ARCH=%02X\r\n", _jtag_arch); - packet.in.data[0] = _jtag_arch; - } - } - else if (_section == 1) { /* SET_GET_CTXT_PHYSICAL */ - if (_index == 0) { /* PARM3_CONNECTION */ - /* This is a stub that is called but not used. */ - D1PRINTF(" CONNECTION=%02X\r\n", _jtag_conn); - packet.in.data[0] = _jtag_conn; - } - else if (_index == 0x31) { /* PARM3_CLK_XMEGA_PDI */ - /* `-B khz` : "khz" units are required. */ - D1PRINTF(" XCLK=%d\r\n", _xclk); - packet.in.wValue = _xclk; - } - } - packet.in.res = 0x184; /* RSP3_DATA */ - _rspsize = _length + 1; - } - #ifdef _Not_yet_implemented_stub_ - else if (_jtag_arch == 0x01) _rspsize = DWIRE::jtag_scope_tiny(); /* dWire? */ - else if (_jtag_arch == 0x02) _rspsize = MEGA::jtag_scope_mega(); /* MEGA */ - else if (_jtag_arch == 0x03) _rspsize = XMEGA::jtag_scope_xmega(); /* XMEGA */ - #endif - else if (_jtag_arch == 0x05) _rspsize = UPDI::jtag_scope_updi(); /* UPDI support */ - else packet.in.res = 0xA0; /* RSP3_FAILED */ - return _rspsize; - } /* jtag_scope_avr_core */ - - /* Processing branches depending on the scope specifier. */ - /* Currently, four types of scope are known: */ - void jtag_scope_branch (void) { - size_t _rspsize = 0; - uint8_t _scope = packet.out.scope; - D1PRINTF("SCOPE=%02X,C=%02X,S=%02X,L=%02X\r\n", - _scope, - packet.out.cmd, - packet.out.section, - packet.out.index); - if (_scope == 0x01) _rspsize = jtag_scope_general(); /* SCOPE_GENERAL */ - #ifdef _Not_yet_implemented_stub_ - else if (_scope == 0x00) _rspsize = jtag_scope_info(); /* SCOPE_INFO */ /* Not used with EDBG/CMSIS-DAP type */ - else if (_scope == 0x11) _rspsize = ISP::jtag_scope_isp(); /* SCOPE_AVR_ISP */ - else if (_scope == 0x13) _rspsize = AVR32::jtag_scope_avr32(); /* SCOPE_AVR32 */ - #endif - else if (_scope == 0x12) _rspsize = jtag_scope_avr_core(); /* SCOPE_AVR */ - #ifdef CONFIG_PGM_TPI_ENABLE - /* The 14P models have limited TPI support due to insufficient pin count. */ - else if (_scope == 0x14) _rspsize = TPI::jtag_scope_tpi(); /* SCOPE_AVR_TPI */ - #endif - else if (_scope == 0x20) _rspsize = jtag_scope_edbg(); /* SCOPE_EDBG */ - complete_jtag_transactions(_rspsize); - } /* jtag_scope_branch */ - -}; - -// end of code +/** + * @file jtag.cpp + * @author askn (K.Sato) multix.jp + * @brief UPDI4AVR-USB is a program writer for the AVR series, which are UPDI/TPI + * type devices that connect via USB 2.0 Full-Speed. It also has VCP-UART + * transfer function. It only works when installed on the AVR-DU series. + * Recognized by standard drivers for Windows/macos/Linux and AVRDUDE>=7.2. + * @version 1.32.40+ + * @date 2024-07-10 + * @copyright Copyright (c) 2024 askn37 at github.com + * @link Product Potal : https://askn37.github.io/ + * MIT License : https://askn37.github.io/LICENSE.html + */ + +#include +#include /* PROGMEM memcpy_P */ +#include /* memcpy */ +#include "api/btools.h" /* bswap16,32 */ +#include "peripheral.h" /* import Serial (Debug) */ +#include "configuration.h" +#include "prototype.h" + +/* + * NOTE: + * + * Handles JTAGICE3 payloads. + * + * Encapsulates higher level payloads in various formats using leading scope numbers. + * ATMEL based JTAG, AVRISP, STK600-XPRG, etc. + * + * EDBG payload is an ATMEL vendor extension to CSMIS-DAP. + * Splits JTAG3 payload into chunks to fit into USB-HID report packets. + * + * CSMIS-DAP is a common application foundation that leverages USB-HID directly. + * Encapsulates ARM based SWO/SWD technology and JTAG conventions. + * Only EDBG extensions and parts of the common API are actually used here. + */ + +namespace JTAG { + + /* PARM3_HW_VER, PARM3_FW_MAJOR, PARM3_FW_MINOR, PARM3_FW_REL[2] */ + const uint8_t PROGMEM jtag_version[] = CONFIG_SYS_FWVER; + const uint8_t PROGMEM jtag_physical[] = {0x90, 0x28, 0x00, 0x18, 0x38, 0x00, 0x00, 0x00}; + + /*** Only a subset of the CMSIS-DAP commands are implemented. ***/ + /* + * Command numbers 0x80 and above are vendor extensions, EDBG Payload uses 0x80 and x81. + * Additionally, 0x82 is reserved for device event notification. + */ + bool dap_command_check (void) { + bool _result = false; + uint8_t _cmd = EP_MEM.dap_data[0]; + uint8_t _sub = EP_MEM.dap_data[1]; + D2PRINTF("DAP=%02X SUB=%02X\r\n", _cmd, _sub); + USB::ep_dpi_pending(); + + /*** EDBG Payload ***/ + /* + * The payload is split into 60-byte chunks, a header is added, + * and the data is sent and received with a fixed length of 64 bytes, + * determined by the value specified in the HID Report. + * A maximum of 15 chunks is possible, + * resulting in a maximum payload length of 900 bytes. + */ + if (_cmd == 0x80) { /* DAP_EDBG_VENDOR_AVR_CMD */ + uint8_t _endf = _sub & 0x0F; + uint8_t _frag = _sub >> 4; + uint8_t _size = EP_MEM.dap_data[3]; + size_t _ofst = (_frag - 1) * 60; + if (_endf >= 10) { + /* Only a maximum of 540 bytes : 9 fragment records is accepted. */ + D1PRINTF("\r\n"); + EP_MEM.dap_data[1] = 0x00; /* EDBG_RSP_FAIL */ + } + else { + /* Detect the first chunk. */ + if (_frag == 1) _packet_chunks = 0; + ++_packet_chunks; + memcpy(&packet.rawData[_ofst], &EP_MEM.dap_data[4], _size); + EP_MEM.dap_data[1] = 0x01; /* EDBG_RSP_OK */ + D3PRINTHEX(&EP_MEM.dap_data, _size + 4); + if (_endf == _frag) { /* end of defragment */ + _packet_length = _ofst + _size; + D2PRINTF(" SQ=%03X:%03X<", packet.out.sequence, _packet_length); + D2PRINTHEX(&packet, _packet_length); + if (_packet_chunks == _endf) { + /* True if an EDBG Payload is received. */ + D2PRINTF("\r\n"); + _packet_endfrag = 0; + _result = true; + } + else { + /* A missing chunk is detected, so an error is returned. */ + D1PRINTF("\r\n"); + EP_MEM.dap_data[1] = 0x00; /* EDBG_RSP_FAIL */ + } + } + } + } + else if (_cmd == 0x81) { /* DAP_EDBG_VENDOR_AVR_RSP */ + EP_MEM.dap_data[2] = 0; /* Always zero */ + if (_packet_endfrag == 0) { + D1PRINTF("\r\n"); + EP_MEM.dap_data[1] = 0; + EP_MEM.dap_data[3] = 0; + } + else { + memcpy(&EP_MEM.dap_data[4], &packet.in.token + (_packet_fragment * 60), 60); + EP_MEM.dap_data[1] = ((++_packet_fragment) << 4) | _packet_endfrag; + EP_MEM.dap_data[3] = _packet_fragment == _packet_endfrag ? _packet_length : 60; + _packet_length -= 60; + D3PRINTF(" PI="); + D3PRINTHEX(&EP_MEM.dap_data, EP_MEM.dap_data[3] + 4); + } + } + + /*** DAP Standard ***/ + else if (_cmd == 0x00) { /* DAP_CMD_INFO */ + if (_sub == 0xFF /* DAP_INFO_PACKET_SIZE */ + || _sub == 0xFB /* UART Receive Buffer Size */ + || _sub == 0xFC) { /* UART Transmit Buffer Size */ + EP_MEM.dap_data[1] = 0x02; /* length=2 */ + EP_MEM.dap_data[2] = 0x40; /* MaxPacketSize = 64 */ + EP_MEM.dap_data[3] = 0x00; + D3PRINTF(" PI="); + D3PRINTHEX(&EP_MEM.dap_data, 4); + } + else if (_sub == 0xF1) { /* DAP_INFO_Capabilities */ + EP_MEM.dap_data[1] = 0x02; /* length=2 */ + EP_MEM.dap_data[2] = 0x80; /* 7:UART Communication Port */ + EP_MEM.dap_data[3] = 0x01; /* 1:USB COM Port */ + D3PRINTF(" PI="); + D3PRINTHEX(&EP_MEM.dap_data, 4); + } + } + else if (_cmd == 0x02) { /* DAP_CMD_CONNECT */ + /* EP_MEM.dap_data[1] == CONN_TYPE */ + /* Here, the response is returned without processing. */ + D3PRINTF(" PI="); + D3PRINTHEX(&EP_MEM.dap_data, 2); + } + else if (_cmd == 0x01 /* DAP_CMD_HOSTSTATUS */ + && _sub == 0x00) { /* DAP_LED_CONNECT */ + /* EP_MEM.dap_data[2] == LED_ON/OFF */ + /* Here, the response is returned without processing. */ + D3PRINTF(" PI="); + D3PRINTHEX(&EP_MEM.dap_data, 3); + } + else if (_cmd == 0x03) { /* DAP_CMD_DISCONNECT */ + /* Here, the response is returned without processing. */ + D3PRINTF(" PI="); + D3PRINTHEX(&EP_MEM.dap_data, 2); + } + else { + EP_MEM.dap_data[1] = 0x00; /* other 0 length result */ + } + USB::complete_dap_out(); + return _result; /* True if an EDBG Payload is received. */ + } + + /*** Prepare for EDBG payload request from device to host ***/ + void complete_jtag_transactions (size_t _length) { + _packet_length = _length + 6; /* TOKEN + SEQ[2] + EOT + PAD */ + _packet_fragment = 0; + _packet_endfrag = (_length + 65) / 60; /* 1 to 15 */ + packet.in.token = 0x0E; /* TOKEN */ + packet.rawData[_packet_length] = 0; /* EOT */ + D2PRINTF(" SQ=%03X:%03X>", packet.out.sequence, _packet_length); + D2PRINTHEX(&packet.in.token, _packet_length); + } + + /*** Only a subset of JTAGICE3 commands are implemented. ***/ + size_t jtag_scope_general (void) { + size_t _rspsize = 0; + uint8_t _cmd = packet.out.cmd; + uint8_t _section = packet.out.section; + uint8_t _index = packet.out.index; + uint8_t _length = packet.out.length; + if (_cmd == 0x02) { /* CMD3_GET_PARAMETER */ + D1PRINTF(" GEN_GET_PARAM=%02X:%02X:%02X\r\n", _section, _index, _length); + if (_section == 0) { /* SET_GET_CTXT_CONFIG */ + /* _index == 0-5 */ + memcpy_P(&packet.in.data[0], &jtag_version[_index], _length); + D1PRINTF(" VESRION="); + D1PRINTHEX(&packet.in.data[0], _length); + } + else if (_section == 1) { /* SET_GET_CTXT_PHYSICAL */ + if (_index == 0 || _index == 0x20) { /* PARM3_VTARGET */ + /* Called with `-xvtarget` HAS_VTARG_READ */ + _vtarget = SYS::get_vdd(); + D1PRINTF(" VTARGET=%d\r\n", _vtarget); + packet.in.wValue = _vtarget; + } + else { /* PARM3_ANALOG_XXXX */ + /* Called with PowerDebugger HAS_VTARG_ADJ */ + D1PRINTF(" PHYSICAL=%02X:%02X\r\n", _index, _length); + memcpy_P(&packet.in.data[0], &jtag_physical[_index & 7], _length); + } + } + packet.in.res = 0x184; /* RSP3_DATA */ + _rspsize = _length + 1; + } + else if (_cmd == 0x10) { /* CMD3_SIGN_ON */ + D1PRINTF(" GEN_SIGN_ON\r\n"); + _jtag_hvctrl = 0; + _jtag_unlock = 0; + _jtag_arch = 0; + _tpi_setmode = 0; + packet.in.res = 0x80; /* RSP3_OK */ + } + else if (_cmd == 0x11) { /* CMD3_SIGN_OFF */ + D1PRINTF(" GEN_SIGN_OFF\r\n"); + packet.in.res = 0x80; /* RSP3_OK */ + } + else { + D1PRINTF(" GEN=%02X:%02X:%02X\r\n", _section, _index, _length); + } + return _rspsize; + } + + /*** The EDBG scope provides access to the writer's hardware specifications. ***/ + /* There is no impact on operation if it is not called at all. */ + size_t jtag_scope_edbg (void) { + size_t _rspsize = 0; + uint8_t _cmd = packet.out.cmd; + uint8_t _section = packet.out.section; + uint8_t _index = packet.out.index; + uint8_t _length = packet.out.length; + if (_cmd == 0x01) { /* CMD3_SET_PARAMETER */ + uint16_t _data = packet.out.wValue; + D1PRINTF(" AVR_SET_PARAM=%02X:%02X:%02X:%02X\r\n", _section, _index, _length, _data); + if (_section == 0) { /* SET_GET_CTXT_CONFIG */ + if (_index == 0x10) { /* EDBG_CONTROL_TARGET_POWER */ + /* Called with `-xvtarget_switch=0,1` HAS_VTARG_SWITCH */ + D1PRINTF(" TARGET_POWER=%02X\r\n", _data); + _jtag_vpow = _data; /* 0,1 */ + #if defined(PIN_HV_POWER) + if (_data) + digitalWriteMacro(PIN_HV_POWER, HIGH); + else + digitalWriteMacro(PIN_HV_POWER, LOW); + #endif + } + } + packet.in.res = 0x80; /* RSP3_OK */ + } + else if (_cmd == 0x02) { /* CMD3_GET_PARAMETER */ + D1PRINTF(" AVR_GET_PARAM=%02X:%02X:%02X\r\n", _section, _index, _length); + if (_section == 0) { /* SET_GET_CTXT_CONFIG */ + if (_index == 0x10) { /* EDBG_CONTROL_TARGET_POWER */ + /* Called with `-xvtarget_switch` HAS_VTARG_SWITCH */ + D1PRINTF(" TARGET_POWER=%02X\r\n", _jtag_vpow); + packet.in.data[0] = _jtag_vpow; + } + } + packet.in.res = 0x184; /* RSP3_DATA */ + _rspsize = _length + 1; + } + return _rspsize; + } + + /* The AVR scope is further branched by the ARCH designator. */ + size_t jtag_scope_avr_core (void) { + size_t _rspsize = 0; + uint8_t _cmd = packet.out.cmd; + uint8_t _section = packet.out.section; + uint8_t _index = packet.out.index; + uint8_t _length = packet.out.length; + if (_cmd == 0x01) { /* CMD3_SET_PARAMETER */ + uint16_t _data = packet.out.wValue; + D1PRINTF(" AVR_SET_PARAM=%02X:%02X:%02X:%02X\r\n", _section, _index, _length, _data); + if (_section == 0) { /* SET_GET_CTXT_CONFIG */ + if (_index == 0) { /* PARM3_ARCH */ + D1PRINTF(" ARCH=%02X\r\n", _data); + _jtag_arch = _data; /* 5:PARM3_ARCH_UPDI */ + } + else if (_index == 1) { /* PARM3_SESS_PURPOSE */ + D1PRINTF(" SESS_PURPOSE=%02X\r\n", _data); + _jtag_sess = _data; /* */ + } + } + else if (_section == 1) { /* SET_GET_CTXT_PHYSICAL */ + if (_index == 0) { /* PARM3_CONNECTION */ + D1PRINTF(" CONNECTION=%02X\r\n", _data); + _jtag_conn = _data; /* 8:PARM3_CONN_UPDI */ + } + else if (_index == 0x31) { /* PARM3_CLK_XMEGA_PDI */ + _xclk = _data; + D1PRINTF(" XCLK=%d\r\n", _xclk); + if (_jtag_arch == 5) { + /* Called with `-B xclk[unit]`. */ + /* XCLK Range Limitation : LSB=kHz */ + if (_xclk > 240) _xclk = 240; + else if (_xclk < 40) _xclk = 40; + #if defined(DEBUG) + if (_xclk != _data) D1PRINTF(" FIX_CLK=%d\r\n", _xclk); + #endif + } + } + } + else if (_section == 2) { /* SET_GET_CTXT_DEVICE */ + if (_index == 0) { /* PARM3_DEVICEDESC */ + D1PRINTF(" DEVICEDESC=%X\r\n", _length); + memcpy(&Device_Descriptor, &packet.out.setData[0], _length & 63); + #if defined(DEBUG) && (DEBUG >= 2) + if (_jtag_arch == 5) { + D2PRINTF("(UPDI) prog_base=%02X,%04X\r\n", Device_Descriptor.UPDI.prog_base_msb, Device_Descriptor.UPDI.prog_base); + D2PRINTF(" flash_page_size=%02X,%02X\r\n", Device_Descriptor.UPDI.flash_page_size_msb, Device_Descriptor.UPDI.flash_page_size); + D2PRINTF(" flash_bytes=%06lX\r\n", Device_Descriptor.UPDI.flash_bytes); + D2PRINTF(" eeprom_bytes=%04X\r\n", Device_Descriptor.UPDI.eeprom_bytes); + D2PRINTF(" user_sig_bytes=%04X\r\n", Device_Descriptor.UPDI.user_sig_bytes); + D2PRINTF(" fuses_bytes=%04X\r\n", Device_Descriptor.UPDI.fuses_bytes); + D2PRINTF(" eeprom_base=%04X\r\n", Device_Descriptor.UPDI.eeprom_base); + D2PRINTF(" user_sig_base=%04X\r\n", Device_Descriptor.UPDI.user_sig_base); + D2PRINTF(" signature_base=%04X\r\n", Device_Descriptor.UPDI.signature_base); + D2PRINTF(" fuses_base=%04X\r\n", Device_Descriptor.UPDI.fuses_base); + D2PRINTF(" lockbits_base=%04X\r\n", Device_Descriptor.UPDI.lockbits_base); + D2PRINTF(" address_mode=%02X\r\n", Device_Descriptor.UPDI.address_mode); + D2PRINTF(" hvupdi_variant=%02X\r\n", Device_Descriptor.UPDI.hvupdi_variant); + /* Even with all this, the BOOTROW information is still undefined! */ + /* Re-analysis of newer ICE FW is needed! */ + } + /* STUB: And other descriptors. */ + #elif defined(DEBUG) + if (_jtag_arch == 5) { + D1PRINTF(" HVTYPE=%02X\r\n", Device_Descriptor.UPDI.hvupdi_variant); + } + #endif + } + } + else if (_section == 3) { /* SET_GET_CTXT_OPTIONS */ + if (_index == 6) { /* PARM3_OPT_12V_UPDI_ENABLE */ + /* Called with `-xhvupdi` hvupdi_support */ + D1PRINTF(" HVCTRLEN=%02X\r\n", _data); + _jtag_hvctrl = _data; /* 1:ENABLE */ + } + else if (_index == 7) { /* PARM3_OPT_CHIP_ERASE_TO_ENTER */ + /* This is a stub that shows no signs of being used. */ + /* force unlock chip-erase */ + /* This might be called having no `-e` or `-D`, but having `-F`. */ + D1PRINTF(" UNLOCKEN=%02X\r\n", _data); + _jtag_unlock = _data; /* 1:ENABLE */ + } + } + packet.in.res = 0x80; /* RSP3_OK */ + } + else if (_cmd == 0x02) { /* CMD3_GET_PARAMETER */ + D1PRINTF(" AVR_GET_PARAMETER=%02X:%02X:%02X\r\n", _section, _index, _length); + if (_section == 0) { /* SET_GET_CTXT_CONFIG */ + if (_index == 0) { /* PARM3_ARCH */ + D1PRINTF(" ARCH=%02X\r\n", _jtag_arch); + packet.in.data[0] = _jtag_arch; + } + } + else if (_section == 1) { /* SET_GET_CTXT_PHYSICAL */ + if (_index == 0) { /* PARM3_CONNECTION */ + /* This is a stub that is called but not used. */ + D1PRINTF(" CONNECTION=%02X\r\n", _jtag_conn); + packet.in.data[0] = _jtag_conn; + } + else if (_index == 0x31) { /* PARM3_CLK_XMEGA_PDI */ + /* `-B khz` : "khz" units are required. */ + D1PRINTF(" XCLK=%d\r\n", _xclk); + packet.in.wValue = _xclk; + } + } + packet.in.res = 0x184; /* RSP3_DATA */ + _rspsize = _length + 1; + } + #ifdef _Not_yet_implemented_stub_ + else if (_jtag_arch == 0x01) _rspsize = DWIRE::jtag_scope_tiny(); /* dWire? */ + else if (_jtag_arch == 0x02) _rspsize = MEGA::jtag_scope_mega(); /* MEGA */ + else if (_jtag_arch == 0x03) _rspsize = XMEGA::jtag_scope_xmega(); /* XMEGA */ + #endif + else if (_jtag_arch == 0x05) _rspsize = UPDI::jtag_scope_updi(); /* UPDI support */ + else packet.in.res = 0xA0; /* RSP3_FAILED */ + return _rspsize; + } /* jtag_scope_avr_core */ + + /* Processing branches depending on the scope specifier. */ + /* Currently, four types of scope are known: */ + void jtag_scope_branch (void) { + size_t _rspsize = 0; + uint8_t _scope = packet.out.scope; + D1PRINTF("SCOPE=%02X,C=%02X,S=%02X,L=%02X\r\n", + _scope, + packet.out.cmd, + packet.out.section, + packet.out.index); + if (_scope == 0x01) _rspsize = jtag_scope_general(); /* SCOPE_GENERAL */ + #ifdef _Not_yet_implemented_stub_ + else if (_scope == 0x00) _rspsize = jtag_scope_info(); /* SCOPE_INFO */ /* Not used with EDBG/CMSIS-DAP type */ + else if (_scope == 0x11) _rspsize = ISP::jtag_scope_isp(); /* SCOPE_AVR_ISP */ + else if (_scope == 0x13) _rspsize = AVR32::jtag_scope_avr32(); /* SCOPE_AVR32 */ + #endif + else if (_scope == 0x12) _rspsize = jtag_scope_avr_core(); /* SCOPE_AVR */ + #ifdef CONFIG_PGM_TPI_ENABLE + /* The 14P models have limited TPI support due to insufficient pin count. */ + else if (_scope == 0x14) _rspsize = TPI::jtag_scope_tpi(); /* SCOPE_AVR_TPI */ + #endif + else if (_scope == 0x20) _rspsize = jtag_scope_edbg(); /* SCOPE_EDBG */ + complete_jtag_transactions(_rspsize); + } /* jtag_scope_branch */ + +}; + +// end of code diff --git a/src/prototype.h b/src/prototype.h index fbe144c..99c9ac8 100644 --- a/src/prototype.h +++ b/src/prototype.h @@ -1,544 +1,546 @@ -/** - * @file prototype.h - * @author askn (K.Sato) multix.jp - * @brief UPDI4AVR-USB is a program writer for the AVR series, which are UPDI/TPI - * type devices that connect via USB 2.0 Full-Speed. It also has VCP-UART - * transfer function. It only works when installed on the AVR-DU series. - * Recognized by standard drivers for Windows/macos/Linux and AVRDUDE>=7.2. - * @version 1.32.40+ - * @date 2024-07-10 - * @copyright Copyright (c) 2024 askn37 at github.com - * @link Product Potal : https://askn37.github.io/ - * MIT License : https://askn37.github.io/LICENSE.html - */ - -#pragma once -#include -#include -#include -#include -#include "configuration.h" - -// #undef DEBUG -// #define DEBUG 3 - -#ifndef F_CPU - #define F_CPU 20000000L -#endif -#ifndef CONSOLE_BAUD - #define CONSOLE_BAUD 500000L -#endif - -#undef Serial -#define D0PRINTF(FMT, ...) -#define D1PRINTF(FMT, ...) -#define D2PRINTF(FMT, ...) -#define D3PRINTF(FMT, ...) -#define D0PRINTHEX(P,L) -#define D1PRINTHEX(P,L) -#define D2PRINTHEX(P,L) -#define D3PRINTHEX(P,L) -#if defined(DEBUG) - #include "peripheral.h" /* from Micro_API : import Serial (Debug) */ - #define Serial Serial1C /* PIN_PD6:TxD, PIN_PD7:RxD */ - #undef D0PRINTF - #define D0PRINTF(FMT, ...) Serial.printf(F(FMT), ##__VA_ARGS__) - #undef D0PRINTHEX - #define D0PRINTHEX(P,L) Serial.printHex((P),(L),':').ln() - #if (DEBUG >= 1) - #undef D1PRINTF - #define D1PRINTF(FMT, ...) Serial.printf(F(FMT), ##__VA_ARGS__) - #undef D1PRINTHEX - #define D1PRINTHEX(P,L) Serial.printHex((P),(L),':').ln() - #endif - #if (DEBUG >= 2) - #undef D2PRINTF - #define D2PRINTF(FMT, ...) Serial.printf(F(FMT), ##__VA_ARGS__) - #undef D2PRINTHEX - #define D2PRINTHEX(P,L) Serial.printHex((P),(L),':').ln() - #endif - #if (DEBUG >= 3) - #undef D3PRINTF - #define D3PRINTF(FMT, ...) Serial.printf(F(FMT), ##__VA_ARGS__) - #undef D3PRINTHEX - #define D3PRINTHEX(P,L) Serial.printHex((P),(L),':').ln() - #endif -#endif - -#define PACKED __attribute__((packed)) -#define WEAK __attribute__((weak)) -#define RODATA __attribute__((__progmem__)) -#define NOINIT __attribute__((section(".noinit"))) - -#define USB_EP_SIZE_gc(x) ((x <= 8 ) ? USB_BUFSIZE_DEFAULT_BUF8_gc :\ - (x <= 16) ? USB_BUFSIZE_DEFAULT_BUF16_gc:\ - (x <= 32) ? USB_BUFSIZE_DEFAULT_BUF32_gc:\ - USB_BUFSIZE_DEFAULT_BUF64_gc) -#define USB_EP_ID_DESC(x) (uint8_t)(((x)>>4)|((x)<<4)) -#define USB_EP(EPFIFO) (*(USB_EP_t *)(((uint16_t)&EP_TABLE.EP) + (EPFIFO))) -#define USB_EP_STATUS_CLR(EPFIFO) _SFR_MEM8(&USB0_STATUS0_OUTCLR + ((EPFIFO) >> 2)) -#define USB_EP_STATUS_SET(EPFIFO) _SFR_MEM8(&USB0_STATUS0_OUTSET + ((EPFIFO) >> 2)) - -#define USB_ENDPOINTS_MAX 4 -#define USB_CCI_INTERVAL 4 - -#define USB_EP_REQ (0x00) -#define USB_EP_RES (0x08) -#define USB_EP_DPI (0x18) /* #0 DAP IN */ -#define USB_EP_DPO (0x20) /* #0 DAP OUT */ -#define USB_EP_CCI (0x28) /* #1 CCI Communications-Control IN */ -#define USB_EP_CDO (0x30) /* #2 CDO Communications-Data OUT */ -#define USB_EP_CDI (0x38) /* #2 CDI Communications-Data IN */ - -#define EP_REQ USB_EP(USB_EP_REQ) -#define EP_RES USB_EP(USB_EP_RES) -#define EP_DPI USB_EP(USB_EP_DPI) -#define EP_DPO USB_EP(USB_EP_DPO) -#define EP_CCI USB_EP(USB_EP_CCI) -#define EP_CDI USB_EP(USB_EP_CDI) -#define EP_CDO USB_EP(USB_EP_CDO) - -#define GPCONF GPR_GPR0 - #define GPCONF_USB_bp 0 /* USB interface is active */ - #define GPCONF_USB_bm (1 << 0) - #define GPCONF_VCP_bp 1 /* VCP enabled */ - #define GPCONF_VCP_bm (1 << 1) - #define GPCONF_DBL_bp 2 /* VCP-RxD double buffer selection */ - #define GPCONF_DBL_bm (1 << 2) - #define GPCONF_BRK_bp 3 /* VCP-TxD BREAK transmission */ - #define GPCONF_BRK_bm (1 << 3) - #define GPCONF_OPN_bp 4 /* VCP-RxD open */ - #define GPCONF_OPN_bm (1 << 4) - #define GPCONF_RIS_bp 6 /* SW0 release event */ - #define GPCONF_RIS_bm (1 << 6) - #define GPCONF_FAL_bp 7 /* SW0 push event */ - #define GPCONF_FAL_bm (1 << 7) - -#define PGCONF GPR_GPR1 - #define PGCONF_UPDI_bp 0 /* UPDI active (SIB read successful) or TPI active */ - #define PGCONF_UPDI_bm (1 << 0) - #define PGCONF_PROG_bp 1 /* Programmable (memory access unlocked) */ - #define PGCONF_PROG_bm (1 << 1) - #define PGCONF_ERSE_bp 2 /* Chip erase completed */ - #define PGCONF_ERSE_bm (1 << 2) - #define PGCONF_FAIL_bp 7 /* Initialization failed (timeout) */ - #define PGCONF_FAIL_bm (1 << 7) - -/* The last received data and state of UPDI are stored in the GP Register. */ -#define RXSTAT GPR_GPR2 -#define RXDATA GPR_GPR3 - -/* - * Global struct - */ - -typedef struct { - uint32_t dwDTERate; - uint8_t bCharFormat; /* 0,2 */ - uint8_t bParityType; /* 0,1,2 */ - uint8_t bDataBits; /* 5,6,7,8,16(9) */ -} PACKED LineEncoding_t; - -typedef struct { - union { - uint8_t bValue; - struct { - bool bStateDTR : 1; /* DTR -> DSR or CD */ - bool bStateRTS : 1; /* RTS -> CTS */ - }; - }; -} PACKED LineState_t; - -typedef struct { /* DTE <-> DCE */ - union { - uint8_t bValue; - struct { - bool bRxCarrier : 1; /* DCD <- CD */ - bool bTxCarrier : 1; /* DSR <- DTR */ - bool bBreak : 1; /* not used */ - bool bRingSignal : 1; /* RI <- RI */ - bool bFraming : 1; /* Frame Error */ - bool bParity : 1; /* Parity Error */ - bool bOverRun : 1; /* Overrun Error */ - bool reserve : 1; - }; - }; - uint8_t reserved; -} PACKED SerialState_t; - -typedef struct { - union { - uint8_t rawData[540]; - struct { - uint8_t token; /* offset 0 */ - uint8_t reserve1; - uint16_t sequence; - uint8_t scope; - uint8_t cmd; - union { - uint8_t data[534]; - struct { /* CMD=21,23:CMD3_READ,WRITE_MEMORY */ - uint8_t reserve2; - uint8_t bMType; - uint32_t dwAddr; - uint32_t dwLength; - uint8_t reserve3; - uint8_t memData[513]; /* WRITE_MEMORY */ - }; - struct { /* CMD=1,2:CMD3_GET,SET_PARAMETER */ - uint8_t reserve4; - uint8_t section; - uint8_t index; - uint8_t length; - union { - uint16_t wValue; - uint8_t setData[255]; /* SET_PARAMETER */ - }; - }; - struct { /* CMD3_ERASE_MEMORY */ - uint8_t reserve5; - uint8_t bEType; - uint32_t dwPageAddr; - }; - union { - struct { /* XPRG_SET_PARAM */ - uint8_t bType; - uint8_t bValue; - }; - struct { /* XPRG_CMD_READ_MEM */ - uint8_t bMType; - uint32_t dwAddr; - uint16_t wLength; - } read; - struct { /* XPRG_CMD_WRITE_MEM */ - uint8_t bMType; - uint8_t bPmode; - uint32_t dwAddr; - uint16_t wLength; - uint8_t memData[64 + 8]; /* ATTiny40=64, Other=16 */ - } write; - } tpi; - }; - } out; - struct { - uint8_t reserve6; /* offset -1 */ - uint8_t token; /* offset 0 */ - uint16_t sequence; - uint8_t scope; - union { - uint16_t res; - struct { - uint8_t tpi_cmd; - uint8_t tpi_res; - }; - }; - union { - uint8_t data[513]; /* READ_MEMORY */ - uint8_t bStatus; - uint16_t wValue; - uint32_t dwValue; - }; - } in; - }; -} PACKED JTAG_Packet_t; - -typedef struct { - union { - uint16_t wRequestType; - struct { - uint8_t bmRequestType; - uint8_t bRequest; - }; - }; - uint16_t wValue; - uint16_t wIndex; - uint16_t wLength; -} PACKED Setup_Packet_t; - -typedef struct { - Setup_Packet_t req_data; - union { - uint8_t res_data[256 + 16]; - LineEncoding_t res_encoding; - struct { - union { - uint8_t cci_data[16]; - struct { - Setup_Packet_t cci_header; - uint16_t cci_wValue; - }; - }; - uint8_t dap_data[64]; /* DAP IN/OUT */ - uint8_t cdo_data[64]; - uint8_t cdi_data[128]; /* 64x2 Double buffer */ - }; - }; -} PACKED EP_DATA_t; - -typedef struct { - register8_t FIFO[USB_ENDPOINTS_MAX * 2]; /* FIFO Index Table */ - USB_EP_PAIR_t EP[USB_ENDPOINTS_MAX]; /* USB Device Controller EP */ - _WORDREGISTER(FRAMENUM); /* FRAMENUM count */ -} PACKED EP_TABLE_t; - -/* Mega device descriptor */ -typedef struct { - uint16_t flash_page_size; // in bytes - uint32_t flash_size; // in bytes - uint32_t dummy1; // always 0 - uint32_t boot_address; // maximal (BOOTSZ = 3) bootloader address, in 16-bit words - uint16_t sram_offset; // pointing behind IO registers - uint16_t eeprom_size; - uint8_t eeprom_page_size; - uint8_t ocd_revision; // see XML; basically: all other megaAVR devices: 3 - uint8_t always_one; // always = 1 - uint8_t allow_full_page_bitstream; // old AVRs, see XML - uint16_t dummy2; // always 0 - uint8_t idr_address; // IDR, aka. OCDR - uint8_t eearh_address; // EEPROM access - uint8_t eearl_address; - uint8_t eecr_address; - uint8_t eedr_address; - uint8_t spmcr_address; - uint8_t osccal_address; -} PACKED Mega_Device_Desc_t; - -/* Xmega device descriptor */ -typedef struct { - uint32_t nvm_app_offset; // NVM offset for application flash - uint32_t nvm_boot_offset; // NVM offset for boot flash - uint32_t nvm_eeprom_offset; // NVM offset for EEPROM - uint32_t nvm_fuse_offset; // NVM offset for fuses - uint32_t nvm_lock_offset; // NVM offset for lock bits - uint32_t nvm_user_sig_offset; // NVM offset for user signature row - uint32_t nvm_prod_sig_offset; // NVM offset for production sign. row - uint32_t nvm_data_offset; // NVM offset for data memory (SRAM + IO) - uint32_t app_size; // size of application flash - uint16_t boot_size; // size of boot flash - uint16_t flash_page_size; // flash page size - uint16_t eeprom_size; // size of EEPROM - uint8_t eeprom_page_size; // EEPROM page size - uint16_t nvm_base_addr; // IO space base address of NVM controller - uint16_t mcu_base_addr; // IO space base address of MCU control -} PACKED Xmega_Device_Desc_t; - -/* UPDI device descriptor */ -typedef struct { - uint16_t prog_base; - uint8_t flash_page_size; - uint8_t eeprom_page_size; - uint16_t nvm_base_addr; - uint16_t ocd_base_addr; - // Configuration below, except for "Extended memory support", is only used by kits with - // embedded debuggers (XPlained, Curiosity, ...). - uint16_t default_min_div1_voltage; // Default minimum voltage for 32M => 4.5V -> 4500 - uint16_t default_min_div2_voltage; // Default minimum voltage for 16M => 2.7V -> 2700 - uint16_t default_min_div4_voltage; // Default minimum voltage for 8M => 2.2V -> 2200 - uint16_t default_min_div8_voltage; // Default minimum voltage for 4M => 1.5V -> 1500 - uint16_t pdi_pad_fmax; // 750 - uint32_t flash_bytes; // Flash size in bytes - uint16_t eeprom_bytes; // EEPROM size in bytes - uint16_t user_sig_bytes; // UserSignture size in bytes - uint8_t fuses_bytes; // Fuses size in bytes - uint8_t syscfg_offset; // Offset of SYSCFG0 within FUSE space - uint8_t syscfg_write_mask_and; // AND mask to apply to SYSCFG0 when writing - uint8_t syscfg_write_mask_or; // OR mask to apply to SYSCFG0 when writing - uint8_t syscfg_erase_mask_and; // AND mask to apply to SYSCFG0 after erase - uint8_t syscfg_erase_mask_or; // OR mask to apply to SYSCFG0 after erase - uint16_t eeprom_base; // Base address for EEPROM memory - uint16_t user_sig_base; // Base address for UserSignature memory - uint16_t signature_base; // Base address for Signature memory - uint16_t fuses_base; // Base address for Fuses memory - uint16_t lockbits_base; // Base address for Lockbits memory - uint16_t device_id; // Two last bytes of the device ID - // Extended memory support. Needed for flash >= 64kb - uint8_t prog_base_msb; // Extends prog_base, used in 24-bit mode - uint8_t flash_page_size_msb; // Extends flash_page_size, used in 24-bit mode - uint8_t address_mode; // 0x00 = 16-bit mode, 0x01 = 24-bit mode - uint8_t hvupdi_variant; // Indicates the target UPDI HV implementation -} PACKED UPDI_Device_Desc_t; - -typedef struct { - union { - Mega_Device_Desc_t Mega; - Xmega_Device_Desc_t Xmega; - UPDI_Device_Desc_t UPDI; - }; -} PACKED Device_Desc_t; - -typedef struct { - size_t (*prog_init)(void); - size_t (*read_memory)(void); - size_t (*erase_memory)(void); - size_t (*write_memory)(void); -} PACKED Command_Table_t; - -typedef struct { - uint16_t wVidPid[2]; - uint32_t dwSerialNumber; -} PACKED User_EEP_t; - -/* - * Global workspace - */ - -extern "C" { - namespace /* NAMELESS */ { - - /* SYSTEM */ - extern jmp_buf TIMEOUT_CONTEXT; - extern uint8_t _led_mode; - - /* USB */ - extern EP_TABLE_t EP_TABLE; - extern EP_DATA_t EP_MEM; - extern Device_Desc_t Device_Descriptor; - - /* Vertual Communication Port */ - #if defined(CONFIG_VCP_9BIT_SUPPORT) - extern void (*usart_receiver)(void); - extern void (*usart_transmitter)(void); - #endif - extern LineEncoding_t _set_line_encoding; - extern LineState_t _set_line_state; - extern uint16_t _send_break; - extern volatile uint8_t _send_count; - extern uint8_t _recv_count; - extern uint8_t _set_config; - extern volatile uint8_t _sof_count; - extern uint8_t _set_serial_state; - - /* JTAG packet payload */ - extern JTAG_Packet_t packet; - extern size_t _packet_length; - extern uint8_t _packet_fragment; - extern uint8_t _packet_chunks; - extern uint8_t _packet_endfrag; - - /* JTAG parameter */ - extern uint32_t _before_page; /* before flash page section */ - extern uint16_t _vtarget; /* LSB = 1V / 1000 */ - extern uint16_t _xclk; /* LSB = 1KHz */ - extern uint8_t _jtag_vpow; /* 1:VPOW_ON */ - extern uint8_t _jtag_hvctrl; /* 1:ENABLE */ - extern uint8_t _jtag_unlock; /* 1:ENABLE */ - extern uint8_t _jtag_arch; /* 5:ARCH */ - extern uint8_t _jtag_sess; /* ?:SESSION */ - extern uint8_t _jtag_conn; /* 8:CONN_UPDI */ - - /* UPDI parameter */ - extern Command_Table_t Command_Table; - extern uint8_t _sib[32]; - - /* TPI parameter */ - extern uint8_t _tpi_setmode; - extern uint8_t _tpi_cmd_addr; - extern uint8_t _tpi_csr_addr; - extern uint8_t _tpi_chunks; - - } /* NAMELESS */; -}; - -namespace JTAG { - bool dap_command_check (void); - void jtag_scope_branch (void); -}; - -namespace NVM::V0 { bool setup (void); }; -namespace NVM::V1 { bool setup (void); }; -namespace NVM::V2 { bool setup (void); }; -namespace NVM::V3 { bool setup (void); }; -namespace NVM::V4 { bool setup (void); }; -namespace NVM::V5 { bool setup (void); }; - -namespace PDI { - /* STUB */ -} - -namespace SYS { - void setup (void); - void LED_HeartBeat (void); - void LED_Flash (void); - void LED_Blink (void); - void LED_Fast (void); - void reset_enter (void); - void reset_leave (void); - void reboot (void); - bool is_boundary_flash_page (uint32_t _dwAddr); - uint16_t get_vdd (void); -}; - -namespace Timeout { - void setup (void); - void start (uint16_t _ms); - void stop (void) __attribute__((used, naked, noinline)); - void extend (uint16_t _ms); - size_t command (size_t (*func_p)(void), uint16_t _ms = 800); -}; - -namespace TPI { - size_t connect (void); - size_t disconnect (void); - size_t erase_memory (void); - size_t read_memory (void); - size_t write_memory (void); - size_t jtag_scope_tpi (void); -}; - -namespace UPDI { - bool send_break (void); - bool recv_bytes (uint8_t* _data, size_t _len); - bool recv (void); - bool send_bytes (const uint8_t* _data, size_t _len); - bool send (const uint8_t _data); - bool recv_byte (uint32_t _dwAddr); - bool send_byte (uint32_t _dwAddr, uint8_t _data); - bool is_ack (void); - bool recv_bytes_block (uint32_t _dwAddr, size_t _wLength); - bool recv_words_block (uint32_t _dwAddr, size_t _wLength); - bool send_bytes_block (uint32_t _dwAddr, size_t _wLength); - bool send_words_block (uint32_t _dwAddr, size_t _wLength); - bool send_bytes_data (uint32_t _dwAddr, uint8_t* _data, size_t _wLength); - bool send_bytes_block_slow (uint32_t _dwAddr, size_t _wLength); - bool nvm_ctrl (uint8_t _nvmcmd); - bool chip_erase (void); - bool write_userrow (void); - size_t read_dummy (void); - size_t connect (void); - size_t disconnect (void); - size_t enter_progmode (void); - size_t jtag_scope_updi (void); -}; - -namespace USART { - void setup (void); - uint16_t calk_baud_khz (uint16_t _khz); - void drain (size_t _delay = 0); - void disable_vcp (void); - void change_vcp (void); - void change_updi (void); - void change_tpi (void); - void set_line_encoding (LineEncoding_t* _buff); - void set_line_state (uint8_t _line_state); - LineEncoding_t& get_line_encoding (void); - LineState_t get_line_state (void); -}; - -namespace USB { - bool is_ep_setup (void); - bool is_not_dap (void); - void ep_dpi_pending (void); - void ep_cdo_pending (void); - void complete_dap_out (void); - void cci_break_count (void); - void read_drop (void); - void vcp_receiver (void); - void vcp_receiver_9bit (void); - void vcp_transceiver (void); - void vcp_transceiver_9bit (void); - void setup_device (bool _force = false); - void handling_bus_events (void); - void handling_control_transactions (void); -}; - -// end of header +/** + * @file prototype.h + * @author askn (K.Sato) multix.jp + * @brief UPDI4AVR-USB is a program writer for the AVR series, which are UPDI/TPI + * type devices that connect via USB 2.0 Full-Speed. It also has VCP-UART + * transfer function. It only works when installed on the AVR-DU series. + * Recognized by standard drivers for Windows/macos/Linux and AVRDUDE>=7.2. + * @version 1.32.40+ + * @date 2024-07-10 + * @copyright Copyright (c) 2024 askn37 at github.com + * @link Product Potal : https://askn37.github.io/ + * MIT License : https://askn37.github.io/LICENSE.html + */ + +#pragma once +#include +#include +#include +#include +#include "configuration.h" + +// #undef DEBUG +// #define DEBUG 3 + +#ifndef F_CPU + #define F_CPU 20000000L +#endif +#ifndef CONSOLE_BAUD + #define CONSOLE_BAUD 500000L +#endif + +#undef Serial +#define D0PRINTF(FMT, ...) +#define D1PRINTF(FMT, ...) +#define D2PRINTF(FMT, ...) +#define D3PRINTF(FMT, ...) +#define D0PRINTHEX(P,L) +#define D1PRINTHEX(P,L) +#define D2PRINTHEX(P,L) +#define D3PRINTHEX(P,L) +#if defined(DEBUG) + #include "peripheral.h" /* from Micro_API : import Serial (Debug) */ + #define Serial Serial1C /* PIN_PD6:TxD, PIN_PD7:RxD */ + #undef D0PRINTF + #define D0PRINTF(FMT, ...) Serial.printf(F(FMT), ##__VA_ARGS__) + #undef D0PRINTHEX + #define D0PRINTHEX(P,L) Serial.printHex((P),(L),':').ln() + #if (DEBUG >= 1) + #undef D1PRINTF + #define D1PRINTF(FMT, ...) Serial.printf(F(FMT), ##__VA_ARGS__) + #undef D1PRINTHEX + #define D1PRINTHEX(P,L) Serial.printHex((P),(L),':').ln() + #endif + #if (DEBUG >= 2) + #undef D2PRINTF + #define D2PRINTF(FMT, ...) Serial.printf(F(FMT), ##__VA_ARGS__) + #undef D2PRINTHEX + #define D2PRINTHEX(P,L) Serial.printHex((P),(L),':').ln() + #endif + #if (DEBUG >= 3) + #undef D3PRINTF + #define D3PRINTF(FMT, ...) Serial.printf(F(FMT), ##__VA_ARGS__) + #undef D3PRINTHEX + #define D3PRINTHEX(P,L) Serial.printHex((P),(L),':').ln() + #endif +#endif + +#define PACKED __attribute__((packed)) +#define WEAK __attribute__((weak)) +#define RODATA __attribute__((__progmem__)) +#define NOINIT __attribute__((section(".noinit"))) + +#define USB_EP_SIZE_gc(x) ((x <= 8 ) ? USB_BUFSIZE_DEFAULT_BUF8_gc :\ + (x <= 16) ? USB_BUFSIZE_DEFAULT_BUF16_gc:\ + (x <= 32) ? USB_BUFSIZE_DEFAULT_BUF32_gc:\ + USB_BUFSIZE_DEFAULT_BUF64_gc) +#define USB_EP_ID_SWAP(x) __builtin_avr_swap(x) +#define USB_EP(EPFIFO) (*(USB_EP_t *)(((uint16_t)&EP_TABLE.EP) + (EPFIFO))) +#define USB_EP_STATUS_CLR(EPFIFO) _SFR_MEM8(&USB0_STATUS0_OUTCLR + ((EPFIFO) >> 2)) +#define USB_EP_STATUS_SET(EPFIFO) _SFR_MEM8(&USB0_STATUS0_OUTSET + ((EPFIFO) >> 2)) + +#define USB_ENDPOINTS_MAX 4 +#define USB_CCI_INTERVAL 4 + +/* In the internal representation of an endpoint number, */ +/* the high and low nibbles are reversed from the representation on the USB device. */ +#define USB_EP_REQ (0x00) +#define USB_EP_RES (0x08) +#define USB_EP_DPI (0x18) /* #0 DAP IN */ +#define USB_EP_DPO (0x20) /* #0 DAP OUT */ +#define USB_EP_CCI (0x28) /* #1 CCI Communications-Control IN */ +#define USB_EP_CDO (0x30) /* #2 CDO Communications-Data OUT */ +#define USB_EP_CDI (0x38) /* #2 CDI Communications-Data IN */ + +#define EP_REQ USB_EP(USB_EP_REQ) +#define EP_RES USB_EP(USB_EP_RES) +#define EP_DPI USB_EP(USB_EP_DPI) +#define EP_DPO USB_EP(USB_EP_DPO) +#define EP_CCI USB_EP(USB_EP_CCI) +#define EP_CDI USB_EP(USB_EP_CDI) +#define EP_CDO USB_EP(USB_EP_CDO) + +#define GPCONF GPR_GPR0 + #define GPCONF_USB_bp 0 /* USB interface is active */ + #define GPCONF_USB_bm (1 << 0) + #define GPCONF_VCP_bp 1 /* VCP enabled */ + #define GPCONF_VCP_bm (1 << 1) + #define GPCONF_DBL_bp 2 /* VCP-RxD double buffer selection */ + #define GPCONF_DBL_bm (1 << 2) + #define GPCONF_BRK_bp 3 /* VCP-TxD BREAK transmission */ + #define GPCONF_BRK_bm (1 << 3) + #define GPCONF_OPN_bp 4 /* VCP-RxD open */ + #define GPCONF_OPN_bm (1 << 4) + #define GPCONF_RIS_bp 6 /* SW0 release event */ + #define GPCONF_RIS_bm (1 << 6) + #define GPCONF_FAL_bp 7 /* SW0 push event */ + #define GPCONF_FAL_bm (1 << 7) + +#define PGCONF GPR_GPR1 + #define PGCONF_UPDI_bp 0 /* UPDI active (SIB read successful) or TPI active */ + #define PGCONF_UPDI_bm (1 << 0) + #define PGCONF_PROG_bp 1 /* Programmable (memory access unlocked) */ + #define PGCONF_PROG_bm (1 << 1) + #define PGCONF_ERSE_bp 2 /* Chip erase completed */ + #define PGCONF_ERSE_bm (1 << 2) + #define PGCONF_FAIL_bp 7 /* Initialization failed (timeout) */ + #define PGCONF_FAIL_bm (1 << 7) + +/* The last received data and state of UPDI are stored in the GP Register. */ +#define RXSTAT GPR_GPR2 +#define RXDATA GPR_GPR3 + +/* + * Global struct + */ + +typedef struct { + uint32_t dwDTERate; + uint8_t bCharFormat; /* 0,2 */ + uint8_t bParityType; /* 0,1,2 */ + uint8_t bDataBits; /* 5,6,7,8,16(9) */ +} PACKED LineEncoding_t; + +typedef struct { + union { + uint8_t bValue; + struct { + bool bStateDTR : 1; /* DTR -> DSR or CD */ + bool bStateRTS : 1; /* RTS -> CTS */ + }; + }; +} PACKED LineState_t; + +typedef struct { /* DTE <-> DCE */ + union { + uint8_t bValue; + struct { + bool bRxCarrier : 1; /* DCD <- CD */ + bool bTxCarrier : 1; /* DSR <- DTR */ + bool bBreak : 1; /* not used */ + bool bRingSignal : 1; /* RI <- RI */ + bool bFraming : 1; /* Frame Error */ + bool bParity : 1; /* Parity Error */ + bool bOverRun : 1; /* Overrun Error */ + bool reserve : 1; + }; + }; + uint8_t reserved; +} PACKED SerialState_t; + +typedef struct { + union { + uint8_t rawData[540]; + struct { + uint8_t token; /* offset 0 */ + uint8_t reserve1; + uint16_t sequence; + uint8_t scope; + uint8_t cmd; + union { + uint8_t data[534]; + struct { /* CMD=21,23:CMD3_READ,WRITE_MEMORY */ + uint8_t reserve2; + uint8_t bMType; + uint32_t dwAddr; + uint32_t dwLength; + uint8_t reserve3; + uint8_t memData[513]; /* WRITE_MEMORY */ + }; + struct { /* CMD=1,2:CMD3_GET,SET_PARAMETER */ + uint8_t reserve4; + uint8_t section; + uint8_t index; + uint8_t length; + union { + uint16_t wValue; + uint8_t setData[255]; /* SET_PARAMETER */ + }; + }; + struct { /* CMD3_ERASE_MEMORY */ + uint8_t reserve5; + uint8_t bEType; + uint32_t dwPageAddr; + }; + union { + struct { /* XPRG_SET_PARAM */ + uint8_t bType; + uint8_t bValue; + }; + struct { /* XPRG_CMD_READ_MEM */ + uint8_t bMType; + uint32_t dwAddr; + uint16_t wLength; + } read; + struct { /* XPRG_CMD_WRITE_MEM */ + uint8_t bMType; + uint8_t bPmode; + uint32_t dwAddr; + uint16_t wLength; + uint8_t memData[64 + 8]; /* ATTiny40=64, Other=16 */ + } write; + } tpi; + }; + } out; + struct { + uint8_t reserve6; /* offset -1 */ + uint8_t token; /* offset 0 */ + uint16_t sequence; + uint8_t scope; + union { + uint16_t res; + struct { + uint8_t tpi_cmd; + uint8_t tpi_res; + }; + }; + union { + uint8_t data[513]; /* READ_MEMORY */ + uint8_t bStatus; + uint16_t wValue; + uint32_t dwValue; + }; + } in; + }; +} PACKED JTAG_Packet_t; + +typedef struct { + union { + uint16_t wRequestType; + struct { + uint8_t bmRequestType; + uint8_t bRequest; + }; + }; + uint16_t wValue; + uint16_t wIndex; + uint16_t wLength; +} PACKED Setup_Packet_t; + +typedef struct { + Setup_Packet_t req_data; + union { + uint8_t res_data[256 + 16]; + LineEncoding_t res_encoding; + struct { + union { + uint8_t cci_data[16]; + struct { + Setup_Packet_t cci_header; + uint16_t cci_wValue; + }; + }; + uint8_t dap_data[64]; /* DAP IN/OUT */ + uint8_t cdo_data[64]; + uint8_t cdi_data[128]; /* 64x2 Double buffer */ + }; + }; +} PACKED EP_DATA_t; + +typedef struct { + register8_t FIFO[USB_ENDPOINTS_MAX * 2]; /* FIFO Index Table */ + USB_EP_PAIR_t EP[USB_ENDPOINTS_MAX]; /* USB Device Controller EP */ + _WORDREGISTER(FRAMENUM); /* FRAMENUM count */ +} PACKED EP_TABLE_t; + +/* Mega device descriptor */ +typedef struct { + uint16_t flash_page_size; // in bytes + uint32_t flash_size; // in bytes + uint32_t dummy1; // always 0 + uint32_t boot_address; // maximal (BOOTSZ = 3) bootloader address, in 16-bit words + uint16_t sram_offset; // pointing behind IO registers + uint16_t eeprom_size; + uint8_t eeprom_page_size; + uint8_t ocd_revision; // see XML; basically: all other megaAVR devices: 3 + uint8_t always_one; // always = 1 + uint8_t allow_full_page_bitstream; // old AVRs, see XML + uint16_t dummy2; // always 0 + uint8_t idr_address; // IDR, aka. OCDR + uint8_t eearh_address; // EEPROM access + uint8_t eearl_address; + uint8_t eecr_address; + uint8_t eedr_address; + uint8_t spmcr_address; + uint8_t osccal_address; +} PACKED Mega_Device_Desc_t; + +/* Xmega device descriptor */ +typedef struct { + uint32_t nvm_app_offset; // NVM offset for application flash + uint32_t nvm_boot_offset; // NVM offset for boot flash + uint32_t nvm_eeprom_offset; // NVM offset for EEPROM + uint32_t nvm_fuse_offset; // NVM offset for fuses + uint32_t nvm_lock_offset; // NVM offset for lock bits + uint32_t nvm_user_sig_offset; // NVM offset for user signature row + uint32_t nvm_prod_sig_offset; // NVM offset for production sign. row + uint32_t nvm_data_offset; // NVM offset for data memory (SRAM + IO) + uint32_t app_size; // size of application flash + uint16_t boot_size; // size of boot flash + uint16_t flash_page_size; // flash page size + uint16_t eeprom_size; // size of EEPROM + uint8_t eeprom_page_size; // EEPROM page size + uint16_t nvm_base_addr; // IO space base address of NVM controller + uint16_t mcu_base_addr; // IO space base address of MCU control +} PACKED Xmega_Device_Desc_t; + +/* UPDI device descriptor */ +typedef struct { + uint16_t prog_base; + uint8_t flash_page_size; + uint8_t eeprom_page_size; + uint16_t nvm_base_addr; + uint16_t ocd_base_addr; + // Configuration below, except for "Extended memory support", is only used by kits with + // embedded debuggers (XPlained, Curiosity, ...). + uint16_t default_min_div1_voltage; // Default minimum voltage for 32M => 4.5V -> 4500 + uint16_t default_min_div2_voltage; // Default minimum voltage for 16M => 2.7V -> 2700 + uint16_t default_min_div4_voltage; // Default minimum voltage for 8M => 2.2V -> 2200 + uint16_t default_min_div8_voltage; // Default minimum voltage for 4M => 1.5V -> 1500 + uint16_t pdi_pad_fmax; // 750 + uint32_t flash_bytes; // Flash size in bytes + uint16_t eeprom_bytes; // EEPROM size in bytes + uint16_t user_sig_bytes; // UserSignture size in bytes + uint8_t fuses_bytes; // Fuses size in bytes + uint8_t syscfg_offset; // Offset of SYSCFG0 within FUSE space + uint8_t syscfg_write_mask_and; // AND mask to apply to SYSCFG0 when writing + uint8_t syscfg_write_mask_or; // OR mask to apply to SYSCFG0 when writing + uint8_t syscfg_erase_mask_and; // AND mask to apply to SYSCFG0 after erase + uint8_t syscfg_erase_mask_or; // OR mask to apply to SYSCFG0 after erase + uint16_t eeprom_base; // Base address for EEPROM memory + uint16_t user_sig_base; // Base address for UserSignature memory + uint16_t signature_base; // Base address for Signature memory + uint16_t fuses_base; // Base address for Fuses memory + uint16_t lockbits_base; // Base address for Lockbits memory + uint16_t device_id; // Two last bytes of the device ID + // Extended memory support. Needed for flash >= 64kb + uint8_t prog_base_msb; // Extends prog_base, used in 24-bit mode + uint8_t flash_page_size_msb; // Extends flash_page_size, used in 24-bit mode + uint8_t address_mode; // 0x00 = 16-bit mode, 0x01 = 24-bit mode + uint8_t hvupdi_variant; // Indicates the target UPDI HV implementation +} PACKED UPDI_Device_Desc_t; + +typedef struct { + union { + Mega_Device_Desc_t Mega; + Xmega_Device_Desc_t Xmega; + UPDI_Device_Desc_t UPDI; + }; +} PACKED Device_Desc_t; + +typedef struct { + size_t (*prog_init)(void); + size_t (*read_memory)(void); + size_t (*erase_memory)(void); + size_t (*write_memory)(void); +} PACKED Command_Table_t; + +typedef struct { + uint16_t wVidPid[2]; + uint32_t dwSerialNumber; +} PACKED User_EEP_t; + +/* + * Global workspace + */ + +extern "C" { + namespace /* NAMELESS */ { + + /* SYSTEM */ + extern jmp_buf TIMEOUT_CONTEXT; + extern uint8_t _led_mode; + + /* USB */ + extern EP_TABLE_t EP_TABLE; + extern EP_DATA_t EP_MEM; + extern Device_Desc_t Device_Descriptor; + + /* Vertual Communication Port */ + #if defined(CONFIG_VCP_9BIT_SUPPORT) + extern void (*usart_receiver)(void); + extern void (*usart_transmitter)(void); + #endif + extern LineEncoding_t _set_line_encoding; + extern LineState_t _set_line_state; + extern uint16_t _send_break; + extern volatile uint8_t _send_count; + extern uint8_t _recv_count; + extern uint8_t _set_config; + extern volatile uint8_t _sof_count; + extern uint8_t _set_serial_state; + + /* JTAG packet payload */ + extern JTAG_Packet_t packet; + extern size_t _packet_length; + extern uint8_t _packet_fragment; + extern uint8_t _packet_chunks; + extern uint8_t _packet_endfrag; + + /* JTAG parameter */ + extern uint32_t _before_page; /* before flash page section */ + extern uint16_t _vtarget; /* LSB = 1V / 1000 */ + extern uint16_t _xclk; /* LSB = 1KHz */ + extern uint8_t _jtag_vpow; /* 1:VPOW_ON */ + extern uint8_t _jtag_hvctrl; /* 1:ENABLE */ + extern uint8_t _jtag_unlock; /* 1:ENABLE */ + extern uint8_t _jtag_arch; /* 5:ARCH */ + extern uint8_t _jtag_sess; /* ?:SESSION */ + extern uint8_t _jtag_conn; /* 8:CONN_UPDI */ + + /* UPDI parameter */ + extern Command_Table_t Command_Table; + extern uint8_t _sib[32]; + + /* TPI parameter */ + extern uint8_t _tpi_setmode; + extern uint8_t _tpi_cmd_addr; + extern uint8_t _tpi_csr_addr; + extern uint8_t _tpi_chunks; + + } /* NAMELESS */; +}; + +namespace JTAG { + bool dap_command_check (void); + void jtag_scope_branch (void); +}; + +namespace NVM::V0 { bool setup (void); }; +namespace NVM::V1 { bool setup (void); }; +namespace NVM::V2 { bool setup (void); }; +namespace NVM::V3 { bool setup (void); }; +namespace NVM::V4 { bool setup (void); }; +namespace NVM::V5 { bool setup (void); }; + +namespace PDI { + /* STUB */ +} + +namespace SYS { + void setup (void); + void LED_HeartBeat (void); + void LED_Flash (void); + void LED_Blink (void); + void LED_Fast (void); + void reset_enter (void); + void reset_leave (void); + void reboot (void); + bool is_boundary_flash_page (uint32_t _dwAddr); + uint16_t get_vdd (void); +}; + +namespace Timeout { + void setup (void); + void start (uint16_t _ms); + void stop (void) __attribute__((used, naked, noinline)); + void extend (uint16_t _ms); + size_t command (size_t (*func_p)(void), uint16_t _ms = 800); +}; + +namespace TPI { + size_t connect (void); + size_t disconnect (void); + size_t erase_memory (void); + size_t read_memory (void); + size_t write_memory (void); + size_t jtag_scope_tpi (void); +}; + +namespace UPDI { + bool send_break (void); + bool recv_bytes (uint8_t* _data, size_t _len); + bool recv (void); + bool send_bytes (const uint8_t* _data, size_t _len); + bool send (const uint8_t _data); + bool recv_byte (uint32_t _dwAddr); + bool send_byte (uint32_t _dwAddr, uint8_t _data); + bool is_ack (void); + bool recv_bytes_block (uint32_t _dwAddr, size_t _wLength); + bool recv_words_block (uint32_t _dwAddr, size_t _wLength); + bool send_bytes_block (uint32_t _dwAddr, size_t _wLength); + bool send_words_block (uint32_t _dwAddr, size_t _wLength); + bool send_bytes_data (uint32_t _dwAddr, uint8_t* _data, size_t _wLength); + bool send_bytes_block_slow (uint32_t _dwAddr, size_t _wLength); + bool nvm_ctrl (uint8_t _nvmcmd); + bool chip_erase (void); + bool write_userrow (void); + size_t read_dummy (void); + size_t connect (void); + size_t disconnect (void); + size_t enter_progmode (void); + size_t jtag_scope_updi (void); +}; + +namespace USART { + void setup (void); + uint16_t calk_baud_khz (uint16_t _khz); + void drain (size_t _delay = 0); + void disable_vcp (void); + void change_vcp (void); + void change_updi (void); + void change_tpi (void); + void set_line_encoding (LineEncoding_t* _buff); + void set_line_state (uint8_t _line_state); + LineEncoding_t& get_line_encoding (void); + LineState_t get_line_state (void); +}; + +namespace USB { + bool is_ep_setup (void); + bool is_not_dap (void); + void ep_dpi_pending (void); + void ep_cdo_pending (void); + void complete_dap_out (void); + void cci_break_count (void); + void read_drop (void); + void vcp_receiver (void); + void vcp_receiver_9bit (void); + void vcp_transceiver (void); + void vcp_transceiver_9bit (void); + void setup_device (bool _force = false); + void handling_bus_events (void); + void handling_control_transactions (void); +}; + +// end of header diff --git a/src/usb.cpp b/src/usb.cpp index a856d2b..6f219dd 100644 --- a/src/usb.cpp +++ b/src/usb.cpp @@ -532,10 +532,11 @@ namespace USB { else if (bRequest == 0x01) { /* CLEAR_FEATURE */ D1PRINTF(" CF=%02X:%02X\r\n", EP_MEM.req_data.wValue, EP_MEM.req_data.wIndex); if (0 == (uint8_t)EP_MEM.req_data.wValue) { - /* Assumes that an Endpoint number is passed. */ - uint8_t _EP = EP_MEM.req_data.wIndex; + /* Expects an endpoint number to be passed in. Swaps the high and low */ + /* nibbles to make it a representation of the USB controller. */ + uint8_t _EP = USB_EP_ID_SWAP(EP_MEM.req_data.wIndex); loop_until_bit_is_clear(USB0_INTFLAGSB, USB_RMWBUSY_bp); - USB_EP_STATUS_CLR(_EP) = USB_STALLED_bm | USB_TOGGLE_bm; + USB_EP_STATUS_CLR(_EP) = USB_STALLED_bm | USB_BUSNAK_bm | USB_TOGGLE_bm; } EP_RES.CNT = 0; }