Перейти к содержанию
    

... попросим klen-а, он соберёт свежак (надеюсь) :)

 

уже собрал.

http://electronix.ru/forum/index.php?showt...p;#entry1028594

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Это временный облом, попросим 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.

 

И ешё вопросик. Скриншот:

post-17322-1329507387_thumb.jpg

Выглядит не очень. Как исправить?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Распаковал из архива 1-EventFlag для Cortex-m3 scmRtos v4.

Вот build log:

Там же прилагаются файлы проекта для Eclipse. Импортируйте их, и скомандуйте build. Или просто наберите make в папке где расположен makefile.

Выглядит не очень. Как исправить?

Надо добавить в проект папку с scmRTOS, тогда Eclipse найдёт что такое OS_PROCESS.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Там же прилагаются файлы проекта для Eclipse. Импортируйте их, и скомандуйте build. Или просто наберите make в папке где расположен makefile.

Файлы видел, но как их открыть в Eclipse, смешно сказать, не знаю.

Делал так: Import\Existing project into workspace\и далее выбор папки.

Как правильно?

 

Надо добавить в проект папку с scmRTOS, тогда Eclipse найдёт что такое OS_PROCESS.

Да как бы есть:

post-17322-1329514672_thumb.jpg

 

 

Там же прилагаются файлы проекта для Eclipse. Импортируйте их, и скомандуйте build. Или просто наберите make в папке где расположен makefile..

Build делал (результат в пред. посте).

Сделал make:

post-17322-1329514988_thumb.jpg

Для 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

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Делал так: 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.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Правильно, так и надо.

 

У вас папки с 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

Изменено пользователем IgorKossak
[codebox]

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Да, помогло. Выглядит нормально.

Отлично:)

Вам то хорошо...у вас работает.

Может у меня makefile не тот? Или тулчайн не той системы?

Да, это - правильный makefile. И у вас при запуске make вручную из каталога примера подцепляется именно он. А вот из эклипсы - какой-то другой.

Давайте действовать по порядку. Сначала добъёмся того, чтобы пример собрался без Eclipse. (По идее, сейчас, когда у вас все файлы на месте, должно собраться без проблем.)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Да, это - правильный makefile. И у вас при запуске make вручную из каталога примера подцепляется именно он. А вот из эклипсы - какой-то другой.

Давайте действовать по порядку. Сначала добъёмся того, чтобы пример собрался без Eclipse. (По идее, сейчас, когда у вас все файлы на месте, должно собраться без проблем.)

Да, makefile - правильный.

Начал сначала: удалил всё, скопировал заново, удалил все проекты из Eclipse.

Непонятка с Eclipse: должна ли копироваться в workspace папка scmRTOS при открытии проекта 1-EventFlag?

 

Собралось из cmd и из eclipse ( раньше почему-то запускался build другого проекта - почему?).

 

Теперь дальше.

Что нужно: как изменить проект, чтобы работало в lpc1114(C-M0) и после - в lpc13xx?

Как поменять makefile и где брать lpcxxxx.ld (не писать же их с нуля?).

 

Ну и совсем потом хорошо бы это всё на F4 запустить (кстати непонимаю, как порт для F1 может работать на F4? только не используя FPU?)

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Собралось из 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, так что скоро, надеюсь, мы это проясним:)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Аминь:)

Точно. Нет бога кроме аллаха...

 

 

Теперь вы знаете, как делать правильно.

Ну шанс повторить успешно есть.

 

3. Инициализацию (то, что находится в sysinit.cpp) - берёте из примеров каких-нибудь;

Будем искать. А без неё можно, работать будет (только для начала, пока не найду)?

4. В makefile меняете строчку "CortexM3" на "Cortex-M0". По идее - всё, должно заработать. Скорее всего ещё что-то вылезет по мелочи конечно, но, думаю, разберёмся.)

Ну еще вот это

CHIP = STM32F10X_MD

заменить на что-то подходящее. И вроде - всё.

Ко мне уже едет платка с F4, так что скоро, надеюсь, мы это проясним

Хорошо. Правда на таком проце уже и что потяжелей-понавороченней летать будет.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Из LPC1114_2xx.ld:

MEMORY
{
    TEXT (rx)       : ORIGIN = 0x00001000, LENGTH =  32K
    RAM (xrw)       : ORIGIN = 0x10000000, LENGTH =  4K
}

Почему ORIGIN для TEXT не 0? Flash ведь начинается с 0.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Будем искать. А без неё можно, работать будет (только для начала, пока не найду)?

По идее должно, только медленно. Хотя не уверен - не имел дела с LPC-шными кортексами.

Почему ORIGIN для TEXT не 0? Flash ведь начинается с 0.

Тут не подскажу, не знаю. Ждите Сергея Борща.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Почему ORIGIN для TEXT не 0? Flash ведь начинается с 0.
Ой. Это рудимент моего проекта. 0-0x1000 у меня живет загрузчик. Сейчас исправлю.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

По идее должно, только медленно. Хотя не уверен - не имел дела с LPC-шными кортексами.

 

Попробую.

 

Тут не подскажу, не знаю. Ждите Сергея Борща.

Подожду.

 

А почему а вас не используются файлы core_cmx.c?

Только core_cmx.h.

Там код не очень? Или лучше самому написать, чем от ARM взять готовое?

 

 

 

Ой. Это рудимент моего проекта. 0-0x1000 у меня живет загрузчик. Сейчас исправлю.

Понятно.

Исправленный вариант с сайта scmrtos брать?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...