概述
概述
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
特性
- 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
、I2Cx1
、IRx1
- 支持JTAG调试
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
目录下输出镜像
固件烧录
- 命令烧录: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镜像、应用镜像
测试
博流SDK内部已经集成了cli命令行交互工具,可以使用PuTTY来进行类shell工具的交互与配置
- 执行连接命令
wifi_sta_connect <ssid> <password>
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命令测试网络
工程配置
工程结构
- 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进行开发
最后
以上就是霸气枕头为你收集整理的博流BL602开发一 编译与实例的全部内容,希望文章能够帮你解决博流BL602开发一 编译与实例所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复