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

 
 
 
Reply to this topicStart new topic
> Перемещаемый код, Keil - создание перемещаемого кода
Вовка_Бызов
сообщение May 22 2008, 07:44
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 182
Регистрация: 26-11-07
Из: Москва, Зеленоград
Пользователь №: 32 692



Добрый всем день!

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

В наличии - 91R40008

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

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

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

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

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

Спасибо заранее. Буду рад каким-то ссылкам на примеры или собственно примерам.
Go to the top of the page
 
+Quote Post
aaarrr
сообщение May 22 2008, 07:55
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



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

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

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

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

Можно сделать через ROPI/RWPI код, но встроенных средств работы с оверлеями нет.
Go to the top of the page
 
+Quote Post
Вовка_Бызов
сообщение May 22 2008, 08:38
Сообщение #3


Частый гость
**

Группа: Свой
Сообщений: 182
Регистрация: 26-11-07
Из: Москва, Зеленоград
Пользователь №: 32 692



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


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

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

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

Спасибо за помощь
Go to the top of the page
 
+Quote Post
aaarrr
сообщение May 22 2008, 08:50
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



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

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

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

Не видел. Поищите "scatter" на форуме, тема не раз обсуждалась.
Go to the top of the page
 
+Quote Post
Вовка_Бызов
сообщение May 22 2008, 09:39
Сообщение #5


Частый гость
**

Группа: Свой
Сообщений: 182
Регистрация: 26-11-07
Из: Москва, Зеленоград
Пользователь №: 32 692



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


А в какой момент она вызывается? Я не нашел в стартапе ничего, что могло бы походить на запуск такой функции..
Go to the top of the page
 
+Quote Post
aaarrr
сообщение May 22 2008, 10:22
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(Вовка_Бызов @ May 22 2008, 13:39) *
А в какой момент она вызывается?

После перехода на __main.
Go to the top of the page
 
+Quote Post
Вовка_Бызов
сообщение May 22 2008, 11:19
Сообщение #7


Частый гость
**

Группа: Свой
Сообщений: 182
Регистрация: 26-11-07
Из: Москва, Зеленоград
Пользователь №: 32 692



Огромное спасибо! Вроде начинает проясняться.. Тока вот по ссылкам на scatter - больше всего пишут, что в факе читать надо.. А там - в свою очередь - ничего про скаттер.. Ладно - читаем в оригинале. Мож разберемся
Go to the top of the page
 
+Quote Post

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

 


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


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