Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: msp430-gcc говорит:
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > MSP430
Alex2172
что за ошибка такая
Warning: internal error: unsupported relocation error

Привожу абстрактный пример
определена структура
typedef MyStruct{
int16_t foo1;
int8_t foo2;
} MyStruct;

есть экземпляр
MyStructure structure;

есть указатель на него
MyStructure * pMyStructure = &structure;

structure->foo1 = (int16_t) 0;//здесь то и вылазит эта ошибка

Есть подозрение в корявом размещении структуры в памяти из-за 16 битной архитектуры, т.к. ошибка пропадает если изменить содержание MyStruct
Буду признателен за любой совет.
rezident
Цитата(Alex2172 @ Jun 16 2005, 17:21)
Привожу абстрактный пример
определена структура
typedef MyStruct{
  int16_t  foo1;
  int8_t    foo2;
} MyStruct;
*


Определение типа в вашем случае должно выглядеть так
Код
typedef struct {
 int16_t  foo1;
 int8_t    foo2;
} MyStruct;

Вы ошиблись в определении структуры.
Alex2172
В продолжении темы добавлю что структура на самом деле упакована, т.е.

typedef struct {
int16_t foo1;
int8_t foo2;
int16_t foo3;
} __attribute__ ((packed)) MyStructure;

тогда если
MyStructure structure;
MyStructure * pMyStructure = &structure;

pMyStructure->foo3 = (int16_t) 0;

генерит что-то типа

mov #llo(0), &structure+3
- вот это ему и не нравиться.
kilgor
Цитата(Alex2172 @ Jun 16 2005, 14:21)
что за ошибка такая
Warning: internal error: unsupported relocation error

Привожу абстрактный пример
определена структура
typedef MyStruct{
  int16_t  foo1;
  int8_t    foo2;
} MyStruct;

есть экземпляр
MyStructure structure;

есть указатель на него
MyStructure * pMyStructure = &structure;

structure->foo1 = (int16_t) 0;//здесь то и вылазит эта ошибка

Есть подозрение в корявом размещении структуры в памяти из-за 16 битной архитектуры, т.к. ошибка пропадает  если изменить содержание MyStruct
Буду признателен за любой совет.
*


Может проблема с выравниванием на границу нечетного байта? И при попытке
доступа к слову не выравненному на границу происходит беда. Может надо придумать как увеличить sizeof вашей структуры до 4 байт, добавив пустой байт, smile.gif.
Alex2172
Цитата(kilgor @ Jun 17 2005, 08:27)
Может проблема с выравниванием на границу нечетного байта? И при попытке
доступа к слову не выравненному на границу происходит беда. Может надо придумать как увеличить sizeof вашей структуры до 4 байт, добавив пустой байт, smile.gif.
*

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