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

 
 
> ld script, for dummy
Idle
сообщение Nov 19 2007, 13:04
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 351
Регистрация: 5-04-05
Пользователь №: 3 874



Пишу код для ROM. Два файла на ассемблере: первый выполняется по одним виртуальным адресам, инициализирует кэш и в конце его следует jump в начало второго файла, который должен выполняться по другим виртуальным адресам(другой сегмент, кэширование для него используется). (Это у MIPS kseg1 и kseg0). Физически во flash код расположен непрерывно, понятно.

Вопрос: скрипт для GNU ld как будет выглядеть?

Ссылки на "написание скриптов для полных идиотов" приветствуются. smile.gif
Спасибо.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
e-yes
сообщение Nov 20 2007, 15:23
Сообщение #2


Участник
*

Группа: Новичок
Сообщений: 30
Регистрация: 16-06-07
Пользователь №: 28 483



Там, кстати, имеет смысл определять переменные, указывающие на начало и конец секции. Типа как в BSS/SBSS:
Код
  __bss_start = .;
  __bss_start__ = .;
  .sbss      :
  {
    PROVIDE (__sbss_start = .);
    PROVIDE (___sbss_start = .);
    *(.dynsbss)
    *(.sbss)
    *(.sbss.*)
    *(.gnu.linkonce.sb.*)
    *(.scommon)
    PROVIDE (__sbss_end = .);
    PROVIDE (___sbss_end = .);
  }
  .bss ALIGN(0x10) :
  {
   *(.dynbss)
   *(.bss)
   *(.bss.*)
   *(.gnu.linkonce.b.*)
   *(COMMON)
   /* Align here to ensure that the .bss section occupies space up to
      _end.  Align after .bss to ensure correct alignment even if the
      .bss section disappears because there are no input sections.  */
   . = ALIGN(32 / 8);
  }
  . = ALIGN(32 / 8);
  _end = .;
  _bss_end = .;
  __bss_end__ = .;
Go to the top of the page
 
+Quote Post



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

 


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


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