From ebe6e2a1ce7842a4ea3a152eb5b8545d0e376b83 Mon Sep 17 00:00:00 2001 From: Christian Pointner Date: Sat, 19 May 2012 17:10:30 +0000 Subject: updated teensy tools from spreadspace (rename to avr) git-svn-id: https://svn.spreadspace.org/mur.sat@437 7de4ea59-55d0-425e-a1af-a3118ea81d4c --- software/avr.README | 56 +++++++++++++ software/avr.include.mk | 179 ++++++++++++++++++++++++++++++++++++++++++ software/hhd70dongle/Makefile | 12 +-- software/hhd70dongle/led.c | 67 ++++++++++------ software/hhd70dongle/led.h | 28 +++---- software/teensy.include.mk | 109 ------------------------- 6 files changed, 290 insertions(+), 161 deletions(-) create mode 100644 software/avr.README create mode 100644 software/avr.include.mk delete mode 100644 software/teensy.include.mk diff --git a/software/avr.README b/software/avr.README new file mode 100644 index 0000000..fb0f678 --- /dev/null +++ b/software/avr.README @@ -0,0 +1,56 @@ +Dependencies +============ + +make +avr-libc +binutils-avr +gcc-avr +avrdude +dfu-programmer +teensy_loader + + +udev example rules +================== + +DFU programmable Boards: +------------------------ + +SUBSYSTEM=="usb", ACTION=="add", ATTR{idVendor}=="03eb", ATTR{idProduct}=="*", GROUP="plugdev", MODE:="0660" + +Teensy Boards: +-------------- + +SUBSYSTEMS=="usb", ATTRS{idVendor}=="16c0", ATTRS{idProduct}=="04[789]?", MODE:="0666" +KERNEL=="ttyACM*", ATTRS{idVendor}=="16c0", ATTRS{idProduct}=="04[789]?", SYMLINK+="ttyUSB00%n", MODE:="0666", ENV{ID_MM_DEVICE_IGNORE}="1" + +Arduino Boards: +--------------- + +SUBSYSTEMS=="usb", KERNEL=="ttyUSB*", ATTRS{serial}=="A6008hTA", SYMLINK+="arduino", OWNER="equinox", GROUP="equinox" + +Replace "A6008hTA" with the serial of your arduino board. You can obtain it +with the following command: + +udevadm info --name /dev/ttyUSB0 --attribute-walk | grep ATTRs{serial} + +(replace ttyUSB0 with the actual device your arduino uses) + + +Build +===== + +Getting the source via subversion: +---------------------------------- + +svn co https://svn.spreadspace.org/avr/trunk avr +cd avr + + +build and flash blink example +----------------------------- + +# cd blink +# make +# make program +# make run diff --git a/software/avr.include.mk b/software/avr.include.mk new file mode 100644 index 0000000..3c1496d --- /dev/null +++ b/software/avr.include.mk @@ -0,0 +1,179 @@ +## +## spreadspace avr utils +## +## +## Copyright (C) 2012 Christian Pointner +## +## This file is part of spreadspace avr utils. +## +## spreadspace avr utils 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 3 of the License, or +## any later version. +## +## spreadspace avr utils 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 spreadspace avr utils. If not, see . +## + +ifeq ($(BOARD_TYPE),teensy1) +MCU := at90usb162 +F_CPU := 16000000 +PROG := teensy +endif +ifeq ($(BOARD_TYPE),teensy2) +MCU := atmega32u4 +F_CPU := 16000000 +PROG := teensy +endif +ifeq ($(BOARD_TYPE),teensypp1) +MCU := at90usb646 +F_CPU := 16000000 +PROG := teensy +endif +ifeq ($(BOARD_TYPE),teensypp2) +MCU := at90usb1286 +F_CPU := 16000000 +PROG := teensy +endif +ifeq ($(BOARD_TYPE),hhd70dongle) +MCU := atmega32u4 +F_CPU := 16000000 +PROG := DFU +endif +ifeq ($(BOARD_TYPE),arduino2009) +MCU := atmega168 +F_CPU := 16000000 +PROG := avrdude +UPLOAD_RATE := 19200 +PROG_TYPE := stk500v1 +AVRDUDE_PORT := /dev/ttyUSB0 +endif + +CC = avr-gcc +OBJCOPY = avr-objcopy + +DFU = dfu-programmer +teensy = teensy_loader_cli +avrdude = avrdude + +## Options common to compile, link and assembly rules +COMMON = -mmcu=$(MCU) + +## Compile options common for all C compilation units. +CFLAGS = $(COMMON) +CFLAGS += -O2 +CFLAGS += -funsigned-char +CFLAGS += -funsigned-bitfields +CFLAGS += -ffunction-sections +CFLAGS += -fpack-struct +CFLAGS += -fshort-enums +CFLAGS += -Wall +CFLAGS += -Wstrict-prototypes +CFLAGS += -DF_CPU=$(F_CPU)UL +CFLAGS += -D__BOARD_$(BOARD_TYPE)__ + +## Linker flags +LDFLAGS = $(COMMON) +LDFLAGS += + +SRC := $(OBJ:%.o=%.c) + +.PHONY: clean program erase flash reset run + +ELFFILE := $(NAME).elf +HEXFILE := $(NAME).hex + +all: $(HEXFILE) + +%.d: %.c + @set -e; rm -f $@; \ + $(CC) -MM $(CFLAGS) $< > $@.$$$$; \ + sed 's,\($*\)\.o[ :]*,\1.o $@ : ,g' < $@.$$$$ > $@; \ + rm -f $@.$$$$; echo '(re)building $@' + +ifneq ($(MAKECMDGOALS),distclean) +-include $(SRC:%.c=%.d) +endif + +%.o: %.c + $(CC) $(CFLAGS) -c $< + +$(ELFFILE): $(OBJ) + $(CC) $(OBJ) -o $@ $(LDFLAGS) + +$(HEXFILE): $(ELFFILE) + $(OBJCOPY) -O ihex -R .eeprom -R .fuse -R .lock -R .signature $< $@ + +clean: + rm -f *.o + rm -f *.d + rm -f *.d.* + rm -f $(ELFFILE) + rm -f $(HEXFILE) + + +### DFU-Programmer +define DFU/erase + $(DFU) $(MCU) erase || true +endef + +define DFU/flash + $(DFU) $(MCU) flash $1 +endef + +define DFU/reset + $(DFU) $(MCU) reset +endef + +define DFU/run + $(DFU) $(MCU) start +endef + +### teensy-loader +define teensy/erase +endef + +define teensy/flash + $(teensy) -mmcu=$(MCU) -w -v $1 +endef + +define teensy/reset +endef + +define teensy/run +endef + +### avrdude +define avrdude/erase + $(avrdude) -V -F -p $(MCU) -P $(AVRDUDE_PORT) -c $(PROG_TYPE) -b $(UPLOAD_RATE) -e +endef + +define avrdude/flash + $(avrdude) -V -F -p $(MCU) -P $(AVRDUDE_PORT) -c $(PROG_TYPE) -b $(UPLOAD_RATE) -D -U flash:w:$1 +endef + +define avrdude/reset +endef + +define avrdude/run +endef + +### Program Targets +program: erase flash run + +erase: + $(call $(PROG)/$@,) + +flash: $(HEXFILE) + $(call $(PROG)/$@,$(HEXFILE)) + +reset: + $(call $(PROG)/$@,) + +run: + $(call $(PROG)/$@,) diff --git a/software/hhd70dongle/Makefile b/software/hhd70dongle/Makefile index c12e4c6..87ffb8e 100644 --- a/software/hhd70dongle/Makefile +++ b/software/hhd70dongle/Makefile @@ -22,15 +22,7 @@ NAME := hhd70dongle OBJ := hhd70dongle.o led.o spi.o usb_rawhid.o c1101lib.o util.o -BOARD_TYPE := teensy2 +BOARD_TYPE := hhd70dongle -include ../teensy.include.mk +include ../avr.include.mk CFLAGS += -std=gnu99 - -DFU_PRO_TARGET := atmega32u4 - -.phony: flash -flash: $(NAME).hex - sudo dfu-programmer $(DFU_PRO_TARGET) erase - sudo dfu-programmer $(DFU_PRO_TARGET) flash $< - sudo dfu-programmer $(DFU_PRO_TARGET) start diff --git a/software/hhd70dongle/led.c b/software/hhd70dongle/led.c index d24af16..ced853f 100644 --- a/software/hhd70dongle/led.c +++ b/software/hhd70dongle/led.c @@ -1,55 +1,76 @@ /* + * spreadspace avr utils * - * mur.sat * - * Somewhen in the year 2012, mur.at will have a nano satellite launched - * into a low earth orbit (310 km above the surface of our planet). The - * satellite itself is a TubeSat personal satellite kit, developed and - * launched by interorbital systems. mur.sat is a joint venture of mur.at, - * ESC im Labor and realraum. + * Copyright (C) 2012 Christian Pointner + * + * This file is part of spreadspace avr utils. * - * Please visit the project hompage at sat.mur.at for further information. - * - * - * Copyright (C) 2011 Christian Pointner - * - * This file is part of mur.sat. - * - * mur.sat is free software: you can redistribute it and/or modify + * spreadspace avr utils 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 3 of the License, or * any later version. * - * mur.sat is distributed in the hope that it will be useful, + * spreadspace avr utils 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 mur.sat. If not, see . - * + * along with spreadspace avr utils. If not, see . */ -#include "avr/io.h" +#include "avr/io.h" #include "led.h" +#define LED_DIR 1 +#if defined(__BOARD_teensy1__) || defined(__BOARD_teensy1pp__) +#define LED_DIR 0 +#endif + +#if defined(__BOARD_teensy2__) || defined(__BOARD_teensy2pp__) || defined(__BOARD_teensy2__) || defined(__BOARD_teensy2pp__) +#define LED_PORT PORTD +#define LED_DDR DDRD +#define LED_PINNUM 6 +#endif + +#if defined(__BOARD_hhd70dongle__) +#define LED_PORT PORTE +#define LED_DDR DDRE +#define LED_PINNUM 6 +#endif + +#if defined(__BOARD_arduino2009__) +#define LED_PORT PORTB +#define LED_DDR DDRB +#define LED_PINNUM 5 +#endif + void led_init(void) { - PORTE = 0x00; - DDRE = 1< + * + * This file is part of spreadspace avr utils. * - * Please visit the project hompage at sat.mur.at for further information. - * - * - * Copyright (C) 2011 Christian Pointner - * - * This file is part of mur.sat. - * - * mur.sat is free software: you can redistribute it and/or modify + * spreadspace avr utils 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 3 of the License, or * any later version. * - * mur.sat is distributed in the hope that it will be useful, + * spreadspace avr utils 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 mur.sat. If not, see . - * + * along with spreadspace avr utils. If not, see . */ -#ifndef MURSAT_led_h_INCLUDED -#define MURSAT_led_h_INCLUDED +#ifndef SPREADSPACE_led_h_INCLUDED +#define SPREADSPACE_led_h_INCLUDED void led_init(void); void led_on(void); diff --git a/software/teensy.include.mk b/software/teensy.include.mk deleted file mode 100644 index a6c5dc9..0000000 --- a/software/teensy.include.mk +++ /dev/null @@ -1,109 +0,0 @@ -## -## spreadspace teensy utils -## -## -## Copyright (C) 2011 Christian Pointner -## -## This file is part of spreadspace teensy utils. -## -## spreadspace teensy utils 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 3 of the License, or -## any later version. -## -## spreadspace teensy utils 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 spreadspace teensy utils. If not, see . -## - -ifeq ($(BOARD_TYPE),teensy1) -MCU := at90usb162 -F_CPU := 16000000 -endif -ifeq ($(BOARD_TYPE),teensy2) -MCU := atmega32u4 -F_CPU := 16000000 -endif -ifeq ($(BOARD_TYPE),teensypp1) -MCU := at90usb646 -F_CPU := 16000000 -endif -ifeq ($(BOARD_TYPE),teensypp2) -MCU := at90usb1286 -F_CPU := 16000000 -endif -FORMAT := ihex - -CC = avr-gcc -OBJCOPY = avr-objcopy -DFU = dfu-programmer - -## Options common to compile, link and assembly rules -COMMON = -mmcu=$(MCU) - -## Compile options common for all C compilation units. -CFLAGS = $(COMMON) -CFLAGS += -O2 -CFLAGS += -funsigned-char -CFLAGS += -funsigned-bitfields -CFLAGS += -ffunction-sections -CFLAGS += -fpack-struct -CFLAGS += -fshort-enums -CFLAGS += -Wall -CFLAGS += -Wstrict-prototypes -CFLAGS += -DF_CPU=$(F_CPU)UL - -## Linker flags -LDFLAGS = $(COMMON) -LDFLAGS += - -SRC := $(OBJ:%.o=%.c) - -.PHONY: clean erase program reset run - -ELFFILE := $(NAME).elf -HEXFILE := $(NAME).hex - -all: $(HEXFILE) - -%.d: %.c - @set -e; rm -f $@; \ - $(CC) -MM $(CFLAGS) $< > $@.$$$$; \ - sed 's,\($*\)\.o[ :]*,\1.o $@ : ,g' < $@.$$$$ > $@; \ - rm -f $@.$$$$; echo '(re)building $@' - -ifneq ($(MAKECMDGOALS),distclean) --include $(SRC:%.c=%.d) -endif - -%.o: %.c - $(CC) $(CFLAGS) -c $< - -$(ELFFILE): $(OBJ) - $(CC) $(OBJ) -o $@ $(LDFLAGS) - -$(HEXFILE): $(ELFFILE) - $(OBJCOPY) -O $(FORMAT) -R .eeprom -R .fuse -R .lock -R .signature $< $@ - -clean: - rm -f *.o - rm -f *.d - rm -f *.d.* - rm -f $(ELFFILE) - rm -f $(HEXFILE) - -erase: - $(DFU) $(MCU) erase || true - -program: $(HEXFILE) erase - $(DFU) $(MCU) flash $< - -reset: - $(DFU) $(MCU) reset - -run: - $(DFU) $(MCU) start -- cgit v1.2.3