Saymonnet @ 21.12.21, 00:26
Можно подробнее как?
Метод без программатора, без пайки и без замены u-boot.1. Удаляем камеру из ЛК РТ и делаем сброс на заводские настройки.
(Возможно на этом можно будет остановиться, если подобрать "правильный" QR-код.)2. Скачиваем прошивку OpenIPC для HiSilicon Hi3516Ev300:
https://github.com/Ope…ipc.hi3516ev300-br.tgz и подготавливаем sd-карту с 2 разделами:
Первый: FAT32 размером на 8 Мб меньше емкости SD-карты - туда записываем ядро OpenIPC (uImage.hi3516ev300) и архив
app.tar.gz ( 6.56 МБ )
раздела mtd3(app) с переделанным конфигом ag-cfg.json и скриптом запуска start.sh.
Второй: Linux размером около 8 Мб - туда записываем при помощи dd rootfs.squashfs.hi3516ev300.
3. Вставляем подготовленную карту памяти в камеру и подключаемся к UART.
Плату из камеры извлекать не нужно, достаточно снять черную крышку, как писали выше, при помощи медиаторов.
Распиновка
UART: GND-RX-TX-VCC(+3V) (если смотреть на объектив, разъем Ethernet снизу). В контактные площадки UART замечательно садятся обычные швейные иглы, а на их ушки плотно садятся обычные соединительные провода. VCC подключать не надо.
4. Включаем камеру и через терминал прерываем автозагрузку u-boot. В консоли u-boot пишем:
hi_gpio $hi_gpios
setenv bootargs 'mem=32M console=ttyAMA0,115200 panic=20 rootfstype=squashfs ro root=/dev/mmcblk0p2 rootwait init=/init mtdparts=hinand:1024K(boot),1024K(tech),8192K(kernel),16384K(app),-(config) mmz_allocator=cma mmz=anonymous,0,0x42000000,96M'
fatload mmc 0:1 0x42000000 uimage.hi3516ev300
bootm 0x42000000
Ждем загрузки OpenIPC - все полностью в таком виде не загрузится, но нам достаточно только командной строки. Разметку mtd оставили от оригинальной прошивки, которую OpenIPC не может монтировать (и портить), поэтому можем сделать дамп на sd-карту, но из полезного там только mtd0(u-boot) и mtd1(tech). Ядро и приложение есть в оригинальной прошивке РТ, которая шьется прямо из u-boot.
5. Если бы в OpenIPC была поддержка ubifs, то можно было сразу заменить раздел mtd3(app), поэтому пока переписываем скрипт восстановления в разделе mtd4(config). Образ, подготовленный при помощи mkfs.ubifs+ubinize прошивка РТ смонтировать не может.
mount -t yaffs2 /dev/mtdblock4 /mnt
cat <<EOF > /mnt/backup_update.sh
#!/bin/sh
. /etc/profile
/bin/sh
EOF
chmod a+x /mnt/backup_update.sh
umount /mnt
и стираем раздел mtd3(app)
6. Перезагружаемся в ядро РТ (не прерываем автозагрузку u-boot) и проваливаемся в рут-шелл.
7. Теперь переделываем раздел mtd3(app). Тут могут быть варианты, т.к. ubifs умеет сама подключать и форматировать пустые тома и на команду ubidetach может ругнуться, если модуль сам не смог подключить том.
ubidetach -d 0 /dev/ubi_ctrl
flash_eraseall /dev/mtd3
ubiattach -m 3 -d 0 /dev/ubi_ctrl
ubimkvol -N app -n 0 -m -t dynamic /dev/ubi0
mount -t ubifs ubi0 /opt
Здесь стоит проверить, что все выполнилось корректно!Распаковываем содержимое архива в /opt
mount -t vfat /dev/mmcblk0p1 /mnt
cd /opt
tar -xvzf /mnt/app.tar.gz
umount /mnt
Корректируем файлы настроек
cp /opt/bin/AgentGreen/ag-cfg.json /config/vc/ag-cfg.json
rm /config/vc/agent-state-cache.*
На этом все. Делаем reboot и ждем загрузки.
Интерфейс на порте
8080. Дополнительные страницы:
/dashboard.html и
/swagger-ui.htmlЛогин:
admin, пароль:
admin54321.
Пароль рута
helpme. Все пароли можно менять.
Не проверял что будет после полного сброса (очистки раздела mtd4(config), т.к. его восстановлением занимается AgentUpdater, который мы отключаем в скрипте /opt/bin/start.sh. В любом случае доступ по ssh должен остаться.
Инструкция получилась так себе,
мог что-то упустить, поэтому прошу тех, кто понимает что здесь происходит, проверить и отписаться, что все ок.
Настройка камеры через HTTP-API с использованием Swagger-UI - отдельная тема.