Hallo zusammen,
ich arbeite gerade mit mbeddr, ein Programm um C-Code für embedded systems automatisch generieren zu lassen.
Für ein Projekt arbeite ich auf Ubuntu 14.04, als virtuelle maschine. Ich probiere gerade ein simples blink Programm auf meinen Arduino Uno hochzuladen. Dafür führe ich einen makefile aus, der von mbeddr automatisch erstellt wird.
CC =avr-gcc
CFLAGS =-Os
OBJCOPY =avr-objcopy -O ihex -R .eeprom
ODIR =./bin
_OBJ_blinker =main.o
OBJ_blinker =$(patsubst %,$(ODIR)/%,$(_OBJ_blinker))
all: removeStuffFromLibraries clean blinker.hex
debug: all
.PHONY: removeStuffFromLibraries all clean
removeStuffFromLibraries:
$(ODIR)/%.o: %.c
mkdir -p $(ODIR)
$(CC) $(CFLAGS) -mmcu=atmega328 -DF_CPU=16000000UL -I/home/ubu/MPSProjects/mbeddr.arduino.support/lib -c -o $@ $<
blinker: $(OBJ_blinker)
$(CC) $(CFLAGS) -mmcu=atmega328 -o $@ $^ -L/home/ubu/MPSProjects/mbeddr.arduino.support/lib/out/atmega328 -lmbeddr -lm
clean:
rm -rf $(ODIR)
upload: blinker.hex
avrdude -v -v -c avr109 -b 57600 -P/dev/cu.usbmodem1411 -D -p atmega328 -P /dev/ttyACM0 -U flash:w:blinker.hex
blinker.hex : blinker
$(OBJCOPY) $< $@
Ein .o, .hex, und executable wurden erstellt. Es wird anscheinend alles richtig kompiliert. Probleme gibt es nur beim hochladen. Da der Arduino nach dem make nicht reagiert hat, habe ich den Befehl zum hochladen ausgeführt
avrdude -v -v -c avr109 -b 57600 -P/dev/cu.usbmodem1411 -D -p atmega328 -P /dev/ttyACM0 -U flash:w:blinker.hex
Wenn ich das mache, meckert der avrdude
ubu@ubuntu:~/MPSProjects/mbeddr.arduino-0.1.7/solutions/arduino.samples/source_gen/arduino/samples/Blinker$ avrdude -v -v -c avr109 -b 57600 -P/dev/cu.usbmodem1411 -D -p atmega328 -P /dev/ttyACM0 -U flash:w:blinker.hex
avrdude: Version 6.1, compiled on Nov 23 2014 at 21:15:32
Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
Copyright (c) 2007-2014 Joerg Wunsch
System wide configuration file is "/etc/avrdude.conf"
User configuration file is "/home/ubu/.avrduderc"
User configuration file does not exist or is not a regular file, skipping
Using Port : /dev/ttyACM0
Using Programmer : avr109
Overriding Baud Rate : 57600
AVR Part : ATmega328
Chip Erase delay : 9000 us
PAGEL : PD7
BS2 : PC2
RESET disposition : dedicated
RETRY pulse : SCK
serial program mode : yes
parallel program mode : yes
Timeout : 200
StabDelay : 100
CmdexeDelay : 25
SyncLoops : 32
ByteDelay : 0
PollIndex : 3
PollValue : 0x53
Memory Detail :
Block Poll Page Polled
Memory Type Mode Delay Size Indx Paged Size Size #Pages MinW MaxW ReadBack
----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
eeprom 65 20 4 0 no 1024 4 0 3600 3600 0xff 0xff
flash 65 6 128 0 yes 32768 128 256 4500 4500 0xff 0xff
lfuse 0 0 0 0 no 1 0 0 4500 4500 0x00 0x00
hfuse 0 0 0 0 no 1 0 0 4500 4500 0x00 0x00
efuse 0 0 0 0 no 1 0 0 4500 4500 0x00 0x00
lock 0 0 0 0 no 1 0 0 4500 4500 0x00 0x00
calibration 0 0 0 0 no 1 0 0 0 0 0x00 0x00
signature 0 0 0 0 no 3 0 0 0 0 0x00 0x00
Programmer Type : butterfly
Description : Atmel AppNote AVR109 Boot Loader
Connecting to programmer: .avrdude: ser_recv(): programmer is not responding
avrdude: butterfly_recv(): programmer is not responding
Fehlermeldung:
Connecting to programmer: .avrdude: ser_recv(): programmer is not responding
avrdude: butterfly_recv(): programmer is not responding
Die LEDs RX und L auf dem Arduino board fangen an zu leuchten. Dann gehen die LEDs aus und kurze Zeit später kommt die Fehlermeldung
Sieht vielleicht jemand einen Fehler? Ich mache das erste mal etwas mit den makefiles und habe auch zuvor so noch keine Programme auf den Arduino hochgeladen.
Am wenigsten kann ich mit dem "/dev/cu.usbmodem1411" anfangen.
Viele Grüße und Danke,
Robin