|
|
  |
STM32-F4, Отладка из Eclipse |
|
|
|
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 брать?
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|