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


Сетевой хост должен использовать следующую процедуру, чтобы загрузить файл прикладной прошивки в DS:

  • Сначала нужно проверить, не запущен ли уже NetLoader. Для этого отправьте команду Echo (X) [прикладная прошивка/ NetLoader] и проверьте флаг m в данных ответа (см. как запускается NetLoader). Если NetLoader ещё не запущен, выполните следующие шаги:
  • Сетевой хост должен выполнить вход (если он ещё не выполнен) с помощью команды Login (L);
  • Затем сетевой хост должен отправить команду Jump To Netloader (N). Это запустит NetLoader;
  • Лучше убедиться, что NetLoader действительно запущен, отправив ещё одну команду Echo (X) и проверив состояние флага m;
  • После запуска NetLoader сетевой хост должен отправить команду Start Over (Q), чтобы сбросить процесс загрузки данных;
  • Затем сетевой хост должен отправить столько команд Data Block (D), сколько нужно, чтобы загрузить весь файл прошивки;
  • По окончании загрузки хост должен отправить команду Verify and Start Firmware (E), чтобы запустить загруженную прошивку. Перед следующим шагом хосту следует подождать около 2 секунд, чтобы прошивка успела запуститься;
  • Последним шагом процедуры лучше снова отправить команду Echo (X), чтобы проверить, что новая прошивка действительно работает.

Приведённая процедура, разумеется, упрощена: она не учитывает все возможные ошибки, которые могут возникнуть практически на любом шаге загрузки прошивки. Исполнитель обновления должен внимательно анализировать результат каждого шага и правильно реагировать на разные коды ошибок, которые возвращает DS.

Также в процедуре выше не показано использование команды Select In Broadcast Mode (W), которая позволяет программировать DS, IP-адрес которого недоступен (см. широковещательное UDP-программирование). NetLoader также поддерживает похожую команду (см. команду Select In Broadcast Mode (W)). Важно понимать, что, поскольку NetLoader - это отдельный компонент прошивки, команду Select In Broadcast Mode (W) нужно использовать дважды:

* Разумеется, в этом случае эти команды нужно отправлять как UDP-широковещательные.