Skip to content

rust-embedded层级理解

· 2 min · 嵌入式 / RUST

一、embedded-hal层级#

这个rust嵌入式生态的基础层级,定义了一系列的trait,要求mcu的hal层实现这些trait,实现了这些trait的mcu的hal层就能够实现一系列统一的能力。

比如现在有两个mcu有不同的uart实现,两个mcu的hal分别实现了自己的uart的write trait,那么在更上层的依赖于uart的驱动,就只需要保证uart实现了embedded-hal所定义的write,就可以无视mcu的外设差异与驱动差异来使用这个依赖于uart的驱动。

再举个例子,现在rust生态中有一个mpu6050的驱动,mpu6050的驱动依赖于I2C的实现,任何实现了I2C trait的mcu驱动,都可以轻而易举的使用mpu6050,并且能够显著的减少在常规C语言中找库和适配库的工作量。

二、mcu-hal层级#

这个层级主要是mcu实现自己的基础驱动,包括了mcu本身的所有外设的地址和寄存器偏移地址,以及基本的一些功能,这个hal层一定会实现embedded-hal所定义的基础的trait,从而支持大量的外设驱动。

但是同时为了同样提供高级功能,比如复杂的dma、中断配置,mcu-hal也会提供单独的功能。

三、bsp-driver层级#

对于不同的板子,可能需要实现不同的功能,可能需要使用高级的mcu能力来实现一系列相同的接口。使用底层提供的hal,或者来自于c语言的hal,来实现这个driver层级,提供向上的能力。