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

 
 
> EWARM. Cделать переход по известному адресу?
VladislavS
сообщение Nov 8 2007, 12:56
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 475
Регистрация: 14-04-05
Из: Москва
Пользователь №: 4 140



Что-то совсем заработался... sad.gif
Ваяю начальный загрузчик. Основная программа лежит по адресу 0x10000000 в параллельном flash. По окончании всех действий надо просто передать на неё управление. Как?

EWARM 4.40. Процессор AT91RM9200.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Rst7
сообщение Nov 9 2007, 11:23
Сообщение #2


Йа моск ;)
******

Группа: Модераторы
Сообщений: 4 345
Регистрация: 7-07-05
Из: Kharkiv-city
Пользователь №: 6 610



Цитата(Николай Z @ Nov 9 2007, 11:56) *
Могу только повториться... Да можно и без линкера...


Не без линкера, а без использования определенных СТАТИЧЕСКИ в линкере адресов.

Цитата
Скорее всего Вы просто плохо понимаете назначение линкера и описания make, которые как раз и отвечают за создание исполняемого кода и распределение памяти.


Отлично понимаю, и в другом случае конечно по возможности определю адреса в .xcl-файле например.

Цитата
Зачем говорить о разных процессорах, если уже в программе main - вы себя жестко привязали к одной-единственной архитектуре наглухо практически - именно путем задания статического адреса? Причем тут тогда другие процессоры c другой архитектурой - у них точка входа почти наверняка будет в другом месте?


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

Только вот вы видимо невнимательно читаете. Я (уж простите такую вольность) предположил, что автору возможно понадобится расширить функционал до вызова функции по произвольному адресу.

Вот что я написал:

Цитата(Rst7 @ Nov 8 2007, 17:23) *
Я понимаю. Представим себе ситуацию, что в процессе развития этого начального загрузчика будет необходимо загружать код не только на адрес 0x10000000, но и на любой другой адрес, который будет передаваться загрузчику (ну например в коммандной строке). Тогда придется перейти к моему варианту.


И автор топика ответил (болд мой)

Цитата(VladislavS @ Nov 8 2007, 22:01) *
Так оно и есть. Запуск кода из параллельной flash был только первым шагом. Теперь буду загружать разные приложения из DataFlash в SDRAM.
Да мне вообще стыдно за такой вопрос. Просто заклинило. Сидел побеждал размещение сегментов в памяти, копирование векторов прерываний, стартовые инициализации, флэшлоадер. Когда все вроде заработало и осталась такая мелочь как передать управление на код и пришлось воспользоваться подзатыльником.

Теперь после просветления никакого труда не составит сделать указатель на функцию и по нему запускать код в любом нужном месте памяти.


Давайте, ваш удар, принц - сделайте это линкером - запускать код в любом нужном месте памяти

Так зачем вы нам тут притчи рассказываете?


--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
Go to the top of the page
 
+Quote Post
Николай Z
сообщение Nov 9 2007, 11:44
Сообщение #3


Местный
***

Группа: Участник*
Сообщений: 418
Регистрация: 20-08-07
Пользователь №: 29 930



Цитата(Rst7 @ Nov 9 2007, 14:23) *
Давайте, ваш удар, принц - сделайте это линкером - запускать код в любом нужном месте памяти

Так зачем вы нам тут притчи рассказываете?


А мы тут что - боксируем? Извините - я во-первых тут этого делать не собираюсь...
А во-ворых Вам уже все рассказали...
Не нравится подход - используйте свой...

А притча затем - что Ваше решение - как раз те самые три ржавых гвоздя.
А второе - это то что Вам рекомендовал г-н Сергей Борщ - это и есть правильное и довольно мобильное решение. Может и не идеальное - но классическое и проверенное.

Но Вы вправе ему как следовать, так и не следовать. Больше тут добавить нечего.

Сообщение отредактировал Николай Z - Nov 9 2007, 11:48
Go to the top of the page
 
+Quote Post
Rst7
сообщение Nov 9 2007, 12:12
Сообщение #4


Йа моск ;)
******

Группа: Модераторы
Сообщений: 4 345
Регистрация: 7-07-05
Из: Kharkiv-city
Пользователь №: 6 610



Цитата(Николай Z @ Nov 9 2007, 13:44) *
А во-ворых Вам уже все рассказали...


Что именно?

Цитата
Не нравится подход - используйте свой...


Мне нравится подход. Но он стреляет только в том случае, если этот адрес - константа.

Цитата
А притча затем - что Ваше решение - как раз те самые три ржавых гвоздя.
А второе - это то что Вам рекомендовал г-н Сергей Борщ - это и есть правильное и довольно мобильное решение. Может и не идеальное - но классическое и проверенное.


Не поверите - классика - это как раз то что я написал biggrin.gif

Я пытаюсь Вам сказать, что автору топика нужен в последствии вызов функции по произвольному адресу. Модифицируйте ваш метод с учетом такого требования - и я умою руки.

В более общем случае рассмотрите вопрос загрузки выполняемых приложений на разные адреса (куда malloc вернул указатель, там и будет приложение). Как такое победить линкером?


--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- VladislavS   EWARM. Cделать переход по известному адресу?   Nov 8 2007, 12:56
- - Сергей Борщ   Цитата(VladislavS @ Nov 8 2007, 14:56) EW...   Nov 8 2007, 13:03
- - VladislavS   Спасибо. Сработало. Как все просто когда знаешь...   Nov 8 2007, 13:23
- - Rst7   Есть еще способ (без линкера): ((void(*)(void))0x...   Nov 8 2007, 13:30
|- - Николай Z   Цитата(Rst7 @ Nov 8 2007, 16:30) Есть еще...   Nov 8 2007, 14:25
|- - Rst7   Цитата(Николай Z @ Nov 8 2007, 16:25) Дык...   Nov 8 2007, 14:41
|- - Николай Z   Цитата(Rst7 @ Nov 8 2007, 17:41) А если э...   Nov 8 2007, 15:09
|- - Rst7   Цитата(Николай Z @ Nov 8 2007, 17:09) В т...   Nov 8 2007, 15:23
||- - VladislavS   Цитата(Rst7 @ Nov 8 2007, 18:23) Представ...   Nov 8 2007, 20:01
|- - aaarrr   Цитата(Николай Z @ Nov 8 2007, 18:09) В т...   Nov 8 2007, 15:25
|- - Николай Z   Цитата(aaarrr @ Nov 8 2007, 18:25) Налили...   Nov 8 2007, 16:33
|- - aaarrr   Цитата(Николай Z @ Nov 8 2007, 19:33) Нра...   Nov 8 2007, 18:49
|- - Сергей Борщ   Цитата(aaarrr @ Nov 8 2007, 20:49) Насчет...   Nov 8 2007, 19:36
|- - aaarrr   Цитата(Сергей Борщ @ Nov 8 2007, 22:36) О...   Nov 8 2007, 23:03
|- - Сергей Борщ   Цитата(aaarrr @ Nov 9 2007, 01:03) По-мое...   Nov 8 2007, 23:29
|- - singlskv   Цитата(Сергей Борщ @ Nov 9 2007, 02:29) P...   Nov 9 2007, 00:24
|- - aaarrr   Цитата(Сергей Борщ @ Nov 9 2007, 02:29) Д...   Nov 9 2007, 02:22
|- - Николай Z   Цитата(aaarrr @ Nov 9 2007, 05:22) ИМХО, ...   Nov 9 2007, 09:56
- - VladislavS   Если делать на классическом С, то что-то типа того...   Nov 9 2007, 07:09
|- - Николай Z   Цитата(Rst7 @ Nov 9 2007, 15:12) Мне нрав...   Nov 9 2007, 13:26
||- - Rst7   Цитата(Николай Z @ Nov 9 2007, 15:26) Нра...   Nov 9 2007, 13:30
|- - Николай Z   Цитата(Rst7 @ Nov 9 2007, 16:30) Видимо я...   Nov 9 2007, 13:39
- - Rst7   Цитата(Николай Z @ Nov 9 2007, 15:39) Я н...   Nov 9 2007, 13:46
|- - Николай Z   Цитата(Rst7 @ Nov 9 2007, 16:46) А теперь...   Nov 9 2007, 16:23
- - zltigo   Да расшумелись . В общем случае несомненно (для ме...   Nov 9 2007, 14:48
- - VladislavS   Да ладно вам на пустом месте ругаться... Чтобы ник...   Nov 9 2007, 17:53
|- - Николай Z   Цитата(VladislavS @ Nov 9 2007, 20:53) Да...   Nov 9 2007, 20:27
- - VladislavS   А меня вот заинтересовал вопрос перемещаемости код...   Nov 10 2007, 05:56
|- - Николай Z   Цитата(VladislavS @ Nov 10 2007, 08:56) А...   Nov 10 2007, 08:59
|- - Сергей Борщ   Цитата(VladislavS @ Nov 10 2007, 07:56) А...   Nov 10 2007, 10:43
|- - Николай Z   Цитата(Сергей Борщ @ Nov 10 2007, 13:43) ...   Nov 10 2007, 11:52
||- - Сергей Борщ   Цитата(Николай Z @ Nov 10 2007, 13:52) Я ...   Nov 10 2007, 12:51
||- - Николай Z   Цитата(Сергей Борщ @ Nov 10 2007, 15:51) ...   Nov 11 2007, 08:33
|- - zltigo   Цитата(Сергей Борщ @ Nov 10 2007, 12:43) ...   Nov 10 2007, 13:04
- - Rst7   Особых проблем с изготовлением перемещаемого кода ...   Nov 12 2007, 06:36
|- - Николай Z   Цитата(Rst7 @ Nov 12 2007, 09:36) Особых ...   Nov 13 2007, 09:37
|- - zltigo   Цитата(Rst7 @ Nov 12 2007, 08:36) Особых ...   Nov 13 2007, 09:51
|- - Николай Z   Цитата(zltigo @ Nov 13 2007, 12:51) Знани...   Nov 13 2007, 12:30
|- - zltigo   Цитата(Николай Z @ Nov 13 2007, 14:30) Да...   Nov 13 2007, 12:49
|- - Николай Z   Цитата(zltigo @ Nov 13 2007, 15:49) Ну в ...   Nov 14 2007, 09:23
- - Rst7   ЦитатаА мы тут уже кинулись зачем-то разрешать зад...   Nov 14 2007, 06:57
|- - alexander55   Цитата(Rst7 @ Nov 14 2007, 09:57) А тут н...   Nov 14 2007, 07:14
- - VladislavS   Не, вопрос я задал вполне конкретный и получил отв...   Nov 15 2007, 20:49


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

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 01:24
Рейтинг@Mail.ru


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