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

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> Эльф, есть пара вопросов...
z768
сообщение Jul 6 2016, 06:27
Сообщение #1





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



Прога режет эльф по секциям.
Находит программную секцию.
Выдергивает прошивку из программной секции.
Это не проблема.
В эльфе есть секция .data
Как я понял там адресация к виртуальной памяти.
Сам вопрос...
Реально ли пересчитать адреса при подмене разделов в программной секции ?
Не имея исходников...
Чип амбарелла.
Сорри перед сообществом, если чего по-детски написал.
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Jul 6 2016, 10:41
Сообщение #2


Гуру
******

Группа: Модераторы
Сообщений: 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)
Go to the top of the page
 
+Quote Post
z768
сообщение Jul 6 2016, 13:45
Сообщение #3





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



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

Я линкер не смог запустить. Понимаю ... командная строка...
Матерится в ответ biggrin.gif
С этим разбираться буду отдельно.

Если я правильно понял из доки, ему еще и скрипт нужен...
Может кто чего-то подобное совершал, поделитесь плиз.
В Си не силен но разберусь, пусть на это уйдет и масса времени.
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Jul 6 2016, 17:12
Сообщение #4


Гуру
******

Группа: Модераторы
Сообщений: 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)
Go to the top of the page
 
+Quote Post
z768
сообщение Jul 7 2016, 15:27
Сообщение #5





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



Спасибо.
Если чего не получится задам вопросы.
Надеюсь никакие бля-бля-теки не нужно подключать.
rolleyes.gif
У меня в системе даже среда арм не установлена.
А эльф вскрыть не составило большого труда, почти как работа с текстовым файлом.
При этом без всяких сторонних утилит.
Правда моя программа заточена только для амбы.

Сообщение отредактировал z768 - Jul 7 2016, 15:28
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Jul 7 2016, 20:45
Сообщение #6


Гуру
******

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



QUOTE (z768 @ Jul 7 2016, 18:27) *
Если чего не получится задам вопросы.
Это всегда пожалуйста (см. мою подпись) wink.gif

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)
Go to the top of the page
 
+Quote Post
mantech
сообщение Jul 7 2016, 21:06
Сообщение #7


Гуру
******

Группа: Участник
Сообщений: 2 219
Регистрация: 16-08-12
Из: Киров
Пользователь №: 73 143



Цитата(Сергей Борщ @ Jul 7 2016, 23:45) *
Это всегда пожалуйста (см. мою подпись) wink.gif

Честно говоря, гугля по запросу "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
Go to the top of the page
 
+Quote Post
z768
сообщение Jul 9 2016, 11:32
Сообщение #8





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



Это арм архитектура.
Часть материала для чипа а2 у меня есть.
Повторяю, вскрыть эльф, зная его строение не составило проблем.
При этом не применял никаких сторонних утилит.
Выдернуть из секции .техт все програмные разделы, которые входят в прошивку... тоже нет проблем.
В эльфе даже нет пересчета контрольных сумм, только смещения и длины.
В секцию .техт вложены разделы прошивки, там в каждом разделе есть пересчет crc32.
Моя прога все это разложит и при редактировании все правильно пересчитает.
Но это так сказать отступление от вопроса, что бы вы были в теме.
Меня больше всего интересует сборка эльфа, при подмене разделов в секции .техт.
Сорри, пока не занимался и задаю вопросы, пока просто времени не хватает.

Почему так всегда происходит, садишься за свою работу, у посторонних тоже проблемы, вот и получается сапожник без сапог...
wink.gif
Go to the top of the page
 
+Quote Post
z768
сообщение Jul 11 2016, 10:13
Сообщение #9





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



Сергей, спасибо за помощь.
LD запустил. Уже радует.
Но меня интересует немного иной вопрос.
Возможно я сам неправильно его задал, либо вы неправильно поняли.
Мне не нужно преобразование из эльфа в эльф.
При разборке эльфа у меня получается условно говоря, ну 9 секций.
Типа sec0.bin, sec1.bin, ... sec8.bin
Одну из них я модифицирую, т.е. программную, которая как .техт....
...
мне нужно собрать эльф с новой секцией.
Это и есть основной вопрос.
Матчасть пока изучаю.
Go to the top of the page
 
+Quote Post
z768
сообщение Jul 12 2016, 08:55
Сообщение #10





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



В общем поразбирался с утилитками из комплекта АРМ.
Моя прога выполняет полностью функции arm-elf-objcopy.ехе.
Т.е.
Код
arm-elf-objcopy.exe -O binary -j .text 1.elf Sec.bin

Ну возможно с не большими извращениями в названиях файлов.
Как эти бинарники слинковать, я так и не понял.
Попытался запустить arm-elf-objdump, натравить на секцию - выдает неизвестный формат.
По эльфу - все окей.
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Jul 12 2016, 10:24
Сообщение #11


Гуру
******

Группа: Модераторы
Сообщений: 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)
Go to the top of the page
 
+Quote Post
z768
сообщение Jul 12 2016, 13:31
Сообщение #12





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



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

Возможно программа и другие эльфы разложит, но она заточена под определенный чип.
Т.е. амбарелла.
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Jul 13 2016, 05:54
Сообщение #13


Гуру
******

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



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


--------------------
На любой вопрос даю любой ответ
"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
z768
сообщение Jul 16 2016, 15:25
Сообщение #14





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



Сергей, извини, почему на связь не выходил.
У нас природа чудес натворила.
Как только исправлю последствия, обязательно отпишу.
Фото выкладывать не буду, потому как есть оффтоп, сорри.
Go to the top of the page
 
+Quote Post
z768
сообщение Jul 20 2016, 10:07
Сообщение #15





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



Сергей, спасибо за помощь.
Кстати больше всего полезной инфы нашел на этом форуме.
В общем, просто так прилинковать голый бинарник у меня не получилось с помощью arm-elf-ld.
Но при помощи утилитки objcopy я конвертировал бинарник в объектный файл и процесс пошел.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 18th July 2025 - 09:42
Рейтинг@Mail.ru


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