|
|
  |
Eclipse + GCC для ARM, Среда разработки для ARM, причем бесплатная... |
|
|
|
Oct 9 2014, 04:28
|

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

|
Цитата(nanorobot @ Oct 8 2014, 16:16)  Извините, Антоха. Ламерский вопрос: Просмотрел примеры за Вашим авторством, никак не мог обнаружить где в состав проекта(примера) включаются исходные файлы 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)) При таком подходе файлы добавляются к проекту элементарно, простым добавлением в папку с исходниками. Есть и ограничение - нельзя иметь файлы с одинаковыми именами в разных директориях или с разными расширениями.
--------------------
Если бы я знал, что такое электричество...
|
|
|
|
|
Oct 9 2014, 14:33
|
Участник

Группа: Участник
Сообщений: 33
Регистрация: 13-04-09
Пользователь №: 47 609

|
Цитата(AHTOXA @ Oct 6 2014, 18:18)  Спокойствие, только спокойствие! © 1. -nostartfiles - правильная птичка. У вас есть свой стартап-файл (который *.S), и вам не нужны другие, которые предлагаются по умолчанию. 2. SystemInit() вы нашли? 3. Почему вы не хотите взять тот проект, который замигал, и начать переделывать под себя его? 4. Ещё вариант, гарантированно рабочий - не полагаться на плагин, а использовать "makefile проект". Примеры таких проектов есть, например, в scmRTOS. Немного разобрался, Эклипс упорно пихает сишные файлы стартапа, игнорируя мой файл ассемблерный файл, и как-то галочками отключить не удалось. Хотя мой стартам компилирует и передает линкеру. Попробую прикрутить к Эклипсу проект мигания светодиодом, там свой мэйкфайл, а не автоматически сгенерированный плагином. Еще проблема с этим ST-Linkgdbserverом, через раз коннектиться сервер к чипу, и через раз стартует отладка, вижу только, что перешел на вектор сброса, дальше "Step into" и больше ответа от отладчика нет.
|
|
|
|
|
Oct 13 2014, 10:32
|
Местный
  
Группа: Участник
Сообщений: 244
Регистрация: 29-02-08
Пользователь №: 35 503

|
Ув. АНТОХА. У меня к Вам еще вопрос: Ваши примеры для 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
Сообщение отредактировал nanorobot - Oct 13 2014, 11:20
Эскизы прикрепленных изображений
|
|
|
|
|
Oct 13 2014, 11:15
|

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

|
Да, это собственный парсер эклипсы. Надо объяснить ему, где искать системные инклюды, и ваши личные определения из makefile. У меня в закладках есть вот эта ссылка. Но это для прошлых версий эклипсы (у меня до сих пор Indigo, лень обновлять). Для кеплера, емнимс, способ изменился. Там немного дальше по теме коллеги выкладывали способ. Ага, вот он. Кстати, у вас на картинке папки SamplesCommon и scmRTOS вроде пустые?
--------------------
Если бы я знал, что такое электричество...
|
|
|
|
|
Oct 13 2014, 11:47
|
Местный
  
Группа: Участник
Сообщений: 244
Регистрация: 29-02-08
Пользователь №: 35 503

|
Цитата(AHTOXA @ Oct 13 2014, 17:15)  Да, это собственный парсер эклипсы. Надо объяснить ему, где искать системные инклюды, и ваши личные определения из 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 - Oct 13 2014, 19:18
|
|
|
|
|
Oct 13 2014, 14:02
|

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

|
Цитата(nanorobot @ Oct 13 2014, 17:47)  Пустые. Я как-то и не заметил их. Но почему они здесь? По факту они расположены на 2 уровня выше т.е. C:\Kepler\scmRtos\ а путь к проектам C:\Kepler\Workspace\2-Message\ А, тогда всё понятно. И makefile, и проект эклипсы рассчитаны на то, что папки SamplesCommon и scmRTOS расположены на одном уровне с папками проектов (1-EventFlag, 2-Message...). А у вас не так. Makefile вы поправили, а проект эклипсы - нет. Нажмите правой кнопкой на папку scmRTOS, выберите Properties. Там будет кнопка Edit, нажмите её и введите путь "../../scmRTOS". Так же поступите и с папкой SamplesCommon (../../SamplesCommon). Тогда эклипса найдёт исходники оси и общие файлы.
--------------------
Если бы я знал, что такое электричество...
|
|
|
|
|
Jan 10 2015, 18:58
|
Частый гость
 
Группа: Свой
Сообщений: 163
Регистрация: 16-02-07
Из: Харьков
Пользователь №: 25 425

|
прошу помощи при сборке цели 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 почему этого не происходит - понять не могу...потому и прошу
|
|
|
|
|
Jan 10 2015, 19:50
|
Частый гость
 
Группа: Свой
Сообщений: 163
Регистрация: 16-02-07
Из: Харьков
Пользователь №: 25 425

|
Цитата(AHTOXA @ Jan 10 2015, 21:32)  А вы в makefile указали линкеру, какой скрипт использовать (что-то типа -T$(LD_SCRIPT)) ? обязательно. проект я прикрепил на всякий случай. стоит оговориться: ARM plugin не использую. пытаюсь собрать тестовый проект в eclipse c настройками, как в Вашем сообщении
Прикрепленные файлы
Test.zip ( 46.91 килобайт )
Кол-во скачиваний: 11
|
|
|
|
|
  |
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|
|