Відновлення

Відновлення прошивки за допомогою USB UART

Процедура оновлення прошивки

Оновлення пристроїв Xiong Mai було розглянуто в окремій статті, тут же я поділюся додатковими відомостями, які можуть виявитися корисними при відновленні, коли щось пішло не так (відключили світло в процесі оновлення, була залита несумісна прошивка або був інший збій).

Оновлення пристрою можна зробити двома способами: пристрій самостійно завантажує прошивку та оновлюється, або користувач знаходить свіжу версію, завантажує через VMS або Web-інтерфейс, далі оновлення йде за тим самим сценарієм.

Для мінімізації проблем, у прошивці міститься спеціальний файл InstallDesc, в якому міститься ідентифікатор платформи "Hardware", за яким пристрій перевіряє, чи підходить йому завантажена прошивка, порівнюючи його вміст із файлом ProductDefinition усередині прошивки.
Також є окреме поле "Vendor", яке зазвичай містить "General".

Поле "Vendor" введено для виробників обладнання, які крім власної збірки, додають також додаткові функції, особливі параметри роботи або просто змінюють заводський розподіл пам’яті. Таким чином, здійснюється найпростіший захист копірайту, а також від заливки несумісної прошивки.
Якщо обидва ці поля збіглися, запускається процедура оновлення, в іншому випадку видається повідомлення про помилку.
Прошивка становити собою перейменований .zip архів, який містить кілька .img файлів – розділів DUMP-a зі спеціальним заголовком в 64 байти, а також вже згадуваний файл-описувач InstallDesc. Приклад типового вмісту прошивки:

У реєстраторів є розділ з логотипом logo-x.cramfs.img
Оновлення здійснюється за розділами, тому у разі переривання процедури оновлення, пошкодженим виявляється лише один розділ.
u-boot.bin – це сам завантажувач u-boot, прошивається першим і майже завжди залишається цілим завдяки малим розмірам. Крім процедури запуску, u-boot містить процедури виведення на екран логотипа (у реєстраторів), а також – найважливіше – скрипти відновлення модулів прошивки.
Саме тому ми й бачимо на екрані збійного пристрою матрац або логотип виробника.
Якщо логотип не пропадає, а пристрій не переходить у робочий режим, значить пошкоджений один із блоків прошивки, але сам завантажувач цілий, і пристрій можна відносно просто і недорого відновити.

При пошкодженому завантажувачі ми отримуємо повну “цеглу”, описуваний тут метод вже не застосовується, відновлювати доведеться на програматорі, в цій статті його розглядати не будемо.

Підключаємо USB UART

Спілкування із завантажувачем проводиться з консолі командами, які подаються через спеціальний інтерфейс налагодження – UART. Як консоль (термінал) зручніше використовувати Putty, хоча згодиться навіть вбудований у Windows гіпертермінал.
Щоб мати змогу надсилати команди з термінала, нам знадобиться USB UART перетворювач.
Найпоширеніший – це перетворювач на базі мікросхеми CH340G. Для відновлення одного пристрою його буде достатньо, але якщо ви професійно займаєтеся ремонтом, краще придбати перетворювач на базі мікросхеми FT232RL, він більш надійний і не так схильний до перешкод у лінії.

Під’єднавши UART перетворювач, отримаємо в системі додатковий послідовний COM-порт, номер якого потрібно дізнатися в диспетчері пристроїв. Цей номер вказуємо у програмі-терміналі, а також задаємо інші параметри порту: швидкість 115200, парність ні, стоп. біт 1.

Для підключення з’єднуємо мінусовий (“земляний”) провід пристрою із загальним (GND) проводом перетворювача, RX пристрою з’єднуємо з TX перетворювача, а RX відповідно з TX.

Включаємо пристрій та спостерігаємо таку картинку:

Це лог завантаження. На коротку мить на екрані промайне запрошення Press Ctrl+C to stop autoboot. Потрібно зловити цей момент та натиснути комбінацію клавіш Ctrl+C або заздалегідь утримувати комбінацію клавіш Ctrl+C, після чого ми потрапляємо до командного інтерфейсу завантажувача (також може бути інша комбінація).
Даємо команду printenv, це виведе на екран змінні оточення завантажувача та повідомить нам додаткову інформацію про піддослідне.

Нас поки що цікавлять два параметри:

Їх можна змінити командою setenv або підставити комп’ютер IP адресу з serverip на час відновлення.

TFTP сервер

Погравши з командами, можливо, ви захочете піти далі і відновити пристрій.
Для цього нам знадобиться ще одна програма – TFTP сервер, я рекомендую tftpd64.

Встановлюєте його та налаштовуєте згідно з картинкою.

Резервне копіювання – наше все

Тепер підключаємо нашу багатостраждальну камеру/реєстратор мережним кабелем до тієї ж мережі, що й комп’ютер із програмою термінала та TFTP сервером.

Перед експериментами потрібно зробити резервну копію (DAMP). Для цього потрібно дізнатись розмір флеш-пам’яті пристрою. У цьому нам допоможе команда sf probe 0.

U-boot> sf probe 0
8192 KiB hi_fmc at 0:0 is now current device

Звідси видно, що розмір флеші – 8192 кб, що становить 0x800000h у шістнадцятковій системі. (Для флеші 16384 кб це число буде 0x1000000h).

Ще потрібно знати адресу доступної оперативної пам’яті, щоб скопіювати DAMP в пам’ять або завантажити туди блоки. Дайте команду printenv і перегляньте змінну bootcmd=. В самому кінці завжди є команда bootm і адреса пам’яті. У нашому випадку bootm 0x82000000 (бувають також 0x42000000)

Тоді команди для резервної копії будуть такими:

setenv serverip 192.168.1.175 встановлення IP адреси нашого комп’ютера (не обов’язково, якщо вже задали IP з serverip)
setenv ipaddr 192.168.1.10 зміна IP-адреси пристрою (не обов’язково, якщо знаходиться в тій же підмережі, що і ПК)
sf probe 0 звернення до SPI флеші
sf read 0x82000000 0x0 0x800000 копіювання вмісту флеш в оперативну пам’ять
tftp 0x82000000 dump.bin 0x800000 передача DUMP-a на tftp сервер

Після цього в папці tftpв64 сервера з’явиться файл dump.bin, який містить повну резервну копію.

Відновлення

Тепер знадобиться файл прошивки під наш пристрій. Сподіваюся, ви записали номер пристрою з віконця Info, коли пристрій ще працював? Якщо ні, підібрати відповідну прошивку можна за маркуванням на пристрої.
Завантажуємо прошивку, відкриваємо архіватором і виймаємо всі файли в папку сервера TFTP (в мене D:\tftpd64).

Тепер залишилося небагато, даємо в консолі наступні команди:
run dc (команда для завантаження файлу custom-x)
run du (команда для завантаження файлу user-x)
run dr (команда для завантаження файлу romfs-x)
run dw (команда для завантаження файлу web-x)
reset (команда для перезавантаження пристрою)
Для завантаження логотипа використовується команда run dl

Зазвичай це дозволяє відновити працездатність у разі псування одного з модулів.
Якщо файли не завантажуються з tftp сервера (в консолі циклічні спроби), то швидше за все заважає брандмауер Windows – відключіть його або додайте tftpd у винятки.

favicon
Reset Pasword

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

2 Коментарі

  1. прошу допомоги по 5222l -a
    якщо э можливiсть напишить в телегу @Ivan_Patlan

    1. Вітаю. По камері D-Link DCS-5222l. Якщо вона не завантажується або не горить індикатор, то спробуйте наступне: при вимкненому живленні затисніть ресет, далі не відпускаючи ресет, подайте живлення і продовжіть тримати ресет ще секунд 10-15. Після цього зайдіть на камеру за стандартною адресою 192.168.0.20 і там буде вікно оновлення прошивки. Завантажте прошивку та дочекайтеся закінчення процесу. Тепер ваша камера має запрацювати штатним чином.

Залиште коментар

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *

You may also like