2021-06-26 15:03:25 +08:00
[![License ](https://img.shields.io/badge/License-Apache--2.0-brightgreen )](LICENSE)
[![Release ](https://img.shields.io/github/v/tag/bouffalolab/bl_mcu_sdk?color=s&label=release )]()
2021-04-13 19:23:11 +08:00
2021-06-25 17:43:48 +08:00
[中文版 ](README_zh.md )
2021-04-13 19:23:11 +08:00
2021-06-25 17:43:48 +08:00
# Introduction
2022-10-21 10:17:49 +08:00
**bl mcu sdk** is an MCU software development kit provided by the Bouffalo Lab Team, supports all the series of Bouffalo chips.
# SDK Versions & Chip Support
2022-12-07 10:19:27 +08:00
Note1: **drivers before v1.4.5 use v1.0( hal + std) , the later version will use v2.0 (lhal + soc)** 。If you want to use **v1.4.5** , please checkout your branch to [release-v1.4.5 ](https://github.com/bouffalolab/bl_mcu_sdk/tree/release_v1.4.5 ).
2022-10-21 10:17:49 +08:00
2022-12-07 10:19:27 +08:00
Note2: due to the non-generic peripherals, the code style and interface name in **soc** are still the previous version, but will be subsequently updated to the new code style.
2022-10-21 10:17:49 +08:00
| CHIP | v1.4.5 | latest |
|:-------------:|:--------:|:-------:|
2022-10-24 19:15:50 +08:00
|BL602/BL604 | √ | √ |
2022-10-21 11:42:28 +08:00
|BL702/BL704/BL706 | √ | √ |
2022-11-18 16:47:16 +08:00
|BL616/BL618 | × | √ |
2022-10-21 11:42:28 +08:00
|BL808 | × | √ |
2022-10-21 10:17:49 +08:00
## LHAL Support
**LHAL** is a low level hal driver for common peripherals designed by Bouffalo Lab, in order to support all the Bouffalo chips with the same api . Also it is convenient for users to use and port to other platforms.
2022-12-07 10:19:27 +08:00
Note: **√** means supported ; ** × ** means not supported; ** ○** means supported but not tested ; ** -** means no such peripheral.
2022-10-21 11:42:28 +08:00
2022-11-18 16:47:16 +08:00
| Peripheral | BL602/BL604 | BL702/BL704/BL706 | BL616/BL618 | BL808 |
2022-10-21 11:42:28 +08:00
|:------------:|:--------------:|:--------------------:|:-----------:|:--------:|
| ADC | ○ | √ | √ | ○ |
2022-12-22 17:09:41 +08:00
| CAM | - | √ | √ | √ |
2022-10-29 16:13:16 +08:00
| CKS | ○ | √ | √ | ○ |
2022-10-21 11:42:28 +08:00
| DAC | ○ | √ | √ | ○ |
| DMA | ○ | √ | √ | √ |
2022-12-31 21:07:27 +08:00
| EFUSE | √ | √ | √ | √ |
2022-10-21 11:42:28 +08:00
| EMAC | - | √ | √ | √ |
2022-11-18 16:47:16 +08:00
| FLASH | √ | √ | √ | √ |
2022-10-21 11:42:28 +08:00
| GPIO | ○ | √ | √ | √ |
2022-12-22 17:09:41 +08:00
| I2C | ○ | √ | √ | √ |
2022-10-21 11:42:28 +08:00
| IR | ○ | √ | √ | ○ |
2022-12-31 21:07:27 +08:00
| MJPEG | × | √ | √ | √ |
2022-10-21 11:42:28 +08:00
| PWM_v1 | ○ | √ | - | - |
| PWM_v2 | - | - | √ | √ |
| RTC | ○ | √ | √ | √ |
| SEC_AES | ○ | √ | √ | √ |
| SEC_SHA | ○ | √ | √ | √ |
| SEC_TRNG | ○ | √ | √ | √ |
2022-10-29 16:13:16 +08:00
| SEC_PKA | ○ | √ | √ | √ |
2022-11-18 16:47:16 +08:00
| SPI | ○ | √ | √ | √ |
2022-10-21 11:42:28 +08:00
| TIMER | ○ | √ | √ | √ |
2022-10-24 19:15:50 +08:00
| UART | √ | √ | √ | √ |
2022-10-21 11:42:28 +08:00
| USB_v1 | - | √ | - | - |
| USB_v2 | - | - | √ | √ |
2022-11-18 16:47:16 +08:00
| WDG | ○ | √ | √ | ○ |
2021-06-25 17:43:48 +08:00
## Code Framework
2021-04-13 19:23:11 +08:00
```
bl_mcu_sdk
├── bsp
2021-11-22 10:59:40 +08:00
│ ├── board
2022-12-07 10:19:27 +08:00
│ │ └── bl602
2021-11-22 10:59:40 +08:00
│ │ └── bl702
2022-10-21 10:17:49 +08:00
│ │ └── bl616
│ │ └── bl808
│ └── common
2021-04-13 19:23:11 +08:00
├── components
2022-10-21 10:17:49 +08:00
│ ├── bflog
│ ├── cherryusb
2021-11-22 10:59:40 +08:00
│ ├── fatfs
│ ├── freertos
2022-10-21 10:17:49 +08:00
│ ├── lua
2021-11-22 10:59:40 +08:00
│ ├── lvgl
│ ├── lwip
2022-10-21 10:17:49 +08:00
│ └── shell
2021-04-13 19:23:11 +08:00
├── docs
├── drivers
2022-10-21 10:17:49 +08:00
│ ├── lhal
│ └── soc
2021-04-13 19:23:11 +08:00
├── examples
2022-10-21 10:17:49 +08:00
│ ├── bflog
│ ├── fatfs
2021-11-22 10:59:40 +08:00
│ ├── freertos
2022-10-21 10:17:49 +08:00
│ ├── helloworld
│ ├── lua
2021-11-22 10:59:40 +08:00
│ ├── lvgl
2022-10-21 10:17:49 +08:00
│ ├── peripherals
│ └── shell
2021-04-13 19:23:11 +08:00
└── tools
2022-10-21 10:17:49 +08:00
└── cmake
└── kconfig
└── make
2021-06-25 17:43:48 +08:00
2022-10-21 10:17:49 +08:00
```
2021-04-27 12:39:52 +08:00
2022-10-21 10:17:49 +08:00
- **bsp/board** : including clock, pinmux, memoryheap and console init
- **bsp/common** : including bsp common driver
- **components** : including third-party components
- **docs** : including docs
- **drivers/lhal** : including bouffalo common peripherals drivers which support all the chips
- **drivers/soc** : including bouffalo non-generic peripherals drivers
- **examples** : including samples
- **tools** : including compiler tools
2021-04-13 19:23:11 +08:00
2022-10-21 10:17:49 +08:00
# Environment Setup
2021-04-13 19:23:11 +08:00
2022-10-21 10:17:49 +08:00
## Toolchain
2021-04-27 12:39:52 +08:00
2022-10-21 10:17:49 +08:00
- [riscv64-unknown-elf-gcc ](https://gitee.com/bouffalolab/toolchain_gcc_t-head_windows ) toolchain used in windows.
- [riscv64-unknown-elf-gcc ](https://gitee.com/bouffalolab/toolchain_gcc_t-head_linux ) toolchain used in linux.
- [linux-riscv64-linux-gcc ](https://gitee.com/bouffalolab/linuxtoolchain_gcc_t-head ) toolchain used for compiling linux code.
2021-04-27 12:39:52 +08:00
2022-10-21 10:17:49 +08:00
## Command Line Development
2021-04-27 12:39:52 +08:00
2022-12-07 10:19:27 +08:00
Before compiling with the command line, you need to select the corresponding toolchain according to your operating system, configure it to the system environment variables, and install the **make** or **ninja** , then you can do the following. For the details, you can visit [bl mcu sdk Environment Setup ](https://bl-mcu-sdk.readthedocs.io/zh_CN/latest/get_started/index.html ).
2021-04-27 12:39:52 +08:00
2022-10-21 10:17:49 +08:00
- Go to the demo directory where you want to compile and there are `main.c` and `Makefile` files in that directory
- Just execute the following command, take **BL616** as an example
2021-08-25 10:49:37 +08:00
2022-10-21 10:17:49 +08:00
```
cd examples/helloworld
make CHIP=bl616 BOARD=bl616dk
2021-08-25 10:49:37 +08:00
```
2022-10-21 10:17:49 +08:00
- If you use **BL808** or **BL606P** , you need to add **CPU_ID** with m0 or d0.
2021-08-25 10:49:37 +08:00
2022-12-07 10:19:27 +08:00
If you want to use **ninja** , you can try:
```
cd examples/helloworld
make ninja CHIP=bl616 BOARD=bl616dk
```
2022-10-21 10:17:49 +08:00
## CDK Development
2021-04-13 19:23:11 +08:00
2022-10-21 10:17:49 +08:00
TODO
2021-04-13 19:23:11 +08:00
2022-11-05 10:51:33 +08:00
## Debug
2022-12-07 10:19:27 +08:00
Only supports debug with CKLink currently. See [bl mcu sdk Debug Guide ](https://bl-mcu-sdk.readthedocs.io/zh_CN/latest/get_started/debug.html ).
2022-11-18 16:47:16 +08:00
## Firmware Download
We recommend you to use this **BL DevCube** and download firmware with serial.
2022-12-07 10:19:27 +08:00
- [Bouffalo Lab Dev Cube ](https://dev.bouffalolab.com/download )
- [Bouffalo Lab Dev Cube User Guide ](https://bl-mcu-sdk.readthedocs.io/zh_CN/latest/get_started/devcube.html )
2022-11-05 10:51:33 +08:00
2022-10-21 10:17:49 +08:00
# Resources
2021-08-25 10:49:37 +08:00
2022-10-21 10:17:49 +08:00
## Chip Manual
2021-08-25 10:49:37 +08:00
2022-12-31 21:07:27 +08:00
**Chip Reference Manual** and **Chip Data Manual** are listed on [document ](https://github.com/bouffalolab/bl_docs )
2021-08-25 10:49:37 +08:00
2022-10-21 10:17:49 +08:00
## Documentation Tutorial
2021-08-25 10:49:37 +08:00
2022-10-21 10:17:49 +08:00
To get more bl mcu sdk documentation tutorial, like api manual or peripheral demo and so on, please visit:
2021-04-13 19:23:11 +08:00
2022-10-21 11:42:28 +08:00
- [bl mcu sdk v2.0 documentation tutorial ](https://bl-mcu-sdk.readthedocs.io/zh_CN/latest/ )
2022-10-21 10:17:49 +08:00
- [bl mcu sdk v1.4.5 documentation tutorial ](https://dev.bouffalolab.com/media/doc/sdk/bl_mcu_sdk_en/index.html )
2021-04-27 12:39:52 +08:00
2022-10-21 10:17:49 +08:00
## Video Tutorial
2021-04-27 12:39:52 +08:00
2022-10-21 10:17:49 +08:00
- [BL706 MCU Development Series Video Tutorial ](https://www.bilibili.com/video/BV1xK4y1P7ur )
2021-04-27 12:39:52 +08:00
2021-06-25 17:43:48 +08:00
## Forum
2021-04-13 19:23:11 +08:00
2021-06-25 17:43:48 +08:00
Bouffalolab Developer Forum: [https://bbs.bouffalolab.com/ ](https://bbs.bouffalolab.com/ )
2021-04-13 19:23:11 +08:00
2021-06-25 17:43:48 +08:00
# License
2021-04-13 19:23:11 +08:00
2022-12-07 10:19:27 +08:00
**bl mcu sdk** follows the Apache License 2.0 open source license agreement. It can be used in commercial products for free and does not require public private code.
2021-04-13 19:23:11 +08:00
```
/*
2022-10-29 16:13:16 +08:00
* Copyright (c) 2022 Bouffalolab team
2021-04-13 19:23:11 +08:00
*
* SPDX-License-Identifier: Apache-2.0
*/
2021-11-22 10:59:40 +08:00
```