Π Π°Π±ΠΎΡΠ°Ρ Π³ΡΡΠΏΠΏΠ° 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