建立linux下avr单片机开发环境

有一块ATmega128开发板,自从用了ubuntu后就开始吃灰了。其实linux进行avr单片机开发还是很方便的,就跟嵌入式一样,只是将编译器由arm-linux-gcc改为avr-gcc.

转载请注明原文地址:

http://blog.csdn.net/canyue102/article/details/9391781

主要参考:apt-blog.net/developing_avr_under_linux

环境:ubuntu13.04

一、安装avrdude


sudo apt-get install avrdude

这样USBasp就被linux所支持了。

二、安装编译器:

sudo apt-get install gcc-avr binutils-avr avr-libc

这样就可以了,开始linux下avr之旅吧

编译程序命令:


avr-gcc -mmcu=atmega128 -Wall -Os -o led.o led.c

-mmcu即avr型号。

转化为hex


avr-objcopy -j .text -j .data -O ihex led.o led.hex

.data主要用于存放数据;

三、 烧写程序:

sudo avrdude -p m128 -c usbasp -e -U flash:w:led.hex

m128即我的atmega128

linux下程序开发比较好的思想是写Makefile

放个例子:

引自:omegav.no/wiki/index.php/AVR_on_linux#Makefile_example


###################################
# Makefile, for AVR Programming

PROJECT =
# Target name:
TARGET =

# Target type
MCU = atmega128
PROGRAMMER = usbasp
F_CPU = 16000000UL

SRC =
OBJ = $(SRC:.c=.o)

# Compiler / Linker flags:
CFLAGS = -mmcu=$(MCU) -Wall -Os -std=gnu99 -D F_CPU=$(F_CPU) -funsigned-char -funsigned-bitfields -
fpack-struct -fshort-enums
LDFLAGS = -mmcu=$(MCU) -Wl,-Map=$(TARGET).map

###################################
# Makerules:

.PHONY: compile flash clean

compile:$(TARGET).hex $(TARGET).eep $(TARGET).lss

flash: compile
 avrdude -c $(PROGRAMMER) -P usb -p $(MCU) -U flash:w:$(TARGET).hex
 # sleep 2
 # avrdude -c $(PROGRAMMER) -P usb -p $(MCU) -U eeprom:w:$(TARGET).eep

clean:
 rm -f $(OBJ) $(TARGET).*

###################################
# Psudorules:

%.eep: %.hex
 avr-objcopy -j .eeprom --set-section-flags=.eeprom="alloc,load" --change-section-lma .eeprom=0
--no-change-warnings -O ihex $< $@

%.hex: %.elf
 avr-objcopy -O ihex -R .eeprom -R .fuse -R .lock -R .signature $< $@

%.lss: %.elf
 avr-objdump -h -S $< > $@

%.elf: $(OBJ)
 avr-gcc $^ $(LDFLAGS) -o $@

%.o : %.c
 avr-gcc $(CFLAGS) -c $< -o $@

《建立linux下avr单片机开发环境》上有2条评论

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

Time limit is exhausted. Please reload the CAPTCHA.

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据