Zach Eveland
75da79ad76
give Leonardo bootloader 250 ms to finish housekeeping before leaving self-programming mode
...
Earlier approach had bootloader end as soon as it was told to. On Linux this caused problems with avrdude because the microcontroller never had a chance to send an acknowledgement.
2012-03-08 14:20:12 -05:00
Zach Eveland
53e51de832
removed old version of Leonardo's caterina bootloader, replaced with LUFA-based caterina
2012-03-08 13:47:42 -05:00
Zach Eveland
351817af47
reduced Caterina timeout to 8 seconds from 16
2012-03-01 08:51:47 -05:00
Zach Eveland
7948125208
Leonardo now checks whether bootloader should be run after a WDT event.
...
Before the sketch initiates an auto-reset for upload it pokes a magic word into a specific RAM address. On starting the bootloader checks this address. If it finds the magic word it knows the bootloader code should run. If not it jumps straight back to sketch.
Test in a sketch by adding to setup():
wdt_enable(WDTO_2S);
Sketch should upload, start, run for two seconds, WDT, and sketch should restart (not bootloader).
Had to cut out unused descriptor code to make the bootloader still fit in 4k.
2012-02-14 12:17:30 -05:00
Zach Eveland
b28e6c2f9c
Leonardo bootloader jumps straight to sketch for a power-on reset.
...
Disconnect programmer after burning bootloader to get the full effect. ICSP and JTAG programmers do a hardware reset after any reset condition, confusing the firmware a little.
2012-02-14 09:59:48 -05:00
Zach Eveland
ac3aca0acf
changed Leonardo bootloader and sketch PID values again (now 0x0701 for bootloader, 0x0801 for sketch)
2012-02-13 00:10:16 -05:00
Zach Eveland
35bbf80ba9
adjusting descriptors - trying to prevent sketch and bootloader from grabbing different COM numbers on Windows
2012-02-08 01:16:56 -05:00
Zach Eveland
3191583476
changed Caterina descriptors - Arduino LLC VID, new PID, manufacturer string, and serial number
2012-02-07 23:52:55 -05:00
Zach Eveland
12e2af9cd7
fixed bug in Caterina which caused some programming instructions to fail
...
Timer 1 interrupts were trashing self-programming timing. Now disable Timer 1 compare match before doing Flash tasks and reenable afterward.
2012-02-07 23:46:31 -05:00
Zach Eveland
e720ffb81d
increased Leonardo bootloader timeout to 16 seconds
2012-02-06 15:23:41 -05:00
Zach Eveland
4544fb1a1f
proper bootloader timeout and LED control in Leonardo bootloader
2012-02-03 23:15:04 -05:00
Zach Eveland
45d3b10295
Caterina now cleanly hands off operation to the sketch
...
had to remove TIMER1 operation from bootloader - was interfering with normal sketch operation
2012-01-24 18:04:10 -05:00
Zach Eveland
014466a788
move interrupt vector table to application section before jumping to it after upload finished.
2012-01-21 16:51:55 -05:00
Zach Eveland
0d8f865d9b
Leonardo bootloader checks reason for reset and jumps immediately to sketch if reset was caused by WDT
2012-01-21 16:39:06 -05:00
Zach Eveland
98a50871fb
stripped all LUFA LED control. from LUFA-based Caterina
2012-01-19 21:31:51 -05:00
Zach Eveland
e650b85ca5
changed fuses to select 4k bootloader for LUFA-based Caterina
2012-01-19 21:18:07 -05:00
Zach Eveland
d8cc8cdf4a
added Board/LEDs.h to LUFA-based Caterina
2012-01-19 21:17:12 -05:00
Zach Eveland
1133482716
superficial changes to stock LUFA CDC bootloader - renamed project, removed unnecessary files
2012-01-19 20:31:35 -05:00
Zach Eveland
58090a259c
initial checkin of LUFA 111009 CDC bootloader
2012-01-19 20:04:55 -05:00
Zach Eveland
73b46de27b
made Leonardo and Micro bootloader PIDs same as sketch PIDs
2012-01-10 21:23:01 -05:00
Zach Eveland
385679caf2
restored composite and non-composite device descriptors (removed in 4b05c3fc7529477fb7031d42103c15b50a6b58be)
...
Windows wants to see both types of device descriptors.
2012-01-10 20:52:57 -05:00
Zach Eveland
29e4d73a55
reenabled HID to force Leonardo bootloader to enumerate as a composite device
2012-01-10 17:04:32 -05:00
Zach Eveland
0ed2d3c953
renamed DiskLoader to Caterina (after Leonardo's mom)
2012-01-10 16:29:47 -05:00
Zach Eveland
63a86b67ca
changed USB PID for Leonardo and Micro bootloaders
...
sketch and bootloader will use different PIDs to distinguish one from the other.
2012-01-10 16:09:56 -05:00
Zach Eveland
0ea882bc24
fixed warning when comparing pgm_read_word(0) to -1 (thanks, Limor Fried and Phillip Torrone)
2012-01-10 16:00:46 -05:00
Zach Eveland
94443a2a77
got rid of u8, u16, u32 typedefs in Diskloader
...
done to bring types in line with others in Arduino core
2012-01-10 15:51:44 -05:00
Zach Eveland
dbec0f0058
made the bootloader's LED control macro names less offensive
...
TX_LED_OFF() instead of TXLED0, etc.
2012-01-10 15:38:26 -05:00
Zach Eveland
648dd85e94
added conditional compilation for HID, removed conditional compilation for CDC (is always used). disabled HID by default. also always enumerates as composite now.
...
the bootloader must always have a CDC interface. HID is optional and not even complete to reduce size.
2012-01-10 15:31:56 -05:00
Zach Eveland
59ef51d752
fix bug in handling of long descriptors for bootloader USB (thank you, Todd Krein, Limor Fried, and Phillip Torrone)
...
descriptors longer than 255 bytes were being shortened, causing problems with enumeration under Windows
2012-01-10 14:25:40 -05:00
Zach Eveland
28e9e122af
reset the Leonardo board when leaving the bootloader, before starting the sketch
...
Done so all IO and other registers are properly reinitialized when a new sketch is uploaded or when an existing sketch is started. Uses a watchdog timeout with a 15 ms period to accomplish the reset. Bootloader checks the reason for reset and only enumerates as bootloader and enters the programming loop if reset was NOT caused by WDT.
2011-12-31 12:19:08 -05:00
Zach Eveland
80b02232e4
bootloader merged with blink sketch
...
full set of descriptors in sketch fixes driver installation issue on Win7.
2011-12-26 17:19:48 -05:00
David A. Mellis
266d3aaaf5
Correcting Arduino Mini w/ ATmega328 bootloader file and fuses (untested).
2011-11-25 19:26:01 -06:00
Zach Eveland
36513f8362
Leonardo bootloader now sends iSerial string during enumeration. Seems to satisfy Windows' composite device requirements.
2011-11-16 16:38:22 -05:00
Zach Eveland
4b7771a815
restored original non-interrupt-driven DiskLoader
...
Interrupt-driven version was a dead-end - too many bugs with that approach.
2011-11-09 14:04:59 -05:00
Zach Eveland
75cc55d917
changed Leonardo PID to 0x0032 for Diskloader testing. updated .inf to match.
2011-10-31 23:44:32 -04:00
Zach Eveland
0a69d10b37
check to see if a sketch has been loaded before jumping out of bootloader
2011-10-31 21:36:29 -04:00
Zach Eveland
3524f2ff0b
Revert "Merge branch 'master' of github.com:arduino/Arduino into diskloader_reboot"
...
This reverts commit df9835efafd13685251749bc210c0b96a18a96a5, reversing
changes made to ec45af8bfa9222a807c075dd1db4b5aa798bba03.
Conflicts:
hardware/arduino/variants/mega/pins_arduino.h
libraries/Ethernet/examples/PachubeClientString/PachubeClientString.ino
2011-10-27 11:45:13 -04:00
Zach Eveland
2b13fd3b40
bootloader runs sketch after timeout, added bootloader LED breathing
2011-10-27 11:27:24 -04:00
Zach Eveland
71879e53fe
cosmetic changes - remove old comments, unused code
2011-10-27 10:54:21 -04:00
Zach Eveland
5d976f8b1d
removed conditional compilation checks for CDC_ENABLED
...
bootloader must always have CDC enabled
2011-10-27 10:48:26 -04:00
Zach Eveland
0ab2cb1c69
removed old comments and unused USB core code
2011-10-27 10:45:13 -04:00
Zach Eveland
da03595c32
brought nuevo_diskloader changes over to diskloader
...
Moved nuevo_diskloader files into diskloader directory. Changed back to real PID for Leonardo
2011-10-27 10:23:06 -04:00
Zach Eveland
29cfd9e9fe
Merge branch 'master' of github.com:arduino/Arduino into diskloader_reboot
...
Conflicts:
app/src/processing/app/Editor.java
app/src/processing/app/Sketch.java
build/shared/examples/4.Communication/SerialCallResponse/SerialCallResponse.pde
build/shared/lib/theme/theme.txt
hardware/arduino/cores/arduino/HardwareSerial.h
hardware/arduino/cores/arduino/Print.cpp
hardware/arduino/cores/arduino/WString.h
hardware/arduino/variants/mega/pins_arduino.h
libraries/Ethernet/examples/PachubeClient/PachubeClient.ino
libraries/Ethernet/examples/PachubeClientString/PachubeClientString.ino
libraries/Firmata/examples/EchoString/EchoString.ino
libraries/SD/File.cpp
libraries/SoftwareSerial/SoftwareSerial.cpp
libraries/SoftwareSerial/SoftwareSerial.h
libraries/SoftwareSerial/examples/SoftwareSerialExample/SoftwareSerialExample.ino
libraries/SoftwareSerial/keywords.txt
2011-10-27 09:32:27 -04:00
Zach Eveland
c0a9e827c1
working bootloader. had to move interrupts back to application section. NOTE: need to have sketch CDC jump to appropriate place for bootloader - 4k from end instead of 2k
2011-10-26 16:51:42 -04:00
Zach Eveland
a52fb29860
working (?!?!?!) bootloader. doesn't yet restart chip after upload completes.
2011-10-26 12:53:57 -04:00
Zach Eveland
bdfae9f7b7
uploading now completes using RC2 on Win7
2011-10-26 11:28:07 -04:00
Zach Eveland
6bf6a20d26
closer still - now up to 4680
2011-10-25 19:04:31 -04:00
Zach Eveland
89108dd2b9
progress on bootloader bug - have implemented blocking USB_Recv. avrdude makes it to flash programming address 0400 or so before hanging
2011-10-25 18:56:10 -04:00
Zach Eveland
9a5c50d586
fixed logic bug in waiting for synch. stripped out all Serial stuff
2011-10-24 22:12:45 -04:00
Zach Eveland
b6f5fae14f
removed old comments
2011-10-24 21:36:06 -04:00
Zach Eveland
4f19d9bc8e
bootloader responds properly now. nearly there - still have an issue with it falling out of sync after completing most operations
2011-10-23 16:49:36 -04:00
Zach Eveland
8d5361044e
more attempts to get parameter sending to work
2011-10-21 20:30:55 -04:00
Zach Eveland
b9eece6584
some progress on responding to parameter requests
2011-10-21 20:06:17 -04:00
Zach Eveland
c83d85b87a
avrdude communication starting to work - responds to sync, fails when trying to respond to STK_GET_PARAMETER
2011-10-21 19:36:53 -04:00
Zach Eveland
d28a82d037
continuing to port programming code. temporarily changed PID to test on Windows (it works)
2011-10-21 18:21:04 -04:00
Zach Eveland
4498bc7ca7
starting to port bootloader programming code - testing as I go
2011-10-21 18:03:34 -04:00
Zach Eveland
146922e211
added and modified Program() routine
2011-10-21 17:51:04 -04:00
Zach Eveland
629788e47c
cleaning up code and comments in main - getting rid of leftover stuff from experiments
2011-10-21 17:25:59 -04:00
Zach Eveland
ad95bc05f4
Enumerates! used inline ASM for operation which moves interrupts to boot section
2011-10-21 17:16:48 -04:00
Zach Eveland
13c5eccbe3
can now enable interrupts but EORSTE or SOFE in USB_::attach() still cause bootloader to hang
2011-10-21 16:51:25 -04:00
Zach Eveland
0f6498ae1d
added more USB source adapted from sketch core. still not enumerating.
2011-10-21 16:33:52 -04:00
Zach Eveland
37c1c455ee
initial commit of new Diskloader-based bootloader experiment
2011-10-21 08:02:17 -04:00
WestfW
d3bed622e8
Explicitly set the SHELL variable when OS=windows, so that we'll use
...
the same shell regardless of whether other shells are installed
(different shells have different behavior WRT directory component
separators, so this matters.
http://code.google.com/p/arduino/issues/detail?id=667 )
(cherry picked from commit fc8cacb9a3b7c1d9cf96ae9891c7c3cd21f3c181)
2011-10-10 12:11:18 -04:00
WestfW
915ea3be2a
Oops. Add atmega8.lst/hex and atmega168.lst/hex to controlled files.
...
(cherry picked from commit c56a1293d70d27531b7351edc3aa4c11b4a6996b)
2011-10-10 12:11:18 -04:00
WestfW
07dfd77554
Allow the READ PARAMETER command to return our version number.
...
(significant size impact: 14 bytes!)
Initialized "address" to eliminate compiler warning (4 bytes!)
Add "atmega168" as a more accurate target name than "diecimila"
(keep diecimila as well for backward compatibility)
Reduce the .hex and .lst targets that are stored in source control
to the three basics: atmega8, atmega168, atmega328. The other
targets remain in the makefile and makeall, but will need to be
built from source if wanted. Which should be less of a problem
now that the source is buildable without installing crosspack.
(cherry picked from commit 7b1ee0f1b0192143fffbbed66dc046b6568f4386)
2011-10-10 12:11:17 -04:00
WestfW
0d9377c729
http://code.google.com/p/arduino/issues/detail?id=368
...
Optiboot does not support ArduinoasISP programmer.
When avrdude runs and talks to an arduino running ArduinoISP,
it needs the optiboot (entered due to auto-reset) to abort and
start the ArduinoISP "application" when it sees communications
at the wrong serial speed. Unfortunately, optiboot treats all
unrecognized command characters as "no-ops" and responds/loops
for more commands, leading to a nice loop that never gets to
the sketch. This patch causes characters received with Framing
errors (the most likely error for speed mis-matches) to NOT
reset the watchdog timer (normally done in getch()), which will
cause the application to start if it continues for "a while."
(tested. Works! Running ArduinoISP at speeds as high as 57600
still causes the bootloader to start the sketch (although it fails
later on for other reasons.))
(cherry picked from commit e81c1123b624b6cac7da018c9c786700f3152bc9)
2011-10-10 12:11:16 -04:00
WestfW
e74e76ce14
(make sure .hex and .lst are updated as well.)
...
(cherry picked from commit ece29c380556878ba8efebce8801a7f076c61ada)
2011-10-10 12:11:16 -04:00
WestfW
a8f7e73ce8
Fix errors in LDSECTIONS refactoring
...
(found during atmega8 testing.)
(cherry picked from commit 422398e08c8e011bf490b54af88271c54e56ddb9)
2011-10-10 12:11:16 -04:00
WestfW
0ad7a6df62
Update version to reflect previous edit. Sigh.
...
(cherry picked from commit e28b716f88968477fa0f42dbd88c539573e91886)
2011-10-10 12:11:15 -04:00
WestfW
c7af506852
Shrink code by using registers for variables "length" and "address"
...
http://code.google.com/p/optiboot/issues/detail?id=33
Fix high-value watchdog timeouts on ATmega8
http://code.google.com/p/optiboot/issues/detail?id=38
Change "start app on bad commands" code to start the app via the
watchdog timer, so that the app is always started with the chip
in fully reset state.
http://code.google.com/p/optiboot/issues/detail?id=37
(cherry picked from commit 6f7687b0f925cb07447cbbcc692766c51c02f700)
2011-10-10 12:11:15 -04:00
WestfW
b4952051f6
Add a version number to the optiboot source and binary.
...
http://code.google.com/p/arduino/issues/detail?id=554
end of flash memory where they can be read (at least in theory) by
device programmers, hex-file examination, or application programs.
This is done by putting the version number in a separate section
(".version"), and using linker/objcopy magic to locate that section as
appropriate for the target chip. (See
http://lists.gnu.org/archive/html/avr-gcc-list/2011-02/msg00016.html
for some discussion on the details.)
Start the version at 4.1 (the last "packaged" version of optiboot was
called version 3, so the "top of source" would be 4.0, and adding the
version number makes 4.1)
Refactor LDSECTION in the Makefile to LDSECTIONS so that multiple
section start addresses can be defined.
Change the _isp makefile definitions to make the bootloader section
readable (but not writable) by the application section. (This would
need to be done elsewhere as well to handle all bootloader programming
techniques. Notably Arduino's boards.txt
Note that this change does not change the "code" portion of optiboot
at all. The only diffs in the .hex files are the added version word
at the end of flash memory.
(cherry picked from commit 00706284dec3171646419839bd4a9e3f1c2d7088)
2011-10-10 12:11:15 -04:00
WestfW
64cbe56ab5
Update shell script makeall
...
(cherry picked from commit d4632cb09593e44bc8624c6b9a432c672fe4ad45)
2011-10-10 12:11:14 -04:00
WestfW
67f1e949e1
This is a relatively significant edit that brings the Arduino copy of
...
optiboot up-to-date with the optiboot source repository as of Jun-2011
(the last changes made in the optiboot repository were in Oct-2010)
This adds support for several plaforms, fixes the "30k bug", and
refactors the source to have separate stk500.h, boot.h, and pin_defs.h
These are the arduino opticode issues fixed:
http://code.google.com/p/arduino/issues/detail?id=380
optiboot has problems upload sketches bigger than 30 KB
http://code.google.com/p/arduino/issues/detail?id=556
update optiboot to the point of the latest optiboot project sources.
These are issues that had been solved in the optiboot source aready:
http://code.google.com/p/arduino/issues/detail?id=364
optiboot leaves timer1 configured when starting app, breaks PWM on
pin 9 and 10. (fixed with a workaround in arduino core.)
aka http://code.google.com/p/optiboot/source/detail?r=c778fbe72df6ac13ef730c25283358c3c970f73e
Support for ATmega8 and mega88.
Fix fuse settings for mega168 _ISP targets
Additional new platforms (mega, sanguino)
http://code.google.com/p/optiboot/issues/detail?id=26
Set R1 to 0 (already in arduino code)
http://code.google.com/p/optiboot/issues/detail?id=36&can=1
Fails to build correctly for mega88
After this commit, the only differences between the Arduino optiboot.c
and the optiboot repository optiboot.c are cosmetic.
(cherry picked from commit e2812ef91cc1489527827dcd14c843f3b3244f36)
2011-10-10 12:11:14 -04:00
WestfW
8caed55a69
http://code.google.com/p/arduino/issues/detail?id=517
...
Remove the trailing comments when setting fuse values for the various
*_isp targets, so that they won't cause avrdude errors.
This was done the same way as in the optiboot source tree:
http://code.google.com/p/optiboot/issues/detail?id=17
http://code.google.com/p/optiboot/source/detail?r=005fb033fc08c551b2f86f7c90c5db21549b3f20
(cherry picked from commit 6840b77643a75b850d48bed80c578da484e6559f)
2011-10-10 12:11:14 -04:00
WestfW
6f7731bb6d
Makefile modification to allow building optiboot in more environments.
...
Allows building within the Arduino Source tree, and within the Arduino
IDE tree, as well as using CrossPack on Mac.
Adds README.TXT to track arduino-specific changes (and documents the
new build options.)
This addresses Arduino issue:
http://code.google.com/p/arduino/issues/detail?id=487
And optiboot issue
http://code.google.com/p/optiboot/issues/detail?id=1
(which can be thought of as a subset of the Arduno issue.)
Note that the binaries produced after these Makefile changes (using any
of the compile environments) are identical to those produced by the
crosspack-20100115 environment on a Mac.
(cherry picked from commit 2d2ed324b48e709f59a002cb274ed60bb0ebc911)
2011-10-10 12:11:13 -04:00
David A. Mellis
f9ed282a16
Merge pull request #30 from WestfW/master
...
Significant optiboot upgrade.
2011-10-10 09:01:56 -07:00
WestfW
4b7c12b7cb
Explicitly set the SHELL variable when OS=windows, so that we'll use
...
the same shell regardless of whether other shells are installed
(different shells have different behavior WRT directory component
separators, so this matters.
http://code.google.com/p/arduino/issues/detail?id=667 )
2011-10-05 01:41:03 -07:00
David A. Mellis
dd74a97fb6
Updating bootloader comments.
2011-09-16 20:31:41 -04:00
David A. Mellis
2da3428b37
Updating Micro bootloader (previous one was identical to Leonardo).
2011-09-16 18:25:59 -04:00
Zach Eveland
d3a8346007
new bootloader binaries for Micro and Leonardo - uses new assignment for TXLED pin
2011-09-16 16:24:21 -04:00
Zach Eveland
29a707a06b
updated pin mappings for bootloader and pins_arduino.h in anticipation of final hardware.
2011-09-16 15:46:51 -04:00
Zach Eveland
18b5d20428
restored Micro entry in boards.txt, made separate bootloader images for Leonardo and Micro.
2011-09-16 14:47:42 -04:00
Zach Eveland
24cb818be8
bootloader iProduct definition changed to "Arduino Leonardo Bootloader" or "Arduino Micro Bootloader". selection depends on PID passed in at compile time
2011-09-16 12:09:51 -04:00
Zach Eveland
81bfed93e5
added to the bootloader iProduct and iManufacturer strings identifying board as an "Arduino Leonardo" manufactured by "Arduino LLC"
2011-09-16 11:56:33 -04:00
Zach Eveland
bc096344f5
faster LED breathing animation in bootloader
2011-09-16 11:18:39 -04:00
Zach Eveland
620254196e
updated Leonardo INF with correct PID and created new Micro INF.
2011-09-08 20:45:10 -04:00
Zach Eveland
022874df4d
in bootloader reduced delay between receiving stk500 'Q' and jumping to application
2011-09-08 20:38:23 -04:00
Zach Eveland
3b72c2343a
disabling watchdog in bootloader
2011-09-08 18:12:11 -04:00
Zach Eveland
874cacf143
misc. bootloader fixes: increased wait time after receiving avrdude 'Q', increased bootloader timeout, and fixed LED one-shot timing
2011-09-08 16:23:29 -04:00
Zach Eveland
07e58f22c0
Revert "added Micro section to boards.txt. specified different bootloader hex files for Leonardo and Micro (differ only by PID). added PID entries to boards.txt"
...
This reverts commit 3b5122e13837eede7c10acf484efdee4d03e802d.
2011-09-08 15:40:41 -04:00
Zach Eveland
0862493202
added Micro section to boards.txt. specified different bootloader hex files for Leonardo and Micro (differ only by PID). added PID entries to boards.txt
2011-09-08 11:00:40 -04:00
Zach Eveland
cb5b07ae94
changed PIDs for Leonardo and Micro. PIDs are now defined in the Makefile
2011-09-08 09:47:17 -04:00
Zach Eveland
384f8e80fa
removed all bootloader mass storage and MSC references
2011-09-08 09:12:30 -04:00
Zach Eveland
e8b2adc36a
bootloader ends as soon as sketch upload finishes. restored pulsing of LED while bootloader running.
2011-08-27 07:00:07 -04:00
Zach Eveland
b8a2daf8bc
LEDs for D13, TX, and RX are more in line with Uno-like behavior during sketch uploading.
...
D13 flashes on reboot, TX and RX flash with USB data transfer.
2011-08-14 16:02:16 -04:00
Zach Eveland
5b453fd606
rebuilt Diskloader, added LED control macros for Leonardo, removed Microtouch defines
2011-08-14 15:11:23 -04:00
Zach Eveland
f63015fa2a
increased bootloader delay to approx. 3.5 s
2011-08-14 14:29:44 -04:00
Zach Eveland
3e3e4be2a3
diskloader source and binary for 32u4
2011-08-11 10:31:39 -04:00
David A. Mellis
84285ab780
Disabling terminal / monitor.
2011-06-29 22:48:07 -04:00
WestfW
8628479d70
Oops. Add atmega8.lst/hex and atmega168.lst/hex to controlled files.
2011-06-14 23:57:41 -07:00