#networking #embedded-devices #linux-networking #standard #embedded-nal #stack #operating-system

std-embedded-nal

为支持标准库的大设备实现 embedded-nal 特性

9 个不稳定版本 (3 个重大更改)

0.3.0 2024年6月5日
0.2.0 2023年10月25日
0.1.3 2022年7月25日
0.1.2 2021年11月1日
0.0.1 2020年9月2日

#170 in 嵌入式开发

Download history 256/week @ 2024-05-02 376/week @ 2024-05-09 390/week @ 2024-05-16 434/week @ 2024-05-23 432/week @ 2024-05-30 243/week @ 2024-06-06 171/week @ 2024-06-13 558/week @ 2024-06-20 270/week @ 2024-06-27 470/week @ 2024-07-04 437/week @ 2024-07-11 122/week @ 2024-07-18 197/week @ 2024-07-25 267/week @ 2024-08-01 273/week @ 2024-08-08 316/week @ 2024-08-15

每月下载量 1,055
用于 2 软件包

MIT/Apache

23KB
412 代码行

std-embedded-nal

此软件包实现了为支持标准库网络功能的操作系统实现的 embedded-nal 网络特性。

其中,它对于 embedded-nal 的作用就像 linux-embedded-hal 对于 embedded-hal 一样:一种在 Linux 上使用为裸机嵌入式世界编写的库的方法。 (只是网络接口比硬件访问标准化得更好,因此它应该可以在任何系统上运行)。

使用方法

由于操作系统的网络堆栈始终可用,因此可以在任何时间实例化和使用,无需同步,大致如下

use embedded_nal::nb::block;
use std_embedded_nal::Stack;
use embedded_nal::UdpClient;

let message = [0x50, 0x01, 0x00, 0x00];

let mut stack = Stack::default();
let mut socket = stack.socket()?;
block!(stack.connect(&mut socket, "127.0.0.1:5683".parse()?)?);
block!(stack.send(&mut socket, &message)?);

请参阅 CoAP 和 HTTP 的示例,以获取完整和有效的版本。

性能、非阻塞和异步

当使用常规的 embedded-nal API 时,客户端主示例使用 nb::block!,这意味着会忙等待直到有事件到达(对于客户端来说很糟糕,对于服务器来说更糟糕)。

基于 nb 的这些 API 的普遍预期是用户知道何时再次尝试; coapclient 示例的 UNIX 版本说明了这可能如何完成。(围绕 mio 和此库的设置相对复杂;嵌入式实现可能需要更少的代码。)

在 nightly 版本中,并且通过 async 功能控制,embedded-nal-async 软件包的异步实现可用。

成熟度

此软件包包含当前在 embedded-nal 中存在的特性的最小工作实现。

最低支持的 Rust 版本

此软件包在稳定的 Rust 1.60.0 上进行构建测试。这基本上遵循 embedded-nal 的 MSRV。它可能 可能 可以使用较旧的版本进行编译,但这可能在任何时候发生变化。

依赖关系

~0.2–13MB
~108K SLoC