Перейти к содержанию

    

MAX10 NIOS. Секция .bss почему-то загружается во FLASH UFM

Использую Altera MAX10. Quartus 16.1. Код программы NIOS записываю в UFM.

Увидел непонятную мне вещь: секция .bss полностью записывается в UFM, видимо, чтобы потом скопировать ее в RAM, как и секцию .rwdata. То есть, во flash записано 4 кБ нулей. Ниже кусок из objdump. 0000ab40 - это адрес в UFM.

 

Sections:
Idx Name          Size      VMA       LMA       File off  Algn
 0 .entry        00000020  00008000  00008000  00001000  2**5
                 CONTENTS, ALLOC, LOAD, READONLY, CODE
 1 .exceptions   00000160  00008020  00008020  00001020  2**2
                 CONTENTS, ALLOC, LOAD, READONLY, CODE
 2 .text         00002808  00008180  00008180  00001180  2**2
                 CONTENTS, ALLOC, LOAD, READONLY, CODE
 3 .rodata       00000094  0000a988  0000a988  00003988  2**2
                 CONTENTS, ALLOC, LOAD, READONLY, DATA
 4 .rwdata       00000124  00010000  0000aa1c  00004000  2**2
                 CONTENTS, ALLOC, LOAD, DATA, SMALL_DATA
 5 .bss          000011f8  00010124  0000ab40  00004124  2**2
                 ALLOC, SMALL_DATA

 

Скрипт компоновщика сгенерирован автоматом, я его не менял, вот кусок из него. onchip_memory2_0 - это RAM.

 

    
.bss :  
   {
       __bss_start = ABSOLUTE(.);
       PROVIDE (__sbss_start = ABSOLUTE(.));
       PROVIDE (___sbss_start = ABSOLUTE(.));

       *(.dynsbss)
       *(.sbss .sbss.* .gnu.linkonce.sb.*)
       *(.sbss2 .sbss2.* .gnu.linkonce.sb2.*)
       *(.scommon)

       PROVIDE (__sbss_end = ABSOLUTE(.));
       PROVIDE (___sbss_end = ABSOLUTE(.));

       *(.dynbss)
       *(.bss .bss.* .gnu.linkonce.b.*)
       *(COMMON)

       . = ALIGN(4);
       __bss_end = ABSOLUTE(.);
   } > onchip_memory2_0

 

Пробовал писать так: .bss (NOLOAD) : ... - никакого эффекта, ничего не меняется.

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

На странице Linker Script в BSP Editor, в какую область памяти размещён BSS?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
На странице Linker Script в BSP Editor, в какую область памяти размещён BSS?

В onchip_memory2_0. Это область RAM.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти