klen 1 17 февраля, 2012 Опубликовано 17 февраля, 2012 · Жалоба ... попросим klen-а, он соберёт свежак (надеюсь) :) уже собрал. http://electronix.ru/forum/index.php?showt...p;#entry1028594 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AHTOXA 15 17 февраля, 2012 Опубликовано 17 февраля, 2012 · Жалоба Спасибо! :beer: Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Артём__ 0 17 февраля, 2012 Опубликовано 17 февраля, 2012 · Жалоба Это временный облом, попросим klen-а, он соберёт свежак (надеюсь) :) Жизнь показывает что "временное" - штука очень постоянная. Update. Не тот случай: пока писал "облом" закончился. Что касается количества времени на освоение - я бы не сказал, что это сильно долго. Если плотно занчяться, то за месяц - другой, думаю, вполне реально начать вполне уверенно использовать. Будем посмотреть. Ещё вопрос. Распаковал из архива 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. И ешё вопросик. Скриншот: Выглядит не очень. Как исправить? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AHTOXA 15 17 февраля, 2012 Опубликовано 17 февраля, 2012 · Жалоба Распаковал из архива 1-EventFlag для Cortex-m3 scmRtos v4. Вот build log: Там же прилагаются файлы проекта для Eclipse. Импортируйте их, и скомандуйте build. Или просто наберите make в папке где расположен makefile. Выглядит не очень. Как исправить? Надо добавить в проект папку с scmRTOS, тогда Eclipse найдёт что такое OS_PROCESS. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Артём__ 0 17 февраля, 2012 Опубликовано 17 февраля, 2012 · Жалоба Там же прилагаются файлы проекта для Eclipse. Импортируйте их, и скомандуйте build. Или просто наберите make в папке где расположен makefile. Файлы видел, но как их открыть в Eclipse, смешно сказать, не знаю. Делал так: Import\Existing project into workspace\и далее выбор папки. Как правильно? Надо добавить в проект папку с scmRTOS, тогда Eclipse найдёт что такое OS_PROCESS. Да как бы есть: Там же прилагаются файлы проекта для Eclipse. Импортируйте их, и скомандуйте build. Или просто наберите make в папке где расположен makefile.. Build делал (результат в пред. посте). Сделал make: Для v310 всё копмилится через cmd\make. Тут нет. Может файл какой забыл? Для 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 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AHTOXA 15 17 февраля, 2012 Опубликовано 17 февраля, 2012 · Жалоба Делал так: Import\Existing project into workspace\и далее выбор папки. Правильно, так и надо. Да как бы есть: У вас папки с scmRTOS пустые. Нужно туда накидать собственно ось (branches/pre-v400/Common - в Common, branches/pre-v400/Ports/CortexM3/GCC - в CortexM3, и branches/pre-v400/Extensions - в Extensions). Но от этого не намного легче: **** 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. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Артём__ 0 17 февраля, 2012 Опубликовано 17 февраля, 2012 (изменено) · Жалоба Правильно, так и надо. У вас папки с scmRTOS пустые. Нужно туда накидать собственно ось (branches/pre-v400/Common - в Common, branches/pre-v400/Ports/CortexM3/GCC - в CortexM3, и branches/pre-v400/Extensions - в Extensions). Да, помогло. Выглядит нормально. У вас какой-то левый makefile откуда-то подцепился. А при выполнении make из папки проекта - работает правильный makefile. Подцепился он из файла scmrtos-pre-v400.tar.gz\...\Samples\CortexM3\GCC\1-EventFlag\ А при выполнении make из папки проекта - работает правильный makefile. Вам то хорошо...у вас работает. Может у меня makefile не тот? Или тулчайн не той системы? Из папки тоже ошибки. #+--------------------------------------------------------------------------- # # 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 Изменено 18 февраля, 2012 пользователем IgorKossak [codebox] Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AHTOXA 15 18 февраля, 2012 Опубликовано 18 февраля, 2012 · Жалоба Да, помогло. Выглядит нормально. Отлично:) Вам то хорошо...у вас работает. Может у меня makefile не тот? Или тулчайн не той системы? Да, это - правильный makefile. И у вас при запуске make вручную из каталога примера подцепляется именно он. А вот из эклипсы - какой-то другой. Давайте действовать по порядку. Сначала добъёмся того, чтобы пример собрался без Eclipse. (По идее, сейчас, когда у вас все файлы на месте, должно собраться без проблем.) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Артём__ 0 18 февраля, 2012 Опубликовано 18 февраля, 2012 · Жалоба Да, это - правильный makefile. И у вас при запуске make вручную из каталога примера подцепляется именно он. А вот из эклипсы - какой-то другой. Давайте действовать по порядку. Сначала добъёмся того, чтобы пример собрался без Eclipse. (По идее, сейчас, когда у вас все файлы на месте, должно собраться без проблем.) Да, makefile - правильный. Начал сначала: удалил всё, скопировал заново, удалил все проекты из Eclipse. Непонятка с Eclipse: должна ли копироваться в workspace папка scmRTOS при открытии проекта 1-EventFlag? Собралось из cmd и из eclipse ( раньше почему-то запускался build другого проекта - почему?). Теперь дальше. Что нужно: как изменить проект, чтобы работало в lpc1114(C-M0) и после - в lpc13xx? Как поменять makefile и где брать lpcxxxx.ld (не писать же их с нуля?). Ну и совсем потом хорошо бы это всё на F4 запустить (кстати непонимаю, как порт для F1 может работать на F4? только не используя FPU?) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AHTOXA 15 18 февраля, 2012 Опубликовано 18 февраля, 2012 · Жалоба Собралось из 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, так что скоро, надеюсь, мы это проясним:) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Артём__ 0 18 февраля, 2012 Опубликовано 18 февраля, 2012 · Жалоба Аминь:) Точно. Нет бога кроме аллаха... Теперь вы знаете, как делать правильно. Ну шанс повторить успешно есть. 3. Инициализацию (то, что находится в sysinit.cpp) - берёте из примеров каких-нибудь; Будем искать. А без неё можно, работать будет (только для начала, пока не найду)? 4. В makefile меняете строчку "CortexM3" на "Cortex-M0". По идее - всё, должно заработать. Скорее всего ещё что-то вылезет по мелочи конечно, но, думаю, разберёмся.) Ну еще вот это CHIP = STM32F10X_MD заменить на что-то подходящее. И вроде - всё. Ко мне уже едет платка с F4, так что скоро, надеюсь, мы это проясним Хорошо. Правда на таком проце уже и что потяжелей-понавороченней летать будет. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Артём__ 0 18 февраля, 2012 Опубликовано 18 февраля, 2012 · Жалоба Из LPC1114_2xx.ld: MEMORY { TEXT (rx) : ORIGIN = 0x00001000, LENGTH = 32K RAM (xrw) : ORIGIN = 0x10000000, LENGTH = 4K } Почему ORIGIN для TEXT не 0? Flash ведь начинается с 0. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AHTOXA 15 18 февраля, 2012 Опубликовано 18 февраля, 2012 · Жалоба Будем искать. А без неё можно, работать будет (только для начала, пока не найду)? По идее должно, только медленно. Хотя не уверен - не имел дела с LPC-шными кортексами. Почему ORIGIN для TEXT не 0? Flash ведь начинается с 0. Тут не подскажу, не знаю. Ждите Сергея Борща. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 123 18 февраля, 2012 Опубликовано 18 февраля, 2012 · Жалоба Почему ORIGIN для TEXT не 0? Flash ведь начинается с 0.Ой. Это рудимент моего проекта. 0-0x1000 у меня живет загрузчик. Сейчас исправлю. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Артём__ 0 18 февраля, 2012 Опубликовано 18 февраля, 2012 · Жалоба По идее должно, только медленно. Хотя не уверен - не имел дела с LPC-шными кортексами. Попробую. Тут не подскажу, не знаю. Ждите Сергея Борща. Подожду. А почему а вас не используются файлы core_cmx.c? Только core_cmx.h. Там код не очень? Или лучше самому написать, чем от ARM взять готовое? Ой. Это рудимент моего проекта. 0-0x1000 у меня живет загрузчик. Сейчас исправлю. Понятно. Исправленный вариант с сайта scmrtos брать? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться