|
|
  |
STM32-F4, Отладка из Eclipse |
|
|
|
Feb 16 2012, 17:32
|
Гуру
     
Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322

|
Цитата(klen @ Feb 16 2012, 19:14)  если присутствие STLink-SWD не навязано искуственно Не навязано, просто есть плата (stm32f4-discovery) где swd работает. Цитата(klen @ Feb 16 2012, 19:14)  то за 300 рублей Недорого. Искать по слову j-link? Цитата(klen @ Feb 16 2012, 19:14)  успешно решает все задачи по разработке софта для F4. Плохо, что придётся что-то покупать/подключать, а discovery - включил и работает.
|
|
|
|
|
Feb 16 2012, 19:02
|
Гуру
     
Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322

|
Цитата(AHTOXA @ Feb 16 2012, 19:36)  Вот здесь пишут, что openocd 0.6.0 из GIT-репозитория поддерживает ST-Link/ST-Link-v2. Если это действительно так, то всё должно отлаживаться без проблем. (Осталось попросить klen-а собрать версию 0.6.0 для линукса  ) Я так понял что сделать просто (к компу подключил - Keil запустил - и оно работает) не получится. Да ещё и линуксом запахло (не к ночи будь помянут). Жаль.
|
|
|
|
|
Feb 16 2012, 19:23
|

фанат дивана
     
Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684

|
Цитата(_Артём_ @ Feb 17 2012, 01:02)  Я так понял что сделать просто (к компу подключил - Keil запустил - и оно работает) не получится. При чём тут кейл? Вроде про Eclipse речь шла? Цитата Да ещё и линуксом запахло (не к ночи будь помянут). Не, линукс - это мне надо  А под винду openocd 0.6.0 klen уже собрал. Цитата Жаль. Ну, если так сразу руки опускаете, то наверное действительно не стоит и пробовать...
--------------------
Если бы я знал, что такое электричество...
|
|
|
|
|
Feb 16 2012, 19:49
|
Гуру
     
Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322

|
Цитата(AHTOXA @ Feb 16 2012, 22:23)  При чём тут кейл? Вроде про Eclipse речь шла? Неправильно сформулировал. Речь про Eclipse. Хотел сказать, что так просто начать работать как в Keil, с eclipse не получится. Цитата(AHTOXA @ Feb 16 2012, 22:23)  Не, линукс - это мне надо  Хорошо, а то я уж испугался. Цитата(AHTOXA @ Feb 16 2012, 22:23)  А под винду openocd 0.6.0 klen уже собрал. А где её взять? Цитата(AHTOXA @ Feb 16 2012, 22:23)  Ну, если так сразу руки опускаете, то наверное действительно не стоит и пробовать... Не опускаю. Ищу где меньше времени-сил уйдёт.
|
|
|
|
|
Feb 16 2012, 20:20
|

Нечётный пользователь.
     
Группа: Свой
Сообщений: 2 033
Регистрация: 26-05-05
Из: Бровари, Україна
Пользователь №: 5 417

|
Цитата(AHTOXA @ Feb 16 2012, 21:23)  Не, линукс - это мне надо  Так оно не gcc, без танцев с приседаниями обходится. По крайней мере в линуксе :-) Код git clone git://openocd.git.sourceforge.net/gitroot/openocd/openocd cd openocd ./bootstrap ./configure --enable-maintainer-mode --disable-doxygen-html --enable-ft2232_libftdi --enable-jlink --enable-usb_balster_libftdi --enable-parport make sudo make install У меня так работает с ft2232 и с jlink. usb-blaster не пробовал до сих пор, parport для на всякий случай. Ну теперь ещё --enable-stlink добавить. У меня его нет, так что не пробовал. enable-maintainer тянется издавна, какая-то из версий не хотлеа без этого собираться, так и осталось. По дороге может попросить доставить autotools всякие, но оно тоже всё без проблем. О, заодно git pull сделал сейчас. Кроме кучи изменений добавило Код create mode 100644 tcl/board/stm32ldiscovery.cfg create mode 100644 tcl/board/stm32vldiscovery.cfg create mode 100644 tcl/interface/stlink-v1.cfg rename tcl/interface/{stlink-usb.cfg => stlink-v2.cfg} (100%) create mode 100644 tcl/target/stm32f0x_stlink.cfg tcl/board/stm32f4discovery.cfg подпатчилось чем-то.
--------------------
Ну, я пошёл… Если что – звоните…
|
|
|
|
|
Feb 17 2012, 04:57
|

фанат дивана
     
Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684

|
Цитата(_Артём_ @ Feb 17 2012, 01:49)  А где её взять? Вот здесь. Надо только убедиться, что там включена поддержка Stlink. Цитата(_Артём_ @ Feb 17 2012, 01:49)  Не опускаю. Ищу где меньше времени-сил уйдёт. Ну вообще-то времени-сил меньше однозначно уйдёт с кейлом/IAR-ом  Зато Eclipse+GCC - гораздо более универсальная конструкция. Ну и подешевле. Цитата(ReAl @ Feb 17 2012, 02:20)  Так оно не gcc, без танцев с приседаниями обходится. По крайней мере в линуксе :-) Так просто?! Спасибо, надо будет попробовать  ---- Посмотрел, в виндовой сборке от klen-а - нет, похоже не поддерживается там St-link.
--------------------
Если бы я знал, что такое электричество...
|
|
|
|
|
Feb 17 2012, 08:39
|
Участник

Группа: Участник
Сообщений: 15
Регистрация: 16-01-06
Пользователь №: 13 218

|
Можно скачать триальный Atollic TrueSTUDIO. Саму програму можно не инсталировать, а открыть как архив и нем есть ST-LINK_gdbserver. Этот сервер можно использовать в Eclipse.
|
|
|
|
|
Feb 17 2012, 11:08
|
Гуру
     
Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322

|
Цитата(AHTOXA @ Feb 17 2012, 06:57)  Посмотрел, в виндовой сборке от klen-а - нет, похоже не поддерживается там St-link. Опять облом...ну ничего Цитата(AHTOXA @ Feb 17 2012, 06:57)  Зато Eclipse+GCC - гораздо более универсальная конструкция. Ну и подешевле. А сколько времени надо потратить? Будет ли дешевле...ведь время = деньги. Цитата(Kornelij @ Feb 17 2012, 10:39)  Можно скачать триальный Atollic TrueSTUDIO. Саму програму можно не инсталировать, а открыть как архив и нем есть ST-LINK_gdbserver. Этот сервер можно использовать в Eclipse. Несколько странный способ инталяции, но что ещё остаётся.
|
|
|
|
|
Feb 17 2012, 15:55
|

фанат дивана
     
Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684

|
Цитата(_Артём_ @ Feb 17 2012, 17:08)  Опять облом...ну ничего Это временный облом, попросим klen-а, он соберёт свежак (надеюсь)  Цитата(_Артём_ @ Feb 17 2012, 17:08)  А сколько времени надо потратить? Будет ли дешевле...ведь время = деньги. Я именно поэтому поместил аргумент "подешевле" не на первое место. Для меня важнее универсальность. Один раз освоив эклипсу - я пользуюсь ей для всего зоопарка используемых камней. Ну и GCC - почти для всего зоопарка (за исключением fujitsu 16LX, для них нет GCC). Что касается количества времени на освоение - я бы не сказал, что это сильно долго. Если плотно занчяться, то за месяц - другой, думаю, вполне реально начать вполне уверенно использовать.
--------------------
Если бы я знал, что такое электричество...
|
|
|
|
|
Feb 17 2012, 19:38
|
Гуру
     
Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322

|
Цитата(AHTOXA @ Feb 17 2012, 17:55)  Это временный облом, попросим klen-а, он соберёт свежак (надеюсь)  Жизнь показывает что "временное" - штука очень постоянная. Update. Не тот случай: пока писал "облом" закончился. Цитата(AHTOXA @ Feb 17 2012, 17:55)  Что касается количества времени на освоение - я бы не сказал, что это сильно долго. Если плотно занчяться, то за месяц - другой, думаю, вполне реально начать вполне уверенно использовать. Будем посмотреть. Ещё вопрос. Распаковал из архива 1-EventFlag для Cortex-m3 scmRtos v4. Вот build log: Цитата Copyright © 2011 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Size after build: arm-none-eabi-size -A FLASH_RUN/project.elf FLASH_RUN/project.elf : section size addr .text 81020 134217728 .ARM.exidx 544 134298748 .rodata 5304 134299296 .data 1788 536870912 .bss 2160 536872704 ._usrstack 256 536874864 .comment 42 0 .debug_aranges 1488 0 .debug_pubnames 3174 0 .debug_info 19421 0 .debug_abbrev 4614 0 .debug_line 10486 0 .debug_frame 12152 0 .debug_str 6473 0 .debug_loc 15458 0 .debug_pubtypes 1494 0 .debug_ranges 1600 0 .ARM.attributes 37 0 Total 167511
-------- end -------- Версия 3.10 для того же порта компилилась нормально (работоспособность на проверял). Компилировал Yagarto. И ешё вопросик. Скриншот:
Выглядит не очень. Как исправить?
|
|
|
|
|
Feb 17 2012, 20:29
|

фанат дивана
     
Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684

|
Цитата(_Артём_ @ Feb 18 2012, 01:38)  Распаковал из архива 1-EventFlag для Cortex-m3 scmRtos v4. Вот build log: Там же прилагаются файлы проекта для Eclipse. Импортируйте их, и скомандуйте build. Или просто наберите make в папке где расположен makefile. Цитата(_Артём_ @ Feb 18 2012, 01:38)  Выглядит не очень. Как исправить? Надо добавить в проект папку с scmRTOS, тогда Eclipse найдёт что такое OS_PROCESS.
--------------------
Если бы я знал, что такое электричество...
|
|
|
|
|
Feb 17 2012, 22:04
|
Гуру
     
Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322

|
Цитата(AHTOXA @ Feb 17 2012, 22:29)  Там же прилагаются файлы проекта для Eclipse. Импортируйте их, и скомандуйте build. Или просто наберите make в папке где расположен makefile. Файлы видел, но как их открыть в Eclipse, смешно сказать, не знаю. Делал так: Import\Existing project into workspace\и далее выбор папки. Как правильно? Цитата(AHTOXA @ Feb 17 2012, 22:29)  Надо добавить в проект папку с scmRTOS, тогда Eclipse найдёт что такое OS_PROCESS. Да как бы есть:
Цитата(AHTOXA @ Feb 17 2012, 22:29)  Там же прилагаются файлы проекта для Eclipse. Импортируйте их, и скомандуйте build. Или просто наберите make в папке где расположен makefile.. Build делал (результат в пред. посте). Сделал make:
Для v310 всё копмилится через cmd\make. Тут нет. Может файл какой забыл? Цитата(_Артём_ @ Feb 17 2012, 23:45)  Для v310 всё компилится через cmd\make. Тут нет. Может файл какой забыл? Точно в примерах, в отличие от v3.10 некоторые папки пусты. Но от этого не намного легче: Цитата **** Build of configuration Default for project 1-EventFlag ****
make all COMSPEC detected C:\WINDOWS\system32\cmd.exe SHELL is C:/WINDOWS/system32/cmd.exe -------- begin, mode: FLASH_RUN -------- arm-none-eabi-gcc (GCC) 4.6.0 Copyright © 2011 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
---- Compiling C : timebase.c to FLASH_RUN/timebase.o arm-none-eabi-gcc -c -mthumb -gdwarf-2 -O2 -mcpu=cortex-m3 -mthumb-interwork -DSTM32F10X_MD -DHSE_VALUE=8000000UL -DSYSCLK_FREQ_72MHz=72000000 -DUSE_STDPERIPH_DRIVER -DUSE_MINI_STM32 -DSTM32_SD_USE_DMA -DSTARTUP_DELAY -DMOD_MTHOMAS_STMLIB -DUSE_FULL_ASSERT -DVECT_TAB_RAM -DFLASH_RUN -DSTM32F10x_128k_20k -I./Libraries/STM32F10x_StdPeriph_Driver/inc -I./Libraries/CMSIS/Core/CM3 -I./Libraries -I. -mlong-calls -ffunction-sections -fdata-sections -fpromote-loop-indices -Wall -Wextra -Wimplicit -Wcast-align -Wpointer-arith -Wredundant-decls -Wshadow -Wcast-qual -Wcast-align -Wa,-adhlns=FLASH_RUN/timebase.lst -MD -MP -MF FLASH_RUN/dep/timebase.o.d -Wnested-externs -std=gnu99 timebase.c -o FLASH_RUN/timebase.o cc1.exe: error: unrecognized command line option '-fpromote-loop-indices' make: *** [FLASH_RUN/timebase.o] Ошибка 1
|
|
|
|
|
Feb 17 2012, 22:18
|

фанат дивана
     
Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684

|
Цитата(_Артём_ @ Feb 18 2012, 03:45)  Делал так: Import\Existing project into workspace\и далее выбор папки. Правильно, так и надо. Цитата Да как бы есть: У вас папки с scmRTOS пустые. Нужно туда накидать собственно ось (branches/pre-v400/Common - в Common, branches/pre-v400/Ports/CortexM3/GCC - в CortexM3, и branches/pre-v400/Extensions - в Extensions). Цитата(_Артём_ @ Feb 18 2012, 04:04)  Но от этого не намного легче: Код **** Build of configuration Default for project 1-EventFlag ****
make all COMSPEC detected C:\WINDOWS\system32\cmd.exe SHELL is C:/WINDOWS/system32/cmd.exe -------- begin, mode: FLASH_RUN -------- arm-none-eabi-gcc (GCC) 4.6.0 Copyright © 2011 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
---- Compiling C : timebase.c to FLASH_RUN/timebase.o У вас какой-то левый makefile откуда-то подцепился. А при выполнении make из папки проекта - работает правильный makefile.
--------------------
Если бы я знал, что такое электричество...
|
|
|
|
|
Feb 17 2012, 22:39
|
Гуру
     
Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322

|
Цитата(AHTOXA @ Feb 18 2012, 00:18)  Правильно, так и надо.
У вас папки с scmRTOS пустые. Нужно туда накидать собственно ось (branches/pre-v400/Common - в Common, branches/pre-v400/Ports/CortexM3/GCC - в CortexM3, и branches/pre-v400/Extensions - в Extensions). Да, помогло. Выглядит нормально. Цитата(AHTOXA @ Feb 18 2012, 00:18)  У вас какой-то левый makefile откуда-то подцепился. А при выполнении make из папки проекта - работает правильный makefile. Подцепился он из файла scmrtos-pre-v400.tar.gz\...\Samples\CortexM3\GCC\1-EventFlag\ Цитата(AHTOXA @ Feb 18 2012, 00:18)  А при выполнении make из папки проекта - работает правильный makefile. Вам то хорошо...у вас работает. Может у меня makefile не тот? Или тулчайн не той системы? Из папки тоже ошибки. CODE #+--------------------------------------------------------------------------- # # Copyright © 2010 Anton Gusev aka AHTOXA (HTTP://AHTOXA.NET) # # File: makefile # # Contents: makefile to build arm Cortex-M3 software with gcc # #----------------------------------------------------------------------------
############# program name TARGET = 1-EventFlag
# program version VER_MAJOR = 0 VER_MINOR = 1
TOOL = arm-none-eabi- # TOOL = arm-kgp-eabi-
# compile options MCU = cortex-m3 OPTIMIZE = -O2 USE_LTO = NO
# Select family # STM32F10X_LD : STM32 Low density devices # STM32F10X_LD_VL : STM32 Low density Value Line devices # STM32F10X_MD : STM32 Medium density devices # STM32F10X_MD_VL : STM32 Medium density Value Line devices # STM32F10X_HD : STM32 High density devices # STM32F10X_HD_VL : STM32 XL-density devices # STM32F10X_CL : STM32 Connectivity line devices # STM32F10X_XL : STM32 XL-density devices CHIP = STM32F10X_MD
#defines DEFS = -D$(CHIP) DEFS += -DVER_MAJOR=$(VER_MAJOR) DEFS += -DVER_MINOR=$(VER_MINOR)
########################################################### # common part for all my cortex-m3 projects ###########################################################
BASE = . CC = $(TOOL)gcc CXX = $(TOOL)g++ LD = $(TOOL)g++ AS = $(CC) -x assembler-with-cpp OBJCOPY = $(TOOL)objcopy OBJDUMP = $(TOOL)objdump SIZE = $(TOOL)size -d FLASHER = openocd RM = rm -f CP = cp MD = mkdir
# dirs SRCDIR = $(BASE)/src OBJDIR = $(BASE)/obj EXEDIR = $(BASE)/exe LSTDIR = $(BASE)/lst PRJDIR = $(BASE)/prj BAKDIR = $(BASE)/bak
#files HEX = $(EXEDIR)/$(TARGET).hex BIN = $(EXEDIR)/$(TARGET).bin ELF = $(EXEDIR)/$(TARGET).elf MAP = $(LSTDIR)/$(TARGET).map LSS = $(LSTDIR)/$(TARGET).lss OK = $(EXEDIR)/$(TARGET).ok
# linker script (chip dependent) LD_SCRIPT = $(PRJDIR)/$(CHIP).ld
# scmRTOS dir SCMDIR = ../scmRTOS COMMON = ../SamplesCommon # source directories (all *.c, *.cpp and *.S files included) DIRS := $(SRCDIR) DIRS += $(COMMON) DIRS += $(SCMDIR)/Common $(SCMDIR)/CortexM3 DIRS += $(SCMDIR)/Extensions/Profiler
# includes INCS := $(patsubst %, -I "%", $(DIRS))
# individual source files SRCS :=
#calc obj files list OBJS := $(SRCS) OBJS += $(wildcard $(addsuffix /*.cpp, $(DIRS))) OBJS += $(wildcard $(addsuffix /*.c, $(DIRS))) OBJS += $(wildcard $(addsuffix /*.S, $(DIRS))) OBJS := $(notdir $(OBJS)) OBJS := $(OBJS:.cpp=.o) OBJS := $(OBJS:.c=.o) OBJS := $(OBJS:.S=.o) OBJS := $(patsubst %, $(OBJDIR)/%, $(OBJS))
#files to archive ARCFILES = \ $(SRCDIR) \ $(PRJDIR) \ $(SCMDIR) \ $(BASE)/makefile \ $(BASE)/.cproject \ $(BASE)/.project
# flags FLAGS = -mcpu=$(MCU) -mthumb FLAGS += $(INCS) FLAGS += -MD FLAGS += $(DEFS) FLAGS += -Wa,-adhlns=$(addprefix $(LSTDIR)/, $(notdir $(addsuffix .lst, $(basename $<))))
AFLAGS = $(FLAGS)
CFLAGS = $(FLAGS) CFLAGS += $(OPTIMIZE) CFLAGS += -std=gnu99 CFLAGS += -g CFLAGS += -ffunction-sections -fdata-sections CFLAGS += -Wall -Wextra CFLAGS += -Wimplicit -Wcast-align -Wpointer-arith -Wredundant-decls CFLAGS += -Wshadow -Wcast-qual -Wcast-align -Wnested-externs -pedantic
CXXFLAGS = $(FLAGS) CXXFLAGS += $(OPTIMIZE) CXXFLAGS += -g CXXFLAGS += -fno-exceptions -fno-rtti CXXFLAGS += -ffunction-sections -fdata-sections CXXFLAGS += -fno-threadsafe-statics CXXFLAGS += -funsigned-bitfields -fshort-enums CXXFLAGS += -Wall -Wextra CXXFLAGS += -Winline CXXFLAGS += -Wpointer-arith -Wredundant-decls CXXFLAGS += -Wshadow -Wcast-qual -Wcast-align -pedantic
LD_FLAGS = -mcpu=$(MCU) LD_FLAGS += -mthumb LD_FLAGS += -nostartfiles LD_FLAGS += -Wl,-Map="$(MAP)",--cref LD_FLAGS += -Wl,--gc-sections LD_FLAGS += -T$(LD_SCRIPT)
ifeq ($(USE_LTO),YES) CFLAGS += -flto CXXFLAGS += -flto LD_FLAGS += -flto $(OPTIMIZE) endif
#openocd command-line
# debug level (d0..d3) oocd_params = -d0 # interface and board/target settings (using the OOCD target-library here) # oocd_params += -c "fast enable" oocd_params += -f interface/arm-usb-ocd.cfg oocd_params += -f board/stm32f10x_128k_eval.cfg oocd_params += -c init -c targets oocd_params_program = $(oocd_params) # commands to prepare flash-write oocd_params_program += -c "halt" # flash-write and -verify oocd_params_program += -c "flash write_image erase $(ELF)" oocd_params_program += -c "verify_image $(ELF)" # reset target oocd_params_program += -c "reset run" # terminate OOCD after programming oocd_params_program += -c shutdown
oocd_params_reset = $(oocd_params) oocd_params_reset += -c "reset run" oocd_params_reset += -c shutdown
.SILENT :
.PHONY: all start dirs build clean program reset archive
############# targets
all : start dirs $(ELF) $(BIN) $(LSS) $(OK)
build: clean all
start: @echo --- building $(TARGET)
$(LSS): $(ELF) makefile @echo --- making asm-lst... # @$(OBJDUMP) -dStC $(ELF) > $(LSS) @$(OBJDUMP) -dC $(ELF) > $(LSS)
$(OK): $(ELF) @$(SIZE) $(ELF) @echo "Errors: none"
$(ELF): $(OBJS) makefile @echo --- linking... $(LD) $(OBJS) $(LIBS) $(LD_FLAGS) -o "$(ELF)"
$(HEX): $(ELF) @echo --- make hex... @$(OBJCOPY) -O ihex $(ELF) $(HEX)
$(BIN): $(ELF) @echo --- make binary... @$(OBJCOPY) -O binary $(ELF) $(BIN)
program: $(ELF) @echo "Programming with OPENOCD" $(FLASHER) $(oocd_params_program)
reset: @echo Resetting device $(FLASHER) $(oocd_params_reset)
VPATH := $(DIRS)
$(OBJDIR)/%.o: %.cpp makefile @echo --- compiling $<... $(CXX) -c $(CXXFLAGS) -o $@ $<
$(OBJDIR)/%.o: %.c makefile @echo --- compiling $<... $(CC) -c $(CFLAGS) -o $@ $<
$(OBJDIR)/%.o: %.S makefile @echo --- assembling $<... $(AS) -c $(AFLAGS) -o $@ $<
dirs: $(OBJDIR) $(EXEDIR) $(LSTDIR) $(BAKDIR)
$(OBJDIR): -@$(MD) $(OBJDIR)
$(EXEDIR): -@$(MD) $(EXEDIR)
$(LSTDIR): -@$(MD) $(LSTDIR)
$(BAKDIR): -@$(MD) $(BAKDIR)
clean: -@$(RM) $(OBJDIR)/*.d 2>/dev/null -@$(RM) $(OBJDIR)/*.o 2>/dev/null -@$(RM) $(LSTDIR)/*.lst 2>/dev/null -@$(RM) $(ELF) -@$(RM) $(HEX) -@$(RM) $(LSS) -@$(RM) $(MAP)
archive: @echo --- archiving... 7z a $(BAKDIR)/$(TARGET)_`date +%Y-%m-%d,%H-%M-%S` $(ARCFILES) @echo --- done!
# dependencies ifeq (,$(findstring build,$(MAKECMDGOALS))) ifeq (,$(findstring clean,$(MAKECMDGOALS))) ifeq (,$(findstring dirs,$(MAKECMDGOALS))) -include $(wildcard $(OBJDIR)/*.d) endif endif endif
Сообщение отредактировал IgorKossak - Feb 18 2012, 13:07
Причина редактирования: [codebox]
|
|
|
|
|
Feb 18 2012, 05:13
|

фанат дивана
     
Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684

|
Цитата(_Артём_ @ Feb 18 2012, 04:39)  Да, помогло. Выглядит нормально. Отлично  Цитата(_Артём_ @ Feb 18 2012, 04:39)  Вам то хорошо...у вас работает. Может у меня makefile не тот? Или тулчайн не той системы? Да, это - правильный makefile. И у вас при запуске make вручную из каталога примера подцепляется именно он. А вот из эклипсы - какой-то другой. Давайте действовать по порядку. Сначала добъёмся того, чтобы пример собрался без Eclipse. (По идее, сейчас, когда у вас все файлы на месте, должно собраться без проблем.)
--------------------
Если бы я знал, что такое электричество...
|
|
|
|
|
Feb 18 2012, 13:16
|
Гуру
     
Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322

|
Цитата(AHTOXA @ Feb 18 2012, 07:13)  Да, это - правильный makefile. И у вас при запуске make вручную из каталога примера подцепляется именно он. А вот из эклипсы - какой-то другой. Давайте действовать по порядку. Сначала добъёмся того, чтобы пример собрался без Eclipse. (По идее, сейчас, когда у вас все файлы на месте, должно собраться без проблем.) Да, makefile - правильный. Начал сначала: удалил всё, скопировал заново, удалил все проекты из Eclipse. Непонятка с Eclipse: должна ли копироваться в workspace папка scmRTOS при открытии проекта 1-EventFlag? Собралось из cmd и из eclipse ( раньше почему-то запускался build другого проекта - почему?). Теперь дальше. Что нужно: как изменить проект, чтобы работало в lpc1114(C-M0) и после - в lpc13xx? Как поменять makefile и где брать lpcxxxx.ld (не писать же их с нуля?). Ну и совсем потом хорошо бы это всё на F4 запустить (кстати непонимаю, как порт для F1 может работать на F4? только не используя FPU?)
|
|
|
|
|
Feb 18 2012, 15:12
|

фанат дивана
     
Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684

|
Цитата(_Артём_ @ Feb 18 2012, 19:16)  Собралось из cmd и из eclipse ( раньше почему-то запускался build другого проекта - почему?). Аминь  Почему было неправильно - сложно сказать, да и неважно на самом деле. Теперь вы знаете, как делать правильно. Цитата Непонятка с Eclipse: должна ли копироваться в workspace папка scmRTOS при открытии проекта 1-EventFlag? Да. в каждом проекте есть папка scmRTOS, и все они ссылаются на папку scmRTOS, расположенную в корне примеров. Цитата как изменить проект, чтобы работало в lpc1114(C-M0) и после - в lpc13xx? Как поменять makefile и где брать lpcxxxx.ld (не писать же их с нуля?). 1. LPC1114_2xx.ld лежит в branches/pre-v400/Samples/Cortex-M0/GCC/common; 2. startup.c - там же; 3. Инициализацию (то, что находится в sysinit.cpp) - берёте из примеров каких-нибудь; 4. В makefile меняете строчку "CortexM3" на "Cortex-M0". По идее - всё, должно заработать. Скорее всего ещё что-то вылезет по мелочи конечно, но, думаю, разберёмся. Цитата Ну и совсем потом хорошо бы это всё на F4 запустить (кстати непонимаю, как порт для F1 может работать на F4? только не используя FPU?) Ко мне уже едет платка с F4, так что скоро, надеюсь, мы это проясним
--------------------
Если бы я знал, что такое электричество...
|
|
|
|
|
Feb 18 2012, 15:46
|
Гуру
     
Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322

|
Цитата(AHTOXA @ Feb 18 2012, 17:12)  Аминь  Точно. Нет бога кроме аллаха... Цитата(AHTOXA @ Feb 18 2012, 17:12)  Теперь вы знаете, как делать правильно. Ну шанс повторить успешно есть. Цитата(AHTOXA @ Feb 18 2012, 17:12)  3. Инициализацию (то, что находится в sysinit.cpp) - берёте из примеров каких-нибудь; Будем искать. А без неё можно, работать будет (только для начала, пока не найду)? Цитата(AHTOXA @ Feb 18 2012, 17:12)  4. В makefile меняете строчку "CortexM3" на "Cortex-M0". По идее - всё, должно заработать. Скорее всего ещё что-то вылезет по мелочи конечно, но, думаю, разберёмся.) Ну еще вот это Цитата CHIP = STM32F10X_MD заменить на что-то подходящее. И вроде - всё. Цитата(AHTOXA @ Feb 18 2012, 17:12)  Ко мне уже едет платка с F4, так что скоро, надеюсь, мы это проясним Хорошо. Правда на таком проце уже и что потяжелей-понавороченней летать будет.
|
|
|
|
|
Feb 18 2012, 18:02
|

фанат дивана
     
Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684

|
Цитата(_Артём_ @ Feb 18 2012, 21:46)  Будем искать. А без неё можно, работать будет (только для начала, пока не найду)? По идее должно, только медленно. Хотя не уверен - не имел дела с LPC-шными кортексами. Цитата(_Артём_ @ Feb 18 2012, 23:49)  Почему ORIGIN для TEXT не 0? Flash ведь начинается с 0. Тут не подскажу, не знаю. Ждите Сергея Борща.
--------------------
Если бы я знал, что такое электричество...
|
|
|
|
|
Feb 18 2012, 18:34
|
Гуру
     
Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322

|
Цитата(AHTOXA @ Feb 18 2012, 20:02)  По идее должно, только медленно. Хотя не уверен - не имел дела с LPC-шными кортексами. Попробую. Цитата(AHTOXA @ Feb 18 2012, 20:02)  Тут не подскажу, не знаю. Ждите Сергея Борща. Подожду. А почему а вас не используются файлы core_cmx.c? Только core_cmx.h. Там код не очень? Или лучше самому написать, чем от ARM взять готовое? Цитата(Сергей Борщ @ Feb 18 2012, 20:09)  Ой. Это рудимент моего проекта. 0-0x1000 у меня живет загрузчик. Сейчас исправлю. Понятно. Исправленный вариант с сайта scmrtos брать?
|
|
|
|
|
Feb 18 2012, 20:52
|

фанат дивана
     
Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684

|
Цитата(_Артём_ @ Feb 19 2012, 00:34)  А почему а вас не используются файлы core_cmx.c? Да просто не используются. Для примеров не нужны функции, которые там есть. Цитата(_Артём_ @ Feb 19 2012, 02:15)  Как папку SamplesCommon подключить к проекту правильно, а то некоторые файлы не видны? Вообще-то там должно быть всё подключено. Обновите просто. (И у вас опять пустые папки scmRTOS) А вручную это делается так: ПКМ на проекте - New-Folder - кнопка Advanced - Link to alternate location (Linked Folder) - Browse - выбираете папку - Finish. Это у нас получится папка с абсолютным путём. Чтобы сменить на относительный, надо ПКМ на папке, Properties - Resource - Location - Edit. И там исправить путь на относительный (../SamplesCommon).
--------------------
Если бы я знал, что такое электричество...
|
|
|
|
|
Feb 18 2012, 20:58
|
Гуру
     
Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322

|
Заменил в makefile Цитата # Select family # STM32F10X_LD : STM32 Low density devices # STM32F10X_LD_VL : STM32 Low density Value Line devices # STM32F10X_MD : STM32 Medium density devices # STM32F10X_MD_VL : STM32 Medium density Value Line devices # STM32F10X_HD : STM32 High density devices # STM32F10X_HD_VL : STM32 XL-density devices # STM32F10X_CL : STM32 Connectivity line devices # STM32F10X_XL : STM32 XL-density devices CHIP = STM32F10X_MD на Цитата # CHIP = LPC1114_2xx CHIP = LPC1114_3xx Пока так...
|
|
|
|
|
Feb 18 2012, 22:05
|
Гуру
     
Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322

|
Вродь все подменил, но Цитата --- building 1-EventFlag --- compiling ./src/main.cpp... In file included from ./src/main.cpp:49:0: ../scmRTOS/Common/scmRTOS.h:54:23: fatal error: OS_Target.h: No such file or directory compilation terminated. make: *** [obj/main.o] Ошибка 1 Что предполагалось в файле hardware.h? Update. Попробовал собрать с++-проект без scmrtos (такая же ошибка у меня появлялась вчера. вроде): Цитата In file included from ./src/main.cpp:2:0: ../nxp_cm0_lpc11/cmsis/LPC11xx.h:287:5: warning: ISO C++ prohibits anonymous structs [-pedantic] --- linking... c:/yagarto/bin/../lib/gcc/arm-none-eabi/4.6.0/../../../../arm-none-eabi/bin/ld.exe:./prj/LPC1114_2xx.ld:5: syntax error collect2: ld returned 1 exit status make: *** [exe/cpp_test.elf] Ошибка 1 Что-то не так с LPC1114_2xx.ld?
lpc11xx_proj.rar ( 208.96 килобайт )
Кол-во скачиваний: 86
v400_cm0_nxp.rar ( 101 килобайт )
Кол-во скачиваний: 78
|
|
|
|
|
Feb 18 2012, 23:55
|
Гуру
     
Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322

|
Цитата(AHTOXA @ Feb 18 2012, 22:52)  Да просто не используются. Для примеров не нужны функции, которые там есть. Ясно. Цитата(AHTOXA @ Feb 18 2012, 22:52)  Вообще-то там должно быть всё подключено. Обновите просто. (И у вас опять пустые папки scmRTOS) Может что-то попортил на ночь глядя. Цитата(AHTOXA @ Feb 18 2012, 22:52)  (И у вас опять пустые папки scmRTOS) Это просто рисунок тот же. Цитата(AHTOXA @ Feb 18 2012, 22:52)  А вручную это делается так: ПКМ на проекте - New-Folder - кнопка Advanced - Link to alternate location (Linked Folder) - Browse - выбираете папку - Finish. Это у нас получится папка с абсолютным путём. Чтобы сменить на относительный, надо ПКМ на папке, Properties - Resource - Location - Edit. И там исправить путь на относительный (../SamplesCommon). Спасибо. P.S. Попробовал открыть остальные примеры: Цитата Description Resource Path Location Type cannot open linker script file ./prj/STM32F10X_MD_VL.ld: No such file or directory 4-Debug C/C++ Problem cannot open linker script file ./prj/STM32F10X_MD.ld: No such file or directory 2-Message C/C++ Problem cannot open linker script file ./prj/STM32F10X_MD.ld: No such file or directory 3-Channel C/C++ Problem Понял: спать пора.
|
|
|
|
|
Feb 19 2012, 06:13
|

фанат дивана
     
Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684

|
Цитата(_Артём_ @ Feb 19 2012, 04:05)  Вродь все подменил, но Цитата ../scmRTOS/Common/scmRTOS.h:54:23: fatal error: OS_Target.h: No such file or directory Похоже, что не заменили в makefile "CortexM3" на "Cortex-M0". Цитата(_Артём_ @ Feb 19 2012, 04:05)  Цитата c:/yagarto/bin/../lib/gcc/arm-none-eabi/4.6.0/../../../../arm-none-eabi/bin/ld.exe:./prj/LPC1114_2xx.ld:5: syntax error Что-то не так с LPC1114_2xx.ld? Хм. Странно... Попробуйте изменить комментарий в строке 5 с // на /* */ Цитата(_Артём_ @ Feb 19 2012, 05:55)  P.S. Попробовал открыть остальные примеры: Цитата cannot open linker script file ./prj/STM32F10X_MD_VL.ld: No such file or directory 4-Debug C/C++ Problem Надо скопировать содержимое папки prj из первого примера в остальные.
--------------------
Если бы я знал, что такое электричество...
|
|
|
|
|
Feb 19 2012, 15:32
|
Гуру
     
Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322

|
Цитата(AHTOXA @ Feb 19 2012, 08:13)  Похоже, что не заменили в makefile "CortexM3" на "Cortex-M0". Типа того: Цитата DIRS += $(SCMDIR)/Common $(SCMDIR)/CortexM0 Цитата(AHTOXA @ Feb 19 2012, 08:13)  Что-то не так с LPC1114_2xx.ld? Хм. Странно... Попробуйте изменить комментарий в строке 5 с // на /* */ Могит быть. Заменил, помогло, но: Цитата c:/yagarto/bin/../lib/gcc/arm-none-eabi/4.6.0/../../../../arm-none-eabi/bin/ld.exe:./prj/LPC1114_2xx.ld:87: syntax error Цитата(AHTOXA @ Feb 19 2012, 08:13)  Надо скопировать содержимое папки prj из первого примера в остальные. Я пребывал в уверенности, что они туда уже положены.
|
|
|
|
|
Feb 19 2012, 19:07
|

фанат дивана
     
Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684

|
Цитата(_Артём_ @ Feb 19 2012, 21:32)  Типа того: Цитата DIRS += $(SCMDIR)/Common $(SCMDIR)/CortexM0 Да, только не "CortexM0", а "Cortex-M0". Цитата Могит быть. Заменил, помогло, но: Теперь в строке 87 - там скобка лишняя. Цитата Я пребывал в уверенности, что они туда уже положены. Если для получения примеров воспользоваться svn, то потом при помощи приложеннго батника всё делается сразу - и ось распихивается по папкам, и содержимое папки prj копируется из первого проекта в остальные. Но вам всё равно придётся заменять это содержимое под свой процессор.
--------------------
Если бы я знал, что такое электричество...
|
|
|
|
|
Feb 19 2012, 20:42
|
Гуру
     
Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322

|
Цитата(AHTOXA @ Feb 19 2012, 21:07)  Да, только не "CortexM0", а "Cortex-M0". Почему с "-", папка ведь называется CortexM0? Или так решено для cortex папки называть? Цитата(AHTOXA @ Feb 19 2012, 21:07)  Теперь в строке 87 - там скобка лишняя. Такая же скобка на стр. 90(это смайлик наверное?, только линкер юмора не понял): Цитата PROVIDE ( _estack = .) ); Ещё выдало: Цитата ./prj/LPC1114_3xx.ld:147: undefined symbol `_bstack' referenced in expression Цитата(AHTOXA @ Feb 19 2012, 21:07)  Если для получения примеров воспользоваться svn, то потом при помощи приложеннго батника всё делается сразу - и ось распихивается по папкам, и содержимое папки prj копируется из первого проекта в остальные. Удобно. Работает сразу или нужно что-то ставить (WinXP)?
|
|
|
|
|
Feb 19 2012, 22:57
|
Гуру
     
Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322

|
Идём дальше. Заменил в makefile: Цитата LD_SCRIPT = $(PRJDIR)/STM32F10X_MD_VL.ld и в STM32F10X_MD_VL.ld Цитата RAM (xrw) : ORIGIN = 0x10000000, LENGTH = 4K FLASH (rx) : ORIGIN = 0x00000000, LENGTH = 32K Запустил build: Цитата ../SamplesCommon/lpc11xx.h:464:6: warning: ISO C99 doesn't support unnamed structs/unions [-pedantic] ..... text data bss dec hex filename 1432 0 1672 3104 c20 ./exe/1-EventFlag.elf Errors: none Зашил: похоже что как-то работает. Но появились ещё вопросы. 1) Не работает Systick: наверное потому что закоментил строки в sysinit.cpp: Код LPC_SYSCON->SYSPLLCTRL = 0 //| ( (PLL_MUL - 1) << LPC_MSEL) //| ( PLL_DIV << LPC_PSEL) ; Чему равны PLL_DIV и PLL_MUL? 2) Где нынче считается правильным настраивать прерывание OS::SystemTimer_ISR? В какой-то древней версии scmRTOS_vxx.ru.pdf вроде видел функцию для инициализации таймера, потом она пропала (в v3.10 AVR не нашёл). 3) Мелочь но всё ж: ld.exe выдавал ошибку на //. Это у меня версия устаревшая? 4) Что делать с Цитата warning: ISO C99 doesn't support unnamed structs/unions [-pedantic] Где-то обсуждалось вроде, но чтот не нашёл. 5) Существует ли программа какая-нибудь для редактирования ld-файлов? Или всё вручную принято делать?
|
|
|
|
|
Feb 20 2012, 03:38
|

фанат дивана
     
Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684

|
Цитата(_Артём_ @ Feb 20 2012, 02:42)  Почему с "-", папка ведь называется CortexM0? Или так решено для cortex папки называть? В самом порте (pre-v400\Samples\Cortex-M0\GCC\scmRTOS\) папка называется Cortex-M0. Поэтому и в примерах, когда они появятся, она будет называться так же. Так что лучше переименуйте, чтоб потом не путаться. Цитата(_Артём_ @ Feb 20 2012, 04:57)  Зашил: похоже что как-то работает. Отлично  Цитата 1) Не работает Systick: наверное потому что закоментил строки в sysinit.cpp: Код LPC_SYSCON->SYSPLLCTRL = 0 //| ( (PLL_MUL - 1) << LPC_MSEL) //| ( PLL_DIV << LPC_PSEL) ; Чему равны PLL_DIV и PLL_MUL? Думаю, что это надо смотреть в документации на контроллер. Цитата 2) Где нынче считается правильным настраивать прерывание OS::SystemTimer_ISR? В OS_Target_asm.S. Частота зависит от двух дефайнов: SYSTICKFREQ и SYSTICKINTRATE, которые задаются на уровне проекта в файле scmRTOS_TARGET_CFG.h. Цитата 3) Мелочь но всё ж: ld.exe выдавал ошибку на //. Это у меня версия устаревшая? Возможно. Цитата 4) Что делать с Цитата warning: ISO C99 doesn't support unnamed structs/unions [-pedantic] Тут ничего не поделать. Только убрать ключ -pedantic в makefile. Цитата 5) Существует ли программа какая-нибудь для редактирования ld-файлов? Или всё вручную принято делать? Не встречал такой.
--------------------
Если бы я знал, что такое электричество...
|
|
|
|
|
Feb 20 2012, 08:20
|

Гуру
     
Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095

|
Не пинайте ногами. Был проект, в него подошел LPC1114. Под этот проект писался и на нем отлаживался порт scmRTOS для Cortex-M0. Потом из этого проекта были выдраны файлы, непосредственно относящиеся к scmRTOS и положены в репозиторий с целью довести их до полноценного порта позже. Перед помещением в реп были сделаны мелкие правки - выкусывание того, что не имеет отношения к ОС. После правок эти огрызки, естественно, не проверялись компиляцией. QUOTE PLL_DIV и PLL_MUL? У меня описано так: CODE #ifndef HARDWARE_H__ #define HARDWARE_H__ #include <pin_macros.h>
#define IRC_FREQ 12000000ULL
#define PLL_MUL 4 #define PLL_DIV 2
#define MAIN_CLK_FREQ (IRC_FREQ * PLL_MUL)
#define SYS_CLK_DIV 1 #define SYS_CLK_FREQ (MAIN_CLK_FREQ / SYS_CLK_DIV)
#define SYSTICK_CLK_FREQ (SYS_CLK_FREQ / 2)
#define UART_PCLK_FREQ (SYS_CLK_FREQ)
#define BAUDRATE 115200
#define LED 0,4,H
#endif // HARDWARE_H__ QUOTE (_Артём_ @ Feb 20 2012, 00:57)  2) Где нынче считается правильным настраивать прерывание OS::SystemTimer_ISR? Однозначного решения нет. В порте CM3 он настраивается в os_start(). Я решил настраивать его в main(), дабы не подключать в исходники ОСи описание регистров и чтобы не подключать туда каким-то образом #define с частотами. CODE int main() { // setup SysTick timer SysTick->LOAD = SYSTICK_CLK_FREQ / RTOS_TICK_RATE - 1; SysTick->VAL = 0; // reset counter SysTick->CTRL = 0 | (1 << SysTick_CTRL_ENABLE_Pos) // Enable timer | (1 << SysTick_CTRL_TICKINT_Pos) // Enable SysTick interrupts | (0 << SysTick_CTRL_CLKSOURCE_Pos) // System clock/2 ;
// run OS::run(); } QUOTE (_Артём_ @ Feb 20 2012, 00:57)  3) Мелочь но всё ж: ld.exe выдавал ошибку на //. Это у меня версия устаревшая? Нет, это я правил файл после "выкусывания" из проекта и по привычке использовал Цеплюсплюсный однострочный комментарий. QUOTE (_Артём_ @ Feb 19 2012, 22:42)  Такая же скобка на стр. 90(это смайлик наверное?, только линкер юмора не понял): "Сама себе порой я удивляюсь". Откуда там эти строки - загадка. Исправил в репозитории и проверил - больше линкер не ругается.
--------------------
На любой вопрос даю любой ответ"Write code that is guaranteed to work, not code that doesn’t seem to break" ( C++ FAQ)
|
|
|
|
|
Apr 1 2012, 18:51
|
Местный
  
Группа: Участник
Сообщений: 257
Регистрация: 10-06-06
Из: Ставрополь
Пользователь №: 17 955

|
Цитата(AHTOXA @ Mar 31 2012, 23:28)  Попробуйте вот так: Код openocd -f interface/stlink-v2.cfg -f target/stm32f4x_stlink.cfg -c init \ -c targets -c halt "flash write_image erase file.elf" \ -c "verify_image file.elf" -c shutdown Спасибо, уже помогли на Радиокоте, а дальше сам додумал , Полная строчка для Eclipse может быть например такой -f /usr/local/share/openocd/scripts/interface/stlink-v2.cfg -f /usr/local/share/openocd/scripts/target/stm32f4x_stlink.cfg -c "init;reset halt;; flash write_image erase ${workspace_loc:/Stm32f4t}/Release/Stm32f4t.hex 0x0000 ihex;" -c " reset run;" -c "mww 0xE000EDF0 0xa05f0000" -c "shutdown;"
Сообщение отредактировал sherr - Apr 1 2012, 18:53
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|