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
x16
x2
x5
x2
、RTCx1
、I2C x1
、IRx1
下载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
目录下输出镜像
./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
博流SDK内部已经集成了cli命令行交互工具,可以使用PuTTY来进行类shell工具的交互与配置
wifi_sta_connect
wifi_sta_connect test 1234567890
系统启动后会运行boot2的程序,然后跳转调用bfl_main进行mcu端的初始化并配置堆空间,最后启动应用端的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);//删除任务
}
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();
}
在工程编译时会加载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进行开发