================================================================================ ИНСТРУКЦИЯ ПО ЭКСПЛУАТАЦИИ УТИЛИТЫ GSU1AB-PY-TCP файл: GSU_1_TCP_rc7.py Сервер обновления ПО UP1 и embedded web server для устройств с бутлоадером BL_TALENTUM_CH32F207VCT6_v1_6 (версия 1.6 и выше) ================================================================================ 1. НАЗНАЧЕНИЕ ПРОГРАММЫ -------------------------------------------------------------------------------- Данная программа представляет собой TCP-сервер, предназначенный для массового автоматического обновления встроенного программного обеспечения UP1 устройств Talentum по локальной сети Ethernet или глобальной Internet. Программа позволяет: - Принимать входящие соединения от множества устройств одновременно. - Автоматически определять, нуждается ли устройство в обновлении (по контрольной сумме CRC). - Загружать прошивку в основную Flash-память микроконтроллера (MCU) UP1. - Загружать данные в дополнительную SPI Data Flash память (при использовании XCT контейнеров). - Поддерживает режим принудительного обновления (игнорирование проверки CRC). 2. ПОДДЕРЖИВАЕМЫЕ ФОРМАТЫ ФАЙЛОВ -------------------------------------------------------------------------------- Перед запуском в одной директории со скриптом должны находиться файлы прошивок. Имя файла должно соответствовать его контрольной сумме CRC32. Тип 1: *.BCT - Одиночный файл прошивки основного приложения (MCU). - Размер: строго 122880 байт. - При использовании BCT файла обновляется только основная программа. SPI Flash не затрагивается. - Пример имени: E4A1B230.bct Тип 2: *.XCT - Контейнер, содержащий две части: * Первые 122880 байт: прошивка MCU (BCT). * Следующие 1048576 байт: данные для SPI Data Flash (WCT). - Размер: строго 1171456 байт. - Пример имени: 7F1C98D4.xct Важно: Если устройство запрашивает CRC, соответствующий XCT файлу, программа автоматически выполнит полный цикл: программирование MCU, затем стирание и программирование SPI Flash. 3. АЛГОРИТМ РАБОТЫ (ПОШАГОВО) -------------------------------------------------------------------------------- Когда устройство подключается к серверу, выполняется следующая последовательность: Шаг 1: Установка соединения и получение данных. Сервер принимает TCP соединение на порт 5008. Устройство отправляет начальный пакет, содержащий информацию о себе: MAC-адрес, IP, версию загрузчика, а также CRC текущей прошивки в памяти (crc_uflash) и требуемый CRC обновления (передается в поле ext_area[1]). Шаг 2: Поиск файла прошивки. Сервер извлекает требуемый CRC из пакета устройства. Производится поиск файла с именем {CRC}.bct или {CRC}.xct в текущей папке. Если файл не найден, соединение разрывается. Шаг 3: Принятие решения об обновлении. Сравнивается текущий CRC устройства с CRC прошивки из файла. - Если CRC совпадают и НЕ включен флаг -force: Устройство считается актуальным. Сервер завершает сессию без записи данных. - Если CRC отличаются ИЛИ включен флаг -force: Начинается процедура обновления. Шаг 4: Активация режима Bootloader. Отправка команды CMD_ACTIVATE_BL для разблокировки возможности программирования. Шаг 5: Чтение конфигурации устройства. Отправка команды CMD_GET_CONFIG для проверки состояния джамперов (перемычек). Особое внимание уделяется биту 0 (SA1). Если он равен 0, Flash память аппаратно защищена от записи, и дальнейшая запись в MCU невозможна. Шаг 6: Подготовка Flash памяти MCU. Если запись разрешена: - CMD_UNBLOCK_FLASH: Снятие программной блокировки. - CMD_ERASE_UP_FLASH: Полное стирание пользовательской области памяти. Шаг 7: Установка пароля программирования. Отправка команды CMD_SET_PASS_BIN с фиксированным ключом 0x184745bf. Шаг 8: Запись прошивки MCU. Побайтовая отправка данных из BCT части файла командами CMD_WRITE_UP_FLASH. Размер одной страницы - 256 байт. Процесс сопровождается отображением прогресс-бара. Шаг 9: Верификация MCU. Отправка команды CMD_GETCRC_FLASH для вычисления CRC записанных данных непосредственно на устройстве и сравнения с эталоном. Шаг 10: Программирование SPI Flash (ТОЛЬКО ДЛЯ *.XCT ФАЙЛОВ). - Определение ID чипа SPI Flash (CMD_ID_CHIP_SPI). - Стирание зоны WCT (256 секторов по 4KB) начиная с адреса 0x00100000. - Посекторная запись WCT данных командами CMD_WRITE_PAGE_SPI (страницы по 256 байт). Шаг 11: Запуск приложения. Отправка команды CMD_JUMP_TO_APP для передачи управления обновленной программе. Соединение закрывается. 4. ИНСТРУКЦИЯ ПО ЗАПУСКУ -------------------------------------------------------------------------------- Для работы скрипта требуется Python версии 3.6 или выше. Сторонние библиотеки не требуются (используются только стандартные модули: socket, struct, os, threading и т.д.). 4.1. Обычный режим (обновление только устаревших устройств): Откройте терминал в папке со скриптом и файлами прошивок и выполните команду: > python GSU_1_TCP_rc7.py Сервер запустится и будет ожидать подключений. При подключении устройства, если его CRC совпадает с CRC файла, программа выведет сообщение "Устройство уже имеет актуальное ПО UP1 - ОБСЛУЖИВАНИЕ ЗАВЕРШЕНО" и не будет тратить время на запись. 4.2. Принудительный режим (перезапись ВСЕХ устройств): Используется для гарантированного приведения всех устройств к единой версии, даже если CRC в памяти уже верный (например, при повреждении данных SPI Flash). > python GSU_1_TCP_rc7.py -force или > python GSU_1_TCP_rc7.py -f В этом режиме шаги стирания и записи будут выполнены для всех подключившихся устройств, независимо от совпадения CRC. 5. ИНТЕРФЕЙС И ЛОГИРОВАНИЕ -------------------------------------------------------------------------------- Во время работы программа выводит в консоль детальную информацию: - Информацию о найденных файлах .bct и .xct при старте. - IP и MAC адрес подключившегося устройства. - Требуемый устройством CRC и выбранный файл прошивки. - Статус выполнения каждой команды (OK / ОШИБКА). - Прогресс-бары для длительных операций (стирание/запись Flash и SPI Flash). - Итоговую сводку по каждому устройству. Сервер обрабатывает каждое подключение в отдельном потоке (threading), что позволяет обслуживать несколько устройств параллельно. Остановить сервер можно стандартной комбинацией клавиш Ctrl + C. 6. ТРЕБОВАНИЯ К СЕТИ -------------------------------------------------------------------------------- - Порт: 5008/TCP. - Протокол: TCP. - Сервер должен быть доступен с устройств по сети (проверьте, что брандмауэр Windows/Linux разрешает входящие соединения на порт 5008). 7. УСТРАНЕНИЕ НЕИСПРАВНОСТЕЙ -------------------------------------------------------------------------------- Симптом: Устройство подключается, но сразу отключается с ошибкой "Файл не найден". Решение: Проверьте регистр букв в имени файла (должен быть ВЕРХНИЙ РЕГИСТР для расширения .BCT/.XCT и HEX-цифр имени), либо CRC файла не совпадает с тем, что ждет устройство. Симптом: Ошибка "CMD_ACTIVATE_BL не выполнена" или "OP_ERR_PASS". Решение: Устройство может быть заблокировано или находится не в том режиме. Попробуйте перезагрузить устройство по питанию непосредственно перед подключением к серверу. Симптом: Ошибка "OP_FLASH_LOCK" или "Перемычка SA1 установлена". Решение: На устройстве установлена аппаратная защита от записи. Необходимо снять перемычку (джампер), отвечающую за защиту Flash (подписана как SA1). ================================================================================ Конец инструкции ================================================================================