реклама на сайте
подробности

 
 
4 страниц V   1 2 3 > »   
Reply to this topicStart new topic
> STM32-F4, Отладка из Eclipse
_Артём_
сообщение Feb 16 2012, 16:47
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322



Как нынче обстоят дела с отладкой из Eclipse через STLink-SWD.
Она реализована? Или это из области ненаучной фантастики?
Go to the top of the page
 
+Quote Post
klen
сообщение Feb 16 2012, 17:14
Сообщение #2


бессмертным стать можно тремя способами
*****

Группа: Свой
Сообщений: 1 405
Регистрация: 9-05-06
Из: Москва
Пользователь №: 16 912



по существу ответить ничего не могу но если присутствие STLink-SWD не навязано искуственно то за 300 рублей обчный JTAG отладчик на ft2232 успешно решает все задачи по разработке софта для F4.

Go to the top of the page
 
+Quote Post
_Артём_
сообщение Feb 16 2012, 17:32
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 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 - включил и работает.
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Feb 16 2012, 17:36
Сообщение #4


фанат дивана
******

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



Вот здесь пишут, что openocd 0.6.0 из GIT-репозитория поддерживает ST-Link/ST-Link-v2. Если это действительно так, то всё должно отлаживаться без проблем. (Осталось попросить klen-а собрать версию 0.6.0 для линуксаsm.gif )


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
_Артём_
сообщение Feb 16 2012, 19:02
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 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 для линуксаsm.gif )

Я так понял что сделать просто (к компу подключил - Keil запустил - и оно работает) не получится.
Да ещё и линуксом запахло (не к ночи будь помянут).
Жаль.
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Feb 16 2012, 19:23
Сообщение #6


фанат дивана
******

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



Цитата(_Артём_ @ Feb 17 2012, 01:02) *
Я так понял что сделать просто (к компу подключил - Keil запустил - и оно работает) не получится.

При чём тут кейл? Вроде про Eclipse речь шла?
Цитата
Да ещё и линуксом запахло (не к ночи будь помянут).

Не, линукс - это мне надоsm.gif А под винду openocd 0.6.0 klen уже собрал.
Цитата
Жаль.

Ну, если так сразу руки опускаете, то наверное действительно не стоит и пробовать...


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
_Артём_
сообщение Feb 16 2012, 19:49
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322



Цитата(AHTOXA @ Feb 16 2012, 22:23) *
При чём тут кейл? Вроде про Eclipse речь шла?

Неправильно сформулировал. Речь про Eclipse.
Хотел сказать, что так просто начать работать как в Keil, с eclipse не получится.


Цитата(AHTOXA @ Feb 16 2012, 22:23) *
Не, линукс - это мне надоsm.gif

Хорошо, а то я уж испугался.

Цитата(AHTOXA @ Feb 16 2012, 22:23) *
А под винду openocd 0.6.0 klen уже собрал.

А где её взять?

Цитата(AHTOXA @ Feb 16 2012, 22:23) *
Ну, если так сразу руки опускаете, то наверное действительно не стоит и пробовать...

Не опускаю.
Ищу где меньше времени-сил уйдёт.
Go to the top of the page
 
+Quote Post
ReAl
сообщение Feb 16 2012, 20:20
Сообщение #8


Нечётный пользователь.
******

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



Цитата(AHTOXA @ Feb 16 2012, 21:23) *
Не, линукс - это мне надоsm.gif
Так оно не 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 подпатчилось чем-то.


--------------------
Ну, я пошёл… Если что – звоните…
Go to the top of the page
 
+Quote Post
_Артём_
сообщение Feb 16 2012, 21:27
Сообщение #9


Гуру
******

Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322



Цитата(ReAl @ Feb 16 2012, 23:20) *
Так оно не gcc, без танцев с приседаниями обходится. По крайней мере в линуксе :-)


А как на windows всё это проделать?
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Feb 17 2012, 04:57
Сообщение #10


фанат дивана
******

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



Цитата(_Артём_ @ Feb 17 2012, 01:49) *
А где её взять?

Вот здесь. Надо только убедиться, что там включена поддержка Stlink.

Цитата(_Артём_ @ Feb 17 2012, 01:49) *
Не опускаю.
Ищу где меньше времени-сил уйдёт.

Ну вообще-то времени-сил меньше однозначно уйдёт с кейлом/IAR-ом sm.gif Зато Eclipse+GCC - гораздо более универсальная конструкция. Ну и подешевле.

Цитата(ReAl @ Feb 17 2012, 02:20) *
Так оно не gcc, без танцев с приседаниями обходится. По крайней мере в линуксе :-)

Так просто?! Спасибо, надо будет попробоватьsm.gif

----
Посмотрел, в виндовой сборке от klen-а - нет, похоже не поддерживается там St-link.


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
Kornelij
сообщение Feb 17 2012, 08:39
Сообщение #11


Участник
*

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



Можно скачать триальный Atollic TrueSTUDIO. Саму програму можно не инсталировать, а открыть как архив и нем есть ST-LINK_gdbserver. Этот сервер можно использовать в Eclipse.
Go to the top of the page
 
+Quote Post
_Артём_
сообщение Feb 17 2012, 11:08
Сообщение #12


Гуру
******

Группа: Свой
Сообщений: 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.

Несколько странный способ инталяции, но что ещё остаётся.
Go to the top of the page
 
+Quote Post
Petka
сообщение Feb 17 2012, 11:59
Сообщение #13


Профессионал
*****

Группа: Свой
Сообщений: 1 453
Регистрация: 23-08-05
Пользователь №: 7 886



Цитата(_Артём_ @ Feb 17 2012, 15:08) *
...
А сколько времени надо потратить? Будет ли дешевле...ведь время = деньги.
....
Несколько странный способ инталяции, но что ещё остаётся.
....

Вообще странно, как Вас с таким подходом вообще в раздел "GNU/OpenSource средства разработки для avr/arm/mips" занесло.
smile3046.gif
Go to the top of the page
 
+Quote Post
_Артём_
сообщение Feb 17 2012, 12:49
Сообщение #14


Гуру
******

Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322



Цитата(Petka @ Feb 17 2012, 13:59) *
Вообще странно, как Вас с таким подходом вообще в раздел "GNU/OpenSource средства разработки для avr/arm/mips" занесло.
smile3046.gif


Такие вещи есть на свете, друг Горацио, что и не снилось нашим мудрецам
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Feb 17 2012, 15:55
Сообщение #15


фанат дивана
******

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



Цитата(_Артём_ @ Feb 17 2012, 17:08) *
Опять облом...ну ничего

Это временный облом, попросим klen-а, он соберёт свежак (надеюсь) sm.gif
Цитата(_Артём_ @ Feb 17 2012, 17:08) *
А сколько времени надо потратить? Будет ли дешевле...ведь время = деньги.

Я именно поэтому поместил аргумент "подешевле" не на первое место. Для меня важнее универсальность. Один раз освоив эклипсу - я пользуюсь ей для всего зоопарка используемых камней. Ну и GCC - почти для всего зоопарка (за исключением fujitsu 16LX, для них нет GCC).
Что касается количества времени на освоение - я бы не сказал, что это сильно долго. Если плотно занчяться, то за месяц - другой, думаю, вполне реально начать вполне уверенно использовать.


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
klen
сообщение Feb 17 2012, 19:24
Сообщение #16


бессмертным стать можно тремя способами
*****

Группа: Свой
Сообщений: 1 405
Регистрация: 9-05-06
Из: Москва
Пользователь №: 16 912



Цитата(AHTOXA @ Feb 17 2012, 19:55) *
... попросим klen-а, он соберёт свежак (надеюсь) sm.gif


уже собрал.
http://electronix.ru/forum/index.php?showt...p;#entry1028594
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Feb 17 2012, 19:33
Сообщение #17


фанат дивана
******

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



Спасибо! beer.gif


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
_Артём_
сообщение Feb 17 2012, 19:38
Сообщение #18


Гуру
******

Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322



Цитата(AHTOXA @ Feb 17 2012, 17:55) *
Это временный облом, попросим klen-а, он соберёт свежак (надеюсь) sm.gif

Жизнь показывает что "временное" - штука очень постоянная.
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.

И ешё вопросик. Скриншот:
Прикрепленное изображение

Выглядит не очень. Как исправить?
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Feb 17 2012, 20:29
Сообщение #19


фанат дивана
******

Группа: Свой
Сообщений: 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.


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
_Артём_
сообщение Feb 17 2012, 22:04
Сообщение #20


Гуру
******

Группа: Свой
Сообщений: 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

Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Feb 17 2012, 22:18
Сообщение #21


фанат дивана
******

Группа: Свой
Сообщений: 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.


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
_Артём_
сообщение Feb 17 2012, 22:39
Сообщение #22


Гуру
******

Группа: Свой
Сообщений: 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]
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Feb 18 2012, 05:13
Сообщение #23


фанат дивана
******

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



Цитата(_Артём_ @ Feb 18 2012, 04:39) *
Да, помогло. Выглядит нормально.

Отличноsm.gif
Цитата(_Артём_ @ Feb 18 2012, 04:39) *
Вам то хорошо...у вас работает.
Может у меня makefile не тот? Или тулчайн не той системы?

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


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
_Артём_
сообщение Feb 18 2012, 13:16
Сообщение #24


Гуру
******

Группа: Свой
Сообщений: 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?)

Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Feb 18 2012, 15:12
Сообщение #25


фанат дивана
******

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



Цитата(_Артём_ @ Feb 18 2012, 19:16) *
Собралось из cmd и из eclipse ( раньше почему-то запускался build другого проекта - почему?).

Аминьsm.gif Почему было неправильно - сложно сказать, да и неважно на самом деле. Теперь вы знаете, как делать правильно.
Цитата
Непонятка с 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, так что скоро, надеюсь, мы это прояснимsm.gif


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
_Артём_
сообщение Feb 18 2012, 15:46
Сообщение #26


Гуру
******

Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322



Цитата(AHTOXA @ Feb 18 2012, 17:12) *
Аминьsm.gif

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


Цитата(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, так что скоро, надеюсь, мы это проясним

Хорошо. Правда на таком проце уже и что потяжелей-понавороченней летать будет.
Go to the top of the page
 
+Quote Post
_Артём_
сообщение Feb 18 2012, 17:49
Сообщение #27


Гуру
******

Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322



Из LPC1114_2xx.ld:
Код
MEMORY
{
    TEXT (rx)       : ORIGIN = 0x00001000, LENGTH =  32K
    RAM (xrw)       : ORIGIN = 0x10000000, LENGTH =  4K
}

Почему ORIGIN для TEXT не 0? Flash ведь начинается с 0.
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Feb 18 2012, 18:02
Сообщение #28


фанат дивана
******

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



Цитата(_Артём_ @ Feb 18 2012, 21:46) *
Будем искать. А без неё можно, работать будет (только для начала, пока не найду)?

По идее должно, только медленно. Хотя не уверен - не имел дела с LPC-шными кортексами.
Цитата(_Артём_ @ Feb 18 2012, 23:49) *
Почему ORIGIN для TEXT не 0? Flash ведь начинается с 0.

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


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Feb 18 2012, 18:09
Сообщение #29


Гуру
******

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



QUOTE (_Артём_ @ Feb 18 2012, 19:49) *
Почему ORIGIN для TEXT не 0? Flash ведь начинается с 0.
Ой. Это рудимент моего проекта. 0-0x1000 у меня живет загрузчик. Сейчас исправлю.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
_Артём_
сообщение Feb 18 2012, 18:34
Сообщение #30


Гуру
******

Группа: Свой
Сообщений: 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 брать?
Go to the top of the page
 
+Quote Post
_Артём_
сообщение Feb 18 2012, 20:15
Сообщение #31


Гуру
******

Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322



Ещё момент. Не существенный, но всё ж.

Прикрепленное изображение

Как папку SamplesCommon подключить к проекту правильно, а то некоторые файлы не видны?
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Feb 18 2012, 20:52
Сообщение #32


фанат дивана
******

Группа: Свой
Сообщений: 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).


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
_Артём_
сообщение Feb 18 2012, 20:58
Сообщение #33


Гуру
******

Группа: Свой
Сообщений: 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

Пока так...

Go to the top of the page
 
+Quote Post
_Артём_
сообщение Feb 18 2012, 22:05
Сообщение #34


Гуру
******

Группа: Свой
Сообщений: 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

Go to the top of the page
 
+Quote Post
_Артём_
сообщение Feb 18 2012, 23:55
Сообщение #35


Гуру
******

Группа: Свой
Сообщений: 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

Понял: спать пора.

Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Feb 19 2012, 06:13
Сообщение #36


фанат дивана
******

Группа: Свой
Сообщений: 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 из первого примера в остальные.


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
_Артём_
сообщение Feb 19 2012, 15:32
Сообщение #37


Гуру
******

Группа: Свой
Сообщений: 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 из первого примера в остальные.

Я пребывал в уверенности, что они туда уже положены.

Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Feb 19 2012, 19:07
Сообщение #38


фанат дивана
******

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



Цитата(_Артём_ @ Feb 19 2012, 21:32) *
Типа того:
Цитата
DIRS += $(SCMDIR)/Common $(SCMDIR)/CortexM0

Да, только не "CortexM0", а "Cortex-M0".
Цитата
Могит быть. Заменил, помогло, но:

Теперь в строке 87 - там скобка лишняя.
Цитата
Я пребывал в уверенности, что они туда уже положены.

Если для получения примеров воспользоваться svn, то потом при помощи приложеннго батника всё делается сразу - и ось распихивается по папкам, и содержимое папки prj копируется из первого проекта в остальные. Но вам всё равно придётся заменять это содержимое под свой процессор.


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
_Артём_
сообщение Feb 19 2012, 20:42
Сообщение #39


Гуру
******

Группа: Свой
Сообщений: 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)?



Go to the top of the page
 
+Quote Post
ReAl
сообщение Feb 19 2012, 22:34
Сообщение #40


Нечётный пользователь.
******

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



Ничего кроме svn (subversion)


--------------------
Ну, я пошёл… Если что – звоните…
Go to the top of the page
 
+Quote Post
_Артём_
сообщение Feb 19 2012, 22:57
Сообщение #41


Гуру
******

Группа: Свой
Сообщений: 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-файлов? Или всё вручную принято делать?
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Feb 20 2012, 03:38
Сообщение #42


фанат дивана
******

Группа: Свой
Сообщений: 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) *
Зашил: похоже что как-то работает.

Отличноsm.gif
Цитата
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-файлов? Или всё вручную принято делать?

Не встречал такой.


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Feb 20 2012, 08:20
Сообщение #43


Гуру
******

Группа: Модераторы
Сообщений: 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)
Go to the top of the page
 
+Quote Post
_Артём_
сообщение Feb 20 2012, 22:05
Сообщение #44


Гуру
******

Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322



Добавил в main.cpp настройку SysTick, слинковал скриптом из репозитория (LPC1114_2xx.ld), запустил: полёт нормальный.

Спасибо всем за помощь.
Ушёл осваивать.
Go to the top of the page
 
+Quote Post
sherr
сообщение Mar 31 2012, 19:01
Сообщение #45


Местный
***

Группа: Участник
Сообщений: 257
Регистрация: 10-06-06
Из: Ставрополь
Пользователь №: 17 955



У кого-нибудь есть скрипт для заливки flash в STM32f4xx для OpenOCD + ST-Link ? А то собрал OpenOCD 0.6.0, проверил -
openocd -f interface/stlink-v2.cfg -f target/stm32f4x_stlink.cfg вроде запускается, полдня
читал мануал OpenOCD //// в общем мне бы пример для начала ...
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Mar 31 2012, 20:28
Сообщение #46


фанат дивана
******

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



Попробуйте вот так:
Код
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


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
sherr
сообщение Apr 1 2012, 18:51
Сообщение #47


Местный
***

Группа: Участник
Сообщений: 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
Go to the top of the page
 
+Quote Post

4 страниц V   1 2 3 > » 
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 24th July 2025 - 01:22
Рейтинг@Mail.ru


Страница сгенерированна за 0.01907 секунд с 7
ELECTRONIX ©2004-2016