ΠžΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½ embedded-hal 1.0, инструмСнтарий для создания Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ΠΎΠ² Π½Π° языкС Rust

Рабочая Π³Ρ€ΡƒΠΏΠΏΠ° Rust Embedded, созданная для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΡ качСства ΠΈ бСзопасности ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΠΏΡ€ΠΎΡˆΠΈΠ²ΠΎΠΊ ΠΈ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ΠΎΠ² ΠΊ встраиваСмым систСмам, прСдставила ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ выпуск Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ° embedded-hal, ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰Π΅Π³ΠΎ Π½Π°Π±ΠΎΡ€ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Ρ… интСрфСйсов для взаимодСйствия с ΠΏΠ΅Ρ€ΠΈΡ„Π΅Ρ€ΠΈΠ΅ΠΉ, ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ примСняСмой с ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π°ΠΌΠΈ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ΡΡ Ρ‚ΠΈΠΏΠ°ΠΆΠΈ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с GPIO, UART, SPI ΠΈ I2C). Наработки ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° написаны Π½Π° языкС Rust ΠΈ Ρ€Π°ΡΠΏΡ€ΠΎΡΡ‚Ρ€Π°Π½ΡΡŽΡ‚ΡΡ ΠΏΠΎΠ΄ Π»ΠΈΡ†Π΅Π½Π·ΠΈΠ΅ΠΉ Apache 2.0.

ΠŸΠ°ΠΊΠ΅Ρ‚ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для написания Π½Π° языкС Rust ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹Ρ… Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ΠΎΠ² для Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Π΄Π°Ρ‚Ρ‡ΠΈΠΊΠΎΠ², экранов, ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΎΠ² ΠΈ сСтСвых Π°Π΄Π°ΠΏΡ‚Π΅Ρ€ΠΎΠ², Π½Π΅ привязанных ΠΊ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΌ модСлям ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ΠΎΠ², Ρ‚.Π΅. созданный Π½Π° Π±Π°Π·Π΅ embedded_hal Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ с Π»ΡŽΠ±Ρ‹ΠΌΠΈ ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π°ΠΌΠΈ, для ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π² ΠΏΠ°ΠΊΠ΅Ρ‚Π΅ прСдоставляСтся HAL-прослойка. ΠŸΠ°ΠΊΠ΅Ρ‚ΠΎΠΌ Ρ‚Π°ΠΊΠΆΠ΅ прСдоставляСтся гибкая встроСнная систСма ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ошибок — для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° ошибок прСдусмотрСно Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ Ρ‚ΠΈΠΏΠ°ΠΆΠ° Error, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‰Π΅Π³ΠΎ срСдства для ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ ΠΈ отслСТивания ΠΏΡ€ΠΈΡ‡ΠΈΠ½ появлСния ошибок.

Embedded-hal 1.0 ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½ ΠΊΠ°ΠΊ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ выпуск ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для создания Ρ€Π°Π±ΠΎΡ‡ΠΈΡ… Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ΠΎΠ². Π Π°Π±ΠΎΡ‚Π° ΠΏΠΎ стабилизации API ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Π»Π°ΡΡŒ с 2020 Π³ΠΎΠ΄Π°. Помимо embedded-hal Ρ‚Π°ΠΊΠΆΠ΅ сформированы ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½Ρ‹Π΅ выпуски Π²ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² embedded-hal-async с ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌΠΈ для создания асинхронных ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² ΠΈ embedded-hal-nb с Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ опроса состояния Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ ΠΏΠΎΠ»ΠΈΠ½Π³Π° (polling). Π’Π°ΠΊΠΆΠ΅ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½Ρ‹ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹: embedded-hal-bus с инструмСнтами для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с шинами SPI ΠΈ I2C, embedded-can с ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ ΡˆΠΈΠ½Ρ‹ CAN (Controller Area Network) ΠΈ embedded-io с Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ Ρ‚ΠΈΠΏΠ°ΠΆΠ΅ΠΉ для Π±Π°ΠΉΡ‚ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ Π²Π²ΠΎΠ΄Π°/Π²Ρ‹Π²ΠΎΠ΄Π°, ΠΏΡ€ΠΈΠ³ΠΎΠ΄Π½ΠΎΠ³ΠΎ для использования с UART.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: opennet.ru

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ