[gnoduino: 203/237] check to see if a sketch has been loaded before jumping out of bootloader



commit 88605c62353b9599b1522232807776e04fc0eeb3
Author: Zach Eveland <zeveland blacklabel-development com>
Date:   Mon Oct 31 21:36:29 2011 -0400

    check to see if a sketch has been loaded before jumping out of  bootloader

 .../bootloaders/diskloader/DiskLoader-Leonardo.hex |  297 ++++++++++----------
 arduino/bootloaders/diskloader/src/DiskLoader.cpp  |    3 +
 2 files changed, 152 insertions(+), 148 deletions(-)
---
diff --git a/arduino/bootloaders/diskloader/DiskLoader-Leonardo.hex b/arduino/bootloaders/diskloader/DiskLoader-Leonardo.hex
index b5b257f..0e2c445 100644
--- a/arduino/bootloaders/diskloader/DiskLoader-Leonardo.hex
+++ b/arduino/bootloaders/diskloader/DiskLoader-Leonardo.hex
@@ -1,6 +1,6 @@
 :10700000BDC00000E0C00000DEC00000DCC0000029
 :10701000DAC00000D8C00000D6C00000D4C0000014
-:10702000D2C00000D0C00000BCC300002EC40000CD
+:10702000D2C00000D0C00000C4C3000036C40000BD
 :10703000CAC00000C8C00000C6C00000C4C0000034
 :10704000C2C00000C0C00000BEC00000BCC0000044
 :10705000BAC00000B8C00000B6C00000B4C0000054
@@ -9,7 +9,7 @@
 :10708000A2C00000A0C000009EC000009CC0000084
 :107090009AC0000098C0000096C0000094C0000094
 :1070A00092C0000090C000008EC0000011241FBEDE
-:1070B000CFEFDAE0DEBFCDBF23C1080B0002020232
+:1070B000CFEFDAE0DEBFCDBF2AC1080B000202022B
 :1070C0000100090400000102020000052400100173
 :1070D0000524010101042402060524060001070518
 :1070E000810310004009040100020A0000000705A6
@@ -21,158 +21,159 @@
 :107140006400750069006E006F0020004C004C0068
 :1071500043001201000200000040412334000001FE
 :10716000010200011201000202000040412334002C
-:1071700000010102000100C18081353C11241FBEC5
-:10718000CFEFDAE0DEBFCDBF11E0A0E0B1E0E6EE88
+:1071700000010102000100C180813D3C11241FBEBD
+:10718000CFEFDAE0DEBFCDBF11E0A0E0B1E0E6EF87
 :10719000FAE702C005900D92A830B107D9F711E0C7
 :1071A000A8E0B1E001C01D92A739B107E1F711E7EE
-:1071B000CCE7D1E703C02297FE018FD4CA37D107AD
-:1071C000D1F79ED08EC41CCFFC0180818E5F80835E
-:1071D00080E86AEB70E742E450E095C2FC018181EF
+:1071B000CCE7D1E703C02297FE0197D4CA37D107A5
+:1071C000D1F7A5D096C41CCFFC0180818E5F80834F
+:1071D00080E86AEB70E742E450E09DC2FC018181E7
 :1071E0009081913A49F48132C1F480E060E071E02D
-:1071F00047E050E088D20FC0913279F4803231F408
-:1072000080E091E067E070E0BAD205C0823229F4F4
+:1071F00047E050E090D20FC0913279F4803231F400
+:1072000080E091E067E070E0C2D205C0823229F4EC
 :1072100082818093070181E0089580E008952091A4
 :107220008C0130918D012F5F3F4F30938D01209362
 :107230008C01C901892F99278695982F803418F0E1
 :107240008FE7891B982F990F921710F4479808958C
-:10725000479A08954798289A769AF89401E005BFCE
-:1072600000E005BF81E08093E0001092E200EE278D
-:10727000FF2709940895FF920F931F93CF93DF93F5
-:10728000982F8B01FF2480E76030780738F4FF24C3
-:10729000F39483E0FB0180935700E895C42FD0E07E
-:1072A000892F68E071E0AE0120D1FF2019F107B607
-:1072B00000FCFDCFD595C7954C2FF801A8E0B1E0B3
-:1072C00020E031E009C08D919D910C013093570071
-:1072D000E895112432962F5F2417A8F385E0F80172
-:1072E00080935700E89507B600FCFDCF81E18093BD
-:1072F0005700E895DF91CF911F910F91FF9008956E
-:1073000088E10FB6F89480936000109260000FBE81
-:107310003F9A209A6E9A90E89093610010926100D3
-:1073200081E885BF95BF01E005BF02E005BF769A01
-:10733000289A479886E991E082D2789484E18093F4
-:10734000880180E180938901CC24DD2470E9A72E97
-:1073500071E0B72E02C0CC24DD2482E0BDD08823AA
-:1073600009F492C082E016D1E82E8CEF90E7FC0180
-:1073700024913196029644912E1511F02223B9F7EB
-:1073800010928B0110928A0150E082E068E071E077
-:10739000ACD0F1E4EF1679F46091080160586330E5
-:1073A00028F0683111F064E001C063E0062F10E0BE
-:1073B000015F1E4809C026E5E21681F480910801AC
-:1073C000803329F003E111E7FF24F3942EC080916C
-:1073D0000A01082F10E0045F1E48F6CF85E7E81683
-:1073E00029F40CE011E763E0F62E1FC0E5E5EE1688
-:1073F00039F4C0900801D0900901CC0CDD1C0CC000
-:10740000F4E6EF1631F482E0B6014091090133DF72
-:1074100003C024E7E21621F003E111E7FF2405C0D1
-:10742000F09009018601CF0CD11CC8E8D3E1219767
-:10743000C930D10509F43BC082E04ED0882309F061
-:1074400036C0F5CF809709F086CF83E068E871E019
-:1074500041E050E0C7D0FF2029F04F2D50E083E8F5
-:10746000B801C0D083E469E871E041E050E0BAD0EF
-:1074700081E5E81609F071CF88EE93E0F5013197C8
-:10748000F1F70197D9F711C0CADEC5010197F1F7ED
-:1074900080918A0190918B01019790938B01809349
-:1074A0008A010196019709F058CFD4DE56CF82E0C9
-:1074B00071D0EFEF8F3F9E0709F0C4CFC6CFFC011C
-:1074C00004C08091F100819361506623D1F7289820
-:1074D00084E680938F0108959FB7F8948770809316
-:1074E000E9008091F2009FBF0895FB019FB7F894D7
-:1074F00087708093E90034E62BE610C08091E800A5
-:1075000085FFFCCF289830938F018091F100819303
-:107510008091E80085FD02C02093E8004150504072
-:107520008FEF4F3F580751F79FBF0895282F809145
-:1075300090018823C1F057FF1AC015C02898909376
-:107540008F018091F1008193E217F307B9F741159C
-:10755000510539F08091F200882319F48BE680936D
-:10756000E800AFBF02C04FEF5FEFCA010895AFB7A9
-:10757000F89427702093E9008091F200282F30E0E2
-:10758000241735070CF4A901FB019B01240F311DC1
-:1075900094E6DACFDF93CF930F92CDB7DEB7BE017B
-:1075A0006F5F7F4F41E050E0C1DF019719F08FEF2F
-:1075B0009FEF02C0898190E00F90CF91DF910895F5
-:1075C0002FB7F89487708093E9008091E80085FDDB
-:1075D00002C090E004C08091F20090E4981B2FBF9D
-:1075E000892F08955F926F927F928F929F92AF92B0
-:1075F000BF92CF92DF92EF92FF920F931F93CF93A0
-:10760000DF93F82E6A0180919001882319F44FEFDF
-:107610005FEF68C08B01EA0157E0E52EEF208F2D68
-:1076200090E040E2842E912C882299223AE3532E56
-:1076300020E4A22EB12CA822B92280EA682E8FE085
-:10764000782E43C08F2DBCDF282F882321F4C3015F
-:107650000197F1F73AC090E0C817D9070CF42C2F26
-:10766000C21BD1094FB7F894E092E900811491044C
-:1076700021F406C01092F10021502223D9F719C03D
-:10768000F7FC03C0F801922F10C0C801322F06C0CA
-:10769000FC010196E491E093F10031503323C1F7EE
-:1076A00006C081918093F10091509923D1F7020F88
-:1076B000111D8091E80085FF05C0209729F4A114D1
-:1076C000B10411F05092E8004FBF209709F0BACFF3
-:1076D000F6FE03C08AE38093E800769884E6809300
-:1076E0008E01A601CA01DF91CF911F910F91FF90EA
-:1076F000EF90DF90CF90BF90AF909F908F907F9052
-:107700006F905F9008950F931F93182FFB01A09126
-:107710009301B0919401BA010EEF2AC017FF02C085
-:10772000949101C0908120919101309192012A178A
-:107730003B07ACF48091E8008570E1F38091E800AC
-:1077400082FF03C04FEF5FEF16C09093F100C901B5
-:1077500001968F739070892B11F40093E8002F5FCE
-:107760003F4F3093920120939101615070403196C8
-:107770006115710599F6CA011F910F910895CF9374
-:10778000DF939C01EB018091E80082FFFCCFC901EF
-:107790006C2F95DE8BEF8093E800CE01DF91CF91C7
-:1077A00008951F920F920FB60F9211242F933F93BB
-:1077B0008F938091E1001092E100282F83FF0FC08A
-:1077C0001092E90081E08093EB001092EC0082E3DC
-:1077D0008093ED001092900188E08093F00022FFEA
-:1077E00026C083E08093E9008091F200882319F09D
-:1077F0008AE38093E80080918E01882351F0809184
-:107800008E01815080938E0180918E01882309F42E
-:10781000769A80918F01882351F080918F01815059
-:1078200080938F0180918F01882309F4289A8F918A
-:107830003F912F910F900FBE0F901F9018951092AF
-:10784000900181E08093D70080EA8093D80082E1A4
-:1078500089BD09B400FEFDCF80E98093D8008CE09B
-:107860008093E2001092E00008950895DF93CF9393
-:107870000F92CDB7DEB71982CE010196A5DC8981C2
-:1078800090E00F90CF91DF9108951F920F920FB665
-:107890000F921124EF92FF921F932F933F934F93D8
-:1078A0005F936F937F938F939F93AF93BF93EF9368
-:1078B000FF93DF93CF93CDB7DEB76197DEBFCDBF28
-:1078C0001092E9008091E80083FFECC0CE010196A0
-:1078D00068E0F5DD82EF8093E800998197FF05C0AD
-:1078E0008091E80080FFFCCF03C08EEF8093E8001A
-:1078F000292F30E0C90180769070892B09F0B3C040
-:107900008A81882329F41092F1001092F100BFC0FF
-:10791000813009F4BCC0833009F4B9C0853049F422
-:107920008091E80080FFFCCF8B8180688093E3002A
-:10793000AEC0863009F06DC01C81EF80F884123033
-:10794000A9F51092E9001092920110929101109203
-:107950009401109293018ADF99E0FE013996DF01CC
-:10796000292F1D922A95E9F799871A8791E09E871A
-:1079700090E8988B9AEF998B209191013091920128
-:10798000275F3F4F3C872B878D871092E90010922D
-:10799000920110929101F0929401E092930180E0A3
-:1079A000BF0149E050E0AFDE61DF71C01092E90035
-:1079B0001092920110929101F0929401E092930141
-:1079C000113071F488E0E816F10411F41093950178
-:1079D00080919501882309F062C0E2E5F1E713C0C8
-:1079E000133009F058C08B81882319F4E4E1F1E7E2
-:1079F0000AC0823019F4E8E1F1E705C0813009F0EE
-:107A00004AC0EAE3F1E7449150E080E8BF017BDE41
-:107A10003EC0873009F43FC0883021F481E0809374
-:107A2000F10035C0893099F523703070232B99F51A
-:107A3000E7E7F1E791E031E026E39093E900309346
-:107A4000EB0084918093EC002093ED009F5F3196D2
-:107A5000943099F78EE78093EA001092EA008B81C8
-:107A60008093900114C08F8198851092E900109244
-:107A700092011092910190939401809393018D81D2
-:107A8000882349F4CE010196A9DB882321F08EEFEB
-:107A90008093E80007C081E28093EB0003C0E4E636
-:107AA000F1E7B1CF6196DEBFCDBFCF91DF91FF91FE
-:107AB000EF91BF91AF919F918F917F916F915F9166
-:107AC0004F913F912F911F91FF90EF900F900FBE1C
-:107AD0000F901F901895EE0FFF1F0590F491E02D69
-:067AE0000994F894FFCFA9
-:087AE60000E1000000000000B7
+:10725000479A0895E0E0F0E0859194918F5F9F4F09
+:1072600081F04798289A769AF89401E005BF00E0EB
+:1072700005BF81E08093E0001092E200EE27FF2737
+:1072800009940895FF920F931F93CF93DF93982F44
+:107290008B01FF2480E76030780738F4FF24F394F3
+:1072A00083E0FB0180935700E895C42FD0E0892F3D
+:1072B00068E071E0AE0121D1FF2019F107B600FCB2
+:1072C000FDCFD595C7954C2FF801A8E0B1E020E09F
+:1072D00031E009C08D919D910C0130935700E895E4
+:1072E000112432962F5F2417A8F385E0F8018093CC
+:1072F0005700E89507B600FCFDCF81E18093570069
+:10730000E895DF91CF911F910F91FF90089588E14B
+:107310000FB6F89480936000109260000FBE3F9A01
+:10732000209A6E9A90E8909361001092610081E833
+:1073300085BF95BF01E005BF02E005BF769A289A98
+:10734000479886E991E083D2789484E1809388011C
+:1073500080E180938901CC24DD2470E9A72E71E0BF
+:10736000B72E02C0CC24DD2482E0BED0882309F4ED
+:1073700093C082E017D1E82E8CEF90E7FC012491B6
+:107380003196029644912E1511F02223B9F71092EE
+:107390008B0110928A0150E082E068E071E0ADD08C
+:1073A000F1E4EF1679F4609108016058633028F039
+:1073B000683111F064E001C063E0C62FD0E0C15F26
+:1073C000DE4810C026E5E21681F480910801803382
+:1073D00019F0FF24F39428C080910A01C82FD0E04F
+:1073E000C45FDE48FF24F39427C085E7E81629F43C
+:1073F00063E0F62ECCE0D1E71FC0E5E5EE1639F4E8
+:10740000C0900801D0900901CC0CDD1C0CC0F4E642
+:10741000EF1631F482E0B6014091090133DF03C079
+:1074200024E7E21621F0FF24C3E1D1E705C0F09084
+:107430000901E601CF0CD11C08E813E1015010400E
+:107440000930110509F43BC082E04ED0882309F0D1
+:1074500036C0F4CF809709F085CF83E068E871E00B
+:1074600041E050E0C7D0FF2029F04F2D50E083E8E5
+:10747000BE01C0D083E469E871E041E050E0BAD0D9
+:1074800081E5E81609F070CF88EE93E0F5013197B9
+:10749000F1F70197D9F711C0C2DEC5010197F1F7E5
+:1074A00080918A0190918B01019790938B01809339
+:1074B0008A010196019709F057CFCCDE55CF82E0C3
+:1074C00071D0EFEF8F3F9E0709F0C4CFC6CFFC010C
+:1074D00004C08091F100819361506623D1F7289810
+:1074E00084E680938F0108959FB7F8948770809306
+:1074F000E9008091F2009FBF0895FB019FB7F894C7
+:1075000087708093E90034E62BE610C08091E80094
+:1075100085FFFCCF289830938F018091F1008193F3
+:107520008091E80085FD02C02093E8004150504062
+:107530008FEF4F3F580751F79FBF0895282F809135
+:1075400090018823C1F057FF1AC015C02898909366
+:107550008F018091F1008193E217F307B9F741158C
+:10756000510539F08091F200882319F48BE680935D
+:10757000E800AFBF02C04FEF5FEFCA010895AFB799
+:10758000F89427702093E9008091F200282F30E0D2
+:10759000241735070CF4A901FB019B01240F311DB1
+:1075A00094E6DACFDF93CF930F92CDB7DEB7BE016B
+:1075B0006F5F7F4F41E050E0C1DF019719F08FEF1F
+:1075C0009FEF02C0898190E00F90CF91DF910895E5
+:1075D0002FB7F89487708093E9008091E80085FDCB
+:1075E00002C090E004C08091F20090E4981B2FBF8D
+:1075F000892F08955F926F927F928F929F92AF92A0
+:10760000BF92CF92DF92EF92FF920F931F93CF938F
+:10761000DF93F82E6A0180919001882319F44FEFCF
+:107620005FEF68C08B01EA0157E0E52EEF208F2D58
+:1076300090E040E2842E912C882299223AE3532E46
+:1076400020E4A22EB12CA822B92280EA682E8FE075
+:10765000782E43C08F2DBCDF282F882321F4C3014F
+:107660000197F1F73AC090E0C817D9070CF42C2F16
+:10767000C21BD1094FB7F894E092E900811491043C
+:1076800021F406C01092F10021502223D9F719C02D
+:10769000F7FC03C0F801922F10C0C801322F06C0BA
+:1076A000FC010196E491E093F10031503323C1F7DE
+:1076B00006C081918093F10091509923D1F7020F78
+:1076C000111D8091E80085FF05C0209729F4A114C1
+:1076D000B10411F05092E8004FBF209709F0BACFE3
+:1076E000F6FE03C08AE38093E800769884E68093F0
+:1076F0008E01A601CA01DF91CF911F910F91FF90DA
+:10770000EF90DF90CF90BF90AF909F908F907F9041
+:107710006F905F9008950F931F93182FFB01A09116
+:107720009301B0919401BA010EEF2AC017FF02C075
+:10773000949101C0908120919101309192012A177A
+:107740003B07ACF48091E8008570E1F38091E8009C
+:1077500082FF03C04FEF5FEF16C09093F100C901A5
+:1077600001968F739070892B11F40093E8002F5FBE
+:107770003F4F3093920120939101615070403196B8
+:107780006115710599F6CA011F910F910895CF9364
+:10779000DF939C01EB018091E80082FFFCCFC901DF
+:1077A0006C2F95DE8BEF8093E800CE01DF91CF91B7
+:1077B00008951F920F920FB60F9211242F933F93AB
+:1077C0008F938091E1001092E100282F83FF0FC07A
+:1077D0001092E90081E08093EB001092EC0082E3CC
+:1077E0008093ED001092900188E08093F00022FFDA
+:1077F00026C083E08093E9008091F200882319F08D
+:107800008AE38093E80080918E01882351F0809173
+:107810008E01815080938E0180918E01882309F41E
+:10782000769A80918F01882351F080918F01815049
+:1078300080938F0180918F01882309F4289A8F917A
+:107840003F912F910F900FBE0F901F90189510929F
+:10785000900181E08093D70080EA8093D80082E194
+:1078600089BD09B400FEFDCF80E98093D8008CE08B
+:107870008093E2001092E00008950895DF93CF9383
+:107880000F92CDB7DEB71982CE0101969DDC8981BA
+:1078900090E00F90CF91DF9108951F920F920FB655
+:1078A0000F921124EF92FF921F932F933F934F93C8
+:1078B0005F936F937F938F939F93AF93BF93EF9358
+:1078C000FF93DF93CF93CDB7DEB76197DEBFCDBF18
+:1078D0001092E9008091E80083FFECC0CE01019690
+:1078E00068E0F5DD82EF8093E800998197FF05C09D
+:1078F0008091E80080FFFCCF03C08EEF8093E8000A
+:10790000292F30E0C90180769070892B09F0B3C02F
+:107910008A81882329F41092F1001092F100BFC0EF
+:10792000813009F4BCC0833009F4B9C0853049F412
+:107930008091E80080FFFCCF8B8180688093E3001A
+:10794000AEC0863009F06DC01C81EF80F884123023
+:10795000A9F51092E90010929201109291011092F3
+:107960009401109293018ADF99E0FE013996DF01BC
+:10797000292F1D922A95E9F799871A8791E09E870A
+:1079800090E8988B9AEF998B209191013091920118
+:10799000275F3F4F3C872B878D871092E90010921D
+:1079A000920110929101F0929401E092930180E093
+:1079B000BF0149E050E0AFDE61DF71C01092E90025
+:1079C0001092920110929101F0929401E092930131
+:1079D000113071F488E0E816F10411F41093950168
+:1079E00080919501882309F062C0E2E5F1E713C0B8
+:1079F000133009F058C08B81882319F4E4E1F1E7D2
+:107A00000AC0823019F4E8E1F1E705C0813009F0DD
+:107A10004AC0EAE3F1E7449150E080E8BF017BDE31
+:107A20003EC0873009F43FC0883021F481E0809364
+:107A3000F10035C0893099F523703070232B99F50A
+:107A4000E7E7F1E791E031E026E39093E900309336
+:107A5000EB0084918093EC002093ED009F5F3196C2
+:107A6000943099F78EE78093EA001092EA008B81B8
+:107A70008093900114C08F8198851092E900109234
+:107A800092011092910190939401809393018D81C2
+:107A9000882349F4CE010196A1DB882321F08EEFE3
+:107AA0008093E80007C081E28093EB0003C0E4E626
+:107AB000F1E7B1CF6196DEBFCDBFCF91DF91FF91EE
+:107AC000EF91BF91AF919F918F917F916F915F9156
+:107AD0004F913F912F911F91FF90EF900F900FBE0C
+:107AE0000F901F901895EE0FFF1F0590F491E02D59
+:067AF0000994F894FFCF99
+:087AF60000E1000000000000A7
 :040000030000700089
 :00000001FF
diff --git a/arduino/bootloaders/diskloader/src/DiskLoader.cpp b/arduino/bootloaders/diskloader/src/DiskLoader.cpp
index 30ac1b6..2792bc6 100644
--- a/arduino/bootloaders/diskloader/src/DiskLoader.cpp
+++ b/arduino/bootloaders/diskloader/src/DiskLoader.cpp
@@ -109,6 +109,9 @@ const u8 _consts[] =
 
 void start_sketch()
 {
+	if (pgm_read_word(0) == -1)		// no sketch has been uploaded yet - stay in bootloader
+		return;
+	
 	L_LED_OFF();
 	RX_LED_OFF();
 	TX_LED_OFF();



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]