1[English](README_en.md) | **中文**
2# bouffalo_lab bsp
3
4## 1. 简介
5
6bouffalo_lab bsp针对bouffalo_lab的系列AIoT芯片,采用bouffalo_lab最新**LHAL** 驱动库,驱动库与[bouffalo_sdk](https://github.com/bouffalolab/bouffalo_sdk)(原bl_mcu_sdk)代码同步,当前commitid:`e6e8da79a50aeb4fcb67ac380c3bd8885cd56faf`
7
8目前支持以下芯片:
9
10|      | 芯片型号                 | 内核                                     |
11| ---- | :----------------------- | ---------------------------------------- |
12| 1    | bl60x(bl602/bl604)       | RISC-V SiFive E24                        |
13| 2    | bl70x(bl702/bl704/bl706) | RISC-V SiFive E24                        |
14| 3    | bl61x(bl616/bl618)       | RISC-V T-Head E907                       |
15| 4    | bl808                    | RISC-V T-Head E902(lp)+E907(m0)+C906(d0) |
16
17**LHAL** 是博流为统一通用外设接口而设计的驱动库,代码精炼并且支持博流所有系列芯片。
18
19|   外设   | BL602/BL604 | BL702/BL704/BL706 | BL616/BL618 | BL808 |
20| :------: | :---------: | :---------------: | :---------: | :---: |
21|   ADC    |      ○      |         √         |      √      |   ○   |
22|   CAM    |      -      |         ×         |      ×      |   ×   |
23|   CKS    |      ○      |         √         |      √      |   ○   |
24|   DAC    |      ○      |         √         |      √      |   ○   |
25|   DMA    |      ○      |         √         |      √      |   √   |
26|  EFUSE   |      ×      |         √         |      √      |   √   |
27|   EMAC   |      -      |         √         |      √      |   √   |
28|  FLASH   |      √      |         √         |      √      |   √   |
29|   GPIO   |      ○      |         √         |      √      |   √   |
30|   I2C    |      ○      |         √         |      √      |   ○   |
31|   I2S    |      ○      |         ○         |      √      |   ○   |
32|    IR    |      ○      |         √         |      √      |   ○   |
33|  MJPEG   |      ×      |         ×         |      √      |   √   |
34|  PWM_v1  |      ○      |         √         |      -      |   -   |
35|  PWM_v2  |      -      |         -         |      √      |   √   |
36|   RTC    |      ○      |         √         |      √      |   √   |
37| SEC_AES  |      ○      |         √         |      √      |   √   |
38| SEC_SHA  |      ○      |         √         |      √      |   √   |
39| SEC_TRNG |      ○      |         √         |      √      |   √   |
40| SEC_PKA  |      ○      |         √         |      √      |   √   |
41|   SPI    |      ○      |         √         |      √      |   √   |
42|  TIMER   |      ○      |         √         |      √      |   √   |
43|   UART   |      √      |         √         |      √      |   √   |
44|  USB_v1  |      -      |         √         |      -      |   -   |
45|  USB_v2  |      -      |         -         |      √      |   √   |
46|   WDG    |      ○      |         √         |      √      |   ○   |
47
48备注:**√** 表示已支持;**×** 表示未支持;**○** 表示已支持但未测试;**-** 表示没有该外设。
49
50
51
52## 2.  环境搭建及编译
53
54bl60x/bl70x/bl61x可在对应芯片直接编译;bl808是多核异构架构,分为m0、lp、d0,每个核需要单独编译并烧录到对应的位置,bl808三核使用详细参考[bl808三核使用指南](./bl808/README.md)。
55
56以下操作以单核bl61x为例,其他芯片操作类同。
57
58### 2.1. 下载
59
60请至对应下载链接下载芯片的工具链
61
62| 芯片型号    | 下载地址                                                     |
63| ----------- | ------------------------------------------------------------ |
64| bl60x/bl70x | [Linux](https://gitee.com/bouffalolab/toolchain_gcc_sifive_linux)/[windows](https://gitee.com/bouffalolab/toolchain_gcc_sifive_windows) |
65| bl61x/bl808 | [T-Head官网](https://occ.t-head.cn/community/download?id=4073475960903634944)或[Linux](https://gitee.com/bouffalolab/linuxtoolchain_gcc_t-head)/[windows](https://gitee.com/bouffalolab/toolchain_gcc_t-head_windows) |
66
67### 2.2. 设置
68
69Windows下请使用使用[env工具][1],使用命令 `tar -xvf Xuantie-900-gcc-elf-newlib-mingw-V2.6.1-20220906.tar.gz` 解压交叉编译器,使用Windows下解压工具直接解压可能出现Windows下编译错误。
70
71在`rtconfig.py`中将risc-v工具链的本地路径加入 `EXEC_PATH` 或通过 `RTT_EXEC_PATH` 环境变量指定路径
72
73Windows:
74
75```
76set RTT_EXEC_PATH=C:\Users\xxxx\Downloads\Xuantie-900-gcc-elf-newlib-x86_64-V2.6.1\bin
77```
78
79Linux:
80
81```
82export RTT_EXEC_PATH=/opt/Xuantie-900-gcc-elf-newlib-x86_64-V2.6.1/bin
83```
84
85### 2.3. 编译
86
87Windows下推荐使用[env工具][1],在console下进入bsp/bouffalo_lab/bl61x目录中,运行:
88
89    cd bsp/bouffalo_lab/bl61x
90    menuconfig
91    pkgs --update
92
93如果在Linux平台下,可以先执行:
94
95    scons --menuconfig
96
97它会自动下载env相关脚本到~/.env目录,然后执行
98
99    source ~/.env/env.sh
100
101    cd bsp/bouffalo_lab/bl61x
102    pkgs --update
103
104更新完软件包后,执行 `scons -j10` 或 `scons -j10 --verbose` 来编译这个板级支持包。或者通过 `scons --exec-path="GCC工具链路径"` 命令,在指定工具链位置的同时直接编译。
105
106如果编译正确无误,会产生rtthread.elfrtthread.bin文件;编译完成后自动调用`libraries/bl_mcu_sdk/tools/bflb_tools/bflb_fw_post_proc`对rtthread.bin进行打包处理以用于后续`bouffalo_flash_cube`工具烧录。
107
108脚本会自动采用curl命令行方式下载`bflb_fw_post_proc`,如自动下载失败,可采用手工方式下载对应操作系统文件后保存至`libraries/bl_mcu_sdk/tools/bflb_tools/bflb_fw_post_proc`
109
110| 下载地址1 | [windows](https://raw.githubusercontent.com/bouffalolab/bl_mcu_sdk/master/tools/bflb_tools/bflb_fw_post_proc/bflb_fw_post_proc.exe)/[Linux](https://raw.githubusercontent.com/bouffalolab/bl_mcu_sdk/master/tools/bflb_tools/bflb_fw_post_proc/bflb_fw_post_proc-ubuntu)/[macos](https://raw.githubusercontent.com/bouffalolab/bl_mcu_sdk/master/tools/bflb_tools/bflb_fw_post_proc/bflb_fw_post_proc-macos) |
111| --------- | ------------------------------------------------------------ |
112| 下载地址2 | [bflb_fw_post_proc-win.tar.gz](https://gitee.com/flyingcys/bflb_tools/releases/download/v1.0.4/bflb_fw_post_proc-win.tar.gz)/[bflb_fw_post_proc-linux.tar.gz](https://gitee.com/flyingcys/bflb_tools/releases/download/v1.0.4/bflb_fw_post_proc-linux.tar.gz)/[bflb_fw_post_proc-macos.tar.gz](https://gitee.com/flyingcys/bflb_tools/releases/download/v1.0.4/bflb_fw_post_proc-macos.tar.gz) |
113| 下载地址3 | [bflb_fw_post_proc-win.tar.gz](https://github.com/flyingcys/bflb_tools/releases/download/v1.0.4/bflb_fw_post_proc-win.tar.gz)/[bflb_fw_post_proc-linux.tar.gz](https://github.com/flyingcys/bflb_tools/releases/download/v1.0.4/bflb_fw_post_proc-linux.tar.gz)/[bflb_fw_post_proc-macos.tar.gz](https://github.com/flyingcys/bflb_tools/releases/download/v1.0.4/bflb_fw_post_proc-macos.tar.gz) |
114
115
116
117## 3. 下载烧录
118
119### 3.1. 烧录工具下载
120
121当前bsp必须使用`bouffalo_flash_cube-1.0.4`工具进行烧录,使用其他工作无法正常运行。
122
123- 烧录工具下载地址1:[百度网盘](https://pan.baidu.com/s/1eG9pkxf3riAqQAu9aXiOjw?pwd=miv1)
124
125- 烧录工具下载地址2:
126
127[bouffalo_flash_cube-win.zip](https://gitee.com/flyingcys/bflb_tools/releases/download/v1.0.4/bouffalo_flash_cube-win.zip)/[bouffalo_flash_cube-win.tar.gz](https://gitee.com/flyingcys/bflb_tools/releases/download/v1.0.4/bouffalo_flash_cube-win.tar.gz)
128
129[bouffalo_flash_cube-linux.zip](https://gitee.com/flyingcys/bflb_tools/releases/download/v1.0.4/bouffalo_flash_cube-linux.zip)/[bouffalo_flash_cube-linux.tar.gz](https://gitee.com/flyingcys/bflb_tools/releases/download/v1.0.4/bouffalo_flash_cube-linux.tar.gz)
130
131[bouffalo_flash_cube-macos.zip](https://gitee.com/flyingcys/bflb_tools/releases/download/v1.0.4/bouffalo_flash_cube-macos.zip)/[bouffalo_flash_cube-macos.tar.gz](https://gitee.com/flyingcys/bflb_tools/releases/download/v1.0.4/bouffalo_flash_cube-macos.tar.gz)
132
133- 烧录工具下载地址3:
134
135[bouffalo_flash_cube-win.zip](https://github.com/flyingcys/bflb_tools/releases/download/v1.0.4/bouffalo_flash_cube-win.zip)/[bouffalo_flash_cube-win.tar.gz](https://github.com/flyingcys/bflb_tools/releases/download/v1.0.4/bouffalo_flash_cube-win.tar.gz)
136
137[bouffalo_flash_cube-linux.zip](https://github.com/flyingcys/bflb_tools/releases/download/v1.0.4/bouffalo_flash_cube-linux.zip)/[bouffalo_flash_cube-linux.tar.gz](https://github.com/flyingcys/bflb_tools/releases/download/v1.0.4/bouffalo_flash_cube-linux.tar.gz)
138
139[bouffalo_flash_cube-macos.zip](https://github.com/flyingcys/bflb_tools/releases/download/v1.0.4/bouffalo_flash_cube-macos.zip)/[bouffalo_flash_cube-macos.tar.gz](https://github.com/flyingcys/bflb_tools/releases/download/v1.0.4/bouffalo_flash_cube-macos.tar.gz)
140
141
142
143### 3.2. GUI方式下载
144
1451. 连接好串口并在工具上选择对应的串口号
146
1472. 打开对应芯片文件夹下的flash_prog_cfg.ini文件
148
1493. 按住开发板上的boot按钮后重新上电,进入下载状态
150
1514. 点击"Download"开始下载
152
153![Flash Download](figures/bouffalo_flash_cube.png)
154
155
156
157### 3.2. 命令行下载
158
159命令行下载可使用`bsp/bouffalo_lab`目录下的`bouffalo_flash_cube.sh`脚本,输入`./bouffalo_flash_cube.sh bl616 /dev/ttyUSB1`,脚本会自动采用curl命令行方式下载`bouffalo_flash_cube`。
160
161如自动下载失败,可采用手工方式下载对应操作系统文件后保存至`libraries/bl_mcu_sdk/tools/bflb_tools/bouffalo_flash_cube`目录。
162
163其中:
164
165- bl616:芯片名称(bl808:三核同时下载;或者输入:bl808-m0/bl808-lp/bl808-d0分别烧录对应的核,但是m0必须要烧录才能运行)
166- /dev/ttyUSB1:下载串口号,linux下为/dev/ttyUSBx/dev/ttyACMx,windows下为COMx
167
168
169
170### 4.  运行
171
172如果编译 & 烧写无误,当复位设备后,会在串口上看到RT-Thread的启动logo信息:
173
174![terminal](figures/rt-thread.png)
175
176
177
178## 5. 支持开发板列表
179
180|       | 开发板型号             |
181| ----- | ---------------------- |
182| bl602 | BL602-IoT-3S/BL-HWC-G1 |
183| bl702 | Maix Zero Sense        |
184| bl616/bl618 | M0S Dock/M0P Dock               |
185| bl808 | M1s Dock               |
186
187
188
189## 6. 驱动支持列表
190
191| 驱动 | 支持情况 | 备注              |
192| :--- | :------- | :---------------- |
193| UART | 支持     | 默认波特率2000000 |
194| GPIO | 支持     |                   |
195| I2C  | 支持     |                   |
196| SPI  | 支持     | 支持DMA            |
197| PWM  | 支持     |                   |
198| ADC  | 支持     |                   |
199| RTC  | 支持     |                   |
200| WDT  | 支持     |                   |
201| HWTIMER  | 支持     |                   |
202| FLASH  | 支持     |                   |
203| SDCARD  | 支持     |                   |
204| Wi-Fi  | 支持     | 仅 BL808 支持       |
205
206
207
208## 7. 联系人信息
209
210维护人:[flyingcys](https://github.com/flyingcys)
211
212
213
214## 8. 参考
215
216* 芯片[datasheet][2]
217
218  [1]: https://www.rt-thread.org/download.html#download-rt-thread-env-tool
219  [2]: https://github.com/bouffalolab/bl_docs
220
221