博流BL602开发一 编译与实例

概述

BL602 是支持Wi-Fi与蓝牙BLE Combo的芯片组,芯片内置RISC-V 32位处理器,拥有丰富高速缓存和存储器资源,可用于低功耗和高性能应用开发。无线子系统包含2.4G无线电,Wi-Fi 802.11b/g/n和BLE 5.0 基带/MAC设计,高速缓存和存储器。电源管理单元控制低功耗模式。此外,还支持各种安全性能。

功能框图

外围接口包括SDIO,SPI,UART,I2C,IRremote,PWM,ADC,DAC,PIR和GPIO
博流BL602开发一 编译与实例_第1张图片

特性
  • 32位RISV-V 192MHz L1 cache FPU 1.46 DMIPS/MHz; 3.1 CoreMark/Mhz
  • 276Kb SRAM 128Kb ROM 1Kb eFuse
  • 支持XIP QSPI Flash
  • ble5.0、ble Mesh
  • IEEE 802.11 b/g/n @2.4GHz
  • GPIO x16
  • UART x2
  • PWM通道 x5
  • 12位ADC、10位DAC
  • 32位通用定时器x2、RTC
  • 2.0 SDIO从设备
  • SPI x1 、I2C x1、IRx1
  • 支持JTAG调试
    博流BL602开发一 编译与实例_第2张图片
BLE与WIFI共存
  • 支持Station、BLE模式共存
  • 支持Station、AP、BLE模式共存

环境

  • 编译环境可以使用Linux、WSL、Windows下MSYS2

例程编译

下载IOT_SDK,sdk目前还在持续更新和发布中

设置环境变量

{path} 根据实际路径修改,这里使用的是Linux环境,编译效率相对快点

export BL60X_SDK_PATH={path}/bl_iot_sdk/
export CONFIG_CHIP_NAME=BL602
执行编译

进入路径bl_iot_sdk/customer_app/bl602_demo_wifi,执行脚本 ./genromap进行编译,会在build_out目录下输出镜像
博流BL602开发一 编译与实例_第3张图片

固件烧录
  • 命令烧录:Linux环境下可以使用命令工具执行烧录,实际测试波特率不能太高,否则会出现失败
./tools/flash_tool/bflb_iot_tool --chipname=BL602 --port=/dev/ttyUSB0 --baudrate=800000 --dts=customer_app/bl602_demo_event/img_conf/bl_factory_params_IoTKitA_40M.dts --pt=customer_app/bl602_demo_event/img_conf/partition_cfg_2M.toml --firmware=customer_app/bl602_demo_wifi/build_out/bl602_demo_wifi.bin
  • 工具烧录:windows系统可以运行tools/flash_tool中的BLDevCube.exe执行烧录;需要选择设备树、分区配置文件、Boot2镜像、应用镜像
    博流BL602开发一 编译与实例_第4张图片
测试

博流SDK内部已经集成了cli命令行交互工具,可以使用PuTTY来进行类shell工具的交互与配置

  • 执行连接命令 wifi_sta_connect
wifi_sta_connect test 1234567890

代码

系统启动后会运行boot2的程序,然后跳转调用bfl_main进行mcu端的初始化并配置堆空间,最后启动应用端的main函数

  • 在main函数中会注册proc_main_entry任务
static void proc_main_entry(void *pvParameters)
{
    easyflash_init(); //easyflash初始化
    _cli_init(); //cli交互初始化
    aos_register_event_filter(EV_WIFI, event_cb_wifi_event, NULL);//注册WiFi事件回调
    cmd_stack_wifi(NULL, 0, 0, NULL);//开启wifi任务
    vTaskDelete(NULL);//删除任务
}
  • 初始化注册cli命令,大部分功能模块SDK已经支持了cli命令,可以自行添加
static void _cli_init()
{
    /*Put CLI which needs to be init here*/
int codex_debug_cli_init(void);
    codex_debug_cli_init();
    easyflash_cli_init();
    network_netutils_iperf_cli_register();
    network_netutils_tcpserver_cli_register();
    network_netutils_tcpclinet_cli_register();
    network_netutils_netstat_cli_register();
    network_netutils_ping_cli_register();
    sntp_cli_init();
    bl_sys_time_cli_init();
    bl_sys_ota_cli_init();
    blfdt_cli_init();
    wifi_mgmr_cli_init();
    bl_wdt_cli_init();
    bl_gpio_cli_init();
    looprt_test_cli_init();
}
  • 使用ping命令测试网络
    博流BL602开发一 编译与实例_第5张图片

工程配置

工程结构
  • components:组件代码,可移植第三方的开源项目
  • customer_app:demo应用实例,编译即可使用
  • docs:离线开发文档
  • toolchain:RISC-V 工具链
  • tools:烧录工具
配置文件

在工程编译时会加载prj_config.mk配置信息,可以配置使能一些功能模块

CONFIG_BOARD_FLASH_SIZE := 2 #2M Flash
#firmware config domain
#
#set CONFIG_ENABLE_ACP to 1 to enable ACP, set to 0 or comment this line to disable
#CONFIG_ENABLE_ACP:=1
CONFIG_BL_IOT_FW_AP:=1 #AP功能
CONFIG_ENABLE_PSM_RAM:=1 #使能PSARM
#蓝牙相关配置
CONFIG_BT:=0
CONFIG_BT_CENTRAL:=1
CONFIG_BT_OBSERVER:=1
CONFIG_BT_PERIPHERAL:=1
CONFIG_BT_STACK_CLI:=1
.......
添加组件

如果有新增components组件下的功能代码依赖,需要在Makefile文件中修改;

-include ./proj_config.mk #编译配置文件
ifeq ($(origin BL60X_SDK_PATH), undefined)
BL60X_SDK_PATH_GUESS ?= $(shell pwd)
BL60X_SDK_PATH ?= $(BL60X_SDK_PATH_GUESS)/../..
$(info ****** Please SET BL60X_SDK_PATH ******)
$(info ****** Trying SDK PATH [$(BL60X_SDK_PATH)])
endif
COMPONENTS_NETWORK := sntp dns_server #添加网络组件
COMPONENTS_BLSYS   := bltime blfdt blmtd blota bloop loopadc looprt loopset #添加系统组件
COMPONENTS_VFS     := romfs #文件系统组件
INCLUDE_COMPONENTS += freertos_riscv_ram bl602 bl602_std newlibc wifi blcrypto_suite wifi_manager wpa_supplicant bl_os_adapter wifi_hosal hosal lwip lwip_dhcpd mbedtls_lts vfs yloop utils cli aws-iot httpc netutils blog blog_testc # 头文件库
INCLUDE_COMPONENTS += easyflash4 coredump
组件注册

组件需要通过注册才能被编译使用,通过buffalo.mk,可以查看下路径bl_iot_sdk/components/fs/romfs中的配置

## These include paths would be exported to project level
COMPONENT_ADD_INCLUDEDIRS += # 对外头文件
## not be exported to project level
COMPONENT_PRIV_INCLUDEDIRS := include # 私有头文件
## This component's src
COMPONENT_SRCS :=   src/bl_romfs.c # 源文件
COMPONENT_OBJS := $(patsubst %.c,%.o, $(COMPONENT_SRCS)) # 编译源文件
COMPONENT_SRCDIRS := src #源文件目录

总结

SDK中的customer_app目录下已经包含了各种应用实例,使用脚本即可编译验证;如果开发仅使用BLE的话,可以选择MCU版本的SDK进行开发

你可能感兴趣的:(博流BLXXX,bl602,博流602,博流)