0.2.0 |
|
---|---|
0.1.0 |
|
#22 in #ruspiro
14KB
RusPiRo 嵌入式系统开发套件包
这是一个将不同的RusPiRo包组合成一个库的包。该库可以使用功能门进行配置,并允许在您的 Cargo.toml
文件中依赖项的更方便的使用模式。下面提供详细信息和使用模式...
使用方法
要使用此包,只需将以下依赖项添加到您的 Cargo.toml
文件中。系统开发套件的组件可以使用功能门进行配置。下面列出了可用的功能。
[dependencies]
ruspiro-sdk = "0.2"
始终可用的包有
ruspiro-register
ruspiro-lock
ruspiro-singleton
ruspiro-gpio
ruspiro-mailbox
ruspiro-timer
ruspiro-cache
ruspiro-interrupt
功能
功能 | 默认 | 描述 |
---|---|---|
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
的情况下成功构建二进制文件,还需要满足一些其他核心要求
-
提供一个 panic 处理程序和一个 eh_personality 函数。
-
提供 unwind 桥接程序
- __aeabi_unwind_cpp_pr0
- __aeabi_unwind_cpp_pr1
- _Unwind_Resume
-
在此场景中使用
ruspiro-allocator
时,链接器需要提供两个符号__heap_start
__heap_end
表示堆的物理内存地址空间。
场景 2:使用内置引导的 Uart/Console
这可能是最典型的起始场景,因为它提供了初始化 Uart 作为控制台输出通道的功能,使得在真实硬件上进行“调试”变得容易一些。在此处找到整个包结构:Scenario-2
许可证
根据 Apache 许可证 2.0 版本授权,(LICENSE 或 https://apache.ac.cn/licenses/LICENSE-2.0)
依赖项
~2.5MB
~54K SLoC