打印
[STM32F1]

STM32批处理GCC编译生成BIN

[复制链接]
3146|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
tbh1129|  楼主 | 2015-9-16 13:16 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在keil工程下,设置了批处理编译生成了BIN文件,下载后可以成功,但必须安装keil,要不会提醒序列号,求大师解决,脱离keil平台,完全在DOS环境下编译的解决方案,或者可以不安装keil,解决以上问题,万分感谢。
沙发
zchong| | 2015-9-16 13:26 | 只看该作者
需要makefile配合了,还有自己写链接脚本
网上搜一下gcc开发的例子吧,应该可以找到模板的

使用特权

评论回复
板凳
styleno1| | 2015-9-16 14:21 | 只看该作者
GCC ARM Embedded,想必可以满足你的需求

使用特权

评论回复
地板
i55| | 2015-9-16 15:32 | 只看该作者
GCC_BIN = 
PROJECT = cmsis_rtos_demo_thread
OBJECTS = ./mbed-rtos/rtx/rt_Semaphore.o ./mbed-rtos/rtx/rt_Event.o ./mbed-rtos/rtx/rt_List.o ./mbed-rtos/rtx/rt_Mutex.o ./mbed-rtos/rtx/HAL_CM.o ./mbed-rtos/rtx/rt_Task.o ./mbed-rtos/rtx/rt_CMSIS.o ./mbed-rtos/rtx/rt_System.o ./mbed-rtos/rtx/rt_Time.o ./mbed-rtos/rtx/rt_MemBox.o ./mbed-rtos/rtx/rt_Robin.o ./mbed-rtos/rtx/RTX_Conf_CM.o ./mbed-rtos/rtx/rt_Mailbox.o ./main.o ./mbed-rtos/rtos/Thread.o ./mbed-rtos/rtos/Semaphore.o ./mbed-rtos/rtos/Mutex.o ./mbed-rtos/rtos/RtosTimer.o
SYS_OBJECTS =
INCLUDE_PATHS = -I. -I./mbed-rtos -I./mbed-rtos/rtos -I./mbed-rtos/rtx -I./mbed
LIBRARY_PATHS =
LIBRARIES =
LINKER_SCRIPT = None

###############################################################################
AS      = $(GCC_BIN)arm-none-eabi-as
CC      = $(GCC_BIN)arm-none-eabi-gcc
CPP     = $(GCC_BIN)arm-none-eabi-g++
LD      = $(GCC_BIN)arm-none-eabi-gcc
OBJCOPY = $(GCC_BIN)arm-none-eabi-objcopy
OBJDUMP = $(GCC_BIN)arm-none-eabi-objdump
SIZE         = $(GCC_BIN)arm-none-eabi-size

CPU = -mcpu=cortex-m3 -mthumb
CC_FLAGS = $(CPU) -c -g -fno-common -fmessage-length=0 -Wall -fno-exceptions -ffunction-sections -fdata-sections -fomit-frame-pointer
CC_FLAGS += -MMD -MP
CC_SYMBOLS = -DTARGET_NUCLEO_F103RB -DTARGET_M3 -DTARGET_CORTEX_M -DTARGET_STM -DTARGET_STM32F1 -DTARGET_STM32F103RB -DTOOLCHAIN_GCC_ARM -DTOOLCHAIN_GCC -D__CORTEX_M3 -DARM_MATH_CM3 -DMBED_BUILD_TIMESTAMP=1431315978.78 -D__MBED__=1 -DTARGET_FF_ARDUINO -DTARGET_FF_MORPHO

LD_FLAGS = $(CPU) -Wl,--gc-sections --specs=nano.specs -u _printf_float -u _scanf_float -Wl,--wrap,main
LD_FLAGS += -Wl,-Map=$(PROJECT).map,--cref
LD_SYS_LIBS = -lstdc++ -lsupc++ -lm -lc -lgcc -lnosys

ifeq ($(DEBUG), 1)
  CC_FLAGS += -DDEBUG -O0
else
  CC_FLAGS += -DNDEBUG -Os
endif

all: $(PROJECT).bin $(PROJECT).hex

clean:
        rm -f $(PROJECT).bin $(PROJECT).elf $(PROJECT).hex $(PROJECT).map $(PROJECT).lst $(OBJECTS) $(DEPS)

.s.o:
        $(AS) $(CPU) -o $[url=home.php?mod=space&uid=72445]@[/url] $<

.c.o:
        $(CC)  $(CC_FLAGS) $(CC_SYMBOLS) -std=gnu99   $(INCLUDE_PATHS) -o $@ $<

.cpp.o:
        $(CPP) $(CC_FLAGS) $(CC_SYMBOLS) -std=gnu++98 -fno-rtti $(INCLUDE_PATHS) -o $@ $<


$(PROJECT).elf: $(OBJECTS) $(SYS_OBJECTS)
        $(LD) $(LD_FLAGS) -T$(LINKER_SCRIPT) $(LIBRARY_PATHS) -o $@ $^ $(LIBRARIES) $(LD_SYS_LIBS) $(LIBRARIES) $(LD_SYS_LIBS)
        $(SIZE) $@

$(PROJECT).bin: $(PROJECT).elf
        @$(OBJCOPY) -O binary $< $@

$(PROJECT).hex: $(PROJECT).elf
        @$(OBJCOPY) -O ihex $< $@

$(PROJECT).lst: $(PROJECT).elf
        @$(OBJDUMP) -Sdh $< > $@

lst: $(PROJECT).lst

size:
        $(SIZE) $(PROJECT).elf

DEPS = $(OBJECTS:.o=.d) $(SYS_OBJECTS:.o=.d)

使用特权

评论回复
5
tbh1129|  楼主 | 2015-9-16 18:18 | 只看该作者
感谢各位大侠。

使用特权

评论回复
6
豆腐块| | 2015-9-18 20:06 | 只看该作者

GCC ARM Embedded,没用过,好用吗

使用特权

评论回复
7
freewhz| | 2015-11-3 08:31 | 只看该作者
在Linux下用gcc的例子有很多,在git网站上可搜到

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

5

主题

12

帖子

0

粉丝