有一块ATmega128开发板,自从用了ubuntu后就开始吃灰了。其实linux进行avr单片机开发还是很方便的,就跟嵌入式一样,只是将编译器由arm-linux-gcc改为avr-gcc.
主要参考: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 $@
上一篇:AVR mkii 被atmel studio 升级后无法用在AVRDUDESS的解决方法
下一篇:linux 下 avr开发环境的搭建
推荐阅读最新更新时间:2024-11-04 07:41