Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Introduce Bouffalo Lab SoC's #78795

Closed
wants to merge 21 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
21 commits
Select commit Hold shift + click to select a range
b169a89
drivers: timer: Enable clic riscv machine timer
nandojve Aug 31, 2024
c71987d
west: Introduce hal bouffalo lab
nandojve Jul 18, 2021
0d79fd0
dts: bindings: vendor-prefixes: Add Bouffalo Lab prefix
nandojve Oct 14, 2024
60d4562
dts: riscv: bouffalolab: Add bl6 series cpu
nandojve Aug 3, 2021
5318a75
soc: riscv: bouffalolab: Add bl6 series cpu
nandojve Aug 3, 2021
d3ac8c9
soc: riscv: bouffalolab: Change to riscv-privileged
nandojve Jan 29, 2024
ba4daeb
drivers: pinctrl: bouffalolab: Add bflb pinctrl driver
nandojve Jan 27, 2024
784efc1
drivers: serial: bouffalolab: Add bflb serial driver
nandojve Aug 3, 2021
df8f88d
drivers: serial: bouffalolab: Add support to interrupts
nandojve Nov 11, 2021
b20d5ad
scripts: runner: Introduce blflash runner
nandojve Aug 7, 2021
2757196
boards: riscv: Introduce bl604e_iot_dvk
nandojve Apr 2, 2022
01828de
west.yml: Drop bouffalolab SDK dependency
VynDragon Aug 31, 2024
b45434d
soc: riscv: Rework bl60x to be SDK independent
VynDragon Aug 31, 2024
d032c73
dts: riscv: bouffalolab: Update bl60x series cpu
VynDragon Aug 31, 2024
902bb4e
drivers: pinctrl: bouffalolab: Update pinctrl driver
VynDragon Aug 31, 2024
dcaf4eb
drivers: gpio: bouffalolab: Add bflb gpio driver
VynDragon Aug 31, 2024
a32c5ce
drivers: serial: bouffalolab: Update serial driver
VynDragon Aug 31, 2024
3173294
scripts: runner: Introduce bflb_mcu_tool runner
VynDragon Aug 31, 2024
a699d4f
boards: riscv: bl604e_iot_dvk: Move to bl60x directory
nandojve Sep 9, 2024
5613e36
scripts: runner: Drop blflash in favor of bflb_mcu_tool
nandojve Sep 9, 2024
6cfc420
MAINTAINERS.yml: Add Bouffalo Lab entries
nandojve Sep 21, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
25 changes: 25 additions & 0 deletions MAINTAINERS.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3446,6 +3446,21 @@ ADI Platforms:
labels:
- "platform: ADI"

Bouffalolab Platforms:
status: maintained
maintainers:
- nandojve
files:
- boards/bouffalolab/
- boards/common/*bflb*
- drivers/*/*bflb*
- dts/riscv/bouffalolab/
- dts/bindings/*/bflb,*
- scripts/west_commands/*/*bflb*
- soc/bouffalolab/
labels:
- "platform: bouffalolab"

Broadcom Platforms:
status: odd fixes
files:
Expand Down Expand Up @@ -4760,6 +4775,16 @@ West:
labels:
- "platform: Microchip SAM"

"West project: hal_bouffalolab":
status: maintained
maintainers:
- nandojve
files:
- modules/Kconfig.bouffalolab
- modules/hal_bouffalolab/
labels:
- "platform: Bouffalo Lab"

"West project: hal_cypress":
status: maintained
maintainers:
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
# Copyright (c) 2022-2024 ATL Electronics
#
# SPDX-License-Identifier: Apache-2.0

config BOARD_BL604E_IOT_DVK
select SOC_BL604E20Q2I
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
/*
* Copyright (c) 2021-2024 ATL Electronics
*
* SPDX-License-Identifier: Apache-2.0
*/

#include <dt-bindings/pinctrl/bl604x-pinctrl.h>

&pinctrl {
uart0_default: uart0_default {
group1 {
pinmux = <GPIO7_UART0_RX>,
<GPIO16_UART0_TX>;
bias-pull-up;
input-schmitt-enable;
};
};

uart0_sleep: uart0_sleep {
group1 {
pinmux = <GPIO7_UART0_RX>,
<GPIO16_UART0_TX>;
bias-high-impedance;
};
};
};
51 changes: 51 additions & 0 deletions boards/bouffalolab/bl60x/bl604e_iot_dvk/bl604e_iot_dvk.dts
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
/*
* Copyright (c) 2022-2024 ATL Electronics
*
* SPDX-License-Identifier: Apache-2.0
*/

/dts-v1/;

#include <bouffalolab/bl604e.dtsi>
#include "bl604e_iot_dvk-pinctrl.dtsi"

/ {
model = "BL604E IOT DVK development board";
compatible = "bflb,bl604";

chosen {
zephyr,flash = &flash0;
zephyr,itcm = &itcm;
zephyr,dtcm = &dtcm;
zephyr,sram = &sram0;
zephyr,console = &uart0;
zephyr,shell-uart = &uart0;
};
};

&cpu0 {
clock-frequency = <192000000>;
};

&spi1 {
#address-cells = <1>;
#size-cells = <0>;
reg = <0x4000b000 0x1000 0x23000000 0xc00000>;
flash0: flash@0 {
compatible = "issi,is25lp128", "jedec,spi-nor";
status = "disabled";
size = <134217728>;
jedec-id = [96 60 18];
reg = <0>;
spi-max-frequency = <133000000>;
};
};

&uart0 {
status = "okay";
current-speed = <115200>;

pinctrl-0 = <&uart0_default>;
pinctrl-1 = <&uart0_sleep>;
pinctrl-names = "default", "sleep";
};
20 changes: 20 additions & 0 deletions boards/bouffalolab/bl60x/bl604e_iot_dvk/bl604e_iot_dvk.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
# Copyright (c) 2022-2024 ATL Electronics
#
# SPDX-License-Identifier: Apache-2.0

identifier: bl604e_iot_dvk
name: BL604E IOT DVK development board
type: mcu
arch: riscv
ram: 64
toolchain:
- zephyr
testing:
ignore_tags:
- net
- bluetooth
supported:
- gpio
- pinctrl
- uart
vendor: bflb
10 changes: 10 additions & 0 deletions boards/bouffalolab/bl60x/bl604e_iot_dvk/bl604e_iot_dvk_defconfig
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
# Copyright (c) 2022-2024 ATL Electronics
#
# SPDX-License-Identifier: Apache-2.0

CONFIG_CONSOLE=y
CONFIG_SERIAL=y

CONFIG_UART_CONSOLE=y
CONFIG_UART_BFLB=y
CONFIG_UART_INTERRUPT_DRIVEN=y
25 changes: 25 additions & 0 deletions boards/bouffalolab/bl60x/bl604e_iot_dvk/board.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
# Copyright (c) 2022-2024 ATL Electronics
#
# SPDX-License-Identifier: Apache-2.0

board_runner_args(openocd --cmd-pre-init "source [find bl6.cfg]")

board_runner_args(openocd --use-elf --no-load --no-init)
board_runner_args(openocd --gdb-init "set mem inaccessible-by-default off")
board_runner_args(openocd --gdb-init "set architecture riscv:rv32")
board_runner_args(openocd --gdb-init "set remotetimeout 250")
board_runner_args(openocd --gdb-init "set print asm-demangle on")
board_runner_args(openocd --gdb-init "set backtrace limit 32")
board_runner_args(openocd --gdb-init "mem 0x22008000 0x22014000 rw")
board_runner_args(openocd --gdb-init "mem 0x42008000 0x42014000 rw")
board_runner_args(openocd --gdb-init "mem 0x22014000 0x22020000 rw")
board_runner_args(openocd --gdb-init "mem 0x42014000 0x42020000 rw")
board_runner_args(openocd --gdb-init "mem 0x22020000 0x2203C000 rw")
board_runner_args(openocd --gdb-init "mem 0x42020000 0x4203C000 rw")
board_runner_args(openocd --gdb-init "mem 0x23000000 0x23400000 ro")
include(${ZEPHYR_BASE}/boards/common/openocd.board.cmake)

board_runner_args(bflb_mcu_tool --chipname bl602)
include(${ZEPHYR_BASE}/boards/common/bflb_mcu_tool.board.cmake)

board_set_flasher(bflb_mcu_tool)
6 changes: 6 additions & 0 deletions boards/bouffalolab/bl60x/bl604e_iot_dvk/board.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
board:
name: bl604e_iot_dvk
full_name: BL604E IOT DVK development board
vendor: bflb
socs:
- name: bl604e20q2i
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
134 changes: 134 additions & 0 deletions boards/bouffalolab/bl60x/bl604e_iot_dvk/doc/index.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,134 @@
.. zephyr:board:: bl604e_iot_dvk

Overview
********

BL602/BL604 is a Wi-Fi+BLE chipset introduced by Bouffalo Lab, which is used
for low power consumption and high performance application development. The
wireless subsystem includes 2.4G radio, Wi-Fi 802.11b/g/n and BLE 5.0
baseband/MAC design. The microcontroller subsystem includes a 32-bit RISC CPU
with low power consumption, cache and memory. The power management unit
controls the low power consumption mode. In addition, it also supports
various security features. The external interfaces include SDIO, SPI, UART,
I2C, IR remote, PWM, ADC, DAC, PIR and GPIO.

The BL602 Development Board features a SiFive E24 32 bit RISC-V CPU with FPU,
it supports High Frequency clock up to 192Mhz, have 128k ROM, 276kB RAM,
2.4 GHz WIFI 1T1R mode, support 20 MHz, data rate up to 72.2 Mbps, BLE 5.0
with 2MB phy. It is a secure MCU which supports Secure boot, ECC-256 signed
image, QSPI/SPI Flash On-The-Fly AES Decryption and PKA (Public Key
Accelerator).

Hardware
********

For more information about the Bouffalo Lab BL-60x MCU:

- `Bouffalo Lab BL60x MCU Website`_
- `Bouffalo Lab BL60x MCU Datasheet`_
- `Bouffalo Lab Development Zone`_
- `The RISC-V BL602 Book`_

Supported Features
==================

The board configuration supports the following hardware features:

+-----------+------------+-----------------------+
| Interface | Controller | Driver/Component |
+===========+============+=======================+
| MTIMER | on-chip | RISC-V Machine Timer |
+-----------+------------+-----------------------+
| GPIO | on-chip | gpio |
+-----------+------------+-----------------------+
| PINCTRL | on-chip | pin muxing |
+-----------+------------+-----------------------+
| UART | on-chip | serial port-polling; |
| | | serial port-interrupt |
+-----------+------------+-----------------------+


The default configurations can be found in the Kconfig
:zephyr_file:`boards/bouffalolab/bl60x/bl604e_iot_dvk/bl604e_iot_dvk_defconfig`.

System Clock
============

The BL604E Development Board is configured to run at max speed (192MHz).

Serial Port
===========

The ``bl604e_iot_dvk`` uses UART0 as default serial port. It is connected to
USB Serial converter and port is used for both program and console.


Programming and Debugging
*************************

Samples
=======

#. Build the Zephyr kernel and the :zephyr:code-sample:`hello_world` sample
application:

.. zephyr-app-commands::
:zephyr-app: samples/hello_world
:board: bl604e_iot_dvk
:goals: build
:compact:

#. To flash an image using bflb_mcu_tool runner:

#. Press BOOT button

#. Press and release RST button

#. Release BOOT button

.. code-block:: console

west flash

#. Run your favorite terminal program to listen for output. Under Linux the
terminal should be :code:`/dev/ttyACM0`. For example:

.. code-block:: console

$ minicom -D /dev/ttyACM0 -o

The -o option tells minicom not to send the modem initialization
string. Connection should be configured as follows:

- Speed: 115200
- Data: 8 bits
- Parity: None
- Stop bits: 1

Then, press and release RST button

.. code-block:: console

*** Booting Zephyr OS build v3.7.0-3255-g6e0fa5c1c77a ***
Hello World! bl604e_iot_dvk/bl604e20q2i


To debug the board you can use ``west debug`` command with OpenOCD.

Congratulations, you have ``bl604e_iot_dvk`` configured and running Zephyr.


.. _Bouffalo Lab BL60x MCU Website:
https://en.bouffalolab.com/product/?type=detail&id=6

.. _Bouffalo Lab BL60x MCU Datasheet:
https://github.com/bouffalolab/bl_docs/tree/main/BL602_DS/en

.. _Bouffalo Lab Development Zone:
https://dev.bouffalolab.com/home?id=guest

.. _The RISC-V BL602 Book:
https://lupyuen.github.io/articles/book

.. _Flashing Firmware to BL602:
https://lupyuen.github.io/articles/book#flashing-firmware-to-bl602
Loading
Loading