Недавно рабочая группа Ржавчина встроенная, создан для разработки технологий повышения качества и безопасности приложений, прошивок и драйверов для встраиваемых систем, представила первую версию встроенной платформы hal 1.0.
Embedded-хаОн позиционирует себя как рамку который служит основой создать экосистему драйверов, полностью независимых от платформыЭто означает, что драйверы можно повторно использовать на разных микроконтроллерах без значительных модификаций.
О встроенном хале
Эль Пакет подходит для написания универсальных драйверов на Rust для различных датчиков, дисплеев, накопителей и сетевых адаптеров которые не привязаны к конкретным моделям микроконтроллеров, то есть драйвер, созданный на основе Embedded_hal, может использоваться с любым микроконтроллером, для которого в пакете предусмотрен слой HAL.
Эль Пакет также предоставляет гибкую встроенную систему обработки ошибок- Для каждого типа ошибок существует свой тип ошибок, который поддерживает инструменты для отладки и отслеживания причин ошибок.
в основные задачи Embedded-hal выделяются следующие:
- Никаких подробностей, специфичных для устройства: ни журнал, ни блоки журналов, т. е. в API не должны появляться специфичные для устройства значения.
- Он должен быть универсальным внутри устройства и между устройствами. API для использования интерфейса должен быть одинаковым, независимо от используемой реализации.
- По возможности его не следует привязывать к конкретной асинхронной модели.
- Он должен быть минимальным и, следовательно, простым в реализации, но при этом легко компонуемым.
- Служить основой для создания экосистемы платформонезависимых драйверов. Здесь контроллер означает, что он позволяет целевой платформе взаимодействовать с внешним устройством, таким как цифровой датчик или беспроводной приемопередатчик.
- Методы свойств должны быть безошибочными, чтобы их можно было использовать в любой возможной ситуации.
Что нового в Embedded-hal 1.0?
Embedded-hal 1.0 представляет собой кульминацию усилий с 2020 года.чтобы гарантировать стабильность и надежность. Теперь, когда доступна версия 1.0, все включенные функции уровня аппаратной абстракции (HAL) считаются стабильными, что закладывает прочную основу для будущих улучшений и расширений.
Встроенный-Hal 1.0 Представлен как первая стабильная версия проекта. а вместе с ними также сформированы стабильные версии дополнительных пакетов, таких как Embedded-hal-async, облегчающий создание асинхронных драйверов, и Embedded-hal-nb, реализующий модель опроса состояний в режиме опроса.
Наряду с этими пакетами предлагаются дополнительные инструменты, такие как hal-bus, предназначенный для работы с шинами SPI и I2C, CAN с поддержкой шины CAN (сеть контроллеров) и IO, который обеспечивает реализацию типов для ориентированных на ввод/вывод данных. байт, идеально подходит для использования с UART и другими периферийными устройствами.
Помимо этого, также выделяется следующее:
Ориентируйтесь на водителей: В ответ на отзывы пользователей и меняющиеся требования в Embedded-hal 1.0 особое внимание уделяется разработке универсальных драйверов, упрощению API и устранению сложностей взаимодействия.
Асинхронная поддержка: Заметным дополнением является библиотека Embedded-hal-async, которая предлагает асинхронные версии признаков. Воспользовавшись поддержкой асинхронных функций Rust 1.75 в стабильной версии Rust, разработчики теперь могут использовать асинхронные функции, не прибегая к динамическому выделению памяти или динамической диспетчеризации. Это улучшение упрощает разработку и соответствует современным практикам Rust.
Совместное использование шины SPI: Функция SpiDevice обеспечивает поддержку совместного использования шины SPI между несколькими устройствами, каждое из которых отличается своим отдельным контактом CS. Это обеспечивает бесперебойную связь между контроллерами и несвязанными устройствами на одной шине, повышая гибкость и эффективность использования ресурсов.
Обработка ошибок: Универсальные драйверы выигрывают от расширенных возможностей обработки ошибок с требованием, чтобы драйверы реализовали признак «Ошибка», который позволяет проверять и классифицировать ошибки. Этот стандартизированный подход обеспечивает надежную обработку ошибок в различных реализациях HAL.
Интеграция встроенного ввода-вывода: Проект Embedded-Hal включает библиотеки Embedded-IO, которые предоставляют функции для байт-ориентированных потоков ввода-вывода. Благодаря переносу функций UART на встроенный ввод-вывод разработчики могут рассчитывать на унифицированный и упрощенный подход к последовательной связи.
Выпуск Embedded-Hal 1.0 знаменует собой значительный прогресс в экосистеме Rust. Напоследок тем, кому интересно узнать больше о разработках проекта, следует знать, что они распространяются под лицензией Apache 2.0.
источник: https://blog.rust-embedded.org