We currently pass the -D (do not erase) option to avrdude
unconditionally in order to work around an Arduino Mega bootloader bug.
However, this has the side-effect of breaking the ispload target for all
non-XMEGA chips, since a write operation on these chips essentially ANDs
the new program with the existing memory contents. If the memory is not
first erased to contain only 0xff, the resulting image is garbage. This
patch makes it so we pass -D when we're using the Arduino bootloader but
don't pass it when we're using ISP directly.
In 1.5.6 the Due board has an underscore, this regex tweak allows for:
arduino_due_x_dbg Arduino Due (Programming Port)
arduino_due_x Arduino Due (Native USB Port)
with spaces in directory/file-names.
Removed $TARGETS as it was an unsafe wildcard and was only used
in "make clean" which itself has been simplified to just delete
the $OBJDIR rather than waste time deleting individual files.
If Flymake is configured to parse .ino files the same way as for c/c++
files, it creates a temporary file (_flymake.ino) in the same directory
as the original file. It fails with the current Arduino.mk because of
the check for multiple .ino files. This fix removes the check
only when flymake is calling the Makefile (Flymake will call make with
the variable CHK_SOURCES set to the temporary file name)
To make Flymake working with .ino file :
Add :
check-syntax:
$(CXX_NAME) -c -include Arduino.h -x c++ $(CXXFLAGS) $(CPPFLAGS) -fsyntax-only $(CHK_SOURCES)
in the project Makefile after the inclusion of the Arduino.mk file
Edit the flymake configuration :
M-x customize-option RET
flymake-allowed-file-name-masks RET (using auto completion !)
Add the line :
("\\.ino\\'" flymake-simple-make-init)
Then click on "Apply and Save" button
Fix#211
Whilst doing that, i noticed that there were some missing
targets to "make help" so added those in and re-ordered
and re-worded some of the targets to make more sense
e.g. all of the upload's are together, all of the
assemblers are together etc.
AVRDUDE requires -P usb to be passed as an argument for some ISP
devices, and it is also required in the case where you have multiple
usbtiny or usbasp devices connected at once to select a specific one.
Fix#167
This results in just a deprecated warning rather than an error
when using libraries (e.g. jeelib) that still use prog_XXX types
This is how the IDE does it, and means that libraries don't have to
add the #define __PROG_TYPES_COMPAT__ line
Reference: http://www.nongnu.org/avr-libc/user-manual/group__avr__pgmspace.htmlFix#169
Added some notes to the SPECfile regarding overriding the paths
to the avr tools - most are in /usr/bin, but gcc/g++ are in an
architecture-dependant ccache directory
Upped version to 1.3.2 devel
so that installations using only the arduino-core packages that
don't have the $(ARDUINO_DIR)/hardware/tools/avr directory can
still use the avr-g++ tools found in the $PATH (/usr/bin)
Previously BUNDLED_AVR_TOOLS_DIR was set to an empty string as
the directory doesn't exist, which meant that "ifdef BUNDLED_AVR_TOOLS_DIR..."
was set rather than skipping to "else SYSTEMPATH_AVR_TOOLS_DIR...."
No user would set BUNDLED_AVR_TOOLS_DIR so the assignment operator
:= should be used not ?=
Updated the version info/changes in various locations.
Fix#147Fix#151Fix#153
The following are the detailed changes
- Remove ARDMK_PATH, ARDMK_FILE and arduino-mk subdirectory
- Looks for ard-reset-arduino in $PATH or ARDMK_DIR/bin
- Fix git-archive command in RPM SPEC file
- Remove some whitespace
- Remove arduino-mk dir from debian package's arduino-mk.install
- Update docs to reflect the above changes
- Bump Up version to 1.2.0
Changing the optimization level from -Os to something else breaks the
SoftwareSerial library. This patch allow optimization flags to be set on a
per target basis.
When using ICSP programmers e.g. usbasp, you can burn sketches directly
to the chip without having to burn a bootloader, however you do need to
set fuses e.g. if you're changing speed/BOD.
Updated help text to include "make set_fuses" and also changed
"make burn_bootloader" help text which wasn't entirely accurate.
Fix#141
If these executables are not overridden in the child makefile, then the
default values are not set properly in the master makefile.
This complicates the solution for #119 :(
This reverts commit 66eec82a3a.
Till not it is not possible to build with Arduino core, without using a
.ino or .pde file. This commit removes that restriction.
However, the user has to explicitly include Arduino header files.
Fix#105
Working towards dropping the dependency on Perl (which very few Windows users
have), this commit implements the required functionality from ard-parse-boards
in a few shell commands from within the Makefile.
Fix#100
This commit modifies a few things in Arduino.mk to be able to support
overriding the necessary configuration options to support the chipKIT build,
and also includes an example sketch configured to build for the Max32 platform.
In addition the following changes were done as well
- Control C standard with a CFLAGS_STD flag, GNU99 by default.
- Duplicate show_config_variable in each sub-makefile.
- Remove redundant output of ARDUINO_PREFERENCES_PATH from config table.
- Defer Priting ARDMK_DIR until Arduino.mk.
- Define names of compiler tools earlier to use for path checking.
Duplicating show_config_variable is unfortunate because the code is duplicated,
but I don't see a good way around it since we need to dupliacate the check
for ARDMK_DIR before we can find Common.mk.
Fix#98
When a Leonardo based board is reset, the port disappears and we need to
wait till it comes back.
Earlier this logic was handled by a separate shell script. Now the logic
is moved inside the ard-reset-arduino perl script. This is done to
reduce the number of binaries that are needed by the makefile.
Fix#95
Earlier bin/ard-verify-size shell script was used to validate that the
binary hex file size is less than the flash memory of the target
microcontroller.
This commit removes the dependency on the external shell script, by
moving the binary size verification logic inside the makefile itself.
Fix#54
In Arduino Linux distribution, avrdude and avrdude.conf files are placed
in different path. This commit improves the autodetection of avrdude
and avrdude.conf paths by considering this fact.
Fix#48
Micro can be reset using Leonardo reset functions itself. So call
Leonardo reset functions for Micro as well.
The reset function seems to have some issues for Micro and is not
100% reliable, like Leonardo. See comments in #30.
Fix#80Fix#83
To compile plain AVR C files, the variable NO_CORE should be initialized
to a non-empty value.
When NO_CORE is set, the following changes happen
- boards.txt file is not parsed. The user should explicitly set MCU,
F_CPU, fuse bits etc.
- MONITOR_BAUDRATE is not calculated
Fix#63
Introduce two new variables AVRDUDE_ISP_FUSES_PRE and
AVRDUDE_ISP_FUSES_POST which are set based on whether the fuse bits are
present or not.
avrdude is invoked to set fuse bits only if these new variables are not
empty.
Fix#61
ard-reset-leonardo which was used for reseting Leonardo was written in
Python. Now the logic is added inside the ard-reset-arduino perl script
itself.
Fix#62
Squashed commit of the following:
commit a63366980f
Author: Simon John <git@the-jedi.co.uk>
Date: Fri Jun 14 11:36:00 2013 +0200
who put a space in the shebangs?!
commit c798eb26ea
Author: Simon John <git@the-jedi.co.uk>
Date: Fri Jun 14 11:10:12 2013 +0200
replaced ard-reset-leonardo with an update to ard-reset-arduino
which is now called from Arduino.mk with the --leonardo flag
removed some trailing whitespace
upped version string in Arduino.mk
Leonardo board requires a new way of handling board reset.
There is a new script which does the reset differently for leonardo boards.
close#30 and close#44