From cb92a1d402ee3c3a34d0040847bc8b73fba62c85 Mon Sep 17 00:00:00 2001 From: Cristian Maglie Date: Thu, 6 Oct 2011 01:56:31 +0200 Subject: [PATCH] Added upload with bossac --- app/src/processing/app/Sketch.java | 18 ++- .../processing/app/debug/BossaCUploader.java | 107 ++++++++++++++++++ app/src/processing/app/debug/Compiler.java | 15 +-- build/build.xml | 1 + build/linux/dist/tools/bossac | Bin 0 -> 23168 bytes hardware/sam/boards.txt | 6 +- 6 files changed, 131 insertions(+), 16 deletions(-) create mode 100644 app/src/processing/app/debug/BossaCUploader.java create mode 100755 build/linux/dist/tools/bossac diff --git a/app/src/processing/app/Sketch.java b/app/src/processing/app/Sketch.java index 9147043d7..498459fc0 100644 --- a/app/src/processing/app/Sketch.java +++ b/app/src/processing/app/Sketch.java @@ -24,6 +24,7 @@ package processing.app; import processing.app.debug.AvrdudeUploader; +import processing.app.debug.BossaCUploader; import processing.app.debug.Compiler; import processing.app.debug.RunnerException; import processing.app.debug.Sizer; @@ -1625,14 +1626,19 @@ public class Sketch { } - protected String upload(String buildPath, String suggestedClassName, boolean usingProgrammer) - throws RunnerException, SerialException { + protected String upload(String buildPath, String suggestedClassName, + boolean usingProgrammer) throws RunnerException, + SerialException { + + // upload the program + Map boardPreferences = Base.getBoardPreferences(); + String uploaderName = boardPreferences.get("uploader"); Uploader uploader; - - // download the program - // - uploader = new AvrdudeUploader(); + if (uploaderName != null && uploaderName.equals("bossac")) + uploader = new BossaCUploader(); + else + uploader = new AvrdudeUploader(); boolean success = uploader.uploadUsingPreferences(buildPath, suggestedClassName, usingProgrammer); diff --git a/app/src/processing/app/debug/BossaCUploader.java b/app/src/processing/app/debug/BossaCUploader.java new file mode 100644 index 000000000..ebe9995de --- /dev/null +++ b/app/src/processing/app/debug/BossaCUploader.java @@ -0,0 +1,107 @@ +/* -*- mode: jde; c-basic-offset: 2; indent-tabs-mode: nil -*- */ + +/* + AvrdudeUploader - uploader implementation using avrdude + Part of the Arduino project - http://www.arduino.cc/ + + Copyright (c) 2011 Cristian Maglie + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software Foundation, + Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + $Id$ + */ + +package processing.app.debug; + +import java.io.File; +import java.util.ArrayList; +import java.util.Collection; +import java.util.List; + +import processing.app.Base; +import processing.app.Preferences; +import processing.app.SerialException; + +public class BossaCUploader extends Uploader { + + public boolean uploadUsingPreferences(String buildPath, String className, + boolean usingProgrammer) + throws RunnerException, SerialException { + List commandDownloader = new ArrayList(); + String port = Preferences.get("serial.port"); + if (port.startsWith("/dev/")) + port = port.substring(5); + commandDownloader.add("--port=" + (Base.isWindows() ? "\\\\.\\" : "") + + port); + commandDownloader.add("-e"); + commandDownloader.add("-w"); + commandDownloader.add("-v"); + commandDownloader.add("-b"); + commandDownloader.add(buildPath + File.separator + className + ".bin"); + + return bossac(commandDownloader); + } + + public boolean burnBootloader() { + return true; + } + + public boolean bossac(Collection params) throws RunnerException { + List commandDownloader = new ArrayList(); + commandDownloader.add("bossac"); + + if (verbose || Preferences.getBoolean("upload.verbose")) { + commandDownloader.add("-i"); + commandDownloader.add("-d"); + } + commandDownloader.addAll(params); + + return executeUploadCommand(commandDownloader); + } + + protected boolean executeUploadCommand(List cmdParams) + throws RunnerException { + + try { + String avrBasePath = Base.getHardwarePath() + "/tools/"; + if (!Base.isLinux()) + avrBasePath += "avr/bin/"; + + String[] cmdArray = cmdParams.toArray(new String[0]); + cmdArray[0] = avrBasePath + cmdArray[0]; + + if (verbose || Preferences.getBoolean("upload.verbose")) { + for (String cmd : cmdArray) + System.out.print(cmd + " "); + System.out.println(); + } + + Process bossac = Runtime.getRuntime().exec(cmdArray); + new MessageSiphon(bossac.getInputStream(), this); + new MessageSiphon(bossac.getErrorStream(), this); + + // wait for the process to finish. if interrupted + // before waitFor returns, continue waiting + int result = bossac.waitFor(); + if (result != 0) + return false; + return true; + } catch (Exception e) { + e.printStackTrace(); + return false; + } + } + +} diff --git a/app/src/processing/app/debug/Compiler.java b/app/src/processing/app/debug/Compiler.java index 10c474087..f44afd020 100644 --- a/app/src/processing/app/debug/Compiler.java +++ b/app/src/processing/app/debug/Compiler.java @@ -32,6 +32,7 @@ import java.util.List; import java.util.Map; import processing.app.Base; +import processing.app.Preferences; import processing.app.Sketch; import processing.app.SketchCode; import processing.core.PApplet; @@ -63,7 +64,7 @@ public class Compiler implements MessageConsumer { List objectFiles; public Compiler(Map preferences) { - // Merge all the preferences file in the correct order of precedence + // Merge all the preferences file in the correct order of precedence // into a new map. configPreferences = preferences; avrBasePath = configPreferences.get("compiler.path"); @@ -309,12 +310,12 @@ public class Compiler implements MessageConsumer { int result = 0; - // if (verbose || Preferences.getBoolean("build.verbose")) { - System.out.print("EXEC: "); - for (String c : command) - System.out.print(c + " "); - System.out.println(); - // } + if (verbose || Preferences.getBoolean("build.verbose")) { + System.out.print("EXEC: "); + for (String c : command) + System.out.print(c + " "); + System.out.println(); + } firstErrorFound = false; // haven't found any errors yet secondErrorFound = false; diff --git a/build/build.xml b/build/build.xml index 0775a3975..5c328ab28 100644 --- a/build/build.xml +++ b/build/build.xml @@ -331,6 +331,7 @@ + diff --git a/build/linux/dist/tools/bossac b/build/linux/dist/tools/bossac new file mode 100755 index 0000000000000000000000000000000000000000..1bef9218e4f18ede86757a08c45b97fcbe993c77 GIT binary patch literal 23168 zcmXuK3p|tU{|A2Wc<;o9VHn$(^Du{;%bd@rM2^{*Q|1sGI>>2Gp_Wcc2bD+lBn^d7 zIVI9T>8TZ!N>7AR`O1@O|M~s@|NHg2_Bp+;&*yV*_qOZ0KG#*??&kr4Kw!ZCcR>Ld z0Fm)|aeaW*|F4u$D}V|>0fYb3tlR(ZBJ=@(tVKrx|JM-fN&@hI{exsePyzzA-u@3O zdqMtx_SS|U@u5NCv>8wix32Q~^#3+1nd26j43)J4C+>d*>$%A!7$BE<1TM{Je}%FF z>prMrsQ^lriWZ;=AWd^V$Khdxa1;}E2cIkoiqXyJ2p4 zH;tUwp5H+q_+0)qkZlSg$RRDt`rBhzmiHnGF1X? zjMgPqlvRT6o=IrSL3vfni zG^^nqLDr8O{oN)oRjesY>Iu8rXYH?z(g6T8P$KKd&@$zte-d@`b`?VQL_@fNt#JGH}R3NlklZo@Z1(J&;>%T$vPMWvI&nX&ki z3)Xa3>&}d|>R4B6uIqWHt@x*0R|~FFp_iFVwl<=);&aT_O}?1~U!(3lZ+cVW%)2UT#!`a|ryKj(Z`B^`iWBhBs2iE68-hP|9T7DE@Gu zOB+o?(QL}B53eEPFd0FC1$df_eeZOLQY~X{1-?A+JDMs+W&3J){US&K5vtX(~ZqHI77lF#4Mbv^~hy(5k9@ToD@;rb1 zmUCbNK0^Ut>Qo!!z;n~U6VxfqT)|-X=aLLIo)~DxKeq6okg}=o5F90SGI=2v4v(Fs zFpr$fi#j*Gmd%PcHeS7Q^S7^BY;00mMtZCwCyS4jf3y1Lk55kQ=7gjad_tBhkCUC9 zkUhXp&PrH))hXq0W8*pL@d-Tb$n@OphydS^Y^y|0L0hK_*F9c7J7rgbdk(p7&DtTz zR}1fI?!H+?^LjzE!-jZ%7GsNd2;VLtFM9E1Pe)2hRc(A8CpIf5Blp4Yl|Ncx0p?7i za$HJ|xdk?fogqz?KNZX0nVArqn3&;iZOV>XF8lUE=I%wGoX z(Mj==D05w`yk~rJ=q7b`tS$ zY__U;`aU2d##KJ+Wp-5RJMz8^3*9T~i#H$Ns2A|F;p(?{Kf3WuM`6fQpwon1+3(pe zN#vyPRJ~ultXbh_$i2(Vk~fJ@l$7o0r15bH30#+mylmg}C??RFrpAj$C?0sV7(Hc> zkh+PRA<&G^-1+ZojZ~!rKx<}mxuERX>m(h49EA`Yb@qA(EnRWC-oPyP){n?k{x;-% z<&(r}#N2R2VoK7XjF(i+GMk39yJo-o)z#9Op02L3mZr}<{k(lwYCB!f7N+K=mRJgd z-BaKi9`5Yo9ZNJd$I&J>et0SGstJX_#B5j&9024HAi|mrTBD&#NNgT$0Sh8F1jdT{ zwcc7RMDM0LKkU#yx9LP3ktY?tkPV5Sz=t9E%GbXz!Ymd)h&M2g$$eBNd zDOpQGoU$n?=nt>)1PVc2Y=Zmb1iAgAB%iY5@m1_!%VrZ-QxQOUVBYErIG%4$~0CZHD7GyBMekNFLb*p9D5AdrkNOT18 z(B98##^AUcn5lM4{ ztL$nfNXCQ9d3(x|{sXo4P$(c3VLR3?q*btFs9V*bj;Q%CSlI43rdy|Xa_sp(QC$t7 zK_h5*@yuIGN23hTKLa%Wkot~sP1psRJp871y4SQEG#l!KWWX+tfTa82f8DlY7UM%t zL94M&NRq^B3bdYf9BX&9ow1v>m-%g9a9DC&KKWs?aA6hP^lQ~VS_u~iis7KM+NQxI zDHtdPU8HZ1Jz4@?rJ!3#$pUKjM`uRV9(;dP(YudJOwC1d71X7M=GY2VYn1Okz?PDxa9*_C zfW`1yr_3O$@O5g-c1&KUtW3AOb?Q~pi=yenHw`G*}EnA<1|AuU))ytwq#~0Xv^kC^|j0Sxs~wXuw(}m zvS@W#1dw~@(V>+e+Tev7QPZ!6K9?e#&f>rxf=SUlZou`|8$|yav}7J)C&|{TsV`Bx zb?5b)^V(8ksg|i`*6c9iX8)U?EXY6bsF=YTKBT5sUp+J9vsvsm(pjQ0T=7N0m(xiA z3Vjz&SCWp84vKW*o?EY0xufnrq$r_=SzXsH!+em4Y&ADJbn^PakxJ`3#?%d^t^LvZ z6w{=V(zYCNr*J#A%3Xz!Y`tMa^+JTAvbLrieYEqp&^N4#P%@yXSjonUM!YJmk+yt34kr>c#4mlj3z-d|1b(o40Me!mF~-Cvi`otYr9Ws-ssWZDYtQ7E;!G})#fP9nL5mz;G7KhzVDoqi=TJ( zfD81D4Fv<-H?M3GX1v05eQ8MuCN(7%?2^lZ(J;%jI+9?J>27#Jc&*F$TFDVeCXrP$bT&l32_Zz0#~UCh#iaZbZ?NVGj%qK>)!Pb{i)wKlgZ8W&Wry5U2xa@ntUG6TI)yVwan*f7 z+$owPsMc&gR}%44o1nAjvjgt!4hmryJuqu2sjfzSM2}CYxn`j! zm#J#Bkzy<@#A@@C>pgo3iFe)q#9QGz!HCM9#l9X?Wq<#FtziJyd}L)su1{CGqf-b_ zH9gG76Zxx)E{lIkG%w~8l+W~)q!B(7cJ=fNZrX*AH_lYud5tL9;1Z!IEJvu;qdk=T zVVgEZn5rBQFKB5cIzV6ay{6(1_k}PH&&ECSuMr9MCH{4t8n59ARTRn>4HTX64Jlf< z_80cUb?0=DD#k7W_~$-N;x1Kz_HWl}#b0%$m?KHotxO(JJRxn*hTV9#Ia^{4TrdKBA( zA_atiD-QJrc*y2AIksJ=7YRswfM2`iAP@EU)>E7lvwLw^k>rRgJV}5p2c9osN*Wlo z^XX?39!+5457UnfoF#0VH`f!CQ`o<3or{K|qGD3)yyUTu4O~$JrJ4eTss}APxYB%e zos!z&JrG_G$$zaP9ra@zlTthm^k2TbTVp`6?Xq4$fsy&6RSykgLouPo2lg-Io(}Om zC&zz=(Ax;Bp1pG~S%*ol-Hf`zGNl2iwlw6yleGcLRPD2zlLMqD+Gs$xk2vhJ4}R2| zOZUB|eOU~}#=Es9|bW$>l-TfaO8+ZmZRg|lfR)d#|UjVJ} zcK}l8tf`@bn!;J2ees{L78XaU7cq-8PhA*BJ^hS0(s$VXUKngl$B*VF+<)y}@aAZj zDjdcor)V7KP4#hU6w4u&{KtY(8YDPS0Qy-am+}+hE(T8q!y8hUVe%dC8dv|m)i-I7 zt)$f@0H10&l;cnGpUZh=CK?apW?!Jy-edF@6uorznQIGdIrNYudgZ8dxHsdgHhYma zZ+gd3_FyTV9o(o;r&7(jJ9`v$XaMePpmUPvb;gu@FK|iv*_z0ZZiIglkm#&$QYr1g zM%wbciYh42qRb-Ff5x~Zb6Z`ZX@AFP8YOGAv7N@)l+iA>hOXs^&D)!yIO}=)lWs^j z<}zE8HcrKOT@;zp#}8ILyo4`7E`V`_7~`sF6RXH(6%=H9FF~dLP6akH1V1OtWJcaM zF8kD4qPu2%uFAdB#r@Z98|VsJ_-k}9I~d1TEh}x?lz*kB3G!ao=G7ew9c%T{znh8*Pc^1Ji5X=Puv+1`5fXWkSrMQ) zNlW?6V9-$=6FD!DR1%VGfFxa5ymrbKN%TSz!hiUvr6F-6>fWoRBc-qk?X9896+wP8 zYOidrQz3jK1oRo8?Y*BoV|S2tjwV9)EK&QXF|DL*Q+x3hxf?gbTXGEFh_J^Uo+?55 zra`2hIdxu@>mo073C?z-G8qw1jq1r>e}^!)$Jyd|;>5l} z&9#3kmuTas=k;ID)(}?I4cLUJZEX=mCZvA=l?f}t(yIu)`^HsBF#FIAVAhMKt5&GF ztOUvI5BAi+<4>FV4G-K~QYm_rh`&03(g>aI#?hd^GkyrBPkcvZ48%KvUC`QgX<7b& zww0}LJ~$W}13cqw_E(RXajZ1@ zTZrwSE>_Q!0Si-EOH7Arh!?p=T_xXCo+0(;(pWWp2`A}g3Ee+8l$fuTIiEDZ{WRP! z>=%!V3~uh=j1{VX*6@H{YSTUQ!)sz8LW#)t!pYgnd-+X6`r`^K{lG`_ymGq=w z!(xMaIh#uWzWMV>_k|(j1y!$1cxjZKPgm`wA~YO%lIf{au>iobgZH}?O*(`wXao!B z8u*QK8@UR}cZ!OavmK3dhVVys*x08MS-1L-IjNalGlq(A?w;k0?fW%pkp6dm*rUSF zHM<9j?gd7sx=?uuOzzl5YAY*_j~0oHu_MWvc_I+WDEHFghLAE@v@1;AQ95iigp?FF zLWco+RGLNZb?7j67V|?zN!QQUJ_fK$^(2;77B8@6!xkUoCkrIVwtscc*%#2mC zZWPn|$S!7O_fQa2=MqIf7&5jkLu7j?i?ulz-%D&v4~VB{og)G885h0#4ClQwV%-g+ zhAy>xT}`VSg8ZmQkNoYHh8ta=tQ}!D2%IQ>HKO$;SL1((Va8C=x8j*2uw-4w^y$8L z&TjTc5b<&=ebMg4Ch(MBxP&pZ=vS~iCO}18s*CZ!^}x#-gMyzq`(8rNV1}6|(X8z# z(J7`ngPqZkeoOZV#({I?p|=go=-h*7cO&J2$jF~zXqs?~Hh77p6~rQZ;)%BZx`uj* z?)#hIa!mw=`xpJSxfo=1i4^g2*Caj`a`$>XMLyIR?5S+idwSd;w|&skraq@ z54-Gp;`KYfFSE6WMNaQRgLTFFZZ<#{KZ4oQ7IghId zZvIMQSaCEr?B~ z6fH0zhl#q=Qfa|PHbTwd&xZx23lY4@-+s7^=}vs_u;orsADF37Q}RJgJVN8Z8touL6_hMvRQ?VCvj;Z%@JRc-Lxw3`G4i2#HEpqRx`;$xUfe(P>_!LtT4x5}91 zT!p&7(37{&wp~(1r7pCZnn>v2$q?hH4{v zmoZCk#>djqOOMMnV=z1=qSp7QF6gK*T9;wDj(2cyR2>yoTUoJ;#j4&X3xO_?@o|xr zgRAHu6Jfa`d4MIu7rFV$;G&Qa zwwYp`$j?t6&{ncWgopZdg;15Ubfcnll`JgMwrmj__hCY}bRCz)h>DM|lf~E-9qk-Z zDY6S4IpQaY?ut(x87cHjE$2#zTtBW6x64naPtDHulc^8!cz!aq5w9z|P^R9!n=8|v z;q#3S%hdd?-SYL-@7zlkOWH2a$kN-hXNwsDuE#(TF!HPcrS0+E>}!btHT&S!90;r1 z0T>l+6zy>@>8#RUBWG1za~EC{2stzuyOqTo+$=F_-Dzsad!bNwy5-QJnc9P{H><1d z)VKf@1+Tq4gMw6xe9LAI)zs`*D&l(+}Jvw=^x|9hN z#^7i-78*{roL94(sl9wz(nu;|nl|>}MA6njW6R}ga@J^j``czZj()5e6|tQ}!yT%pvkyt&rQQZ&;s^wbG2<;edaPa#EAZxU@mzs4%u4n|( z(wj9ZiXI#rqaCXz{~8)9_@fog_G|%}0Bg+*2$3LAF@%<(V=^CO6B9GFA8DZe{rlq3 z0i&1}wOZen`xBG#gAJyW<1J4mtYO`!xSuV)sC)V&Gx^rNma(K@GMs=BxT={)y zQ*htD2n83PCSJr@J6sbN#Z@9|aDB>HWF3}Fq8p=R0>iRQCRjN*%FI5lZZd0=uirX0 zWJ}aKHadPC%S~O!^0L>l{M~yTfE6$I5^Hy%r3fa%R#ju|fE$Mn-;fFQC(nyyQsZSn zCN;OqtajIWWL8n{;LtjD?EX4-;^{hea_W7pOq!YB?&fkmLkS5A6S%*wB%I%+xyO0* zlqiP9I~=4*h!K>3>f47D-PC_ZpbIUugA__|E&`GsnMx>rK&6M0B5FzJNkm%$?-5jS zNiVF_js>qRqy}4k_k!;22qe@5LCOksJahEi02!C^lvAbXVWg%f!<>kqvGZm5N2PL=+ zmr$Ir&}H#((DfpeZo$0IKHFrRCYM4e^xghF@cRjGVE($f|kI& zY)(471V&+U&B3*nYvk!O8|l>3tj{LtB9(TrHtRwMF3X(xc@&&|C|Qo zUdcO(;k}hNdkHrxe<)9Uto(_7S$WvVX4N$AJE42RKhAaJ$JtjME1&v*B9UGcUBiA< z>e7G?Z=5n=s4q$BJIj_TdplH@CuM_ALebFBLLX~2YFli~pw!XPOS?{k zEJ&!Q`G$QZjM!`#g_5f6t`LVw;Q-d-N8u3Lc^}yvG=(R7-o|&B|L|@U^?Qc3M#>AG77IQj1KCS^uf>RDx$9#>rhF4Y)#zw*IC`7 z-q?FoWwPwsq(h7uF)2nF68e~=7Yp|dM!u0Cpoah+Z}DUV8T^5d^5Up=Es&vhtOM{& zmClaCLC-1FwI4tYlg+yKIGvEirj&$+2T&=J*(TiPoA3~bw)fk=bwq()=0)~?Nkf(L zqrUs1^^B?6Pc}!d_+EEzo!Va(6?WF7LKDPq>q#5jr3Va4Pp7J zF`-hMyk(ypC z(VkjnWard=emjq&QuCL{ODD`1%41UdxB;4`sDnkZ#@(ZhVQsf zD>)S@?3f02iMDi|QxqoGUPP2z>KUQJ4u4El7ml8o)|h=jlk*M1&Or@d+n4TQ`X8~O%R@;RBc$=xJB)mA;GWX=Y&76V* z5n>9* z*hi|L>Q+rzNOB5sBiF7yb!5qj$m924`ai5KKrS@ye8q~aV+ltxMueuazxt7pnOYd@ zC1*xB(zsarVPFIPqp~nz>20IsKHEFgH`F+3B+MuZ z9qFy@z|Ktd<@EJtu`Isrru7YJI8?huuKsIBCJDzHPW`vgbXi_)q4v_OVsBULV7I~+ z1;q!pUH32&NI0&yFj@OXAC9$5-TH00=+VMc)G);2=`0DwS-40PXw7)->bg-^>rM!J z^ZE$J@X4Onjp^RG3o!R(&bDcePQv()^AM_RcO<5%raps zjl7+KWtH(gy*5a2czUcb zrO$RDacME^6nwAJl2p5J$9D)y0@JG;Y*ILP48XpR`E^>Zr@S?ti67#q{IGl(!!_X7ppi#7i zL8sY4l9;w2ez@PAz%%8ddd};SJ9NtUuGmpI*Br(1f)FRV^$Fy&D$Lf6CaymUtE>0C zFnzhymnbKh+6usHiw1%Z8g6d1QCp}EejEO-f$gdCz{+0eYrmWDuj%})ukf;kHd?f` zjrx|XqTZ2UxS1PGbyV3=)tY-uF337a-7A=}YsB4Xo^;&>=S7RQy6RGq#<_+vp1wM! zPMcD&A#gHNpNpphUzTYg5X?q}LZ7Bv1fRH|zOs#z&!60beu`fbS8!{@aXx1Abi{o2 z&+q?|3Ik>n?m&!9Q-qWINJj zeZ%h;{VuhK3w7MevnmIjpreW&{|+dyRgdz9b(bA~B3zhee(sVgSs?^eqwz5dpJy2!|kD|}qPx+h`zOd#1DX`c`80)XDIeiBjg)5t=Mek^n z`?5d0?#SsK`kJtXokacHdS2G4`}r7M0ajmm*Qm=V(6xDCtI~)-#c>cOh-fXZh0K*0 zLmYCBkl9Dp%nQ^UQ*yRyol{`~3NzU`R#>Gz^Rs$FuhLI@{3=TLb(C9i`@_+KIc6Sl z)V=QU*e=r0(27T%arYs)^GaJRMNCZtY7WE=zt4j^mLELOX{)GOXE?8OGqW*oq$cz} z!@8%redNLrV@QD;uri5Z+~%9#)iE|r@*kucZC~9}Mf8a9RP8L?!hlB~E-Sfx znObNqp^1y4^zv54w;9?UB~l0<)4i|{V|^ArRTDJ}D8YZ@5*k-M^U#yX!#t1sMdLN6 zG|}UsPpRXdMQzkW0QISIK3tDodx~W|;9AT+ot$YA-QVz@Q1eC0BzaH^^myb)iJ0T+ zzbbgIOUEh;8q1(o2;Cdg!L_CuPhb%G=Z5?NodqU+C+!yg7Sxp3e6Ze4OW8_Ai2N7L zLb=UunhVG`H8l)4>xe2HAef5o9`CVhK6^0yPk6Di%_zGkSnbGw-;>&CS~)-5nAPk$ zVku;?jA&a&Xl_HJgl{-MH&X#!|CNr@q>`-~vx9~*VZb0?cs@ukGhIbxKa`eNK~dd` zhj^LOaJpm-1Qj6*V#TXv8sUIL__ItEjd&Kk%RyONLx8yTbqevT+|s&osU~45!m@_* zs~z?%3N>6gA)JR3BJOZ&@9QOM9OYRn6S^#}a7N2?3Fip?SXSGygqQOqHrqkZsp~)u z_QoOjF+YKakE9B!b#{uRNfj;HMI4UmOVbIF$ ztlP-LyUW{CXx+9&`9z@25b+yro7}`Fb^TEw{g0t1cNtFInEgm@C&5>=R z6b;`DvLti#y$)^i4azjERE3*p|bGd zRtkqU!*62nzi}S{|*5eR}^WsMXd32#LZY{!Vd_w3_V zHIoIkWlQ7z3%c@3sAuGO(k#^7Ds*8d{O~(B^=mAbeRWmeO7anjrHv|Uxxa{kJGe0m z-=BhUL{oh*Y%c5$zP&b#HxOR32;SKpAOe} zJF@@6ytgv6WTsfhA%bVmL(fwT-O%+Sh)7GvUd%=+;nZ)(DIo8Ey`ym7PF?S$aNyce z)>$K%mfG@TTN}bI!ffoU;;;a4spI93I|-CNbBM6Id-#7~Mdil9zm3_xcO-SMcivBv zD{NogVqWmk&I;bCTD>oK4R1}dqH(;HKVE#S`Iiuq`HFuQ{;codsee;72`meu(5=-q zlVqACdJW|xG0L=;g`3@G?%%yLJmAg3uNDYS`SZoHDXCRW{y>Fwn!=v{`1Cb5gwm3N z#6a76*X$wgv68d=w5h~pa~hw~SUKfDl#sCTR~E84|8+CP~FKh&EMN8 zOJ5;gE`nCf57KePM~wVI=9&0g(mm}gn7_de@fI32Gbx$$ub^S}$4pd_;X$9XsjbzQWybz1j~~AM^3`0C0L`}8 ztbKj+VV56S&*JP3WkpX*3wF0hp1(P9a!~sH_4_!ws}&VP{8!c~s)gU^R=Q>TU%uB3 zO3_C?e|Yr2<~ue2gji?k$*fWZ6(;g|&Pw8uuxlPsox3im9kVTe^W)FQQ_p+v4taeD zmr8H{uPpgOUM`0OHPErWKf3s0|J>F8yed{ulYw$KvSr9qK_COM6A5 z-;+~gx7SY3@2n56T94q+qkg%GSH5S)?@qKf1LnxaIg?u!5By$u@Zgov73|G*OmdC) zsbhOP(*N1E9H6wx!ZcVbQ~r$f)|Xdrem&B-ZGUx9hKV?ncc9|nrJ{SS^Jj67P5J}A zX1pyVoCOA$@1Lyu2-0PFWG1n1l++zsJO8qM;~;sW;QhAmtx%ETckL$@8`d!{#Lc;J zVOgK9kNtJ=NM&jI{{lZS{*k-$&T5d}KrDhMu4DL~T>2J-+vJ6xoyW_&j>Uf5`$O}t z$Na{f%Gbz4CwX_syy+ zv!_OD^!BV{Kpr>R-S3=Z31gbvkE49qB#n8r=S}_9?%OX8te#O#XXO8qTJH@F;BPx* z+P3Mj{F0XZR)FjO=T4#~TG3@EKOwflz6uTSlp~MAQAnfjve_QKLNQm4(PIz0cex^s zue2eAle%l+uQVONoC&&TWwA#z`0TEx-C{65`>#&zu6i?%P06P5M{e_1?g9q?qv}yX zlT1TH>c)-rH=j&WnWRik(j_&NI_78x1R(QSQX0`Gs@$LL6T7 z9m>SQKDF#`D~(}ZRf6Tj|LfXkc7aU$AJEYqzy-Y1r&4|=?(xc5HKOiOOr&OM?rzgb z0z9;+DcNcX+`(zpVxnJK8Yi7g62}bSm)sNMzh|P;2gYvoKR#zp-Lr=(Zvo7kj?3?M z+(bch3XRU8K95}hl z`0%zjOQ1(PY=UR@7JluG$8}hoD1GvVf6K#eeNeswCc)0({@DV{WDCS6(e=*{wyXu)f7s(tbvxTnwmtKj0Lk;54GM zwY0S@I{^%ft z^u!1hyZDQx#DG1Fdrq!% z8rr2KUb^wcgjMC#-e_|vYU-0iXi&ydUdZ2l=~1aEb(pMc=1km=g3la)(xE>H@cBDK zLtK!HTb_J(cJ&WALp5};TIleY%)SL1_-3=*rIarB{yS{y>uv+elAjyzp5J07koNY_ zL})rE&V`Co&Q$Ju{X(kLZU}h|r+S+Oeg!n@Ar%R#KUK5mwJ^|Kj{)^;M9=jOL|8H` z)G#Z7_Gf{;;S2zvs2<*a?!BEQzjyPKsSeaS+2NIKg+-Il{kbaXnED;hUZ#f1na6F- z*xRfPvHBR|9qA7AzswoNP(8Dl2U?L+uqW9cm(o*TSc@eN82wuHL>prWXF5G25rS7) zC`(V7%c)P?34j-w&9B(n{P=?lx16Rn)bYKtfy}<3z|C8p3rc=?%$~}APF0+Wp2R)+ zEl5v^e2zV9=$sDCF@QQ-#VXeU3gXxRe@!e=1&nGU~;N1h(P-Dh!=87e7Bzq8`x1dxml zy2Iaj*9(&u19Y0t#OY;TL7r3RZCZdy26j`ksTt|QPN9GnnYFbvJ7J`_M$8W(2kNXi znHKte!W9g{ns(M2^;lYazA)XygxY)l15ph9PC*T4yI!gULuZKg`cQr}YCuU(xHYg4|yp+$94FR+A z!(P7B*{>6}^D_Btn(MS6JHU;D`PDC9l*`GE?7Ara9Z~)SY!EhXeXj zgcxR;ZnjwN?n3`1h5idO^1aGHk|6Cs{jt~Q&!+i>{&>#~48rrSHElU#3VetfjoH-o z7>C}EqXvEtsfu_jG0Rf@u(`AJOW$RYfmw)(AyuJyFG<1N)EwjPnfzBrQ4)WSgmLEI zah*;>^PDYAF_WE>i>I$AB`+JqJ6kZ#%_+%$I%G8^&KAW@1}gkado#1#{H@<#0jAl? zd{cWv48}dLXyD&-TmO+@&S|#sY(j1}nIu4SbC61}2IA;x&rB8ijZv^CI@GfaGn<7` zZF7b(149L>l!fPY5_Ws{u?~?KPXDa7d5;G1>#~@6bGrAh-vy5PwbC9Z6Zfqhh!pDk zngf_X>DP_P`?Y&)_YByCU1s;N9Z@VDrLrNVO+bMAe1&i~snuD)w2vE7&pAZPtFJu3 zc6?Op%!wJkjfOGT^i4AL8!f4Y{%(nuT36Zm@$pW!w+71H7_OTzK!^jqSku>BH(OE1 zy5xw7>PM9;85Sfpi~?rf%Z*=_>^VWrP5vi=j{$j2Q(j^nC84635brHc-FJ8wY+1pz zkRM~ypt`JMp!!hm`GyC*=bphXs&-VHUN3j~Go2Y>v9z}r zrx;jHE>f{g+P(~T zOCL*o!6;nGyvW^gUo(Be>dBINwvCdlOnZZ$0TKn=hdH9T?kgpj&|L8FReSJS%luSR z*i+#n2z6Fjh@_ab!nNJ@80iWgsh3wXF&c67F>S28v8>-@R-6H8>XU!Y@DwrazbJ)qZN z(|jjz-5z(i@Y+nn9IpQ9p1lR&6XMYaIhQtw3cx*23LCA)no>Rwk&9;RC#+6Q!U;AY z{e;_unzjEFSHAcv7}u12%)c?R1f`Gx^6HziUtvmf6`q63Wkki)6D@EJ&}v}zcK2V! zEw4e;^I6a!<;24@c-bRRKG|qJa)s5!pb=TJCn9ILsORaRL8?sH<#@XVjJ|Kyl&#rU zP;LflooJftW*pcI`ehz&e35e@<=W60i%M`hW-GBNktqbJ*8US#ZLE9j%zfz}C3Xd1 zT~#Oeviir3Q}a2XcFhl^t00kRBTIP#v|8R0w*Ts+m5i-B{Oj8015Oft*(s1O`U3u; zD*I2UsVCK{g8P!kZ^&F$EMHVVw6$q&+w-e>ApbUa*l|#n$Oy#;oXtY1NSiFv>_LMq zt)5`q`T^y-4_7g2B)4j3C-mRdcY+#e}E0P?z2XwSr=x(Z*HhT%;G@Ndd>zgcZ zgUMS0Zb|K*H_d@9jeGlY!J~6iO(_evaO7N&u^4@~X{t{%wx0qf4+!cXj#IRfz~&Ek z3MdYp+5EuKW8j7RKfvgRIGGp=-gq1f9-HudnAR`{-X(ocoC*Y6=KboMaI~$UU&b=n zBzuzbaIY?aq^|Wutt6XPBT2Fkd;S0yv@HzZmuf%Qlt*~&1e!7~$m}g~pkE>H+Cy>5 ziRvd)$Txwq+nYZ@=N>bamHr#&WiG;oMi^Ir%KT0>`DsrFf~@K}vcp8&J3M&qLnpX! z;^9AHls5j~a&TLC=5A&(@jPVLX4oDS4^+t5hl9g=$pGwM>HM@vRi5fBk1B<_$RT`S zbKUKCG#p`jDdfiahg0EqsFY~fE((U%GbZohvD9`;WuA$DuLgTtgIrwR$71HM-J zPsoxsBKwYSU@JLdA|_m?BgEH4(zbTAvrzvXXRB}e_d8n9kSoa4c3Y3EG4(xogMCMn(lf3?qxH;0 zR&R8+h%)kNyzV@mm!1$;m?b2_^_B2ggZ|G6E&ZTe8X0qFM1SePi-Y6erw)ziWiYz- zcORa-i0}5*+^RaTKOqDBf4cbcxF(V)|8zQ?4kVBSP{L&gK_iCC5kbTe1Q8IB2q>44 zAcP~FV-kW20~k;vpr|Mg&U%cfGs7XGCK?pOF@S>yiUVjsP>~5nj!_3xklx1K{e5cvW51RqqR)DQBFb$t_%*Q`kGgBJ*t<{3NRp+f+T@ZtfGmsBpxTRXwo8 zBGxPmUYu$MCMnsc5Xus$XS_bf{U&UXx_9Pn#Q|!bKC%U5YC~L}0rbHrHZ!KW#hCbJI+OCr6WQ~t26Pf;Cz?yBx@tM zJ!WMooMl|_;O&AsBH3LGMo7Al>+X}tnNsnpQg_p6CF zhmlR~I}Oby69|7(+C2e@<)o(>xXjR&W$#wUU;2ZYPgp{LzkcN?ve;g53{0v>akPjS z_NW*sw)gyzkY9bPn&a*?;L)Sl?EVhP_^$7Vd--V;(Y_x7r|nCVnJ6Nk=Hh*bv9HOT zx(3fat66bT213g;YDmv7iY-Mp?P?hAFdd8)U$^2Z^Q+&+K1JqMBuNS;J|Y>rti}r+ zEwwrm=45}*=X!AoYY~kYG4H5v*pAo>*X>zZ>QtT`@N=bGbATZFHj=n7{B(YQV;v&Cp?axrKUpd0gHiGSjzOn*^W-}pgfM`q`*$o7hH z(!Hn-M8LRoYuF=Hv-8y-ON%e6&oeu}bUe54LRi>@qXW$pWblA?C ztMU=1D5`b5P-N-uZXInu`)9pmB*xwHr?g|-+eqdF)-M+Q$SL<(XSl;s#JWA6w5U#&b>AFJr`y@ox+;B}67 zv8J-U{Bygn)b(*E5!0NrH0pp6QPiDd=!k5{Yt46Bx)b$c@RUf3Fk>P7M1({xi$j59 zqj+Q|tgjq@Y8w{LLs|*{Fu*5-v%;tzl zMBc`@l&&iGcpuF}&RG=%3_0W#40yyFx}QTjPCFFvm24H#-NOPcpVUKt8`j9-4d3Z0f_G}X3KNCR+keEzVTJ3Wq z8Yrz=k(1!?H~T7cNUk*L=qDJ&BG%W#d{5_ZFu!0Jx1ZK5LKe3dhO z_#RoYW@g*CCfy>|(df18wsia5qz?9xklW%g(mSF4FYE#zO1NG}FEZle7VWj>LY}H> zIl92a&@-XRA=)Z}HRbK&@-zsa@MvOl(C0=yFnCY_uv&aV%N^sc{$5!W%oe$Mszk^y zA!Y6&9}>avI&!LW+_E6~DUzmI;n)@)9^w}5YWcKe0lM&r%7p}UbD2nryASEqxCatG z$O~a~ajaC2@*-SHPb|cSb&b1AsTfot*6u@ym#t?w(>;v6gMn~$kwUAKa=gIT`0aPe z%l0O!X5NcMVUs>aW*VP7;}{dK^Fye=bs&S=#jZ>^hrO;oIZ%d#R&Lrzj=S;G^)Gi( zq?>D5r>_e7h)^nZjySp-F;<2(D)(FUhs@nw`S&Tm_MIxNpL7f#o?q?8*2V>mU%6`5 zp)5e~=>b=oE_rNz_HcqqXiaYipKN!IcE~>S`wjf0H;)&ReijwoyY$S#ss=FM&XG$q zp7fr#4y&tWaa(tgW~V*24+ep(y7Xr`smIg z|NFV$dUE0Q(*!j6W}|=eK7TRg$}f%45-iIWIoIePfGi3R4?L71Nsg{k0+v@qtX)3F zb^0kDtZWo{cepg*Sod|LtWnwNxv;(cDRQaXA|`I-N2FG0-i$|#%nXrRri{A9c(Nif z%XcC9%5cynS^lg>;X!rcUjC2kgmswPV;VVwU{}`{Ro_x1w+`&}Ek*ic2$Uby&wDlz zXj=$I;hXgx@tabG++Gr`#iVWV4t?&{XRCl;?z_=i$0{6ra}0;(f(W?j!LQ{w6lVg^ zS%XW9LFhIFTnD?!7nf}g1H#D> zyeqIiCzs|(F=@|?A{=E|L_$;}o4WLL3A`7oTzvuWp(gsi z-~N!>cGg2>*G4aXp*N-ku5HkVk{>{0zfhsU)D&*SHTp;B)`k7-&U(A*%aHn~cl0+{ z6>8|v2k7q0G6SevuIf2)kv;;|Sbc(CoOsiD`hg)-@`8TW2>Sca_xxwj)xY*HfZEGH z*Jo?#eb9L)+}k5}7ee_FatXhSe$*IJLl^Gd%qi!8YLGGLe?li#rI9;(xRCT};=lA} zlg|2-T&XGa2s&}+?UmFEN9<E>GKPS{C@&M&pS7SOpj zbmx=&y%md~f1ux9?e~A$lg51pm0^v)=u!jKrWAIbyuloYTIlt*(eh8wvjdjUpToCP ze;fPrJ^k|H8L}LzVXGB$%kW1l_082_7VGE{Lcw6o_#YB5wxe+>=1=SDQzK76zcQVr0Lb=Kc7Qyg8B4DFly zh}A8PUc9^s`lCxOueFV?VMD(*&?lkKSZ_t3Z~JYb{H^b-9IJiP_l^<|!%v9T=jt|C{|28~ z3a$ULSsod&LnipRM|(CH#<^>IR{abZ-6p&SBsRbz%M&|>#>#--%AW&=w-do})R6Q11?4PJ zcNVEdQ@*~#Jt` znhDQhpX6p+l>_teylQahl3=MGvZ zxycpug?IzpP^x;pG5J-Te6j&UK${PxIFyGW;^<=Tc=I4=(wvdgs3{#oP$OfgYL{Hy zc;F5^yqBUFkbj;mC6M%JW-bJ{IG_6O+-~{66q-IHg(0e=3?>$YPb=ef8P;S6a6z;- zGt~tIXL;_yI3~de9#1}9O9zd+4!e*K!aZk3D-3)=!^-#s?zDJJQ)2vky4NJ^OU1c8 z1LJTE9^~SD)C)Utrfmeb#b@rHKb)StByZ~(ae7dnG(|kNaH(@Q_G@6{JQF*n2mTkc z;*#2Fig?`p`0?Y|AvOt%jvvQLUiwDN>o|VA3=8wT`M7MJ_l=n6m6e^qf^Na3BrFP& zT3}lX(Au`$(2Uri*H3p7eu#9BqypC9mVbFnXj?Ww??ZvdfN$Z(3?J3TXg+vY zd+A-F&1GvobiB+M1KJ?gU8-7wTsPhYV~}N+J}*T8<2kAmkE=)}EC(~Gp)kw6IIvf5 zyKx4byNqAO?G+7r6;M|f!#k;(RReiq*d}_6y7r@4eQGZpOO0W}Y{Y|Vsa4h{8jGm6 z;pIr5T&vtbRT-yHDYmdJQk$%Fz`)sj8L*hDOzTi4!FEUhH3JqZfod)F57>V2p>YyM zkHT*qkO||s0i66DtZV0p(2NuNaXlh<$qHn-@i(Kuu-MQ$m^tWUsd=lwNe`9&7Xz0^ zKs6Z9-pT*A7x#J;#ZZ{mFqdHKEOcaWCIVi@)L@_&clF~$s3^*;_e!b@`%2WHBdI|+Faqt!g5oKr>2Wb) z#XB?#<|jtS?}|y~M<>SZ(hJV){hApY8*LxU&k#k|r_f_X=`jO4&)&)-3SxH^+a|?M zrz}+4rHcru5j%xTYgO{h*!0xEG0gk8dgjt72;iOa2_z?qAtKFbA_A}>%<|=dJ*#{f zOcnw5?WXiuvJw-moup!LHTJF=_l8o4EYPW5{bqU!MblYB(jgG$;8>ZTp@wyx zEXM*z0?1({Wv zXf$wwLMlEGDFAg=9z4uCsIO953d7n-ppeC6osRG7V&e4%rpV6ORmPL0tjT_RR~|@8 zkg%9XXBPHkFzN0D7Pybqsq6$YPGl@-FJw)@DRngXAd6-Ok!Yu3JqFlkDmfhHao}oP zH_Ky%iQCBti7SsKauQuv6NA)m^0<|($u*No_+uwWK7d*b7cG*G&(hV0;9c6Am=`+kf926tfLb^q*7;F&s|5GMy!sma*eLzv^W1z&yLHc#}5P_Ph ze+ci1)yz*kJ-P#Xv`~bXHWOs9w4ERwB}o1O9*z3W=Z0EagQ3>TTzf=-FB@wZmfpY}?b2O)L_*BVoui6~wwkqoWbtZa@uDI)zDYxBQqlIe+I#{g z|3~|`GOzliqd=}IrhE%0xJ4Id?UxpxzJ?i^m?UJzC#CSQ*8t3nnAl`~98;2nU3`iX z`AlpKnEWh$tQec@n8Y{sE@q4XnAY>^;?{hVUuo~?!t_ed*u5($ zAyLF!=4HcN;p*yahb<|N|4(TsKPJ_lxjrR@89Xl~WCrtv{9T#+IQw~B0*gqE1vXxs z;GocG?{IIg>~B<9uwSS*a~`)2lhch5;G+bD@CSLbu?I`h{E?RB#N!AQ{_(CWZ zhg*W1L{S02S#eK*3ckBR6Tn+Ive$x0OxO*i7M{d<``Gc>8jkEGXG?Gmrv~d|$~N>b zX{&7uS5t#=zsKN5qpiUT3`iUt7sn;+NO|(XzES{83kbrw0AF6z-s$_G~Eg>b_ ztx1B&F*Pc=64inW+a`M$B5QFa6)A{D~229(AF(|r|@2xb7!UnrO3SdrE751f?GaYhi_3}*`(&;%-tEe7G(|>1!|5O z=6{}_{bH(gosBzBU3$30rfymgT75yunZhsZ&1Sj_~Kp*t$7^H73uv7h;>|P zB3P;-X{T4H3_#iWRH5S9myoFqvcEpdWQwT0>LMWlG@|!`DB3&_Wqw{3`1Exa z4Np~UvXybWFgPaZ!_?fF2DC!mWbW>9lIwdRUe*JK7`gV6 z>RXtvhVw`69-eYvZZj==UvhT!n%C4{X*FM`$UXv`0Ob%uwrN(+(Fa$}lE)ab=G}G# zQ=9kg-W_4Mn|0iqyLa2>dQX-J>^|r@ z`plg@stX3$wrW)pXoLgriuRA=h|L;6W3@ywJ|J9%_cZJ72}V%^qVdCak_0- zpwXl)508|6m{wbo)#UNQC7#^dB3HG6%dFJ4)%>}S(a@wO=s1|ah0 z7!`$+N+_lv-Hl^*aoRXiU)C|*x5RtR0eZ8;9r5Snw@%VMhf4xLir6D@Pws2r`^zyc zB4RrLTj;%baVOPd#gnc%P1^z4jO-t$RzZ#&D!vMdo-epvl7`sNE-W#J-He2bngrje zT5a~8{@SAlsX{dAvlEeK+CP8W(e}dBa3`4m^3Z2U5ViM0*U-i{=+Kt+w$e89!B`2? zRkzp*a4O~xTduX{ zPZRobeI=p%@y9U>&8_9!Psgf1Mde$zTX?e!>ll5qx`&D}Cq@;_VEdAw(A5e~@1B>xkOb`gC5 literal 0 HcmV?d00001 diff --git a/hardware/sam/boards.txt b/hardware/sam/boards.txt index 7852a52ff..ec43dd61b 100644 --- a/hardware/sam/boards.txt +++ b/hardware/sam/boards.txt @@ -30,11 +30,11 @@ sam3u_ek.build.pins=sam3u_ek arduino_due.name=Arduino Due arduino_due.platform=sam -arduino_due.upload.protocol=sam-ba +arduino_due.uploader=bossac arduino_due.upload.maximum_size=49152 arduino_due.upload.speed=115200 -arduino_due.bootloader.path=sam3u_boot -arduino_due.bootloader.file=sam3u_boot.bin +#arduino_due.bootloader.path=sam3u_boot +#arduino_due.bootloader.file=sam3u_boot.bin arduino_due.build.mcu=cortex-m3 arduino_due.build.f_cpu=96000000L arduino_due.build.core=sam