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

 
 
> WinAVR - проблема с секциями в ld, warning: allocated section `.data' not in segment
Сергей Борщ
сообщение Mar 12 2008, 13:36
Сообщение #1


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Мега 8. WinAVR 20070525.
Потребовалось организовать в ОЗУ следующую карту памяти:
0x60-0x71 - зарезервировано
0x71-N - Массив (его размер определяется при объявлении в программе)
N-0x45F - данные программы, стеки, в общем как обычно.

Массив определяю в программе в отдельную секцию:
Код
uint8_t Buffer[5] __attribute__((section("buffer"),used));

Скопировал в каталог проекта скрипт avr4.x, изменил в нем регионы, поставил выходную секцию .bss перед .data, добавил свою секцию в .bss:
Код
MEMORY
{
  text   (rx)   : ORIGIN = 0, LENGTH = 0x17F4
  data   (rw!x) : ORIGIN = 0x800071, LENGTH = 1K
  eeprom (rw!x) : ORIGIN = 0x810000, LENGTH = 512
}
....
  .bss :
  {
    *(buffer);    /* reserved for TxBuffer */
    KEEP (*(buffer))
     PROVIDE (__bss_start = .);
    *(.bss)
    *(.bss*)
    *(COMMON)
     PROVIDE (__bss_end = .);
  }  > data

  .data SIZEOF(.bss) + ADDR(.bss)  : AT (ADDR (.text) + SIZEOF (.text) )   /* load from (.text) + sizeof(.text) */
  {
     PROVIDE (__data_start = .);
    *(.data)
    *(.data*)
    *(.rodata)  /* We need to include .rodata here if gcc is used */
    *(.rodata*) /* with -fdata-sections.  */
    *(.gnu.linkonce.d*)
    . = ALIGN(2);
     _edata = .;
     PROVIDE (__data_end = .);
  }  > data
При компиляции получаю предупреждение: ld.exe: Test.elf: warning: allocated section `.data' not in segment
При этом avr-objcopy при создании .hex добавляет в него данные по адресам __data_start (т.е. 0x8000XX). Начал урезать исходники и makefile, чтобы отыскать откуда ноги. Эффект нестабильный - при выкидывании одних кусков исходника пропадает, при выкидывании других - остается. Получил прилагаемый проект, в котором эффект еще повторяется. При дальнейшем уменьшении исходника эффект пропадает. Причем он пропадает даже при изменении той части исходника, код из которой не используется и выкидывается при линковке. Если убрать --gc-sections, эффект также пропадает. Если в линкерном скрипте убрать ". = ALIGN(2);" в .data (кстати, зачем он тут?) - тоже исчезает. Заметил, что одно из условий появления - если в результате сбора мусора линкером сегмент .data получается пустым, однако это не единственное условие, требуется что-то еще.

Пробовал версию 22071221 - поведение идентично. 20060421 - предупреждение не генерится, но в выходной .hex-файл все равно добавляется мусор.

Вопрос первый - что означает это предупреждение? Гугление не помогло.
Вопрос второй - что я делаю не так и как надо правильно добавлять свои секции?
Вопрос третий - пробовал создавать в линкерном скрипте отдельную выходную секцию для массива. В результате avr-objcopy -o ihex -R .eeprom Test.elf Test.hex помещает в .hex нули по VMA адресам этого массива. При указании -R <имя моей секции> она исчезает из выходного файла, но тогда возникет вопрос - почему в выходном файле не появляются секции .noinit, .bss и секции отладочной информации (перечислены в конце скрипта), хотя они и не были перечислены с ключем -R. Где об этом можно почитать? В документации к ld, avr-objcopy, objcopy, gcc ничего на эту тему не нашел.
Прикрепленные файлы
Прикрепленный файл  ld_quest.zip ( 3.24 килобайт ) Кол-во скачиваний: 41
 


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Сергей Борщ   WinAVR - проблема с секциями в ld   Mar 12 2008, 13:36
- - Сергей Борщ   Провел дополнительные исследования. Выяснил, что п...   Mar 12 2008, 15:02
|- - amw   ЦитатаПри компиляции получаю предупреждение: ld.ex...   Mar 13 2008, 09:08
|- - Сергей Борщ   Цитата(amw @ Mar 13 2008, 11:08) Проблема...   Mar 13 2008, 11:29
|- - singlskv   А почему не сделать просто в Makefile ? : Код.......   Mar 13 2008, 13:01
||- - Сергей Борщ   Цитата(singlskv @ Mar 13 2008, 15:01) А п...   Mar 13 2008, 16:21
||- - amw   Цитата(Сергей Борщ @ Mar 13 2008, 18:21) ...   Mar 13 2008, 18:09
||- - Сергей Борщ   Цитата(amw @ Mar 13 2008, 20:09) я имел в...   Mar 13 2008, 21:19
||- - Сергей Борщ   amw, спасибо за толчок в новом направлении! Мы...   Mar 14 2008, 01:17
|||- - Сергей Борщ   Цитата(Сергей Борщ @ Mar 14 2008, 03:17) ...   Mar 14 2008, 11:43
|||- - amw   Цитата(Сергей Борщ @ Mar 14 2008, 13:43) ...   Mar 14 2008, 11:59
|||- - singlskv   Цитата(Сергей Борщ @ Mar 14 2008, 14:43) ...   Mar 14 2008, 19:08
|||- - Сергей Борщ   Цитата(singlskv @ Mar 14 2008, 21:08) ИМХ...   Mar 14 2008, 19:20
|||- - singlskv   Цитата(Сергей Борщ @ Mar 14 2008, 22:20) ...   Mar 14 2008, 19:40
|||- - Сергей Борщ   Цитата(singlskv @ Mar 14 2008, 21:40) то ...   Mar 14 2008, 20:42
|||- - amw   Цитата(Сергей Борщ @ Mar 14 2008, 22:42) ...   Mar 14 2008, 21:13
||||- - Сергей Борщ   Цитата(amw @ Mar 14 2008, 23:13) Точнее у...   Mar 14 2008, 22:42
||||- - singlskv   Цитата(Сергей Борщ @ Mar 15 2008, 01:42) ...   Mar 14 2008, 23:14
|||- - singlskv   Цитата(Сергей Борщ @ Mar 14 2008, 23:42) ...   Mar 14 2008, 21:38
|||- - amw   Цитата(Сергей Борщ @ Mar 14 2008, 22:42) ...   Mar 15 2008, 08:59
|||- - Сергей Борщ   Цитата(singlskv @ Mar 15 2008, 01:14) сек...   Mar 15 2008, 10:58
||||- - amw   Цитата(Сергей Борщ @ Mar 15 2008, 12:58) ...   Mar 15 2008, 11:59
||||- - Сергей Борщ   Цитата(amw @ Mar 15 2008, 13:59) .bss по ...   Mar 15 2008, 14:19
||||- - amw   Цитата(Сергей Борщ @ Mar 15 2008, 16:19) ...   Mar 15 2008, 16:46
|||- - singlskv   Цитата(amw @ Mar 15 2008, 11:59) А вот эт...   Mar 15 2008, 17:07
||- - amw   Цитата(Сергей Борщ @ Mar 13 2008, 23:19) ...   Mar 14 2008, 09:02
||- - Сергей Борщ   Цитата(amw @ Mar 14 2008, 11:02) Как это ...   Mar 14 2008, 10:40
||- - amw   Цитата(Сергей Борщ @ Mar 14 2008, 12:40) ...   Mar 14 2008, 11:27
||- - Сергей Борщ   Цитата(amw @ Mar 14 2008, 13:27) ОК. Убед...   Mar 14 2008, 12:00
||- - amw   Цитата(Сергей Борщ @ Mar 14 2008, 14:00) ...   Mar 14 2008, 12:15
||- - ReAl   Цитата(Сергей Борщ @ Mar 14 2008, 14:00) ...   Mar 16 2008, 20:26
|- - amw   Цитата(Сергей Борщ @ Mar 13 2008, 13:29) ...   Mar 13 2008, 14:11
- - AHTOXA   Цитата(Сергей Борщ @ Mar 12 2008, 18:36) ...   Mar 17 2008, 16:11
- - Сергей Борщ   Цитата(AHTOXA @ Mar 17 2008, 18:11) Это и...   Mar 17 2008, 20:03


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

 


RSS Текстовая версия Сейчас: 18th July 2025 - 07:15
Рейтинг@Mail.ru


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