From a930c9983f0265247cc867ceba6e2c84f44b2889 Mon Sep 17 00:00:00 2001 From: Gabrielius Mickevicius Date: Mon, 29 Dec 2014 01:05:50 +0200 Subject: [PATCH] Example: set fuses and upload hex on remote programmer Implements two new make rules: 'net_set_fuses' executes a single ssh command, 'net_upload' pipes hex through ssh connection. The example also showcases the FORCE_MONITOR_PORT feature. --- examples/BlinkNetworkRPi/ATtinyBlink.ino | 23 +++++++++++++ examples/BlinkNetworkRPi/Makefile | 44 ++++++++++++++++++++++++ tests/script/runtests.sh | 2 +- 3 files changed, 68 insertions(+), 1 deletion(-) create mode 100644 examples/BlinkNetworkRPi/ATtinyBlink.ino create mode 100644 examples/BlinkNetworkRPi/Makefile diff --git a/examples/BlinkNetworkRPi/ATtinyBlink.ino b/examples/BlinkNetworkRPi/ATtinyBlink.ino new file mode 100644 index 0000000..1d1566d --- /dev/null +++ b/examples/BlinkNetworkRPi/ATtinyBlink.ino @@ -0,0 +1,23 @@ +/* + Blink + Turns on an LED on for one second, then off for one second, repeatedly. + + This example code is in the public domain. + */ + +// Connect a LED to Pin 3. It might be different in different ATtiny micro controllers +int led = 3; + +// the setup routine runs once when you press reset: +void setup() { + // initialize the digital pin as an output. + pinMode(led, OUTPUT); +} + +// the loop routine runs over and over again forever: +void loop() { + digitalWrite(led, HIGH); // turn the LED on (HIGH is the voltage level) + delay(1000); // wait for a second + digitalWrite(led, LOW); // turn the LED off by making the voltage LOW + delay(1000); // wait for a second +} diff --git a/examples/BlinkNetworkRPi/Makefile b/examples/BlinkNetworkRPi/Makefile new file mode 100644 index 0000000..499afd0 --- /dev/null +++ b/examples/BlinkNetworkRPi/Makefile @@ -0,0 +1,44 @@ +# Arduino Make file. Refer to https://github.com/sudar/Arduino-Makefile + +# Tested and working with a linuxspi programmer on a remote Raspberry Pi +# Refer to https://github.com/kcuzner/avrdude for linuxspi. +# Should work with ISP as well if you replace $(AVRDUDE_ARD_OPTS) with +# $(AVRDUDE_ISP_OPTS) in the net_set_fuses rule. + +# Alternate core from https://code.google.com/p/arduino-tiny +ALTERNATE_CORE = tiny +BOARD_TAG = attiny85at8 + +# Avrdude config path on the remote Raspberry Pi +AVRDUDE_CONF=/usr/local/etc/avrdude.conf + +# Skip the monitor port existance check since it's not on our machine. +FORCE_MONITOR_PORT=(defined) +MONITOR_PORT=/dev/spidev0.0 + +include ../../Arduino.mk + + +# Additional rules to use a remote Raspberry Pi programmer + +HOST = root@alarmpi +SSH_AVRDUDE = ssh $(HOST) /usr/local/bin/avrdude + +CAT_HEX = cat $(TARGET_HEX) +AVRDUDE_UPLOAD_PIPE = -U flash:w:-:i + +.PHONY: net_upload net_set_fuses + +net_upload: $(TARGET_HEX) verify_size + $(CAT_HEX) | $(SSH_AVRDUDE) $(AVRDUDE_COM_OPTS) $(AVRDUDE_ARD_OPTS) \ + $(AVRDUDE_UPLOAD_PIPE) + +net_set_fuses: +ifneq ($(strip $(AVRDUDE_ISP_FUSES_PRE)),) + $(SSH_AVRDUDE) $(AVRDUDE_COM_OPTS) $(AVRDUDE_ARD_OPTS) -e \ + $(AVRDUDE_ISP_FUSES_PRE) +endif +ifneq ($(strip $(AVRDUDE_ISP_FUSES_POST)),) + $(SSH_AVRDUDE) $(AVRDUDE_COM_OPTS) $(AVRDUDE_ARD_OPTS) \ + $(AVRDUDE_ISP_FUSES_POST) +endif diff --git a/tests/script/runtests.sh b/tests/script/runtests.sh index f45fa3f..1c54836 100755 --- a/tests/script/runtests.sh +++ b/tests/script/runtests.sh @@ -7,7 +7,7 @@ failures=() # These examples cannot be tested easily at the moment as they require # alternate cores. The MakefileExample doesn't actually contain any source code # to compile. -NON_TESTABLE_EXAMPLES=(ATtinyBlink MakefileExample TinySoftWareSerial BlinkTeensy) +NON_TESTABLE_EXAMPLES=(ATtinyBlink MakefileExample TinySoftWareSerial BlinkTeensy BlinkNetworkRPi) for dir in $TESTS_DIR/*/ do