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

Это понятно.

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

Там мейк ручками не пишется, - вызовы и параметры генерятся "галочками" из-под С::В, (чего иногда хочется, чего уж там).

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


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

Там мейк ручками не пишется

Возможно есть вариант makefile project?

 

вызовы и параметры генерятся "галочками" из-под С::В

Можно и вручную. Не нужны галочки.

 

Нравится CB, переходить на другую ИСР пока не желаемо.

А ведь Эклипс лучше.

 

1. Ставим компилятор.

Можно поставить Yagarto - к нему идёт и make.

YAGARTO GNU ARM toolchain и YAGARTO Tools - make и тп.

 

 

3. Создаем проект в CB, настраиваем его для сборки или подключаем внешний мейк-файл (где взять?).

Например тут: make для LPC17xx и make для STM32F2xx

 

 

4. Добавляем в проект скрипты линкера и стартапы из CMSIS (придется их корректировать?).

Корректировать придётся...

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


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

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

Там мейк ручками не пишется, - вызовы и параметры генерятся "галочками" из-под С::В, (чего иногда хочется, чего уж там).

 

Видел, просто не успел посмотреть подробнее.

Спасибо.

Помимо включенных в проект сценария линкера, стартапа и дефайнов для проца какие настройки (галочками) производились?

Можете расписать поподробнее, чтобы было на что опереться?

В стандартном визарде, насколько я помню, нет ничего подобного STM32F4.

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


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

Можете расписать поподробнее, чтобы было на что опереться?

Там использовались переменные проекта, не очень удобно, но по-другому хуже. Проблема в том, чтобы получить один и тот же список параметров, используемых линкером и компилятором. Наверняка сталкивались с легким гемором при изменении таргет-процессора в AVR-проекте - надо перепрописывать и в линкере и в компилере и где еще? забыл...

И галочками не все множество параметров охвачено :)

Остальное - смотрите в project build options и properties , только смотреть придется внимательно - за что многие и ругают эту IDE.

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


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

А ведь Эклипс лучше.

 

Возможно, но решил оставить на потом :)

 

Можно поставить Yagarto - к нему идёт и make.

 

Пока выбрал Codesourcery крайний релиз.

 

Например тут: make для LPC17xx и make для STM32F2xx

 

Спасибо!

 

Корректировать придётся...

 

Да я уж понял...

Хочу пока руками все сделать, чтобы разобраться получше.

Поставил компилятор.

Сделал простейшее тестовое приложение.

Пытался вчера вечером собрать, ковыряя стартап, скрипт и подбирая ключи компилятора и линкера.

Собирал под Линухом простым шеловским скриптом (позже выложу для анализа, может, порекомендуете что). Полноценный мейк - следующий этап. Вручную ничего не собирал еще, решил научиться (что почитать бы?).

Стартап и скрипт взял из CMSIS (\Device\ARM\ARMCM3\Source\GCC): gcc_arm.ld, startup_ARMCM3.S.

Пока Си, позже хочу Си++.

 

При сборке линкер ругался сначала на отсутствие libnosys.a (ее действительно нет в дистрибе компилятора) - убрал ее из списка в сценарии

/* Library configurations */

GROUP(libgcc.a libc.a libm.a libnosys.a)

Так и не нашел, что это за либа, для чего нужна и почему ее нет...

Ошибка пропала.

Потом линкер ругался на отсутствие "_start". Странно, откуда эта метка в стартапе и почему так называется. Поставил вместо нее "main" - все собралось. Ошибок нет.

Но осадок сомнения остался - уже две ошибки в этих двух файлах... кто знает, что там еще? Надеялся, что все заработает "из коробки".

Пока не зашивал, не уверен в работоспособности.

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


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

Всем привет!

 

Объясните, пожалуйста, как правильно подключать makefile к C::B 10.05.

Подключил. Собирается. Но есть одна странность...

Если в настройках компилятора не прописать путь к тулчейну и имя утилиты компилятора, то C::B отказывается собирать проект.

Говорит, что не может найти одну из утилит (size). Хотя, если закомментировать вызов size, то и другие утилиты не находит...

Из командной строки все нормально собирается.

Путь к тулчейну добавлен в PATH.

Зачем C::B вообще нужны все эти настройки, если используется makefile?!!

 

Если в настройках компилятора прописать путь до тулчейна, то говорит следующее:

"test - all" uses an invalid compiler. Probably the toolchain path within the compiler options is not setup correctly?! Skipping...
Изменено пользователем koluna

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


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

Кстати, что скрывается в пункте "Compiler and debugger settings" на вкладке "Other settings" в поле "Build method"?

У меня там всегда жестко стоит "Invoke compiler directly" и нет возможности что-либо выбрать другое.

Может, копать здесь надо для решения моей проблемы...

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


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

Может, копать здесь надо для решения моей проблемы...

Нет, не здесь.

 

Settings->Compiler & debugger

 

Selected compiler - выбрать нужный

 

Вкладка Toolchain executables:

Compiler's installation directory - вбить путь к бинарникам тулчейна

Program files - проверить правильность

 

Есть ещё один момент.

Project->Options->Build Options

 

Проверить выбранный тулчейн и команды на вкладке "Make" commands.

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


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

Нет, не здесь.

 

Спасибо за ответ. Это все мне известно. Если настроить - работает.

У меня другой вопрос.

Я использую внешний makefile.

Зачем я должен сообщать C::B путь к папке с тулчейном, перечислять каждую из утилит тулчейна и назначать тулчейн проекту, если C::B просто передает управление make?

Пути к тулчейну есть в PATH.

Получается "масло масляное".

Всю работу на себя берет make, а C::B просто отображает результаты... ну, может я чего недопонял по этому вопросу...

Как я понимаю, при использовании makefile все настройки тулчейна в C::B попросту не нужны и должны быть недоступны...

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


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

Надо внимательно рассмотреть логи построения и все станет ясно.

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


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

Надо внимательно рассмотреть логи построения и все станет ясно.

 

Так, а где их посмотреть?

Вы имеете в виду "Build log", "Build messages"?

В случае с makefile там практически ничего нет...

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


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

Так, а где их посмотреть?

Вы имеете в виду "Build log", "Build messages"?

В случае с makefile там практически ничего нет...

Значит, надо галочками поиграть, чтобы было.

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


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

Значит, надо галочками поиграть, чтобы было.

 

Может быть подскажите, с какими галочками конкретно? Много чего пробовал - результат одинаков.

Поставил "Compiler logging: Full command line".

 

Вот лог:

-------------- Build: all in test ---------------

 

[100,0%] Running command: make -f makefile all

/bin/sh: arm-none-eabi-g++: команда не найдена

make: *** [obj/main.o] Ошибка 127

--- building test

--- compiling ./src/main.cpp...

Process terminated with status 2 (0 minutes, 0 seconds)

0 errors, 0 warnings

 

Нашел интересную настройку:

Environment... -> General settings -> Shell to run commands in: /bin/sh -c

У меня в системе /bin/sh ссылается на dash.

Пробовал менять настройку на "/bin/bash -c", но при этом ничего не меняется! В логе по-прежнему "/bin/sh -c"!

Я в системе использую именно bash, путь к тулчейну прописан в .bashrc.

Возможно, прописать надо где-то в другом месте... только вот где?

 

Тааак... пока писал, сообразил, что дело в make.

Добавил "SHELL := /bin/bash" в makefile. В логе теперь вижу, что make запускает именно bash.

Но make по-прежнему не находит тулчейн... почему-то при запуске среды не подхватываются пути из .bashrc...

Можно, конечно, пойти простым путем - прописать пути к тулчейну в makefile...

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


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

Можно, конечно, пойти простым путем - прописать пути к тулчейну в makefile...

Я так и сделал.

Тем более что на одном этапе надо было сравнить несколько версий тулчейна (mspgcc) и найти 10 отличий, и легким движением руки можно было перекидывать на любую из, со 100% уверенностью.

 

C шеллами (под виндой) тоже какая-то засада была. Точно уже не помню, но Cygwin с евоным sh пришлось нейтрализовать.

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


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

Свойства проекта -> Вкладка "Project settings" -> Platforms (Windows, Unix, Mac)

Для чего? На что влияет?

 

Свойства проекта -> Вкладка "Build targets" -> Type (Console application, GUI application, ...)

Для чего? На что влияет?

 

Применительно к embeded...

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

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


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

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

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

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

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

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

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

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

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

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