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

 
 
 
Reply to this topicStart new topic
> Средства GCC
zuuuuk
сообщение May 26 2014, 08:46
Сообщение #1


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

Группа: Участник
Сообщений: 188
Регистрация: 26-04-07
Пользователь №: 27 334



Доброго времени суток.
Подскажите, плз.

Можно ли из .elf файла получить исполняемый образ?
Так, что бы можно было разместить этот образ в озу и потом, в нужный момент,
поставить на него указатель и он стал выполняться.
Go to the top of the page
 
+Quote Post
Genadi Zawidowsk...
сообщение May 26 2014, 16:24
Сообщение #2


Профессионал
*****

Группа: Участник
Сообщений: 1 620
Регистрация: 22-06-07
Из: Санкт-Петербург, Россия
Пользователь №: 28 634



Цитата(zuuuuk @ May 26 2014, 16:56) *
из .elf файла получить исполняемый образ?
Так, что бы можно было разместить этот образ в озу


Можно, если этот .elf уже для такой работы предназначен (elf - тот же самый hex, только с дополнительной информацией). Перемещаться с тех адресов, для которых его сформировали, уже нельзя. Разве что процессор эту возможность предусматривает.

Сообщение отредактировал Genadi Zawidowski - May 26 2014, 16:25
Go to the top of the page
 
+Quote Post
zuuuuk
сообщение May 27 2014, 01:13
Сообщение #3


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

Группа: Участник
Сообщений: 188
Регистрация: 26-04-07
Пользователь №: 27 334



Я вот что имею ввиду.
Когда я запускаю отладчик. То он загружает мой elf файл в память
и стартует программу.
Вот можно этот дамп памяти получить на компьютере в отдельном файле?
И можно ли потом его разместить в памяти (правильно) запустить на исполнение?
Go to the top of the page
 
+Quote Post
den_po
сообщение May 27 2014, 02:11
Сообщение #4


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

Группа: Участник
Сообщений: 139
Регистрация: 9-11-12
Из: Санкт-Петербург
Пользователь №: 74 315



Цитата(Genadi Zawidowski @ May 27 2014, 00:34) *
Можно, если этот .elf уже для такой работы предназначен (elf - тот же самый hex, только с дополнительной информацией). Перемещаться с тех адресов, для которых его сформировали, уже нельзя. Разве что процессор эту возможность предусматривает.

В elf бывает информация для перемещения, см. http://www.skyfree.org/linux/references/ELF_Format.pdf 1-21

Цитата(zuuuuk @ May 27 2014, 09:23) *
Я вот что имею ввиду.
Когда я запускаю отладчик. То он загружает мой elf файл в память
и стартует программу.
Вот можно этот дамп памяти получить на компьютере в отдельном файле?
И можно ли потом его разместить в памяти (правильно) запустить на исполнение?

Грузить elf в озу и запускать несложно. Особенно когда нет внешних зависимостей.
Несложные загрузчики использовались умельцами на телефонах siemens, motorola, sonyericsson. Пример такого загрузчика http://perk11.info/svn/ARM/elfloader/elfloader.cpp

Сообщение отредактировал den_po - May 27 2014, 02:14
Go to the top of the page
 
+Quote Post
adnega
сообщение May 27 2014, 02:23
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702



Цитата(zuuuuk @ May 27 2014, 09:23) *
Я вот что имею ввиду.
Когда я запускаю отладчик. То он загружает мой elf файл в память
и стартует программу.
Вот можно этот дамп памяти получить на компьютере в отдельном файле?
И можно ли потом его разместить в памяти (правильно) запустить на исполнение?

objcopy?
Цитата
objcopy -O binary ???.elf ???.bin
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение May 27 2014, 02:24
Сообщение #6


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(zuuuuk @ May 27 2014, 08:23) *
Вот можно этот дамп памяти получить на компьютере в отдельном файле?
Да, программой objcopy.
Цитата(zuuuuk @ May 27 2014, 08:23) *
И можно ли потом его разместить в памяти (правильно) запустить на исполнение?
Вопрос непонятен. Что значит "правильно"?


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
zuuuuk
сообщение May 27 2014, 02:50
Сообщение #7


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

Группа: Участник
Сообщений: 188
Регистрация: 26-04-07
Пользователь №: 27 334



Еще уточнение.
Вот я получил из elf файла bin.
Если я загружу его в озу то
как передать ему управление?
Go to the top of the page
 
+Quote Post
adnega
сообщение May 27 2014, 02:56
Сообщение #8


Гуру
******

Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702



Цитата(zuuuuk @ May 27 2014, 11:00) *
Еще уточнение.
Вот я получил из elf файла bin.
Если я загружу его в озу то
как передать ему управление?

Тем, чем можете загрузить, тем можете и передать.
Что Вы используете?
Go to the top of the page
 
+Quote Post
zuuuuk
сообщение May 27 2014, 04:07
Сообщение #9


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

Группа: Участник
Сообщений: 188
Регистрация: 26-04-07
Пользователь №: 27 334



я использую свою программу.
она получает данные. кладет их в память.
по rs232
Go to the top of the page
 
+Quote Post
adnega
сообщение May 27 2014, 06:38
Сообщение #10


Гуру
******

Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702



Цитата(zuuuuk @ May 27 2014, 12:17) *
я использую свою программу.
она получает данные. кладет их в память.
по rs232

Добавте команду перехода по указанному адресу в функционал прошивки и своей программы.
Go to the top of the page
 
+Quote Post
zuuuuk
сообщение May 27 2014, 06:54
Сообщение #11


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

Группа: Участник
Сообщений: 188
Регистрация: 26-04-07
Пользователь №: 27 334



Спасибо за помощь.
Проблема решена.
Я делаю из elf bin.
загружаю bin в озу.
и передаю управление через указатель.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 19:34
Рейтинг@Mail.ru


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