avr 的 Makefile

内核编译和嵌入式产品的设计与开发
回复
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙

avr 的 Makefile

#1

帖子 eexpress » 2013-03-08 23:16

代码: 全选

● cat Makefile 
CC=avr-gcc
MCU=atmega8
OUTPUT=a
CFLAGS=-Wall -Wextra -mmcu=$(MCU) -O1 -g
AVRDUDE=avrdude -p m8 -c usbasp
OBJCOPY=avr-objcopy -j .text -j .data -O ihex
OBJDUMP=avr-objdump
SIZE=avr-size
#------------------------------------------
allsrc := $(wildcard src/*.c)
allobj := $(patsubst src/%.c, obj/%.o,$(allsrc))

#目标:依赖;命令
compile :: $(allobj) link
all :: compile download monitor

obj/%.o :: src/%.c
	$(CC) $(CFLAGS) -c $< -o $@
#    隐含规则,不适合带路径的情况。
#    for i in src/*.c; do j=`basename $i`; j=obj/${j%%.c}.o; avr-gcc -c $i -o $j -mmcu=atmega8 -g -O1 -Wall; done;
#	$@ 扩展成当前规则的目的文件名, $< 扩展成依靠列表中的第 一个依靠文件,而 $^ 扩展成整个依靠的列表(除掉了里面所有重 复的文件名)。
#    .PHONY 假象目的,强制不检查时间,直接更新。
link:
	$(CC) $(CFLAGS) -o $(OUTPUT).out obj/*
	$(OBJDUMP) -dS $(OUTPUT).out >$(OUTPUT).asm
	$(OBJCOPY) $(OUTPUT).out $(OUTPUT).hex
	$(SIZE) $(OUTPUT).out -C --mcu=$(MCU)
#------------------------------------------
fuse8M:
	$(AVRDUDE) -U lfuse:w:0xe4:m
#------------------------------------------
download:
	$(AVRDUDE) -e -U flash:w:$(OUTPUT).hex
#------------------------------------------
monitor:
	stty -F /dev/ttyUSB0 9600 cs8 -parenb -cstopb
#    stty -F /dev/ttyUSB0 5:0:8bd:0:3:1c:7f:15:4:0:1:0:11:13:1a:0:12:f:17:16:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0
	cat /dev/ttyUSB0
#------------------------------------------
● 鸣学
回复