Устройство использует чипсет RTL8197DN, используя набор инструкций с большим эндэдианом MIPS. Согласно моим исследованиям, фактическим ядром MIPS внутри, кажется, является Lexra (для проверки).
Нажатие WPS и сброс одновременно во время загрузки входит в режим загрузчика. Bootloader предоставляет простой командный интерфейс через UART, а также позволяет загружать обновления через TFTP (см ./Upload_update.sh ). Bootloader вводится автоматически, если загрузка сбоя (также служит режимом восстановления).
Когда обновление загружается через TFTP, оно загружается в ОЗУ по адресу 0x80500000. Если файл является надлежащим файлом обновления, мигание начинается автоматически, в противном случае файл просто остается в ОЗУ и может быть прошит вручную, используя команду FLW.
Подтвержденные рабочие команды:
Устройство открывает заголовок UART с сообщениями загрузчика и оболочкой Linux. 38400 бод
Имя пользователя: root password: что -либо настроено как пароль администратора для веб -панели (по умолчанию: Admin)
Все большой эндиан. Смотрите ./check_update.py для скрипта, который анализирует файлы обновления, и ./make_header.py для скрипта, который добавляет заголовок обновления в необработанный бинарный файл
Файл обновления изготовлен из следующих блоков, объединенных вместе:
| компенсировать | размер | описание |
|---|---|---|
| 0 | 4 | Тип файла-см. Https://github.com/jameshilliard/wecb-vz-gpl/blob/master/rtl819x/bootcode/boot/init/rtk.h для действительных типов. Устройство, которое мы, кажется, используем только «CR6C» для ядра и «R6CR» для ROOTFS (и, возможно, «загрузки» для загрузчика?) |
| 4 | 4 | Загрузочный адрес в оперативной памяти (используется только для изображения ядра?) |
| 8 | 4 | Адрес во флеш -памяти |
| 12 | 4 | Длина данных |
| 16 | * | Данные |
Данные проверены - 16 -разрядная большая конечная сумма всех байтов должна быть 0x0000 (если вы не прошиваете раздел веб -файлов, чего нет этого устройства - в этом случае контрольная сумма 8 -битная). Это обычно достигается путем добавления двух байтов в конце.
Когда загрузчик пытается загрузить сначала, сначала рассматривает ~ 4 жестко -кодируемых адреса, затем продолжает искать всю вспышку для подписи, что, по -видимому, указывает на то, что макет вспышки может отличаться на разных устройствах. Данные имеют идентичную проверку контрольной суммы в файлах обновления выше.
Смотрите ./split_img.sh
| начальный адрес | конечный адрес | заголовок | описание |
|---|---|---|---|
| 0x00000000 | 0x00006000 | - | Код загрузчика |
| 0x00006000 | 0x00008000 | H601 (?) | Аппаратная конфигурация (MAC -адрес и т. Д.) |
| 0x00008000 | 0x00010000 | Compds (?) | Конфигурация по умолчанию |
| 0x00010000 | 0x00018000 | Compcs (?) | Текущая конфигурация |
| 0x00018000 | 0x00138000 | Обновление заголовка для CR6C | Ядра Linux, префиксированное заголовком, идентичным формату заголовка обновления |
| 0x00138000 | 0x00327002 | Заголовок файловой системы Squashfs, начиная с HSQS | Корневая файловая система. Последние два байта добавляются для контрольной суммы. |
| 0x00327002 | 0x00400000 | - | 0xff 0xff 0xff 0xff ... |