AHTOXA 18 9 октября, 2014 Опубликовано 9 октября, 2014 · Жалоба Извините, Антоха. Ламерский вопрос: Просмотрел примеры за Вашим авторством, никак не мог обнаружить где в состав проекта(примера) включаются исходные файлы 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 5 9 октября, 2014 Опубликовано 9 октября, 2014 (изменено) · Жалоба Отлично, подробно. Благодарю Вас за ликбез, Антоха. Изменено 9 октября, 2014 пользователем nanorobot Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Neborak 0 9 октября, 2014 Опубликовано 9 октября, 2014 · Жалоба Спокойствие, только спокойствие! © 1. -nostartfiles - правильная птичка. У вас есть свой стартап-файл (который *.S), и вам не нужны другие, которые предлагаются по умолчанию. 2. SystemInit() вы нашли? 3. Почему вы не хотите взять тот проект, который замигал, и начать переделывать под себя его? 4. Ещё вариант, гарантированно рабочий - не полагаться на плагин, а использовать "makefile проект". Примеры таких проектов есть, например, в scmRTOS. Немного разобрался, Эклипс упорно пихает сишные файлы стартапа, игнорируя мой файл ассемблерный файл, и как-то галочками отключить не удалось. Хотя мой стартам компилирует и передает линкеру. Попробую прикрутить к Эклипсу проект мигания светодиодом, там свой мэйкфайл, а не автоматически сгенерированный плагином. Еще проблема с этим ST-Linkgdbserverом, через раз коннектиться сервер к чипу, и через раз стартует отладка, вижу только, что перешел на вектор сброса, дальше "Step into" и больше ответа от отладчика нет. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Aaron 1 10 октября, 2014 Опубликовано 10 октября, 2014 · Жалоба Neborak, АНТОХА дело советует - уходите от этих плагинов! Автосгенеренный мейкфайл совсем не юзер-френдли, поменять что-то - только через плагин. А если система слетела, исходники остались, плагин поставить не получается, а компилить надо? 1 раз сделать свой мейкфайл и использовать с небольшими изменениями для всех проектов! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
nanorobot 5 13 октября, 2014 Опубликовано 13 октября, 2014 (изменено) · Жалоба Ув. АНТОХА. У меня к Вам еще вопрос: Ваши примеры для 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 Изменено 13 октября, 2014 пользователем nanorobot Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AHTOXA 18 13 октября, 2014 Опубликовано 13 октября, 2014 · Жалоба Да, это собственный парсер эклипсы. Надо объяснить ему, где искать системные инклюды, и ваши личные определения из makefile. У меня в закладках есть вот эта ссылка. Но это для прошлых версий эклипсы (у меня до сих пор Indigo, лень обновлять). Для кеплера, емнимс, способ изменился. Там немного дальше по теме коллеги выкладывали способ. Ага, вот он. Кстати, у вас на картинке папки SamplesCommon и scmRTOS вроде пустые? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
nanorobot 5 13 октября, 2014 Опубликовано 13 октября, 2014 (изменено) · Жалоба Да, это собственный парсер эклипсы. Надо объяснить ему, где искать системные инклюды, и ваши личные определения из 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 ----------------------------------------------------------------------------- Изменено 13 октября, 2014 пользователем IgorKossak Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AHTOXA 18 13 октября, 2014 Опубликовано 13 октября, 2014 · Жалоба Пустые. Я как-то и не заметил их. Но почему они здесь? По факту они расположены на 2 уровня выше т.е. C:\Kepler\scmRtos\ а путь к проектам C:\Kepler\Workspace\2-Message\ А, тогда всё понятно. И makefile, и проект эклипсы рассчитаны на то, что папки SamplesCommon и scmRTOS расположены на одном уровне с папками проектов (1-EventFlag, 2-Message...). А у вас не так. Makefile вы поправили, а проект эклипсы - нет. Нажмите правой кнопкой на папку scmRTOS, выберите Properties. Там будет кнопка Edit, нажмите её и введите путь "../../scmRTOS". Так же поступите и с папкой SamplesCommon (../../SamplesCommon). Тогда эклипса найдёт исходники оси и общие файлы. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
swisst 0 28 декабря, 2014 Опубликовано 28 декабря, 2014 · Жалоба Подскажите, кто в курсе - code sorcery lite сейчас можно стянуть без ide (только тулчейн) ? И что сейчас можно пользовать в качестве альтернативы ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
IgorKossak 0 28 декабря, 2014 Опубликовано 28 декабря, 2014 · Жалоба Подскажите, кто в курсе - code sorcery lite сейчас можно стянуть без ide (только тулчейн) ? Здесь И что сейчас можно пользовать в качестве альтернативы ? GNU Tools for ARM Embedded Processors Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AHTOXA 18 28 декабря, 2014 Опубликовано 28 декабря, 2014 · Жалоба gcc-arm-embedded Упс, опоздал маленько:) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
swisst 0 29 декабря, 2014 Опубликовано 29 декабря, 2014 · Жалоба Спасибо. Ссылки - то, что надо. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
swisst 0 10 января, 2015 Опубликовано 10 января, 2015 · Жалоба прошу помощи при сборке цели 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 почему этого не происходит - понять не могу...потому и прошу Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AHTOXA 18 10 января, 2015 Опубликовано 10 января, 2015 · Жалоба из того что мне понятно: все вышеупомянутые undefined reference вычисляются в скрипте линкера и должны попасть в файл startup А вы в makefile указали линкеру, какой скрипт использовать (что-то типа -T$(LD_SCRIPT)) ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
swisst 0 10 января, 2015 Опубликовано 10 января, 2015 · Жалоба А вы в makefile указали линкеру, какой скрипт использовать (что-то типа -T$(LD_SCRIPT)) ? обязательно. проект я прикрепил на всякий случай. стоит оговориться: ARM plugin не использую. пытаюсь собрать тестовый проект в eclipse c настройками, как в Вашем сообщении Test.zip Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться