有一块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 $@
如果你有使用Eclipse写程序的话, Eclipse有一个AVR的插件 可以帮你自动生成Makefile 也可以调用avrdude下载程序
是啊,但感觉还是命令行方便啊,我现在只需要make compile 和sudo make flash两个命令,节省了很多资源.