====STM32F1xx LINUX==== ====Для разработки потребуются следующие инструменты:==== - arm-none-eabi (компиляторы, сборщик, дебаггер) https://launchpad.net/gcc-arm-embedded/+download - openocd (собственно посредник между железом и дебаггером) http://openocd.org/repos/; ===Далее используем следующий makefile (STM32F1xx)=== EXECUTABLE = $(notdir $(CURDIR)).elf EXECHEX = $(notdir $(CURDIR)).hex EXECBIN = $(notdir $(CURDIR)).bin EXECLIST = $(notdir $(CURDIR)).list #Tools TOOLROOT =/opt/gcc-arm-none/bin/arm-none-eabi CC = $(TOOLROOT)-gcc LD = $(TOOLROOT)-gcc AR = $(TOOLROOT)-ar AS = $(TOOLROOT)-as OC = $(TOOLROOT)-objcopy OD = $(TOOLROOT)-objdump SZ = $(TOOLROOT)-size #~Tools #processor specific, CHANGE for NEED PTYPE = STM32F10X_MD LDPATH = ./link LDSCRYPT = link.ld #processor specific CFLAGS = -mcpu=cortex-m3 -mthumb -Wall -Wextra -Wimplicit-function-declaration -finline-functions -g -MD CFLAGS +=-D$(PTYPE) CFLAGS +=-DUSE_FULL_ASSERT CFLAGS +=-DDEBUG -DTRACE -DOS_USE_TRACE_SEMIHOSTING_DEBUG -ggdb #debug #CFLAGS +=-DUSE_STDPERIPH_DRIVER #use std driver or not CFLAGS +=-DHSE_VALUE=8000000 AFLAGS += -ahls -mapcs-32 BINFLAGS = -Obinary HEXFLAGS = -Oihex ODFLAGS = -S LDFLAGS = -L$(LDPATH) -T$(LDPATH)/$(LDSCRYPT) -mthumb -mcpu=cortex-m3 LDFLAGS +=-nostartfiles -Wl,-Map,$(BINDIR)/$(notdir $(CURDIR)).map --specs=nano.specs #dir CMSIS =../00_CMSIS/cmsis STINC =../00_ST/inc/ STSRC =../00_ST/src/ # ========== can change src,obj,bin ========== SRCDIR = $(CMSIS) SRCDIR +=. ./init/src ./common/src ./cycle/src ./uscntr/src ./view/src SRCDIR +=./cmsis_boot ./cmsis_boot/startup OBJDIR =./obj BINDIR =./bin INCPATH =-I$(CMSIS) INCPATH +=-I./cmsis_boot -I./init/inc -I./ INCPATH +=-I./common/inc -I./cycle/inc -I./uscntr/inc -I./view/inc # ========== can change src,obj,bin ========== # ========== don`t change ========== SOURCES := $(foreach src,$(SRCDIR), $(wildcard $(src)/*.c)) INCLUDES := $(wildcard $(INCDIR)/*.h) OBJECTS := $(patsubst %.c,%.o,$(SOURCES)) DBJECTS := $(patsubst %.c,%.d,$(SOURCES)) # ========== don`t change ========== #~dir .PHONY: all clean all: $(SOURCES) $(OBJDIR) $(OBJECTS) $(BINDIR)/$(EXECUTABLE) $(BINDIR)/$(EXECBIN) $(BINDIR)/$(EXECHEX) $(BINDIR)/$(EXECLIST) $(OBJDIR):$(BINDIR) mkdir -p $(OBJDIR) $(BINDIR): # @echo 'Make bindir' mkdir -p $(BINDIR) $(BINDIR)/$(EXECLIST):$(BINDIR)/$(EXECUTABLE) $(OD) $(ODFLAGS) $< > $(BINDIR)/$(EXECLIST) $(BINDIR)/$(EXECHEX):$(BINDIR)/$(EXECUTABLE) $(OC) $(HEXFLAGS) $(BINDIR)/$(EXECUTABLE) $(BINDIR)/$(EXECHEX) $(BINDIR)/$(EXECBIN):$(BINDIR)/$(EXECUTABLE) $(OC) $(BINFLAGS) $(BINDIR)/$(EXECUTABLE) $(BINDIR)/$(EXECBIN) $(BINDIR)/$(EXECUTABLE):$(OBJECTS) # @echo 'Make execut' $(LD) $(LDFLAGS) $(LIBRARIES) $(OBJECTS) -o $@ # $@ name of the object file # $< name of cpp file %.o : %.c $(CC) -c $(CFLAGS) $(INCPATH) $< -o $@ %.o: %.s $(AS) $(AFLAGS) -c $< -o $@ clean: rm -f $(OBJECTS) -f $(DBJECTS) -f $(BINDIR)/$(EXECUTABLE) -f $(BINDIR)/$(EXECBIN) -f $(BINDIR)/$(EXECLIST) -f $(BINDIR)/$(EXECHEX) -f $(BINDIR)/*.map - TOOLROOT - указываем свой путь до arm-none-eabi; - SRCDIR - также свои сырцы, нужно указать; - INCPATH - пути до своих инклудов. - CMSIS - путь до стд библиотеки арм, - STINC - путь до стд библиотеки st, - STSRC - путь до стд библиотеки st, **(при использовании расскоментировать USE_STDPERIPH_DRIVER)** === Отладка === Если **make** прошла успешно, можно пользовать отладку файлом **flash_openocd.sh** состоящим из: #!/bin/bash openocd -f ./openocd.cfg ==openocd.cfg== source [find interface/stlink-v2.cfg] set WORKAREASIZE 0x4000 source [find target/stm32f1x.cfg] Далее цепляемся gdb на порт 3333 === Прошивка === #!/bin/bash openocd -f ./openocd.cfg -f ./openocdflash.cfg где **openocdflash.cfg** init reset init halt flash write_image erase name.hex verify_image name.hex reset shutdown === Среда разработки === Рекомендую Eclipse for C/C++; - Создаем проект Makefile project/ Empty Project, - кормим ему свои наработки в том числе makefile -