Як я можу робити додаткові оновлення зі спалахом, який можна стерти лише блочно?


11

Сценарій

Я хочу оновити недорогий пристрій IoT в прямому ефірі з новою прошивкою, яка оновлює мікроконтролери пристроїв. Пам'ять мікроконтролера - це флеш-пам’ять в діапазоні від 32 до 128 к (кожен цент). Ця дешева пам'ять має одне головне обмеження: її можна стирати лише блочно.

Питання

Це означає, що я не можу робити диференціальне ( дельта ) оновлення? Чи потрібно завжди оновлювати всю пам'ять контролера (або хоча б значну частину)?

Я хочу зменшити необхідність спалахувати все і ризикувати якнайшвидше загармувати пристрій. Чи існують стратегії, коли миготь мікроконтролери по повітрю?


Що для вас важливіше за найнижчу ціну або найнижчу ставку ризику?
Бенс Каулікс

@BenceKaulics знаходить правильний баланс між ними, я думаю. Адже цегляний ризик - це також (зважена) вартість.
Гельмар

Відповіді:


8

Проста відповідь - так - вам потрібно достатньо блоків спалаху для підтримки завантажувача та зображень коду A / B, якщо ви хочете отримати високу надійність. Перш ніж активувати нове зображення, ви можете написати цілу річ, перевірити її та, можливо, повторити спробу.

Однак це є дорогим / надійна стратегія , і є речі , які ви можете зробити , щоб зменшити накладні витрати. Підтримка оновлень OTA на низькому рівні також може бути частиною вбудованого програмного забезпечення або ОС, так що ви можете уникати власних програм, якщо ви не хочете вчитися. Ця функція може бути описана як FOTA.

Розбиття бази коду дозволяє здійснювати поступові оновлення, найкраще, якщо завантажувач може підключити мережеве з'єднання, завантажити та перевірити код, не потребуючи жодного запасного коду користувача. За допомогою локального шлюзу управління цим завданням може бути делеговане з недорогих кінцевих точок.

Багато пристроїв мають невелику кількість спалаху стирання слів, і навіть якщо цього не зробити, зазвичай можна встановити біти, не потребуючи стерти цілий блок. Ці функції можна використовувати для маніпулювання таблицями стрибків і зшивання коду, який оновлюється в шматки розмірів блоків. Навіть якщо ви спочатку планували повноцінний простір коду A / B, вам може знадобитися перейти до більш складної схеми, коли база коду зростає занадто сильно.

Щоб уточнити функціональність, яку можна досягти за допомогою складного рішення прошивки в режимі "ефір", завантажувач і потенційно первинний стек зв'язку можуть залишатись резидентними, тоді як повний залишок користувальницького додатка знову миготить. Для цього не потрібні накладні витрати (особливо якщо розділ блоку м'який). У сценарії, коли стек зв’язку потрібно оновити, область, яка зазвичай використовується для коду програми, може бути тимчасово використана під час завантаження та перевірки. Для досягнення цього потрібна певна підтримка в SoC, але пристрої 2-го і 3-го поколінь, розроблені для цього, вже існують.


6

Я хочу зменшити необхідність спалахувати все і ризикувати якнайшвидше загармувати пристрій. Чи існують стратегії, коли миготь мікроконтролери по повітрю?

Крім вашого коду, який робить оновлення, яке було б відносно статичним, вам потрібно зберегти у своєму сховищі два зображення: активне зображення та резервне зображення. Щоразу, коли вам потрібно оновити, робіть це в резервному режимі, а потім перемикайте його на активне. Після стабілізації оновіть старе активне зображення, яке тепер має бути вашим резервним копієм.

Зважаючи на це, ви можете використовувати алгоритми вирівнювання зносу при оновленні обох зображень. Код таких алгоритмів може зайняти приблизно 10-15% від загального обсягу пам’яті, але це варто того, щоб продовжити термін служби пристрою.

Вирівнювання зносу зазвичай управляється флеш-контролером, який використовує алгоритм вирівнювання зносу, щоб визначити, який фізичний блок використовувати кожен раз, коли запрограмовані дані. Існує два типи випромінювання твердотільного накопичувача (SSD): динамічне та статичне. Динамічні пули вирівнювання зносу стирають блоки та вибирають блок із найменшим числом стирань для наступного запису.

Статичне вирівнювання зносу, з іншого боку, вибирає цільовий блок з найнижчим загальним числом стирань, при необхідності стирає блок, записує нові дані до блоку та забезпечує переміщення блоків статичних даних, коли їх кількість стирань блоку нижче a певний поріг. Цей додатковий крок переміщення даних може уповільнити продуктивність запису за рахунок накладних витрат на контролері спалаху, але статичне вирівнювання зносу значно ефективніше, ніж динамічне вирівнювання зносу для збільшення тривалості експлуатації твердотільних пристроїв.

( Techtarget.com: Знос вирівнювання )


6

Freescale Semiconductor описує надійний спосіб оновлення мікропрограмного забезпечення Kinetis на повітрі .

Він називається: Програма Flash Swap .

Системи, що використовують флеш-пам'ять

На пристроях з двома або більше внутрішніми блоками спалаху, які підтримують своп, базова пам'ять кожного блоку флеш може бути замінена. Таким чином, адресне розташування кожного блоку флешів буде замінено на логічній карті пам'яті пристрою. Після скидання вбудована система флеш-заміни по суті вибирає, яке програмне забезпечення виконується за розташуванням блоку флеш-пам'яті в логічній карті пам'яті. Це дозволяє створити систему резервного копіювання коду з додатковою простотою програмування. Ви можете виконувати один блок, стираючи / програмуючи інший блок. На пристроях Kinetis система флеш-заміни відстежує / контролює всі етапи переходу зі старої програми на нову; є додаткова гарантія надійної роботи у разі втрати електроенергії під час одного з цих кроків.

Переваги

  • Простота програмування Додаток завжди виконується з нижнього блоку карти пам'яті.
  • Толерантність до втрат електроенергії.
  • Не потрібно завантажувач. Без затримки до запуску основної програми.
  • Добре підходить для багатозадачних ОС. Мінімальний час простою програми. У багатозадачній системі можна продовжувати виконувати основні завдання програми, поки фонові завдання виконуються для оновлення нової копії програми.
  • Резервна копія коду. Можливо повернутися до відомого робочого додатку.

Недоліки

  • Додатковий простір флеш-пам'яті, необхідний для зберігання резервної копії.

Ви можете оновити блоки, а потім поміняти їх.

обмін пам'яті під час візуалізації оновлення

Документ пов'язаний містить детальний опис.

Це забезпечує більш безпечне оновлення мікропрограмного забезпечення, але, як це вимагає більше флеш-пам’яті, безумовно, коштує дорожче . Також не застосовується до будь-якого типу мікроконтролерів, лише тих, що підтримують внутрішні спалахи блоків.


2
Це виглядає чудово і виглядає як рішення, яке, безумовно, слід розглянути, якщо його можна збалансувати з витратами. + 1
Гельмар
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.