Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Как расположить переменную в своей секции NIOS?
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Системы на ПЛИС - System on a Programmable Chip (SoPC)
alexPec
Всем доброго дня.

Был проект под 9.1, там такой фокус проходил. В квартусе 13.1 делаю так:

1. Создаю свою секцию в памяти ончип .onch.rwdata (картинка)
2. В коде объявляю переменную:

volatile char pkt[1562] __attribute__ ((section (".onch.rwdata"))); //1562

Все вроде в 9.1 работало, тут говорит так:

d:/altera/13_1/nios2eds/bin/gnu/h-i686-mingw32/bin/../lib/gcc/nios2-elf/4.7.3/../../../../../H-i686-mingw32/nios2-elf/bin/ld.exe: section .text loaded at [0400019c,0400496b] overlaps section .onch.rwdata loaded at [0400019c,040007b7]
collect2.exe: error: ld returned 1 exit status
make: *** [ADV_ddr_test.elf] Error 1

В файле .map вижу такое:

Код
                0x04000000                __alt_mem_altmemddr_0 = 0x4000000
                0x08008000                __alt_mem_onchip_memory2_0 = 0x8008000
               .
               .
               .
                .onch.rwdata    0x080081bc      0x61c load address 0x0400019c
                0x080081bc                PROVIDE (_alt_partition_onch_rwdata_start, ABSOLUTE (.))
                *(.onch.rwdata .onch.rwdata.*)
                .onch.rwdata   0x080081bc      0x61a obj/default/memtest_small.o
                0x080081bc                pkt
                0x080087d8                . = ALIGN (0x4)


Если в объявлении указать секцию .text - все нормально компилируется, если указать совершенно левую секцию, которой даже в BSP не указано (т.е. вообще нет) - ругается точно таким же образом. Как будто не видит эту секцию.

Что сделано не так?
vadimuzzz
попробуйте в скрипте линкера заменить
Код
.onch.rwdata :

на
Код
.onch.rwdata (NOLOAD) :
alexPec
Цитата(vadimuzzz @ Nov 2 2014, 04:16) *
попробуйте в скрипте линкера заменить
Код
.onch.rwdata :

на
Код
.onch.rwdata (NOLOAD) :


Ха! прокатило, скомпилировал как надо! Слава vadimuzzz! В который раз выручает.

А нельзя ли подробней, так сказать для общего развития, что за NOLOAD волшебный и что он делает?
vadimuzzz
Цитата(alexPec @ Nov 3 2014, 00:16) *
А нельзя ли подробней, так сказать для общего развития, что за NOLOAD волшебный и что он делает?

http://ftp.gnu.org/old-gnu/Manuals/ld-2.9....node/ld_21.html

Этот атрибут показывает, что содержимое секции не надо инициализировать. Вопрос в том, зачем линкер вообще решил это делать (load address 0x0400019c). Что, кстати, лежит в ddr по указанному адресу?
alexPec
Цитата(vadimuzzz @ Nov 3 2014, 04:51) *
http://ftp.gnu.org/old-gnu/Manuals/ld-2.9....node/ld_21.html

Этот атрибут показывает, что содержимое секции не надо инициализировать. Вопрос в том, зачем линкер вообще решил это делать (load address 0x0400019c). Что, кстати, лежит в ddr по указанному адресу?


В ДДР лежит по этому адресу секция .text, точнее с этого адреса начинается. Да много что-то в этой ситуации не понятно: зачем пытается затолкнуть в другую секцию, почему когда не инициализируешь - ставит как надо, вроде какая разница? И раз уж толкает в другую секцию, то почему пытается на занятое место поставить?
vadimuzzz
Цитата(alexPec @ Nov 3 2014, 23:14) *
В ДДР лежит по этому адресу секция .text, точнее с этого адреса начинается.

а что конкретно? выложите objdump и map
alexPec
Цитата(vadimuzzz @ Nov 4 2014, 08:20) *
а что конкретно? выложите objdump и map


Прикрепляю, спасибо что помогаете разобраться.
vadimuzzz
Насчет разобраться, это вы загнули, мне самому не понятно wink.gif
Смахивает на баг линкера, т.к. указанный адрес в map(0x0400ef40), откуда якобы идет загрузка, не содержит ничего (0x0400ef40 0x0) wacko.gif
Это указатель на __bss_end и __alt_stack_base
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.