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

79 строка линкер-файла :biggrin:

Разобрался. Просто перед компиляцией поправил файл .ld но нажал кнопочку "Сохранить" и он мне все по старому шпарил.

 

А есть ли Rtos под эклипс? freeRtos можно запилить туда?

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


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

А есть ли Rtos под эклипс?
Мне кажется текстовуму редактору (Эклипсе) абсолютно все равно, исходники какой ОСРВ вы будете в нем править. Так же и ОСРВ будет работать независимо от того, в каком редакторе вы будуте править ее исходники.

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


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

Мне кажется текстовуму редактору (Эклипсе) абсолютно все равно, исходники какой ОСРВ вы будете в нем править. Так же и ОСРВ будет работать независимо от того, в каком редакторе вы будуте править ее исходники.

Разница может быть при отладке

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


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

Прошу помочь советом. Установил Eclipse Kepler. По ссылке ( http://gnuarmeclipse.sourceforge.net/updates ) установил ARM Cross GCC.

 

После обновления в опциях создания проекта появились STM32F10X, что мне и нужно было.

Создал проект автоматически со всеми настройками.

 

1)При попытке сборки получил: cs-make ***[system/src/stm32f1-stdperiph/misc.o] error 1

 

2) постоянно вижу ошибку: Type 'uint8_t' could not be resolved

включение #include <stdint.h> результата не дало (

 

в чем может быть проблема?

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

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


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

Прошу помочь советом. Установил Eclipse Kepler. По ссылке ( http://gnuarmeclipse.sourceforge.net/updates ) установил ARM Cross GCC.

 

После обновления в опциях создания проекта появились STM32F10X, что мне и нужно было.

Создал проект автоматически со всеми настройками.

 

1)При попытке сборки получил: cs-make ***[system/src/stm32f1-stdperiph/misc.o] error 1

 

2) постоянно вижу ошибку: Type 'uint8_t' could not be resolved

включение #include <stdint.h> результата не дало (

 

в чем может быть проблема?

 

Из моего скромного опыта. Сначала надо ставить GCC, потом клипсу, тогда она автоматом цепляет инклюды.

 

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


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

Всем привет. Только начал въезжать в связку Eclipse+GСC.

Установил:

-Eclipse IDE for C/C++ Developers Luna Release (4.4.0);

-Sourcery CodeBench Lite for ARM EABI;

-ARM plugin;

 

Создал проект на основе шаблона STM32F10X C/C++ Project, выбрав Toolchains Cross ARM GCC, в разделе Content указал Blinkly (создал проект с миганием светодиодом).

Скорректировал порт светодиода под STM32F1Discovery, компилирую.

Первая проблема - не понимает синтаксис make файла, по умолчанию make стоит от С++ builderа, правлю и указываю на cs-make.

Теперь компилит но на линкере останавливается с ошибкой

arm-none-eabi-g++: error: nano.specs: No such file or directory

Ничего лучше не нашел как из настроек линкера убрать ключ --specs=nano.specs, стал компилироваться hex-файл. Заливаю его через STM32 ST-Link Utility - светодиод не мигает.

Смотрю, нет в проекте ассемблерного файла, нахожу его для своего контроллера и импортирую в проект, меняя букву расширения с .s на .S. Тоже компилируется, но, после загрузки программатором светодиод по прежнему не мигает.

Беру пример тут, ручками правлю порт светодиода, компилю, гружу в контроллер - мигает.

Это вкратце свои как я провел начало недели.

Ребята, подскажите, что делаю не так?

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


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

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

Пока ждал ответ запустил отладку, конечно как-то нестабильно работает, но удалось увидеть, что висит в HardFault_Handler(), до main не доходит.

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


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

arm-none-eabi-g++: error: nano.specs: No such file or directory

Ничего лучше не нашел как из настроек линкера убрать ключ --specs=nano.specs, стал компилироваться hex-файл. Заливаю его через STM32 ST-Link Utility - светодиод не мигает.

Видимо, Sourcery CodeBench Lite этого не понимает. Советую gcc-arm-embedded, он - понимает.

Ребята, подскажите, что делаю не так?

Нужно включить в проект соответствующие контроллеру файлы:

  • скрипт линкера (*.ld), чтобы линкер знал размеры памяти контроллера;
  • стартап-файл (*.S), чтобы компилятор знал таблицу векторов прерываний данного контроллера;
  • файл инициализации периферии (*.c) (файл с функцией SystemInit(), или что-то в этом роде.), чтобы правильно инициализировать периферию контроллера перед выполнением вашей программы по миганию светодиодом.

Судя по всему, вы выполнили только второй пункт.

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


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

АНТОХА верно про список все указал, а arm-none-eabi-gcc --spec понимает. Если плагин стоит, а вы писали что поставили, то достаточно создать проект, выбрать правильную платформу (Cortex-M3), пройтись по настройкам инклудов, линкера, дефайнов, проверить что все на месте, как указал АНТОХА. Для STM32 как раз надо в настройках задефайнить 100500 символов, указывающих какой именно чип используете, на какой частоте и т.д. Плагин сам подхватит нужный компилятор.

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


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

Видимо, Sourcery CodeBench Lite этого не понимает. Советую gcc-arm-embedded, он - понимает.

 

Нужно включить в проект соответствующие контроллеру файлы:

  • скрипт линкера (*.ld), чтобы линкер знал размеры памяти контроллера;
  • стартап-файл (*.S), чтобы компилятор знал таблицу векторов прерываний данного контроллера;
  • файл инициализации периферии (*.c) (файл с функцией SystemInit(), или что-то в этом роде.), чтобы правильно инициализировать периферию контроллера перед выполнением вашей программы по миганию светодиодом.

Судя по всему, вы выполнили только второй пункт.

Спасибо за ответ, последняя версия плагина сама создает скрипт линкера, а вот про SystemInit() я совсем забыл. Помню, что для GCC он не нужен в main, он из стартап-файла вызывается, но его реализации у меня не было. Отпишусь о результатах.

 

а arm-none-eabi-gcc --spec понимает
Подскажите, за что это ключ отвечает?
Изменено пользователем Neborak

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


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

Видимо, Sourcery CodeBench Lite этого не понимает. Советую gcc-arm-embedded, он - понимает.
Психанул и поставил gcc-arm-embedded, действительно ключ линкера --specs=nano.specs он принял. Еще нарыл, что стояла галка в опции линкера -nostartfiles, из-за этого программа не входила в main. Теперь, после запуска отладки вижу курсор на _start(), а не DefaultHandler(). Куда дальше шагает - не вижу, после step into курсор пропадает вообще. Светодиоды по прежнему не мигают. Пока пытаюсь добиться нормальной работы отладчика.

 

Добавлено:

Такое чувство, что не добавляет в итоговый код мой *.S файл, но компилит его. В момент старта отладки переходу в какой-то сишный файл, в котором определена _start(), а не в ассемблерный. Все ближе к тому, что бы сдаться.

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

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


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

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

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

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

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

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

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


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

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

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

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

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

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

 

 

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

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

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


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

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

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

Гость
Ответить в этой теме...

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

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

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

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

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

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