Ошибка SPU ячейки в C - PullRequest
1 голос
/ 15 мая 2011

Когда я компилирую программу SPU, я получаю следующую ошибку компиляции:

(.text+0x28): relocation truncated to fit: SPU_ADDR18 against symbol `_end' defined in *ABS* section in spu

Что это значит?

Ошибка появляется только после того, как я включил в самом начале:

#define CACHE_NAME MY_CACHE

#define CACHED_TYPE double

#define CACHELINE_LOG2SIZE 11

#define CACHE_LOG2NWAY 2

#define CACHE_LOG2NSETS 4

#include <cache-api.h>

Ответы [ 2 ]

1 голос
/ 16 мая 2011

Ошибка означает:

  • объект ссылается на символ '_end', используя режим перемещения SPU_ADDR18

  • фактический адрес символа '_end' слишком велик для используемого режима ссылки.

_end - это символ, традиционно определяемый в конце кода и сегмента данных. Поэтому, скорее всего, у вас больше кода и статических данных, чем в поддержке SPU. (SPU поддерживает 256 Кбайт, что составляет 18 бит адреса, поэтому я думаю, что тип перемещения SPU_ADDR18 является наиболее гибким).

0 голосов
/ 16 мая 2011

Ошибка означает, что создаваемый вами elf-файл не помещается в память SPU;вероятно, потому что заголовок cache-api.h определяет некоторые статические / глобальные переменные.Обратите внимание, что ваш исполняемый файл не может использовать более 251 КБ памяти (часть которого, вероятно, будет частью ядра задания, кода и данных).

...