---
name: bouffalo-sdk
description: Bouffalo SDK开发指南，提供完整的Bouffalo芯片系列开发文档和参考资料。当需要使用bouffalo_sdk开发IoT/MCU应用、了解SDK架构、配置构建系统、使用外设驱动、开发无线功能、管理电源、调试固件时使用此skill。
---

# Bouffalo SDK 开发指南

本skill提供Bouffalo SDK的完整开发指南，涵盖从基础配置到高级应用的所有方面。

## 项目概述

Bouffalo SDK是Bouffalo Lab提供的IoT和MCU软件开发套件，支持所有Bouffalo芯片系列，包括BL602/BL702/BL616等。

开始前，阅读[01-overview.md](references/01-overview.md)了解：
- SDK简介和芯片系列
- 目录结构和核心设计原则
- 关键特性和依赖的第三方库
- 开发环境要求和常用资源

## SDK架构

理解SDK架构是高效开发的基础。

阅读[02-architecture.md](references/02-architecture.md)了解：
- 整体架构和分层设计
- LHAL（低级别硬件抽象层）设计理念
- 组件化系统和板级抽象（BSP）
- 构建系统和配置系统
- 无线协议栈架构
- 多核架构（BL618DG）
- 内存管理、安全架构、电源管理架构

## LHAL驱动

LHAL提供跨芯片的统一外设API。

阅读[03-lhal-drivers.md](references/03-lhal-drivers.md)了解：
- LHAL设计和API模式
- 核心外设驱动（GPIO、UART、SPI、I2C、I2S、ADC、DAC、DMA、定时器、PWM、RTC等）
- 中断管理
- 跨芯片兼容性（设备表机制）
- 性能优化（ROM API、DMA加速）
- 最佳实践

## 芯片差异

不同芯片系列在外设、无线协议、内存、功耗等方面有差异。

阅读[04-chips-diff.md](references/04-chips-diff.md)了解：
- 各芯片系列特性和应用场景
- 外设支持矩阵
- 核心差异（单核、双核、多核）
- 内存差异（Flash、SRAM、PSRAM）
- 电源管理差异
- 编译差异（CPU_ID参数）
- 选择建议和移植指南

## 无线开发

SDK支持多种无线协议：WiFi 4/6、BLE、Zigbee、Thread。

阅读[05-wireless.md](references/05-wireless.md)了解：
- 无线协议支持矩阵
- WiFi架构和使用（Station、AP模式、Socket通信）
- BLE架构和使用（Peripheral、Central、GATT）
- WiFi/BLE共存（Coex）
- 无线协议选择建议（功耗、吞吐量、连接数量对比）
- 调试和测试
- 常见问题

## 构建系统

Bouffalo SDK使用混合构建系统：Makefile（入口）+ CMake（构建引擎）+ Kconfig（配置系统）。

阅读[06-build-system.md](references/06-build-system.md)了解：
- 构建流程和Makefile详解
- CMakeLists.txt和Kconfig语法
- 配置系统（menuconfig使用）
- 工具链配置和编译器标志
- 组件构建
- 常见构建问题
- 最佳实践

## 开发工作流

从环境设置到编译、烧录、调试的完整开发流程。

阅读[07-development-workflow.md](references/07-development-workflow.md)了解：
- 工具链安装（Windows/Linux/macOS）
- 安装构建工具和Python依赖
- 配置串口访问（Linux）
- 项目创建（基于示例或从零创建）
- 编译流程（单核/多核芯片）
- 配置管理（menuconfig）
- 烧录固件（基本烧录、多核芯片、波特率设置）
- 调试（CKLink、Eclipse、GDB初始化脚本、崩溃分析）
- 日志和调试（printf、Shell、串口查看器）
- 常见开发任务（添加自定义组件、修改启动代码、添加自定义外设驱动）
- 性能分析（Puncover、Flash使用、内存使用）
- 常见问题排查
- 版本管理和最佳实践

## 外设使用

通过LHAL API使用各种外设。

阅读[08-peripherals.md](references/08-peripherals.md)了解：
- GPIO（中断、常用应用）
- UART（轮询、中断、DMA模式）
- SPI（主机/从机模式）
- I2C（主机模式、常用应用）
- I2S（音频接口）
- ADC（模数转换）
- DAC（数模转换）
- 定时器（中断模式）
- PWM（PWM v1/v2）
- RTC（实时时钟、闹钟）
- DMA（直接内存访问）
- 外设最佳实践（初始化顺序、错误处理、资源释放、RTOS使用、低功耗）

## 组件系统

SDK提供丰富的软件组件：操作系统、网络协议栈、文件系统、加密库、图形库、多媒体组件等。

阅读[09-components.md](references/09-components.md)了解：
- 组件目录结构
- 操作系统组件（FreeRTOS、NuttX）
- 网络组件（LwIP、MQTT-C）
- 文件系统组件（FatFS、LittleFS、ROMFS）
- 加密组件（mbedTLS）
- 图形库组件（LVGL v8/v9）
- USB组件（CherryUSB）
- 工具库组件（cJSON、partition）
- 核间通信组件（OpenAMP + RPMsg）
- Shell组件（命令行界面）
- 组件依赖管理
- 自定义组件
- 组件最佳实践

## 内存管理

SDK提供多种内存管理方案。

阅读[10-memory-management.md](references/10-memory-management.md)了解：
- 内存层次（Flash、SRAM、PSRAM）
- 芯片内存配置
- 内存管理方案（TLSF、FreeRTOS Heap、NuttX MM）
- Flash管理（读/写/擦除、分区、加密）
- PSRAM管理（初始化、配置、使用、分配）
- 内存对齐
- 内存优化（减少堆使用、复用内存、使用const、编译器优化）
- 内存调试（内存泄漏检测、内存破坏检测、堆栈溢出检测）
- 低功耗内存管理
- 内存映射
- 最佳实践

## 安全特性

SDK提供多层安全机制。

阅读[11-security.md](references/11-security.md)了解：
- 安全架构和硬件安全引擎
- AES加密（ECB、CBC、CTR、GCM模式）
- SHA哈希（SHA-1、SHA-224、SHA-256）
- TRNG（真随机数生成）
- PKA（公钥算法）
- 安全启动
- 安全OTA（HTTPS FOTA）
- Flash加密
- 密钥管理（EFUSE、硬件密钥存储）
- 抗回滚保护
- mbedTLS集成
- 安全最佳实践
- 安全检查清单

## 电源管理

SDK提供完整的电源管理功能。

阅读[12-power-management.md](references/12-power-management.md)了解：
- 电源模式（运行、浅睡眠、深度睡眠、休眠、关机）
- 各模式特性和对比
- 运行模式、浅睡眠、深度睡眠、休眠模式的使用
- 唤醒机制（GPIO、定时器、RTC）
- 低功耗优化（动态频率调整、关闭未使用的外设、使用低功耗模式、WiFi/BLE低功耗）
- 电源管理配置（Kconfig、动态配置）
- 状态保存和恢复
- 低功耗测量
- 多核电源管理（BL616）
- 低功耗最佳实践
- 常见问题

## 示例代码

SDK提供丰富的示例代码，涵盖从基础功能到复杂应用。

阅读[13-examples.md](references/13-examples.md)了解：
- 示例目录结构
- 基础示例（helloworld）
- 外设示例（UART、SPI、I2C、ADC、PWM等）
- WiFi示例（Station、AP、HTTP请求）
- BLE示例（Peripheral、Central）
- 文件系统示例（FatFS、LittleFS）
- FreeRTOS示例
- LVGL示例
- 电源管理示例
- 使用示例的步骤
- 基于示例创建项目
- 示例最佳实践

## 快速开始

### 编译示例

```bash
# 进入示例目录
cd examples/helloworld

# 编译BL616
make CHIP=bl616 BOARD=bl616dk
```

### 烧录固件

```bash
# Linux
make flash CHIP=bl616 COMX=/dev/ttyUSB0

# Windows
make flash CHIP=bl616 COMX=COM5
```

### 多核芯片编译

```bash
# BL618DG ap核心
make CHIP=bl618dg BOARD=bl618dgdk CPU_ID=ap
```

## 常用资源

- **项目主页**: https://github.com/bouffalolab/bouffalo_sdk
- **官方文档**: https://bl-mcu-sdk.readthedocs.io/
- **开发者论坛**: https://bbs.bouffalolab.com/
- **芯片手册**: https://github.com/bouffalolab/bl_docs

## 使用建议

1. **新手入门**：从01-overview.md开始，然后阅读13-examples.md，运行helloworld示例
2. **了解架构**：阅读02-architecture.md理解SDK设计
3. **开发应用**：根据需求阅读对应的references（外设→08-peripherals.md，无线→05-wireless.md等）
4. **配置构建**：阅读06-build-system.md和07-development-workflow.md
5. **优化性能**：阅读10-memory-management.md、11-security.md、12-power-management.md
6. **故障排查**：在对应的references中查找常见问题部分
