Научная статья на тему 'Обновление программного обеспечения в распределенных управляющих системах'

Обновление программного обеспечения в распределенных управляющих системах Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
178
67
i Надоели баннеры? Вы всегда можете отключить рекламу.

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Петров Е.В.

Статья посвящена проблеме замены программного обеспечения элементов распределенных управляющих систем. В ней рассматриваются основные принципы построения загрузчиков таких систем, предлагается вариант их классификации по различным критериям. Рассматривается пример обновления программного обеспечения в системе управления городским освещением.

i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

Текст научной работы на тему «Обновление программного обеспечения в распределенных управляющих системах»

ОБНОВЛЕНИЕ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ В РАСПРЕДЕЛЕННЫХ УПРАВЛЯЮЩИХ СИСТЕМАХ

Е.В. Петров

Статья посвящена проблеме замены программного обеспечения элементов распределенных управляющих систем. В ней рассматриваются основные принципы построения загрузчиков таких систем, предлагается вариант их классификации по различным критериям. Рассматривается пример обновления программного обеспечения в системе управления городским освещением.

Задача обновления программного обеспечения возникает в любой системе, имеющей программную составляющую, независимо от того, является ли эта система распределенной, управляющей или встроенной, так как даже после сдачи готовой системы в эксплуатацию возникает необходимость замены программного обеспечения элементов системы. Это может происходить по нескольким причинам - исправление обнаруженных в программе ошибок, добавление новых функций в систему в связи с ее развитием и т. д.

Если элементов системы, нуждающихся в обновлении программного обеспечения (ПО), немного (несколько единиц), то замену ПО можно провести вручную. Данный способ требует наличия квалифицированных специалистов, способных выполнить действия по перепрограммированию контроллера узла системы и дополнительного оборудования: компьютера, источника питания и т.д., необходимого для этой операции. Если же система состоит из множества (десятков, сотен) элементов, появляется ряд дополнительных проблем: узлы системы могут находиться в различных районах города или даже за его пределами, а также доступ к узлам системы может быть затруднен. Поэтому применение ручного способа замены ПО становится неэффективным и потенциально ненадежным, в связи с увеличивающимся влиянием человеческого фактора, а также достаточно дорогостоящим и длительным, так как требует транспорта и времени для перемещения между узлами системы.

Следовательно, необходим более простой, надежный, дешевый, быстрый и максимально автоматизированный способ замены ПО элементов системы.

Обновление программного обеспечения в распределенных управляющих системах имеет свои особенности, отличающие ее от аналогичной задачи для систем на персональных компьютерах. При решении задачи обновления программного обеспечения распределенной системы следует учитывать следующие особенности.

• Большое количество элементов системы, требующих обновления программного обеспечения.

• Территориальная распределенность элементов системы (узлы системы могут находиться на большом расстоянии друг от друга).

• Разнородность элементов системы (узлы системы могут иметь различные наборы аппаратных средств и выполнять разные функции).

• Совместимость версий программного обеспечения элементов системы.

• Сохранение работоспособности элементов системы во время обновления программного обеспечения (элемент должен продолжать выполнение своих функций во время перепрограммирования).

• Надежность и безопасность процедуры замены программного обеспечения элементов системы.

Независимо от конкретного способа замены ПО в узлах системы ключевую роль в этом процессе играет так называемый загрузчик контроллера, и именно он во многом определяет набор возможных способов обновления ПО элементов системы. Загрузчик -это специальная программа, находящаяся в загрузочной области памяти контроллера и выполняющая следующие функции:

• запись данных в пользовательскую область памяти;

• передача управления целевой программе.

Персональный компьютер

Л

Контроллер

Память

Пользовательская часть

(целевая программа)

Адрес целевой программы

<

Инструментальная программа

Загрузочный

сектор * (загрузчик)

Стартовый адрес

V.

Рис. 1. Принцип работы загрузчика

На рис. 1 представлена типичная схема перепрограммирования контроллера. Программирование осуществляется с помощью персонального компьютера, подключенного к контроллеру через инструментальный канал. Инструментальным каналом может быть любой интерфейс, поддерживаемый и контроллером, и компьютером, например, RS-232, RS-485, USB, Ethernet и т.д., но наиболее часто в качестве инструментального канала используется последовательный канал (RS-232). После включения питания или перезапуска контроллера управление передается по стартовому адресу, по которому расположен загрузчик. Загрузчик, получив управление, пытается установить соединение с инструментальной программой, которая должна быть запущена на персональном компьютере. Назначение инструментальной программы - передача исполняемого кода через инструментальный канал в контроллер. Тип протокола взаимодействия инструментальной программы и загрузчика в каждом конкретном случае может быть разным (запрос-ответ, подтверждение в окне и т.д.). В том случае, если загрузчику удается установить соединение с персональным компьютером, начинается процесс записи программного кода в пользовательскую память контроллера, в противном случае работа загрузчика прекращается. После окончания работы загрузчик передает управление по адресу целевой программы и начинается ее исполнение.

Из рис. 1 видно, что память контроллера разделена на две части - загрузочный сектор и пользовательскую область. Большинство микроконтроллеров поддерживает такое разделение на аппаратном уровне. В зависимости от типа микроконтроллера загрузочный сектор может располагаться либо в начале адресного пространства (в младших адресах), либо в конце (в старших адресах). Загрузочный сектор, как правило, имеет дополнительную защиту от случайного стирания, и именно в нем обычно располагается загрузчик. Таким образом, достигается дополнительная защита контроллера от некорректных действий пользователя. Даже после записи в микроконтроллер некорректной программы, благодаря независимому расположению загрузчика, сохраняется возможность записи в контроллер корректной программы без привлечения специальных программаторов.

Загрузчики можно разделить на несколько групп.

По назначению:

• Стартовый загрузчик, который записывает программу в исполняемую память (например, в оперативную) и передает ей управление. Кроме того, он может выполнять ряд подготовительных действий, необходимых для работы целевой программы (распаковка, декодирование и т.д.).

• Загрузчик программных модулей, который записывает исполняемый модуль в память по стартовому адресу и передает ему управление.

• Программатор памяти, который обеспечивает запись/чтение в память массива данных по указанному адресу. т.е. является гибким инструментом для доступа к внутренней памяти микроконтроллера и других модулей с программируемой памятью (EEPROM, DataFlash, FRAM и т.д.). Является удобным средством на этапе написания и отладки целевой программы.

По источникам данных:

• Данные загружаются из одного фиксированного локального канала передачи данных, как правило, RS-232 или RS-485.

• Данные загружаются из нескольких локальных каналов передачи данных, таких как RS-232, RS-485, I2C, SPI и т.д. Загрузчик прослушивает все доступные ему каналы передачи данных и реагирует на тот, по которому поступает сигнал начала программирования.

• Данные загружаются из нескольких различных каналов передачи данных, в том числе беспроводных (RS-232, RS-485, Ethernet, CAN, ZigBee, GSM/GPRS и т.д.).

По функциональным возможностям:

• Программный код загружается по фиксированному стартовому адресу в памяти.

• Блоки данных загружаются в различные программируемые устройства по указанным адресам.

• Загрузка производится с помощью специального загрузочного модуля. содержащего программируемые данные, а также описание последовательности действий, которые необходимо с ними произвести (в виде особой программы).

Технические характеристики загрузчика конкретного контроллера в большой степени зависят от имеющихся в данном контроллере ресурсов. Так, например, если микроконтроллер обладает всего несколькими единицами килобайт памяти программ, то реализовать в нем загрузчик, способный исполнять программы, наверное, не удастся. Скорее всего, это и не нужно: как правило, сложность контроллера и загрузчика связаны - чем сложнее контроллер, тем более сложный загрузчик в нем используется.

При построении системы обновления ПО необходимо сначала определить требования, которым она должна соответствовать, т.е. определить набор поддерживаемых функций и каналов передачи данных, с которыми будет взаимодействовать загрузчик, а затем соотнести эти требования с имеющимися аппаратными ресурсами (память, каналы передачи данных) и при обнаружении несоответствий внести изменения либо в требования, либо в аппаратуру.

В качестве примера систем обновления программного обеспечения рассмотрим систему загрузки обновлений ПО в СУНО (Система управления наружным освещением), разработанной и выпускаемой ООО «ЛМТ». Общая структура СУНО представлена на рис. 2. Система состоит из центрального диспетчерского пункта, в котором находится сервер, и множества электроподстанций, оборудованных контроллерами управления освещением. Узлы системы освещения связаны в структуру типа «звезда», центром которой является сервер СУНО. Узлами системы являются контроллеры в функции, которых входит установка заданного режима освещения, сбор и передача в ЦДП (центральный диспетчерский пункт) диагностической информации о состоянии подстанции и другие. Как правило, электроподстанции сети освещения распределены по террито-

рии всего города и находятся на больших расстояниях друг от друга, поэтому ручной способ обновления ПО контроллеров в данной системе является крайне неудобным.

Контроллер ПВ n

MCU GSM/GPRS модем

Память

Эл. счетчик

Реле

Контроллер ПВ 1

MCU GSM/GPRS модем

Память

Эл. счетчик

Реле

онтроллер ПВ 2

MCU GSM/GPRS модем

Память

Эл. счетчик

Реле

Рис. 2. Структура СУНО (ЦДП - центральный диспетчерский пункт, АРМ - автоматизированное рабочее место, ПВ - пункт включения)

К системе загрузки ПО СУНО выдвигались следующие требования:

• программирование контроллеров через последовательный канал;

• удаленное программирование контроллеров через GSM/GPRS;

• произвольный доступ к различным видам памяти контроллера (FLASH, FRAM);

• надежная замена ПО контроллера.

Аппаратура контроллеров позволяет реализовать все перечисленные требования: контроллер имеет инструментальный последовательный канал, GSM-модем, достаточные ресурсы памяти.

Система загрузки программного обеспечения СУНО состоит из двух больших частей - загрузчика контроллера пункта включения и серверной части. Загрузчик контроллера включает в себя все драйверы программируемых устройств, поддерживает обмен данными через последовательный канал и канал GSM, а также обеспечивает интерпретацию загрузочного модуля. Загрузочный модуль - это файл, состоящий из нескольких секций: сигнатуры, блока управления и блока данных. Сигнатура используется для идентификации загрузочного модуля в контроллере. Блок управления содержит программу, предписывающую, какие действия нужно выполнить с данными расположенными в блоке данных. Фрагмент такой программы на языке Forth приведен на рис. 3. Организация загрузчика как программируемой машины обусловлена тем, что такой способ обеспечивает максимальную гибкость и универсальность доступа к любым программируемым частям удаленного контроллера.

Набор команд загрузчика контроллера включает в себя около десяти инструкций, таких как ERASE - стереть указанный сектор памяти, COPY - скопировать из памяти-источника в память-приемник указанное количество байт, CHK - проверка корректности блока данных и др. Данная программа выполняет стирание семи секторов памяти программ, копирование из промежуточной памяти в основную память целевой программы, а также верификацию записанных данных.

REG STRGT TRGT FLASH P LD

REG DTRGT TRGT FLASH P LD

0x100 VERSION _CON

CHK

SECTORO ERASE

SECTOR1 ERASE

SECTOR2 ERASE

SECTOR3 ERASE

SECTOR4 ERASE

SECTOR5 ERASE

SECTOR6 ERASE

0x20000000 spcm3 offset @ + SECTORO spcm3 len @ COPY

0x20000000 spcm3 offset @ + SECTORO spcm3 len @ COMPARE

Рис. 3. Пример программы для загрузчика контроллера ПВ

В функции серверной части входит подготовка загрузочного модуля и передача его в контроллер пункта включения. В понятие подготовки загрузочного модуля входит: трансляция программы с языка Forth в машинный код, понятный загрузчику; объединение всех программируемых данных в единый блок данных; объединение программы и блока данных в загрузочный модуль. Кроме того, для каждой секции загрузочного модуля подсчитывается и записывается CRC, что обеспечивает защиту контроллера от записи искаженных во время передачи данных. После того как загрузочный модуль подготовлен, он может быть передан в пункты включения. Так как все элементы системы, требующие замены ПО, имеют непосредственное соединение с сервером, это избавляет от необходимости использовать алгоритмы распространения ПО между пунктами включения. С другой стороны, это означает, что сервер должен следить за тем, чтобы все пункты включения получили новое ПО.

ЦДП СУНО

Контроллер ПВ

L GSM/GPRS [ модем

aF

Dat д lash /

MCU (FLASH)

Память (FRAM)

Электросчетчик

Рис. 4. Система обновления программного обеспечения СУНО

Схема обновления ПО на примере одного пункта включения показана на рис. 4. Замена ПО производится в три этапа:

• доставка загрузочного модуля в пункт включения;

• перезапуск пункта включения;

• исполнение загрузочного модуля контроллером пункта включения.

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

Прием загрузочного модуля на стороне пункта включения производится в специальную промежуточную память (DataFlash), поэтому, даже если по каким-либо причинам процесс доставки прервется, ПО пункта включения не будет повреждено. После того как загрузочный модуль был полностью принят и сохранен в DataFlash, производится перезапуск пункта включения.

Третий этап начинается с того, что загрузчик контроллера проверяет корректность сигнатуры и CRC секций загрузочного модуля. Если на каком-либо шаге проверки обнаруживается ошибка, исполнение загрузочного модуля прекращается, и управление передается целевой программе. Таким образом, обеспечивается высокая надежность и безопасность замены ПО контроллера. Если же ошибок не обнаружено, начинается исполнение программы, а после этого управление передается обновленной целевой программе.

Описанная выше система обновления программного обеспечения используется в нескольких городах России и позволяет экономить массу времени и средств при возникновении необходимости перепрограммирования удаленных контроллеров. Данная система загрузки может использоваться и как средство доставки данных в узлы системы. Для этого требуется только составить соответствующую программу для загрузчика, скомпилировать загрузочный модуль и передать его в соответствующий узел системы.

Перспективным развитием системы загрузки программного обеспечения систем подобных СУНО является включение в их функции возможностей по замене ПО не только самого контроллера, но и других устройств, подключенных к нему, например, модема, электросчетчика, сервисных процессоров и других.

Литература

1. Обновление системного программного обеспечения распределенных встроенных систем / Постников Н.П.

2. Network Reprogramming / Jaein Jeong, Sukun Kim and Alan Broad // University of California, Berkeley. Aug 12, 2003

3. Downloadable Firmware in a Flash / Bill Gatliff // <URL: http://www.embedded.com>, Oct. 31, 2002

i Надоели баннеры? Вы всегда можете отключить рекламу.