СИСТЕМА ОБНАРУЖЕНИЯ ПОЖАРА С РАСПРЕДЕЛЕННОЙ ФАЙЛОВОЙ СИСТЕМОЙ
FIRE DETECTION SYSTEM WITH DISTRIBUTED FILE SYSTEM

Уровень техники
Противопожарные системы, такие как системы обнаружения пожара, системы подавления огня при пожаре или комбинированные системы обнаружения и подавления огня при пожаре, обычно содержат ведущий модуль и ряд ведомых узлов. Ведомые узлы содержат элементы, предназначенные для выполнения конкретных задач, связанных с обнаружением, уведомлением и подавлением огня при пожаре, например, обнаружения информации об окружающей обстановке и передачи информации ведущему модулю, или, после получения команд из ведущего модуля, выполнения функции подавления огня при пожаре, или создания звукового и/или визуального сигнала тревоги для пассажиров.
Различные типы ведомых узлов или комбинации ведомых узлов обычно устанавливают на основе конкретного применения. Противопожарные системы для помещений обычно сдержат пожарные датчики, ручные пожарные извещатели и сигнальное оповещение. С другой стороны, противопожарные системы для транспортных средств обычно содержат ряд датчиков, модулей выпуска, сигнализаторов и переключателей на ручное управление.
Противопожарные системы устанавливаются на больших транспортных средствах, например используемых в горнодобывающей промышленности, лесной промышленности, на полигонах захоронения отходов и в общественном транспорте, чтобы предотвратить или смягчить ущерб, наносимый сложному и дорогостоящему оборудованию. Например, карьерный самосвал может содержать поршневой двигатель, приводящий в действие генератор, который, в свою очередь, подает питание на электродвигатели, которые приводят в движение колеса. Любой из этих компонентов может перегреться и загореться, нанеся серьезный ущерб сложному и дорогостоящему оборудованию. Для минимизации таких потерь используются противопожарные системы.
Ведущие модули и ведомые узлы противопожарных систем обычно устанавливаются на общей шине. Каждый из этих модулей и узлов обычно содержит микроконтроллеры, энергонезависимое запоминающее устройство (например, флеш-память) и приемопередатчики для связи по шине. Ведущие модули отправляют команды и принимают информацию от ведомых узлов через их соответствующие приемопередатчики. В каждом модуле или узле микроконтроллеры выполняют команды встроенного программного обеспечения, хранящиеся в запоминающем устройстве. В дополнение к встроенному программному обеспечению модули также хранят данные, связанные с поддержанием состояния.
Раскрытие сущности изобретения
Поскольку эксплуатационные сроки службы противопожарных систем часто измеряются десятилетиями, новые версии встроенного программного обеспечения модулей обычно выпускаются в течение всего срока службы систем. Новое встроенное программное обеспечение устанавливается для исправления ошибок, повышения производительности или обеспечения совместимости с новыми устройствами.
Некоторые системы требуют использования переносных компьютеров или других инструментов для обновления встроенного программного обеспечения. Другой подход в системах заключается в том, чтобы обеспечить считывание противопожарными системами обновлений встроенного программного обеспечения с карт памяти через порты, например, порты универсальной последовательной шины (USB).
Микроконтроллеры ведущих модулей и ведомых узлов обычно являются однофункциональными компьютерными устройствами. Эти микроконтроллеры являются контроллерами общего назначения, которые предусматривают фиксированные объемы энергонезависимой памяти. И микроконтроллеры с большими объемами памяти обычно дороже из-за сопутствующих больших размеров кристалла для этих микроконтроллеров. С другой стороны, при проектировании этих систем обычно требуется снизить затраты, поэтому разработчик попытается выбрать микроконтроллеры с наименьшими объемами энергонезависимой памяти, которые, тем не менее, будут иметь возможность хранить встроенное программное обеспечение, необходимое для работы модуля или узла. Тем не менее, как правило, в каждом из ведущих модулей и ведомых узлов по-прежнему сохраняется некоторая неиспользуемая память.
Согласно настоящему изобретению эта неиспользованная память может быть предоставлена главному модулю посредством реализации распределенной файловой системы. Такая система содержит метаданные файлов, хранящиеся в ведущем модуле, которые содержат информацию о конкретных файлах и расположение использованной и неиспользованной памяти в системе, включая память в ведущем модуле и установленных ведомых узлах. Поддерживая метаданные файлов и отправляя команды ведомым узлам для сохранения или чтения файлов по определенным адресам, сам ведущий модуль может использовать неиспользованную память по всей системе. Это позволяет ведущему модулю хранить больше информации в системе, чем имеется доступной памяти в самом ведущем модуле.
Эта распределенная файловая система может использоваться для хранения образов встроенного программного обеспечения для каждого типа ведомого узла, установленного в системе. Образы могут, в свою очередь, использоваться для обновления встроенного программного обеспечения ведомых узлов в случае, если их текущее встроенное программное обеспечение повреждено или устарело или установлен новый узел.
В общем, согласно одному аспекту в изобретении предложен способ хранения файлов в противопожарной системе, при этом способ включает определение ведущим модулем доступной памяти в ведомых узлах, подачу ведущим модулем команд на ведомые узлы с сохранением новых файлов в доступной памяти, и считывание ведущим модулем файлов, хранящихся в ведомых узлах.
В вариантах осуществления ведущий модуль определяет доступную память путем доступа к метаданным, указывающим доступную память в ведомых узлах. Система может дополнительно автоматически обновлять образы резервных копий встроенного программного обеспечения, сохраняемые ведущим модулем. В частности, ведущий модуль сравнивает версии новых файлов с версиями файлов, ранее сохраненных ведущим модулем, и сохраняет только новые файлы, если версия новых файлов более поздняя, чем версии ранее сохраненных файлов. Затем обновляются метаданные, идентифицирующие ведомые узлы, на которых хранятся новые файлы. Более старые версии, соответствующие новым файлам, которые ранее были сохранены ведущим модулем, также могут быть удалены.
В общем, согласно другому аспекту в изобретении предложена система для хранения файлов в противопожарной системе. Система содержит ведомые узлы противопожарной системы и ведущий модуль, определяющий доступную память в ведомых узлах, сохраняющий новые файлы в доступной памяти и считывающий файлы, сохраненные в ведомых узлах.
Теперь будут более подробно описаны со ссылкой на сопроводительные графические материалы и указаны в формуле изобретения вышеупомянутые и другие признаки изобретения, включающие различные новые подробности конструкции и комбинации подробностей и другие преимущества. Понятно, что конкретный способ и устройство, воплощающие изобретение, показаны в качестве иллюстрации, а не как ограничение изобретения. Принципы и признаки настоящего изобретения могут быть использованы в различных и многочисленных вариантах осуществления без отхода от объема изобретения.
Краткое описание чертежей
На сопроводительных графических материалах номера позиций относятся к одинаковым частям на разных видах. Графические материалы не обязательно выполнены в масштабе; вместо этого акцент делается на иллюстрации принципов изобретения. На графических материалах:
на фиг. 1 приведена блок-схема противопожарной системы, установленной, например, на транспортном средстве;
на фиг. 2А приведена структурная схема обобщенного ведомого узла;
на фиг. 2B приведена структурная схема ведущего модуля;
на фиг. 2C приведена структурная схема узла батареи;
на фиг. 2D приведена структурная схема узла отображения;
на фиг. 3 приведена блок-схема, показывающая способ для распределенного файлового хранилища ведущим модулем среди ведомых узлов;
на фиг. 4 показана распределенная файловая система 400 в виде последовательности карт распределения памяти для каждого ведущего модуля и нескольких ведомых узлов вместе с новыми файлами на карте памяти, подключенной к противопожарной системе;
на фиг. 5 приведена структурная схема, показывающая метаданные файла;
на фиг. 6 проиллюстрирована команда управления загрузкой;
на фиг. 7 проиллюстрирована команда загрузки данных;
на фиг. 8 показана распределенная файловая система согласно фиг. 4 после сохранения новых файлов;
на фиг. 9 показаны метаданные файла согласно фиг. 5 после сохранения новых файлов;
на фиг. 10 проиллюстрирована команда стирания страницы;
на фиг. 11 проиллюстрирован пакет возврата задания файловой системы;
на фиг. 12 показана распределенная файловая система согласно фиг. 8 после удаления более старых версий, соответствующих вновь сохраненным файлам;
на фиг. 13 показаны метаданные файла согласно фиг. 9 после удаления более старых версий, соответствующих вновь сохраненным файлам;
на фиг. 14 приведена блок-схема, показывающая способ чтения файлов в распределенной файловой системе ведущим модулем;
на фиг. 15 проиллюстрирована команда получения внешней контрольной суммы;
на фиг. 16 проиллюстрирован пакет ответа внешней контрольной суммы;
на фиг. 17 проиллюстрирована команда адреса чтения в памяти ведомого узла; и
на фиг. 18 проиллюстрирован пакет ответа данных памяти.
Осуществление изобретения
Далее изобретение будет описано более подробно со ссылкой на сопроводительные графические материалы, на которых показаны иллюстративные варианты осуществления изобретения. Однако это изобретение может быть воплощено во многих различных формах и не должно истолковываться как ограниченное вариантами осуществления, изложенными в настоящем документе; скорее, эти варианты осуществления предусмотрены таким образом, что это раскрытие будет полным и законченным и полностью передаст объем изобретения специалистам в данной области техники.
В контексте данного документа термин «и/или» включает любые и все комбинации одного или нескольких связанных перечисленных элементов. Кроме того, формы единственного числа также должны включать в себя формы множественного числа, если прямо не указано иное. Далее будет понятно, что термины «включает», «содержит», «включающий» и/или «содержащий», когда они используются в этом описании, указывают наличие заявленных признаков, чисел, этапов, операций, элементов и/или компонентов, но не исключают наличие или добавление одного или нескольких других признаков, чисел, этапов, операций, элементов, компонентов и/или их групп. Кроме того, следует понимать, что когда ссылаются на элемент, включая компонент или подсистему, и/или он отображается как подключенный к или соединенный с другим элементом, он может быть подключен к или соединен с другим элементом непосредственно или могут присутствовать промежуточные элементы.
На фиг. 1 показана блок-схема противопожарной системы 100, такой как система обнаружения пожара, система подавления огня при пожаре или комбинированная система обнаружения и подавления огня при пожаре, установленная на транспортном средстве 108, к которому применимо настоящее изобретение.
Система 100 содержит ведущий модуль 102 и ряд ведомых узлов 106, установленных на общей шине 104. Ведущий модуль 102 отправляет команды и принимает информацию от ведомых узлов 106, и ведомые узлы 106 принимают команды от ведущего модуля 102 и отправляют информацию (например, информацию об окружающей обстановке, обнаруженную ведомым узлом 106), на ведущий модуль 102.
Шина данных 104 предпочтительно является общей с логической точки зрения. Ведущий модуль 102 предпочтительно использует общее адресное пространство для связи с различными ведомыми узлами 106 с использованием шины 104 данных. При этом шина 104 в настоящее время реализована как несколько физических шин данных/проводных интерфейсов (портов) в ведущем модуле 102. Это помогает обеспечить правильную и повторяемую установку путем подключения определенных узлов к конкретным проводным интерфейсам или портам в ведущем модуле 102.
В проиллюстрированном примере установленные ведомые узлы включают узел 106-1 отображения, который отображает информацию о состоянии противопожарной системы 100, узел 106-2 батареи, который подает питание на противопожарную систему 100, два узла 106-3 тепловых пожарных извещателей, которые обнаруживают повышенную температуру и передают информацию ведущему модулю 102, два узла 106-4 переключателей ручной активации, которые при активации оператором (например, водителем транспортного средства) вызывают функцию подавления огня, два узла 106-5 детекторов инфракрасного излучения, которые обнаруживают инфракрасное излучение и передают информацию в ведущий модуль 102, два узла 106-6 пожарных датчиков, которые обнаруживают наличие огня и передают информацию в ведущий модуль 102, и два узла 106-7 выпускания, которые выполняют функцию подавления огня.
В одном примере узел 106-6 пожарных датчиков может обнаружить наличие пожара посредством работы его пожарного чувствительного элемента и передать информацию в ведущий модуль 102. Ведущий модуль 102, в свою очередь, может затем отправить команды в модуль 106-7 выпускания для выполнения функции подавления огня и/или команды на дисплей 106-1 для отображения сигнала тревоги.
На фиг. 2A–2D приведены структурные схемы различных узлов противопожарной системы 100. Каждый узел аналогично содержит контроллер 202, 214, 228, 244, приемопередатчик 204, 216, 230, 246, энергозависимое оперативное запоминающее устройство (RAM) 206, 218, 232, 248, энергонезависимое запоминающее устройство 208, 220, 236, 252 и постоянное запоминающее устройство (ROM) 210, 222, 238, 254. Каждый узел 106, 102, 106-2, 106-1 подключен к общей шине 104 посредством собственного приемопередатчика 204, 216, 230, 246. Контроллеры 202, 214, 228, 244 выполняют команды встроенного программного обеспечения, хранящиеся в энергонезависимом запоминающем устройстве 208, 220, 236, 252. В дополнение к встроенному программному обеспечению энергонезависимое запоминающее устройство каждого узла также хранит данные, связанные с поддержанием состояния.
На фиг. 2А приведена структурная схема обобщенного ведомого узла 106. Примеры включают узлы 106-6 пожарных датчиков и узлы 106-7 выпускания. Каждый из ведомых узлов обычно содержит ведомый элемент 205, который обычно отличается для каждого типа ведомого узла. Например, для ведомого узла детектора дыма ведомым элементом 205 является датчик дыма, который обнаруживает дым, при этом ведомый контроллер контролирует обнаруженные уровни дыма элементом и передает эти уровни в ведущий модуль. В другом примере для ведомого узла пожарного извещателя ведомым элементом 205 может быть термистор, который определяет температуру окружающей среды, при этом ведомый контроллер контролирует обнаруженные уровни температуры и передает эти уровни в ведущий модуль или сам инициирует аварийное состояние. В случае узла выпускания ведомым элементом 205 может быть реле, которое управляет выпусканием огнетушащего вещества. Ведомый контроллер в этом случае ожидает команды выпускания от ведущего модуля 102 и затем соответствующим образом управляет реле.
На фиг. 2В приведена структурная схема ведущего модуля 102. Помимо встроенного программного обеспечения и данных, связанных с поддержанием состояния, энергонезависимое запоминающее устройство 220 ведущего модуля также хранит метаданные 224 файла.
На фиг. 2С приведена структурная схема узла 106-2 батареи, который является конкретным типом ведомого узла 106, который контролирует батарею, используемую для обеспечения резервного питания противопожарной системы 100. Узел 234 управления батареей выполняет функции системы управления батареей (например, предотвращает работу батареи вне области безопасной работы, контролирует ее состояние и т. д.).
На фиг. 2D представлена структурная схема узла 106-1 отображения, который является конкретным типом ведомого узла 106, который отображает информацию о состоянии противопожарной системы 100. Узел 250 драйверов дисплея представляет информацию, которая должна отображаться на дисплее 256, например, для водителя транспортного средства. USB-порт 258 принимает данные от внешнего запоминающего устройства или переносной компьютерной системы и передает информацию в контроллер 244 дисплея. Карта памяти 259 является примером внешнего запоминающего устройства и является переносным устройством с энергонезависимой памятью (например, флеш-памятью) и USB-портом. Карта памяти 259 может содержать, например, обновления для встроенного программного обеспечения ведомого узла. Переносной компьютер, используя программное обеспечение с USB-портом, также может предоставлять новые файлы в систему.
В соответствии с проиллюстрированным вариантом осуществления ведущий модуль реализует распределенную файловую систему, которая использует доступную энергонезависимую память, свою и/или ведомых узлов. При работе ведущий модуль определяет доступную память в ведомых узлах и сохраняет файлы, такие как новые файлы, доступные для системы 100, в доступную память, а затем позже считывает и иным образом поддерживает эти файлы. В качестве индекса для этой распределенной системы служат метаданные 224 файла, хранящиеся в ведущем модуле или иным образом доступные ведущему модулю.
На фиг. 3 приведена блок-схема, показывающая способ хранения файлов в распределенном хранилище файлов ведущим модулем 102 среди ведомых узлов 106. Она показывает процесс, в котором ведущий модуль автоматически обновляет более старые версии образов встроенного программного обеспечения ведомых узлов, чтобы проиллюстрировать один пример его работы. Однако следует отметить, что в эту распределенную файловую систему можно сохранять другие типы файлов.
На этапе 302 ведущим модулем 102 обнаруживаются новые файлы. В одном примере на карте памяти, подключенной к противопожарной системе 100, обнаруживаются новые файлы встроенного программного обеспечения ведомого узла. В одном примере каждый раз, когда происходит обнаружение карты памяти, ведущий модуль 102 через узел 106-1 отображения считывает содержимое файлов, хранящихся на карте памяти.
Иллюстрируя этот пример, на фиг. 4 показана распределенная файловая система 400 в виде последовательности карт распределения памяти для каждого ведущего модуля и нескольких ведомых узлов, каждый из которых содержит встроенное программное обеспечение 402, 410, 416, 420, 426 и данные, связанные с поддержкой состояния для этого конкретного модуля 404, 412, 418, 422, 424.
С целью проиллюстрировать работу системы показан пример, в котором система уже хранила резервные копии встроенного программного обеспечения для своих ведомых узлов. В частности, энергонезависимое запоминающее устройство 220 ведущего модуля хранит метаданные 224 файла и образ (v2) 424-1 встроенного программного обеспечения узла батареи, который является резервной копией второй версии встроенного программного обеспечения для узла 106-2 батареи. Энергонезависимое запоминающее устройство 236 узла батареи также хранит образ (v5) 424-2 встроенного программного обеспечения узла отображения, образ (v3) 424-3 встроенного программного обеспечения узла пожарных датчиков и образ (v2) 424-4 встроенного программного обеспечения узла выпускания.
Также показано, что карта 259 памяти вставлена в USB-порт 258 узла 106-1 отображения. Карта 259 памяти, или в качестве альтернативы переносной компьютер, хранит новые файлы, в том числе образ (v5) 424-2 встроенного программного обеспечения узла отображения, образ (v3) 424-5 встроенного программного обеспечения узла батареи, образ (v4) 424-6 встроенного программного обеспечения узла пожарных датчиков и образ (v3) 424-7 встроенного программного обеспечения узла выпускания. Наконец, энергонезависимое запоминающее устройство 252 узла отображения, энергонезависимое запоминающее устройство 208-1 узла пожарных датчиков и энергонезависимое запоминающее устройство 208-2 узла выпускания все имеют память, доступную ведущему модулю 414, которая является памятью, которая не используется ведомым узлом и обозначена ведущим модулем 102 как доступная в метаданных 224 файла.
Таким образом, система 100 реализует распределенную файловую систему. Ведущий модуль хранит файлы или части файлов в неиспользуемой памяти среди различных ведомых узлов и отслеживает местоположение этих файлов с использованием метаданных 224 файла.
На фиг. 5 приведена структурная схема, показывающая метаданные 224 файла, хранящиеся в энергонезависимом запоминающем устройстве 220 ведущего модуля. Метаданные 224 файла включают индекс 260 файлов и индекс 262 устройств. Индекс 260 файлов показывает различные хранимые файлы, их версию, местоположение среди различных узлов, начальный адрес в памяти узла, на котором он хранится, размер и контрольную сумму, которая является вычисленным значением на основе данных файла, используемым для проверки целостности файла. Индекс 262 устройств ведет список различных узлов в системе, их общей памяти и доступной памяти. Например, образ (v2) 424-1 встроенного программного обеспечения узла батареи внесен в список в индексе 260 файлов с типом как «батарея», его версия – как «2», его местоположение – как «ведущий модуль» (указывает, что файл хранится на энергонезависимом запоминающем устройстве 220 ведущего модуля), его начальный адрес – как «адрес 1», его размер – как «120 кБ», а его контрольная сумма – как «контрольная сумма 1». В другом примере узел 106-1 отображения внесен в список в индексе 262 устройств как имеющий 512 кБ общей памяти и 174 кБ свободной памяти, при этом указано, что 174 кБ памяти на энергонезависимом запоминающем устройстве 252 узла отображения является памятью, доступной ведущему модулю 414.
Возвращаясь к фиг. 3, на этапе 304 получают доступ к метаданным 224, и версии новых файлов сравниваются с версиями соответствующих файлов, ранее сохраненных ведущим модулем в распределенной файловой системе 400. На этапе 306 определяется, являются ли версии новых файлов более поздними, чем версии файлов, ранее сохраненных ведущим модулем.
Если версии новых файлов не являются более поздними, чем версии соответствующих файлов, ранее сохраненных ведущим модулем, на этапе 308 новые файлы игнорируются. Например, образ (v5) 424-2 встроенного программного обеспечения узла отображения, хранящийся на карте 259 памяти, является пятой версией встроенного программного обеспечения узла отображения, которая является той же самой версией, что внесена в список для встроенного программного обеспечения узла отображения в индексе 260 файлов. В результате образ (v5) 424-2 встроенного программного обеспечения узла отображения, сохраненный на карте 259 памяти, игнорируется.
С другой стороны, если версии новых файлов более поздние, чем версии соответствующих файлов, ранее сохраненных ведущим модулем, если нет соответствующей сохраненной версии или если соответствующая сохраненная версия повреждена, то на этапе 310 определяется, имеется ли достаточная доступная память в энергонезависимом запоминающем устройстве 220 ведущего модуля для сохранения новых файлов. Если определено, что в энергонезависимом запоминающем устройстве 220 ведущего модуля имеется достаточная память для хранения новых файлов, новые файлы сохраняются локально на этапе 312. Если нет достаточной доступной памяти, на этапе 314 получают доступ к метаданным 224 файла, чтобы идентифицировать целевой ведомый узел с памятью, доступной ведущему модулю 414. В одном варианте осуществления, если сохраненный файл является встроенным программным обеспечением, выбирается целевой ведомый узел, который имеет тип, отличающийся от типа сохраненного встроенного программного обеспечения. Таким образом, если ведомый узел пришел в негодность и впоследствии заменен новым ведомым узлом, система будет обладать встроенным программным обеспечением для загрузки на этот новый ведомый узел.
Например, образ (v3) 424-5 встроенного программного обеспечения узла батареи, хранящийся на карте 259 памяти, представляет собой версию 3 встроенного программного обеспечения узла батареи, которая является более новой, чем версия 2, версия, внесенная в список в индексе 260 файлов для встроенного программного обеспечения узла батареи. Аналогично, образ (v4) 424-6 встроенного программного обеспечения узла пожарных датчиков и образ (v3) 424-7 встроенного программного обеспечения узла выпускания, хранящиеся на карте 259 памяти, являются более поздними, чем соответствующие версии, перечисленные в индексе 260 файлов. В результате определяется, что образ (v3) 424-5 встроенного программного обеспечения узла батареи, образ (v4) 424-6 встроенного программного обеспечения узла пожарных датчиков и образ (v3) 424-7 встроенного программного обеспечения узла выпускания будут сохранены в распределенной файловой системе 400 как часть этого процесса обновления. Затем получают доступ к индексу 262 устройств и определяют, что в энергонезависимом запоминающем устройстве 220 ведущего модуля имеется только 24 кБ, чего недостаточно для сохранения образа (v6) 424-5 встроенного программного обеспечения узла отображения. Затем снова получают доступ к индексу 262 устройств и определяют, что энергонезависимое запоминающее устройство 252 дисплея имеет 174 кБ памяти, доступной ведущему модулю 414, что является достаточным для сохранения образа (v6) 424-5 встроенного программного обеспечения узла отображения. Также узел отображения имеет тип, отличный от типа первого нового файла (образ (v3) 424-5 встроенного программного обеспечения узла батареи). Следовательно, узел 106-1 отображения идентифицируется как целевой ведомый узел, на котором будет сохранен первый новый файл.
Новые файлы загружаются в целевой ведомый узел с помощью последовательности команд, отправляемых из ведущего модуля 102 в целевой ведомый узел. На фиг. 6 проиллюстрирована команда 502 управления загрузкой, которая содержит заголовок с кодом формата, который представляет собой уникальный код, определяющий указанную команду, и четыре байта адреса. На фиг. 7 проиллюстрирована команда 504 загрузки данных, которая содержит заголовок с кодом формата, длину файла и переменное количество байтов данных нового файла.
Возвращаясь к фиг. 3, на этапе 316 ведущий модуль отправляет целевому ведомому узлу команду 502 управления загрузкой с начальным адресом. На этапе 318 ведущий модуль отправляет целевому ведомому узлу команду 504 загрузки данных с длиной и данными файла. Данные сохраняются по адресу, указанному в команде 502 управления загрузкой. Затем на этапе 320 метаданные 224 файла обновляются недавно сохраненными файлами, включая типы файлов, версии, местоположения, начальные адреса, размеры и значения контрольных сумм.
На фиг. 8 показана распределенная файловая система 400 после сохранения новых файлов. В энергонезависимом запоминающем устройстве 252 узла отображения теперь хранятся три дополнительных файла: образ (v3) 424-5 встроенного программного обеспечения узла батареи, образ (v4) 424-6 встроенного программного обеспечения узла пожарных датчиков и начало образа (v3) 424-7-1 встроенного программного обеспечения узла выпускания. Конец образа (v3) 424-7-2 встроенного программного обеспечения узла выпускания теперь хранится в энергонезависимом запоминающем устройстве 208-1 узла пожарных датчиков.
На фиг. 9 показаны метаданные 224 файла после сохранения новых файлов.
Новые файлы вносятся в список в индексе 260 файлов. Например, образ (v3) 424-5 встроенного программного обеспечения узла батареи вносится в список в индексе 260 файлов с типом как «батарея», его версия – как «3», его местоположение – как «дисплей», его начальный адрес – как «адрес 5», его размер – как «120 кБ», а его контрольная сумма – как «контрольная сумма 5». В другом примере образ (v3) 424-7 встроенного программного обеспечения узла выпускания вносится в список в индексе 260 файлов с типом как «выпускание», его версия – как «3», его местоположение – как «дисплей» и «пожарный датчик», его адрес – как «адрес 7» и «адрес 8», его размер – как «12 кБ» и «20 кБ» и его контрольная сумма – как «контрольная сумма 7» и «контрольная сумма 8», что указывает на то, что первые 12 кБ файла расположены на энергонезависимом запоминающем устройстве 252 узла отображения по «адресу 7» с контрольной суммой «контрольная сумма 7», а остальные 20 кБ файла расположены в энергонезависимом запоминающем устройстве 208-1 узла пожарных датчиков по «адресу 8» с контрольной суммой «контрольная сумма 8».
Индекс 262 устройств также обновляется. В частности, свободная память узла отображения и узла пожарных датчиков, двух узлов, на которых хранятся новые файлы, теперь уменьшается, для указания на то, что для ведущего модуля 414 доступно меньше памяти в результате сохранения новых файлов.
Возвращаясь к фиг. 3, на этапе 322 обнаруживается местоположение более старых версий, соответствующих новым файлам, и на этапе 324 более старые версии удаляются. На этапе 326 метаданные 224 обновляются с удалением информации о файлах, которые были удалены.
Файлы удаляются из распределенной файловой системы с помощью последовательности команд, посылаемых ведущим модулем 102 целевому ведомому узлу.
На фиг. 10 проиллюстрирована команда 506 стирания страницы, которая содержит заголовок с кодом формата, четыре байта адреса страницы, который является адресом страницы для стирания на энергонезависимом запоминающем устройстве 208 ведомого узла, и четыре байта маски стирания страницы, которые представляют четверть строк памяти для стирания. В текущем варианте осуществления энергонезависимое запоминающее устройство 220, 208, 236, 252 представляет собой флеш-память, которая доступна для записи байтами, строками и страницами, но стирается только по страницам. Поскольку файлы могут перекрывать границу страницы, необходимо, чтобы ведущий модуль 102 сообщал целевому ведомому узлу, какие строки сохранить, а какие удалить. При стирании файлов ведущий модуль 102 перебирает адреса, охватываемые страницей флеш-памяти каждого ведомого узла.
На фиг. 11 проиллюстрирован пакет 508 возврата задания файловой системы, который содержит заголовок с кодом формата и код, представляющий любые потенциальные ошибки, которые могли произойти во время процесса стирания. Если произошла ошибка, раздел памяти помечается как используемый и не будет освобожден для будущего использования ведущим модулем 102.
На фиг. 12 показана распределенная файловая система 400 после удаления более старых версий, соответствующих новым файлам. Энергонезависимое запоминающее устройство 220 ведущего модуля и энергонезависимое запоминающее устройство 236 узла батареи теперь обладают памятью, доступной ведущему модулю 414 на месте удаленных более старых версий.
На фиг. 13 показаны метаданные 224 файла после удаления более старых версий, соответствующих новым файлам. В индекс 260 файлов больше не внесены более старые версии. В индексе 262 устройств, свободная память ведущего модуля и узла батареи, узлов, из которых были удалены более старые версии, теперь увеличена, для указания на то, что ведущему модулю 414 доступно больше памяти в результате удаления более старых версий.
Таким образом, система 100 записывает файлы в распределенную файловую систему. Ведущий модуль выбирает ведомый узел с памятью, доступной ведущему модулю 414, сохраняет файл в энергонезависимом запоминающем устройстве целевого ведомого узла и затем обновляет метаданные 224 файла информацией о местоположении, размере и контрольной сумме сохраненных файлов.
На фиг. 14 приведена блок-схема, показывающая считывание файлов в распределенной файловой системе 400 ведущим модулем 102. На этапе 328 определяется, что данные, расположенные в энергонезависимом запоминающем устройстве целевого ведомого узла, должны быть считаны ведущим модулем 102.
Файлы считываются в распределенной файловой системе 400 с помощью последовательности команд, отправляемых из ведущего модуля 102 в целевой ведомый узел.
На фиг. 15 проиллюстрирована команда 510 получения внешней контрольной суммы, которая отправляется ведущим модулем 102 в целевой ведомый узел для проверки данных перед их чтением. Команда 510 получения внешней контрольной суммы содержит заголовок с кодом формата, код перезапуска/запуска, который представляет собой значение, указывающее, должен ли целевой ведомый узел запускать или перезапускать вычисление контрольной суммы, четыре байта адреса начальной страницы проверяемого файла и четыре байта адреса конечной страницы.
На фиг. 16 проиллюстрирован пакет 512 ответа внешней контрольной суммы, который отправляется целевым ведомым узлом в ведущий модуль 102 в ответ на команду 510 получения внешней контрольной суммы. Пакет 512 ответа внешней контрольной суммы содержит заголовок с кодом формата, состояние вычисления контрольной суммы, которое представляет собой число, соответствующее количеству возможных состояний процесса вычисления контрольной суммы (включая состояния: «в режиме ожидания», «в процессе выполнения», «завершено» и «ошибка»), и четыре байта, содержащие вычисленную контрольную сумму.
На фиг. 17 проиллюстрирована команда 514 адреса чтения в памяти ведомого узла, которая посылается ведущим модулем 102 в целевой ведомый узел. Команда 514 адреса чтения в памяти ведомого узла содержит заголовок с кодом формата, старший байт старшего слова начального адреса, младший байт старшего слова начального адреса, старший байт младшего слова начального адреса, младший байт младшего слова начального адреса и количество байтов для чтения. На фиг. 18 проиллюстрирован пакет 516 ответа данных памяти, который отправляется из целевого ведомого узла в ведущий модуль 102 в ответ на команду 514 адреса чтения в памяти ведомого узла. Пакет 516 ответа данных памяти содержит заголовок с кодом формата, количество байтов включенных данных и данные, начинающиеся с начального адреса, указанного в команде 514 адреса чтения в памяти ведомого узла, и заканчивающиеся после количества байтов, указанных в команде 514 адреса чтения в памяти ведомого узла.
Возвращаясь к фиг. 14, ведущий модуль 102 отправляет команду 510 получения внешней контрольной суммы в целевой ведомый узел с кодом перезапуска/запуска 1 (указывающим, что должен быть запущен расчет контрольной суммы) и начальным и конечным адресом данных, подлежащих проверке на этапе 330. На этапе 332 определяется, принят ли пакет 512 ответа внешней контрольной суммы от целевого ведомого узла, указывающий состояние вычисления контрольной суммы «завершено». Если ответ не получен или если ответ получен с состоянием вычисления контрольной суммы, отличным от «завершено» (например, «в процессе выполнения»), на этапе 334 ведущий модуль 102 продолжает опрос целевого ведомого узла с помощью одной или нескольких дополнительных команд 510 получения внешней контрольной суммы с кодом перезапуска/запуска 0 (указывающим, что расчет контрольной суммы не должен перезапускаться), пока целевой ведомый узел не вернет состояние вычисления контрольной суммы «завершено».
Когда от целевого ведомого узла принимается пакет 512 ответа внешней контрольной суммы, указывающий состояние вычисления контрольной суммы «завершено», на этапе 336 из ведущего модуля 102 в целевой ведомый узел отправляется подтверждение. Затем на этапе 338 контрольная сумма, полученная от целевого ведомого узла, сравнивается с контрольной суммой, хранящейся в индексе 260 файлов для соответствующего файла. На этапе 340 определяется, совпадают ли значения контрольной суммы. Если нет, данные определяются как поврежденные.
Если значения контрольной суммы совпадают, на этапе 344 ведущий модуль 102 отправляет в целевой ведомый узел команду 514 адреса чтения в памяти ведомого узла с количеством считываемых байтов и начальным адресом. На этапе 346 ведущий модуль 102 принимает ответ от целевого ведомого узла, содержащий количество считанных байтов и значение запрашиваемых данных. Затем на этапе 348 в целевой ведомый узел обратно отправляется подтверждение, когда данные считаны ведущим модулем 102.
В одном примере определяется, что необходимо считать встроенное программное обеспечение (v5) 424-2 узла отображения. Согласно индексу 260 файлов встроенное программное обеспечение (v5) 424-2 узла отображения объемом 120 кБ с начальным адресом «адрес 2» и контрольной суммой «контрольная сумма 2» расположено в энергонезависимом запоминающем устройте 236 узла батареи.
Ведущий модуль 102 отправляет команду 510 получения внешней контрольной суммы в узел 106-2 батареи с кодом формата «0x7F», кодом перезапуска/запуска 1 и начальным и конечных адресом, соответствующим «адресу 2». Затем блок 106-2 батареи отправляет пакет 512 ответа внешней контрольной суммы в ведущий модуль 102 с кодом формата «0x7E», состоянием вычисления контрольной суммы «завершено» и вычисленной контрольной суммой. Вычисленная контрольная сумма сравнивается с «контрольная суммой 2», и определяется, что значения одинаковы, и, следовательно, файл, который нужно считать, не поврежден. Ведущий модуль 102 отправляет подтверждение в узел 106-2 батареи.
Затем ведущий модуль 102 отправляет команду 514 адреса чтения в памяти ведомого узла в узел 106-2 батареи с кодом формата «0xc1», размером 120000, и старшим и младшим байтами старшего слова, и старшим и младшим байтами младшего слова, начальным адресом, соответствующим «адресу 5». Узел 106-2 батареи получает команду 514 адреса чтения в памяти ведомого узла и отвечает путем отправки пакета 516 ответа данных памяти в ведущий модуль 102 с кодом формата «0xc3», количеством считанных байтов и значением файла встроенного программного обеспечения (v5) 424-2 узла отображения. Затем ведущий модуль 102 отправляет подтверждение в узел 106-2 батареи, что файл был считан.
Таким образом, система 100 считывает файлы из распределенной файловой системы. Ведущий модуль проверяет целостность данных, хранящихся в целевом ведомом узле, и затем подает команду в целевой ведомый узел вернуть значение файла, хранящегося в его памяти, посредством ведущего модуля 102.
Хотя это изобретение было подробно показано и описано со ссылками на предпочтительные варианты его осуществления, специалистам в данной области техники будет понятно, что в него могут быть внесены различные изменения в форме и деталях без отхода от объема изобретения, охватываемого прилагаемой формулой изобретения.