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

 
 
> Вопрос по scatter-файлу, KEIL, stm32f103c8
Nikitoc
сообщение Sep 19 2011, 15:02
Сообщение #1


Местный
***

Группа: Validating
Сообщений: 207
Регистрация: 14-01-09
Из: Днепропетровск
Пользователь №: 43 367



Всем привет. Пытаюсь изменить адрес загрузки кода (и соответственно адрес сброса) путем редактирования scatter-файла.
Его изначальный вид:
Код
LR_IROM1 0x08000000 0x000010000 {   ; load region size_region
     ER_IROM1 0x08000000 0x000010000 { ; load address = execution address
      *.o (RESET, +First)
      *(InRoot$Sections)
      .ANY (+RO)
    
     }
     RW_IRAM1 0x20000000 0x00005000  { ; RW data
      .ANY (+RW +ZI)
     }
   }

Пытаюсь изменить на такой адрес:
Код
LR_IROM1 0x08000600 0x00000FA00 {   ; load region size_region
     ER_IROM1 0x08000600 0x00000FA00 { ; load address = execution address
      *.o (RESET, +First)
      *(InRoot$Sections)
      .ANY (+RO)
  
     }
     RW_IRAM1 0x20000000 0x00005000  { ; RW data
      .ANY (+RW +ZI)
     }
   }

Запускаю отладчик - перехода по вектору сброса не происходит. Что я делаю неправильно?
Цель этих извращений - оставить место для загрузчика (будет отдельным проектом) с 0x08000000 по 0x08000600.
Похожих тем перелопатил целую кучу, ответа не нашел. Может быть я в корне неправильно понимаю процедуру переназначения стартового адреса?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Nikitoc
сообщение Sep 20 2011, 11:52
Сообщение #2


Местный
***

Группа: Validating
Сообщений: 207
Регистрация: 14-01-09
Из: Днепропетровск
Пользователь №: 43 367



Смотрю map-файл:
Код
Memory Map of the image

  Image Entry point : 0x080006ed

  Load Region LR_IROM1 (Base: 0x08000600, Size: 0x00002dfc, Max: 0x0000fa00, ABSOLUTE)

    Execution Region ER_IROM1 (Base: 0x08000600, Size: 0x00002d6c, Max: 0x0000fa00, ABSOLUTE)

    Base Addr    Size         Type   Attr      Idx    E Section Name        Object

    0x08000600   0x000000ec   Data   RO            3    RESET               startup_stm32f10x_md.o
    0x080006ec   0x00000008   Code   RO          868  * !!!main             c_w.l(__main.o)
    0x080006f4   0x00000034   Code   RO         1344    !!!scatter          c_w.l(__scatter.o)

Reset расположен как и требовалось по адресу 0x08000600, т.е. в самом начале. Но почему-то программа все равно не стартует с него. Прям беда.
Может быть вектор сброса задается как-то отдельно? Кто-нибудь делал подобное уже?
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 21st July 2025 - 17:28
Рейтинг@Mail.ru


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