#bare-metal #sdk #raspberry-pi #ruspiro

已删除 ruspiro-sdk

将RusPiRo包合并成一个SDK库,以便方便使用,为各个部分提供功能门

0.2.0 2019年9月1日
0.1.0 2019年8月10日

#22 in #ruspiro

Apache-2.0

14KB

RusPiRo 嵌入式系统开发套件包

这是一个将不同的RusPiRo包组合成一个库的包。该库可以使用功能门进行配置,并允许在您的 Cargo.toml 文件中依赖项的更方便的使用模式。下面提供详细信息和使用模式...

Travis-CI Status Latest Version Documentation License

使用方法

要使用此包,只需将以下依赖项添加到您的 Cargo.toml 文件中。系统开发套件的组件可以使用功能门进行配置。下面列出了可用的功能。

[dependencies]
ruspiro-sdk = "0.2"

始终可用的包有

功能

功能 默认 描述
ruspiro_pi3 yes 转发到依赖包以启用针对Raspberry Pi3的特定编译,例如提供正确的MMIO寄存器基地址。
with_boot yes ruspiro-boot 包捆绑到SDK包中,提供Raspberry Pi引导代码。
with_allocator yes ruspiro-allocator 包捆绑到SDK包中
with_console no ruspiro-console 包捆绑到SDK包中。这需要存在分配器。
with_uart no ruspiro-uart 包捆绑到SDK包中。这将始终捆绑 ruspiro-console,并且也需要存在分配器。因此,要么提供自己的,要么同时激活 with_allocator 功能。
with_i2c no ruspiro-i2c 包捆绑到SDK包中。这需要存在分配器。

使用场景

以下部分提供了一些关于如何使用 ruspiro-sdk 的指导。每个场景提供了一个在相应章节中提到的子文件夹中可以找到的示例。这些示例应该可以顺利构建,可以作为您自己的项目的起点。

场景1:最小化内置引导

本场景是首次使用 RusPiRo SDK 的建议入口点。在此场景中,将仅使用默认功能的 ruspiro-sdk。在此处找到整个包结构:Scenario-1

场景 1:高级!无内置引导

此高级场景旨在为那些已有自己的引导组件或想要编写自己的引导组件的用户。此外,在未使用 ruspiro-boot 的情况下成功构建二进制文件,还需要满足一些其他核心要求

  1. 提供一个 panic 处理程序和一个 eh_personality 函数。

  2. 提供 unwind 桥接程序

    • __aeabi_unwind_cpp_pr0
    • __aeabi_unwind_cpp_pr1
    • _Unwind_Resume
  3. 在此场景中使用 ruspiro-allocator 时,链接器需要提供两个符号

    • __heap_start
    • __heap_end

    表示堆的物理内存地址空间。

场景 2:使用内置引导的 Uart/Console

这可能是最典型的起始场景,因为它提供了初始化 Uart 作为控制台输出通道的功能,使得在真实硬件上进行“调试”变得容易一些。在此处找到整个包结构:Scenario-2

许可证

根据 Apache 许可证 2.0 版本授权,(LICENSEhttps://apache.ac.cn/licenses/LICENSE-2.0

依赖项

~2.5MB
~54K SLoC