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

 
 
> MULTI for MIPS, проблемма линковки
jorikdima
сообщение Sep 15 2006, 07:25
Сообщение #1


тут может быть ваша реклама
*****

Группа: Свой
Сообщений: 1 164
Регистрация: 15-03-06
Из: Санкт-Петербург/CA
Пользователь №: 15 280



Добрый день.
Уже достало мучится с этим Гринхилсом.
Существует достаточно большой проект для MIPS написаный на С. Изначально писался под компилятор GNU sde toolchain, соответственно были написаны скрипты компилятору и линкеру. Все нормально компилируется и линкуется. Но встала необходимость (рассматривается возможность на самом деле) перейти на другой компилятор, например МУЛЬТИ (под МИПС больше ничем особо не пахнет).
И вот вроде бы перенес все настроики компилятора, все вроде бы компилится, дело за малым - линковка biggrin.gif . И вот тут проблему никак не удается решить. Создаю свой файл дириктив линкеру, прописываю там области памяти и секции (то как он парсит этотт файл - отдельная история cranky.gif ):
Код
CONSTANTS
{
    FLAS_BASE = 0xBFC00000
;
    FLASH_OFFSET = 0x4000
;
    RAM_BASE = 0xA0000000
;
    SCRATCHPAD_BASE = 0xBC000000
;
}
MEMORY
{
    flash    : ORIGIN = FLAS_BASE + FLASH_OFFSET ,    LENGTH = 10M
    ram    : ORIGIN = RAM_BASE ,    LENGTH = 10M
    scratch : ORIGIN = SCRATCHPAD_BASE , LENGTH = 10M
}
SECTIONS
{
    .code : {
        init.o ( .text )
        * ( .text )
        * ( .rodata )
        * ( .rel.dyn )
        * ( .eh_frame )
        
    } > flash
    .initial_dataf ROM ( .initial_data ) : {
        * ( .data )
        * ( .lit8 )
        * ( .lit4 )
        * ( .sdata )
    } > .
    .uninitial_dataf ROM ( .uninitial_data ) : {
        * ( .sbss )
        * ( .scommon )
        * ( .bss )
        * ( COMMON )
    } > .
    .isramf  ROM ( .isram ) : {
        * ( .isram )
    } > .
    .ROM.free_space ROM ( .free_space ) : > .

    end = .;

    .initial_data : > ram
    .uninitial_data : > .
    .free_space : > .
    .isram : > scratch
    

}


Ставлю в настройках проекта [Linker Command File]= мой файл. Типа теперь он должен использовать ТОЛЬКО МОИ секции, но линкер упорно продолжает видеть также свой дефолтовый файл standalone_ram.ld . И пишет, что одна из моих секций перекрывается с одной из секций в его файле.
Код
SECTIONS
{
    .zdata                        ABS : > zero_memory
    .zbss                        ABS : > .
    .rozdata                            ABS : > .

    .text                            : > dram_memory
    .syscall                            : > .
    .secinfo                            : > .
    .fixaddr                            : > .
    .fixtype                            : > .
    .robase                           ALIGN(8) : > .
    .rodata                            : > .

    .sdabase                               ALIGN(8) : > .
    .sdata                            : > .
    .sbss                            : > .
    .rosdata                            : > .
    .data                            : > .
    .profile                            : > .
    .bss                            : > .
    .heap                ALIGN(8) PAD(heap_reserve)  : > .
    .stack                ALIGN(8) PAD(stack_reserve) : > .

Причем то что он продолжает как то использовать свой файл - тоочно, так как если его открытьь и закоментить (как то изменить) то он начинает выдавать адекватные ошибки по этому поводу. Почему он упорно не хочет отказыватся от своего файла.

Второе. Я вообще хотел бы на выходе получить бинарник. Для этого я так понимаю надо поставить опцию Binary Code Generation но сразу при построении проекта среда говорит, что для МИПСа я этого сделатьь не могу, почему??? Может эта опция не о том? Для х86 - тоже самое. Если без этой опции скомпилить сэмпл, то ниче похожего на бинарник нету, только объектные файлы.
Go to the top of the page
 
+Quote Post



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

 


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


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