Перейти к содержанию
    

Эльф, есть пара вопросов...

Прога режет эльф по секциям.

Находит программную секцию.

Выдергивает прошивку из программной секции.

Это не проблема.

В эльфе есть секция .data

Как я понял там адресация к виртуальной памяти.

Сам вопрос...

Реально ли пересчитать адреса при подмене разделов в программной секции ?

Не имея исходников...

Чип амбарелла.

Сорри перед сообществом, если чего по-детски написал.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Реально ли пересчитать адреса при подмене разделов в программной секции ?

Не имея исходников...

Думаю да, запустить линкер, указав ему ваш файл в качестве входного и новый адрес секции .data в командной строке через -Tdata=адрес

 

-Tbss=org

-Tdata=org

-Ttext=org

Same as --section-start, with .bss, .data or .text as the sectionname.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Прогу написал я сам, линкер смогу и упрятать в ресурсы проги.

Это не проблема.

 

Я линкер не смог запустить. Понимаю ... командная строка...

Матерится в ответ :biggrin:

С этим разбираться буду отдельно.

 

Если я правильно понял из доки, ему еще и скрипт нужен...

Может кто чего-то подобное совершал, поделитесь плиз.

В Си не силен но разберусь, пусть на это уйдет и масса времени.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Если я правильно понял из доки, ему еще и скрипт нужен...
Если хотите - можете указать и скрипт. У меня получилось вот так:

arm-none-eabi-ld -Tdata=0x120000 input.elf -o output.elf

Вместо arm-none-eabi-ld подставьте имя своего линкера, с остальным, думаю, разберетесь.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Спасибо.

Если чего не получится задам вопросы.

Надеюсь никакие бля-бля-теки не нужно подключать.

:rolleyes:

У меня в системе даже среда арм не установлена.

А эльф вскрыть не составило большого труда, почти как работа с текстовым файлом.

При этом без всяких сторонних утилит.

Правда моя программа заточена только для амбы.

Изменено пользователем z768

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Если чего не получится задам вопросы.
Это всегда пожалуйста (см. мою подпись) ;)

 

У меня в системе даже среда арм не установлена.
Честно говоря, гугля по запросу "umbrella mcu" выдал кучу ерунды и ни одной ссылки на процессор или контроллер. Так что я даже и не знаю - а ARM ли он. Может вам нужен gcc и не для ARM вовсе....

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Это всегда пожалуйста (см. мою подпись) ;)

 

Честно говоря, гугля по запросу "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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Это арм архитектура.

Часть материала для чипа а2 у меня есть.

Повторяю, вскрыть эльф, зная его строение не составило проблем.

При этом не применял никаких сторонних утилит.

Выдернуть из секции .техт все програмные разделы, которые входят в прошивку... тоже нет проблем.

В эльфе даже нет пересчета контрольных сумм, только смещения и длины.

В секцию .техт вложены разделы прошивки, там в каждом разделе есть пересчет crc32.

Моя прога все это разложит и при редактировании все правильно пересчитает.

Но это так сказать отступление от вопроса, что бы вы были в теме.

Меня больше всего интересует сборка эльфа, при подмене разделов в секции .техт.

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

 

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

;)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Сергей, спасибо за помощь.

LD запустил. Уже радует.

Но меня интересует немного иной вопрос.

Возможно я сам неправильно его задал, либо вы неправильно поняли.

Мне не нужно преобразование из эльфа в эльф.

При разборке эльфа у меня получается условно говоря, ну 9 секций.

Типа sec0.bin, sec1.bin, ... sec8.bin

Одну из них я модифицирую, т.е. программную, которая как .техт....

...

мне нужно собрать эльф с новой секцией.

Это и есть основной вопрос.

Матчасть пока изучаю.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В общем поразбирался с утилитками из комплекта АРМ.

Моя прога выполняет полностью функции arm-elf-objcopy.ехе.

Т.е.

arm-elf-objcopy.exe -O binary -j .text 1.elf Sec.bin

Ну возможно с не большими извращениями в названиях файлов.

Как эти бинарники слинковать, я так и не понял.

Попытался запустить arm-elf-objdump, натравить на секцию - выдает неизвестный формат.

По эльфу - все окей.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Сергей, в принципе могу и программу отправить.

В личку конечно, ну что б не думал что я чего-то нереальное спрашиваю.

Я и сам инет активно читаю... но пока ответов не нахожу.

 

Возможно программа и другие эльфы разложит, но она заточена под определенный чип.

Т.е. амбарелла.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Спасибо, конечно, но зачем? Мне хватает тех программ, которые идут в комплекте с гцц.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Сергей, извини, почему на связь не выходил.

У нас природа чудес натворила.

Как только исправлю последствия, обязательно отпишу.

Фото выкладывать не буду, потому как есть оффтоп, сорри.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Сергей, спасибо за помощь.

Кстати больше всего полезной инфы нашел на этом форуме.

В общем, просто так прилинковать голый бинарник у меня не получилось с помощью arm-elf-ld.

Но при помощи утилитки objcopy я конвертировал бинарник в объектный файл и процесс пошел.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...