banner

Новости

May 29, 2023

5 способов, которыми уровень аппаратной абстракции может преобразовать ваши проекты

Джейкоб Бенинский | 05 июня 2023 г.

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

Обычно я обнаружил, что у разработчиков часто есть любимый поставщик микроконтроллеров. Обычно это тот поставщик, для которого вы впервые написали встроенное программное обеспечение или с которым вы знакомы. У меня, как и у всех остальных, есть свои любимые программы, но писать свое программное обеспечение в зависимости от их HAL или библиотек программного обеспечения может быть опасно. Например, что делать, если вдруг не удастся достать их микроконтроллеры? Вам придется выбрать нового поставщика, а затем переписать, протестировать и, возможно, даже сертифицировать свой продукт. Это не быстро и не дешево! Хотя вы можете подумать, что это маловероятно, это происходило во время COVID и много раз раньше.

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

Если вам нравится идея использования HAL, поставляемого поставщиком, это нормально, если вы ознакомитесь с некоторыми важными функциями. Во-первых, HAL должен быть настоящим HAL. Это означает, что у вас должен быть определенный интерфейс, который устраняет зависимость от оборудования. Мы обсуждали это в моем блоге под названием «Написание слоев аппаратной абстракции (HAL) на C». Я часто вижу «HAL», которые представляют собой не что иное, как функции с реализацией. Это не подчиняется принципу инверсии зависимостей и так же сложно обновлять код. Далее, HAL должен быть определен отдельно от реализации. Наконец, вы сможете быстро заменить функцию, вызываемую интерфейсом. Если у вас нет этих трех вещей, у вас нет аппаратной независимости; у вас аппаратная зависимость!

Ключ к раскрытию ценности и преобразованию вашей разработки программного обеспечения начинается с использования HAL. HAL также обеспечивает дополнительные преобразования, такие как включение автоматизированного модульного и интеграционного тестирования. Разработчикам встраиваемых систем часто приходится сталкиваться с модульным тестированием, поскольку они пишут код, затрагивающий аппаратное обеспечение. Это означает, что вы должны запустить тесты на микроконтроллере. Да, когда у вас есть правильный HAL, вам все равно нужно тестировать драйверы на целевом объекте, но весь код вашего приложения внезапно освобождается! Код вашего приложения теперь может быть протестирован на модульном и интеграционном уровне на хост-компьютере независимо от аппаратного обеспечения.

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

Когда вы исключаете из уравнения аппаратное обеспечение, используя хороший HAL, это позволяет вам реализовать любую реализацию. Это означает, что у вас может быть реализация для вашей цели, вашего тестового оборудования и среды моделирования! Во многих случаях разработчики встраиваемого программного обеспечения должны начать писать программное обеспечение до того, как появится аппаратное обеспечение. Таким образом, хотя для начала мы можем использовать платы разработки, но с хорошим HAL мы можем вместо этого запускать моделирование кода нашего приложения!

ДЕЛИТЬСЯ