Rust 与 C/C++ 嵌入式的比较
相同点
- 生成的目标文件都是二进制文件,也可生成 elf/hex/asm文件
- bin 文件的内容结构大体一致,都分为 text/bass/data段
- 单片机的启动原理一致,都是从中断向量表的 reset向量执行,然后初始化数据段,bss段等内容
- 都需要链接脚本文件链接所有目标文件
- 应用层通常都从 main函数中开始运行
- 都可以由中断触发进入中断服务函数
- 都能直接操作硬件寄存器
- 都有裸指针操作内存或外设寄存器
差异
- Rust 通常直接操作外设的寄存器,rust 可能会认为 unsafe, 需要特别标记
- Rust 推荐使用 pac 抽象层来操作外设寄存器
- Rust 的外设驱动抽象通常有统一的标准接口,便于移植
- Rust 的外设驱动比较抽象,但执行依旧高效,且安全,能尽最大能力保证硬件与软件的统一性,避免软件对硬件进行非法复用操作
- Rust 提供了大量的线程安全的标准库
- Rust 除裸指针外,也有胖指针,切片等更安全更高抽象的指针,且运行依旧高效