
Коли ви маєте справу з контролером бездротового датчика, що забирає енергію, таким як Edyza SoM, однією з постійних проблем є збій внаслідок відключення електроживлення. Будь то вібрація, теплова або навіть сонячна енергія, бувають випадки, коли навколишньої енергії недостатньо для завершення деяких критичних обчислень. Несподівані збої живлення часто можуть залишати енергонезалежну пам’ять у неприпустимих станах, що вимагає повного форматування та перепрошивки коду, що часто важко, коли ви маєте справу з тисячами розгорнутих датчиків.
Типовим рішенням для усунення передбачуваного відключення електроенергії, такого як вичерпання доступної енергії, що зберігається у суперконденсаторі нашої SoM, є контроль за станом низької енергії, а потім запуск процесу сплячого режиму. Потім цей процес збереже стан системи в енергонезалежній пам’яті, яка згодом може бути відновлена, коли джерело живлення стане доступним. Однак ми хотіли надати справжню стійкість до відмов для нашого SoM, щоб він міг постійно виконувати не тільки через передбачувані збої, але і абсолютно непередбачувані. Але спочатку невелике введення в нашу платформу розробки додатків для сенсорних джерел навколишнього середовища.
Python – мова програмування для розробки програм на Edyza SoMs. Використовуючи нашу веб-IDE, ви можете розробляти програми, відстежувати паб / підписки та навіть флеш-код по повітрю. Нижче наведено коротке відео про веб-середовище розробки додатків для нашого SoM.
Якщо код python такий же простий, як і на відео, який періодично проводить опитування датчика температури та публікує ці дані в хмарі, то періодичний збій живлення не буде серйозною проблемою, крім випадків, коли він пошкоджує енергонезалежну пам’ять. Однак для чогось більш складного потрібна можливість відновити роботу з того місця, де її несподівано перервав збій живлення. Тому, щоб забезпечити безперервне виконання коду через майже постійні переривання, ми застосували відмовостійку модель програмування та виконання, яка називається DINO (смерть не є варіантом).

DINO – це дітище переможця премії Bell Labs за 2015 рік Брендона Лучію, і ви можете прочитати про подробиці в його статті, що отримала нагороду тут. По суті, DINO забезпечує підтримку контрольно-пропускних пунктів та версій даних, що допомагає підтримувати енергонезалежну пам’ять послідовно при відключенні живлення. У зазначеному програмістом контрольному пункті в коді реєстри процесора, стек і будь-які змінні купи копіюються в енергонезалежну пам’ять, яка подвійно буферизується для забезпечення того, щоб нещодавно записані контрольні точки замінили попередні лише після їх повного запису. Крім того, кінцеві значення записуються в кінці цієї енергонезалежної пам’яті, щоб переконатися, що пам’ять знаходиться у відомому непошкодженому стані перед відновленням змінних під час відновлення після відмови. При роботі з енергонезалежними змінними, до яких здійснюється доступ у контрольній точці розділу коду, DINO використовує керування версіями, завдяки чому енергонезалежна змінна спочатку копіюється в енергонезалежну область пам’яті на початку контрольної точки. Енергонезалежна пам’ять оновлюється лише тоді, коли зустрічається наступна контрольна точка. Нижче наведено іграшковий приклад коду пітона з контрольним пунктом DINO, який зберігає впорядкований список температур у списку. Checkpointing гарантує, що код відновиться з позначеного місця, а не з самого початку після відновлення після збою живлення. Змінні також зберігаються при відключенні живлення.

Накладні витрати на використання DINO становлять від 1,8 до 2,7, що є незначним для більшості додатків з низькою пропускною здатністю. Додана надійність і можливість виконувати безперервне виконання через майже постійні відмови є величезною перевагою для промислового впровадження бездротових датчиків.
Спочатку ця публікація була опублікована за адресою https://www.linkedin.com/pulse/death-option-dr-rana-basheer/.
Rana Basheer PhD люб’язно дозволив нам перекласти і опублікувати цю статтю.