|
|
 |
Ответов
|
Nov 9 2007, 11:23
|

Йа моск ;)
     
Группа: Модераторы
Сообщений: 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. Да мне вообще стыдно за такой вопрос. Просто заклинило. Сидел побеждал размещение сегментов в памяти, копирование векторов прерываний, стартовые инициализации, флэшлоадер. Когда все вроде заработало и осталась такая мелочь как передать управление на код и пришлось воспользоваться подзатыльником.
Теперь после просветления никакого труда не составит сделать указатель на функцию и по нему запускать код в любом нужном месте памяти. Давайте, ваш удар, принц - сделайте это линкером - запускать код в любом нужном месте памятиТак зачем вы нам тут притчи рассказываете?
--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
|
|
|
|
|
Nov 9 2007, 11:44
|
Местный
  
Группа: Участник*
Сообщений: 418
Регистрация: 20-08-07
Пользователь №: 29 930

|
Цитата(Rst7 @ Nov 9 2007, 14:23)  Давайте, ваш удар, принц - сделайте это линкером - запускать код в любом нужном месте памяти
Так зачем вы нам тут притчи рассказываете? А мы тут что - боксируем? Извините - я во-первых тут этого делать не собираюсь... А во-ворых Вам уже все рассказали... Не нравится подход - используйте свой... А притча затем - что Ваше решение - как раз те самые три ржавых гвоздя. А второе - это то что Вам рекомендовал г-н Сергей Борщ - это и есть правильное и довольно мобильное решение. Может и не идеальное - но классическое и проверенное. Но Вы вправе ему как следовать, так и не следовать. Больше тут добавить нечего.
Сообщение отредактировал Николай Z - Nov 9 2007, 11:48
|
|
|
|
|
Nov 9 2007, 12:12
|

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

|
Цитата(Николай Z @ Nov 9 2007, 13:44)  А во-ворых Вам уже все рассказали... Что именно? Цитата Не нравится подход - используйте свой... Мне нравится подход. Но он стреляет только в том случае, если этот адрес - константа. Цитата А притча затем - что Ваше решение - как раз те самые три ржавых гвоздя. А второе - это то что Вам рекомендовал г-н Сергей Борщ - это и есть правильное и довольно мобильное решение. Может и не идеальное - но классическое и проверенное. Не поверите - классика - это как раз то что я написал Я пытаюсь Вам сказать, что автору топика нужен в последствии вызов функции по произвольному адресу. Модифицируйте ваш метод с учетом такого требования - и я умою руки. В более общем случае рассмотрите вопрос загрузки выполняемых приложений на разные адреса (куда malloc вернул указатель, там и будет приложение). Как такое победить линкером?
--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
|
|
|
|
|
Nov 9 2007, 13:39
|
Местный
  
Группа: Участник*
Сообщений: 418
Регистрация: 20-08-07
Пользователь №: 29 930

|
Цитата(Rst7 @ Nov 9 2007, 16:30)  Видимо я недостаточно точно сформулировал. Правильно будет звучать так - "Мне нравится подход с указанием адреса в скрипте/параметрах линкера. Но он стреляет только в том случае, если этот адрес - константа."
Вот и я к тому же, что в варианте, предложенным мной, вполне будет работать переменная вместо константы. А у Вас? Я начинаю подозревать что мы говорим о чем-то разном... Я о вопросе заданном в топе... А Вы об чем? Уточните Вашу задачу - а то я как считал так и продолжаю считать что мы обсуждаем вопрос из топа и ничего более... Зачем надо переменную точку старта - вообще? Цитата(Rst7 @ Nov 9 2007, 15:12)  В более общем случае рассмотрите вопрос загрузки выполняемых приложений на разные адреса (куда malloc вернул указатель, там и будет приложение). Как такое победить линкером? Возможно Вы собираетесь использовать что-то типа дозагрузки overlay-ев? Если я правильно понимаю - то у Вас уже что-то работает в процессоре - ведь кто-то должен вызвать Ваш malloc(), который вам дает указатель?
Сообщение отредактировал Николай Z - Nov 9 2007, 13:41
|
|
|
|
Сообщений в этой теме
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 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
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|