У Вас отключён javascript.
В данном режиме, отображение ресурса
браузером не поддерживается

Dash & Cam - Форум для обсуждения видеорегистраторов и экшн-камер

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.



Редактирование прошивок Ambarella

Сообщений 91 страница 120 из 123

91

Kaliningrad написал(а):

Одну таблицу вряд ли. Возможно, амбарелловсками утилитами можно конфиги подливать.
Но мы ж не Амбарелла...)

Ну была мысль если табличку битрейтом можно из скрипта перекрыть... То может и тут получится..

0

92

Kaliningrad написал(а):

Одну таблицу вряд ли. Возможно, амбарелловсками утилитами можно конфиги подливать.
Но мы ж не Амбарелла...)


Продолжаю думать в эту сторону ;)
Эти файлики при загрузке читаются из прошивки и загружаются куда-то в память... видимо в память которая используется VSP процом.
Что бы их передергивать на ходу надо
1. знать куда в памяти эти таблички ложатся
2. иметь возможность через внешнее соединение (wifi) править значения прямо в памяти
по тем адресам куда они ложатся...

Если есть возможность читать/писать память VSP проца то можно наверное найти куда в ней легли таблицы
и перекрывать их на 'горячую'

ЗЫ... продолжаю пилить софтину... времени катастрофически не хватает...
В принципе уже есть все задуманные функции но пока в реальности не опробовал
И надо переделать интерфейс пользовательский ... а то очень заморочный получился...

0

93

v_max написал(а):

времени катастрофически не хватает...


Как знакомо...)

0

94

Кто хочет попробовать...
Вот сырая не оттестированая версия редактора на попроб
Что бы запустить нужна установленная java 1.8 (JRE) (JRE 1.8)

Сам редактор  https://drive.google.com/open?id=1aUQup … B0dUub5Eva
Распаковать зип.. запустить run.bat...
Ну или из коммандной строки
>java -jar TableEditor-1.0-SNAPSHOT.jar

1. С помощью AE распаковываем на секции и распаковываем ROM
2. запускаем run.bat
3. В открвшемся окошке в меню файл -> Select File выбираем файл (например adj_video_default_00_Imx117)
4. В поле Addr проставляем адрес начала тройки RGB табличек и жмем Load - загружаем сырые данные тройки из выбранного файла
5. Жмем Raw->Curve  (обрабатывает входной массив алгоритмом дугласа-пеккера для выделения ключевых точек максимального отклонения)
по этим точкам строится кубический сплайн - получаем кривые

Ну и дальше можно работать...
Правой кнопкой мыши можно добавить удалить точку (поиск в радиусе 5пикселей от точки нажатия)
Можно таскать существующие точки
Внизу есть выключатели RGB. изменения (удаление, вставка, перемещение) делаются только для включеных каналов.
Пара выключателей Raw и Сurve управляют только отображением.
Через меню копирования можно копировать каналы один в другой или сразу в два других
Копировать можно как исходные (RAW) так и кривые..
Через меню файлов можно экспортировать как сырые данные тройки в отдельный файлик так и импортировать из файлика...
То же самое для кривых... В операциях экспорта и импорта участвуют все каналы тройки.

Когда вас удовлетворит вид кривых надо нажать Curve->Raw (создать сырые массивы из кривых)
Ну а потом можно нажать Save для записи в то место откуда эти данные былы загружены..
Ну а если поменять адрес (или даже выбрать другой файл) то можно записать по другому адресу или в другой файл...

А... ну и данные в табличке справа тоже можно редактировать...
При вводе будет создан узел кривой если его еще нет в этой точке или изменен существующий

Ну как-то так...
Побыстрому описал...
Чего не хватит говорите... допилим

Собирать прошивку обратно не пробовал еще ;)))

ЗЫ дуракоупоротостью не заморачивался. От дурных действий возможны непредсказуемые ошибки.


https://image.ibb.co/nzkH9G/fors12025.gif

Отредактировано v_max (23.07.2018 19:03:58)

+4

95

v_max написал(а):

Жмем Raw->Curve  (обрабатывает входной массив алгоритмом
дугласа-пеккера для выделения ключевых точек максимального отклонения)
по этим точкам строится кубический сплайн - получаем кривые


На данном этапе появляется своеобразная кривая, отличная от реальной.
http://s7.uploads.ru/t/BzIrD.jpg

А сама суть правки мышкой и экспортом кривой это ж просто красота...)

Просто поудалял точки, выставил новые, подвигал и экспортнулось всё как и нарисовано.
Хотя можно не открывать файл, а  нарисовать новую кривую и просто экспортировать её.
Низкий поклон за утилиту и грандиозную экономию времени, мил человек!


Отвёл отдельную ветку под это дело: Table Editor v1.0 (by v_max)

+2

96

А глупый вопрос... а никто часом не научился расковыривать и пересобирать образ линуха из прошивки?
Если в нем нет комманды t ... в образе в нашей камере то может попробовать ее отковырять из другой прошивки
и вковырять в нашу?

0

97

v_max написал(а):

Если в нем нет комманды t ... в образе в нашей камере то может попробовать ее отковырять из другой прошивки
и вковырять в нашу?

Из Линукса нет доступа в RTOS. Это Амбашелл надо потрошить.

Отредактировано nutsey (26.08.2018 14:52:08)

+2

98

nutsey написал(а):

Из Линукса нет доступа в RTOS. Это Амбашелл надо потрошить.

т.е если я вас правильно понял В ПРИНЦИПЕ нет возможности зайдя телнетом
по вайфаю в линух выполнить комманды амбашелла?

Н...ным местом чую ДОЛЖНА быть возможность как то подцепиться к амбашеллу снаружи.
Вот только как... ;(

0

99

v_max написал(а):

т.е если я вас правильно понял В ПРИНЦИПЕ нет возможности зайдя телнетом
по вайфаю в линух выполнить комманды амбашелла?

Ну можно на карте памяти создать скрипт с нужными командами и перегрузить камеру.

v_max написал(а):

Н...ным местом чую ДОЛЖНА быть возможность как то подцепиться к амбашеллу снаружи.
Вот только как... ;(

Кстати, если есть желание попробовать перенести код из RTOS, вот вам донор с рабочими командами Амбашелла: http://ez-team.com/xiaomi.html

+2

100

nutsey
Насчет через карту выполнять команды понятно..
Была даже мысля написать autoexec.ash скрипт зацикленный который будет проверять наличие
например файлика с определенным именем и при его появлении выполнять
команды из него и удалять файлик и опять ждать появление нового...
Тогда можно написать софтинку чтобы телнетом через вафлю пропихивать эхом на карту
в во временный файлик команду и переименовывать ее в тот файлик который скрипт
ожидает...
Ну и сделать таким манером некоторое подобие интерактивного взаимодействия с амбой

Насчет перенести код ... Пока тяму не хватает на такие подвиги. ;)
Я еще не понял как его расковыривать

0

101

v_max написал(а):

Была даже мысля написать autoexec.ash скрипт зацикленный который будет проверять наличие
например файлика с определенным именем и при его появлении выполнять
команды из него и удалять файлик и опять ждать появление нового...
Тогда можно написать софтинку чтобы телнетом через вафлю пропихивать эхом на карту
в во временный файлик команду и переименовывать ее в тот файлик который скрипт
ожидает...
Ну и сделать таким манером некоторое подобие интерактивного взаимодействия с амбой

Я делал что-то подобное на А7. Скрипт в цикле писал в фалик значение текущей экспозиции и пулял его по вайфаю. Я так хотел интерактивные настройки шумодава и резкости сделать, но забил, так как на том А7 через пару минут врубался режим экономии энергии потому что не было физических нажатий кнопок...

v_max написал(а):

Насчет перенести код ... Пока тяму не хватает на такие подвиги.
Я еще не понял как его расковыривать

Разберёмся. Главное - донор есть.

+3

102

вот такая штука нашлась
Если пoдцепить USB компу (в режиме внешнего питания)
Потом по вафле законнектиться
и выполнить
/usr/local/share/script # ./usb_console.sh

То винда обнаружит новое устройство Gadget Serial V2.4
USB\VID_0525&PID_A4A7\5&C0AA250&0&2
Что бы это было? Йо... не то ли что я искал?
Пока дров моя XPюша не нашла

ЗЫ там кстати среди скриптов есть еще несколько usb_******.sh

Отредактировано v_max (28.08.2018 19:27:25)

0

103

nutsey написал(а):

вот вам донор с рабочими командами Амбашелла: http://ez-team.com/xiaomi.html


Воу! У меня есть в доступе такой экземпляр.

+1

104

v_max написал(а):

То винда обнаружит новое устройство Gadget Serial V2.4
USB\VID_0525&PID_A4A7\5&C0AA250&0&2


У Mi камеры есть скрытое меню USB RS232, похоже это оно.

0

105

Как я понимаю, Сяошный пульт заранее предусмотрен к использованию:

Код:
/usr/local/share/script/bt_start_hid.sh "XiaoYi_RC"

+1

106

molexey написал(а):

Воу! У меня есть в доступе такой экземпляр.

Вот это уже интересно.

t *
help
app
madv_gyro
madv_mcu
madv_pmic
madv_shmoo
madv_mcu_gpio
madv_led
madv_fpga_load
madv_wifi_emi
madv_wifi_bt
madv_lut
madv_mcu_update
madv_sd
madv_mp4
madv_sdshmoo
dsp
imgproc
img
cal
schdlr
hiber
sensor
madv_alc5660
madv_button
madv_buzzer
madv_fpga
madv_imgproc
madv_power
madv_utest
madv_version
madv_video
madv_still
madv_syslog
drv
boss
ambalink
ipc

+2

107

Kaliningrad написал(а):

/usr/local/share/script/bt_start_hid.sh "XiaoYi_RC"

Это ты откуда выколупнул?

0

108

v_max написал(а):

Это ты откуда выколупнул?


Из нашей родимой Т5...

0

109

v_max написал(а):

вот такая штука нашлась
Если пoдцепить USB компу (в режиме внешнего питания)
Потом по вафле законнектиться
и выполнить
/usr/local/share/script # ./usb_console.sh

То винда обнаружит новое устройство Gadget Serial V2.4
USB\VID_0525&PID_A4A7\5&C0AA250&0&2
Что бы это было? Йо... не то ли что я искал?


Итог не вдохновил.. вобщем так... по этому рецепту поставил дрова..
https://blackfin.uclinux.org/doku.php?i … get:serial
После чего USB соединение превратилось в порт COM5
Зацепился туда телнетом на 9600 ...
И... ничего нового... ровно та же консоль линуха что и по вафле...
Увы...

+1

110

Народ, я тут новенький. Хочу попытаться расковырять прошивку от Z Camera E1. Удалось расчленить её на 3 части: бинарная, ROMFS и UBIFS. Последние две не особо интересные, в них служебные файлы + linux с поднятым GUI (Qt) для пользователя. Вся коммуникация с аппаратной частью производится через поднятый socket на этой linux. С обратной стороны сокета висит RTOS ThreadX (нашёл сигнатуру - могу ошибаться). Там же и производится распаковка прошивки, энкодинг/декодинг видео и аудио, запись/чтение файлов с карты и прочее.

Кто-нибудь может помочь с исследованием бинарной части прошивки?

По первым предположениям, бинарная часть тупо содержит ARM Cortex-A9 Little-endian код, но при попытке засунуть всё это в IDA я получаю некорректные смещения до данных (граф управления корректный, но такие ресурсы, как строки, резолвятся неправильно). Очевидно, дело в некорректном базовом адресе (я не знаю спецификации чипа Ambarella A9). При указании вместо 0x00000000 базовым адресом 0x040000000 корректно резолвятся некоторые начальные строки, но остальные - всё равно мусор. При играх с базовым адресом всплывают те или иные строки по отдельности (уверен, это просто совпадение).

Первичная цель - добраться до битрейтов записи.
Буду рад любой помощи. Главное, что сейчас спасло бы ситуацию - малейшая информация о процессе запуска любого чипа Ambarella и смещения, куда грузится код.

0

111

ultimatemoviemaker написал(а):

При указании вместо 0x00000000 базовым адресом 0x040000000

Привет. Попробуй 0xA0000000.

0

112

ultimatemoviemaker написал(а):

Первичная цель - добраться до битрейтов записи.


Какие значения в стоке?
Всё интересующее лежит в данном разделе: 000AE960 (v0.30)
Во всяком случае должно...
ААА-параметры лежат здесь: 0070DD40 (экспозамер: 0070DF7D)

0

113

nutsey написал(а):

ultimatemoviemaker написал(а):

    При указании вместо 0x00000000 базовым адресом 0x040000000

Привет. Попробуй 0xA0000000.


Привет! 0xA0000000 промах. Вообще ничего, вроде как. Мне кажется, что я чего-то не понимаю просто. Где-нибудь есть инфа по структуре прошивки Z Cam E1? Может реверсил кто?

Kaliningrad написал(а):

Какие значения в стоке?
Всё интересующее лежит в данном разделе: 000AE960 (v0.30)
Во всяком случае должно...


Я разбираю прошивку v0.31. Как я знаю из их оф. сайта, для 4K (30 fps) выделяется 60 Mb/s, что очень мало. Вот и захотел приподнять.
Кроме того, в сравнении с GoPro на том же чипе, в E1 отключена записть 1080p 120 fps, хотел включить (в Qt UI библиотеке "awesome_camera_worker" есть этот режим, но он выключен).

Есть какой-либо источник с инфой почитать? Был бы очень признателен.

0

114

ultimatemoviemaker написал(а):

для 4K (30 fps) выделяется 60 Mb/s, что очень мало


Стандартной таблицы в 32bit float не видать.
Можно поискать в 32bit signed long по маске 60000.
Хотя в Vico TF всё ещё мудрёнее было с множителем на 10...

ultimatemoviemaker написал(а):

Есть какой-либо источник с инфой почитать?

Изначально черпал информацию отсюда:
https://3ppc.net/forum/forumdisplay.php … &f=572
И в этих ветках (в основном по пользователю Mi81):
https://www.taker.im/community/threads/ … om.103021/
https://www.taker.im/community/threads/ … 60.146156/
https://www.taker.im/community/threads/ … -dx.92856/

0

115

ultimatemoviemaker написал(а):

в E1 отключена записть 1080p 120 fps

Сенсор больше 1080p60 не умеет.

0

116

nutsey написал(а):

Сенсор больше 1080p60 не умеет.


Это очень грустно. Так или иначе, хотя бы битрейт приподнять определённо стоило бы.

Kaliningrad написал(а):

Стандартной таблицы в 32bit float не видать.
Можно поискать в 32bit signed long по маске 60000.
Хотя в Vico TF всё ещё мудрёнее было с множителем на 10...


Поищу. Пока главный затуп даже со структурой прошивки. Пока для меня это выглядит так:

[32 байта] Строка с именем устройства (в нашем случае E1)
[4 байта] <0x00000000>
[4 байта] DWORD, minor версия прошивки (в моём случае 0.31 => 31 => 0x1F)
[6 x 4 байта] <0x00000000>
[6 x 8 байт] Пары чисел <DWORD, DWORD>, где первое от версии к версии не меняется (и выглядит осмысленно, как адрес или размер), а второе меняется беспорядочно (CRC32???)
[6 x 4 байта] <0x00000000>
[8 байт] ещё одна такая пара
...(далее всё ещё менее адекватно)

Может, у кого-нибудь есть идеи, что это за странный способ записи разделов? (я части прошивки искал по сигнатурам, так и удалось распаковать, к примеру, linux, но это не выход)

0

117

ultimatemoviemaker написал(а):

Пока главный затуп даже со структурой прошивки


Раскидать по разделам можно опираясь на константу: 90EB24A3
Редактирование прошивок Ambarella

0

118

Kaliningrad написал(а):

Раскидать по разделам можно опираясь на константу: 90EB24A3
Подпись автора


Понял, спасибо, буду думать.

Отредактировано ultimatemoviemaker (05.02.2019 20:25:48)

0

119

Всё отлично, с системой разделов разобрался. В IDA разделы легко лёгли - буду реверсить.

+1

120

Кто-нибудь знает, как найти битрейты? Не хочется наугад заменять значения. Может, кто-то уже это делал...

0