diff options
| author | Tim <cpldcpu@gmail.com> | 2015-07-26 20:28:13 +0200 | 
|---|---|---|
| committer | Tim <cpldcpu@gmail.com> | 2015-07-26 20:28:13 +0200 | 
| commit | 3e01026caa72cc1cf25bddf3158dea4f439dd169 (patch) | |
| tree | ea384817b369de8dd66e1fc19b6c0b369415e006 | |
| parent | c2c3125d000b34b7b828e364b43216069aea5878 (diff) | |
| parent | 4362370cd98492d761a3e19e84da007163378464 (diff) | |
| download | micronucleus-3e01026caa72cc1cf25bddf3158dea4f439dd169.tar.gz micronucleus-3e01026caa72cc1cf25bddf3158dea4f439dd169.tar.bz2 micronucleus-3e01026caa72cc1cf25bddf3158dea4f439dd169.zip | |
Merge pull request #66 from micronucleus/Testing-V2.1v2.0b
Pull request for V2.1
| -rw-r--r-- | Readme.txt | 26 | ||||
| -rw-r--r-- | firmware/configuration/Nanite841/Makefile.inc | 2 | ||||
| -rw-r--r-- | firmware/configuration/t167_default/bootloaderconfig.h | 2 | ||||
| -rw-r--r-- | firmware/configuration/t841_default/Makefile.inc | 2 | ||||
| -rw-r--r-- | firmware/configuration/t84_default/Makefile.inc | 2 | ||||
| -rw-r--r-- | firmware/main.c | 23 | ||||
| -rw-r--r-- | firmware/releases/Nanite841.hex | 205 | ||||
| -rw-r--r-- | firmware/releases/t167_default.hex | 80 | ||||
| -rw-r--r-- | firmware/releases/t841_default.hex | 202 | ||||
| -rw-r--r-- | firmware/releases/t84_default.hex | 196 | ||||
| -rw-r--r-- | firmware/releases/t85_aggressive.hex | 78 | ||||
| -rw-r--r-- | firmware/releases/t85_default.hex | 78 | ||||
| -rw-r--r-- | firmware/usbconfig.h | 13 | ||||
| -rw-r--r-- | firmware/usbdrv/usbdrvasm.S | 47 | 
14 files changed, 488 insertions, 468 deletions
| @@ -1,4 +1,4 @@ -Micronucleus V2.0b +Micronucleus V2.1  ==================  Micronucleus is a bootloader designed for AVR ATtiny microcontrollers with a minimal usb interface, cross platform libusb-based program upload tool, and a strong emphasis on bootloader compactness. To the authors knowledge this is, by far, the smallest USB bootloader for AVR ATtiny @@ -31,7 +31,6 @@ Please invoke the command line tool with "micronucleus -help" for a list of avai  The bootloader resides in the same memory as the user program, since the ATtiny series does not support a protected bootloader section. Therefore, special care has to be taken not to overwrite the bootloader if the user program uses the self programming features. The bootloader will patch itself into the reset vector of the user program. No other interrupt vectors are changed. -  Compiling  ========= @@ -43,12 +42,12 @@ To allow maximum flexibility, micronucleus supports a configuration system. To c  Currently, the following configurations are included and tested. Please check the subfolders /firmware/configurations/ for details. Hex files can be found in /releases. -t84_default     -   ATtiny84A default configuration     -   1532 bytes -t841_default    -   ATtiny841 default configuration     -   1584 bytes -t85_default     -   ATtiny85  default configuration     -   1606 bytes -t85_aggressive  -   ATtiny85  smaller size - critical   -   1414 bytes -t167_default    -   ATtiny167 default (uses xtal)       -   1390 bytes -Nanite841       -   Nanite841 firmware                  -   1608 bytes +t84_default     -   ATtiny84A default configuration     -   1556 bytes +t841_default    -   ATtiny841 default configuration     -   1608 bytes +t85_default     -   ATtiny85  default configuration     -   1610 bytes +t85_aggressive  -   ATtiny85  smaller size - critical   -   1418 bytes +t167_default    -   ATtiny167 default (uses xtal)       -   1414 bytes +Nanite841       -   Nanite841 firmware                  -   1632 bytes  You can add your own configuration by adding a new folder to /firmware/configurations/. The folder has to contain a customized "Makefile.inc" and "bootloaderconfig.h". Feel free to supply a pull request if you added and tested a previously unsupported device. @@ -93,15 +92,20 @@ In addition, we'd like you to consider these points if you intend to sell produc  Changes   ======= -This pull request documents changes leading to V2.0: https://github.com/micronucleus/micronucleus/pull/43   • v2.0b  June 6th, 2015 - +    This pull request documents changes leading to V2.0: https://github.com/micronucleus/micronucleus/pull/43 +  + • v2.1  July 26th, 2015 +    This pull request documents changes leading to V2.1: https://github.com/micronucleus/micronucleus/pull/66 +    - Fixed "unknown USB device" issue when devices with <16MHz CPU clock were connected to a USB3.0 port. +    - Fixed one bug that could lead to a deadlock if no USB was connected while the bootloader was active and noise was injected into the floating D+ input. +      Credits  =======  Firmware: - • Micronucleus V2.0             (c) 2015 Tim Bo"scke - cpldcpu@gmail.com + • Micronucleus V2.1             (c) 2015 Tim Bo"scke - cpldcpu@gmail.com                                   (c) 2014 Shay Green   • Original Micronucleus         (c) 2012 Jenna Fox   • Based on USBaspLoader-tiny85  (c) 2012 Louis Beaudoin diff --git a/firmware/configuration/Nanite841/Makefile.inc b/firmware/configuration/Nanite841/Makefile.inc index e147248..79e84a3 100644 --- a/firmware/configuration/Nanite841/Makefile.inc +++ b/firmware/configuration/Nanite841/Makefile.inc @@ -15,7 +15,7 @@ DEVICE = attiny841  # - for the size of your device (8kb = 1024 * 8 = 8192) subtract above value 2124... = 6068  # - How many pages in is that? 6068 / 64 (tiny85 page size in bytes) = 94.8125  # - round that down to 94 - our new bootloader address is 94 * 64 = 6016, in hex = 1780 -BOOTLOADER_ADDRESS = 1980 +BOOTLOADER_ADDRESS = 1940  FUSEOPT = -U lfuse:w:0xe2:m -U hfuse:w:0xdd:m -U efuse:w:0xfe:m  FUSEOPT_DISABLERESET =  # TODO diff --git a/firmware/configuration/t167_default/bootloaderconfig.h b/firmware/configuration/t167_default/bootloaderconfig.h index 01890a7..106fe93 100644 --- a/firmware/configuration/t167_default/bootloaderconfig.h +++ b/firmware/configuration/t167_default/bootloaderconfig.h @@ -4,7 +4,7 @@   * according to the hardware.   *    * Controller type: ATtiny 167 - 16 MHz with crystal - * Configuration:   Standard configuration - Follows Digispark Pro defaults + * Configuration:   Standard configuration - Follows Digispark Pro defaults. Needs 16Mhz XTAL.   *       USB D- :   PB3   *       USB D+ :   PB6   *       Entry  :   Always diff --git a/firmware/configuration/t841_default/Makefile.inc b/firmware/configuration/t841_default/Makefile.inc index 9601a69..e147248 100644 --- a/firmware/configuration/t841_default/Makefile.inc +++ b/firmware/configuration/t841_default/Makefile.inc @@ -15,7 +15,7 @@ DEVICE = attiny841  # - for the size of your device (8kb = 1024 * 8 = 8192) subtract above value 2124... = 6068  # - How many pages in is that? 6068 / 64 (tiny85 page size in bytes) = 94.8125  # - round that down to 94 - our new bootloader address is 94 * 64 = 6016, in hex = 1780 -BOOTLOADER_ADDRESS = 19C0 +BOOTLOADER_ADDRESS = 1980  FUSEOPT = -U lfuse:w:0xe2:m -U hfuse:w:0xdd:m -U efuse:w:0xfe:m  FUSEOPT_DISABLERESET =  # TODO diff --git a/firmware/configuration/t84_default/Makefile.inc b/firmware/configuration/t84_default/Makefile.inc index 5213b19..5309f79 100644 --- a/firmware/configuration/t84_default/Makefile.inc +++ b/firmware/configuration/t84_default/Makefile.inc @@ -15,7 +15,7 @@ DEVICE = attiny84  # - for the size of your device (8kb = 1024 * 8 = 8192) subtract above value 2124... = 6068  # - How many pages in is that? 6068 / 64 (tiny85 page size in bytes) = 94.8125  # - round that down to 94 - our new bootloader address is 94 * 64 = 6016, in hex = 1780 -BOOTLOADER_ADDRESS = 1A00 +BOOTLOADER_ADDRESS = 1980  FUSEOPT = -U lfuse:w:0xe2:m -U hfuse:w:0xdd:m -U efuse:w:0xfe:m  FUSEOPT_DISABLERESET =  # TODO diff --git a/firmware/main.c b/firmware/main.c index fdf22e4..80b5d3a 100644 --- a/firmware/main.c +++ b/firmware/main.c @@ -1,7 +1,7 @@  /*  - * Project: Micronucleus -  v2.0 + * Project: Micronucleus -  v2.1   * - * Micronucleus V2.0             (c) 2014 Tim Bo"scke - cpldcpu@gmail.com + * Micronucleus V2.1             (c) 2015 Tim Bo"scke - cpldcpu@gmail.com   *                               (c) 2014 Shay Green   * Original Micronucleus         (c) 2012 Jenna Fox   * @@ -12,7 +12,7 @@   */  #define MICRONUCLEUS_VERSION_MAJOR 2 -#define MICRONUCLEUS_VERSION_MINOR 0 +#define MICRONUCLEUS_VERSION_MINOR 1  #include <avr/io.h>  #include <avr/pgmspace.h> @@ -232,7 +232,7 @@ int main(void) {    uint8_t osccal_tmp;    bootLoaderInit(); - +      /* save default OSCCAL calibration  */  #if OSCCAL_RESTORE_DEFAULT    osccal_default = OSCCAL; @@ -266,10 +266,10 @@ int main(void) {        // adjust fastctr for 5ms timeout        uint16_t fastctr=(uint16_t)(F_CPU/(1000.0f*15.0f/5.0f)); -      uint8_t resetctr=20; +      uint8_t resetctr=100;        do {         -        if ((USBIN & USBMASK) !=0) resetctr=20; +        if ((USBIN & USBMASK) !=0) resetctr=100;          if (!--resetctr) { // reset encountered             usbNewDeviceAddr = 0;   // bits from the reset handling of usbpoll() @@ -280,7 +280,8 @@ int main(void) {          }          if (USB_INTR_PENDING & (1<<USB_INTR_PENDING_BIT)) { -          USB_INTR_VECTOR();  // clears INT_PENDING (See se0: in asmcommon.inc) +          USB_INTR_VECTOR();   +          USB_INTR_PENDING = 1<<USB_INTR_PENDING_BIT;  // Clear int pending, in case timeout occured during SYNC                                 idlePolls.b[1]=0; // reset idle polls when we get usb traffic           break;          } @@ -335,8 +336,8 @@ int main(void) {        LED_MACRO( idlePolls.b[0] );            // Test whether another interrupt occurred during the processing of USBpoll and commands. -       // If yes, we missed a data packet on the bus. Wait until the bus was idle for 10µs to  -       // allow synchronising to the next incoming packet. +       // If yes, we missed a data packet on the bus. Wait until the bus was idle for 8.8µs to  +       // allow synchronising to the next incoming packet.          if (USB_INTR_PENDING & (1<<USB_INTR_PENDING_BIT))  // Usbpoll() collided with data packet         {         @@ -345,12 +346,12 @@ int main(void) {            // loop takes 5 cycles            asm volatile(                  "         ldi  %0,%1 \n\t"         -          "loop%=:  sbic %2,%3  \n\t"         +          "loop%=:  sbis %2,%3  \n\t"                    "         ldi  %0,%1  \n\t"            "         subi %0,1   \n\t"                    "         brne loop%= \n\t"               : "=&d" (ctr) -          :  "M" ((uint8_t)(10.0f*(F_CPU/1.0e6f)/5.0f+0.5)), "I" (_SFR_IO_ADDR(USBIN)), "M" (USB_CFG_DPLUS_BIT) +          :  "M" ((uint8_t)(8.8f*(F_CPU/1.0e6f)/5.0f+0.5)), "I" (_SFR_IO_ADDR(USBIN)), "M" (USB_CFG_DMINUS_BIT)            );                  USB_INTR_PENDING = 1<<USB_INTR_PENDING_BIT;                            }                         diff --git a/firmware/releases/Nanite841.hex b/firmware/releases/Nanite841.hex index 8413aba..b77b02f 100644 --- a/firmware/releases/Nanite841.hex +++ b/firmware/releases/Nanite841.hex @@ -1,103 +1,104 @@ -:1019800017C0197A10859315090212000101008011 -:101990003209040000000000000012011001FF00E5 -:1019A0000008D016530700020000000104030904D8 -:1019B00011241FBECFEFD2E0CDBFDEBF21E0A0E0FB -:1019C000B1E001C01D92AC32B207E1F78FC1A82F80 -:1019D000B92F80E090E041E050EA609530E009C026 -:1019E0002D9182279795879510F084279527305E53 -:1019F000C8F36F5FA8F30895EADF8D939D93089570 -:101A0000CF93CFB7CF93C395B19BE9F7B19B09C0F3 -:101A1000B19B07C0B19B05C0B19B03C0B19B01C086 -:101A2000A7C0DF93C0910E01DD27CA5EDE4FB19BD8 -:101A300002C0DF91EBCF2F930F931F9306B32FEFCD -:101A400001FB20F94F933F9316B34FEF012701FBA2 -:101A500021F93BE031C04E7F012F16B3216028C031 -:101A6000102F4D7F2260000006B329C04B7F2460F9 -:101A7000012F000016B32BC016B3477F28602AC081 -:101A80004F7E06B320612CC04F7D16B320622FC05D -:101A90004F7B06B3206432C0422706B349934FEF11 -:101AA0000000102711FB20F916B31370C9F1297F2C -:101AB00091F2012701FB21F906B3237F89F231500E -:101AC00058F1102711FB22F916B3277E79F201276E -:101AD00001FB23F92F7C81F206B3102711FB24F9B7 -:101AE0002F7971F200C016B3012701FB25F92F737E -:101AF00059F200C006B3102711FB26F9223040F23C -:101B000000C016B3012701FB27F9243028F64F77D0 -:101B1000206816B30000F9CF10E21ABF00271DC0DD -:101B20003B503195C31BD04010E21ABF0881033CE3 -:101B300019F10B3409F120910C011981110F1213C5 -:101B4000EDCF093641F10D3211F0013E39F7CAE00F -:101B50001AB715FD02C0CA95D9F7009314013F9139 -:101B60004F911F910F912F91DF91CAB7C5FD4BCFB8 -:101B7000CF91CFBFCF91089520911401222379F303 -:101B8000109112011123E1F43430E2F0309312018C -:101B900020930D0117C00091120101308CF40AE569 -:101BA00030910F0134FD10C000930F01C1E0D1E06E -:101BB0000FC02795A8F45150A9F4220F0000F9CFC7 -:101BC0004AE503C042ED01C0432FC4E1D0E032E05A -:101BD00017B31360C19A17BB08B320E413E05F93F7 -:101BE000012756E008BB279520F4515021F4220F1D -:101BF000F9CF012756E000003B5A08BBD0F22795E9 -:101C000028F4515029F4220F0000F9CF012756E0A3 -:101C1000279508BB20F4515021F4220FF9CF01275A -:101C200056E02991332308BB21F60C7F1091130154 -:101C3000110FC651D04008BB11F010930C0110E2F7 -:101C40001ABF026017B31C7F402F4C7F5F9100C00A -:101C500000C008BB17BB48BB82CF2FEFB0E8A0E0A5 -:101C60004BE0B093740000008EE599E0B199FECF8F -:101C7000B19BFECF0197B199FDCFB09B09C096B340 -:101C80009370E9F796B39370D1F7B19BFECFECCF89 -:101C900097FF03C0BA1B819501C0BA0FA69541F406 -:101CA000A0E430F4281718F030917400282FA1E038 -:101CB0004150B9F63093740000000895F201309756 -:101CC00049F02AE7421629E1520631F48091740066 -:101CD00090E002C08FEB9CEC21E00C0120935700B8 -:101CE000E8951124CF0102962C010895809174008B -:101CF000282EEAE7F9E1E491EF3F19F0E093740050 -:101D0000000004B601FC06C0EDE7F9E1E491EF3F05 -:101D100009F055C114BE88ED8093710087E081BD44 -:101D2000B99A2FE78CEF9AE0215080409040E1F77C -:101D300000C00000B9988AE580930F018FEF80936F -:101D4000000180B5816080BD8BB780628BBFC29877 -:101D5000712C312C412C512C14E1C0EADFE086B308 -:101D6000837009F014E1115029F4109213011092BC -:101D70000C0173DF0AB605FE03C042DE712C03C0FE -:101D80002197209761F7A8958091740020927400A4 -:101D900022E032120CC0E0E8F9E1E054F10993E0EE -:101DA00090935700E8953097C1F7412C512C90E45F -:101DB00039120AC0F2013297E03829E1F20720F423 -:101DC00095E090935700E8958093740084E0381272 -:101DD00003C0CD2B11F4EFC0312C80911201835040 -:101DE00087FD98C090910D019D3209F091C0883017 -:101DF00009F08EC083EC809301018AE580930F0186 -:101E000090911701907680911801992361F18111C9 -:101E100008C082E899E1909311018093100126E0B7 -:101E20006CC0813059F44114510409F44CC08091C4 -:101E30001B01807F482E50901C0145C0833081F4E7 -:101E40008091190190911A0139DF80911B019091C5 -:101E50001C0134DF842D8F70B1F580E4382E33C03F -:101E60008F73382E30C09091190110920A018111A0 -:101E700006C010920B018AE091E022E03AC0853062 -:101E800019F49093130127C08630F9F480911A0158 -:101E9000813019F48AE999E104C0823041F488E87C -:101EA00099E1909311018093100122E126C08330C3 -:101EB00051F4911108C08CEA99E19093110180933B -:101EC000100124E01AC020E018C0883079F0893071 -:101ED00031F4909315018AE091E020E00AC021E0FE -:101EE0008A3009F020E08AE091E003C085E191E0CA -:101EF00021E0909311018093100180911E018111C6 -:101F000005C080911D01821708F4282F209300013D -:101F10001092120180910F0184FF31C08091000165 -:101F20008F3F69F1C82F893008F0C8E08C1B80937F -:101F300000018091010198E8892780930101CC2359 -:101F400091F0E0911001F091110182E091E0DC014B -:101F500024912D9331962C2F280F2A13F9CFF0932B -:101F60001101E09310016C2F82E091E045DDCC5F20 -:101F7000CC3019F08FEF80930001C0930F01C301A3 -:101F800001963C01803B944029F4EDE7F9E1E491AE -:101F9000EF3F89F4862D8C7411F0BA9801C0BA9A7B -:101FA0000AB605FED9CE88E1B09988E18150E1F703 -:101FB00080E28ABFD1CEBA98B99A1BBE10BC2092DB -:081FC00074000000DBCCFFCF30 -:040000030000198060 +:1019400017C0193A10859315090212000101008091 +:101950003209040000000000000012011001FF0025 +:101960000008D01653070102000000010403090417 +:1019700011241FBECFEFD2E0CDBFDEBF21E0A0E03B +:10198000B1E001C01D92AC32B207E1F799C1DC01B0 +:101990008FEF9FEF332715C02D912827722F2295A7 +:1019A0002727822F269526952827239522703217E0 +:1019B00077952795822F8927972F769527959727B3 +:1019C0008227615048F7809590950895E0DF8D93C8 +:1019D0009D930895CF93CFB7CF93C395B19BE9F76C +:1019E000B19B09C0B19B07C0B19B05C0B19B03C0AF +:1019F000B19B01C0A7C0DF93C0910E01DD27CA5E75 +:101A0000DE4FB19B02C0DF91EBCF2F930F931F935B +:101A100006B32FEF01FB20F94F933F9316B34FEF1F +:101A2000012701FB21F93BE031C04E7F012F16B3A6 +:101A3000216028C0102F4D7F2260000006B329C00E +:101A40004B7F2460012F000016B32BC016B3477FD5 +:101A500028602AC04F7E06B320612CC04F7D16B38C +:101A600020622FC04F7B06B3206432C0422706B3EA +:101A700049934FEF0000102711FB20F916B31370A4 +:101A8000C9F1297F91F2012701FB21F906B3237FD8 +:101A900089F2315058F1102711FB22F916B3277E35 +:101AA00079F2012701FB23F92F7C81F206B310277D +:101AB00011FB24F92F7971F200C016B3012701FB45 +:101AC00025F92F7359F200C006B3102711FB26F930 +:101AD000223040F200C016B3012701FB27F9243061 +:101AE00028F64F77206816B30000F9CF10E21ABF2E +:101AF00000271DC03B503195C31BD04010E21ABFD8 +:101B00000881033C19F10B3409F120910C01198172 +:101B1000110F1213EDCF093641F10D3211F0013ED4 +:101B200039F7CAE01AB715FD02C0CA95D9F7009374 +:101B300014013F914F911F910F912F91DF91CAB7DF +:101B4000C5FD4BCFCF91CFBFCF9108952091140108 +:101B5000222379F3109112011123E1F43430E2F0E1 +:101B60003093120120930D0117C000911201013032 +:101B70008CF40AE530910F0134FD10C000930F0181 +:101B8000C1E0D1E00FC02795A8F45150A9F4220F6D +:101B90000000F9CF4AE503C042ED01C0432FC4E184 +:101BA000D0E032E017B31360C19A17BB08B320E44A +:101BB00013E05F93012756E008BB279520F45150AE +:101BC00021F4220FF9CF012756E000003B5A08BB51 +:101BD000D0F2279528F4515029F4220F0000F9CFB4 +:101BE000012756E0279508BB20F4515021F4220F1D +:101BF000F9CF012756E02991332308BB21F60C7F4A +:101C000010911301110FC651D04008BB11F0109371 +:101C10000C0110E21ABF026017B31C7F402F4C7FEB +:101C20005F9100C000C008BB17BB48BB82CF2FEF3D +:101C3000B0E8A0E04BE0B093740000008EE599E0BE +:101C4000B199FECFB19BFECF0197B199FDCFB09B6B +:101C500009C096B39370E9F796B39370D1F7B19B2F +:101C6000FECFECCF97FF03C0BA1B819501C0BA0F1E +:101C7000A69541F4A0E430F4281718F030917400D0 +:101C8000282FA1E04150B9F6309374000000089568 +:101C9000F201309749F02AE3421629E1520631F465 +:101CA0008091740090E002C08FE99CEC21E00C016F +:101CB00020935700E8951124CF0102962C01089536 +:101CC00080917400282EEAE3F9E1E491EF3F19F0E6 +:101CD000E0937400000004B601FC06C0EDE3F9E1F6 +:101CE000E491EF3F09F057C114BE88ED8093710075 +:101CF00087E081BDB99A2FE78CEF9AE021508040B0 +:101D00009040E1F700C00000B9988AE580930F0188 +:101D10008FEF8093000180B5816080BD8BB78062BA +:101D20008BBFC298712C312C412C512C14E6C0EA87 +:101D3000DFE086B3837009F014E6115029F41092A5 +:101D4000130110920C0173DF0AB605FE05C042DED6 +:101D500080E28ABF712C03C02197209751F7A89584 +:101D6000809174002092740022E032120CC0E0E4F2 +:101D7000F9E1E054F10993E090935700E89530972A +:101D8000C1F7412C512C90E439120AC0F20132976C +:101D9000E03429E1F20720F495E090935700E895AC +:101DA0008093740084E0381203C0CD2B11F4EFC08F +:101DB000312C80911201835087FD98C090910D01C4 +:101DC0009D3209F091C0883009F08EC083EC809379 +:101DD00001018AE580930F0190911701907680911F +:101DE0001801992361F1811108C082E499E190936F +:101DF00011018093100126E06CC0813059F4411428 +:101E0000510409F44CC080911B01807F482E5090F2 +:101E10001C0145C0833081F48091190190911A0111 +:101E200037DF80911B0190911C0132DF842D8F7070 +:101E3000B1F580E4382E33C08F73382E30C09091C6 +:101E4000190110920A01811106C010920B018AE05B +:101E500091E022E03AC0853019F49093130127C035 +:101E60008630F9F480911A01813019F48AE599E1FC +:101E700004C0823041F488E499E190931101809389 +:101E8000100122E126C0833051F4911108C08CE684 +:101E900099E1909311018093100124E01AC020E091 +:101EA00018C0883079F0893031F4909315018AE0B8 +:101EB00091E020E00AC021E08A3009F020E08AE0C9 +:101EC00091E003C085E191E021E0909311018093BE +:101ED000100180911E01811105C080911D018217A2 +:101EE00008F4282F209300011092120180910F0115 +:101EF00084FF31C0809100018F3F69F1C82F893084 +:101F000008F0C8E08C1B809300018091010198E8E3 +:101F1000892780930101CC2391F0E0911001F09189 +:101F2000110182E091E0DC0124912D9331962C2F58 +:101F3000280F2A13F9CFF0931101E09310016C2FB1 +:101F400082E091E043DDCC5FCC3019F08FEF8093DD +:101F50000001C0930F01C30101963C01803B9440F6 +:101F600029F4EDE3F9E1E491EF3F89F4862D8C74D7 +:101F700011F0BA9801C0BA9A0AB605FED7CE85E12B +:101F8000B19B85E18150E1F780E28ABFCFCEBA985C +:101F9000B99A1BBE10BC209274000000CFCCFFCFBA +:0400000300001940A0  :00000001FF diff --git a/firmware/releases/t167_default.hex b/firmware/releases/t167_default.hex index e88a98d..85b4ce1 100644 --- a/firmware/releases/t167_default.hex +++ b/firmware/releases/t167_default.hex @@ -1,6 +1,6 @@  :103A000018C0000039FA80059487090212000101EC  :103A100000803209040000000000000012011001C3 -:103A2000FF000008D0165307000200000001040345 +:103A2000FF000008D0165307010200000001040344  :103A3000090411241FBECEEFD2E0CDBFDEBF21E0CE  :103A4000A0E0B1E001C01D92AC32B207E1F742C183  :103A5000A82FB92F80E090E041E050EA609530E077 @@ -48,44 +48,44 @@  :103CF000E1F700C0000023988AE580930F018FEF61  :103D00008093000180916C00806480936C008091AE  :103D1000680082608093680082E084B9712C312C45 -:103D2000412C512C84E1C5EDD4E193B1987409F094 -:103D300084E1815021F41092130110920C01D99B5F -:103D400003C09FDE712C03C02197209771F7A895BF -:103D500022E032120CC0E0E0FAE3E058F10983E01F -:103D600080935700E8953097C1F7412C512C832D53 -:103D7000803459F4F2013297E1158AE3F80750F4E0 -:103D800085E080935700E89505C0843019F4CD2B69 -:103D900011F4EEC0312C80911201835087FD98C040 -:103DA00090910D019D3209F091C0883009F08EC0CC -:103DB00083EC809301018AE580930F0190911701B4 -:103DC000907680911801992361F1811108C084E0F7 -:103DD0009AE3909311018093100126E06CC081302A -:103DE00059F44114510409F44CC080911B018078AE -:103DF000482E50901C0145C0833081F480911901F8 -:103E000090911A0152DF80911B0190911C014DDFAE -:103E1000842D8F77B1F580E4382E33C08F73382E20 -:103E200030C09091190110920A01811106C01092C0 -:103E30000B018AE091E022E03AC0853019F49093BA -:103E4000130127C08630F9F480911A01813019F4EA -:103E50008CE19AE304C0823041F48AE09AE39093C3 -:103E600011018093100122E126C0833051F4911199 -:103E700008C08EE29AE3909311018093100124E030 -:103E80001AC020E018C0883079F0893031F490935E -:103E900015018AE091E020E00AC021E08A3009F0B3 -:103EA00020E08AE091E003C085E191E021E0909379 -:103EB00011018093100180911E01811105C0809134 -:103EC0001D01821708F4282F20930001109212017F -:103ED00080910F0184FF31C0809100018F3F69F113 -:103EE000C82F893008F0C8E08C1B809300018091B6 -:103EF000010198E8892780930101CC2391F0E0919A -:103F00001001F091110182E091E0DC0124912D93E8 -:103F100031962C2F280F2A13F9CFF0931101E0933B -:103F200010016C2F82E091E0A8DDCC5FCC3019F05D -:103F30008FEF80930001C0930F01C30101963C01F4 -:103F4000803B944029F4EDEFF9E3E491EF3F81F4F5 -:103F5000862D8C7411F0299801C0299AD99BE2CE44 -:103F600080E21E9980E28150E1F782E08BBBDACEDD -:103F700021982998239A1092680010926C003ECDE7 -:023F8000FFCF71 +:103D2000412C512C84E6C5EDD4E193B1987409F08F +:103D300084E6815021F41092130110920C01D99B5A +:103D400005C09FDE82E08BBB712C03C021972097BA +:103D500061F7A89522E032120CC0E0E0FAE3E058E7 +:103D6000F10983E080935700E8953097C1F7412C23 +:103D7000512C832D803459F4F2013297E1158AE3F6 +:103D8000F80750F485E080935700E89505C084302B +:103D900019F4CD2B11F4EEC0312C80911201835017 +:103DA00087FD98C090910D019D3209F091C0883037 +:103DB00009F08EC083EC809301018AE580930F01A6 +:103DC00090911701907680911801992361F18111EA +:103DD00008C084E09AE3909311018093100126E0DB +:103DE0006CC0813059F44114510409F44CC08091E5 +:103DF0001B018078482E50901C0145C0833081F40F +:103E00008091190190911A0150DF80911B019091CE +:103E10001C014BDF842D8F77B1F580E4382E33C041 +:103E20008F73382E30C09091190110920A018111C0 +:103E300006C010920B018AE091E022E03AC0853082 +:103E400019F49093130127C08630F9F480911A0178 +:103E5000813019F48CE19AE304C0823041F48AE0A5 +:103E60009AE3909311018093100122E126C08330E0 +:103E700051F4911108C08EE29AE39093110180935E +:103E8000100124E01AC020E018C0883079F0893091 +:103E900031F4909315018AE091E020E00AC021E01E +:103EA0008A3009F020E08AE091E003C085E191E0EA +:103EB00021E0909311018093100180911E018111E6 +:103EC00005C080911D01821708F4282F209300015E +:103ED0001092120180910F0184FF31C08091000186 +:103EE0008F3F69F1C82F893008F0C8E08C1B8093A0 +:103EF00000018091010198E8892780930101CC237A +:103F000091F0E0911001F091110182E091E0DC016B +:103F100024912D9331962C2F280F2A13F9CFF0934B +:103F20001101E09310016C2F82E091E0A6DDCC5FDF +:103F3000CC3019F08FEF80930001C0930F01C301C3 +:103F400001963C01803B944029F4EDEFF9E3E491C4 +:103F5000EF3F81F4862D8C7411F0299801C0299AC5 +:103F6000D99BE0CE8CE11B9B8CE18150E1F782E094 +:103F70008BBBD8CE21982998239A10926800109272 +:063F80006C003CCDFFCFF8  :0400000300003A00BF  :00000001FF diff --git a/firmware/releases/t841_default.hex b/firmware/releases/t841_default.hex index 0102d58..a5b070f 100644 --- a/firmware/releases/t841_default.hex +++ b/firmware/releases/t841_default.hex @@ -1,101 +1,103 @@ -:1019C00017C019BA10859315090212000101008091 -:1019D0003209040000000000000012011001FF00A5 -:1019E0000008D01653070002000000010403090498 -:1019F00011241FBECFEFD2E0CDBFDEBF21E0A0E0BB -:101A0000B1E001C01D92AC32B207E1F78FC1A82F3F -:101A1000B92F80E090E041E050EA609530E009C0E5 -:101A20002D9182279795879510F084279527305E12 -:101A3000C8F36F5FA8F30895EADF8D939D9308952F -:101A4000CF93CFB7CF93C395B09BE9F7B09B09C0B5 -:101A5000B09B07C0B09B05C0B09B03C0B09B01C04A -:101A6000A7C0DF93C0910E01DD27CA5EDE4FB09B99 -:101A700002C0DF91EBCF2F930F931F9306B32FEF8D -:101A800000FB20F94F933F9316B34FEF012700FB64 -:101A900021F93BE031C04E7F012F16B3216028C0F1 -:101AA000102F4D7F2260000006B329C04B7F2460B9 -:101AB000012F000016B32BC016B3477F28602AC041 -:101AC0004F7E06B320612CC04F7D16B320622FC01D -:101AD0004F7B06B3206432C0422706B349934FEFD1 -:101AE0000000102710FB20F916B31370C9F1297FED -:101AF00091F2012700FB21F906B3237F89F23150CF -:101B000058F1102710FB22F916B3277E79F201272E -:101B100000FB23F92F7C81F206B3102710FB24F978 -:101B20002F7971F200C016B3012700FB25F92F733E -:101B300059F200C006B3102710FB26F9223040F2FC -:101B400000C016B3012700FB27F9243028F64F7791 -:101B5000206816B30000F9CF10E21ABF00271DC09D -:101B60003B503195C31BD04010E21ABF0881033CA3 -:101B700019F10B3409F120910C011981110F121385 -:101B8000EDCF093641F10D3211F0013E39F7CAE0CF -:101B90001AB715FD02C0CA95D9F7009314013F91F9 -:101BA0004F911F910F912F91DF91CAB7C5FD4BCF78 -:101BB000CF91CFBFCF91089520911401222379F3C3 -:101BC000109112011123E1F43430E2F0309312014C -:101BD00020930D0117C00091120101308CF40AE529 -:101BE00030910F0134FD10C000930F01C1E0D1E02E -:101BF0000FC02795A8F45150A9F4220F0000F9CF87 -:101C00004AE503C042ED01C0432FC4E1D0E032E019 -:101C100017B31360C09A17BB08B320E413E05F93B7 -:101C2000012756E008BB279520F4515021F4220FDC -:101C3000F9CF012756E000003B5A08BBD0F22795A8 -:101C400028F4515029F4220F0000F9CF012756E063 -:101C5000279508BB20F4515021F4220FF9CF01271A -:101C600056E02991332308BB21F60C7F1091130114 -:101C7000110FC651D04008BB11F010930C0110E2B7 -:101C80001ABF016017B31C7F402F4C7F5F9100C0CB -:101C900000C008BB17BB48BB82CF2FEFB0E8A0E065 -:101CA0004BE0B093740000008EE599E0B099FECF50 -:101CB000B09BFECF0197B099FDCFB19B09C096B301 -:101CC0009370E9F796B39370D1F7B09BFECFECCF4A -:101CD00097FF03C0BA1B819501C0BA0FA69541F4C6 -:101CE000A0E430F4281718F030917400282FA1E0F8 -:101CF0004150B9F63093740000000895F201309716 -:101D000049F02AEB421629E1520631F48091740021 -:101D100090E002C08FED9CEC21E00C012093570075 -:101D2000E8951124CF0102962C010895EAEBF9E120 -:101D3000E491EF3F19F0E0937400000004B601FC59 -:101D400006C0EDEBF9E1E491EF3F09F04FC114BE9D -:101D500088ED8093710087E081BDB89A2FE78CEF02 -:101D60009AE0215080409040E1F700C00000B89810 -:101D70008AE580930F018FEF8093000180B5826028 -:101D800080BD8BB780628BBFC298712C312C412CE7 -:101D9000512C14E1C0EADFE086B3837009F014E14E -:101DA000115029F41092130110920C0176DF0AB63B -:101DB00005FE03C045DE712C03C02197209761F713 -:101DC000A89522E032120CC0E0ECF9E1E054F109F0 -:101DD00083E080935700E8953097C1F7412C512C50 -:101DE000832D803459F4F2013297E03C89E1F80701 -:101DF00050F485E080935700E89505C0843019F4CD -:101E0000CD2B11F4EFC0312C80911201835087FD4E -:101E100098C090910D019D3209F091C0883009F071 -:101E20008EC083EC809301018AE580930F0190912D -:101E30001701907680911801992361F1811108C0F2 -:101E400082EC99E1909311018093100126E06CC01F -:101E5000813059F44114510409F44CC080911B01A4 -:101E6000807F482E50901C0145C0833081F48091C2 -:101E7000190190911A0142DF80911B0190911C0180 -:101E80003DDF842D8F70B1F580E4382E33C08F7321 -:101E9000382E30C09091190110920A01811106C0AC -:101EA00010920B018AE091E022E03AC0853019F4EB -:101EB0009093130127C08630F9F480911A01813084 -:101EC00019F48AED99E104C0823041F488EC99E17B -:101ED000909311018093100122E126C0833051F4C8 -:101EE000911108C08CEE99E190931101809310013B -:101EF00024E01AC020E018C0883079F0893031F42D -:101F0000909315018AE091E020E00AC021E08A3038 -:101F100009F020E08AE091E003C085E191E021E052 -:101F2000909311018093100180911E01811105C0D1 -:101F300080911D01821708F4282F20930001109230 -:101F4000120180910F0184FF31C0809100018F3F09 -:101F500069F1C82F893008F0C8E08C1B809300011C -:101F60008091010198E8892780930101CC2391F0A9 -:101F7000E0911001F091110182E091E0DC012491E7 -:101F80002D9331962C2F280F2A13F9CFF09311019E -:101F9000E09310016C2F82E091E04EDDCC5FCC30FD -:101FA00019F08FEF80930001C0930F01C3010196D8 -:101FB0003C01803B944029F4EDEBF9E1E491EF3FE3 -:101FC00089F4862D8C7411F0BA9801C0BA9A0AB6B9 -:101FD00005FEDFCE88E1B19988E18150E1F780E22A -:101FE0008ABFD7CEBA98B89A1BBE10BCE7CCFFCF39 -:04000003000019C020 +:1019800017C0197A10859315090212000101008011 +:101990003209040000000000000012011001FF00E5 +:1019A0000008D016530701020000000104030904D7 +:1019B00011241FBECFEFD2E0CDBFDEBF21E0A0E0FB +:1019C000B1E001C01D92AC32B207E1F799C1DC0170 +:1019D0008FEF9FEF332715C02D912827722F229567 +:1019E0002727822F269526952827239522703217A0 +:1019F00077952795822F8927972F76952795972773 +:101A00008227615048F7809590950895E0DF8D9387 +:101A10009D930895CF93CFB7CF93C395B09BE9F72C +:101A2000B09B09C0B09B07C0B09B05C0B09B03C072 +:101A3000B09B01C0A7C0DF93C0910E01DD27CA5E35 +:101A4000DE4FB09B02C0DF91EBCF2F930F931F931C +:101A500006B32FEF00FB20F94F933F9316B34FEFE0 +:101A6000012700FB21F93BE031C04E7F012F16B367 +:101A7000216028C0102F4D7F2260000006B329C0CE +:101A80004B7F2460012F000016B32BC016B3477F95 +:101A900028602AC04F7E06B320612CC04F7D16B34C +:101AA00020622FC04F7B06B3206432C0422706B3AA +:101AB00049934FEF0000102710FB20F916B3137065 +:101AC000C9F1297F91F2012700FB21F906B3237F99 +:101AD00089F2315058F1102710FB22F916B3277EF6 +:101AE00079F2012700FB23F92F7C81F206B310273E +:101AF00010FB24F92F7971F200C016B3012700FB07 +:101B000025F92F7359F200C006B3102710FB26F9F0 +:101B1000223040F200C016B3012700FB27F9243021 +:101B200028F64F77206816B30000F9CF10E21ABFED +:101B300000271DC03B503195C31BD04010E21ABF97 +:101B40000881033C19F10B3409F120910C01198132 +:101B5000110F1213EDCF093641F10D3211F0013E94 +:101B600039F7CAE01AB715FD02C0CA95D9F7009334 +:101B700014013F914F911F910F912F91DF91CAB79F +:101B8000C5FD4BCFCF91CFBFCF91089520911401C8 +:101B9000222379F3109112011123E1F43430E2F0A1 +:101BA0003093120120930D0117C0009112010130F2 +:101BB0008CF40AE530910F0134FD10C000930F0141 +:101BC000C1E0D1E00FC02795A8F45150A9F4220F2D +:101BD0000000F9CF4AE503C042ED01C0432FC4E144 +:101BE000D0E032E017B31360C09A17BB08B320E40B +:101BF00013E05F93012756E008BB279520F451506E +:101C000021F4220FF9CF012756E000003B5A08BB10 +:101C1000D0F2279528F4515029F4220F0000F9CF73 +:101C2000012756E0279508BB20F4515021F4220FDC +:101C3000F9CF012756E02991332308BB21F60C7F09 +:101C400010911301110FC651D04008BB11F0109331 +:101C50000C0110E21ABF016017B31C7F402F4C7FAC +:101C60005F9100C000C008BB17BB48BB82CF2FEFFD +:101C7000B0E8A0E04BE0B093740000008EE599E07E +:101C8000B099FECFB09BFECF0197B099FDCFB19B2D +:101C900009C096B39370E9F796B39370D1F7B09BF0 +:101CA000FECFECCF97FF03C0BA1B819501C0BA0FDE +:101CB000A69541F4A0E430F4281718F03091740090 +:101CC000282FA1E04150B9F6309374000000089528 +:101CD000F201309749F02AE7421629E1520631F421 +:101CE0008091740090E002C08FEB9CEC21E00C012D +:101CF00020935700E8951124CF0102962C010895F6 +:101D0000EAE7F9E1E491EF3F19F0E0937400000095 +:101D100004B601FC06C0EDE7F9E1E491EF3F09F0FC +:101D200051C114BE88ED8093710087E081BDB89ADF +:101D30002FE78CEF9AE0215080409040E1F700C0FF +:101D40000000B8988AE580930F018FEF809300011F +:101D500080B5826080BD8BB780628BBFC298712CCA +:101D6000312C412C512C14E6C0EADFE086B383709D +:101D700009F014E6115029F41092130110920C018D +:101D800076DF0AB605FE05C045DE80E28ABF712C0B +:101D900003C02197209751F7A89522E032120CC07A +:101DA000E0E8F9E1E054F10983E080935700E89519 +:101DB0003097C1F7412C512C832D803459F4F20116 +:101DC0003297E03889E1F80750F485E080935700B6 +:101DD000E89505C0843019F4CD2B11F4EFC0312CF7 +:101DE00080911201835087FD98C090910D019D3222 +:101DF00009F091C0883009F08EC083EC8093010116 +:101E00008AE580930F0190911701907680911801D7 +:101E1000992361F1811108C082E899E19093110141 +:101E20008093100126E06CC0813059F441145104B4 +:101E300009F44CC080911B01807F482E50901C01FA +:101E400045C0833081F48091190190911A0140DFDF +:101E500080911B0190911C013BDF842D8F70B1F5A7 +:101E600080E4382E33C08F73382E30C09091190122 +:101E700010920A01811106C010920B018AE091E0D4 +:101E800022E03AC0853019F49093130127C08630C0 +:101E9000F9F480911A01813019F48AE999E104C0BA +:101EA000823041F488E899E1909311018093100108 +:101EB00022E126C0833051F4911108C08CEA99E1E7 +:101EC000909311018093100124E01AC020E018C003 +:101ED000883079F0893031F4909315018AE091E0EF +:101EE00020E00AC021E08A3009F020E08AE091E099 +:101EF00003C085E191E021E09093110180931001EE +:101F000080911E01811105C080911D01821708F486 +:101F1000282F209300011092120180910F0184FF5D +:101F200031C0809100018F3F69F1C82F893008F0DE +:101F3000C8E08C1B809300018091010198E88927FB +:101F400080930101CC2391F0E0911001F0911101F7 +:101F500082E091E0DC0124912D9331962C2F280F03 +:101F60002A13F9CFF0931101E09310016C2F82E056 +:101F700091E04CDDCC5FCC3019F08FEF8093000105 +:101F8000C0930F01C30101963C01803B944029F4AA +:101F9000EDE7F9E1E491EF3F89F4862D8C7411F0BF +:101FA000BA9801C0BA9A0AB605FEDDCE85E1B09BAB +:101FB00085E18150E1F780E28ABFD5CEBA98B89A20 +:081FC0001BBE10BCDBCCFFCFFF +:040000030000198060  :00000001FF diff --git a/firmware/releases/t84_default.hex b/firmware/releases/t84_default.hex index 7471f72..edc8f1a 100644 --- a/firmware/releases/t84_default.hex +++ b/firmware/releases/t84_default.hex @@ -1,98 +1,100 @@ -:101A000017C019FA4005930C090212000101008069 -:101A10003209040000000000000012011001FF0064 -:101A20000008D01653070002000000010403090457 -:101A300011241FBECFE5D2E0CDBFDEBF20E0A0E67F -:101A4000B0E001C01D92AC38B207E1F783C1A82F06 -:101A5000B92F80E090E041E050EA609530E009C0A5 -:101A60002D9182279795879510F084279527305ED2 -:101A7000C8F36F5FA8F30895EADF8D939D930895EF -:101A8000CF93CFB7CF93C395B09BE9F7B09B09C075 -:101A9000B09B07C0B09B05C0B09B03C0B09B01C00A -:101AA000A7C0DF93C0916E00DD27CA58DF4FB09BFF -:101AB00002C0DF91EBCF2F930F931F9306B32FEF4D -:101AC00000FB20F94F933F9316B34FEF012700FB24 -:101AD00021F93BE031C04E7F012F16B3216028C0B1 -:101AE000102F4D7F2260000006B329C04B7F246079 -:101AF000012F000016B32BC016B3477F28602AC001 -:101B00004F7E06B320612CC04F7D16B320622FC0DC -:101B10004F7B06B3206432C0422706B349934FEF90 -:101B20000000102710FB20F916B31370C9F1297FAC -:101B300091F2012700FB21F906B3237F89F231508E -:101B400058F1102710FB22F916B3277E79F20127EE -:101B500000FB23F92F7C81F206B3102710FB24F938 -:101B60002F7971F200C016B3012700FB25F92F73FE -:101B700059F200C006B3102710FB26F9223040F2BC -:101B800000C016B3012700FB27F9243028F64F7751 -:101B9000206816B30000F9CF10E21ABF00271DC05D -:101BA0003B503195C31BD04010E21ABF0881033C63 -:101BB00019F10B3409F120916C001981110F1213E6 -:101BC000EDCF093641F10D3211F0013E39F7CAE08F -:101BD0001AB715FD02C0CA95D9F7009374003F915A -:101BE0004F911F910F912F91DF91CAB7C5FD4BCF38 -:101BF000CF91CFBFCF91089520917400222379F324 -:101C0000109172001123E1F43430E2F0309372004D -:101C100020936D0017C00091720001308CF40AE52A -:101C200030916F0034FD10C000936F00C1E6D0E02A -:101C30000FC02795A8F45150A9F4220F0000F9CF46 -:101C40004AE503C042ED01C0432FC4E1D0E032E0D9 -:101C500017B31360C09A17BB08B320E413E05F9377 -:101C6000012756E008BB279520F4515021F4220F9C -:101C7000F9CF012756E000003B5A08BBD0F2279568 -:101C800028F4515029F4220F0000F9CF012756E023 -:101C9000279508BB20F4515021F4220FF9CF0127DA -:101CA00056E02991332308BB21F60C7F1091730075 -:101CB000110FC651D04008BB11F010936C0010E218 -:101CC0001ABF016017B31C7F402F4C7F5F9100C08B -:101CD00000C008BB17BB48BB82CF2FEFB0E8A0E025 -:101CE0004BE0B1BF00008EE599E0B099FECFB09B0C -:101CF000FECF0197B099FDCFB19B09C096B3937009 -:101D0000E9F796B39370D1F7B09BFECFECCF97FF76 -:101D100003C0BA1B819501C0BA0FA69539F4A0E49F -:101D200028F4281710F031B7282FA1E04150C9F648 -:101D300031BF00000895F201309711F48FEF9CEC51 -:101D400021E00C0120935700E8951124CF01029661 -:101D50002C01089581B7282E14BE88E181BD87E04B -:101D600081BDB89A2FE78CEF9AE0215080409040D7 -:101D7000E1F700C00000B8988AE580936F008FEF0C -:101D80008093600080B5826080BD8BB780628BBF1E -:101D9000C298712C312C412C512C14E1C0EADFE0A7 -:101DA00086B3837009F014E1115029F41092730086 -:101DB00010926C0092DF0AB605FE03C061DE712C42 -:101DC00003C02197209761F7A89522E032120CC03A -:101DD000E0E0FAE1E054F10983E080935700E895F0 -:101DE0003097C1F7412C512C832D803459F4F201E6 -:101DF0003297E1158AE1F80750F485E080935700A7 -:101E0000E89505C0843019F4CD2B11F4EFC0312CC6 -:101E100080917200835087FD98C090916D009D3233 -:101E200009F091C0883009F08EC083EC8093610086 -:101E30008AE580936F00909177009076809178008A -:101E4000992361F1811108C082E09AE190937100B9 -:101E50008093700026E06CC0813059F44114510425 -:101E600009F44CC080917B00807C482E50907C000F -:101E700045C0833081F48091790090917A005BDFD6 -:101E800080917B0090917C0056DF842D8F73B1F59B -:101E900080E4382E33C08F73382E30C09091790093 -:101EA00010926A00811106C010926B008AE690E0E1 -:101EB00022E03AC0853019F49093730027C0863031 -:101EC000F9F480917A00813019F48AE19AE104C032 -:101ED000823041F488E09AE1909371008093700021 -:101EE00022E126C0833051F4911108C08CE29AE1BE -:101EF000909371008093700024E01AC020E018C015 -:101F0000883079F0893031F4909375008AE690E05A -:101F100020E00AC021E08A3009F020E08AE690E063 -:101F200003C085E790E021E09093710080937000FA -:101F300080917E00811105C080917D00821708F498 -:101F4000282F209360001092720080916F0084FF10 -:101F500031C0809160008F3F69F1C82F893008F04F -:101F6000C8E08C1B809360008091610098E889270D -:101F700080936100CC2391F0E0917000F0917100AA -:101F800082E690E0DC0124912D9331962C2F280FCE -:101F90002A13F9CFF0937100E09370006C2F82E662 -:101FA00090E06ADDCC5FCC3019F08FEF8093600059 -:101FB000C0936F00C30101963C01803B944029F41B -:101FC000EDEFF9E1E491EF3F89F4862D8C7411F087 -:101FD000BA9801C0BA9A0AB605FEDFCE88E1B19977 -:101FE00088E18150E1F780E28ABFD7CEBA98B89AEB -:0C1FF0001BBE10BC21BE000001CDFFCFC5 -:0400000300001A00DF +:1019800017C0197A4005930C09021200010100806A +:101990003209040000000000000012011001FF00E5 +:1019A0000008D016530701020000000104030904D7 +:1019B00011241FBECFE5D2E0CDBFDEBF20E0A0E600 +:1019C000B0E001C01D92AC38B207E1F78DC1DC0177 +:1019D0008FEF9FEF332715C02D912827722F229567 +:1019E0002727822F269526952827239522703217A0 +:1019F00077952795822F8927972F76952795972773 +:101A00008227615048F7809590950895E0DF8D9387 +:101A10009D930895CF93CFB7CF93C395B09BE9F72C +:101A2000B09B09C0B09B07C0B09B05C0B09B03C072 +:101A3000B09B01C0A7C0DF93C0916E00DD27CA58DC +:101A4000DF4FB09B02C0DF91EBCF2F930F931F931B +:101A500006B32FEF00FB20F94F933F9316B34FEFE0 +:101A6000012700FB21F93BE031C04E7F012F16B367 +:101A7000216028C0102F4D7F2260000006B329C0CE +:101A80004B7F2460012F000016B32BC016B3477F95 +:101A900028602AC04F7E06B320612CC04F7D16B34C +:101AA00020622FC04F7B06B3206432C0422706B3AA +:101AB00049934FEF0000102710FB20F916B3137065 +:101AC000C9F1297F91F2012700FB21F906B3237F99 +:101AD00089F2315058F1102710FB22F916B3277EF6 +:101AE00079F2012700FB23F92F7C81F206B310273E +:101AF00010FB24F92F7971F200C016B3012700FB07 +:101B000025F92F7359F200C006B3102710FB26F9F0 +:101B1000223040F200C016B3012700FB27F9243021 +:101B200028F64F77206816B30000F9CF10E21ABFED +:101B300000271DC03B503195C31BD04010E21ABF97 +:101B40000881033C19F10B3409F120916C001981D3 +:101B5000110F1213EDCF093641F10D3211F0013E94 +:101B600039F7CAE01AB715FD02C0CA95D9F7009334 +:101B700074003F914F911F910F912F91DF91CAB740 +:101B8000C5FD4BCFCF91CFBFCF9108952091740069 +:101B9000222379F3109172001123E1F43430E2F042 +:101BA0003093720020936D0017C0009172000130D5 +:101BB0008CF40AE530916F0034FD10C000936F0083 +:101BC000C1E6D0E00FC02795A8F45150A9F4220F28 +:101BD0000000F9CF4AE503C042ED01C0432FC4E144 +:101BE000D0E032E017B31360C09A17BB08B320E40B +:101BF00013E05F93012756E008BB279520F451506E +:101C000021F4220FF9CF012756E000003B5A08BB10 +:101C1000D0F2279528F4515029F4220F0000F9CF73 +:101C2000012756E0279508BB20F4515021F4220FDC +:101C3000F9CF012756E02991332308BB21F60C7F09 +:101C400010917300110FC651D04008BB11F01093D2 +:101C50006C0010E21ABF016017B31C7F402F4C7F4D +:101C60005F9100C000C008BB17BB48BB82CF2FEFFD +:101C7000B0E8A0E04BE0B1BF00008EE599E0B0997C +:101C8000FECFB09BFECF0197B099FDCFB19B09C0AD +:101C900096B39370E9F796B39370D1F7B09BFECFEC +:101CA000ECCF97FF03C0BA1B819501C0BA0FA69570 +:101CB00039F4A0E428F4281710F031B7282FA1E058 +:101CC0004150C9F631BF00000895F201309711F478 +:101CD0008FEB9CEC21E00C0120935700E895112438 +:101CE000CF0102962C01089581B7282E14BE88E1F9 +:101CF00081BD87E081BDB89A2FE78CEF9AE0215033 +:101D000080409040E1F700C00000B8988AE58093D9 +:101D10006F008FEF8093600080B5826080BD8BB7CD +:101D200080628BBFC298712C312C412C512C14E64F +:101D3000C0EADFE086B3837009F014E6115029F49D +:101D40001092730010926C0092DF0AB605FE05C077 +:101D500061DE80E28ABF712C03C02197209751F782 +:101D6000A89522E032120CC0E0E8F9E1E054F10954 +:101D700083E080935700E8953097C1F7412C512CB0 +:101D8000832D803459F4F2013297E03889E1F80765 +:101D900050F485E080935700E89505C0843019F42D +:101DA000CD2B11F4EFC0312C80917200835087FD50 +:101DB00098C090916D009D3209F091C0883009F073 +:101DC0008EC083EC809361008AE580936F009091D0 +:101DD0007700907680917800992361F1811108C095 +:101DE00082E899E1909371008093700026E06CC0C6 +:101DF000813059F44114510409F44CC080917B00A6 +:101E0000807C482E50907C0045C0833081F48091C6 +:101E1000790090917A0059DF80917B0090917C004D +:101E200054DF842D8F73B1F580E4382E33C08F7367 +:101E3000382E30C09091790010926A00811106C04E +:101E400010926B008AE690E022E03AC0853019F4E7 +:101E50009093730027C08630F9F480917A00813026 +:101E600019F48AE999E104C0823041F488E899E1E3 +:101E7000909371008093700022E126C0833051F46A +:101E8000911108C08CEA99E19093710080937000E1 +:101E900024E01AC020E018C0883079F0893031F48D +:101EA000909375008AE690E020E00AC021E08A3035 +:101EB00009F020E08AE690E003C085E790E021E0A9 +:101EC000909371008093700080917E00811105C015 +:101ED00080917D00821708F4282F209360001092D3 +:101EE000720080916F0084FF31C0809160008F3F4D +:101EF00069F1C82F893008F0C8E08C1B809360001E +:101F00008091610098E8892780936100CC2391F04B +:101F1000E0917000F091710082E690E0DC01249184 +:101F20002D9331962C2F280F2A13F9CFF09371009F +:101F3000E09370006C2F82E690E068DDCC5FCC30DF +:101F400019F08FEF80936000C0936F00C30101967A +:101F50003C01803B944029F4EDE7F9E1E491EF3F47 +:101F600089F4862D8C7411F0BA9801C0BA9A0AB619 +:101F700005FEDDCE85E1B09B85E18150E1F780E291 +:101F80008ABFD5CEBA98B89A1BBE10BC21BE00003D +:041F9000F5CCFFCFBE +:040000030000198060  :00000001FF diff --git a/firmware/releases/t85_aggressive.hex b/firmware/releases/t85_aggressive.hex index ca675ac..930f147 100644 --- a/firmware/releases/t85_aggressive.hex +++ b/firmware/releases/t85_aggressive.hex @@ -1,6 +1,6 @@  :101A400017C01A3A4005930B0902120001010080E9  :101A50003209040000000000000012011001FF0024 -:101A60000008D01653070002000000010403090417 +:101A60000008D01653070102000000010403090416  :101A7000112420E0A0E6B0E001C01D92AC38B2070E  :101A8000E1F75BC1A82FB92F80E090E041E050EA78  :101A9000609530E009C02D9182279795879510F0C9 @@ -49,43 +49,43 @@  :101D400087E081BDBB9A2FEF85EA9EE0215080405D  :101D50009040E1F700C00000BB988AE580936F00D7  :101D60008FEF80936000AC9A8BB780628BBF712C31 -:101D7000312C412C512C14E1C5EDD4E186B388718E -:101D800009F014E1115029F41092730010926C00C4 -:101D9000A6DF0AB605FE03C08EDE712C03C02197B4 -:101DA000209761F7A89522E032120CC0E0E4FAE136 -:101DB000E054F10983E080935700E8953097C1F72C -:101DC000412C512C832D803459F4F2013297E034A8 -:101DD0008AE1F80750F485E080935700E89505C044 -:101DE000843019F4CD2B11F4E9C0312C80917200AC -:101DF000835087FD98C090916D009D3209F091C08D -:101E0000883009F08EC083EC809361008AE580936E -:101E10006F0090917700907680917800992361F11E -:101E2000811108C082E49AE1909371008093700060 -:101E300026E06CC0813059F44114510409F44CC0BF -:101E400080917B00807C482E50907C0045C0833080 -:101E500081F48091790090917A0064DF80917B0019 -:101E600090917C005FDF842D8F73B1F580E4382E74 -:101E700033C08F73382E30C09091790010926A0071 -:101E8000811106C010926B008AE690E022E03AC011 -:101E9000853019F49093730027C08630F9F480914F -:101EA0007A00813019F48AE59AE104C0823041F465 -:101EB00088E49AE1909371008093700022E126C03B -:101EC000833051F4911108C08CE69AE1909371002F -:101ED0008093700024E01AC020E018C0883079F0A8 -:101EE000893031F4909375008AE690E020E00AC0D2 -:101EF00021E08A3009F020E08AE690E003C085E71F -:101F000090E021E0909371008093700080917E00BA -:101F1000811105C080917D00821708F4282F20933D -:101F200060001092720080916F0084FF31C0809138 -:101F300060008F3F69F1C82F893008F0C8E08C1B22 -:101F4000809360008091610098E889278093610008 -:101F5000CC2391F0E0917000F091710082E690E066 -:101F6000DC0124912D9331962C2F280F2A13F9CFC1 -:101F7000F0937100E09370006C2F82E690E097DDA3 -:101F8000CC5FCC3019F08FEF80936000C0936F006E -:101F9000C30101963C01803B944029F4EDE3FAE152 -:101FA000E491EF3F59F40AB605FEE5CE80E2B4991C -:101FB00080E28150E1F780E28ABFDDCEBB9A1BBE92 -:061FC00015BA3CCDFFCF75 +:101D7000312C412C512C14E6C5EDD4E186B3887189 +:101D800009F014E6115029F41092730010926C00BF +:101D9000A6DF0AB605FE05C08EDE80E28ABF712C82 +:101DA00003C02197209751F7A89522E032120CC06A +:101DB000E0E4FAE1E054F10983E080935700E8950C +:101DC0003097C1F7412C512C832D803459F4F20106 +:101DD0003297E0348AE1F80750F485E080935700A9 +:101DE000E89505C0843019F4CD2B11F4E9C0312CED +:101DF00080917200835087FD98C090916D009D3254 +:101E000009F091C0883009F08EC083EC80936100A6 +:101E10008AE580936F0090917700907680917800AA +:101E2000992361F1811108C082E49AE190937100D5 +:101E30008093700026E06CC0813059F44114510445 +:101E400009F44CC080917B00807C482E50907C002F +:101E500045C0833081F48091790090917A0062DFEF +:101E600080917B0090917C005DDF842D8F73B1F5B4 +:101E700080E4382E33C08F73382E30C090917900B3 +:101E800010926A00811106C010926B008AE690E001 +:101E900022E03AC0853019F49093730027C0863051 +:101EA000F9F480917A00813019F48AE59AE104C04E +:101EB000823041F488E49AE190937100809370003D +:101EC00022E126C0833051F4911108C08CE69AE1DA +:101ED000909371008093700024E01AC020E018C035 +:101EE000883079F0893031F4909375008AE690E07B +:101EF00020E00AC021E08A3009F020E08AE690E084 +:101F000003C085E790E021E090937100809370001A +:101F100080917E00811105C080917D00821708F4B8 +:101F2000282F209360001092720080916F0084FF30 +:101F300031C0809160008F3F69F1C82F893008F06F +:101F4000C8E08C1B809360008091610098E889272D +:101F500080936100CC2391F0E0917000F0917100CA +:101F600082E690E0DC0124912D9331962C2F280FEE +:101F70002A13F9CFF0937100E09370006C2F82E682 +:101F800090E095DDCC5FCC3019F08FEF809360004E +:101F9000C0936F00C30101963C01803B944029F43B +:101FA000EDE3FAE1E491EF3F59F40AB605FEE3CE22 +:101FB0008CE1B39B8CE18150E1F780E28ABFDBCEFC +:0A1FC000BB9A1BBE15BA3ACDFFCF45  :0400000300001A409F  :00000001FF diff --git a/firmware/releases/t85_default.hex b/firmware/releases/t85_default.hex index 091c1b9..57dcb53 100644 --- a/firmware/releases/t85_default.hex +++ b/firmware/releases/t85_default.hex @@ -1,6 +1,6 @@  :1019800017C0197A4005930B09021200010100806B  :101990003209040000000000000012011001FF00E5 -:1019A0000008D016530700020000000104030904D8 +:1019A0000008D016530701020000000104030904D7  :1019B00011241FBECFE5D2E0CDBFDEBF20E0A0E600  :1019C000B0E001C01D92AC38B207E1F7AFC1A82F5B  :1019D000B92F80E090E041E050EA609530E009C026 @@ -61,43 +61,43 @@  :101D400087E081BDBB9A2FE28BE19FE0215080406C  :101D50009040E1F700C00000BB988AE580936F00D7  :101D60008FEF80936000AC9A8BB780628BBF712C31 -:101D7000312C412C512C14E1CCE7D5E186B388718C -:101D800009F014E1115029F41092730010926C00C4 -:101D900088DF0AB605FE03C033DE712C03C021972D -:101DA000209761F7A89522E032120CC0E0E8F9E133 -:101DB000E054F10983E080935700E8953097C1F72C -:101DC000412C512C832D803459F4F2013297E038A4 -:101DD00089E1F80750F485E080935700E89505C045 -:101DE000843019F4CD2B11F4E9C0312C80917200AC -:101DF000835087FD98C090916D009D3209F091C08D -:101E0000883009F08EC083EC809361008AE580936E -:101E10006F0090917700907680917800992361F11E -:101E2000811108C082E899E190937100809370005D -:101E300026E06CC0813059F44114510409F44CC0BF -:101E400080917B00807C482E50907C0045C0833080 -:101E500081F48091790090917A0051DF80917B002C -:101E600090917C004CDF842D8F73B1F580E4382E87 -:101E700033C08F73382E30C09091790010926A0071 -:101E8000811106C010926B008AE690E022E03AC011 -:101E9000853019F49093730027C08630F9F480914F -:101EA0007A00813019F48AE999E104C0823041F462 -:101EB00088E899E1909371008093700022E126C038 -:101EC000833051F4911108C08CEA99E1909371002C -:101ED0008093700024E01AC020E018C0883079F0A8 -:101EE000893031F4909375008AE690E020E00AC0D2 -:101EF00021E08A3009F020E08AE690E003C085E71F -:101F000090E021E0909371008093700080917E00BA -:101F1000811105C080917D00821708F4282F20933D -:101F200060001092720080916F0084FF31C0809138 -:101F300060008F3F69F1C82F893008F0C8E08C1B22 -:101F4000809360008091610098E889278093610008 -:101F5000CC2391F0E0917000F091710082E690E066 -:101F6000DC0124912D9331962C2F280F2A13F9CFC1 -:101F7000F0937100E09370006C2F82E690E03CDDFE -:101F8000CC5FCC3019F08FEF80936000C0936F006E -:101F9000C30101963C01803B944029F4EDE7F9E14F -:101FA000E491EF3F59F40AB605FEE5CE81E2B4991B -:101FB00081E28150E1F780E28ABFDDCEBB9A1BBE91 -:061FC00015BADCCCFFCFD6 +:101D7000312C412C512C14E6CCE7D5E186B3887187 +:101D800009F014E6115029F41092730010926C00BF +:101D900088DF0AB605FE05C033DE80E28ABF712CFB +:101DA00003C02197209751F7A89522E032120CC06A +:101DB000E0E8F9E1E054F10983E080935700E89509 +:101DC0003097C1F7412C512C832D803459F4F20106 +:101DD0003297E03889E1F80750F485E080935700A6 +:101DE000E89505C0843019F4CD2B11F4E9C0312CED +:101DF00080917200835087FD98C090916D009D3254 +:101E000009F091C0883009F08EC083EC80936100A6 +:101E10008AE580936F0090917700907680917800AA +:101E2000992361F1811108C082E899E190937100D2 +:101E30008093700026E06CC0813059F44114510445 +:101E400009F44CC080917B00807C482E50907C002F +:101E500045C0833081F48091790090917A004FDF02 +:101E600080917B0090917C004ADF842D8F73B1F5C7 +:101E700080E4382E33C08F73382E30C090917900B3 +:101E800010926A00811106C010926B008AE690E001 +:101E900022E03AC0853019F49093730027C0863051 +:101EA000F9F480917A00813019F48AE999E104C04B +:101EB000823041F488E899E190937100809370003A +:101EC00022E126C0833051F4911108C08CEA99E1D7 +:101ED000909371008093700024E01AC020E018C035 +:101EE000883079F0893031F4909375008AE690E07B +:101EF00020E00AC021E08A3009F020E08AE690E084 +:101F000003C085E790E021E090937100809370001A +:101F100080917E00811105C080917D00821708F4B8 +:101F2000282F209360001092720080916F0084FF30 +:101F300031C0809160008F3F69F1C82F893008F06F +:101F4000C8E08C1B809360008091610098E889272D +:101F500080936100CC2391F0E0917000F0917100CA +:101F600082E690E0DC0124912D9331962C2F280FEE +:101F70002A13F9CFF0937100E09370006C2F82E682 +:101F800090E03ADDCC5FCC3019F08FEF80936000A9 +:101F9000C0936F00C30101963C01803B944029F43B +:101FA000EDE7F9E1E491EF3F59F40AB605FEE3CE1F +:101FB0008DE1B39B8DE18150E1F780E28ABFDBCEFA +:0A1FC000BB9A1BBE15BADACCFFCFA6  :040000030000198060  :00000001FF diff --git a/firmware/usbconfig.h b/firmware/usbconfig.h index 65864df..7ca31c5 100644 --- a/firmware/usbconfig.h +++ b/firmware/usbconfig.h @@ -184,7 +184,18 @@ return;\  /* define this macro to 1 if you want the function usbMeasureFrameLength()   * compiled in. This function can be used to calibrate the AVR's RC oscillator.   */ -#define USB_USE_FAST_CRC                0 +  + +#if USB_CFG_CLOCK_KHZ<16000 +    #define USB_USE_FAST_CRC 1 +#else +    #define USB_USE_FAST_CRC 0 +#endif + +/* If the CPU clock is below 16Mhz you have to use the faster CRC routines. + * otherwise time outs may occur on USB3.0 ports. This adds 20 bytes. + */  +   /* The assembler module has two implementations for the CRC algorithm. One is   * faster, the other is smaller. This CRC routine is only used for transmitted   * messages where timing is not critical. The faster routine needs 31 cycles diff --git a/firmware/usbdrv/usbdrvasm.S b/firmware/usbdrv/usbdrvasm.S index 32ce8ef..d927564 100644 --- a/firmware/usbdrv/usbdrvasm.S +++ b/firmware/usbdrv/usbdrvasm.S @@ -142,10 +142,14 @@ RTMODEL "__rt_version", "3"  #endif +  #if USB_USE_FAST_CRC  ; This implementation is faster, but has bigger code size -; Thanks to Slawomir Fras (BoskiDialer) for this code! +; This version has been optimized in size compared to the original +; fast CRC by Shay Green, January 2014. + +; Thanks to Slawomir Fras (BoskiDialer) for the original contribution.  ; It implements the following C pseudo-code:  ; unsigned table(unsigned char x)  ; { @@ -174,36 +178,31 @@ RTMODEL "__rt_version", "3"  ;   scratch r23  ;   resCrc  r24+r25 / r16+r17  ;   ptr     X / Z +  usbCrc16: -    mov     ptrL, argPtrL -    mov     ptrH, argPtrH +    movw    ptrL, argPtrL      ldi     resCrcL, 0xFF      ldi     resCrcH, 0xFF +    clr     bitCnt          ; zero      rjmp    usbCrc16LoopTest  usbCrc16ByteLoop:      ld      byte, ptr+ -    eor     resCrcL, byte   ; resCrcL is now 'x' in table() -    mov     byte, resCrcL   ; compute parity of 'x' +    eor     byte, resCrcL   ; scratch is now 'x' in table() +    mov     scratch, byte   ; compute parity of 'x'      swap    byte -    eor     byte, resCrcL -    mov     scratch, byte +    eor     byte, scratch +    mov     resCrcL, byte      lsr     byte      lsr     byte -    eor     byte, scratch +    eor     byte, resCrcL      inc     byte -    lsr     byte -    andi    byte, 1         ; byte is now parity(x) -    mov     scratch, resCrcL -    mov     resCrcL, resCrcH -    eor     resCrcL, byte   ; low byte of if(parity(x)) value ^= 0xc001; -    neg     byte -    andi    byte, 0xc0 -    mov     resCrcH, byte   ; high byte of if(parity(x)) value ^= 0xc001; -    clr     byte -    lsr     scratch -    ror     byte -    eor     resCrcH, scratch -    eor     resCrcL, byte +    andi    byte, 2        ; byte is now parity(x) << 1 +    cp      bitCnt, byte   ; c = (byte != 0), then put in high bit +    ror     scratch        ; so that after xoring, shifting, and xoring, it gives +    ror     byte           ; the desired 0xC0 with resCrcH +    mov     resCrcL, byte +    eor     resCrcL, resCrcH +    mov     resCrcH, scratch      lsr     scratch      ror     byte      eor     resCrcH, scratch @@ -214,8 +213,8 @@ usbCrc16LoopTest:      com     resCrcL      com     resCrcH      ret - -#else   /* USB_USE_FAST_CRC */ +     +#else   // USB_USE_FAST_CRC   ; This implementation is slower, but has less code size  ; @@ -258,7 +257,7 @@ usbCrcReady:      ret  ; Thanks to Reimar Doeffinger for optimizing this CRC routine! -#endif /* USB_USE_FAST_CRC */ +#endif // USB_USE_FAST_CRC   ; extern unsigned usbCrc16Append(unsigned char *data, unsigned char len);  usbCrc16Append: | 
