- PVSM.RU - https://www.pvsm.ru -

Ортодоксально Каноническая Прошивка (ОКФП)

После 13 лет программирования микроконтроллеров размышляя на тему того, что должно быть в типовой микроконтроллерной прошивке я проанализировал сотни сборок и десятки электронных плат. В результате как в математике вынес за скобки базовый функционал, который так или иначе нужен практически в каждом проекте. Этот функционал кристаллизировался в требования, которые я решил назвать ортодоксально каноническая форма прошивки (ОКФП). По аналогии с тем как в С++ есть такое понятие, как ортодоксально каноническая форма для класса.

Атак обо все по порядку. Что же такое ортодоксально каноническая форма прошивки? Если коротко, то это компромисс между простотой и функциональностью.

Ортодоксально каноническая прошивка это прошивка, которая обладает следующими свойствами:

1--Прошивка собирается из GNU Make скриптов. [1] Это необходимо для сборки по клику на *.bat скрипт. Плюс сборка из скриптов нужна для подключения сборки к серверу автоматического построения Jenkins. [2]

2--Сборка без RTOS. Например, загрузчику RTOS нужна, как собаке бензобак.
Поэтому безусловно надо научиться собирать проекты без RTOS.

3--В сборке присутствуют драйверы для следующих базовых аппаратных подсистем:
SysTick, NVIC, PLL, GPIO, PINMUX, FLASH, TIMER, DMA, UART. Реализация драйверов должна быть полной. [3]

4--В сборке присутствует HeartBeat LED. Чтобы просто глядя на устройство убеждаться, что прошивка не зависла. Раз мигает LED значит не зависло.

5--В прошивку добавлен драйвер аппаратных таймеров. Для вычисления микросекундных пауз. Для изменения up-time программы. Для анализа времени исполнения участков кода и для диспетчера задач. [4]

6--В сборке присутствует диспетчер задач на базе компонента Limiter. [4]

7--В сборке присутствует UART-CLI [5].

8--В сборке присутствует NVRAM [6].

9--В сборке присутствует API для пуска модульных тестов [7].

10--Модульные тесты можно вызывать текстовой командой из UART-CLI буквально из PuTTY.

11--Также следует сразу подготовить отдельную сборку загрузчика [8]через UART-CLI.

12--Должен быть запущен сторожевой таймер.

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

CLI, NVRAM и сборка из скриптов это норма. Как по мне, эти атрибуты являются просто джентльменским набором программиста для абсолютно любой нормальной, современной, взрослой, промышленной прошивки. Своего рода коробочка в которую можно заложить абсолютно любой функционал. Это так же принято, как школьное образование, медицинское страхование и пенсионная система. Если у Вас в репозитории [9]и прошивке всего этого нет, то, наверное, говорить о разработке какого-либо устройства просто даже не имеет смысла. Проект заглохнет, разрушится под собственным весом спустя два-три года. Как ни крути, но сначала надо поднять какую-никакую минималистическую систему. Писать прошивку без этих 7-10 свойств - это как ходить по улице без одежды. Понимаете?...

Более подробно по каждому требованию к ортодоксально канонической форме для прошивки можно почитать по ссылкам в источниках

Название текста

URL

NVRAM для микроконтроллеров

https://habr.com/ru/articles/706972/ [6]

Почему Нам Нужен UART-Shell?

https://habr.com/ru/articles/694408/ [5]

Архитектура Хорошо Поддерживаемого Программного Компонента

https://habr.com/ru/articles/683762/ [3]

Модульное Тестирование в Embedded

https://habr.com/ru/articles/698092/ [7]

Диспетчер Задач для Микроконтроллера

https://habr.com/ru/articles/757000/ [4]

Почему важно собирать код из скриптов

https://habr.com/ru/articles/723054/ [1]

23 Атрибута Хорошего Загрузчика

https://habr.com/ru/articles/754216/ [8]

Запуск сервера сборки Jenkins

https://habr.com/ru/articles/695978/ [2]

Что Должно Быть в Каждом FirmWare Pепозитории

https://habr.com/ru/articles/689542/ [9]

Архитектура Xорошего Кода Прошивки (Массив-Наше Всё)

https://habr.com/ru/articles/816589/ [10]

Aтрибуты Хорошей Прошивки (Firmware)

https://habr.com/ru/articles/655641/ [11]

Если есть, что добавить (или исключить) к требованиям к ОКФП, то пишите в комментариях.

Автор: aabzel

Источник [12]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/unit-testing/438279

Ссылки в тексте:

[1] Прошивка собирается из GNU Make скриптов. : https://habr.com/ru/articles/723054/

[2] построения Jenkins.: https://habr.com/ru/articles/695978/

[3] Реализация драйверов должна быть полной.: https://habr.com/ru/articles/683762/

[4] Для анализа времени исполнения участков кода и для диспетчера задач.: https://habr.com/ru/articles/757000/

[5] присутствует UART-CLI: https://habr.com/ru/articles/694408/

[6] присутствует NVRAM: https://habr.com/ru/articles/706972/

[7] API для пуска модульных тестов: https://habr.com/ru/articles/698092/

[8] отдельную сборку загрузчика : https://habr.com/ru/articles/754216/

[9] Вас в репозитории : https://habr.com/ru/articles/689542/

[10] https://habr.com/ru/articles/816589/: https://habr.com/ru/articles/816589/

[11] https://habr.com/ru/articles/655641/: https://habr.com/ru/articles/655641/

[12] Источник: https://habr.com/ru/articles/974152/?utm_campaign=974152&utm_source=habrahabr&utm_medium=rss