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

Извините, Антоха. Ламерский вопрос: Просмотрел примеры за Вашим авторством, никак не мог обнаружить где в состав проекта(примера) включаются исходные файлы scmRtos\Common\

Как то неявным образом через wildcard и указанием пути?

Да, именно так.

В makefile:

Сначала указываем директорию, где расположена ось:

# scmRTOS dir
    SCMDIR    = ../scmRTOS

Потом задаём список директорий с исходниками:

# source directories (all *.c, *.cpp and *.S files included)
    DIRS := $(SRCDIR)
    DIRS += $(COMMON)
    DIRS += $(SCMDIR)/Common $(SCMDIR)/CortexM3
    DIRS += $(SCMDIR)/Extensions/Profiler

Потом во всех этих директориях ищем все файлы с расширениями *.c, *.cpp, *.S:

    OBJS += $(wildcard $(addsuffix /*.cpp, $(DIRS)))
    OBJS += $(wildcard $(addsuffix /*.c, $(DIRS)))
    OBJS += $(wildcard $(addsuffix /*.S, $(DIRS)))

Теперь убираем пути и меняем расширение на *.o:

    OBJS := $(notdir $(OBJS))
    OBJS := $(OBJS:.cpp=.o)
    OBJS := $(OBJS:.c=.o)
    OBJS := $(OBJS:.S=.o)

И, наконец, добавляем к именам файлов путь к директории obj (чтобы все объектные файы лежали там):

    OBJS := $(patsubst %, $(OBJDIR)/%, $(OBJS))

При таком подходе файлы добавляются к проекту элементарно, простым добавлением в папку с исходниками.

Есть и ограничение - нельзя иметь файлы с одинаковыми именами в разных директориях или с разными расширениями.

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


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

Отлично, подробно.

 

Благодарю Вас за ликбез, Антоха.

Изменено пользователем nanorobot

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


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

Спокойствие, только спокойствие! ©

1. -nostartfiles - правильная птичка. У вас есть свой стартап-файл (который *.S), и вам не нужны другие, которые предлагаются по умолчанию.

2. SystemInit() вы нашли?

3. Почему вы не хотите взять тот проект, который замигал, и начать переделывать под себя его?

4. Ещё вариант, гарантированно рабочий - не полагаться на плагин, а использовать "makefile проект". Примеры таких проектов есть, например, в scmRTOS.

Немного разобрался, Эклипс упорно пихает сишные файлы стартапа, игнорируя мой файл ассемблерный файл, и как-то галочками отключить не удалось. Хотя мой стартам компилирует и передает линкеру. Попробую прикрутить к Эклипсу проект мигания светодиодом, там свой мэйкфайл, а не автоматически сгенерированный плагином.

Еще проблема с этим ST-Linkgdbserverом, через раз коннектиться сервер к чипу, и через раз стартует отладка, вижу только, что перешел на вектор сброса, дальше "Step into" и больше ответа от отладчика нет.

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


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

Neborak, АНТОХА дело советует - уходите от этих плагинов! Автосгенеренный мейкфайл совсем не юзер-френдли, поменять что-то - только через плагин. А если система слетела, исходники остались, плагин поставить не получается, а компилить надо?

1 раз сделать свой мейкфайл и использовать с небольшими изменениями для всех проектов!

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


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

Ув. АНТОХА. У меня к Вам еще вопрос: Ваши примеры для Cortex-M4 успешно собираются как с помощью arm-none-eabi, так и с помощью arm-kgp-eabi. Но при открытии main.cpp кто-то невидимый(парсер?)

делает массу подчеркиваний красным и оранжевым цветом. Не подскажете в чем причина, и как преодолеть? Windows 7 x64, Eclipse Kepler, опции проекта по умолчанию, т.е. Ваши.

 

Судя по всему, первопричина в том, что парсер считает "Unresolved inclusion" инклюды: #include "pin.h" #include <scmRTOS.h>. Но даже явное указание путей к ним, в свойствах проекта, не лечит проблему.

Хочется полного исцеления, а не маскирования снятием галок где нибудь в Code Analysis

post-35503-1413196342_thumb.png

post-35503-1413197912_thumb.png

Изменено пользователем nanorobot

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


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

Да, это собственный парсер эклипсы. Надо объяснить ему, где искать системные инклюды, и ваши личные определения из makefile.

У меня в закладках есть вот эта ссылка. Но это для прошлых версий эклипсы (у меня до сих пор Indigo, лень обновлять). Для кеплера, емнимс, способ изменился. Там немного дальше по теме коллеги выкладывали способ. Ага, вот он.

 

Кстати, у вас на картинке папки SamplesCommon и scmRTOS вроде пустые?

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


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

Да, это собственный парсер эклипсы. Надо объяснить ему, где искать системные инклюды, и ваши личные определения из makefile.

У меня в закладках есть вот эта ссылка. Но это для прошлых версий эклипсы (у меня до сих пор Indigo, лень обновлять). Для кеплера, емнимс, способ изменился. Там немного дальше по теме коллеги выкладывали способ. Ага, вот он.

 

Кстати, у вас на картинке папки SamplesCommon и scmRTOS вроде пустые?

 

 

Пустые. Я как-то и не заметил их. Но почему они здесь? По факту они расположены на 2 уровня выше т.е. C:\Kepler\scmRtos\ а путь к проектам C:\Kepler\Workspace\2-Message\

Makefile практически Ваш. Поправил две строки с путями до SamplesCommon и scmRTOS - поднял на один уровень. Видимо где-то здесь косяк и есть.

 

-----------------------------------------------------------------------------

было:

 

# scmRTOS dir

SCMDIR = ../scmRTOS

# lib dir

COMMON = ../SamplesCommon

-----------------------------------------------------------------------------

стало:

 

# scmRTOS dir

SCMDIR = ../../scmRTOS

# lib dir

COMMON = ../../SamplesCommon

-----------------------------------------------------------------------------

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

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


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

Пустые. Я как-то и не заметил их. Но почему они здесь? По факту они расположены на 2 уровня выше т.е. C:\Kepler\scmRtos\ а путь к проектам C:\Kepler\Workspace\2-Message\

А, тогда всё понятно. И makefile, и проект эклипсы рассчитаны на то, что папки SamplesCommon и scmRTOS расположены на одном уровне с папками проектов (1-EventFlag, 2-Message...). А у вас не так. Makefile вы поправили, а проект эклипсы - нет. Нажмите правой кнопкой на папку scmRTOS, выберите Properties. Там будет кнопка Edit, нажмите её и введите путь "../../scmRTOS". Так же поступите и с папкой SamplesCommon (../../SamplesCommon).

Тогда эклипса найдёт исходники оси и общие файлы.

 

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


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

Подскажите, кто в курсе - code sorcery lite сейчас можно стянуть без ide (только тулчейн) ?

И что сейчас можно пользовать в качестве альтернативы ?

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


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

Подскажите, кто в курсе - code sorcery lite сейчас можно стянуть без ide (только тулчейн) ?

Здесь

И что сейчас можно пользовать в качестве альтернативы ?

GNU Tools for ARM Embedded Processors

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


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

прошу помощи

 

при сборке цели all make завершается с ошибкой (точнее):

d:/projects/tools/gnutoolsforarmembedded/4.9.2014q4/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/bin/ld.exe: warning: cannot find entry symbol _start; defaulting to 00008000
output/startup_ARMCM0.o: In function `Reset_Handler':
D:\Projects\Prog\EclipseWS\Test/startup_ARMCM0.c:294: undefined reference to `__data_start__'
D:\Projects\Prog\EclipseWS\Test/startup_ARMCM0.c:294: undefined reference to `__data_end__'
output/startup_ARMCM0.o:(.vectors+0x0): undefined reference to `__StackTop'
collect2.exe: error: ld returned 1 exit status
make: *** [output/MIG2.elf] Error 1

 

из того что мне понятно: все вышеупомянутые undefined reference вычисляются в скрипте линкера и должны попасть в файл startup

почему этого не происходит - понять не могу...потому и прошу

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


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

из того что мне понятно: все вышеупомянутые undefined reference вычисляются в скрипте линкера и должны попасть в файл startup

А вы в makefile указали линкеру, какой скрипт использовать (что-то типа -T$(LD_SCRIPT)) ?

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


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

А вы в makefile указали линкеру, какой скрипт использовать (что-то типа -T$(LD_SCRIPT)) ?

 

обязательно. проект я прикрепил на всякий случай.

 

стоит оговориться: ARM plugin не использую. пытаюсь собрать тестовый проект в eclipse c настройками, как в Вашем сообщении

Test.zip

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


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

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

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

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

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

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

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

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

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

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