Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix the problem of unusable programming port for some Due boards #123

Open
wants to merge 8 commits into
base: master
Choose a base branch
from
4 changes: 4 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
This is a fork from the original repository for Arduino Due. This work solves the problem that some boards cannot be uploaded by the programming port.

The main changes are located in firmwares/atmega16u2.

# Arduino Core for SAM3X CPU

This repository contains the source code and configuration files of the Arduino Core for Atmel's SAM3X processor (used on the [Arduino Due](https://www.arduino.cc/en/Main/ArduinoBoardDue) board).
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,272 @@
:10000000A7C00000C0C00000BEC00000BCC000000F
:10001000BAC00000B8C00000B6C00000B4C0000004
:10002000B2C00000B0C00000AEC00000B9C4000003
:100030007DC40000A8C00000A6C00000A4C000004D
:10004000A2C00000A0C000009EC000009CC0000034
:100050009AC0000098C0000096C0000021C10000B6
:1000600092C0000090C000008EC000008CC0000054
:100070008AC0000088C0000086C0000084C0000064
:1000800082C0000080C000007EC000007CC0000074
:100090007AC0000078C000001201100102000008C0
:1000A00041233D0001000102DC0109023E00020182
:1000B00000C0320904000001020201000524000111
:1000C0001004240206052406000107058203080027
:1000D000FF09040100020A000000070504024000B5
:1000E00001070583024000010403090432034100B3
:1000F00072006400750069006E006F002000280027
:100100007700770077002E006100720064007500B0
:1001100069006E006F002E0063006300290000007C
:100120002E03410072006400750069006E006F00CC
:1001300020004400750065002000500072006F0030
:1001400067002E00200050006F0072007400000055
:1001500011241FBECFEFD2E0DEBFCDBF11E0A0E083
:10016000B1E0E4ECF0E102C005900D92A831B107D6
:10017000D9F712E0A8E1B1E001C01D92A833B107A0
:10018000E1F722D19DC73CCF9C01DC01AE57BF4FA8
:10019000ED91FC91119741911196FC93EE9380584B
:1001A0009F4FE817F90711F42D933C939FB7F894EC
:1001B000F901EC57FF4F8081815080839FBF842FCE
:1001C0000895882311F03F9A01C03F9847980895F9
:1001D000882311F046980895469A0895DF92EF9289
:1001E000FF920F931F93FC018489813019F08230B4
:1001F00019F404C010E303C010E001C010E28389C9
:10020000823009F418608589873031F0883031F008
:10021000863029F4126003C0146001C01660109289
:10022000C9001092C8001092CA000785F088E188C2
:10023000D288202F3F2D4E2D5D2D10921E01203B88
:1002400084E0380780E0480780E0580719F481E02F
:1002500080931E01CA01B90122E030E040E050E085
:1002600014D720583B47414E5F4FCA01B901202F98
:100270003F2D4E2D5D2DE7D6215030403093CD00DF
:100280002093CC001093CA0082E08093C80088E9D4
:100290008093C9001F910F91FF90EF90DF90089518
:1002A0001F920F920FB60F9211242F938F939F934B
:1002B000EF93FF939091CE008EB38430F1F4E091F0
:1002C000A201F091A3019083E091A201F091A3011A
:1002D000CF0101969093A3018093A201825A91408D
:1002E00021F482E291E0928381839FB7F894809118
:1002F000A6018F5F8093A6019FBFFF91EF919F9111
:100300008F912F910F900FBE0F901F901895FC01A9
:1003100040911A0140931B0180911C0180931D01A3
:100320008585282F30E02170307020931A01858553
:1003300090E096958795817080931C0180911E01B5
:10034000882339F084EB90E0909319018093180191
:100350000895442341F4222331F082E390E0909306
:10036000190180931801089580E091E002C680E0B1
:1003700091E0B5C51F9384B7877F84BF18E10FB69E
:10038000F89410936000109260000FBE80E019DFB7
:10039000469A3E9A87E690E09093CD008093CC00F9
:1003A00086E08093CA001092C8001093C900539A47
:1003B0005A9A8AB180638AB98BB180638BB9ABD208
:1003C00084E085BD1F9108950F931F93CF93DF9312
:1003D000D1DF2FB7F89487EA91E0909328028093B9
:1003E000270290932A02809329022FBF2FB7F894F7
:1003F00082E291E09093A3018093A2019093A501E2
:100400008093A4012FBF7894C7EAD1E003E08FB7AF
:10041000F89490912B028FBF903809F180E091E021
:10042000D4D497FD1CC0E0912702F091280280836C
:10043000E0912702F0912802CF01019690932802C3
:10044000809327028752924011F4D283C1839FB7D1
:10045000F89480912B028F5F80932B029FBF8FB700
:10046000F8941091A6018FBFA89903C0113608F423
:1004700057C0A89A8091A601882361F05D980093E7
:100480001F0108C082E291E07FDE682F80E091E0EA
:1004900002D511501123B1F780911F01882351F02B
:1004A00080911F01815080931F0180911F0188233B
:1004B00009F45D9A80912001882351F080912001F8
:1004C00081508093200180912001882309F45C9A57
:1004D000809118019091190118161906ECF4CC9727
:1004E0008937910510F481E001C080E071DE8091D0
:1004F0001801909119010197C29710F481E001C091
:1005000080E05FDE8091180190911901019790932E
:1005100019018093180104C080E05ADE80E051DEAA
:100520008FB7F89490912B028FBF992369F087EAD7
:1005300091E02ADE982F8091C80085FFFCCF909330
:10054000CE005C980093200180E091E095D42AD4FD
:100550005ECFDA01923049F0933061F09130F9F4D6
:10056000E8E9F0E022E130E01EC0EAEAF0E02EE344
:1005700030E019C0813049F0813018F0823079F4D0
:1005800008C0E8EEF0E0849107C0ECEEF0E0849162
:1005900003C0E0E2F1E08491282F30E004C0E0E005
:1005A000F0E020E030E0ED93FC93C901089528E0ED
:1005B00030E040E003C04F5F220F331F2817390798
:1005C000D0F3842F8295807F08958093E9008091F5
:1005D000EB0081608093EB001092ED006093EC00E3
:1005E0004093ED008091EE00881F8827881F0895B2
:1005F0001092F40090E09093E9001092F0001092B5
:10060000E8001092ED008091EB008E7F8093EB006C
:100610009F5F953081F708958091300288238CF494
:1006200003C08EB38823B1F08091E80082FFF9CF38
:100630008091E8008B778093E80008958EB388233B
:1006400049F08091E80080FFF9CF8091E8008E7733
:100650008093E800089594E68091EC0080FF05C047
:100660008091E80080FF05C023C08091E80082FDF2
:100670001FC08EB3882311F482E008958EB38530B5
:1006800011F483E008958091EB0085FF02C081E0C2
:1006900008958091E10082FFDFCF8091E1008B7FA0
:1006A0008093E100992311F484E008959150D4CF10
:1006B00080E008959C014091360250913702461720
:1006C000570718F4F90120E038C06115710511F0E1
:1006D000AB01F8CF8091E8008E778093E80040E08E
:1006E00050E0F0CF8091E80083FF02C081E00895E0
:1006F0008091E80082FD2DC08EB3882381F18EB3F6
:10070000853079F18091E80080FF17C09091F20068
:1007100006C081918093F100415050409F5F411588
:10072000510511F09830A8F320E0983009F421E049
:100730008091E8008E778093E8004115510591F68D
:10074000222381F606C08EB3882349F08EB385300C
:1007500041F08091E80082FFF6CF80E0089582E0CA
:10076000089583E008959C0140913602509137022C
:100770004617570710F490E03BC06115710511F062
:10078000AB01F9CF8091E8008E778093E80040E0DC
:1007900050E0F1CF8091E80083FF02C081E008952E
:1007A0008091E80082FD30C08EB3882399F18EB32A
:1007B000853091F18091E80080FF1AC08091F200AD
:1007C00009C0F9012F5F3F4FE491E093F1004150E0
:1007D00050408F5F4115510511F0883090F390E043
:1007E000883009F491E08091E8008E778093E800EA
:1007F0004115510579F6992369F606C08EB3882311
:1008000049F08EB3853041F08091E80082FFF6CF49
:1008100080E0089582E0089583E008959C016115C9
:10082000710529F48091E8008B778093E800F90145
:1008300020C08091E80083FF02C081E008958EB35C
:10084000882339F18EB3853031F18091E80082FF41
:10085000F0CF06C08091F10081936150704021F08B
:100860008091F2008823B1F78091E8008B77809324
:10087000E80061157105E9F606C08EB3882349F0DA
:100880008EB3853041F08091E80080FFF6CF80E0A4
:10089000089582E0089583E0089542D044D01EBABE
:1008A00010922E0210922D0210922C0284E089BD2B
:1008B00089B5826089BD09B400FEFDCF8091D80062
:1008C000982F9F779093D80080688093D80080916C
:1008D00063008E7F809363008091D8008F7D80932A
:1008E000D8008091E0008E7F8093E0008091E1004D
:1008F0008E7F8093E1008091E20081608093E2002E
:100900008091E100877F8093E1008091E200886020
:100910008093E2000895C1DF81E080932F02089563
:100920001092E20008951092E10008951F920F9234
:100930000FB60F9211241F932F933F934F935F9302
:100940006F937F938F939F93AF93BF93EF93FF9397
:10095000E9EEF0E0108117701082E0EFF0E08081A6
:10096000877F80837894C3D0F894A9EEB0E01C927E
:10097000E0EFF0E08081886080831C93FF91EF912D
:10098000BF91AF919F918F917F916F915F914F91A7
:100990003F912F911F910F900FBE0F901F901895B0
:1009A0001F920F920FB60F9211242F933F934F93E4
:1009B0005F936F937F938F939F93AF93BF93EF93C7
:1009C000FF938091E10080FF1BC08091E20080FFD7
:1009D00017C08091E1008E7F8093E1008091E2005A
:1009E0008E7F8093E2008091E20080618093E2003C
:1009F0008091D80080628093D80019BC1EBAD1D1F2
:100A00008091E10084FF29C08091E20084FF25C02D
:100A100084E089BD89B5826089BD09B400FEFDCF3F
:100A20008091D8008F7D8093D8008091E1008F7EE7
:100A30008093E1008091E2008F7E8093E2008091BC
:100A4000E20081608093E20080912E02882311F4FD
:100A500081E001C084E08EBBA4D18091E10083FFDE
:100A600027C08091E20083FF23C08091E100877F4F
:100A70008093E10082E08EBB10922E028091E10013
:100A80008E7F8093E1008091E2008E7F8093E20070
:100A90008091E20080618093E200AADD80E060E066
:100AA00042E093DD8091F00088608093F00079D17E
:100AB0008091E10082FF0AC08091E20082FF06C0BF
:100AC0008091E1008B7F8093E1006BD1FF91EF91EA
:100AD000BF91AF919F918F917F916F915F914F9156
:100AE0003F912F910F900FBE0F901F9018951F935D
:100AF000DF93CF93CDB7DEB7AC970FB6F894DEBFD8
:100B00000FBECDBFE0E3F2E08091F100819322E0DF
:100B1000E833F207C9F78091300230913102353065
:100B200009F487C0363040F43130C9F1313070F00B
:100B3000333009F01DC133C0383009F4EFC039300B
:100B400009F4FEC0363009F013C192C0803821F09C
:100B5000823809F00DC108C090912C0280912D02BD
:100B6000882399F0926011C080913402877080933D
:100B7000E9008091EB0090E025E0969587952A9515
:100B8000E1F7982F91701092E9008091E800877F3B
:100B90008093E8009093F1001092F100CAC088237E
:100BA00019F0823009F0E4C090E08F7190700097E6
:100BB00021F0029709F0DDC00CC080913202813033
:100BC00009F0D7C010922D02333069F580932D02C1
:100BD0002AC080913202882331F520913402277097
:100BE00009F4C7C02093E9008091EB0080FFC1C0E9
:100BF000333021F48091EB00806213C08091EB00D0
:100C000080618093EB0081E090E002C0880F991F23
:100C10002A95E2F78093EA001092EA008091EB00B7
:100C200088608093EB001092E9008091E800877F54
:100C300083C0882309F09CC0109132028091E800A3
:100C4000877F8093E800E8DC04C08EB3882309F432
:100C500090C08091E80080FFF8CF812F8F7711F44A
:100C600092E001C093E09EBB80688093E30081C066
:100C70008058823008F07CC080913202909133021B
:100C800023E08C3D920799F55FB7F894DE01159645
:100C90004EE020E030E061E2E42FF0E060935700A6
:100CA000849120FF03C082958F704F5F982F9F70B3
:100CB000892F805D8A3308F0895F8C9311961C928E
:100CC00011972F5F3F4F12962431310529F75FBFEF
:100CD0008AE28B8383E08C838091E800877F809316
:100CE000E800CE0103966AE270E0E4DC11C0609196
:100CF0003402AE014F5F5F4F2CDCBC010097C9F19D
:100D00008091E800877F8093E80089819A812BDDBC
:100D10008091E8008B778093E8002BC0803841F504
:100D20008091E800877F8093E80080912E02809375
:100D3000F1008091E8008E778093E8006DDC19C0A7
:100D40008823B1F490913202923098F48091E800B7
:100D5000877F8093E80090932E025EDC80912E02C4
:100D6000882311F483E001C084E08EBB00DB01C066
:100D7000FBDA8091E80083FF0AC08091EB0080627B
:100D80008093EB008091E800877F8093E800AC9629
:100D90000FB6F894DEBF0FBECDBFCF91DF911F918C
:100DA000089508951F938EB3882361F01091E90090
:100DB0001092E9008091E80083FF01C098DE17706F
:100DC0001093E9001F9108950895FC018EB38430BB
:100DD00021F587859089A189B2890097A105B10580
:100DE000E1F085818093E9008091E80082FF15C0E1
:100DF0008091F200882319F42FEF3FEF04C0809117
:100E0000F100282F30E08091F200882341F4809196
:100E1000E8008B778093E80002C02FEF3FEFC90115
:100E20000895FC018EB3843011F587859089A189DE
:100E3000B2890097A105B105D1F081818093E900C5
:100E40008091F2008823A9F09091E8008091E80059
:100E50008E778093E80095FD0CC0FDDB982F8823EA
:100E600049F48091E8008E778093E80003C092E017
:100E700001C090E0892F0895FC018EB3843051F4B5
:100E800087859089A189B2890097A105B10511F0E4
:100E9000CF01C7CF08951F93FC01162F8EB3843066
:100EA000D9F487859089A189B2890097A105B105F8
:100EB00099F081818093E9008091E80085FD08C068
:100EC0008091E8008E778093E800C5DB882329F4C1
:100ED0001093F10080E001C082E01F9108950F930C
:100EE0001F93CF93DF93EC010D96FC0189E0DF01A6
:100EF0001D928A95E9F72A813B8109818C8188239B
:100F000011F410E001C014E0C90151DB182B12608C
:100F1000802F61E8412F59DB882329F12E813F8101
:100F20000D818885882311F410E001C014E0C90107
:100F30003EDB182B1260802F60E8412F46DB8823B0
:100F400091F02A853B8509858C85882311F410E072
:100F500001C014E0C9012BDB182B1260802F61EC5B
:100F6000412F33DB01C080E0DF91CF911F910F91C2
:100F70000895CF93DF93EC018091E80083FF60C078
:100F8000888190E02091340230913502281739078A
:100F900009F056C080913102813261F0823220F432
:100FA000803209F04DC019C0823269F1833209F0F4
:100FB00047C038C080913002813A09F041C0809129
:100FC000E800877F8093E800CE010F9667E070E02D
:100FD00071DB8091E8008B7713C080913002813201
:100FE00079F58091E800877F8093E800CE010F9625
:100FF00067E070E013DCCE01F1D88091E8008E77D5
:101000008093E8001DC0809130028132C9F4809144
:10101000E800877F8093E800809132028D87CE01BF
:1010200076D90DC080913002813251F48091E80070
:10103000877F8093E800CE0160913202C5DEECDA52
:10104000DF91CF910895A1E21A2EAA1BBB1BFD01CF
:101050000DC0AA1FBB1FEE1FFF1FA217B307E40797
:10106000F50720F0A21BB30BE40BF50B661F771FEF
:10107000881F991F1A9469F76095709580959095CF
:101080009B01AC01BD01CF01089597FB092E0526F8
:101090000ED057FD04D0D7DF0AD0001C38F450958D
:1010A0004095309521953F4F4F4F5F4F0895F6F78C
:1010B00090958095709561957F4F8F4F9F4F0895C4
:0410C000F894FFCFD2
:1010C400000340000004400000020800000000008B
:0810D400000000000000140000
:00000001FF
6 changes: 3 additions & 3 deletions firmwares/atmega16u2/arduino-usbserial/Arduino-usbserial.c
Original file line number Diff line number Diff line change
Expand Up @@ -161,8 +161,8 @@ int main(void)
{
// SAM3X RESET/ERASE Sequence
// --------------------------
// Between 60 and 120: do erase
if (ResetTimer >= 60 && ResetTimer <= 120) {
// Between 60 and 120: do erase, 60 count = 250ms
if (ResetTimer >= 60 && ResetTimer <= 180) {
setErasePin(true);
} else {
setErasePin(false);
Expand Down Expand Up @@ -300,7 +300,7 @@ void EVENT_CDC_Device_ControLineStateChanged(USB_ClassInfo_CDC_Device_t* const C

if (Selected1200BPS) {
/* Start Erase / Reset procedure when receiving the magic "1200" baudrate */
ResetTimer = 120;
ResetTimer = 180;
} else if (!PreviousDTRState && CurrentDTRState) {
/* Reset on rising edge of DTR */
ResetTimer = 50;
Expand Down
20 changes: 7 additions & 13 deletions firmwares/atmega16u2/arduino-usbserial/readme.txt
Original file line number Diff line number Diff line change
@@ -1,14 +1,8 @@
To setup the project and upload the Arduino usbserial application firmware to an ATMEGA32U2 using the Arduino USB DFU bootloader:
1. unpack the source into LUFA's Projects directory
2. set ARDUINO_MODEL_PID in the makefile as appropriate
3. do "make clean; make"
4. put the 32U2 into USB DFU mode:
4.a. assert and hold the 32U2's RESET line
4.b. assert and hold the 32U2's HWB line
4.c. release the 32U2's RESET line
4.d. release the 32U2's HWB line
5. confirm that the board enumerates as "ATmega32u2"
6. do "make dfu" (OS X or Linux - dfu-programmer must be installed first) or "make flip" (Windows - Flip must be installed first)

Check that the board enumerates as "Arduino Mega 2560".
To setup the project and upload the Arduino usbserial application firmware to an ATMEGA16U2:
1. unpack the source into LUFA's Projects directory (LUFA version 100807, http://www.fourwalledcubicle.com/LUFA.php)
2. set ARDUINO_MODEL_PID in the makefile as appropriate, default is Arduino Due
3. do "make clean; make" (the makefile is for winavr)
4. do the connections as in https://www.arduino.cc/en/Hacking/Upgrading16U2Due
5. upload Arduino-usbserial.hex by a proper method with a proper programmer (Arduino as ISP, USBASP, etc.)
6. disconnect the programmer
Test by uploading a new Arduino sketch from the Arduino IDE.