Прошивка через послідовний порт

Технічні посилання

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

  • Спочатку запустіть TFTP-сервер на IP-адресі 192.168.1.234, який роздає файл прошивки OpenWrt з назвою firm.bin:
mkdir -p /tmp/tftp/
cp openwrt-...-factory.bin /tmp/tftp/firm.bin
 
sudo ip addr add 192.168.1.234/24 dev eth0
sudo dnsmasq -d --port=0 --enable-tftp --tftp-root=/tmp/tftp/
  • Далі, у іншому терміналі, запустіть серійну консоль (наприклад, `screen` або `minicom`) з параметрами 115200 8N1, без керування потоком:
screen /dev/ttyUSB0 115200
  • Потім у U-Boot виконайте наступні команди для отримання файлу з TFTP-сервера та запису його у флеш-пам’ять:

НЕ ВИКОРИСТОВУЙТЕ ЦІ ЗНАЧЕННЯ БЕЗ ПЕРЕВІРКИ! ВОНИ МОЖУТЬ НЕ ПІДХОДИТИ ДЛЯ ВАШОГО ПРИСТРОЮ!

setenv serverip 192.168.1.234
tftpboot 0x81000000 firm.bin
erase 0xbf020000 +0x7c0000
cp.b 0x81000000 0xbf020000 0x7c0000
bootm 0xbf020000

Поради щодо знаходження потрібного послідовного порту

  • GNU/Linux:
    ll /sys/class/tty
    ll /sys/class/tty/*/device/driver
 
  • Windows:
    chgport
    reg query HKLM\HARDWARE\DEVICEMAP\SERIALCOMM
    mode
    
  • macOS:
    ls /dev/{tty,cu}.*
 

Для прикладу повної процедури перегляньте: Журнал прошивки через послідовний порт

Використання Kermit

Можна використовувати протокол Kermit (protocol) для передавання прошивки через послідовний порт. Це займає 15–20 хвилин, але простіше й безпечніше, ніж налаштування TFTP-сервера.

Вимоги:

  • Програма терміналу (наприклад, `minicom`), налаштована на 115200 8N1, без керування потоком.
  • Файл прошивки з назвою `code.bin`
  • Kermit-клієнт (у прикладі використовується C-Kermit під Linux)

НЕ ВИКОРИСТОВУЙТЕ ЦІ ЗНАЧЕННЯ БЕЗ ПЕРЕВІРКИ!

erase 0xbf020000 +7c0000
loadb 0x81000000

У C-Kermit введіть:

set line /dev/ttyUSB0
set speed 115200
set carrier-watch off
set handshake none
set flow-control none
robust
set file type bin
set file name lit
set rec pack 1000
set send pack 1000
set window 5
send code.bin

Після завершення передавання (15–20 хв), завершіть прошивку:

cp.b 0x81000000 0xbf020000 0x7c0000
bootm 0xbf020000

Примітка: Передавання через послідовний порт не вирішує проблему “курки та яйця”, якщо порт Ethernet не працює. Але U-Boot підтримує серійне передавання через протокол модема: http://acassis.wordpress.com/2009/10/23/transfering-file-to-u-boot-over-serial/

  • Last modified: 2025/05/30 06:59
  • by vazaz