реклама на сайте
подробности

 
 
> scmRTOS & MSPGCC. Ошибка компиляции примеров
aliko
сообщение Jul 26 2011, 19:00
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 39
Регистрация: 23-11-05
Пользователь №: 11 254



Под линукс в mspgcc4 (gcc-4.4.5) и 3я и 4я версии ОС при компиляции выдают следующее:
Цитата
--- assembling ../scmRTOS/MSP430/OS_Target_asm.S...
../scmRTOS/MSP430/OS_Target_asm.S: Assembler messages:
../scmRTOS/MSP430/OS_Target_asm.S:125: Error: unknown opcode `vector_(11'

Аналогично ругается mspgcc (20110716) под виндовс.

Кстати поясните пожалуйста в чем цимус существования двух версий - mspgcc и mspgcc4. Вторая вроде как заявляет что она хороша тем что базируется на 4й версии GCC, однако обычный mspgcc тоже вроде как на четвертой и даже на 4.5 против 4.4 у mspgcc4?

Сообщение отредактировал aliko - Jul 26 2011, 19:01
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
AHTOXA
сообщение Jul 27 2011, 10:47
Сообщение #2


фанат дивана
******

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



Ух, что-то они всё поменяли... Я в отпуске, сходу не разобрался sm.gif
Как теперь объявлять обработчик прерывания в ассемблерном файле?

Цитата(aliko @ Jul 27 2011, 01:00) *
Кстати поясните пожалуйста в чем цимус существования двух версий - mspgcc и mspgcc4.


Насколько я понял, изначально разработчики mspgcc не хотели переходить на GCC 4, поэтому отпочковался проект mspgcc4. А теперь видимо передумали, вот и получились два таких проекта sm.gif


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
aliko
сообщение Jul 27 2011, 11:30
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 39
Регистрация: 23-11-05
Пользователь №: 11 254



Цитата(AHTOXA @ Jul 27 2011, 14:47) *
Ух, что-то они всё поменяли... Я в отпуске, сходу не разобрался sm.gif
Как теперь объявлять обработчик прерывания в ассемблерном файле?

Пока что пользуюсь mspgcc4 под виндовс, только он нормально компилит 3ю версию ОС. С 4й тоже не справляется.
Почему-то не работают объявления портов вида portN.out.pinN при их изменении ничего не происходит, приходится пользоваться объявлениями вида PNOUT. Кроме того заметил что в последних mspgcc убрали кучу заголовочных файлов типа iostructures.h, adc.h в которых были удобные структурки для работы с регистрами. Кроме того последний mspgcc ругается на включения файла "io.h" который уже депрекейтед и вместо него предлагает включать msp430.h. Вобщем с компиляторами GCC зоопарк. sad.gif
Go to the top of the page
 
+Quote Post
MrYuran
сообщение Jul 27 2011, 11:51
Сообщение #4


Беспросветный оптимист
******

Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646



Цитата(aliko @ Jul 27 2011, 15:30) *
Почему-то не работают объявления портов вида portN.out.pinN при их изменении ничего не происходит

Это была примочка divil'а, видимо решили её выкинуть.
Кстати, я с ней основательно накололся, не советую использовать.
Почему-то иногда игнорирует __attribute__((packed)), с которым объявлены структуры портов, и в случае выравнивания по границе слова начинается дурдом...

Я немного доработал макросы Аскольда Волкова (ещё не совсем до конца), получается не хуже, но главное - 100% предсказуемо.
CODE

#include "_useful_gpio.h" // Макросы Аскольда Волкова

#define SYS_WDT P4,7,H
#define PWR_WDT P6,0,H

static __inline__ void WatchDogInit(void)
{
InitAsOut(PWR_WDT);

InitAsOut(SYS_WDT);
}

static __inline__ void ClearWatchDog(void)
{
toggle_pin(SYS_WDT);
}

static __inline__ void ClearPWRWatchDog(void)
{
toggle_pin(PWR_WDT);
}


Цитата(aliko @ Jul 27 2011, 15:30) *
Кроме того последний mspgcc ругается на включения файла "io.h" который уже депрекейтед и вместо него предлагает включать msp430.h. Вобщем с компиляторами GCC зоопарк. sad.gif

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

Однако, радует, что проект вылез из подполья и продолжает развиваться.


--------------------
Программирование делится на системное и бессистемное. ©Моё :)
— а для кого-то БГ — это Bill Gilbert =)
Go to the top of the page
 
+Quote Post
aliko
сообщение Jul 27 2011, 13:02
Сообщение #5


Участник
*

Группа: Участник
Сообщений: 39
Регистрация: 23-11-05
Пользователь №: 11 254



Цитата(MrYuran @ Jul 27 2011, 15:51) *
Я немного доработал макросы Аскольда Волкова (ещё не совсем до конца), получается не хуже, но главное - 100% предсказуемо.


А можно поподробнее про эти макросы?

что-то типа такого?

Код
#define P_PWR   4,7,0

#define port_on(TRIPLE) xport_on(TRIPLE)
#define xport_on(PORT, PIN, ONSTATE) (ONSTATE ? P##PORT##OUT |= BIT##PIN : P##PORT##OUT &= ~BIT##PIN)

#define port_off(TRIPLE) xport_off(TRIPLE)
#define xport_off(PORT, PIN, ONSTATE) (!ONSTATE ? P##PORT##OUT |= BIT##PIN : P##PORT##OUT &= ~BIT##PIN)


использовать:
Код
port_on(P_PWR);
port_off(P_PWR);

Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Jul 27 2011, 14:30
Сообщение #6


фанат дивана
******

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



Цитата(aliko @ Jul 27 2011, 19:02) *
А можно поподробнее про эти макросы?

Вот они: Прикрепленный файл  macros.h.zip ( 731 байт ) Кол-во скачиваний: 100

Или, если уж мы в ветке про scmRTOS, то гляньте на этот вариант.


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Aug 1 2011, 04:28
Сообщение #7


фанат дивана
******

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



Цитата(aliko @ Jul 27 2011, 01:00) *
Под линукс в mspgcc4 (gcc-4.4.5) и 3я и 4я версии ОС при компиляции выдают следующее:


Скачал mspgcc-20110716, поправил ось. Теперь всё компилируется, но при линковке не находит -lstdc++. Похоже мне достался какой-то кривоватый msp-gcc:)
Приаттачиваю исправленный вариант, попробуйте его у себя. Если заработает, я закоммичу исправления.
Прикрепленный файл  scmRTOS_4_MSP.zip ( 38.53 килобайт ) Кол-во скачиваний: 101


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
aliko
сообщение Aug 1 2011, 11:43
Сообщение #8


Участник
*

Группа: Участник
Сообщений: 39
Регистрация: 23-11-05
Пользователь №: 11 254



Цитата(AHTOXA @ Aug 1 2011, 08:28) *
Приаттачиваю исправленный вариант, попробуйте его у себя. Если заработает, я закоммичу исправления.
Прикрепленный файл  scmRTOS_4_MSP.zip ( 38.53 килобайт ) Кол-во скачиваний: 101

Попробовать под линукс смогу только дома, на работе стоит винда. Виндовский mingw32-make не дружит почему-то с мейкфалом для 4й версии ОС, поэтому я перенес Ваши исправления в 3ю версию и она нормально откомпилировалась с новой версией mspgcc-20110716.

Кстати, не подскажите как заставить виндовский make нормально выполнять clean? Не силен в написании мейкфалов, но он ругается по всей видимости на отсутствие rm а когда заменяю его на del то продолжает ругаться на "Missing separator". Может ему не нравятся слеши "/" вместо виндовских "\"? Только вручную их все менять во всем файле как-то муторно выходит...
Go to the top of the page
 
+Quote Post
MrYuran
сообщение Aug 1 2011, 11:49
Сообщение #9


Беспросветный оптимист
******

Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646



Цитата(aliko @ Aug 1 2011, 15:43) *
Кстати, не подскажите как заставить виндовский make нормально выполнять clean? Не силен в написании мейкфалов, но он ругается по всей видимости на отсутствие rm а когда заменяю его на del то продолжает ругаться на "Missing separator". Может ему не нравятся слеши "/" вместо виндовских "\"? Только вручную их все менять во всем файле как-то муторно выходит...

Код
# Очистка
RM = del

clean:
    - $(RM) $(obj_path)\*.o
    - $(RM) $(lst_path)\*.lst


--------------------
Программирование делится на системное и бессистемное. ©Моё :)
— а для кого-то БГ — это Bill Gilbert =)
Go to the top of the page
 
+Quote Post
aliko
сообщение Aug 1 2011, 12:39
Сообщение #10


Участник
*

Группа: Участник
Сообщений: 39
Регистрация: 23-11-05
Пользователь №: 11 254



Цитата(MrYuran @ Aug 1 2011, 15:49) *
Код
# Очистка
RM = del

clean:
    - $(RM) $(obj_path)\*.o
    - $(RM) $(lst_path)\*.lst

Оказалось что ошибка missing separator возникает когда строка начинаются с пробела вместо ТАБа, а мой редактор заменял табы пробелами, то вовсе не устраивало GNU-шный make.
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Aug 1 2011, 14:13
Сообщение #11


фанат дивана
******

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



Цитата(aliko @ Aug 1 2011, 18:39) *
Оказалось что ошибка missing separator возникает когда строка начинаются с пробела вместо ТАБа, а мой редактор заменял табы пробелами, то вовсе не устраивало GNU-шный make.

А, ну тогда понятно. А то я всё не мог понять, какая разница между мейкфайлами от 4й и 3й версийsm.gif

Попробуйте всё же собрать 4ю версию, мне интересно, это у меня что-то криво установилось, или ещё что-то.


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
aliko
сообщение Aug 2 2011, 08:47
Сообщение #12


Участник
*

Группа: Участник
Сообщений: 39
Регистрация: 23-11-05
Пользователь №: 11 254



Цитата(AHTOXA @ Aug 1 2011, 18:13) *
Попробуйте всё же собрать 4ю версию, мне интересно, это у меня что-то криво установилось, или ещё что-то.

У меня вышла аналогичная ошибка линковщика (libstdc++) в линуксе при использовании mspgcc20110716. Однако mspgcc4 под линукс нормально собрал ваш проект. Также как я уже писал под виндовс в mspgcc20110716 проект собирается тоже отлично (правда тут я пробовал 3ю версию ОС с перенесенными туда вашими исправлениями, так как мейкфайл 4й версии много ругается и отказывается собирать проект под виндовс). Ну а что касается mspgcc4 под виндовс то она прекрасно компилирует 3ю версию ОС из репозитария, но очевидно в скором будущем тоже перестанет так как под линуксом последняя сборка mspgcc4 и mspgcc20110716 ведут себя уже одинаково, разве что последней не хватает libstdc++ при линковке. Кстати, на сайте mspgcc говорится следующее: From the GNU Compiler Collection (gcc) we have ported the C compiler (C++ without libstdc++). Однако в сборке под виндовс все работает хорошо. Также в mspgcc4 под линукс есть эта библиотека в папке lib.

Вобщем путаница пока еще та.

Я прилагаю исправленную версию ОС 3й версии, может быть имеет смысл перенести исправления из нее в ветку 3й версии. Она собирается как последней версией компилятора mspgcc20110716, так и по всей видимости более устаревшей сборкой mspgcc4(виндовс). Для этого я следующим образом изменил процедуру подключения заголовочных фалов:

Код
#if __GNUC_MINOR__ < 5
#include <io.h>
#include <signal.h>
#else
#include <legacymsp430.h>
#endif





Цитата(AHTOXA @ Aug 1 2011, 18:13) *
А, ну тогда понятно. А то я всё не мог понять, какая разница между мейкфайлами от 4й и 3й версийsm.gif

Ошибка была в мейкфайле 3й версии у меня. Мейкфайл 4й версии под виндовс ругается сильно и много и к сожалению даже не пишет какая строка иходного файла вызывет ошибку так что отлаживать его довольно проблематично.
Сообщения имеют следющий вид:
Цитата
Ошибка в синтаксисе команды.
Ошибка в синтаксисе команды.
Ошибка в синтаксисе команды.
Ошибка в синтаксисе команды.
--- compiling ./src/main.cpp...
./src/main.cpp:155:1: fatal error: opening dependency file obj/main.d: No such file or directory
compilation terminated.
make: *** [obj/main.o] Error 1


Сообщение отредактировал aliko - Aug 2 2011, 08:49
Прикрепленные файлы
Прикрепленный файл  scmRTOS_3_corrected.zip ( 26.57 килобайт ) Кол-во скачиваний: 9
 
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Aug 2 2011, 09:30
Сообщение #13


фанат дивана
******

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



Цитата(aliko @ Aug 2 2011, 14:47) *
Кстати, на сайте mspgcc говорится следующее: From the GNU Compiler Collection (gcc) we have ported the C compiler (C++ without libstdc++). Однако в сборке под виндовс все работает хорошо.

Скорее всего вы ставили mspgcc20110716 поверх какой-то предыдущей, вот там и осталась эта библиотека. У меня её нет. (и в архиве mspgcc-20110716.zip её нет).
Победил это добавлением ключа линкера
Код
    LD_FLAGS    += -nostdlib

Только вот проверить результат сейчас не на чем.
Цитата
Я прилагаю исправленную версию ОС 3й версии, может быть имеет смысл перенести исправления из нее в ветку 3й версии.
Третью версию договорились не трогать до выхода четвёртой. Потом может быть сделаю. А может и не надо станетsm.gif
Цитата
Мейкфайл 4й версии под виндовс ругается сильно и много и к сожалению даже не пишет какая строка иходного файла вызывет ошибку так что отлаживать его довольно проблематично.

Поставьте решёточку перед строкой .SILENT - может прояснится. Скорее всего, ругается на mkdir. Попробуйте создать директории bak, obj, lst, exe вручную.


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
aliko
сообщение Aug 2 2011, 10:08
Сообщение #14


Участник
*

Группа: Участник
Сообщений: 39
Регистрация: 23-11-05
Пользователь №: 11 254



Цитата(AHTOXA @ Aug 2 2011, 13:30) *
Победил это добавлением ключа линкера
Код
    LD_FLAGS    += -nostdlib

Перестают работать все стандартные библиотечные функции - memcpy, printf и т.д...
Какая-то пирова выходит победа к сожалению sad.gif

Цитата(AHTOXA @ Aug 2 2011, 13:30) *
Поставьте решёточку перед строкой .SILENT - может прояснится. Скорее всего, ругается на mkdir. Попробуйте создать директории bak, obj, lst, exe вручную.

Помогло. Действительно проблема была в создании катлогов.
Однако теперь 4я версия ОС при использовании mspgcc2011... под виндовс ругается на отсутствие libstdc++ аналогично линуксовской версии этого же компилятора, в то время как mspgcc4 собирает проект под виндовс отлично.
В то же время 3я версия ОС собирается без проблем любым компилятором и в любой ОС. ПОхоже все-таки где-то в мейкфайле надо копаться
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- aliko   scmRTOS & MSPGCC. Ошибка компиляции примеров   Jul 26 2011, 19:00
|- - MrYuran   Цитата(AHTOXA @ Jul 27 2011, 14:47) Наско...   Jul 27 2011, 11:02
|- - MrYuran   Цитата(aliko @ Jul 27 2011, 17:02) А можн...   Jul 27 2011, 13:14
|- - AHTOXA   Цитата(aliko @ Aug 2 2011, 16:08) В то же...   Aug 2 2011, 11:06
|- - aliko   Цитата(AHTOXA @ Aug 2 2011, 15:06) Дык, п...   Aug 2 2011, 11:44
|- - AHTOXA   Я разобрался, в чём отличие мейкфайлов. В мейкфайл...   Aug 3 2011, 03:44
|- - AHTOXA   Проверил на небольшом проекте. Работает. Расстроил...   Aug 3 2011, 05:28
|- - MrYuran   Цитата(AHTOXA @ Aug 3 2011, 09:28) 2. Не ...   Aug 3 2011, 06:19
|- - aliko   Цитата(AHTOXA @ Aug 3 2011, 09:28) 2. Не ...   Aug 3 2011, 07:24
|- - MrYuran   Цитата(aliko @ Aug 3 2011, 11:24) А чем ч...   Aug 3 2011, 07:35
|- - aliko   Цитата(MrYuran @ Aug 3 2011, 11:35) Все ф...   Aug 3 2011, 07:40
|- - AHTOXA   Библиотечные будут поштучно. В принципе ничего стр...   Aug 3 2011, 07:53
|- - aliko   Цитата(AHTOXA @ Aug 3 2011, 11:53) ЗЫ. Со...   Aug 3 2011, 07:59
|- - AHTOXA   Цитата(aliko @ Aug 3 2011, 13:59) Кодldfl...   Aug 3 2011, 08:04
|- - aliko   Цитата(AHTOXA @ Aug 3 2011, 12:04) Вместо...   Aug 3 2011, 08:08
|- - AHTOXA   Cобираться-то оно должно. Другое дело, что не рабо...   Aug 3 2011, 08:34
|- - aliko   Цитата(AHTOXA @ Aug 3 2011, 12:34) Нашёл ...   Aug 3 2011, 08:43
||- - AHTOXA   В моей рекомендации и так все строчки initX исправ...   Aug 3 2011, 08:53
||- - aliko   Цитата(AHTOXA @ Aug 3 2011, 12:53) Вы с к...   Aug 3 2011, 09:10
||- - AHTOXA   Аминь ЗЫ. Раз уж вы начали писать в рассылку mspg...   Aug 3 2011, 09:14
|- - Сергей Борщ   QUOTE (AHTOXA @ Aug 3 2011, 11:34) Нашёл ...   Aug 8 2011, 08:44
|- - AHTOXA   Цитата(Сергей Борщ @ Aug 8 2011, 14:44) А...   Aug 8 2011, 09:52
- - aliko   А каков смысл редактирования KEEP поясните пожалуй...   Aug 3 2011, 09:15
|- - AHTOXA   Без KEEP выкидывается не только неиспользуемый код...   Aug 3 2011, 09:17
|- - aliko   Цитата(AHTOXA @ Aug 3 2011, 13:17) Без KE...   Aug 3 2011, 10:09
|- - AHTOXA   Цитата(aliko @ Aug 3 2011, 16:09) Похоже ...   Aug 3 2011, 11:26
|- - aliko   Цитата(AHTOXA @ Aug 3 2011, 15:26) Единст...   Aug 3 2011, 11:29
|- - AHTOXA   Закоммитил исправления в pre-4.   Aug 5 2011, 04:57
|- - aliko   Цитата(AHTOXA @ Aug 5 2011, 08:57) Закомм...   Aug 5 2011, 08:27
- - aliko   Проблемы с GCC кажется продолжаются. При компиляци...   Aug 29 2011, 10:56
- - aliko   Похоже я понял в чем проблема. Злобный компилятор ...   Aug 30 2011, 08:35
- - aliko   Причина ошибки во флаге -fdata-sections который н...   Aug 30 2011, 12:16
- - Сергей Борщ   QUOTE (aliko @ Aug 30 2011, 15:16) лучше ...   Aug 30 2011, 13:04


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 27th June 2025 - 17:14
Рейтинг@Mail.ru


Страница сгенерированна за 0.01608 секунд с 7
ELECTRONIX ©2004-2016