Software Toolchain for Windows
RealTerm (viewing UART)
Ateml Studio
Arduino Core Library
You may also need drivers:
UART
Software Toolchain for (Debian based) Linux
Following tools are usually present in most Linux systems out of the box.
If you receive permission denied kind of errors, you may need to issue the following.
$ sudo apt-get update $ sudo apt-get install flex byacc bison gcc build-essentialThese tools are necessary for AVR-based micro-controller programming.
$ sudo apt-get install gcc-avr gdb-avr binutils-avr avr-libc avrdude $ sudo apt-get install arduino-core arduinoRealterm is not available for Linux systems. Cutecom is very similar to Realterm.
$ sudo apt-get install cutecomUsually FTDI drivers are installed in the Linux kernel by default. Otherwise, try the following.
$ sudo apt-get install libusb libusb-devTry the following test program to see if the software toolchain is properly setup in you Linux system.
#includeNow, issue the following commands to compile and upload the code in the microcontroller.#include int main() { DDRB |= _BV(PB7); while(1) { PORTB ^= _BV(PB7); /* blink 4 times a second */ _delay_ms(250); } }
$ avr-gcc -DF_CPU=16000000 -Os -g -mmcu=atmega1280 -Wall blinking.c -o blinking.o $ avr-objcopy -j .text -j .data ihex blinking.o blinking.hex $ avrdude -p atmega1280 -c arduino -P /dev/ttyUSB0 -b 57600 -U flash:w:blinking.hex:iIt is a good idea to automate the process using a makefile. Here is the makefile that can be used to compile and upload the code in the microcontroller.
PRG = blinking OBJ = blinking.o PROGRAMMER = arduino PORT = /dev/ttyUSB0 MCU_TARGET = atmega1280 AVRDUDE_TARGET = atmega1280 OPTIMIZE = -Os DEFS = LIBS = BAUDRATE = 57600 HZ = 16000000 # You should not have to change anything below here. CC = avr-gcc # Override is only needed by avr-lib build system. override CFLAGS = -g -DF_CPU=$(HZ) -Wall $(OPTIMIZE) -mmcu=$(MCU_TARGET) $(DEFS) override LDFLAGS = -Wl,-Map,$(PRG).map OBJCOPY = avr-objcopy OBJDUMP = avr-objdump all: $(PRG).elf lst text #eeprom $(PRG).elf: $(OBJ) $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $^ $(LIBS) clean: rm -rf *.o $(PRG).elf *.eps *.png *.pdf *.bak *.hex *.bin *.srec rm -rf *.lst *.map $(EXTRA_CLEAN_FILES) lst: $(PRG).lst %.lst: %.elf $(OBJDUMP) -h -S $< > $@ # Rules for building the .text rom images text: hex bin srec hex: $(PRG).hex bin: $(PRG).bin srec: $(PRG).srec %.hex: %.elf $(OBJCOPY) -j .text -j .data -O ihex $< $@ %.srec: %.elf $(OBJCOPY) -j .text -j .data -O srec $< $@ %.bin: %.elf $(OBJCOPY) -j .text -j .data -O binary $< $@ # Rules for building the .eeprom rom images eeprom: ehex ebin esrec ehex: $(PRG)_eeprom.hex #ebin: $(PRG)_eeprom.bin esrec: $(PRG)_eeprom.srec %_eeprom.hex: %.elf $(OBJCOPY) -j .eeprom --change-section-lma .eeprom=0 -O ihex $< $@ #%_eeprom.srec: %.elf # $(OBJCOPY) -j .eeprom --change-section-lma .eeprom=0 -O srec $< $@ %_eeprom.bin: %.elf $(OBJCOPY) -j .eeprom --change-section-lma .eeprom=0 -O binary $< $@ # command to program chip (invoked by running "make install") install: $(PRG).hex avrdude -p $(AVRDUDE_TARGET) -c $(PROGRAMMER) -P $(PORT) -b $(BAUDRATE) -v \ -U flash:w:$(PRG).hex fuse: avrdude -p $(AVRDUDE_TARGET) -c $(PROGRAMMER) -P $(PORT) -v \ -U lfuse:w:0xc6:m -U hfuse:w:0xd9:m ddd: gdbinit ddd --debugger "avr-gdb -x $(GDBINITFILE)" gdbserver: gdbinit simulavr --device $(MCU_TARGET) --gdbserver gdbinit: $(GDBINITFILE) $(GDBINITFILE): $(PRG).hex @echo "file $(PRG).elf" > $(GDBINITFILE) @echo "target remote localhost:1212" >> $(GDBINITFILE) @echo "load" >> $(GDBINITFILE) @echo "break main" >> $(GDBINITFILE) @echo @echo "Use 'avr-gdb -x $(GDBINITFILE)'"Now issue the following command to compile and upload the command using this makefile.
$ make && make installYou can download our complete makefile (adapted from here).
If you receive permission denied kind of errors, you may need to issue the following.
$ sudo chmod 666 /dev/ttyUSB0