|
Эльф, есть пара вопросов... |
|
|
|
Jul 6 2016, 06:27
|
Группа: Участник
Сообщений: 11
Регистрация: 6-07-16
Пользователь №: 92 442

|
Прога режет эльф по секциям. Находит программную секцию. Выдергивает прошивку из программной секции. Это не проблема. В эльфе есть секция .data Как я понял там адресация к виртуальной памяти. Сам вопрос... Реально ли пересчитать адреса при подмене разделов в программной секции ? Не имея исходников... Чип амбарелла. Сорри перед сообществом, если чего по-детски написал.
|
|
|
|
|
Jul 6 2016, 10:41
|

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

|
QUOTE (z768 @ Jul 6 2016, 09:27)  Реально ли пересчитать адреса при подмене разделов в программной секции ? Не имея исходников... Думаю да, запустить линкер, указав ему ваш файл в качестве входного и новый адрес секции .data в командной строке через -Tdata=адрес QUOTE -Tbss=org -Tdata=org -Ttext=org Same as --section-start, with .bss, .data or .text as the sectionname.
--------------------
На любой вопрос даю любой ответ"Write code that is guaranteed to work, not code that doesn’t seem to break" ( C++ FAQ)
|
|
|
|
|
Jul 6 2016, 13:45
|
Группа: Участник
Сообщений: 11
Регистрация: 6-07-16
Пользователь №: 92 442

|
Прогу написал я сам, линкер смогу и упрятать в ресурсы проги. Это не проблема. Я линкер не смог запустить. Понимаю ... командная строка... Матерится в ответ С этим разбираться буду отдельно. Если я правильно понял из доки, ему еще и скрипт нужен... Может кто чего-то подобное совершал, поделитесь плиз. В Си не силен но разберусь, пусть на это уйдет и масса времени.
|
|
|
|
|
Jul 6 2016, 17:12
|

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

|
QUOTE (z768 @ Jul 6 2016, 16:45)  Если я правильно понял из доки, ему еще и скрипт нужен... Если хотите - можете указать и скрипт. У меня получилось вот так: CODE arm-none-eabi-ld -Tdata=0x120000 input.elf -o output.elf Вместо arm-none-eabi-ld подставьте имя своего линкера, с остальным, думаю, разберетесь.
--------------------
На любой вопрос даю любой ответ"Write code that is guaranteed to work, not code that doesn’t seem to break" ( C++ FAQ)
|
|
|
|
|
Jul 7 2016, 15:27
|
Группа: Участник
Сообщений: 11
Регистрация: 6-07-16
Пользователь №: 92 442

|
Спасибо. Если чего не получится задам вопросы. Надеюсь никакие бля-бля-теки не нужно подключать. У меня в системе даже среда арм не установлена. А эльф вскрыть не составило большого труда, почти как работа с текстовым файлом. При этом без всяких сторонних утилит. Правда моя программа заточена только для амбы.
Сообщение отредактировал z768 - Jul 7 2016, 15:28
|
|
|
|
|
Jul 7 2016, 20:45
|

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

|
QUOTE (z768 @ Jul 7 2016, 18:27)  Если чего не получится задам вопросы. Это всегда пожалуйста (см. мою подпись) QUOTE (z768 @ Jul 7 2016, 18:27)  У меня в системе даже среда арм не установлена. Честно говоря, гугля по запросу "umbrella mcu" выдал кучу ерунды и ни одной ссылки на процессор или контроллер. Так что я даже и не знаю - а ARM ли он. Может вам нужен gcc и не для ARM вовсе....
--------------------
На любой вопрос даю любой ответ"Write code that is guaranteed to work, not code that doesn’t seem to break" ( C++ FAQ)
|
|
|
|
|
Jul 7 2016, 21:06
|
Гуру
     
Группа: Участник
Сообщений: 2 219
Регистрация: 16-08-12
Из: Киров
Пользователь №: 73 143

|
Цитата(Сергей Борщ @ Jul 7 2016, 23:45)  Это всегда пожалуйста (см. мою подпись) Честно говоря, гугля по запросу "umbrella mcu" выдал кучу ерунды и ни одной ссылки на процессор или контроллер. Так что я даже и не знаю - а ARM ли он. Может вам нужен gcc и не для ARM вовсе.... Это узкоспециализированная SOC для видеосистем на основе Cortex A9. Доки по этому чипу нет. CPU – ARM Cortex-A9 processor with 32KB/32KB I/D and 128 KB L2 Cache, NEON and FPU, Crypto Engine – AES/3/DES/SHA-1/MD5 DSP / VPU – Ambarella Image and Video DSPs Sensor and Video I/O RGB Bayer sensor port: 8-lane SLVS/MIPI/HiSPI BT.601/656/1120 video in and BT.656/1120 out PAL/NTSC composite SD video out Read more: http://www.cnx-software.com/tag/ambarella/#ixzz4Dl6qnZjl
|
|
|
|
|
Jul 9 2016, 11:32
|
Группа: Участник
Сообщений: 11
Регистрация: 6-07-16
Пользователь №: 92 442

|
Это арм архитектура. Часть материала для чипа а2 у меня есть. Повторяю, вскрыть эльф, зная его строение не составило проблем. При этом не применял никаких сторонних утилит. Выдернуть из секции .техт все програмные разделы, которые входят в прошивку... тоже нет проблем. В эльфе даже нет пересчета контрольных сумм, только смещения и длины. В секцию .техт вложены разделы прошивки, там в каждом разделе есть пересчет crc32. Моя прога все это разложит и при редактировании все правильно пересчитает. Но это так сказать отступление от вопроса, что бы вы были в теме. Меня больше всего интересует сборка эльфа, при подмене разделов в секции .техт. Сорри, пока не занимался и задаю вопросы, пока просто времени не хватает. Почему так всегда происходит, садишься за свою работу, у посторонних тоже проблемы, вот и получается сапожник без сапог...
|
|
|
|
|
Jul 11 2016, 10:13
|
Группа: Участник
Сообщений: 11
Регистрация: 6-07-16
Пользователь №: 92 442

|
Сергей, спасибо за помощь. LD запустил. Уже радует. Но меня интересует немного иной вопрос. Возможно я сам неправильно его задал, либо вы неправильно поняли. Мне не нужно преобразование из эльфа в эльф. При разборке эльфа у меня получается условно говоря, ну 9 секций. Типа sec0.bin, sec1.bin, ... sec8.bin Одну из них я модифицирую, т.е. программную, которая как .техт.... ... мне нужно собрать эльф с новой секцией. Это и есть основной вопрос. Матчасть пока изучаю.
|
|
|
|
|
Jul 12 2016, 08:55
|
Группа: Участник
Сообщений: 11
Регистрация: 6-07-16
Пользователь №: 92 442

|
В общем поразбирался с утилитками из комплекта АРМ. Моя прога выполняет полностью функции arm-elf-objcopy.ехе. Т.е. Код arm-elf-objcopy.exe -O binary -j .text 1.elf Sec.bin Ну возможно с не большими извращениями в названиях файлов. Как эти бинарники слинковать, я так и не понял. Попытался запустить arm-elf-objdump, натравить на секцию - выдает неизвестный формат. По эльфу - все окей.
|
|
|
|
|
Jul 12 2016, 10:24
|

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

|
QUOTE (z768 @ Jul 12 2016, 11:55)  Как эти бинарники слинковать, я так и не понял. Ой, как-то можно было, даже тут на форуме примеры проскакивали. Вот, например. Как-то можно было сразу двоичный файл линковщику давать, но не могу найти те сообщения. Вот еще.
--------------------
На любой вопрос даю любой ответ"Write code that is guaranteed to work, not code that doesn’t seem to break" ( C++ FAQ)
|
|
|
|
|
Jul 12 2016, 13:31
|
Группа: Участник
Сообщений: 11
Регистрация: 6-07-16
Пользователь №: 92 442

|
Сергей, в принципе могу и программу отправить. В личку конечно, ну что б не думал что я чего-то нереальное спрашиваю. Я и сам инет активно читаю... но пока ответов не нахожу.
Возможно программа и другие эльфы разложит, но она заточена под определенный чип. Т.е. амбарелла.
|
|
|
|
|
Jul 16 2016, 15:25
|
Группа: Участник
Сообщений: 11
Регистрация: 6-07-16
Пользователь №: 92 442

|
Сергей, извини, почему на связь не выходил. У нас природа чудес натворила. Как только исправлю последствия, обязательно отпишу. Фото выкладывать не буду, потому как есть оффтоп, сорри.
|
|
|
|
|
Jul 20 2016, 10:07
|
Группа: Участник
Сообщений: 11
Регистрация: 6-07-16
Пользователь №: 92 442

|
Сергей, спасибо за помощь. Кстати больше всего полезной инфы нашел на этом форуме. В общем, просто так прилинковать голый бинарник у меня не получилось с помощью arm-elf-ld. Но при помощи утилитки objcopy я конвертировал бинарник в объектный файл и процесс пошел.
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|