Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Что за "||warning: internal error: unsupported relocation error|"
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Cредства разработки для МК > GNU/OpenSource средства разработки
MrYuran
В своё время решил вы..пендриться и расписал протокол обмена и вообще весь УАРТ структурами и юнионами.
Типа того:
Код
typedef union Data
{
    float fData;
    int iData;
    unsigned char ucData[4];
} __attribute__ ((packed)) Data;

/**
*   Описание пакета запроса от хоста
*/
struct stCommand
{
    unsigned char Preamble;
    unsigned char OpCode;
    Data DataField;
    unsigned char CRC;
};

union CommandBuffer
{
    struct stCommand volatile   Command;
    unsigned char volatile      Bytes[sizeof(struct stCommand)];
};

Далее объявляю
static union CommandBuffer volatile InBuffer;
static union CommandBuffer volatile TempInBuffer;

Так вот, пока я работаю только с InBuffer (заполняю в прерывании от УАРТа и разгребаю в основном цикле), всё нормально.
Далее, захотелось по приёму фрейма копировать его в TempInBuffer, с тем чтобы спокойно обрабатывать, в то время как принимаем новую команду (чтобы новые данные не затирали старые).

Вот тут и начинается.
Куда копать?

С union Data тоже забавная ситуация. Я сначала сделал
Код
typedef union Data
{
    float fData;
    int iData[2];
    unsigned char ucData[4];
} __attribute__ ((packed)) Data;

Так вот: fData - нормально работает, ucData[] - тоже, а при вызове iData[] возникает ошибка.
а вот int iData (не массив) - тоже нормально работает.

Что за чертовщина! И дёрнуло связаться с этими юнионами... Никогда не пользовался и был вполне счастлив...

PS: ошибку генерирует линкер
Сергей Борщ
Ошибка внутри самого компилятора или линкера. По-хорошему о ней надо писать не сюда, а в баг-трекер или в список рассылки mspgcc-users@lists.sourceforge.net с приложением минимального кода, воспроизводящего ошибку.
MrYuran
Нашёл вот что-то подобное
Пишут типа отключить __attribute__ ((packed)), вроде пробовал...

Ладно, будем копать... smile3046.gif

Оппа... Кажися, прокатило... laughing.gif

Таки да, прокатило!
Видимо, действительно проблем был в аттрибутах упаковки

Цитата(Сергей Борщ @ Sep 22 2009, 09:38) *
По-хорошему о ней надо писать не сюда, а в баг-трекер или в список рассылки mspgcc-users@lists.sourceforge.net

Боюсь, ниасилю...
Да и наверно, никто возиться с такой мелочью не станет, если только готовый патч приложить...
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.