Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

Следующая версия
Предыдущая версия
dev:cortex_rus:tools [2015/11/16 15:17]
alexeyb создано
dev:cortex_rus:tools [2015/11/17 09:19] (текущий)
alexeyb
Строка 1: Строка 1:
-Для разработки потребуются следующие инструменты:​+====STM32F1xx LINUX==== 
 +====Для разработки потребуются следующие инструменты:​====
   - arm-none-eabi (компиляторы,​ сборщик,​ дебаггер) https://​launchpad.net/​gcc-arm-embedded/​+download   - arm-none-eabi (компиляторы,​ сборщик,​ дебаггер) https://​launchpad.net/​gcc-arm-embedded/​+download
   - openocd (собственно посредник между железом и дебаггером) http://​openocd.org/​repos/;​   - openocd (собственно посредник между железом и дебаггером) http://​openocd.org/​repos/;​
 +
 +===Далее используем следующий makefile (STM32F1xx)===
 +<​file>​
 +
 +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
 +</​file>​
 +
 +   - TOOLROOT - указываем свой путь до arm-none-eabi;​
 +   - SRCDIR ​  - также свои сырцы, нужно указать;​
 +   - INCPATH ​ - пути до своих инклудов.
 +   - CMSIS    - путь до стд библиотеки арм,
 +   - STINC    - путь до стд библиотеки st,
 +   - STSRC    - путь до стд библиотеки st, **(при использовании расскоментировать USE_STDPERIPH_DRIVER)** ​
 +
 +
 +=== Отладка ===
 +Если **make** прошла успешно,​ можно пользовать отладку файлом **flash_openocd.sh**
 +состоящим из:
 +<​code>​
 +#!/bin/bash
 +openocd -f ./​openocd.cfg
 +</​code>​
 +==openocd.cfg==
 +<​code>​
 +source [find interface/​stlink-v2.cfg]
 +set WORKAREASIZE 0x4000
 +source [find target/​stm32f1x.cfg]
 +</​code>​
 +Далее цепляемся gdb на порт 3333
 +
 +=== Прошивка ===
 +<​code>​
 +#!/bin/bash
 +openocd -f ./​openocd.cfg -f ./​openocdflash.cfg
 +</​code>​
 +где **openocdflash.cfg**
 +<​code>​
 +init
 +reset init
 +halt 
 +flash write_image erase name.hex
 +verify_image name.hex
 +reset
 +shutdown
 +</​code>​
 +
 +=== Среда разработки ===
 +Рекомендую Eclipse for C/C++;
 +   - Создаем проект Makefile project/ Empty Project,
 +   - кормим ему свои наработки в том числе makefile
 +   ​- ​
dev/cortex_rus/tools.1447676228.txt.gz · Последние изменения: 2015/11/16 15:17 (внешнее изменение)
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0