|
|
  |
Eclipse + GCC для ARM, Среда разработки для ARM, причем бесплатная... |
|
|
|
Jun 19 2014, 03:34
|
Частый гость
 
Группа: Участник
Сообщений: 184
Регистрация: 14-02-11
Пользователь №: 62 953

|
Цитата(DmitryM @ Jun 18 2014, 11:14)  79 строка линкер-файла  Разобрался. Просто перед компиляцией поправил файл .ld но нажал кнопочку "Сохранить" и он мне все по старому шпарил. А есть ли Rtos под эклипс? freeRtos можно запилить туда?
|
|
|
|
|
Jun 19 2014, 11:38
|
Частый гость
 
Группа: Участник
Сообщений: 139
Регистрация: 9-11-12
Из: Санкт-Петербург
Пользователь №: 74 315

|
Цитата(Сергей Борщ @ Jun 19 2014, 10:04)  Мне кажется текстовуму редактору (Эклипсе) абсолютно все равно, исходники какой ОСРВ вы будете в нем править. Так же и ОСРВ будет работать независимо от того, в каком редакторе вы будуте править ее исходники. Разница может быть при отладке
|
|
|
|
|
Jul 2 2014, 08:41
|
Местный
  
Группа: Участник
Сообщений: 408
Регистрация: 28-05-12
Пользователь №: 72 052

|
Прошу помочь советом. Установил 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 - Jul 2 2014, 08:46
|
|
|
|
|
Aug 4 2014, 03:48
|
Местный
  
Группа: Участник
Сообщений: 290
Регистрация: 9-12-05
Из: г. Пермь
Пользователь №: 12 002

|
Цитата(Dubov @ Jul 2 2014, 14:41)  Прошу помочь советом. Установил 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, потом клипсу, тогда она автоматом цепляет инклюды.
|
|
|
|
|
Sep 24 2014, 08:35
|
Участник

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

|
Всем привет. Только начал въезжать в связку 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. Тоже компилируется, но, после загрузки программатором светодиод по прежнему не мигает. Беру пример тут, ручками правлю порт светодиода, компилю, гружу в контроллер - мигает. Это вкратце свои как я провел начало недели. Ребята, подскажите, что делаю не так?
|
|
|
|
|
Sep 24 2014, 12:11
|
Участник

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

|
Цитата(Mihey_K @ Sep 24 2014, 14:45)  Может проект свой прикрепите, а то телепатия какая-то получается... Выложить не проблема, смотреть там нет на что. Перефразирую вопрос по другому, если поставить компилятор и плагин, то нужно ли что-то дорабатывать ручками, что бы программа заработала в контроллере? Пока ждал ответ запустил отладку, конечно как-то нестабильно работает, но удалось увидеть, что висит в HardFault_Handler(), до main не доходит.
|
|
|
|
|
Sep 24 2014, 16:08
|

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

|
Цитата(Neborak @ Sep 24 2014, 14:35)  Код 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, он - понимает. Цитата(Neborak @ Sep 24 2014, 14:35)  Ребята, подскажите, что делаю не так? Нужно включить в проект соответствующие контроллеру файлы: - скрипт линкера (*.ld), чтобы линкер знал размеры памяти контроллера;
- стартап-файл (*.S), чтобы компилятор знал таблицу векторов прерываний данного контроллера;
- файл инициализации периферии (*.c) (файл с функцией SystemInit(), или что-то в этом роде.), чтобы правильно инициализировать периферию контроллера перед выполнением вашей программы по миганию светодиодом.
Судя по всему, вы выполнили только второй пункт.
--------------------
Если бы я знал, что такое электричество...
|
|
|
|
|
Sep 25 2014, 13:16
|

Частый гость
 
Группа: Участник
Сообщений: 156
Регистрация: 27-09-06
Из: Irkutsk
Пользователь №: 20 747

|
АНТОХА верно про список все указал, а arm-none-eabi-gcc --spec понимает. Если плагин стоит, а вы писали что поставили, то достаточно создать проект, выбрать правильную платформу (Cortex-M3), пройтись по настройкам инклудов, линкера, дефайнов, проверить что все на месте, как указал АНТОХА. Для STM32 как раз надо в настройках задефайнить 100500 символов, указывающих какой именно чип используете, на какой частоте и т.д. Плагин сам подхватит нужный компилятор.
--------------------
Блог о разработке на CC430, SIM900, GPS, ARM и не только...
|
|
|
|
|
Sep 28 2014, 07:32
|
Участник

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

|
Цитата(AHTOXA @ Sep 24 2014, 19:08)  Видимо, Sourcery CodeBench Lite этого не понимает. Советую gcc-arm-embedded, он - понимает. Нужно включить в проект соответствующие контроллеру файлы: - скрипт линкера (*.ld), чтобы линкер знал размеры памяти контроллера;
- стартап-файл (*.S), чтобы компилятор знал таблицу векторов прерываний данного контроллера;
- файл инициализации периферии (*.c) (файл с функцией SystemInit(), или что-то в этом роде.), чтобы правильно инициализировать периферию контроллера перед выполнением вашей программы по миганию светодиодом.
Судя по всему, вы выполнили только второй пункт. Спасибо за ответ, последняя версия плагина сама создает скрипт линкера, а вот про SystemInit() я совсем забыл. Помню, что для GCC он не нужен в main, он из стартап-файла вызывается, но его реализации у меня не было. Отпишусь о результатах. Цитата(Mihey_K @ Sep 25 2014, 16:16)  а arm-none-eabi-gcc --spec понимает Подскажите, за что это ключ отвечает?
Сообщение отредактировал Neborak - Sep 28 2014, 07:34
|
|
|
|
|
Oct 6 2014, 11:56
|
Участник

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

|
Цитата(AHTOXA @ Sep 24 2014, 19:08)  Видимо, Sourcery CodeBench Lite этого не понимает. Советую gcc-arm-embedded, он - понимает. Психанул и поставил gcc-arm-embedded, действительно ключ линкера --specs=nano.specs он принял. Еще нарыл, что стояла галка в опции линкера -nostartfiles, из-за этого программа не входила в main. Теперь, после запуска отладки вижу курсор на _start(), а не DefaultHandler(). Куда дальше шагает - не вижу, после step into курсор пропадает вообще. Светодиоды по прежнему не мигают. Пока пытаюсь добиться нормальной работы отладчика. Добавлено: Такое чувство, что не добавляет в итоговый код мой *.S файл, но компилит его. В момент старта отладки переходу в какой-то сишный файл, в котором определена _start(), а не в ассемблерный. Все ближе к тому, что бы сдаться.
Сообщение отредактировал Neborak - Oct 6 2014, 14:24
|
|
|
|
|
Oct 6 2014, 15:18
|

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

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

|
Цитата(AHTOXA @ Oct 6 2014, 21:18)  Спокойствие, только спокойствие! © 1. -nostartfiles - правильная птичка. У вас есть свой стартап-файл (который *.S), и вам не нужны другие, которые предлагаются по умолчанию. 2. SystemInit() вы нашли? 3. Почему вы не хотите взять тот проект, который замигал, и начать переделывать под себя его? 4. Ещё вариант, гарантированно рабочий - не полагаться на плагин, а использовать "makefile проект". Примеры таких проектов есть, например, в scmRTOS. Извините, Антоха. Ламерский вопрос: Просмотрел примеры за Вашим авторством, никак не мог обнаружить где в состав проекта(примера) включаются исходные файлы scmRtos\Common\ Как то неявным образом через wildcard и указанием пути?
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|