From db122973198d406754aabcb1794609111dc29de8 Mon Sep 17 00:00:00 2001 From: Tim Date: Sun, 15 Dec 2013 12:13:46 +0100 Subject: clarify user space --- Readme.txt | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/Readme.txt b/Readme.txt index 051e54c..e6f19ab 100644 --- a/Readme.txt +++ b/Readme.txt @@ -1,4 +1,3 @@ - Micronucleus ============= Micronucleus is a bootloader designed for AVR tiny 85 chips with a minimal usb interface, cross platform libusb-based program upload tool, and a strong emphasis on bootloader compactness. The project aims to release a 2.0kb usb bootloader, and has reached this goal with the latest release. By using the tinyvector mechanism designed by Embedded Creations in their USBaspLoader-tiny85 project, combined with the simplicity of Objective Development's bootloadHID and a unique bare bones usb protocol, Micronucleus is the smallest usb bootloader available for tiny85 at the time of writing. @@ -16,7 +15,7 @@ This is release 1.10. Please use this at your own risk. The last official releas Changes compared to v1.06: • Major size optimization and code reorganization. - • The size was reduced to 1878 bytes, allowing 256 bytes more user space. + • The size was reduced to 1878 bytes, allowing 6314 bytes user space (256 bytes more than in v1.06). • The bootloader will disconnect from USB on exit. See release notes (/firmware/releases/release notes.txt) for details. -- cgit v1.2.3 From 22506b5f1b1582e99c3b9c50cdb4493e0e20d1dd Mon Sep 17 00:00:00 2001 From: Bluebie Date: Mon, 16 Dec 2013 13:22:26 +1100 Subject: renamed LEDonPB1 release to fit established naming convention --- firmware/releases/micronucleus-1.10-ledpb1.hex | 122 +++++++++++++++++++++++ firmware/releases/micronucleus-1.10_LEDonPB1.hex | 122 ----------------------- 2 files changed, 122 insertions(+), 122 deletions(-) create mode 100644 firmware/releases/micronucleus-1.10-ledpb1.hex delete mode 100644 firmware/releases/micronucleus-1.10_LEDonPB1.hex diff --git a/firmware/releases/micronucleus-1.10-ledpb1.hex b/firmware/releases/micronucleus-1.10-ledpb1.hex new file mode 100644 index 0000000..074a0d6 --- /dev/null +++ b/firmware/releases/micronucleus-1.10-ledpb1.hex @@ -0,0 +1,122 @@ +:0800000057CC56CC8CCC54CC3B +:1018800017C016C04CC014C009021200010100802C +:101890003209040000000000000012011001FF00E6 +:1018A0000008D01653070A010000000104030904D0 +:1018B00011241FBECFE5D2E0CDBFDEBF00EB0F93FA +:1018C00007E00F9310E0A0E6B0E0EAEDFFE102C010 +:1018D00005900D92A636B107D9F720E0A6E6B0E054 +:1018E00001C01D92AB39B207E1F7ECC1A82FB92FA7 +:1018F00080E090E041E050EA609530E009C02D9131 +:1019000082279795879510F084279527305EC8F336 +:101910006F5FA8F30895EADF8D939D930895CF93A9 +:10192000CFB7CF93C0915F02C03B21F4C0915E025C +:10193000C73021F0CF91CFBFCF91A1CFCC27C39596 +:10194000B39BE9F7B39B0BC0B39B09C0B39B07C024 +:10195000B39B05C0B39B03C0B39B01C0D3C00F9220 +:10196000DF93C0917E00DD27CB57DF4F012EB39B65 +:1019700003C0DF910F90E6CF2F930F931F934F93E8 +:101980002FEF4F6F06B303FB20F95F933F9350E0B7 +:101990003BE065C016B30126502953FDC89556B3E8 +:1019A000012703FB25F92F7306B3B1F05027102749 +:1019B00013FB26F906B22230F0F000C016B301275F +:1019C00003FB27F90126502906B22430E8F54F77AA +:1019D000206816B30000F6CF50274F7D206206B274 +:1019E000102F000000C006B300265029102713FB5B +:1019F00026F906B2E2CF4F7B06B3206400C0DACFEF +:101A000001265029187106B269F14E7F2160012F1D +:101A100016B328C0002650294D7F06B22260102F31 +:101A200029C0012650294B7F06B22460012F2DC00A +:101A300016B301265029477F2860000006B22EC049 +:101A40004F7E06B3206130C0422706B3499300267B +:101A50005029102706B24FEF13FB20F9297F16B348 +:101A600079F2187159F10126502906B2012703FBBA +:101A700021F9237F06B371F2002650293150D0F0AE +:101A800006B2102713FB22F9277E16B351F2012666 +:101A90005029012703FB06B223F92F7C49F20000ED +:101AA00006B3102713FB24F90026502906B22F791C +:101AB00039F270CF10E21ABF002717C03B503195A2 +:101AC000C31BD04010E21ABF0881033CF9F00B346D +:101AD000E9F020917C001981110F1213EDCF093626 +:101AE00051F10D3211F0013E39F7009383003F911F +:101AF0005F914F911F910F912F91DF910F90CAB776 +:101B0000C5FD1DCFCF91CFBFCF91189520918300F8 +:101B1000222369F310918100112321F5343022F141 +:101B20003093810020937D0010917E003BE0311BBB +:101B300030937E0019C00091810001309CF40AE5C9 +:101B40003091600034FD11C000936000C1E7D0E027 +:101B500010C0052710E000C021C0052710E0C8957F +:101B600008BB14C03AE501C032ED032EC0E0D0E05E +:101B700032E017B31861C39A08B317BB58E120E8E5 +:101B80004FEF20FF052708BB279517951C3F28F727 +:101B900000004552B0F720FF0527279508BB179591 +:101BA0001C3FB8F629913A9561F7077E10918200A3 +:101BB000110F08BBC250D04011F010937C0010E20E +:101BC0001ABF086017B3177E402F477E54E05A951E +:101BD000F1F708BB17BB48BB8ACFF8942FEFB0E8EA +:101BE000A0E44AE0B1BF000081EE9CE0B399FECFD3 +:101BF000B39BFECF0197B399FDCF97FF03C0BA1BEC +:101C0000819501C0BA0FA69529F4281710F031B7B5 +:101C1000282FA1E0415031F731BF0000789408959A +:101C2000F894E0916A00F0916B00329785E0809320 +:101C30005700E89578940895E0916A00F0916B0060 +:101C4000309729F490936D0080936C0007C0E430C6 +:101C5000F10539F490936F0080936E008FE39CEC54 +:101C60001CC0EC3728E1F20739F480916C009091A8 +:101C70006D008E539C4F11C0EE3728E1F20739F406 +:101C800080916E0090916F008D539C4F06C0EA3793 +:101C900028E1F20711F481B790E02FB7F89430975C +:101CA00021F431E130935700E89531E00C01309395 +:101CB0005700E89511243296F0936B00E0936A0088 +:101CC0002FBF089514BE88E10FB6F89481BD11BCF2 +:101CD0000FBEC198BB9A88E893E1ECE9F1E0319737 +:101CE000F1F70197D1F7BB98AC9A8BB780628BBFA5 +:101CF000789400918100035007FDBAC080917E0066 +:101D0000CCE0D0E0C81BD109CB57DF4F80917D00DC +:101D10008D3209F08EC0083009F0A8C083EC8093A2 +:101D200071008AE580936000109269002881922FEB +:101D300090768981992319F110926700811108C06A +:101D400082E690E09093800080937F0014E067C06B +:101D5000813051F48C819D8190936B0080936A0057 +:101D600027FD58C01FEF57C090916800823011F4D2 +:101D7000916001C094609093680010E050C09A8117 +:101D800010927A00811106C010927B008AE790E0E1 +:101D900012E03BC0853019F4909382002CC086304D +:101DA00009F58B81813019F48AE998E104C0823009 +:101DB00041F488E898E19093800080937F0012E1DD +:101DC0000DC0833051F4911108C08CEA98E19093D2 +:101DD000800080937F0014E001C010E080E48093D5 +:101DE00069001DC0883059F0893019F4909384003F +:101DF00002C08A3039F08AE790E010E006C084E83B +:101E000090E002C08AE790E011E090938000809318 +:101E10007F0005C01E8180E88093690007C08F8124 +:101E2000811104C08E81811708F4182F109361006E +:101E30001DC08091690087FF19C080916A00909150 +:101E40006B008038984128F080916A008F7339F0D8 +:101E50000DC089919991F0DE025079F7F5CF80910C +:101E60006800826080936800109261001092810087 +:101E70008091600084FF43C0809161008F3F09F42E +:101E80003EC0082F893008F008E0801B8093610075 +:101E90008091710098E8892780937100002319F1DF +:101EA000E0917F00F09180008091690086FF0BC077 +:101EB000A2E7B0E084918D93319682E790E0800FA5 +:101EC0008A13F8CF0CC0CF01A2E7B0E0FC0121914A +:101ED000CF012D9322E730E0200F2A13F7CFF093A4 +:101EE0008000E0937F00602F82E790E014DD0C5FBC +:101EF0000C3019F08FEF809361000093600084E153 +:101F000096B3987131F48150D9F7109282001092F3 +:101F10007C0001E0811100E080917000801739F0B1 +:101F2000011103C01092670058DE009370008CE925 +:101F300091E00197F1F70091680000FF17C0F89455 +:101F4000E0E8F8E1E054F10983E080935700E89578 +:101F50003097C1F710926B0010926A0088E0F82E5B +:101F60008FEF9FEF69DEFA94D9F75ADE01FF05C0C3 +:101F70008AE390E20197F1F753DE02FF13C0B998AC +:101F800082E291EA0197F1F7F894BB9A1BBE15BA69 +:101F900010925F02EAE7F8E1E4918E2F81508E3FC4 +:101FA000C0F019C010926800809167008D7011F028 +:101FB000B99801C0B99A8091660090916700019626 +:101FC000909367008093660080369A4E08F491CE15 +:0A1FD000D6CFE1BF000052CC22CFB3 +:061FDA005AFF187A4008CE +:040000030000188061 +:00000001FF diff --git a/firmware/releases/micronucleus-1.10_LEDonPB1.hex b/firmware/releases/micronucleus-1.10_LEDonPB1.hex deleted file mode 100644 index 074a0d6..0000000 --- a/firmware/releases/micronucleus-1.10_LEDonPB1.hex +++ /dev/null @@ -1,122 +0,0 @@ -:0800000057CC56CC8CCC54CC3B -:1018800017C016C04CC014C009021200010100802C -:101890003209040000000000000012011001FF00E6 -:1018A0000008D01653070A010000000104030904D0 -:1018B00011241FBECFE5D2E0CDBFDEBF00EB0F93FA -:1018C00007E00F9310E0A0E6B0E0EAEDFFE102C010 -:1018D00005900D92A636B107D9F720E0A6E6B0E054 -:1018E00001C01D92AB39B207E1F7ECC1A82FB92FA7 -:1018F00080E090E041E050EA609530E009C02D9131 -:1019000082279795879510F084279527305EC8F336 -:101910006F5FA8F30895EADF8D939D930895CF93A9 -:10192000CFB7CF93C0915F02C03B21F4C0915E025C -:10193000C73021F0CF91CFBFCF91A1CFCC27C39596 -:10194000B39BE9F7B39B0BC0B39B09C0B39B07C024 -:10195000B39B05C0B39B03C0B39B01C0D3C00F9220 -:10196000DF93C0917E00DD27CB57DF4F012EB39B65 -:1019700003C0DF910F90E6CF2F930F931F934F93E8 -:101980002FEF4F6F06B303FB20F95F933F9350E0B7 -:101990003BE065C016B30126502953FDC89556B3E8 -:1019A000012703FB25F92F7306B3B1F05027102749 -:1019B00013FB26F906B22230F0F000C016B301275F -:1019C00003FB27F90126502906B22430E8F54F77AA -:1019D000206816B30000F6CF50274F7D206206B274 -:1019E000102F000000C006B300265029102713FB5B -:1019F00026F906B2E2CF4F7B06B3206400C0DACFEF -:101A000001265029187106B269F14E7F2160012F1D -:101A100016B328C0002650294D7F06B22260102F31 -:101A200029C0012650294B7F06B22460012F2DC00A -:101A300016B301265029477F2860000006B22EC049 -:101A40004F7E06B3206130C0422706B3499300267B -:101A50005029102706B24FEF13FB20F9297F16B348 -:101A600079F2187159F10126502906B2012703FBBA -:101A700021F9237F06B371F2002650293150D0F0AE -:101A800006B2102713FB22F9277E16B351F2012666 -:101A90005029012703FB06B223F92F7C49F20000ED -:101AA00006B3102713FB24F90026502906B22F791C -:101AB00039F270CF10E21ABF002717C03B503195A2 -:101AC000C31BD04010E21ABF0881033CF9F00B346D -:101AD000E9F020917C001981110F1213EDCF093626 -:101AE00051F10D3211F0013E39F7009383003F911F -:101AF0005F914F911F910F912F91DF910F90CAB776 -:101B0000C5FD1DCFCF91CFBFCF91189520918300F8 -:101B1000222369F310918100112321F5343022F141 -:101B20003093810020937D0010917E003BE0311BBB -:101B300030937E0019C00091810001309CF40AE5C9 -:101B40003091600034FD11C000936000C1E7D0E027 -:101B500010C0052710E000C021C0052710E0C8957F -:101B600008BB14C03AE501C032ED032EC0E0D0E05E -:101B700032E017B31861C39A08B317BB58E120E8E5 -:101B80004FEF20FF052708BB279517951C3F28F727 -:101B900000004552B0F720FF0527279508BB179591 -:101BA0001C3FB8F629913A9561F7077E10918200A3 -:101BB000110F08BBC250D04011F010937C0010E20E -:101BC0001ABF086017B3177E402F477E54E05A951E -:101BD000F1F708BB17BB48BB8ACFF8942FEFB0E8EA -:101BE000A0E44AE0B1BF000081EE9CE0B399FECFD3 -:101BF000B39BFECF0197B399FDCF97FF03C0BA1BEC -:101C0000819501C0BA0FA69529F4281710F031B7B5 -:101C1000282FA1E0415031F731BF0000789408959A -:101C2000F894E0916A00F0916B00329785E0809320 -:101C30005700E89578940895E0916A00F0916B0060 -:101C4000309729F490936D0080936C0007C0E430C6 -:101C5000F10539F490936F0080936E008FE39CEC54 -:101C60001CC0EC3728E1F20739F480916C009091A8 -:101C70006D008E539C4F11C0EE3728E1F20739F406 -:101C800080916E0090916F008D539C4F06C0EA3793 -:101C900028E1F20711F481B790E02FB7F89430975C -:101CA00021F431E130935700E89531E00C01309395 -:101CB0005700E89511243296F0936B00E0936A0088 -:101CC0002FBF089514BE88E10FB6F89481BD11BCF2 -:101CD0000FBEC198BB9A88E893E1ECE9F1E0319737 -:101CE000F1F70197D1F7BB98AC9A8BB780628BBFA5 -:101CF000789400918100035007FDBAC080917E0066 -:101D0000CCE0D0E0C81BD109CB57DF4F80917D00DC -:101D10008D3209F08EC0083009F0A8C083EC8093A2 -:101D200071008AE580936000109269002881922FEB -:101D300090768981992319F110926700811108C06A -:101D400082E690E09093800080937F0014E067C06B -:101D5000813051F48C819D8190936B0080936A0057 -:101D600027FD58C01FEF57C090916800823011F4D2 -:101D7000916001C094609093680010E050C09A8117 -:101D800010927A00811106C010927B008AE790E0E1 -:101D900012E03BC0853019F4909382002CC086304D -:101DA00009F58B81813019F48AE998E104C0823009 -:101DB00041F488E898E19093800080937F0012E1DD -:101DC0000DC0833051F4911108C08CEA98E19093D2 -:101DD000800080937F0014E001C010E080E48093D5 -:101DE00069001DC0883059F0893019F4909384003F -:101DF00002C08A3039F08AE790E010E006C084E83B -:101E000090E002C08AE790E011E090938000809318 -:101E10007F0005C01E8180E88093690007C08F8124 -:101E2000811104C08E81811708F4182F109361006E -:101E30001DC08091690087FF19C080916A00909150 -:101E40006B008038984128F080916A008F7339F0D8 -:101E50000DC089919991F0DE025079F7F5CF80910C -:101E60006800826080936800109261001092810087 -:101E70008091600084FF43C0809161008F3F09F42E -:101E80003EC0082F893008F008E0801B8093610075 -:101E90008091710098E8892780937100002319F1DF -:101EA000E0917F00F09180008091690086FF0BC077 -:101EB000A2E7B0E084918D93319682E790E0800FA5 -:101EC0008A13F8CF0CC0CF01A2E7B0E0FC0121914A -:101ED000CF012D9322E730E0200F2A13F7CFF093A4 -:101EE0008000E0937F00602F82E790E014DD0C5FBC -:101EF0000C3019F08FEF809361000093600084E153 -:101F000096B3987131F48150D9F7109282001092F3 -:101F10007C0001E0811100E080917000801739F0B1 -:101F2000011103C01092670058DE009370008CE925 -:101F300091E00197F1F70091680000FF17C0F89455 -:101F4000E0E8F8E1E054F10983E080935700E89578 -:101F50003097C1F710926B0010926A0088E0F82E5B -:101F60008FEF9FEF69DEFA94D9F75ADE01FF05C0C3 -:101F70008AE390E20197F1F753DE02FF13C0B998AC -:101F800082E291EA0197F1F7F894BB9A1BBE15BA69 -:101F900010925F02EAE7F8E1E4918E2F81508E3FC4 -:101FA000C0F019C010926800809167008D7011F028 -:101FB000B99801C0B99A8091660090916700019626 -:101FC000909367008093660080369A4E08F491CE15 -:0A1FD000D6CFE1BF000052CC22CFB3 -:061FDA005AFF187A4008CE -:040000030000188061 -:00000001FF -- cgit v1.2.3 From be17f02352ca73af8325828b6e0e242b5d764fdc Mon Sep 17 00:00:00 2001 From: Bluebie Date: Mon, 16 Dec 2013 13:22:57 +1100 Subject: upgrade: hacked to work with new preinitialized firmwares --- upgrade/generate-data.rb | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/upgrade/generate-data.rb b/upgrade/generate-data.rb index c54f679..875870c 100644 --- a/upgrade/generate-data.rb +++ b/upgrade/generate-data.rb @@ -7,9 +7,12 @@ puts data.instance_variable_get(:@bytes).inspect data = data.bytes # find start address -start_address = 0 +start_address = 16 # skip past baked in trampoline - upgrade firmware generates one anyway! +# TODO: Verify jump table? or store it in the upgrade firmware for verbatim installation? start_address += 1 while data[start_address] == 0xFF +raise "Seems to be junk data quite early in the bootloader" unless start_address > 100 + # trim blank padding data from start of data start_address.times { data.shift } @@ -20,11 +23,13 @@ puts "Length: #{data.length}" puts "Start address: #{start_address}" File.open "bootloader_data.c", "w" do |file| - file.puts "// This file contains the bootloader data itself and the address to install the bootloader at" - file.puts "// Use generate-data.rb with ruby 1.9 to generate these values from a hex file" - file.puts "// Generated from #{ARGV.first} at #{Time.now}" + file.puts "// This file contains the bootloader data itself and the address to" + file.puts "// install the bootloader" + file.puts "// Use generate-data.rb with ruby 1.9 or 2.0 to generate these" + file.puts "// values from a hex file" + file.puts "// Generated from #{ARGV.first} at #{Time.now} by #{ENV['USER']}" file.puts "" - file.puts "uint16_t bootloader_data[#{data.length / 2}] PROGMEM = {" + file.puts "const uint16_t bootloader_data[#{data.length / 2}] PROGMEM = {" file.puts data.each_slice(2).map { |big_end, little_end| "0x#{ ((little_end * 256) + big_end).to_s(16).rjust(4, '0') }" }.join(', ') -- cgit v1.2.3 From 5ec425e04545acec1c70222dfbc79d708e85bfae Mon Sep 17 00:00:00 2001 From: Bluebie Date: Mon, 16 Dec 2013 13:23:40 +1100 Subject: upgrade: compatible with newer versions of AVR-GCC --- upgrade/upgrade.c | 1 + 1 file changed, 1 insertion(+) diff --git a/upgrade/upgrade.c b/upgrade/upgrade.c index 2541f09..698ed28 100644 --- a/upgrade/upgrade.c +++ b/upgrade/upgrade.c @@ -30,6 +30,7 @@ void secure_interrupt_vector_table(void); void write_new_bootloader(void); void forward_interrupt_vector_table(void); void beep(void); +void reboot(void); void load_table(uint16_t address, uint16_t words[SPM_PAGESIZE / 2]); void erase_page(uint16_t address); -- cgit v1.2.3 From e7d59294421339a9b0f3e3ca5b296a5beb57b9f3 Mon Sep 17 00:00:00 2001 From: Bluebie Date: Mon, 16 Dec 2013 13:24:33 +1100 Subject: upgrade: added 1.10 release candidate builds --- upgrade/bootloader_data.c | 14 +- .../releases/micronucleus-1.10-ledpb1-upgrade.hex | 168 +++++++++++++++++++++ upgrade/releases/micronucleus-1.10-upgrade.hex | 167 ++++++++++++++++++++ 3 files changed, 343 insertions(+), 6 deletions(-) create mode 100644 upgrade/releases/micronucleus-1.10-ledpb1-upgrade.hex create mode 100644 upgrade/releases/micronucleus-1.10-upgrade.hex diff --git a/upgrade/bootloader_data.c b/upgrade/bootloader_data.c index 2be4ec1..c0c5447 100644 --- a/upgrade/bootloader_data.c +++ b/upgrade/bootloader_data.c @@ -1,9 +1,11 @@ -// This file contains the bootloader data itself and the address to install the bootloader at -// Use generate-data.rb with ruby 1.9 to generate these values from a hex file -// Generated from ../firmware/main.hex at 2013-03-06 21:20:35 +1100 +// This file contains the bootloader data itself and the address to +// install the bootloader +// Use generate-data.rb with ruby 1.9 or 2.0 to generate these +// values from a hex file +// Generated from ../firmware/releases/micronucleus-1.10_LEDonPB1.hex at 2013-12-16 13:16:29 +1100 by bluebie -uint16_t bootloader_data[1076] PROGMEM = { -0xc022, 0xc040, 0xc06c, 0xc03e, 0xc03d, 0xc03c, 0xc03b, 0xc03a, 0xc039, 0xc038, 0xc037, 0xc036, 0xc035, 0xc034, 0xc033, 0x0304, 0x0409, 0x0112, 0x0110, 0x00ff, 0x0800, 0x16d0, 0x0753, 0x0106, 0x0000, 0x0100, 0x0209, 0x0012, 0x0101, 0x8000, 0x0932, 0x0004, 0x0000, 0x0000, 0x0000, 0x2411, 0xbe1f, 0xe5cf, 0xe0d2, 0xbfde, 0xbfcd, 0xeb00, 0x930f, 0xe007, 0x930f, 0xe010, 0xe6a0, 0xe0b0, 0xeee2, 0xe1ff, 0xc002, 0x9005, 0x920d, 0x36a6, 0x07b1, 0xf7d9, 0xe010, 0xe6a6, 0xe0b0, 0xc001, 0x921d, 0x39ac, 0x07b1, 0xf7e1, 0xd1e7, 0xc3ed, 0xcfbd, 0x2fa8, 0x2fb9, 0xe080, 0xe090, 0xe041, 0xea50, 0x9560, 0xe030, 0xc009, 0x912d, 0x2782, 0x9597, 0x9587, 0xf010, 0x2784, 0x2795, 0x5e30, 0xf3c8, 0x5f6f, 0xf3a8, 0x9508, 0xdfea, 0x938d, 0x939d, 0x9508, 0xe0a6, 0x2788, 0x2799, 0x95aa, 0xf069, 0x9701, 0xf3e1, 0x99b3, 0xcffc, 0x9bb3, 0xcffe, 0xe081, 0x2799, 0xb3a6, 0x9601, 0xf011, 0x71a8, 0xf7d9, 0x9508, 0x93cf, 0xb7cf, 0x93cf, 0x91c0, 0x025f, 0x3bc0, 0xf421, 0x91c0, 0x025e, 0x30c7, 0xf021, 0x91cf, 0xbfcf, 0x91cf, 0xcf81, 0x27cc, 0x95c3, 0x9bb3, 0xf7e9, 0x9bb3, 0xc00b, 0x9bb3, 0xc009, 0x9bb3, 0xc007, 0x9bb3, 0xc005, 0x9bb3, 0xc003, 0x9bb3, 0xc001, 0xc0d3, 0x920f, 0x93df, 0x91c0, 0x007f, 0x27dd, 0x57ca, 0x4fdf, 0x2e01, 0x9bb3, 0xc003, 0x91df, 0x900f, 0xcfe6, 0x932f, 0x930f, 0x931f, 0x934f, 0xef2f, 0x6f4f, 0xb306, 0xfb03, 0xf920, 0x935f, 0x933f, 0xe050, 0xe03b, 0xc065, 0xb316, 0x2601, 0x2950, 0xfd53, 0x95c8, 0xb356, 0x2701, 0xfb03, 0xf925, 0x732f, 0xb306, 0xf0b1, 0x2750, 0x2710, 0xfb13, 0xf926, 0xb206, 0x3022, 0xf0f0, 0xc000, 0xb316, 0x2701, 0xfb03, 0xf927, 0x2601, 0x2950, 0xb206, 0x3024, 0xf5e8, 0x774f, 0x6820, 0xb316, 0x0000, 0xcff6, 0x2750, 0x7d4f, 0x6220, 0xb206, 0x2f10, 0x0000, 0xc000, 0xb306, 0x2600, 0x2950, 0x2710, 0xfb13, 0xf926, 0xb206, 0xcfe2, 0x7b4f, 0xb306, 0x6420, 0xc000, 0xcfda, 0x2601, 0x2950, 0x7118, 0xb206, 0xf169, 0x7f4e, 0x6021, 0x2f01, 0xb316, 0xc028, 0x2600, 0x2950, 0x7f4d, 0xb206, 0x6022, 0x2f10, 0xc029, 0x2601, 0x2950, 0x7f4b, 0xb206, 0x6024, 0x2f01, 0xc02d, 0xb316, 0x2601, 0x2950, 0x7f47, 0x6028, 0x0000, 0xb206, 0xc02e, 0x7e4f, 0xb306, 0x6120, 0xc030, 0x2742, 0xb306, 0x9349, 0x2600, 0x2950, 0x2710, 0xb206, 0xef4f, 0xfb13, 0xf920, 0x7f29, 0xb316, 0xf279, 0x7118, 0xf159, 0x2601, 0x2950, 0xb206, 0x2701, 0xfb03, 0xf921, 0x7f23, 0xb306, 0xf271, 0x2600, 0x2950, 0x5031, 0xf0d0, 0xb206, 0x2710, 0xfb13, 0xf922, 0x7e27, 0xb316, 0xf251, 0x2601, 0x2950, 0x2701, 0xfb03, 0xb206, 0xf923, 0x7c2f, 0xf249, 0x0000, 0xb306, 0x2710, 0xfb13, 0xf924, 0x2600, 0x2950, 0xb206, 0x792f, 0xf239, 0xcf70, 0xe210, 0xbf1a, 0x2700, 0xc017, 0x503b, 0x9531, 0x1bc3, 0x40d0, 0xe210, 0xbf1a, 0x8108, 0x3c03, 0xf0f9, 0x340b, 0xf0e9, 0x9120, 0x007d, 0x8119, 0x0f11, 0x1312, 0xcfed, 0x3609, 0xf151, 0x320d, 0xf011, 0x3e01, 0xf739, 0x9300, 0x0084, 0x913f, 0x915f, 0x914f, 0x911f, 0x910f, 0x912f, 0x91df, 0x900f, 0xb7ca, 0xfdc5, 0xcf1d, 0x91cf, 0xbfcf, 0x91cf, 0x9518, 0x9120, 0x0084, 0x2322, 0xf369, 0x9110, 0x0082, 0x2311, 0xf521, 0x3034, 0xf122, 0x9330, 0x0082, 0x9320, 0x007e, 0x9110, 0x007f, 0xe03b, 0x1b31, 0x9330, 0x007f, 0xc019, 0x9100, 0x0082, 0x3001, 0xf49c, 0xe50a, 0x9130, 0x0060, 0xfd34, 0xc011, 0x9300, 0x0060, 0xe7c2, 0xe0d0, 0xc010, 0x2705, 0xe010, 0xc000, 0xc021, 0x2705, 0xe010, 0x95c8, 0xbb08, 0xc014, 0xe53a, 0xc001, 0xed32, 0x2e03, 0xe0c0, 0xe0d0, 0xe032, 0xb317, 0x6118, 0x9ac3, 0xb308, 0xbb17, 0xe158, 0xe820, 0xef4f, 0xff20, 0x2705, 0xbb08, 0x9527, 0x9517, 0x3f1c, 0xf728, 0x0000, 0x5245, 0xf7b0, 0xff20, 0x2705, 0x9527, 0xbb08, 0x9517, 0x3f1c, 0xf6b8, 0x9129, 0x953a, 0xf761, 0x7e07, 0x9110, 0x0083, 0x0f11, 0xbb08, 0x50c2, 0x40d0, 0xf011, 0x9310, 0x007d, 0xe210, 0xbf1a, 0x6008, 0xb317, 0x7e17, 0x2f40, 0x7e47, 0xe054, 0x955a, 0xf7f1, 0xbb08, 0xbb17, 0xbb48, 0xcf8a, 0xe081, 0x9380, 0x0069, 0x94f8, 0x91e0, 0x0070, 0x91f0, 0x0071, 0x9732, 0xe085, 0x9380, 0x0057, 0x95e8, 0xb607, 0xfc00, 0xcffd, 0x9478, 0x9508, 0x019c, 0x91e0, 0x0070, 0x91f0, 0x0071, 0x9730, 0xf189, 0x30e4, 0x05f1, 0xf0f1, 0xe187, 0x37ec, 0x07f8, 0xf439, 0x9120, 0x006c, 0x9130, 0x006d, 0x5b2e, 0x4f3b, 0xc015, 0xe187, 0x37ee, 0x07f8, 0xf439, 0x9120, 0x006e, 0x9130, 0x006f, 0x5b2d, 0x4f3b, 0xc00a, 0xe187, 0x37ea, 0x07f8, 0xf431, 0xb781, 0x2f28, 0xe030, 0xc002, 0xeb2f, 0xec3b, 0x94f8, 0xe081, 0x0109, 0x9380, 0x0057, 0x95e8, 0x2411, 0x9478, 0x9632, 0x93f0, 0x0071, 0x93e0, 0x0070, 0x9508, 0xe181, 0x9380, 0x0057, 0x95e8, 0xcfeb, 0xef8f, 0xef9f, 0xdfc0, 0x9180, 0x0070, 0x9190, 0x0071, 0x738f, 0x7090, 0x2b89, 0xf7a9, 0xcfa5, 0x931f, 0x93cf, 0x93df, 0xe188, 0xb60f, 0x94f8, 0xbd81, 0xbc11, 0xbe0f, 0xe0e0, 0xe0f0, 0x9185, 0x9194, 0x5b8f, 0x4c9b, 0xf439, 0xe0e4, 0xe0f0, 0x9185, 0x9194, 0x5b8f, 0x4c9b, 0xf009, 0xdfdc, 0x9210, 0x0071, 0x9210, 0x0070, 0x9abd, 0x9ac5, 0xe282, 0xea91, 0x9701, 0xf7f1, 0x99b5, 0xc17d, 0x9aac, 0xb78b, 0x6280, 0xbf8b, 0x9abb, 0xe888, 0xe193, 0xe9ec, 0xe0f1, 0x9731, 0xf7f1, 0x9701, 0xf7d1, 0x98bb, 0x9478, 0x9110, 0x0082, 0x5013, 0xfd17, 0xc0d4, 0x9180, 0x007f, 0xe0cc, 0xe0d0, 0x1bc8, 0x09d1, 0x57ca, 0x4fdf, 0x9180, 0x007e, 0x328d, 0xf009, 0xc091, 0x3018, 0xf009, 0xc0c2, 0xec83, 0x9380, 0x0072, 0xe58a, 0x9380, 0x0060, 0x9210, 0x006b, 0x8128, 0x2f82, 0x7680, 0x8199, 0x2388, 0xf129, 0x9210, 0x0067, 0x9210, 0x0066, 0x2399, 0xf441, 0xe682, 0xe090, 0x9390, 0x0081, 0x9380, 0x0080, 0xe024, 0xc068, 0x3091, 0xf451, 0x818c, 0x819d, 0x9390, 0x0071, 0x9380, 0x0070, 0xfd27, 0xc059, 0xef9f, 0xc058, 0x9180, 0x0068, 0x3092, 0xf411, 0x6081, 0xc001, 0x6084, 0x9380, 0x0068, 0xe020, 0xc051, 0x818a, 0x9210, 0x007b, 0x2399, 0xf431, 0x9210, 0x007c, 0xe78b, 0xe090, 0xe022, 0xc03c, 0x3095, 0xf419, 0x9380, 0x0083, 0xc034, 0x3096, 0xf511, 0x818b, 0x3081, 0xf419, 0xea82, 0xe197, 0xc004, 0x3082, 0xf441, 0xeb84, 0xe197, 0x9390, 0x0081, 0x9380, 0x0080, 0xe122, 0xc00e, 0x3083, 0xf459, 0x818a, 0x2388, 0xf441, 0xe98e, 0xe197, 0x9390, 0x0081, 0x9380, 0x0080, 0xe024, 0xc001, 0xe020, 0xe480, 0x9380, 0x006b, 0xc01d, 0x3098, 0xf419, 0xe885, 0xe090, 0xc009, 0x3099, 0xf419, 0x9380, 0x0085, 0xc006, 0x309a, 0xf421, 0xe78b, 0xe090, 0xe021, 0xc003, 0xe78b, 0xe090, 0xe020, 0x9390, 0x0081, 0x9380, 0x0080, 0xc005, 0x819e, 0xe880, 0x9380, 0x006b, 0xc007, 0x818f, 0x2388, 0xf419, 0x819e, 0x1792, 0xf008, 0x2f92, 0x9390, 0x0061, 0xc034, 0x9180, 0x006b, 0xff87, 0xc030, 0x9180, 0x0070, 0x9190, 0x0071, 0x9700, 0xf439, 0x8188, 0x8199, 0x9390, 0x006d, 0x9380, 0x006c, 0xc00d, 0x3084, 0x0591, 0xf439, 0x8188, 0x8199, 0x9390, 0x006f, 0x9380, 0x006e, 0xc003, 0x5880, 0x4197, 0xf438, 0x8188, 0x8199, 0xdec0, 0x5012, 0xf011, 0x9622, 0xcfdf, 0x9180, 0x0070, 0x9190, 0x0071, 0x738f, 0x7090, 0x2b89, 0xf439, 0x9180, 0x0068, 0x6082, 0x9380, 0x0068, 0x9210, 0x0061, 0x9210, 0x0082, 0x9180, 0x0060, 0xff84, 0xc03c, 0x9180, 0x0061, 0x3f8f, 0xf1c1, 0x2f18, 0x3089, 0xf008, 0xe018, 0x1b81, 0x9380, 0x0061, 0x9180, 0x0072, 0xe898, 0x2789, 0x9380, 0x0072, 0x2311, 0xf0e1, 0x91e0, 0x0080, 0x91f0, 0x0081, 0x9180, 0x006b, 0xff86, 0xc009, 0x2f91, 0xe7a3, 0xe0b0, 0x9184, 0x938d, 0x9631, 0x5091, 0xf7d9, 0xc007, 0x2f91, 0xe7a3, 0xe0b0, 0x9181, 0x938d, 0x5091, 0xf7e1, 0x93f0, 0x0081, 0x93e0, 0x0080, 0xe783, 0xe090, 0x2f61, 0xdced, 0x2f61, 0x5f6c, 0x306c, 0xf019, 0xef8f, 0x9380, 0x0061, 0x9360, 0x0060, 0xe194, 0xb386, 0x7188, 0xf431, 0x5091, 0xf7d9, 0x9210, 0x0083, 0x9210, 0x007d, 0xe010, 0x2399, 0xf409, 0xe011, 0x9180, 0x006a, 0x1781, 0xf039, 0x2311, 0xf419, 0x94f8, 0xd066, 0x9478, 0x9310, 0x006a, 0xe98c, 0xe091, 0x9701, 0xf7f1, 0x9180, 0x0066, 0x9190, 0x0067, 0x9601, 0x9390, 0x0067, 0x9380, 0x0066, 0x9180, 0x0068, 0x2f18, 0xff80, 0xc014, 0x94f8, 0xe8e0, 0xe1f7, 0x54e0, 0x40f0, 0xe083, 0x9380, 0x0057, 0x95e8, 0xb607, 0xfc00, 0xcffd, 0x9730, 0xf7a9, 0x9210, 0x0071, 0x9210, 0x0070, 0xde6a, 0x9478, 0xff11, 0xc00f, 0xe38a, 0xe290, 0x9701, 0xf7f1, 0x9180, 0x0070, 0x9190, 0x0071, 0x738f, 0x7090, 0x2b89, 0xf011, 0xde5a, 0xc001, 0xde09, 0xfd12, 0xc003, 0x9210, 0x0068, 0xce92, 0xe282, 0xea91, 0x9701, 0xf7f1, 0xba18, 0xba17, 0x94f8, 0xbe1b, 0xba15, 0x9210, 0x025f, 0x9210, 0x025e, 0xe7ea, 0xe1f7, 0x9194, 0x2f89, 0x5081, 0x3f8e, 0xf020, 0xc00d, 0xb781, 0x5081, 0xbf81, 0xb781, 0x1798, 0xf3d0, 0xc003, 0xb781, 0x5f8f, 0xbf81, 0xb781, 0x1789, 0xf3d0, 0xcc12, 0x91df, 0x91cf, 0x911f, 0x9508, 0x92ff, 0x930f, 0x931f, 0x93cf, 0x93df, 0xe880, 0x2ef8, 0xe000, 0xe0c0, 0xe0d0, 0x2f10, 0x0d1f, 0xbf11, 0xdc5e, 0xe029, 0x3384, 0x0792, 0xf00c, 0x2f10, 0x94f6, 0x9621, 0x30c8, 0x05d1, 0xf011, 0x2f01, 0xcff0, 0x5011, 0xbf11, 0x5f1f, 0x2f01, 0x01ec, 0xc010, 0xdc4b, 0x5384, 0x4099, 0xff97, 0xc003, 0x9590, 0x9581, 0x4f9f, 0x178c, 0x079d, 0xf414, 0xb701, 0x01ec, 0xb781, 0x5f8f, 0xbf81, 0xb721, 0xe030, 0x2f81, 0xe090, 0x9601, 0x1782, 0x0793, 0xf744, 0xbf01, 0x91df, 0x91cf, 0x911f, 0x910f, 0x90ff, 0x9508, 0x94f8, 0xcfff, 0xff5a, 0x7c17, 0x0840 +const uint16_t bootloader_data[944] PROGMEM = { +0xc017, 0xc016, 0xc04c, 0xc014, 0x0209, 0x0012, 0x0101, 0x8000, 0x0932, 0x0004, 0x0000, 0x0000, 0x0000, 0x0112, 0x0110, 0x00ff, 0x0800, 0x16d0, 0x0753, 0x010a, 0x0000, 0x0100, 0x0304, 0x0409, 0x2411, 0xbe1f, 0xe5cf, 0xe0d2, 0xbfcd, 0xbfde, 0xeb00, 0x930f, 0xe007, 0x930f, 0xe010, 0xe6a0, 0xe0b0, 0xedea, 0xe1ff, 0xc002, 0x9005, 0x920d, 0x36a6, 0x07b1, 0xf7d9, 0xe020, 0xe6a6, 0xe0b0, 0xc001, 0x921d, 0x39ab, 0x07b2, 0xf7e1, 0xc1ec, 0x2fa8, 0x2fb9, 0xe080, 0xe090, 0xe041, 0xea50, 0x9560, 0xe030, 0xc009, 0x912d, 0x2782, 0x9597, 0x9587, 0xf010, 0x2784, 0x2795, 0x5e30, 0xf3c8, 0x5f6f, 0xf3a8, 0x9508, 0xdfea, 0x938d, 0x939d, 0x9508, 0x93cf, 0xb7cf, 0x93cf, 0x91c0, 0x025f, 0x3bc0, 0xf421, 0x91c0, 0x025e, 0x30c7, 0xf021, 0x91cf, 0xbfcf, 0x91cf, 0xcfa1, 0x27cc, 0x95c3, 0x9bb3, 0xf7e9, 0x9bb3, 0xc00b, 0x9bb3, 0xc009, 0x9bb3, 0xc007, 0x9bb3, 0xc005, 0x9bb3, 0xc003, 0x9bb3, 0xc001, 0xc0d3, 0x920f, 0x93df, 0x91c0, 0x007e, 0x27dd, 0x57cb, 0x4fdf, 0x2e01, 0x9bb3, 0xc003, 0x91df, 0x900f, 0xcfe6, 0x932f, 0x930f, 0x931f, 0x934f, 0xef2f, 0x6f4f, 0xb306, 0xfb03, 0xf920, 0x935f, 0x933f, 0xe050, 0xe03b, 0xc065, 0xb316, 0x2601, 0x2950, 0xfd53, 0x95c8, 0xb356, 0x2701, 0xfb03, 0xf925, 0x732f, 0xb306, 0xf0b1, 0x2750, 0x2710, 0xfb13, 0xf926, 0xb206, 0x3022, 0xf0f0, 0xc000, 0xb316, 0x2701, 0xfb03, 0xf927, 0x2601, 0x2950, 0xb206, 0x3024, 0xf5e8, 0x774f, 0x6820, 0xb316, 0x0000, 0xcff6, 0x2750, 0x7d4f, 0x6220, 0xb206, 0x2f10, 0x0000, 0xc000, 0xb306, 0x2600, 0x2950, 0x2710, 0xfb13, 0xf926, 0xb206, 0xcfe2, 0x7b4f, 0xb306, 0x6420, 0xc000, 0xcfda, 0x2601, 0x2950, 0x7118, 0xb206, 0xf169, 0x7f4e, 0x6021, 0x2f01, 0xb316, 0xc028, 0x2600, 0x2950, 0x7f4d, 0xb206, 0x6022, 0x2f10, 0xc029, 0x2601, 0x2950, 0x7f4b, 0xb206, 0x6024, 0x2f01, 0xc02d, 0xb316, 0x2601, 0x2950, 0x7f47, 0x6028, 0x0000, 0xb206, 0xc02e, 0x7e4f, 0xb306, 0x6120, 0xc030, 0x2742, 0xb306, 0x9349, 0x2600, 0x2950, 0x2710, 0xb206, 0xef4f, 0xfb13, 0xf920, 0x7f29, 0xb316, 0xf279, 0x7118, 0xf159, 0x2601, 0x2950, 0xb206, 0x2701, 0xfb03, 0xf921, 0x7f23, 0xb306, 0xf271, 0x2600, 0x2950, 0x5031, 0xf0d0, 0xb206, 0x2710, 0xfb13, 0xf922, 0x7e27, 0xb316, 0xf251, 0x2601, 0x2950, 0x2701, 0xfb03, 0xb206, 0xf923, 0x7c2f, 0xf249, 0x0000, 0xb306, 0x2710, 0xfb13, 0xf924, 0x2600, 0x2950, 0xb206, 0x792f, 0xf239, 0xcf70, 0xe210, 0xbf1a, 0x2700, 0xc017, 0x503b, 0x9531, 0x1bc3, 0x40d0, 0xe210, 0xbf1a, 0x8108, 0x3c03, 0xf0f9, 0x340b, 0xf0e9, 0x9120, 0x007c, 0x8119, 0x0f11, 0x1312, 0xcfed, 0x3609, 0xf151, 0x320d, 0xf011, 0x3e01, 0xf739, 0x9300, 0x0083, 0x913f, 0x915f, 0x914f, 0x911f, 0x910f, 0x912f, 0x91df, 0x900f, 0xb7ca, 0xfdc5, 0xcf1d, 0x91cf, 0xbfcf, 0x91cf, 0x9518, 0x9120, 0x0083, 0x2322, 0xf369, 0x9110, 0x0081, 0x2311, 0xf521, 0x3034, 0xf122, 0x9330, 0x0081, 0x9320, 0x007d, 0x9110, 0x007e, 0xe03b, 0x1b31, 0x9330, 0x007e, 0xc019, 0x9100, 0x0081, 0x3001, 0xf49c, 0xe50a, 0x9130, 0x0060, 0xfd34, 0xc011, 0x9300, 0x0060, 0xe7c1, 0xe0d0, 0xc010, 0x2705, 0xe010, 0xc000, 0xc021, 0x2705, 0xe010, 0x95c8, 0xbb08, 0xc014, 0xe53a, 0xc001, 0xed32, 0x2e03, 0xe0c0, 0xe0d0, 0xe032, 0xb317, 0x6118, 0x9ac3, 0xb308, 0xbb17, 0xe158, 0xe820, 0xef4f, 0xff20, 0x2705, 0xbb08, 0x9527, 0x9517, 0x3f1c, 0xf728, 0x0000, 0x5245, 0xf7b0, 0xff20, 0x2705, 0x9527, 0xbb08, 0x9517, 0x3f1c, 0xf6b8, 0x9129, 0x953a, 0xf761, 0x7e07, 0x9110, 0x0082, 0x0f11, 0xbb08, 0x50c2, 0x40d0, 0xf011, 0x9310, 0x007c, 0xe210, 0xbf1a, 0x6008, 0xb317, 0x7e17, 0x2f40, 0x7e47, 0xe054, 0x955a, 0xf7f1, 0xbb08, 0xbb17, 0xbb48, 0xcf8a, 0x94f8, 0xef2f, 0xe8b0, 0xe4a0, 0xe04a, 0xbfb1, 0x0000, 0xee81, 0xe09c, 0x99b3, 0xcffe, 0x9bb3, 0xcffe, 0x9701, 0x99b3, 0xcffd, 0xff97, 0xc003, 0x1bba, 0x9581, 0xc001, 0x0fba, 0x95a6, 0xf429, 0x1728, 0xf010, 0xb731, 0x2f28, 0xe0a1, 0x5041, 0xf731, 0xbf31, 0x0000, 0x9478, 0x9508, 0x94f8, 0x91e0, 0x006a, 0x91f0, 0x006b, 0x9732, 0xe085, 0x9380, 0x0057, 0x95e8, 0x9478, 0x9508, 0x91e0, 0x006a, 0x91f0, 0x006b, 0x9730, 0xf429, 0x9390, 0x006d, 0x9380, 0x006c, 0xc007, 0x30e4, 0x05f1, 0xf439, 0x9390, 0x006f, 0x9380, 0x006e, 0xe38f, 0xec9c, 0xc01c, 0x37ec, 0xe128, 0x07f2, 0xf439, 0x9180, 0x006c, 0x9190, 0x006d, 0x538e, 0x4f9c, 0xc011, 0x37ee, 0xe128, 0x07f2, 0xf439, 0x9180, 0x006e, 0x9190, 0x006f, 0x538d, 0x4f9c, 0xc006, 0x37ea, 0xe128, 0x07f2, 0xf411, 0xb781, 0xe090, 0xb72f, 0x94f8, 0x9730, 0xf421, 0xe131, 0x9330, 0x0057, 0x95e8, 0xe031, 0x010c, 0x9330, 0x0057, 0x95e8, 0x2411, 0x9632, 0x93f0, 0x006b, 0x93e0, 0x006a, 0xbf2f, 0x9508, 0xbe14, 0xe188, 0xb60f, 0x94f8, 0xbd81, 0xbc11, 0xbe0f, 0x98c1, 0x9abb, 0xe888, 0xe193, 0xe9ec, 0xe0f1, 0x9731, 0xf7f1, 0x9701, 0xf7d1, 0x98bb, 0x9aac, 0xb78b, 0x6280, 0xbf8b, 0x9478, 0x9100, 0x0081, 0x5003, 0xfd07, 0xc0ba, 0x9180, 0x007e, 0xe0cc, 0xe0d0, 0x1bc8, 0x09d1, 0x57cb, 0x4fdf, 0x9180, 0x007d, 0x328d, 0xf009, 0xc08e, 0x3008, 0xf009, 0xc0a8, 0xec83, 0x9380, 0x0071, 0xe58a, 0x9380, 0x0060, 0x9210, 0x0069, 0x8128, 0x2f92, 0x7690, 0x8189, 0x2399, 0xf119, 0x9210, 0x0067, 0x1181, 0xc008, 0xe682, 0xe090, 0x9390, 0x0080, 0x9380, 0x007f, 0xe014, 0xc067, 0x3081, 0xf451, 0x818c, 0x819d, 0x9390, 0x006b, 0x9380, 0x006a, 0xfd27, 0xc058, 0xef1f, 0xc057, 0x9190, 0x0068, 0x3082, 0xf411, 0x6091, 0xc001, 0x6094, 0x9390, 0x0068, 0xe010, 0xc050, 0x819a, 0x9210, 0x007a, 0x1181, 0xc006, 0x9210, 0x007b, 0xe78a, 0xe090, 0xe012, 0xc03b, 0x3085, 0xf419, 0x9390, 0x0082, 0xc02c, 0x3086, 0xf509, 0x818b, 0x3081, 0xf419, 0xe98a, 0xe198, 0xc004, 0x3082, 0xf441, 0xe888, 0xe198, 0x9390, 0x0080, 0x9380, 0x007f, 0xe112, 0xc00d, 0x3083, 0xf451, 0x1191, 0xc008, 0xea8c, 0xe198, 0x9390, 0x0080, 0x9380, 0x007f, 0xe014, 0xc001, 0xe010, 0xe480, 0x9380, 0x0069, 0xc01d, 0x3088, 0xf059, 0x3089, 0xf419, 0x9390, 0x0084, 0xc002, 0x308a, 0xf039, 0xe78a, 0xe090, 0xe010, 0xc006, 0xe884, 0xe090, 0xc002, 0xe78a, 0xe090, 0xe011, 0x9390, 0x0080, 0x9380, 0x007f, 0xc005, 0x811e, 0xe880, 0x9380, 0x0069, 0xc007, 0x818f, 0x1181, 0xc004, 0x818e, 0x1781, 0xf408, 0x2f18, 0x9310, 0x0061, 0xc01d, 0x9180, 0x0069, 0xff87, 0xc019, 0x9180, 0x006a, 0x9190, 0x006b, 0x3880, 0x4198, 0xf028, 0x9180, 0x006a, 0x738f, 0xf039, 0xc00d, 0x9189, 0x9199, 0xdef0, 0x5002, 0xf779, 0xcff5, 0x9180, 0x0068, 0x6082, 0x9380, 0x0068, 0x9210, 0x0061, 0x9210, 0x0081, 0x9180, 0x0060, 0xff84, 0xc043, 0x9180, 0x0061, 0x3f8f, 0xf409, 0xc03e, 0x2f08, 0x3089, 0xf008, 0xe008, 0x1b80, 0x9380, 0x0061, 0x9180, 0x0071, 0xe898, 0x2789, 0x9380, 0x0071, 0x2300, 0xf119, 0x91e0, 0x007f, 0x91f0, 0x0080, 0x9180, 0x0069, 0xff86, 0xc00b, 0xe7a2, 0xe0b0, 0x9184, 0x938d, 0x9631, 0xe782, 0xe090, 0x0f80, 0x138a, 0xcff8, 0xc00c, 0x01cf, 0xe7a2, 0xe0b0, 0x01fc, 0x9121, 0x01cf, 0x932d, 0xe722, 0xe030, 0x0f20, 0x132a, 0xcff7, 0x93f0, 0x0080, 0x93e0, 0x007f, 0x2f60, 0xe782, 0xe090, 0xdd14, 0x5f0c, 0x300c, 0xf019, 0xef8f, 0x9380, 0x0061, 0x9300, 0x0060, 0xe184, 0xb396, 0x7198, 0xf431, 0x5081, 0xf7d9, 0x9210, 0x0082, 0x9210, 0x007c, 0xe001, 0x1181, 0xe000, 0x9180, 0x0070, 0x1780, 0xf039, 0x1101, 0xc003, 0x9210, 0x0067, 0xde58, 0x9300, 0x0070, 0xe98c, 0xe091, 0x9701, 0xf7f1, 0x9100, 0x0068, 0xff00, 0xc017, 0x94f8, 0xe8e0, 0xe1f8, 0x54e0, 0x09f1, 0xe083, 0x9380, 0x0057, 0x95e8, 0x9730, 0xf7c1, 0x9210, 0x006b, 0x9210, 0x006a, 0xe088, 0x2ef8, 0xef8f, 0xef9f, 0xde69, 0x94fa, 0xf7d9, 0xde5a, 0xff01, 0xc005, 0xe38a, 0xe290, 0x9701, 0xf7f1, 0xde53, 0xff02, 0xc013, 0x98b9, 0xe282, 0xea91, 0x9701, 0xf7f1, 0x94f8, 0x9abb, 0xbe1b, 0xba15, 0x9210, 0x025f, 0xe7ea, 0xe1f8, 0x91e4, 0x2f8e, 0x5081, 0x3f8e, 0xf0c0, 0xc019, 0x9210, 0x0068, 0x9180, 0x0067, 0x708d, 0xf011, 0x98b9, 0xc001, 0x9ab9, 0x9180, 0x0066, 0x9190, 0x0067, 0x9601, 0x9390, 0x0067, 0x9380, 0x0066, 0x3680, 0x4e9a, 0xf408, 0xce91, 0xcfd6, 0xbfe1, 0x0000, 0xcc52, 0xcf22, 0xff5a, 0x7a18, 0x0840 }; -uint16_t bootloader_address = 6016; +uint16_t bootloader_address = 6272; diff --git a/upgrade/releases/micronucleus-1.10-ledpb1-upgrade.hex b/upgrade/releases/micronucleus-1.10-ledpb1-upgrade.hex new file mode 100644 index 0000000..d70f544 --- /dev/null +++ b/upgrade/releases/micronucleus-1.10-ledpb1-upgrade.hex @@ -0,0 +1,168 @@ +:1000000003C003C003C003C003C003C003C003C0D8 +:10008000BEC3E8C3E7C3E6C3E5C3E4C3E3C3E2C357 +:10009000E1C3E0C3DFC3DEC3DDC3DCC3DBC317C022 +:1000A00016C04CC014C009021200010100803209C0 +:1000B000040000000000000012011001FF00000811 +:1000C000D01653070A01000000010403090411249B +:1000D0001FBECFE5D2E0CDBFDEBF00EB0F9307E040 +:1000E0000F9310E0A0E6B0E0EAEDFFE102C005905A +:1000F0000D92A636B107D9F720E0A6E6B0E001C020 +:100100001D92AB39B207E1F7ECC1A82FB92F80E0FF +:1001100090E041E050EA609530E009C02D918227DF +:100120009795879510F084279527305EC8F36F5F09 +:10013000A8F30895EADF8D939D930895CF93CFB7E9 +:10014000CF93C0915F02C03B21F4C0915E02C730E3 +:1001500021F0CF91CFBFCF91A1CFCC27C395B39B37 +:10016000E9F7B39B0BC0B39B09C0B39B07C0B39B1C +:1001700005C0B39B03C0B39B01C0D3C00F92DF93F4 +:10018000C0917E00DD27CB57DF4F012EB39B03C00C +:10019000DF910F90E6CF2F930F931F934F932FEF85 +:1001A0004F6F06B303FB20F95F933F9350E03BE0B2 +:1001B00065C016B30126502953FDC89556B30127D3 +:1001C00003FB25F92F7306B3B1F05027102713FB5B +:1001D00026F906B22230F0F000C016B3012703FB67 +:1001E00027F90126502906B22430E8F54F77206818 +:1001F00016B30000F6CF50274F7D206206B2102FB5 +:10020000000000C006B300265029102713FB26F972 +:1002100006B2E2CF4F7B06B3206400C0DACF0126DE +:100220005029187106B269F14E7F2160012F16B373 +:1002300028C0002650294D7F06B22260102F29C009 +:10024000012650294B7F06B22460012F2DC016B322 +:1002500001265029477F2860000006B22EC04F7E3D +:1002600006B3206130C0422706B3499300265029C7 +:10027000102706B24FEF13FB20F9297F16B379F24E +:10028000187159F10126502906B2012703FB21F903 +:10029000237F06B371F2002650293150D0F006B208 +:1002A000102713FB22F9277E16B351F2012650299D +:1002B000012703FB06B223F92F7C49F2000006B3A5 +:1002C000102713FB24F90026502906B22F7939F2A2 +:1002D00070CF10E21ABF002717C03B503195C31BE7 +:1002E000D04010E21ABF0881033CF9F00B34E9F06A +:1002F00020917C001981110F1213EDCF093651F1B5 +:100300000D3211F0013E39F7009383003F915F9168 +:100310004F911F910F912F91DF910F90CAB7C5FD9B +:100320001DCFCF91CFBFCF9118952091830022236D +:1003300069F310918100112321F5343022F13093BB +:10034000810020937D0010917E003BE0311B3093B3 +:100350007E0019C00091810001309CF40AE53091C3 +:10036000600034FD11C000936000C1E7D0E010C010 +:10037000052710E000C021C0052710E0C89508BB84 +:1003800014C03AE501C032ED032EC0E0D0E032E007 +:1003900017B31861C39A08B317BB58E120E84FEFB1 +:1003A00020FF052708BB279517951C3F28F700005D +:1003B0004552B0F720FF0527279508BB17951C3F2E +:1003C000B8F629913A9561F7077E10918200110FD6 +:1003D00008BBC250D04011F010937C0010E21ABF4D +:1003E000086017B3177E402F477E54E05A95F1F707 +:1003F00008BB17BB48BB8ACFF8942FEFB0E8A0E446 +:100400004AE0B1BF000081EE9CE0B399FECFB39B00 +:10041000FECF0197B399FDCF97FF03C0BA1B81951B +:1004200001C0BA0FA69529F4281710F031B7282F6C +:10043000A1E0415031F731BF000078940895F8945D +:10044000E0916A00F0916B00329785E0809357004D +:10045000E89578940895E0916A00F0916B003097E8 +:1004600029F490936D0080936C0007C0E430F1058F +:1004700039F490936F0080936E008FE39CEC1CC066 +:10048000EC3728E1F20739F480916C0090916D000F +:100490008E539C4F11C0EE3728E1F20739F480915A +:1004A0006E0090916F008D539C4F06C0EA3728E193 +:1004B000F20711F481B790E02FB7F894309721F448 +:1004C00031E130935700E89531E00C01309357004B +:1004D000E89511243296F0936B00E0936A002FBFE9 +:1004E000089514BE88E10FB6F89481BD11BC0FBE0B +:1004F000C198BB9A88E893E1ECE9F1E03197F1F714 +:100500000197D1F7BB98AC9A8BB780628BBF789478 +:1005100000918100035007FDBAC080917E00CCE0BD +:10052000D0E0C81BD109CB57DF4F80917D008D32C1 +:1005300009F08EC0083009F0A8C083EC80937100E8 +:100540008AE580936000109269002881922F90764E +:100550008981992319F110926700811108C082E600 +:1005600090E09093800080937F0014E067C081301A +:1005700051F48C819D8190936B0080936A0027FDDC +:1005800058C01FEF57C090916800823011F49160FD +:1005900001C094609093680010E050C09A8110925E +:1005A0007A00811106C010927B008AE790E012E089 +:1005B0003BC0853019F4909382002CC0863009F539 +:1005C0008B81813019F48AE998E104C0823041F4CA +:1005D00088E898E19093800080937F0012E10DC03D +:1005E000833051F4911108C08CEA98E19093800017 +:1005F00080937F0014E001C010E080E480936900E4 +:100600001DC0883059F0893019F49093840002C0DD +:100610008A3039F08AE790E010E006C084E890E084 +:1006200002C08AE790E011E09093800080937F0001 +:1006300005C01E8180E88093690007C08F81811109 +:1006400004C08E81811708F4182F109361001DC01B +:100650008091690087FF19C080916A0090916B00BA +:100660008038984128F080916A008F7339F00DC06E +:1006700089919991F0DE025079F7F5CF8091680069 +:1006800082608093680010926100109281008091D6 +:10069000600084FF43C0809161008F3F09F43EC039 +:1006A000082F893008F008E0801B8093610080915A +:1006B000710098E8892780937100002319F1E09177 +:1006C0007F00F09180008091690086FF0BC0A2E757 +:1006D000B0E084918D93319682E790E0800F8A1389 +:1006E000F8CF0CC0CF01A2E7B0E0FC012191CF010F +:1006F0002D9322E730E0200F2A13F7CFF0938000EC +:10070000E0937F00602F82E790E014DD0C5F0C30F7 +:1007100019F08FEF809361000093600084E196B33D +:10072000987131F48150D9F71092820010927C00B8 +:1007300001E0811100E080917000801739F0011113 +:1007400003C01092670058DE009370008CE991E0BE +:100750000197F1F70091680000FF17C0F894E0E8F6 +:10076000F8E1E054F10983E080935700E895309771 +:10077000C1F710926B0010926A0088E0F82E8FEF9C +:100780009FEF69DEFA94D9F75ADE01FF05C08AE3CC +:1007900090E20197F1F753DE02FF13C0B99882E2AD +:1007A00091EA0197F1F7F894BB9A1BBE15BA109223 +:1007B0005F02EAE7F8E1E4918E2F81508E3FC0F0AE +:1007C00019C010926800809167008D7011F0B9987F +:1007D00001C0B99A8091660090916700019690934C +:1007E00067008093660080369A4E08F491CED6CF8B +:1007F000E1BF000052CC22CF5AFF187A4008000017 +:1008000000000000000000000000000000000000E8 +:1008100000000000000000000000000000001124A3 +:100820001FBECFE5D2E0DEBFCDBF10E0A0E6B0E056 +:10083000EAEBFAE002C005900D92A236B107D9F7B3 +:1008400010E0A2E6B0E001C01D92A236B107E1F7C8 +:100850001CD131C115CC05C0EDE1F0E13197F1F7C4 +:1008600001970097C9F70895AC01407C80E090E0C3 +:10087000FC01E40FF51F25913491FC01EE7FE60F9A +:10088000F71F2083318302968034910589F70895FC +:10089000FC01E07C83E080935700E89507B600FCFC +:1008A000FDCF0895CF93DF93EC01AB01DB0120E096 +:1008B00030E0FE01E41BF50BEA0FFB1F8D919D91CB +:1008C00061E00C0160935700E89511242F5F3F4FC2 +:1008D0002032310571F785E0FE0180935700E895DD +:1008E00007B600FCFDCFDF91CF910895CF93DF9342 +:1008F000CDB7DEB7C054D0400FB6F894DEBF0FBE00 +:10090000CDBF809160009091610096958795815050 +:100910009044FE0131969E012F5B3F4F819391934E +:10092000E217F307D9F780E090E0B2DF80E090E0D3 +:10093000BE016F5F7F4FB6DFC05CDF4F0FB6F8942C +:10094000DEBF0FBECDBFDF91CF9108950F931F93F0 +:10095000CF93DF93CDB7DEB7C054D0400FB6F89435 +:10096000DEBF0FBECDBF00E010E040C080E090E0F1 +:10097000F801E256FF4FE80FF91F9C0135952795C6 +:1009800047E0EE3FF40770F0F901EE0FFF1F21E0A2 +:1009900030E02C0F3D1FE20FF31F2FEF3FEF3183AD +:1009A00020830DC045915491F901EE0FFF1F21E006 +:1009B00030E02C0F3D1FE20FF31F4083518302965E +:1009C00080349105A9F68091600090916100800FBC +:1009D000911F5EDF8091600090916100800F911FF8 +:1009E000BE016F5F7F4F5EDF005C1F4F37E0003856 +:1009F000130709F0BBCFC05CDF4F0FB6F894DEBF22 +:100A00000FBECDBFDF91CF911F910F910895CF936E +:100A1000DF93CDB7DEB7C054D0400FB6F894DEBF39 +:100A20000FBECDBF80E090E0BE016F5F7F4F1CDF47 +:100A30008FEF9FEF9A83898380E090E029DF80E049 +:100A400090E0BE016F5F7F4F2DDFC05CDF4F0FB6C0 +:100A5000F894DEBF0FBECDBFDF91CF910895CF9345 +:100A600087B3836087BBC198CAEF81E090E0F3DE73 +:100A7000C19A81E090E0EFDEC198C150B1F7CF910B +:100A80000895E0E0F0E00995089588B318BA87B3B7 +:100A90008FEF87BB8AEF90E0DEDE87B317BA8AEF6D +:100AA00090E0D9DEF894B3DF51DF20DFD8DFE9DF53 +:0A0AB00080E090E00895F894FFCF75 +:020ABA008018A2 +:040000030000008079 +:00000001FF diff --git a/upgrade/releases/micronucleus-1.10-upgrade.hex b/upgrade/releases/micronucleus-1.10-upgrade.hex new file mode 100644 index 0000000..9fb05a9 --- /dev/null +++ b/upgrade/releases/micronucleus-1.10-upgrade.hex @@ -0,0 +1,167 @@ +:1000000003C003C003C003C003C003C003C003C0D8 +:10008000B5C3DFC3DEC3DDC3DCC3DBC3DAC3D9C39F +:10009000D8C3D7C3D6C3D5C3D4C3D3C3D2C317C061 +:1000A00016C04CC014C009021200010100803209C0 +:1000B000040000000000000012011001FF00000811 +:1000C000D01653070A01000000010403090411249B +:1000D0001FBECFE5D2E0CDBFDEBF00EB0F9307E040 +:1000E0000F9310E0A0E6B0E0E8ECFFE102C005905D +:1000F0000D92A636B107D9F720E0A6E6B0E001C020 +:100100001D92AB39B207E1F7ECC1A82FB92F80E0FF +:1001100090E041E050EA609530E009C02D918227DF +:100120009795879510F084279527305EC8F36F5F09 +:10013000A8F30895EADF8D939D930895CF93CFB7E9 +:10014000CF93C0915F02C03B21F4C0915E02C730E3 +:1001500021F0CF91CFBFCF91A1CFCC27C395B39B37 +:10016000E9F7B39B0BC0B39B09C0B39B07C0B39B1C +:1001700005C0B39B03C0B39B01C0D3C00F92DF93F4 +:10018000C0917E00DD27CB57DF4F012EB39B03C00C +:10019000DF910F90E6CF2F930F931F934F932FEF85 +:1001A0004F6F06B303FB20F95F933F9350E03BE0B2 +:1001B00065C016B30126502953FDC89556B30127D3 +:1001C00003FB25F92F7306B3B1F05027102713FB5B +:1001D00026F906B22230F0F000C016B3012703FB67 +:1001E00027F90126502906B22430E8F54F77206818 +:1001F00016B30000F6CF50274F7D206206B2102FB5 +:10020000000000C006B300265029102713FB26F972 +:1002100006B2E2CF4F7B06B3206400C0DACF0126DE +:100220005029187106B269F14E7F2160012F16B373 +:1002300028C0002650294D7F06B22260102F29C009 +:10024000012650294B7F06B22460012F2DC016B322 +:1002500001265029477F2860000006B22EC04F7E3D +:1002600006B3206130C0422706B3499300265029C7 +:10027000102706B24FEF13FB20F9297F16B379F24E +:10028000187159F10126502906B2012703FB21F903 +:10029000237F06B371F2002650293150D0F006B208 +:1002A000102713FB22F9277E16B351F2012650299D +:1002B000012703FB06B223F92F7C49F2000006B3A5 +:1002C000102713FB24F90026502906B22F7939F2A2 +:1002D00070CF10E21ABF002717C03B503195C31BE7 +:1002E000D04010E21ABF0881033CF9F00B34E9F06A +:1002F00020917C001981110F1213EDCF093651F1B5 +:100300000D3211F0013E39F7009383003F915F9168 +:100310004F911F910F912F91DF910F90CAB7C5FD9B +:100320001DCFCF91CFBFCF9118952091830022236D +:1003300069F310918100112321F5343022F13093BB +:10034000810020937D0010917E003BE0311B3093B3 +:100350007E0019C00091810001309CF40AE53091C3 +:10036000600034FD11C000936000C1E7D0E010C010 +:10037000052710E000C021C0052710E0C89508BB84 +:1003800014C03AE501C032ED032EC0E0D0E032E007 +:1003900017B31861C39A08B317BB58E120E84FEFB1 +:1003A00020FF052708BB279517951C3F28F700005D +:1003B0004552B0F720FF0527279508BB17951C3F2E +:1003C000B8F629913A9561F7077E10918200110FD6 +:1003D00008BBC250D04011F010937C0010E21ABF4D +:1003E000086017B3177E402F477E54E05A95F1F707 +:1003F00008BB17BB48BB8ACFF8942FEFB0E8A0E446 +:100400004AE0B1BF000081EE9CE0B399FECFB39B00 +:10041000FECF0197B399FDCF97FF03C0BA1B81951B +:1004200001C0BA0FA69529F4281710F031B7282F6C +:10043000A1E0415031F731BF000078940895F8945D +:10044000E0916A00F0916B00329785E0809357004D +:10045000E89578940895E0916A00F0916B003097E8 +:1004600029F490936D0080936C0007C0E430F1058F +:1004700039F490936F0080936E008FE39CEC1CC066 +:10048000EC3728E1F20739F480916C0090916D000F +:100490008E539C4F11C0EE3728E1F20739F480915A +:1004A0006E0090916F008D539C4F06C0EA3728E193 +:1004B000F20711F481B790E02FB7F894309721F448 +:1004C00031E130935700E89531E00C01309357004B +:1004D000E89511243296F0936B00E0936A002FBFE9 +:1004E000089514BE88E10FB6F89481BD11BC0FBE0B +:1004F000BB9A88E893E1ECE9F1E03197F1F70197D5 +:10050000D1F7BB98AC9A8BB780628BBF789400917F +:100510008100035007FDBAC080917E00CCE0D0E09E +:10052000C81BD109CB57DF4F80917D008D3209F078 +:100530008EC0083009F0A8C083EC809371008AE572 +:1005400080936000109269002881922F90768981B3 +:10055000992319F110926700811108C082E690E09A +:100560009093800080937F0014E067C0813051F445 +:100570008C819D8190936B0080936A0027FD58C009 +:100580001FEF57C090916800823011F4916001C054 +:1005900094609093680010E050C09A8110927A00A5 +:1005A000811106C010927B008AE790E012E03BC008 +:1005B000853019F4909382002CC0863009F58B8128 +:1005C000813019F48AE998E104C0823041F488E866 +:1005D00098E19093800080937F0012E10DC08330FA +:1005E00051F4911108C08CEA98E1909380008093B7 +:1005F0007F0014E001C010E080E4809369001DC01A +:10060000883059F0893019F49093840002C08A3000 +:1006100039F08AE790E010E006C084E890E002C07C +:100620008AE790E011E09093800080937F0005C0FE +:100630001E8180E88093690007C08F81811104C00A +:100640008E81811708F4182F109361001DC08091CE +:10065000690087FF19C080916A0090916B00803813 +:10066000984128F080916A008F7339F00DC089910C +:100670009991F1DE025079F7F5CF809168008260A0 +:100680008093680010926100109281008091600058 +:1006900084FF43C0809161008F3F09F43EC0082F62 +:1006A000893008F008E0801B809361008091710020 +:1006B00098E8892780937100002319F1E0917F0069 +:1006C000F09180008091690086FF0BC0A2E7B0E046 +:1006D00084918D93319682E790E0800F8A13F8CF52 +:1006E0000CC0CF01A2E7B0E0FC012191CF012D9316 +:1006F00022E730E0200F2A13F7CFF0938000E09339 +:100700007F00602F82E790E015DD0C5F0C3019F060 +:100710008FEF809361000093600084E196B398713D +:1007200031F48150D9F71092820010927C0001E0E0 +:10073000811100E080917000801739F0011103C031 +:100740001092670059DE009370008CE991E00197E8 +:10075000F1F70091680000FF17C0F894E0E8F8E1B5 +:10076000E054F10983E080935700E8953097C1F792 +:1007700010926B0010926A0088E0F82E8FEF9FEFC6 +:100780006ADEFA94D9F75BDE01FF05C08AE390E2E6 +:100790000197F1F754DE02FF12C082E291EA01975D +:1007A000F1F7F894BB9A1BBE15BA10925F02EAE704 +:1007B000F8E1E4918E2F81508E3F88F012C01092A4 +:1007C00068008091660090916700019690936700A1 +:1007D0008093660080369A4E08F499CEDECFE1BF52 +:1007E00000005BCC2ACF5AFF187A400800000000B6 +:1007F00000000000000000000000000000000000F9 +:1008000000000000000000000000000011241FBED6 +:10081000CFE5D2E0DEBFCDBF10E0A0E6B0E0E8EA71 +:10082000FAE002C005900D92A236B107D9F710E0A8 +:10083000A2E6B0E001C01D92A236B107E1F71CD1DB +:1008400031C11ECC05C0EDE1F0E13197F1F7019720 +:100850000097C9F70895AC01407C80E090E0FC016E +:10086000E40FF51F25913491FC01EE7FE60FF71F91 +:100870002083318302968034910589F70895FC0125 +:10088000E07C83E080935700E89507B600FCFDCF3D +:100890000895CF93DF93EC01AB01DB0120E030E062 +:1008A000FE01E41BF50BEA0FFB1F8D919D9161E0AA +:1008B0000C0160935700E89511242F5F3F4F2032C1 +:1008C000310571F785E0FE0180935700E89507B682 +:1008D00000FCFDCFDF91CF910895CF93DF93CDB78B +:1008E000DEB7C054D0400FB6F894DEBF0FBECDBF08 +:1008F0008091600090916100969587958150904419 +:10090000FE0131969E012F5B3F4F81939193E21739 +:10091000F307D9F780E090E0B2DF80E090E0BE011D +:100920006F5F7F4FB6DFC05CDF4F0FB6F894DEBF5E +:100930000FBECDBFDF91CF9108950F931F93CF933B +:10094000DF93CDB7DEB7C054D0400FB6F894DEBF0A +:100950000FBECDBF00E010E040C080E090E0F801A5 +:10096000E256FF4FE80FF91F9C013595279547E0A8 +:10097000EC3EF40770F0F901EE0FFF1F21E030E0CC +:100980002C0F3D1FE20FF31F2FEF3FEF318320832A +:100990000DC045915491F901EE0FFF1F21E030E0A9 +:1009A0002C0F3D1FE20FF31F4083518302968034CA +:1009B0009105A9F68091600090916100800F911FD0 +:1009C0005EDF8091600090916100800F911FBE01F9 +:1009D0006F5F7F4F5EDF005C1F4F37E0003813070B +:1009E00009F0BBCFC05CDF4F0FB6F894DEBF0FBE7F +:1009F000CDBFDF91CF911F910F910895CF93DF93DA +:100A0000CDB7DEB7C054D0400FB6F894DEBF0FBEEE +:100A1000CDBF80E090E0BE016F5F7F4F1CDF8FEFA6 +:100A20009FEF9A83898380E090E029DF80E090E067 +:100A3000BE016F5F7F4F2DDFC05CDF4F0FB6F894B4 +:100A4000DEBF0FBECDBFDF91CF910895CF9387B3A7 +:100A5000836087BBC198CAEF81E090E0F3DEC19A62 +:100A600081E090E0EFDEC198C150B1F7CF910895D9 +:100A7000E0E0F0E00995089588B318BA87B38FEFE6 +:100A800087BB8AEF90E0DEDE87B317BA8AEF90E08B +:100A9000D9DEF894B3DF51DF20DFD8DFE9DF80E073 +:080AA00090E00895F894FFCFE7 +:020AA8008018B4 +:040000030000008079 +:00000001FF -- cgit v1.2.3 From f40aad20287b7b928a2971202a12d21bc4f5bdb5 Mon Sep 17 00:00:00 2001 From: Bluebie Date: Tue, 17 Dec 2013 11:08:37 +1100 Subject: firmware: style fix - use spaces for indentation --- firmware/main.c | 36 ++++++++++++++++++------------------ 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/firmware/main.c b/firmware/main.c index a6af148..6f7f180 100644 --- a/firmware/main.c +++ b/firmware/main.c @@ -92,14 +92,14 @@ static inline void eraseApplication(void) { // during upload uint8_t i; - uint16_t ptr = BOOTLOADER_ADDRESS; + uint16_t ptr = BOOTLOADER_ADDRESS; cli(); while (ptr) { ptr -= SPM_PAGESIZE; boot_page_erase(ptr); } - currentAddress = 0; + currentAddress = 0; for (i=0; i<8; i++) writeWordToPageBuffer(0xFFFF); // Write first 8 words to fill in vectors. writeFlashPage(); // enables interrupts } @@ -150,7 +150,7 @@ static void writeWordToPageBuffer(uint16_t data) { #if (!OSCCAL_RESTORE) && OSCCAL_16_5MHz } else if (currentAddress == BOOTLOADER_ADDRESS - TINYVECTOR_OSCCAL_OFFSET) { data = OSCCAL; -#endif +#endif } previous_sreg=SREG; @@ -171,7 +171,7 @@ static void writeWordToPageBuffer(uint16_t data) { static uchar usbFunctionSetup(uchar data[8]) { usbRequest_t *rq = (void *)data; ((uint8_t*)&idlePolls)[1] = 0; // reset idle polls when we get usb traffic - + static uchar replyBuffer[4] = { (((uint16_t)PROGMEM_SIZE) >> 8) & 0xff, ((uint16_t)PROGMEM_SIZE) & 0xff, @@ -212,7 +212,7 @@ static uchar usbFunctionWrite(uchar *data, uchar length) { // if we have now reached another page boundary, we're done #if SPM_PAGESIZE<256 - // Hack to reduce code size + // Hack to reduce code size uchar isLast = ((((uchar)currentAddress) % SPM_PAGESIZE) == 0); #else uchar isLast = ((currentAddress % SPM_PAGESIZE) == 0); @@ -242,8 +242,8 @@ static inline void leaveBootloader(void) { bootLoaderExit(); cli(); - usbDeviceDisconnect(); /* Disconnect micronucleus */ - + usbDeviceDisconnect(); /* Disconnect micronucleus */ + USB_INTR_ENABLE = 0; USB_INTR_CFG = 0; /* also reset config bits */ @@ -255,8 +255,8 @@ static inline void leaveBootloader(void) { // as when it was uploaded originally unsigned char stored_osc_calibration = pgm_read_byte(BOOTLOADER_ADDRESS - TINYVECTOR_OSCCAL_OFFSET); if (stored_osc_calibration != 0xFF && stored_osc_calibration != 0x00) { - OSCCAL=stored_osc_calibration; - asm volatile("nop"); + OSCCAL=stored_osc_calibration; + asm volatile("nop"); } #endif // jump to application reset vector at end of flash @@ -273,10 +273,10 @@ int main(void) { #endif bootLoaderInit(); - -# if AUTO_EXIT_NO_USB_MS - ((uint8_t*)&idlePolls)[1]=((AUTO_EXIT_MS-AUTO_EXIT_NO_USB_MS) * 10UL)>>8; // write only high byte to save 6 bytes -# endif + +# if AUTO_EXIT_NO_USB_MS + ((uint8_t*)&idlePolls)[1]=((AUTO_EXIT_MS-AUTO_EXIT_NO_USB_MS) * 10UL)>>8; // write only high byte to save 6 bytes +# endif if (bootLoaderStartCondition()) { @@ -299,9 +299,9 @@ int main(void) { usbDeviceConnect(); usbInit(); // Initialize INT settings after reconnect sei(); - + do { - usbPoll(); + usbPoll(); _delay_us(100); // these next two freeze the chip for ~ 4.5ms, breaking usb protocol @@ -321,7 +321,7 @@ int main(void) { # if LED_PRESENT LED_MACRO( ((uint8_t*)&idlePolls)[1] ) # endif - + } while(bootLoaderCondition()); /* main event loop runs so long as bootLoaderCondition remains truthy */ } @@ -341,8 +341,8 @@ int main(void) { # endif # if OSCCAL_RESTORE - OSCCAL=osccal_default; - asm volatile("nop"); // NOP to avoid CPU hickup during oscillator stabilization + OSCCAL=osccal_default; + asm volatile("nop"); // NOP to avoid CPU hickup during oscillator stabilization # endif leaveBootloader(); -- cgit v1.2.3 From de416941068db51412566821c08ee6b11637d06c Mon Sep 17 00:00:00 2001 From: Bluebie Date: Tue, 17 Dec 2013 11:58:55 +1100 Subject: commandline: style stuff, no functional changes --- commandline/library/littleWire_util.c | 19 +++++++++---------- commandline/library/littleWire_util.h | 5 +++-- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/commandline/library/littleWire_util.c b/commandline/library/littleWire_util.c index 985c4a3..c34460c 100644 --- a/commandline/library/littleWire_util.c +++ b/commandline/library/littleWire_util.c @@ -1,14 +1,13 @@ #include /* Delay in miliseconds */ -void delay(unsigned int duration) -{ - #if defined _WIN32 || defined _WIN64 - // use windows sleep api with milliseconds - // * 2 to make it run at half speed, because windows seems to have some trouble with this... - Sleep(duration * 2); - #else - // use standard unix api with microseconds - usleep(duration*1000); - #endif +void delay(unsigned int duration) { + #if defined _WIN32 || defined _WIN64 + // use windows sleep api with milliseconds + // * 2 to make it run at half speed, because windows seems to have some trouble with this... + Sleep(duration * 2); + #else + // use standard unix api with microseconds + usleep(duration*1000); + #endif } diff --git a/commandline/library/littleWire_util.h b/commandline/library/littleWire_util.h index 27dc172..1f060c3 100644 --- a/commandline/library/littleWire_util.h +++ b/commandline/library/littleWire_util.h @@ -2,12 +2,13 @@ #define LITTLEWIRE_UTIL_H #if defined WIN - #include + #include #else - #include + #include #endif /* Delay in miliseconds */ void delay(unsigned int duration); +// end LITTLEWIRE_UTIL_H section: #endif -- cgit v1.2.3 From 58caa36ba05e06799201ae4a088401dabdddb2c3 Mon Sep 17 00:00:00 2001 From: Bluebie Date: Tue, 17 Dec 2013 12:02:35 +1100 Subject: Proposed code style guide! Discussion happening at https://github.com/micronucleus/micronucleus/pull/32 --- Style Guide.txt | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 Style Guide.txt diff --git a/Style Guide.txt b/Style Guide.txt new file mode 100644 index 0000000..2cf7311 --- /dev/null +++ b/Style Guide.txt @@ -0,0 +1,37 @@ +Code under /firmware/, /commandline/, /upgrade/ should be written to conform to: + +The UNSW Computer Science C Styleguide: + https://wiki.cse.unsw.edu.au/info/CoreCourses/StyleGuide + +With the following additions: +- Structured Programming rules can (and are frequently) broken because this is + often useful in getting code to compile smaller. Returns from inside loops are + completely fine. +- We use spaces for code indentation - two spaces precisely. C Code in these + folders should never contain tab characters. +- Width of lines should be kept under 80 chars where practical. Function calls + can be split over multiple lines and have following arguments indented with + spaces. +- Comments on the same line as code are bad. +- C Preprocessor directives must always be indented with code correctly. Inside + a function #if's and #ifdefs are indented along with code, using spaces. +- Specifically in firmware code, any of the rules can be broken to make code + compile smaller, and we don't care about polluting the global namespace with + global variables and stuff like that. +- Anything in a folder called 'usbdrv' is exempt from this style guide + -> it follows Objective Development's V-USB style. + -> you probably shouldn't be changing stuff in there anyway! + -> our usbdrv is hacked with some stuff to handle redirecting PCINT0 + +On use of Ruby: + +Micronucleus uses ruby code for some little tasks, especially to aid in testing +and building data for /upgrade/. The stuff in /ruby/ is out of date and doesn't +work very well for uploading programs to devices. It isn't as good at recovering +from errors as the commandline tool. It is mainly a legacy thing. + +The Ruby community has a long established style and all Ruby code in this +repository should be styled in conformance with that. We use 2-space intents. + +We currently write for and use Ruby 2.0, but all the code should work fine with +Ruby 1.9.2 and above, at the time of writing. \ No newline at end of file -- cgit v1.2.3 From 21cc37140b779db39a63ba7747ade08f99513594 Mon Sep 17 00:00:00 2001 From: Bluebie Date: Tue, 17 Dec 2013 19:41:01 +1100 Subject: Contributing info - read this before you commit stuff to git! --- Contributing.txt | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 Contributing.txt diff --git a/Contributing.txt b/Contributing.txt new file mode 100644 index 0000000..b83a266 --- /dev/null +++ b/Contributing.txt @@ -0,0 +1,13 @@ +Before contributing, please keep in mind the following: + + - Have a look at License.txt + - If you're going to write or change C or Ruby code, read Style Guide.txt + - When writing commit messages, please prefix your message with one of these: + firmware: + upgrade: + commandline: + ruby: + tests: + This will help us all understand what your commit is primarily in relation + to when reading through the commit history hunting for specific changes. + - Even if you aren't writing code, we prefer spaces to tabs. -- cgit v1.2.3 From 75d9e14fe513d1f04f605bc1159cb9a316e89209 Mon Sep 17 00:00:00 2001 From: Bluebie Date: Tue, 17 Dec 2013 19:49:22 +1100 Subject: commandline: no functional changes - improved readme info on configuring linux to not require root access, and included udev rules file - thanks @sodabrew! --- commandline/49-micronucleus.rules | 16 ++++++++++++++++ commandline/Readme | 7 ++++--- 2 files changed, 20 insertions(+), 3 deletions(-) create mode 100644 commandline/49-micronucleus.rules diff --git a/commandline/49-micronucleus.rules b/commandline/49-micronucleus.rules new file mode 100644 index 0000000..bed33d6 --- /dev/null +++ b/commandline/49-micronucleus.rules @@ -0,0 +1,16 @@ +# UDEV Rules for Micronucleus boards including the Digispark. +# This file must be placed at: +# +# /etc/udev/rules.d/49-micronucleus.rules (preferred location) +# or +# /lib/udev/rules.d/49-micronucleus.rules (req'd on some broken systems) +# +# After this file is copied, physically unplug and reconnect the board. +# +SUBSYSTEMS=="usb", ATTRS{idVendor}=="16d0", ATTRS{idProduct}=="0753", MODE:="0666" +KERNEL=="ttyACM*", ATTRS{idVendor}=="16d0", ATTRS{idProduct}=="0753", MODE:="0666", ENV{ID_MM_DEVICE_IGNORE}="1" +# +# If you share your linux system with other users, or just don't like the +# idea of write permission for everybody, you can replace MODE:="0666" with +# OWNER:="yourusername" to create the device owned by you, or with +# GROUP:="somegroupname" and mange access using standard unix groups. diff --git a/commandline/Readme b/commandline/Readme index 00e91f7..1781e36 100644 --- a/commandline/Readme +++ b/commandline/Readme @@ -12,9 +12,10 @@ Usage on Mac: Usage on Windows micronucleus.exe --run name_of_the_file.hex -Raw binary file writing hasn't been tested much yet and is suspected to not -work. +Raw binary file writing hasn't been tested as much as hex files. Every now and then the program fails once it reaches the Writing stage - this is a known bug - but if you simply rerun the micronucleus command immediately, it -will succeed the second time usually. Most of the time this issue is not present. \ No newline at end of file +will succeed the second time usually. Most of the time this issue is not present. + +To linux users: sudo is used above because the default configuration under most modern linux distributions is to not allow userspace apps to communicate directly to unknown USB devices. You can fix this by installing some config files, or you can just use sudo. Either way you're going to need root. To configure your system to allow micronucleus access from non-root users, copy 49-micronucleus.rules from this folder to /etc/udev/rules.d/ -- cgit v1.2.3 From bfad6fd1716773c2872ca2b161775b3a2dbc24e6 Mon Sep 17 00:00:00 2001 From: Bluebie Date: Tue, 17 Dec 2013 19:50:17 +1100 Subject: commandline: no functional changes - getting rid of tab chars --- commandline/Readme | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/commandline/Readme b/commandline/Readme index 1781e36..8f3d5f3 100644 --- a/commandline/Readme +++ b/commandline/Readme @@ -6,7 +6,7 @@ three. To make and install, do the regular 'make; sudo make install' on unixes. On windows just 'make' with mingw and do whatever people do with windows exes. Usage on Ubuntu: - sudo micronucleus --run name_of_the_file.hex + sudo micronucleus --run name_of_the_file.hex Usage on Mac: micronucleus --run name_of_the_file.hex Usage on Windows -- cgit v1.2.3 From 04e0d950d18fba8af17e844f9d6d0bb868cb5981 Mon Sep 17 00:00:00 2001 From: Bluebie Date: Tue, 17 Dec 2013 19:51:50 +1100 Subject: commandline: readme.. My brain is bad today. no functional changes, just style stuff --- commandline/Readme | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/commandline/Readme b/commandline/Readme index 8f3d5f3..329247a 100644 --- a/commandline/Readme +++ b/commandline/Readme @@ -18,4 +18,9 @@ Every now and then the program fails once it reaches the Writing stage - this is a known bug - but if you simply rerun the micronucleus command immediately, it will succeed the second time usually. Most of the time this issue is not present. -To linux users: sudo is used above because the default configuration under most modern linux distributions is to not allow userspace apps to communicate directly to unknown USB devices. You can fix this by installing some config files, or you can just use sudo. Either way you're going to need root. To configure your system to allow micronucleus access from non-root users, copy 49-micronucleus.rules from this folder to /etc/udev/rules.d/ +To linux users: sudo is used above because the default configuration under most +modern linux distributions is to not allow userspace apps to communicate +directly to unknown USB devices. You can fix this by installing some config +files, or you can just use sudo. Either way you're going to need root. To +configure your system to allow micronucleus access from non-root users, copy +49-micronucleus.rules from this folder to /etc/udev/rules.d/ -- cgit v1.2.3