Команда Upload Data Block (D) [Release 3.5]

Описание

(о формате описания команд см. здесь)

Назначение:Загружает блок данных 128 байт в data FLASH-память DS
Способ передачи:Сеть (широковещательные запросы игнорируются*, вход в систему требуется). Только UDP, TCP/Telnet не поддерживаются.
Формат команды:Dnnddd..dd, где nn - номер блока данных в двоичном формате (ровно 2 байта), ddd..dd - 128 байт данных в двоичном формате
Возможные ответы:A, D, C, S, 0, F
Впервые появилась:Раньше «базовой» версии V3.51, не поддерживается в ветке прошивок Release3
См. также:NetLoader

Подробности

Эта команда используется только на устройствах второго поколения (то есть реализована только в прошивке Release3.5).

Команда Upload Data Block отправляет блок данных 128 байт в data FLASH-память DS. Эта команда используется для обновления прошивки приложения по сети.

Обновление начинается с команды Reset Upload Process (Q). После этого Upload Data Block используется нужное количество раз, пока весь файл прошивки приложения не будет загружен блок за блоком. Поле nn первой отправленной команды должно быть равно 0x00 0x00, следующей - 0x00 0x01 и так далее. Каждая команда должна передавать ровно 128 байт данных. Если файл нельзя разбить на целое число N полных блоков по 128 байт, последний блок дополняется произвольными данными. Когда весь файл загружен, используются ещё две команды: Set Programming Request Flag (N), затем Reboot (E). После выхода DS из сброса Monitor скопирует новый файл прошивки из data FLASH в program FLASH.

Эта команда требует предварительного входа командой Login (L) (должна быть открыта сессия программирования). Код ответа Denied (D) возвращается, если сессия программирования не выполняется или принадлежит не отправителю команды - DS запоминает IP-адрес сетевого узла, открывшего сессию программирования, и требует, чтобы все последующие команды (требующие предварительного входа) отправлялись с того же IP-адреса.

Код ответа Error (C) возвращается, если длина команды не равна ровно 131 байту (код команды + 2-байтный номер блока + 128 байт данных). Код Bad Sequence (S) выдаётся, если блоки данных идут не по порядку (например, после блока 3 пришёл блок 5). DS отвечает кодом Out-of-range (O), если размер файла превысил ёмкость data FLASH. Код Failed (F) возвращается при ошибке записи в data FLASH. Код OK (A) возвращается, когда блок принят правильно. За этим кодом всегда следует номер следующего блока - 2 байта в сетевом порядке байтов (High endian).

Команда Upload Data Block отличается от всех остальных команд тем, что её поля имеют двоичный тип (все остальные команды - ASCII-строки).

* Если ранее не был выбран командой Select In Broadcast Mode (W).