Это старая версия документа.



Warning: "continue" targeting switch is equivalent to "break". Did you mean to use "continue 2"? in /home/users/p/prom-auto/domains/prom-auto.ru/wiki/inc/parser/handler.php on line 1458

Warning: Declaration of syntax_plugin_tablecalc::handle($match, $state, $pos, &$handler) should be compatible with DokuWiki_Syntax_Plugin::handle($match, $state, $pos, Doku_Handler $handler) in /home/users/p/prom-auto/domains/prom-auto.ru/wiki/lib/plugins/tablecalc/syntax.php on line 41

Warning: Declaration of syntax_plugin_tablecalc::render($mode, &$renderer, $data) should be compatible with DokuWiki_Syntax_Plugin::render($format, Doku_Renderer $renderer, $data) in /home/users/p/prom-auto/domains/prom-auto.ru/wiki/lib/plugins/tablecalc/syntax.php on line 72

Warning: Declaration of syntax_plugin_offline::handle($match, $state, $pos, &$handler) should be compatible with DokuWiki_Syntax_Plugin::handle($match, $state, $pos, Doku_Handler $handler) in /home/users/p/prom-auto/domains/prom-auto.ru/wiki/lib/plugins/offline/syntax.php on line 60

Warning: Declaration of syntax_plugin_offline::render($format, &$renderer, $data) should be compatible with DokuWiki_Syntax_Plugin::render($format, Doku_Renderer $renderer, $data) in /home/users/p/prom-auto/domains/prom-auto.ru/wiki/lib/plugins/offline/syntax.php on line 67

Warning: preg_match(): Compilation failed: invalid range in character class at offset 3416 in /home/users/p/prom-auto/domains/prom-auto.ru/wiki/inc/parser/lexer.php on line 118
A PCRE internal error occured. This might be caused by a faulty plugin

====STM32F1xx LINUX==== ====Для разработки потребуются следующие инструменты:==== - arm-none-eabi (компиляторы, сборщик, дебаггер) https://launchpad.net/gcc-arm-embedded/+download - 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 - пути до своих инклудов. === Отладка === Если <p>make</p> прошла успешно, можно пользовать отладку файлом **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.1447677992.txt.gz · Последние изменения: 2015/11/16 15:46 — alexeyb
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0