115 lines
2.6 KiB
Markdown
115 lines
2.6 KiB
Markdown
# EBUS - 轻量级软件总线通讯框架
|
||
|
||
## 简介
|
||
|
||
EBUS是一个轻量级的软件总线通讯框架,用于组件间的消息传递。它实现了发布-订阅模式,支持同步消息处理,为嵌入式系统提供了一种高效、灵活的组件间通信机制。
|
||
|
||
## 特性
|
||
|
||
- **轻量级设计**:针对资源受限的嵌入式系统优化
|
||
- **总线-通道-订阅者模型**:清晰的层次结构
|
||
- **同步消息处理**:简化并发控制
|
||
- **跨平台支持**:支持FreeRTOS和POSIX环境
|
||
- **简单易用的API**:易于集成到现有项目中
|
||
|
||
## 架构
|
||
|
||
EBUS框架基于以下核心概念:
|
||
|
||
- **总线(Bus)**:顶层通信实体,可以包含多个通道
|
||
- **通道(Channel)**:特定类型消息的传输通道
|
||
- **订阅者(Subscriber)**:接收并处理通道消息的实体
|
||
|
||
```
|
||
+-------------+
|
||
| 总线 |
|
||
+-------------+
|
||
|
|
||
+-------------+ +-------------+ +-------------+
|
||
| 通道1 | | 通道2 | | 通道3 |
|
||
+-------------+ +-------------+ +-------------+
|
||
| | |
|
||
+-------------+ +-------------+ +-------------+
|
||
| 订阅者1-1 | | 订阅者2-1 | | 订阅者3-1 |
|
||
+-------------+ +-------------+ +-------------+
|
||
| 订阅者1-2 | | 订阅者2-2 |
|
||
+-------------+ +-------------+
|
||
```
|
||
|
||
## 使用示例
|
||
|
||
### 完整示例
|
||
|
||
请参考 `examples/main.c` 文件中的完整示例程序,该示例展示了如何创建总线、通道,以及在进程间进行消息传递。
|
||
|
||
## 编译与配置
|
||
|
||
### 配置选项
|
||
|
||
在 `Kconfig` 文件中提供了以下配置选项:
|
||
|
||
```
|
||
config EBUS
|
||
bool "ebus support"
|
||
default n
|
||
help
|
||
Enable ebus support
|
||
|
||
choice
|
||
prompt "Select Operating System"
|
||
default EBUS_ENV_OS_FREERTOS
|
||
|
||
config EBUS_ENV_OS_POSIX
|
||
bool "POSIX"
|
||
|
||
config EBUS_ENV_OS_FREERTOS
|
||
bool "FreeRTOS"
|
||
|
||
endchoice
|
||
```
|
||
|
||
### 编译方法
|
||
|
||
#### 在扫描笔工程中编译
|
||
|
||
EBUS已集成到扫描笔工程中,可以通过配置`CONFIG_EBUS=y`来启用。
|
||
|
||
#### 独立编译(Linux环境)
|
||
|
||
```bash
|
||
mkdir build && cd build
|
||
cmake ..
|
||
make
|
||
```
|
||
|
||
#### 编译示例程序
|
||
|
||
```bash
|
||
cd examples
|
||
mkdir build && cd build
|
||
cmake ..
|
||
make
|
||
./ebus_example
|
||
```
|
||
|
||
## 移植指南
|
||
|
||
EBUS框架设计为易于移植到不同操作系统。目前支持POSIX和FreeRTOS环境。
|
||
|
||
### 移植到新平台
|
||
|
||
1. 在 `port/` 目录下创建新的平台适配文件
|
||
2. 实现 `platform.h` 中定义的接口
|
||
3. 修改 `CMakeLists.txt` 和 `Kconfig` 添加新平台支持
|
||
|
||
## 许可证
|
||
|
||
EBUS框架采用Apache 2.0许可证。
|
||
|
||
## 贡献
|
||
|
||
欢迎提交问题报告和改进建议。
|
||
|
||
## 联系方式
|
||
|
||
如有问题,请联系项目维护者。 |