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

Нужна помощь по MIPS точнее 1892ВМ10Я

Ну, как минимум навскидку ничего критичного в коде нет. Так что надо смотреть настройки размещения в памяти.

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


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

Очередной косяк найден.  Оказалось, что переменные объявлялись несколько раз, из-за этого их адреса перекрывались.  

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


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

По итогам совместной проработки обнаружили, что проблема была в пересекающихся адресах секций .bss и .sbss:

Вот начало секции .bss:

Disassembly of section .bss:

 

80004028 <testcnt>:

80004028:           00000000             nop

 А вот секция sbss:

 Disassembly of section .sbss:

 

80004038 <_edata>:

80004038:           00000000             nop

Переменные, находящиеся в разных секциях, имели одинаковые адреса. Из-за этого и портились те переменные, которые не ожидались.

Само же пересечение секций было вызвано ошибкой в скрипте линковки:

 .data :
  {
    __data_start = . ;
  /*  .eh_frame = .;  */

    _edata = .;
  } > sdram_c


  .bss ADDR (.data) + SIZEOF (.data) (NOLOAD) :

  {

   __bss_start = .;

   . = ALIGN (64 / 8);

  } > sdram_c

Секция же sbss ставится линковщиком сразу после .data, без указания в скрипте линковки.

Для решения проблемы оказалось достаточно изменить объявление секции bss: 

.data :
  {
    __data_start = . ;
  /*  .eh_frame = .;  */

    _edata = .;
  } > sdram_c


  .bss  (NOLOAD) :

  {

   __bss_start = .;

   . = ALIGN (64 / 8);

  } > sdram_c

 

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


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

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...