博通 BK7258 方案
更新时间: 2026/07/11 23:45:13
本文档介绍了如何在博通 BK7258 平台上使用 NERTC SDK。
- 适用芯片:博通 BK7258(三核 Cortex-M33)
- Demo 工程:
demo/bk7258 - 引擎模式:LITE(MQTT 信令)
工程结构
demo/bk7258/
├── bk_aidk/ # Beken 官方 SDK(Git 子模块,只读)
├── nertc_host/ # NERTC Demo 工程
│ ├── main/ # 应用主入口(app_main.c)
│ ├── components/
│ │ ├── nertc_app/ # NERTC SDK 封装(引擎生命周期、MQTT、OTA)
│ │ └── bk_smart_config/ # 配网与云端适配
│ ├── config/ # 板级配置(CPU0/CPU1/CPU2)
│ ├── CMakeLists.txt
│ └── Makefile
└── docs/ # 工程文档
集成步骤
1. 拉取子模块
bashcd demo/bk7258
git submodule update --init --recursive
git submodule status # 验证
bk_aidk 是 Git 子模块,指向 bekencorp/bk_aidk 的 ai_release/v2.0.1 分支。子模块只读,不要在内部直接修改文件。
2. 配置
在 nertc_host/components/nertc_app/nertc_config.h 中配置 AppKey、Wi-Fi SSID 和密码。
3. 编译
使用 Docker 编译:
bashcd demo/bk7258
./dbuild.sh bk7258
编译产物位于 nertc_host/build/bk7258/all_app.bin。
4. 烧录
使用 BK 原厂烧录工具将 all_app.bin 烧录到设备。
主要流程
系统启动流程
上电 → main() → bk_init()
↓
user_app_main() [CPU0]
↓
┌──────────────────────┐
│ 1. 设置 CPU 频率 240MHz│
│ 2. audio_engine_init() │
│ 3. video_engine_init() │
│ 4. network_transfer_init()│
│ 5. nertc_cli_init() │
└──────────────────────┘
↓
┌──────────────────────┐
│ 6. media_service_init()│
│ 7. app_event_init() │
│ 8. nertc_app_event_init()│
│ 9. volume_init() │
│ 10. audio_turn_on() │
└──────────────────────┘
↓
┌──────────────────────┐
│ 11. 启动 CP1 音频核 │
│ 12. bk_smart_config_init()│ ← WiFi 配网 + 云端接入
│ 13. bk_key_service_init() │ ← 按键服务
└──────────────────────┘
NERTC 连接主流程
WiFi 连接成功
↓
MQTT 配置获取(可选,通过 OTA)
↓
nertc_app_init() → bk_nertc_create()
↓
__nertc_init()
↓
┌─────────────────────────┐
│ 1. 配置 nertc_sdk_config │
│ - app_key, device_id │
│ - license │
│ - audio: OPUS, 16kHz │
│ - server AEC │
│ 2. 创建引擎 │
│ 3. 配置引擎模式 (LITE) │
│ 4. 注入 ext_net_handle │ ← MQTT 桥接
│ 5. 注册事件回调 │
│ 6. 初始化引擎 │
└─────────────────────────┘
↓
bk_nertc_start()
↓
nertc_join(channel_name, uid)
↓
┌─────────────────────────┐
│ __on_join() 回调触发 │
│ → 进房成功 │
│ __on_user_joined() │
│ → 远端用户加入 │
│ → 开启麦克风监听 │
└─────────────────────────┘
音频数据流
上行(麦克风 → NERTC)
audio_engine 采集线程
↓
audio_transfer 环形缓冲区
↓
bk_nertc_audio_data_send()
↓
nertc_push_audio_encoded_frame() → SDK → 网络
下行(NERTC → 扬声器)
网络 → SDK
↓
__on_audio_data() 回调
↓
nertc_audio_rx_data_handle() → audio_engine → 扬声器
与 ESP32 方案的主要差异
| 对比项 | ESP32 | BK7258 |
|---|---|---|
| CPU 架构 | Xtensa | 三核 Cortex-M33 |
| 编译环境 | ESP-IDF v5.5.2 | ARM IDK v1.2 + Docker |
| 引擎模式 | Normal | LITE(MQTT 信令) |
| 对接小程序 | ✅ 支持 | ❌ 暂不支持 |
此文档是否对你有帮助?




