diff options
| -rw-r--r-- | Arduino.mk | 25 | ||||
| -rw-r--r-- | HISTORY.md | 4 | ||||
| -rw-r--r-- | README.md | 5 |
3 files changed, 30 insertions, 4 deletions
@@ -812,8 +812,21 @@ SIZEFLAGS ?= --mcu=$(MCU) -C # for backwards compatibility, grab ARDUINO_PORT if the user has it set MONITOR_PORT ?= $(ARDUINO_PORT) +ifeq ($(CURRENT_OS), WINDOWS) + # Expect MONITOR_PORT to be '1' or 'com1' for COM1 in Windows. Split it up + # into the two styles required: /dev/ttyS* for ard-reset-arduino and com* + # for avrdude. This also could work with /dev/com* device names and be more + # consistent, but the /dev/com* is not recommended by Cygwin and doesn't + # always show up. + COM_PORT_ID = $(subst com,,$(MONITOR_PORT)) + COM_STYLE_MONITOR_PORT = com$(COM_PORT_ID) + DEVICE_PATH = /dev/ttyS$(shell awk 'BEGIN{ print $(COM_PORT_ID) - 1 }') +else + DEVICE_PATH = $(MONITOR_PORT) +endif + # Returns the Arduino port (first wildcard expansion) if it exists, otherwise it errors. -get_monitor_port = $(if $(wildcard $(MONITOR_PORT)),$(firstword $(wildcard $(MONITOR_PORT))),$(error Arduino port $(MONITOR_PORT) not found!)) +get_monitor_port = $(if $(wildcard $(DEVICE_PATH)),$(firstword $(wildcard $(DEVICE_PATH))),$(error Arduino port $(DEVICE_PATH) not found!)) # Returns the ISP port (first wildcard expansion) if it exists, otherwise it errors. get_isp_port = $(if $(wildcard $(ISP_PORT)),$(firstword $(wildcard $(ISP_PORT))),$(error ISP port $(ISP_PORT) not found!)) @@ -989,7 +1002,15 @@ ifdef AVRDUDE_CONF AVRDUDE_COM_OPTS += -C $(AVRDUDE_CONF) endif -AVRDUDE_ARD_OPTS = -c $(AVRDUDE_ARD_PROGRAMMER) -b $(AVRDUDE_ARD_BAUDRATE) -P $(call get_monitor_port) +AVRDUDE_ARD_OPTS = -c $(AVRDUDE_ARD_PROGRAMMER) -b $(AVRDUDE_ARD_BAUDRATE) -P +ifeq ($(CURRENT_OS), WINDOWS) + # get_monitor_port checks to see if the monitor port exists, assuming it is + # a file. In Windows, avrdude needs the port in the format 'com1' which is + # not a file, so we have to add the COM-style port directly. + AVRDUDE_ARD_OPTS += $(COM_STYLE_MONITOR_PORT) +else + AVRDUDE_ARD_OPTS += $(call get_monitor_port) +endif ifndef ISP_PROG ifneq ($(strip $(AVRDUDE_ARD_PROGRAMMER)),) @@ -4,6 +4,10 @@ A Makefile for Arduino Sketches The following is the rough list of changes that went into different versions. I tried to give credit whenever possible. If I have missed anyone, kindly add it to the list. +### 1.3.0 (2014-01-29) +- Fix: Use more reliable serial device naming in Windows. Fix issue #139 and #155 (https://github.com/peplin) +- Fix: Document that ARDUINO_DIR must be a relative path in Windows. Fix issue #156 (https://github.com/peplin) + ### 1.2.0 (2014-01-14) - Add: Add RPM SPECfile and new `package` directory to store package instructions and files (https://github.com/sej7278) - Fix: Remove use of arduino-mk subdirectory in git. Fix issue #151, #152 and #147 (https://github.com/sej7278) @@ -22,8 +22,9 @@ On Linux, you shouldn't need to set anything other than your board type and port MONITOR_PORT = /dev/ttyACM0 - `BOARD_TAG` - Type of board, for a list see boards.txt or `make show_boards` -- `MONITOR_PORT` - The port where your Arduino is plugged in, usually `/dev/ttyACM0` or `/dev/ttyUSB0` -- `ARDUINO_DIR` - Path to Arduino installation +- `MONITOR_PORT` - The port where your Arduino is plugged in, usually `/dev/ttyACM0` or `/dev/ttyUSB0` in Linux or Mac OS X and `com3`, `com4`, etc. in Windows. +- `ARDUINO_DIR` - Path to Arduino installation. In Cygwin in Windows this path must be + relative, not absolute (e.g. "../../arduino" and not "/c/cygwin/Arduino"). - `ARDMK_DIR` - Path where the `*.mk` are present. If you installed the package, then it is usually `/usr/share/arduino` - `AVR_TOOLS_DIR` - Path where the avr tools chain binaries are present. If you are going to use the binaries that came with Arduino installation, then you don't have to set it. |
