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