输入关键词搜索

博通 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_aidkai_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()       │
                    │   → 远端用户加入          │
                    │   → 开启麦克风监听         │
                    └─────────────────────────┘

音频数据流

上行(麦克风 → NERTCaudio_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 信令)
对接小程序 ✅ 支持 ❌ 暂不支持
此文档是否对你有帮助?
有帮助
去反馈
  • 工程结构
  • 集成步骤
  • 1. 拉取子模块
  • 2. 配置
  • 3. 编译
  • 4. 烧录
  • 主要流程
  • 系统启动流程
  • NERTC 连接主流程
  • 音频数据流
  • 与 ESP32 方案的主要差异