diff options
author | Jenna Fox <a@creativepony.com> | 2012-09-30 14:22:04 +1000 |
---|---|---|
committer | Jenna Fox <a@creativepony.com> | 2012-09-30 14:22:04 +1000 |
commit | 4ab39b1d0cdcbac838d2d15acd532493a33a3764 (patch) | |
tree | 972c70655fd58638eb487048981e6e3b4154b3e7 /firmware | |
parent | d919861396dd343bcc7132b6358b3a286228cc89 (diff) | |
download | micronucleus-4ab39b1d0cdcbac838d2d15acd532493a33a3764.tar.gz micronucleus-4ab39b1d0cdcbac838d2d15acd532493a33a3764.tar.bz2 micronucleus-4ab39b1d0cdcbac838d2d15acd532493a33a3764.zip |
cleaning up directory structures
Diffstat (limited to 'firmware')
-rw-r--r-- | firmware/dump.rb | 3 | ||||
-rw-r--r-- | firmware/hexfiles/tiny85_165mhz_configuration1.hex | 173 | ||||
-rw-r--r-- | firmware/hexfiles/tiny85_165mhz_configuration2.hex | 173 | ||||
-rw-r--r-- | firmware/micronucleus.rb | 166 | ||||
-rw-r--r-- | firmware/releases/tiny85/micronucleus-1.02.hex (renamed from firmware/micronucleus-1.02.hex) | 0 | ||||
-rw-r--r-- | firmware/releases/tiny85/micronucleus-1.03.hex (renamed from firmware/micronucleus-1.03.hex) | 0 | ||||
-rw-r--r-- | firmware/upload.rb | 33 |
7 files changed, 0 insertions, 548 deletions
diff --git a/firmware/dump.rb b/firmware/dump.rb deleted file mode 100644 index 471d6d4..0000000 --- a/firmware/dump.rb +++ /dev/null @@ -1,3 +0,0 @@ -`rm temp-dump.bin` -`avrdude -c usbtiny -p t85 -U flash:r:temp-dump.bin:r` -puts open('temp-dump.bin').read(30).bytes.to_a.map { |x| x.to_s(16) }.join(' ') diff --git a/firmware/hexfiles/tiny85_165mhz_configuration1.hex b/firmware/hexfiles/tiny85_165mhz_configuration1.hex deleted file mode 100644 index 7681ab7..0000000 --- a/firmware/hexfiles/tiny85_165mhz_configuration1.hex +++ /dev/null @@ -1,173 +0,0 @@ -:1015000037C055C081C053C052C051C050C04FC039 -:101510004EC04DC04CC04BC04AC049C048C0040377 -:1015200009041C037700770077002E00660069002D -:101530007300630068006C002E00640065000E03F9 -:101540005500530042006100730070001201100149 -:10155000FF000008C016DC050201010200010902BB -:1015600012000101008032090400000000000000A8 -:1015700011241FBECFE5D2E0DEBFCDBF00EB0F933D -:1015800007E00F9310E0A0E6B0E0EAE9FFE102C057 -:1015900005900D92A636B107D9F710E0A6E6B0E0A7 -:1015A00001C01D92A83AB107E1F72BD2F4C4A8CF2D -:1015B000A82FB92F80E090E041E050EA609530E03C -:1015C00009C02D9182279795879510F0842795273C -:1015D000305EC8F36F5FA8F30895EADF8D939D93A3 -:1015E0000895A6E088279927AA9569F00197E1F365 -:1015F000B099FCCFB09BFECF81E09927A6B30196AE -:1016000011F0A570D9F70895CF93CFB7CF93C091BC -:101610005F02C03B21F4C0915E02C73021F0CF9140 -:10162000CFBFCF916CCFCC27C395B09BE9F7B09BD0 -:101630000BC0B09B09C0B09B07C0B09B05C0B09B5E -:1016400003C0B09B01C0D3C00F92DF93C0918B0049 -:10165000DD27CE56DF4F012EB09B03C0DF910F90E8 -:10166000E6CF2F930F931F934F932FEF4F6F06B338 -:1016700000FB20F95F933F9350E03BE065C016B359 -:101680000126502950FDC89556B3012700FB25F9C6 -:101690002F7306B3B1F05027102710FB26F906B2BE -:1016A0002230F0F000C016B3012700FB27F9012615 -:1016B000502906B22430E8F54F77206816B30000B1 -:1016C000F6CF50274F7D206206B2102F000000C0D9 -:1016D00006B300265029102710FB26F906B2E2CFE8 -:1016E0004F7B06B3206400C0DACF01265029157065 -:1016F00006B269F14E7F2160012F16B328C0002683 -:1017000050294D7F06B22260102F29C00126502992 -:101710004B7F06B22460012F2DC016B3012650293D -:10172000477F2860000006B22EC04F7E06B32061BE -:1017300030C0422706B3499300265029102706B22D -:101740004FEF10FB20F9297F16B379F2157059F18C -:101750000126502906B2012700FB21F9237F06B399 -:1017600071F2002650293150D0F006B2102710FB3C -:1017700022F9277E16B351F201265029012700FBDA -:1017800006B223F92F7C49F2000006B3102710FBA4 -:1017900024F90026502906B22F7939F270CF10E2D1 -:1017A0001ABF002717C03B503195C31BD04010E231 -:1017B0001ABF0881033CF9F00B34E9F0209189004D -:1017C0001981110F1213EDCF093651F10D3211F0BD -:1017D000013E39F7009390003F915F914F911F9127 -:1017E0000F912F91DF910F90CAB7C5FD1DCFCF91FB -:1017F000CFBFCF91189520919000222369F31091CB -:101800008E00112321F5343022F130938E00209385 -:101810008A0010918B003BE0311B30938B0019C084 -:1018200000918E0001309CF40AE53091600034FD97 -:1018300011C000936000CEE7D0E010C0052710E093 -:1018400000C021C0052710E0C89508BB14C03AE5C8 -:1018500001C032ED032EC0E0D0E032E017B31560D6 -:10186000C09A08B317BB55E020E84FEF20FF0527CB -:1018700008BB279517951C3F28F700004552B0F785 -:1018800020FF0527279508BB17951C3FB8F629911F -:101890003A9561F70A7F10918F00110F08BBC25073 -:1018A000D04011F01093890010E21ABF016017B305 -:1018B0001A7F402F4A7F54E05A95F1F708BB17BBB7 -:1018C00048BB8ACF80916900882361F0E0917A005B -:1018D000F0917B00329783E080935700E89507B63C -:1018E00000FCFDCFE0917A00F0917B00329785E01B -:1018F00080935700E89507B600FCFDCF1092690071 -:101900000895AC0160917A0070917B0061157105BA -:1019100019F16430710501F134E16A3F730731F464 -:10192000809167008195482F50E018C084E16C3F9A -:10193000780739F440917500509176004E575A4F10 -:101940000DC0E4E16E3F7E0749F44091770050916D -:1019500078004D575A4F02C04FE75AEC242F30E021 -:10196000250F311D8091670090916800820F931FB1 -:1019700090936800809367006115710521F481E1FF -:1019800080935700E89521E0FB010A01209357005E -:10199000E8951124859194918417950729F08F5F1C -:1019A0009F4F11F0209369006E5F7F4F70937B0013 -:1019B00060937A000895CF93DF93C0917A00D0911D -:1019C0007B00CF73D0708FEF9FEF9BDF2296C034E8 -:1019D000D105CCF377DFDF91CF910895E0ECF4E10E -:1019E00009C083E080935700E89507B600FCFDCF5F -:1019F000E054F0403097A9F710927B0010927A00E3 -:101A0000DACF88E10FB6F89481BD11BC0FBEE0E0DB -:101A1000F0E0859194918F579A4C39F4E4E0F0E02E -:101A2000859194918F579A4C09F0D8DF10927B00E2 -:101A300010927A001092680010926700E0E0F0E0E7 -:101A4000EE248491E80E319684E1EB3FF807C9F764 -:101A5000AA9A8BB780628BBFB89A88E893E1ECE9C9 -:101A6000F1E03197F1F70197D1F7B8987894CC2449 -:101A7000DD2490918E00935097FD28C180918B00BA -:101A8000CCE0D0E0C81BD109CE56DF4F80918A0050 -:101A90008D3209F0C2C0983009F016C183EC8093F2 -:101AA0007E008AE580936000109272004881842F46 -:101AB00080762981882309F442C031E030936600A2 -:101AC0008BE690E090938D0080938C002330B1F4EE -:101AD0008A81803339F4EC81E370F0E0EE59FF4FF6 -:101AE000E08108C08C3A29F48B81803811F430935E -:101AF0006A00E0E0E0936E0024E085C0253011F438 -:101B000021E081C0822F8450863098F48A819B81A5 -:101B100090937B0080937A00293079F09E81909396 -:101B20007C008D81827080937D0047FD68C09FEFAF -:101B300066C0223011F43093790020E064C08A81BD -:101B400010928700222331F41092880087E890E0F9 -:101B500022E050C0253019F480938F0048C0263011 -:101B6000B1F58B81813019F48CE495E104C08230A9 -:101B700041F48EE595E190938D0080938C0022E1F5 -:101B800022C08330F9F48A81882341F48EE195E103 -:101B900090938D0080938C0024E015C0813041F437 -:101BA00082E295E190938D0080938C002CE10BC034 -:101BB000823041F48EE395E190938D0080938C0008 -:101BC0002EE001C020E080E4809372001CC0283029 -:101BD00019F481E990E009C0293019F4809391004B -:101BE00006C02A3021F487E890E021E003C087E8AE -:101BF00090E020E090938D0080938C0004C080E8FA -:101C00008093720007C08F81882319F49E819217F8 -:101C100008F0922F9093610057C08091720087FF67 -:101C200053C080917C00092F891708F4082F801B6E -:101C300080937C00FF24882311F4FF24F39410E0A8 -:101C40003CC080917A0090917B00892B31F488818F -:101C50009981909376008093750080917A0090919D -:101C60007B00049731F48881998190937800809368 -:101C7000770080917A0090917B008A5F944128F0F0 -:101C800081E180935700E8951BC01E5F8881998190 -:101C900038DE80917A0090917B008F739070892B51 -:101CA00041F0FF2049F0101738F080917D00882323 -:101CB00019F081E080936F002296101708F4C1CFCD -:101CC000FF2011F01092610010928E008091600050 -:101CD00084FF8AC0809161008F3F09F485C0182F6E -:101CE000893008F018E0811B8093610080917E00AC -:101CF00098E8892780937E00112309F463C08091BE -:101D0000720087FF43C080917C00811708F4182F70 -:101D1000811B80937C00AFE7B0E030C0E0917A0097 -:101D2000F0917B0084918C93EF2B19F480917500D6 -:101D30008C9380917A0090917B00019719F48091A7 -:101D400076008C9380917A0090917B00049719F42F -:101D5000809177008C9380917A0090917B00059719 -:101D600019F4809178008C93119680917A0090916B -:101D70007B00019690937B0080937A00812F90E006 -:101D800081589F4FA817B90749F61AC0E0918C00F7 -:101D9000F0918D0086FF09C0912FAFE7B0E08491EC -:101DA0008D9331969150D9F707C0912FAFE7B0E0EE -:101DB00081918D939150E1F7F0938D00E0938C0029 -:101DC000193060F48FE790E0612F07DC612F6C5FC2 -:101DD0006C3041F08FEF8093610004C08FEF8093EF -:101DE00061006EE16093600094E186B3857031F428 -:101DF0009150D9F710928F001092890010E099232A -:101E000009F411E080917000811739F0112319F461 -:101E1000F89482D07894109370008CE991E0019747 -:101E2000F1F780916A00882369F08AE390E20197D4 -:101E3000F1F7F894D3DD789410926800109267005F -:101E400010926A0080916F00882311F18AE390E27A -:101E50000197F1F7F89480917A0090917B008F734D -:101E60009070892B11F0A7DD01C02CDD78941092C1 -:101E70006F0080917D00882359F080917A009091C5 -:101E80007B00909374008093730081E080937100D5 -:101E900080917900882389F40894C11CD11CEE201C -:101EA00009F0E7CD80916600882309F0E2CD81E555 -:101EB000C81683ECD80608F4DCCD82E291EA0197DB -:101EC000F1F7F8941BBE15BA80917100882389F050 -:101ED000809173009091740090937B0080937A00BE -:101EE00001C069DD80917A0090917B00805095411E -:101EF000C0F3E0E0F0E090E08491980F319684E147 -:101F0000EB3FF807C8F3992329F410925F0210926F -:101F10005E02F4CAF5CAF9CFFF920F931F93CF93D5 -:101F2000DF9380E8F82E00E0C0E0D0E0102F1F0D16 -:101F300011BF57DB29E0843392070CF0102FF69481 -:101F40002196C830D10511F0012FF0CF115011BFEB -:101F50001F5F012FEC0110C044DB8453994097FFB1 -:101F600003C0909581959F4F8C179D0714F401B77E -:101F7000EC0181B78F5F81BF21B730E0812F90E006 -:101F800001968217930744F701BFDF91CF911F910C -:0A1F90000F91FF900895F894FFCF21 -:061F9A005AFF1E930B002C -:0400000300001500E4 -:00000001FF diff --git a/firmware/hexfiles/tiny85_165mhz_configuration2.hex b/firmware/hexfiles/tiny85_165mhz_configuration2.hex deleted file mode 100644 index 37a925b..0000000 --- a/firmware/hexfiles/tiny85_165mhz_configuration2.hex +++ /dev/null @@ -1,173 +0,0 @@ -:1015000037C055C081C053C052C051C050C04FC039 -:101510004EC04DC04CC04BC04AC049C048C0040377 -:1015200009041C037700770077002E00660069002D -:101530007300630068006C002E00640065000E03F9 -:101540005500530042006100730070001201100149 -:10155000FF000008C016DC050201010200010902BB -:1015600012000101008032090400000000000000A8 -:1015700011241FBECFE5D2E0DEBFCDBF00EB0F933D -:1015800007E00F9310E0A0E6B0E0EAE9FFE102C057 -:1015900005900D92A636B107D9F710E0A6E6B0E0A7 -:1015A00001C01D92A83AB107E1F72BD2F4C4A8CF2D -:1015B000A82FB92F80E090E041E050EA609530E03C -:1015C00009C02D9182279795879510F0842795273C -:1015D000305EC8F36F5FA8F30895EADF8D939D93A3 -:1015E0000895A6E088279927AA9569F00197E1F365 -:1015F000B399FCCFB39BFECF81E09927A6B30196A8 -:1016000011F0A871D9F70895CF93CFB7CF93C091B8 -:101610005F02C03B21F4C0915E02C73021F0CF9140 -:10162000CFBFCF916CCFCC27C395B39BE9F7B39BCA -:101630000BC0B39B09C0B39B07C0B39B05C0B39B52 -:1016400003C0B39B01C0D3C00F92DF93C0918B0046 -:10165000DD27CE56DF4F012EB39B03C0DF910F90E5 -:10166000E6CF2F930F931F934F932FEF4F6F06B338 -:1016700003FB20F95F933F9350E03BE065C016B356 -:101680000126502953FDC89556B3012703FB25F9C0 -:101690002F7306B3B1F05027102713FB26F906B2BB -:1016A0002230F0F000C016B3012703FB27F9012612 -:1016B000502906B22430E8F54F77206816B30000B1 -:1016C000F6CF50274F7D206206B2102F000000C0D9 -:1016D00006B300265029102713FB26F906B2E2CFE5 -:1016E0004F7B06B3206400C0DACF01265029187161 -:1016F00006B269F14E7F2160012F16B328C0002683 -:1017000050294D7F06B22260102F29C00126502992 -:101710004B7F06B22460012F2DC016B3012650293D -:10172000477F2860000006B22EC04F7E06B32061BE -:1017300030C0422706B3499300265029102706B22D -:101740004FEF13FB20F9297F16B379F2187159F185 -:101750000126502906B2012703FB21F9237F06B396 -:1017600071F2002650293150D0F006B2102713FB39 -:1017700022F9277E16B351F201265029012703FBD7 -:1017800006B223F92F7C49F2000006B3102713FBA1 -:1017900024F90026502906B22F7939F270CF10E2D1 -:1017A0001ABF002717C03B503195C31BD04010E231 -:1017B0001ABF0881033CF9F00B34E9F0209189004D -:1017C0001981110F1213EDCF093651F10D3211F0BD -:1017D000013E39F7009390003F915F914F911F9127 -:1017E0000F912F91DF910F90CAB7C5FD1DCFCF91FB -:1017F000CFBFCF91189520919000222369F31091CB -:101800008E00112321F5343022F130938E00209385 -:101810008A0010918B003BE0311B30938B0019C084 -:1018200000918E0001309CF40AE53091600034FD97 -:1018300011C000936000CEE7D0E010C0052710E093 -:1018400000C021C0052710E0C89508BB14C03AE5C8 -:1018500001C032ED032EC0E0D0E032E017B31861D2 -:10186000C39A08B317BB58E120E84FEF20FF0527C4 -:1018700008BB279517951C3F28F700004552B0F785 -:1018800020FF0527279508BB17951C3FB8F629911F -:101890003A9561F7077E10918F00110F08BBC25077 -:1018A000D04011F01093890010E21ABF086017B3FE -:1018B000177E402F477E54E05A95F1F708BB17BBBF -:1018C00048BB8ACF80916900882361F0E0917A005B -:1018D000F0917B00329783E080935700E89507B63C -:1018E00000FCFDCFE0917A00F0917B00329785E01B -:1018F00080935700E89507B600FCFDCF1092690071 -:101900000895AC0160917A0070917B0061157105BA -:1019100019F16430710501F134E16A3F730731F464 -:10192000809167008195482F50E018C084E16C3F9A -:10193000780739F440917500509176004E575A4F10 -:101940000DC0E4E16E3F7E0749F44091770050916D -:1019500078004D575A4F02C04FE75AEC242F30E021 -:10196000250F311D8091670090916800820F931FB1 -:1019700090936800809367006115710521F481E1FF -:1019800080935700E89521E0FB010A01209357005E -:10199000E8951124859194918417950729F08F5F1C -:1019A0009F4F11F0209369006E5F7F4F70937B0013 -:1019B00060937A000895CF93DF93C0917A00D0911D -:1019C0007B00CF73D0708FEF9FEF9BDF2296C034E8 -:1019D000D105CCF377DFDF91CF910895E0ECF4E10E -:1019E00009C083E080935700E89507B600FCFDCF5F -:1019F000E054F0403097A9F710927B0010927A00E3 -:101A0000DACF88E10FB6F89481BD11BC0FBEE0E0DB -:101A1000F0E0859194918F579A4C39F4E4E0F0E02E -:101A2000859194918F579A4C09F0D8DF10927B00E2 -:101A300010927A001092680010926700E0E0F0E0E7 -:101A4000EE248491E80E319684E1EB3FF807C9F764 -:101A5000AC9A8BB780628BBFBB9A88E893E1ECE9C4 -:101A6000F1E03197F1F70197D1F7BB987894CC2446 -:101A7000DD2490918E00935097FD28C180918B00BA -:101A8000CCE0D0E0C81BD109CE56DF4F80918A0050 -:101A90008D3209F0C2C0983009F016C183EC8093F2 -:101AA0007E008AE580936000109272004881842F46 -:101AB00080762981882309F442C031E030936600A2 -:101AC0008BE690E090938D0080938C002330B1F4EE -:101AD0008A81803339F4EC81E370F0E0EE59FF4FF6 -:101AE000E08108C08C3A29F48B81803811F430935E -:101AF0006A00E0E0E0936E0024E085C0253011F438 -:101B000021E081C0822F8450863098F48A819B81A5 -:101B100090937B0080937A00293079F09E81909396 -:101B20007C008D81827080937D0047FD68C09FEFAF -:101B300066C0223011F43093790020E064C08A81BD -:101B400010928700222331F41092880087E890E0F9 -:101B500022E050C0253019F480938F0048C0263011 -:101B6000B1F58B81813019F48CE495E104C08230A9 -:101B700041F48EE595E190938D0080938C0022E1F5 -:101B800022C08330F9F48A81882341F48EE195E103 -:101B900090938D0080938C0024E015C0813041F437 -:101BA00082E295E190938D0080938C002CE10BC034 -:101BB000823041F48EE395E190938D0080938C0008 -:101BC0002EE001C020E080E4809372001CC0283029 -:101BD00019F481E990E009C0293019F4809391004B -:101BE00006C02A3021F487E890E021E003C087E8AE -:101BF00090E020E090938D0080938C0004C080E8FA -:101C00008093720007C08F81882319F49E819217F8 -:101C100008F0922F9093610057C08091720087FF67 -:101C200053C080917C00092F891708F4082F801B6E -:101C300080937C00FF24882311F4FF24F39410E0A8 -:101C40003CC080917A0090917B00892B31F488818F -:101C50009981909376008093750080917A0090919D -:101C60007B00049731F48881998190937800809368 -:101C7000770080917A0090917B008A5F944128F0F0 -:101C800081E180935700E8951BC01E5F8881998190 -:101C900038DE80917A0090917B008F739070892B51 -:101CA00041F0FF2049F0101738F080917D00882323 -:101CB00019F081E080936F002296101708F4C1CFCD -:101CC000FF2011F01092610010928E008091600050 -:101CD00084FF8AC0809161008F3F09F485C0182F6E -:101CE000893008F018E0811B8093610080917E00AC -:101CF00098E8892780937E00112309F463C08091BE -:101D0000720087FF43C080917C00811708F4182F70 -:101D1000811B80937C00AFE7B0E030C0E0917A0097 -:101D2000F0917B0084918C93EF2B19F480917500D6 -:101D30008C9380917A0090917B00019719F48091A7 -:101D400076008C9380917A0090917B00049719F42F -:101D5000809177008C9380917A0090917B00059719 -:101D600019F4809178008C93119680917A0090916B -:101D70007B00019690937B0080937A00812F90E006 -:101D800081589F4FA817B90749F61AC0E0918C00F7 -:101D9000F0918D0086FF09C0912FAFE7B0E08491EC -:101DA0008D9331969150D9F707C0912FAFE7B0E0EE -:101DB00081918D939150E1F7F0938D00E0938C0029 -:101DC000193060F48FE790E0612F07DC612F6C5FC2 -:101DD0006C3041F08FEF8093610004C08FEF8093EF -:101DE00061006EE16093600094E186B3887131F424 -:101DF0009150D9F710928F001092890010E099232A -:101E000009F411E080917000811739F0112319F461 -:101E1000F89482D07894109370008CE991E0019747 -:101E2000F1F780916A00882369F08AE390E20197D4 -:101E3000F1F7F894D3DD789410926800109267005F -:101E400010926A0080916F00882311F18AE390E27A -:101E50000197F1F7F89480917A0090917B008F734D -:101E60009070892B11F0A7DD01C02CDD78941092C1 -:101E70006F0080917D00882359F080917A009091C5 -:101E80007B00909374008093730081E080937100D5 -:101E900080917900882389F40894C11CD11CEE201C -:101EA00009F0E7CD80916600882309F0E2CD81E555 -:101EB000C81683ECD80608F4DCCD82E291EA0197DB -:101EC000F1F7F8941BBE15BA80917100882389F050 -:101ED000809173009091740090937B0080937A00BE -:101EE00001C069DD80917A0090917B00805095411E -:101EF000C0F3E0E0F0E090E08491980F319684E147 -:101F0000EB3FF807C8F3992329F410925F0210926F -:101F10005E02F4CAF5CAF9CFFF920F931F93CF93D5 -:101F2000DF9380E8F82E00E0C0E0D0E0102F1F0D16 -:101F300011BF57DB29E0843392070CF0102FF69481 -:101F40002196C830D10511F0012FF0CF115011BFEB -:101F50001F5F012FEC0110C044DB8453994097FFB1 -:101F600003C0909581959F4F8C179D0714F401B77E -:101F7000EC0181B78F5F81BF21B730E0812F90E006 -:101F800001968217930744F701BFDF91CF911F910C -:0A1F90000F91FF900895F894FFCF21 -:061F9A005AFF1E930B002C -:0400000300001500E4 -:00000001FF diff --git a/firmware/micronucleus.rb b/firmware/micronucleus.rb deleted file mode 100644 index 3211d84..0000000 --- a/firmware/micronucleus.rb +++ /dev/null @@ -1,166 +0,0 @@ -require 'libusb' - -# Abstracts access to micronucleus avr tiny85 bootloader - can be used only to erase and upload bytes -class Micronucleus - Functions = [ - :get_info, - :write_page, - :erase_application, - :run_program - ] - - # return all micronucleus devices connected to computer - def self.all - usb = LIBUSB::Context.new - usb.devices.select { |device| - device.idVendor == 0x16d0 && device.idProduct == 0x0753 - }.map { |device| - self.new(device) - } - end - - def initialize devref - @device = devref - end - - def info - unless @info - result = control_transfer(function: :get_info, dataIn: 4) - flash_length, page_size, write_sleep = result.unpack('S>CC') - - @info = { - flash_length: flash_length, - page_size: page_size, - pages: (flash_length.to_f / page_size).ceil, - write_sleep: write_sleep.to_f / 1000.0, - version: "#{@device.bcdDevice >> 8}.#{@device.bcdDevice & 0xFF}", - version_numeric: @device.bcdDevice - } - end - - @info - end - - def erase! - puts "erasing" - info = self.info - control_transfer(function: :erase_application) - info[:pages].times do - sleep(info[:write_sleep]) # sleep for as many pages as the chip has to erase - end - puts "erased chip" - end - - # upload a new program - def program= bytestring - info = self.info - raise "Program too long!" if bytestring.bytesize > info[:flash_length] - bytes = bytestring.bytes.to_a - - erase! - - address = 0 - bytes.each_slice(info[:page_size]) do |slice| - slice.push(0xFF) while slice.length < info[:page_size] # ensure every slice is one page_size long - pad out if needed - - puts "uploading @ #{address} of #{bytes.length}" - control_transfer(function: :write_page, wIndex: address, wValue: slice.length, dataOut: slice.pack('C*')) - sleep(info[:write_sleep]) - address += slice.length - end - end - - def finished - info = self.info - - puts "asking device to finish writing" - control_transfer(function: :run_program) - puts "waiting for device to finish" - - # sleep for as many pages as the chip could potentially need to write - this could be smarter - info[:pages].times do - sleep(info[:write_sleep]) - end - - @io.close - @io = nil - end - - def inspect - "<MicroBoot #{info[:version]}: #{(info[:flash_length] / 1024.0).round(1)} kb programmable>" - end - - protected - # raw opened device - def io - unless @io - @io = @device.open - end - - @io - end - - def control_transfer(opts = {}) - opts[:bRequest] = Functions.index(opts.delete(:function)) if opts[:function] - io.control_transfer({ - wIndex: 0, - wValue: 0, - bmRequestType: usb_request_type(opts), - timeout: 5000 - }.merge opts) - end - - # calculate usb request type - def usb_request_type opts #:nodoc: - value = LIBUSB::REQUEST_TYPE_VENDOR | LIBUSB::RECIPIENT_DEVICE - value |= LIBUSB::ENDPOINT_OUT if opts.has_key? :dataOut - value |= LIBUSB::ENDPOINT_IN if opts.has_key? :dataIn - return value - end -end - -class HexProgram - def initialize input - @bytes = Hash.new(0xFF) - input = input.read if input.is_a? IO - parse input - end - - def binary - highest_address = @bytes.keys.max - - bytestring = Array.new(highest_address + 1) { |index| - @bytes[index] - }.pack('C*') - end - - protected - - def parse input_text - input_text.each_line do |line| - next unless line.start_with? ':' - line.chomp! - length = line[1..2].to_i(16) # usually 16 or 32 - address = line[3..6].to_i(16) # 16-bit start address - record_type = line[7..8].to_i(16) - data = line[9.. 9 + (length * 2)] - checksum = line[9 + (length * 2).. 10 + (length * 2)].to_i(16) - checksum_section = line[1...9 + (length * 2)] - - checksum_calculated = checksum_section.chars.to_a.each_slice(2).map { |slice| - slice.join('').to_i(16) - }.reduce(0, &:+) - - checksum_calculated = (((checksum_calculated % 256) ^ 0xFF) + 1) % 256 - - raise "Hex file checksum mismatch @ #{line}" unless checksum == checksum_calculated - - if record_type == 0 # data record - data_bytes = data.chars.each_slice(2).map { |slice| slice.join('').to_i(16) } - data_bytes.each_with_index do |byte, index| - @bytes[address + index] = byte - end - end - end - end -end
\ No newline at end of file diff --git a/firmware/micronucleus-1.02.hex b/firmware/releases/tiny85/micronucleus-1.02.hex index 2bc966c..2bc966c 100644 --- a/firmware/micronucleus-1.02.hex +++ b/firmware/releases/tiny85/micronucleus-1.02.hex diff --git a/firmware/micronucleus-1.03.hex b/firmware/releases/tiny85/micronucleus-1.03.hex index 5ca4e98..5ca4e98 100644 --- a/firmware/micronucleus-1.03.hex +++ b/firmware/releases/tiny85/micronucleus-1.03.hex diff --git a/firmware/upload.rb b/firmware/upload.rb deleted file mode 100644 index 32aefa9..0000000 --- a/firmware/upload.rb +++ /dev/null @@ -1,33 +0,0 @@ -require_relative './micronucleus' - -if ARGV[0] - if ARGV[0].end_with? '.hex' - puts "parsing input file as intel hex" - test_data = HexProgram.new(open ARGV[0]).binary - else - puts "parsing input file as raw binary" - test_data = open(ARGV[0]).read - end -else - raise "Pass intel hex or raw binary as argument to script" -end - -#test_data += ("\xFF" * 64) - -puts "Plug in programmable device now: (waiting)" -sleep 0.25 while Micronucleus.all.length == 0 - -nucleus = Micronucleus.all.first -puts "Attached to device: #{nucleus.inspect}" - -#puts "Attempting to write '#{test_data.inspect}' to first thinklet's program memory" -#puts "Bytes: #{test_data.bytes.to_a.inspect}" -sleep(0.25) # some time to think? -puts "Attempting to write supplied program in to device's memory" -nucleus.program = test_data - -puts "Great! Starting program..." - - -nucleus.finished # let thinklet know it can go do other things now if it likes -puts "All done!" |