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

 
 
> Что за "||warning: internal error: unsupported relocation error|", а главное - как бороться? /mspgcc/
MrYuran
сообщение Sep 22 2009, 05:21
Сообщение #1


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

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



В своё время решил вы..пендриться и расписал протокол обмена и вообще весь УАРТ структурами и юнионами.
Типа того:
Код
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: ошибку генерирует линкер


--------------------
Программирование делится на системное и бессистемное. ©Моё :)
— а для кого-то БГ — это Bill Gilbert =)
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 21st July 2025 - 22:02
Рейтинг@Mail.ru


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