# CORTEX-A8 PERI DRIVER CODE
# VERSION 1.0
# ATHUOR lapset (klapset@gmail.com)
# MODIFY DATE
# 2012.2.22 by lapset ,to change the format of Makefile
#NOTE :please fix the following info to adpat to your environment
CROSS_COMPILE=arm-none-eabi-
LDPATH="C:\Program Files\yagarto\lib\gcc\arm-none-eabi\4.6.2\include"
OUTPATH=/mnt/hgfs/share
NAME=led
COMMONPATH = "D:\eclipse_projects\LED\common\include"
#=============================================================================#
#DO NOT TO CHANG THE CODE AFTER THIS !!!
export CFLAGS LD CC STRIP OBJCOPY OBJDUMP COMMONPATH
CFLAGS += -g -O0 -fno-strict-aliasing -mabi=apcs-gnu -mfpu=vfpv3 -mfloat-abi=softfp -fno-builtin -nostdinc -isystem $(LDPATH) -I $(COMMONPATH)
LD = $(CROSS_COMPILE)ld
CC = $(CROSS_COMPILE)gcc-4.6.2
STRIP = $(CROSS_COMPILE)strip
OBJCOPY = $(CROSS_COMPILE)objcopy
OBJDUMP = $(CROSS_COMPILE)objdump
OBJS := start/start.o common/src/printf.o common/src/uart.o common/src/_udivsi3.o common/src/_umodsi3.o $(NAME).o
SUBDIRS := common/src/ start/
all:$(SUBDIRS) $(OBJS)
$(LD) $(OBJS) -Tmap.lds -o $(NAME).elf
$(OBJCOPY) -O binary $(NAME).elf $(NAME).bin
$(OBJDUMP) -D $(NAME).elf > $(NAME).dis
# cp ./$(NAME).bin $(OUTPATH)
$(SUBDIRS):
$(MAKE) -C $@
%.o: %.S
$(CC) $(CFLAGS) -c -o $@ $< #
%.o: %.c
$(CC) $(CFLAGS) -c -o $@ $<
clean:
rm -rf $(OBJS) *.elf *.bin *.dis
/*笔记一*/
/*
Makefile分析:
/******************************************************************
* all:led.s
* arm-none-eabi-gcc-4.6.2 -O0 -g -c -o led.o led.s
* arm-none-eabi-ld led.o -Ttext 0x34000 -o led.elf
* arm-none-eabi-objcopy -O binary -S led.elf led.bin
* arm-none-eabi-objdump -D led.elf > led.dis
********************************************************************/
all:led.s
冒号:依赖文件
arm-none-eabi-gcc-4.6.2 -O0 -g -c -o led.o led.s
arm-none-eabi-gcc-4.6.2---> 编译器
-O0 ---> 优化级别 为0 级
-g ---> 产生调试信息
-c --> 只编译,不链接
-o --> 生成目标文件
led.0 --> 指定输出文件名
led.s --> 文件依赖,(这里是汇编文件.s)
arm-none-eabi-ld led.o -Ttext 0x34000 -o led.elf
arm-none-eabi-ld --> 链接器
led.o --> 源文件
-Ttext --> 指定代码的存放位置
-0x34000 --> 位置
-o --> 生成目标文件
led.elf --> 生成可执行文件 (Linux的可执行文件格式)
arm-none-eabi-objcopy -O binary -S led.elf led.bin
arm-none-eabi-objcopy --> 格式转换器
-O --> 输出格式
binary --> 二进制格式
-S --> 去除符号
led.elf --> 源文件
led.bin --> 目标文件
arm-none-eabi-objdump -D led.elf > led.dis
arm-none-eabi-objdump --> 反汇编器
/*******************************************
all:
%.o: %.S
$(CC) $(CFLAGS) -c -o $@ $<
%.o: %.c
$(CC) $(CFLAGS) -c -o $@ $<
*********************************************/
Makefile隐式规则
$@ = *.0
$< = *.S
*/