Например TDA7294

Форум РадиоКот • Просмотр темы - Размещение кода по определенному адресу(Scatter-файл)
Форум РадиоКот
Здесь можно немножко помяукать :)

Текущее время: Вс дек 21, 2025 00:22:18

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 16 ] 
Автор Сообщение
Не в сети
 Заголовок сообщения: Размещение кода по определенному адресу(Scatter-файл)
СообщениеДобавлено: Сб фев 17, 2024 20:20:09 
Прорезались зубы

Зарегистрирован: Чт апр 08, 2021 09:46:48
Сообщений: 225
Рейтинг сообщения: 0
Доброго вечера, форумчане!
Подскажите, я не могу разобраться с вопросом, связанным со Scatter-файлом, а именно как разместить какой либо код(функцию или переменную, например) по определенному адресу в Keil . Не хватает знаний. Сразу скажу, ответ на вопрос искал на просторах интернета долго, пишу сюда так как недоперло до конца.
Есть Scatter-файл со следующим содержанием:
LR_IROM1 0x08000000 0x00080000 { ; load region size_region
ER_IROM1 0x08000000 0x00080000 { ; load address = execution address
*.o (RESET, +First)
*(InRoot$$Sections)
.ANY (+RO)
}
RW_IRAM1 0x20000000 0x00020000 { ; RW data
.ANY (+RW +ZI)
}
}

прогуглив, я узнал, что: LR_IROM1 – это регион(область) загрузки, ER_IROM1 – это регион(область) выполнения. Я понял так, что область загрузки это область памяти куда будет загружен нами указанный код , в данном примере код будет загружен в область, которая начинается с адреса 0x08000000 размером 0x00080000.

1) Ну что же такое регион(область) выполнения(ER_IROM1 0x08000000 0x00080000 )?

Второй вопрос:
2) Если я дал правильное определение что такое "LR_IROM1", то почему в теле LR_IROM1 прописано RW_IRAM1 0x20000000 0x00020000, ведь эти адреса( 0x20000000 0x00020000) никак не входят в область 0x08000000 0x00080000 ?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Размещение кода по определенному адресу(Scatter-файл)
СообщениеДобавлено: Вс фев 18, 2024 11:33:54 
Сверлит текстолит когтями
Аватар пользователя

Карма: 22
Рейтинг сообщений: 81
Зарегистрирован: Пн дек 08, 2008 10:58:48
Сообщений: 1262
Откуда: Винница
Рейтинг сообщения: 0
Код:

; 060000 - 07FFFF cut for ext memory
LR_IROM1 0x08000000 0x0005FFFF  {    ; load region size_region
  ER_IROM1 0x08000000 0x0005FFFF  {  ; load address = execution address
   *.o (RESET, +First)
   *(InRoot$$Sections)
   .ANY (+RO)
  }
  RW_IRAM1 0x20000000 0x00010000  {  ; RW data
   .ANY (+RW +ZI)
  }
  RW_IRAM2 0x20010000 0x00010000  {  ; RW data
  *.o (CCM_RW)
  }
}




Код:
volatile uint8_t ID_KEY[25]  __attribute__((section("CCM_RW")));


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Размещение кода по определенному адресу(Scatter-файл)
СообщениеДобавлено: Вс фев 18, 2024 14:50:52 
Прорезались зубы

Зарегистрирован: Чт апр 08, 2021 09:46:48
Сообщений: 225
Рейтинг сообщения: 0
Так понимаю это пример, но по этому примеру я не могу найти ответы на заданные вопросы, пояснение не помешало бы)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Размещение кода по определенному адресу(Scatter-файл)
СообщениеДобавлено: Вс фев 18, 2024 23:13:02 
Сверлит текстолит когтями
Аватар пользователя

Карма: 22
Рейтинг сообщений: 81
Зарегистрирован: Пн дек 08, 2008 10:58:48
Сообщений: 1262
Откуда: Винница
Рейтинг сообщения: 0
https://www.keil.com/pack/doc/CMSIS/Cor ... ct_pg.html
https://habr.com/ru/articles/685028/
https://microsin.net/programming/arm-tr ... esses.html

дернуло же меня ответить...


Вернуться наверх
 
Эиком - электронные компоненты и радиодетали
Не в сети
 Заголовок сообщения: Re: Размещение кода по определенному адресу(Scatter-файл)
СообщениеДобавлено: Вс фев 18, 2024 23:29:57 
Прорезались зубы

Зарегистрирован: Чт апр 08, 2021 09:46:48
Сообщений: 225
Рейтинг сообщения: 0
Я же написал, что я в интернете литературу читал, уточню, последние 3 дня, и эти статьи которые вы отправили тоже читал, но так и не понял.
Самое важное, что я не понял что такое РЕГИОН ЗАГРУЗКИ и что такое РЕГИОН ВЫПОЛНЕНИЯ? Что это?

Я представляю это так, если говорить абстрактно:

Написав программу(код), мы ее загружаем во flash микроконтроллера(МК), далее когда мы перезапускаем МК ядро начинает считывать инструкции программы с flash памяти начиная с 0x0 адреса(если, конечно, предварительно пинами BOOT установлена считывание с flash). Так вот, память flash получается это регион загрузки? И так как ядро выполняет программу из flash то она же считается и регионом выполнения?

Ну я думаю что я ошибаюсь


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Размещение кода по определенному адресу(Scatter-файл)
СообщениеДобавлено: Пн фев 19, 2024 09:59:21 
Сверлит текстолит когтями
Аватар пользователя

Карма: 22
Рейтинг сообщений: 81
Зарегистрирован: Пн дек 08, 2008 10:58:48
Сообщений: 1262
Откуда: Винница
Рейтинг сообщения: 0
Да, конечно, ошибаетесь. Литературу Вы не дочитали - адрес старта в памяти программ начинается с адреса 0x08000000. Можно скорректировать - если в памяти программ находится бутлодер и основная программа , например, это фактически 2 разные программы. Переносится таблица векторов и так дальше. Я не могу здесь читать лекцию на 2 часа, начиная с архитектуры, отвечаю на конкретные вопросы.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Размещение кода по определенному адресу(Scatter-файл)
СообщениеДобавлено: Пн фев 19, 2024 14:32:31 
Прорезались зубы

Зарегистрирован: Чт апр 08, 2021 09:46:48
Сообщений: 225
Рейтинг сообщения: 0
Читать лекцию и не надо)
Конкретный вопрос следующий: что такое РЕГИОН ЗАГРУЗКИ и что такое РЕГИОН ВЫПОЛНЕНИЯ?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Размещение кода по определенному адресу(Scatter-файл)
СообщениеДобавлено: Пн фев 19, 2024 15:07:37 
Держит паяльник хвостом
Аватар пользователя

Карма: 16
Рейтинг сообщений: 205
Зарегистрирован: Вс дек 02, 2012 16:58:33
Сообщений: 936
Откуда: от туда
Рейтинг сообщения: 0
Загрузка начальных значений переменных перед стартом программы откуда осуществляется?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Размещение кода по определенному адресу(Scatter-файл)
СообщениеДобавлено: Пн фев 19, 2024 16:27:56 
Прорезались зубы

Зарегистрирован: Чт апр 08, 2021 09:46:48
Сообщений: 225
Рейтинг сообщения: 0
Загрузка начальных значений переменных перед стартом программы откуда осуществляется?
если речь идет за глобальные переменные, то из flash-памяти.

Сам код и глобальные переменные загружаются во flash память. После запуска глобальные переменные копируются в ОЗУ, а локальные создаются и удаляются в стеке в процессе выполнения программы


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Размещение кода по определенному адресу(Scatter-файл)
СообщениеДобавлено: Пн фев 19, 2024 18:19:26 
Сверлит текстолит когтями
Аватар пользователя

Карма: 22
Рейтинг сообщений: 81
Зарегистрирован: Пн дек 08, 2008 10:58:48
Сообщений: 1262
Откуда: Винница
Рейтинг сообщения: 0
Издевается или троллит. Последняя моя ссылка в этой теме
http://www.vlsiip.com/c/embedded_c/xip.html#LRER


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Размещение кода по определенному адресу(Scatter-файл)
СообщениеДобавлено: Пн фев 19, 2024 18:43:36 
Прорезались зубы

Зарегистрирован: Чт апр 08, 2021 09:46:48
Сообщений: 225
Рейтинг сообщения: 0
Я же написал, что я в интернете литературу читал, уточню, последние 3 дня, и эти статьи которые вы отправили тоже читал, но так и не понял.

Вы читаете что я вам пишу? В самой теме еще это указал


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Размещение кода по определенному адресу(Scatter-файл)
СообщениеДобавлено: Вт фев 20, 2024 18:16:05 
Держит паяльник хвостом
Аватар пользователя

Карма: 16
Рейтинг сообщений: 205
Зарегистрирован: Вс дек 02, 2012 16:58:33
Сообщений: 936
Откуда: от туда
Рейтинг сообщения: 0
По буквам:
Загрузка начальных значений глобальных переменных перед стартом программы из какого региона flash-памяти осуществляется?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Размещение кода по определенному адресу(Scatter-файл)
СообщениеДобавлено: Ср фев 21, 2024 13:40:36 
Прорезались зубы

Зарегистрирован: Чт апр 08, 2021 09:46:48
Сообщений: 225
Рейтинг сообщения: 0
Как я знаю, они располагаются во flash до функции main(). В начале flash располагаются вектора прерывания, после располагаются значения глобальных переменных, далее функция main().


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Размещение кода по определенному адресу(Scatter-файл)
СообщениеДобавлено: Ср фев 21, 2024 15:10:49 
Собутыльник Кота
Аватар пользователя

Карма: 18
Рейтинг сообщений: 433
Зарегистрирован: Вт май 01, 2018 19:44:47
Сообщений: 2556
Рейтинг сообщения: 0
Вообще говоря, это совершенно не обязательно так. А точнее, совсем не так.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Размещение кода по определенному адресу(Scatter-файл)
СообщениеДобавлено: Ср фев 21, 2024 15:25:51 
Прорезались зубы

Зарегистрирован: Чт апр 08, 2021 09:46:48
Сообщений: 225
Рейтинг сообщения: 0
Возможно. Потихоньку мы уходим от основного вопроса темы. Понимаю, все взаимно связано надо знать все, но мне кажется основной вопрос пояснить можно без этих доп. вопросов)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Размещение кода по определенному адресу(Scatter-файл)
СообщениеДобавлено: Ср фев 21, 2024 16:39:15 
Друг Кота
Аватар пользователя

Карма: 139
Рейтинг сообщений: 2918
Зарегистрирован: Чт янв 10, 2008 22:01:02
Сообщений: 24614
Откуда: Московская область, Фрязино
Рейтинг сообщения: 0
пояснить можно без этих доп. вопросов)

IRAM это область используемого ОЗУ. Причем тут флеш? Вы можете загрузить код в ОЗУ и вызвать его исполнение, но это процедура рантайма и к вопросу темы отношения не имеет.
Область загрузки и область исполнения во флеше (IROM) вами были интерпретированы верно.


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 16 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 11


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y