Rust嵌入式开发开源环境概览(零散的一些知识点)

此文档为学习笔记,学习的是B站嵌入式开发相关内容,感谢up主爆米花胡了。

Rust嵌入式开发开源环境概览

开源项目的一些重要组成部分

这个网址是开源项目:https://github.com/rust-embedded/大家可以去看看,大概分成以下几个主要部分:
1.the resource team:编写各种相关的文档,有一本具有领导意义的书籍:the embedded rust book。
2.the tools team:负责开发与嵌入式相关的工具,例如有个很重要的svd2rust工具(代码生成工具,封装寄存器读写相关的API)就是他们维护的。
3.the HAL team:HAL就是硬件抽象层,这个部分就是OS和硬件的中间层,作用很大。有embedded-hal和embedded-dma等等库。
4.the cortex-M team:负责维护和cortex-m内核有关的生态,可以提供如cortex-m、cortex-m-rt等相关的crate。这些crate可以直接操作cortex内核的寄存器,并提供中断处理的相关API。

开发生态一览图

在这里插入图片描述
这个图呢就是一个项目的层级依赖关系,上级依赖下级,下级为上级提供库的支持。
从下往上来说,首先是底层的硬件,就是具体的MCU物理器件。往上是PAC(外围设备通道库)和Cortex内核相关的库,这两个是同时存在的, PAC库操作的是关于外设的寄存器,微处理架构库操作的是关于架构的寄存器。然后到HAL的Traits,这里只是定义了一些接口traits,具体的实现在HAL impl中,直接调用下层。有两个Driver层,底下那个肯定就是调用下两个操作寄存器相关,上面那个不仅可以调用PAC和微架构库,还可以调用HAL的库。

SVD2rust

嵌入式开发的最基本最底层的工作,就是读写寄存器,因此,PAC是整个开发中最基础的组件,PAC代码重复度很高,且有非常规范的格式,人工编写麻烦,所以PAC代码往往由工具自动生成,svd2rust就是这样一个工具。
在这里插入图片描述
编译器:使用rustc,由于是交叉编译,所以需要指定target。
连接器:使用LLVM的lld工具,在嵌入式开发中,需要提供自己的链接脚本,通常以.x为后缀的文件。

架构概念图

在这里插入图片描述
左边是代码的依赖关系,右边是开发的环境。

开源开发环境和keil开发环境

在这里插入图片描述
vscode只是一个编辑器,可以标记断点的位置,真正的调试是通过调试插件来完成的,GDB是用来本地开发的,自身并不支持交叉编译的调试,这里就需要加入一个中间层,也就是GDB-Server,如下图所示:
在这里插入图片描述
在这里插入图片描述
为什么用GDB,而不用LLDB?
Rust代码编译的过程实际上是通过LLVM进行的,在搭建环境的时候虽然安装了ARM-GCC工具链,但实际上并不是要用GCC,只是为了使用里面提供的GDB工具。实际上,LLVM提供了LLDB,但是应该不稳定,所以还是用GDB好一些。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值