用Eclipse开源IDE+gcc编译器开始嵌入式编程

   最近有个项目,不能在Keil uVision4 MDK中开发,只能在linux下并使用命令行的GCC编译器,手动写makefile,对于习惯了IDE的开发者来说多少有些不适应,尤其是查找函数定义之类的不方便。于是成功的实现了使用Eclipse的IDE,并配合GCC编译器开发嵌入式应用程序。Eclipse和GCC环境的搭建先略过,查资料都好解决。先贴出makefile模版,因为没有使用Eclpise的CDT自动生成的makefile,所以这里的 makefile是必须的。GCC编译器用的sourcery codebench,这样能轻松获取GCC工具链,较方便。

#****************************************************************************
# Author information 
# Created on : 2013-12-26
#      Author: yangyongzhen
#****************************************************************************
#****************************************************************************
# Cross complie path
#****************************************************************************
GCC_PATH=c:\tools\arm2013.05
CROSS_COMPILE=$(GCC_PATH)\bin\arm-none-eabi-
CC     := $(CROSS_COMPILE)gcc
CXX    := $(CROSS_COMPILE)g++
AS   := $(CROSS_COMPILE)as
AR     := $(CROSS_COMPILE)ar 
LD     := $(CROSS_COMPILE)ld
RANLIB := $(CROSS_COMPILE)ranlib
OBJDUMP:= $(CROSS_COMPILE)objdump
OBJCOPY:= $(CROSS_COMPILE)objcopy
STRIP  := $(CROSS_COMPILE)strip
#****************************************************************************
# Include paths
#****************************************************************************
INCS := -I .\LIB_Includes\LIB_Include_A303
#****************************************************************************
# Libs
#****************************************************************************
LIB_C         := $(GCC_PATH)\arm-none-eabi\lib\libc.a
LIB_GCC       := $(GCC_PATH)\lib\gcc\arm-none-eabi\4.7.3\libgcc.a
LIB_A303      := 
LIBS          := $(LIB_C) $(LIB_GCC) $(LIB_A303)
#****************************************************************************
# Flags
#****************************************************************************
CFLAGS= -std=gnu99 -O0 -DNDEBUG -msoft-float -mlittle-endian -Wall -mno-unaligned-access -fno-zero-initialized-in-bss -D_POS_S80 -D_APPMANAGER
LDSCRIPT = mapp.ld
LDFLAGS =  -nostdlib -M -T $(LDSCRIPT) 
APPFLAG = PAX-S80-MAPP

STRIP_RELEASE :=NO
#****************************************************************************
# Targets of the build
#****************************************************************************
TARGET   := .\Output\A303_YJJC

all: prebuild $(TARGET).elf
#****************************************************************************
# Source files
#****************************************************************************
SRC_C=$(shell gfind . -name "*.c")
SRC_S=$(shell gfind . -name "*.s")
OBJ_C=$(patsubst %.c, %.o, $(SRC_C))
OBJ_S=$(patsubst %.s, %.o, $(SRC_S))

SRCS := $(SRC_C) $(SRC_C)
OBJS := $(OBJ_C) $(OBJ_S)

#****************************************************************************
# TARGET
#****************************************************************************
prebuild:
@echo Building app...
$(TARGET).elf : $(OBJS) $(LIBS)
@echo (LD) $@: $^
${LD} ${LDFLAGS} -o $@ $^ > $(TARGET).map
@echo Generating bin...
@elftobin $@ $(TARGET).bin $(APPFLAG)
@echo Generating hex...
@$(OBJCOPY) -O ihex $@ $(TARGET).hex
@echo Generating asm...
@$(OBJDUMP) -D -S $@ > $(TARGET).asm
@echo OK!
ifeq (YES, ${STRIP_RELEASE})
${STRIP} ${TARGET}.elf
endif
%.o : %.c
${CC} -c ${CFLAGS} ${INCS} -o $@ $<
%.o : %.s
$(AS) $(ASFLAG) -o $@ $<
clean:
@echo The following files:
rm  -f  $(TARGET) *.o
gfind . -name "*.[o]"  |xargs rm
@echo Removed!
#***************************************************************************
#makefile file end
#***************************************************************************
#***************************************************************************
#windows下的代码拷贝到linux下中文会乱码,以下为转码用
#***************************************************************************
DIRS := .\AH_Driver \
.\AH_Driver\AH_Card \
.\AH_Driver\AH_Card\CPU_Card \
.\AH_Driver\AH_Card\CPU_Card\INC_Lib \
.\AH_Driver\AH_Card\M1_Card \
.\AH_Driver\AH_Comm \
.\AH_Driver\AH_Display \
.\AH_Driver\AH_Display\Out_LIB \
.\AH_Driver\AH_Display\Out_LIB\INC_Lib \
.\AH_Driver\AH_Oth \
.\APP_Driver \
.\APP_Task\Task_Main \
.\APP_Task\Task_AppSel \
.\HW_Driver \
.\HW_Driver\INC_Lib \
.\NC_FileSys \
.\NC_FileSys\INC_Lib \
.\OS_Kernel \
.\PRJ_Cfg \
.\SysDebug \
.\LIBS\LIB_A303
fileencoding:
@ for dir in $(DIRS); do \
        enconv -L zh_CN -x cp936 $$dir/*; done


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

特立独行的猫a

您的鼓励是我的创作动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值