Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Перемещаемый код
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
Вовка_Бызов
Добрый всем день!

Сразу прошу быть ко мне немного снисходительнее - я тока осваиваю как среду Keil, так и ARM проц.

В наличии - 91R40008

Задач собственно две. Одна - по проще - нужно как-то построить проект, чтобы транслируемый код загружался во флэш, а при запуске - видимо в стартапе - переносился в ОЗУ и уже там исполнялся..

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

Вопросы - как это все можно прописать в исходном коде? В свойствах проекта?

Как и в какой момент лучше производить перенос кода из флэш в озу?

Как можно сделать (если это возможно) чтобы 2-3 части кода ложились во флэше в разные места, но транслировались бы с учетом исполнения в ОЗУ в одном и том же месте?

Спасибо заранее. Буду рад каким-то ссылкам на примеры или собственно примерам.
aaarrr
Цитата(Вовка_Бызов @ May 22 2008, 11:44) *
Задач собственно две. Одна - по проще - нужно как-то построить проект, чтобы транслируемый код загружался во флэш, а при запуске - видимо в стартапе - переносился в ОЗУ и уже там исполнялся..

Это делает scatter loader. Смотрите описание линкера, там есть примеры.

Цитата(Вовка_Бызов @ May 22 2008, 11:44) *
Вторая - следствие первой - создание многосегментного кода, который бы подгружался в процессе исполнения (ессно - загрузчик фиксированно лежит уже переписанный в ОЗУ).

Как можно сделать (если это возможно) чтобы 2-3 части кода ложились во флэше в разные места, но транслировались бы с учетом исполнения в ОЗУ в одном и том же месте?

Можно сделать через ROPI/RWPI код, но встроенных средств работы с оверлеями нет.
Вовка_Бызов
Цитата
Это делает scatter loader. Смотрите описание линкера, там есть примеры.


Почитал. Есть два вопроса.

Правильно ли я понял, что этот механиз позволяет задавать разные адреса для загрузки и последующего исполнения, но само перемещение перед исполнением лежит уже на мне?

Нет ли альтернативного описания scatter loader на русском языке - я не владею английским в совершенстве и боюсь упустить какие-то тонкости.. sad.gif

Спасибо за помощь
aaarrr
Цитата(Вовка_Бызов @ May 22 2008, 12:38) *
Правильно ли я понял, что этот механиз позволяет задавать разные адреса для загрузки и последующего исполнения, но само перемещение перед исполнением лежит уже на мне?

Перемещение делает библиотечная функция, которая автоматически подключается линкером. Самому напрягаться нет необходимости.

Цитата(Вовка_Бызов @ May 22 2008, 12:38) *
Нет ли альтернативного описания scatter loader на русском языке - я не владею английским в совершенстве и боюсь упустить какие-то тонкости.. sad.gif

Не видел. Поищите "scatter" на форуме, тема не раз обсуждалась.
Вовка_Бызов
Цитата
Перемещение делает библиотечная функция, которая автоматически подключается линкером. Самому напрягаться нет необходимости.


А в какой момент она вызывается? Я не нашел в стартапе ничего, что могло бы походить на запуск такой функции..
aaarrr
Цитата(Вовка_Бызов @ May 22 2008, 13:39) *
А в какой момент она вызывается?

После перехода на __main.
Вовка_Бызов
Огромное спасибо! Вроде начинает проясняться.. Тока вот по ссылкам на scatter - больше всего пишут, что в факе читать надо.. А там - в свою очередь - ничего про скаттер.. Ладно - читаем в оригинале. Мож разберемся
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.