• 博流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
    在这里插入图片描述

    特性
    • 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调试
      在这里插入图片描述
    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
    
    • 1
    • 2
    执行编译

    进入路径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
    
    • 1
    • 工具烧录:windows系统可以运行tools/flash_tool中的BLDevCube.exe执行烧录;需要选择设备树、分区配置文件、Boot2镜像、应用镜像
      在这里插入图片描述
    测试

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

    • 执行连接命令 wifi_sta_connect
    wifi_sta_connect test 1234567890
    
    • 1
    代码

    系统启动后会运行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);//删除任务
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 初始化注册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();
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 使用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
    .......
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    添加组件

    如果有新增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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    组件注册

    组件需要通过注册才能被编译使用,通过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 #源文件目录
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    总结

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

  • 相关阅读:
    新品发布 | Cloudpods 3.9.1 版本上线
    电子学会2022年9月青少年软件编程(图形化)等级考试试卷(二级)答案解析
    「HarmonyOS」下拉刷新组件使用详情
    AI办公自动化:批量根据Excel表格内容制作Word文档
    python蛇形填数
    numpy学习大纲
    一种近红外荧光探针吲哚菁绿伯胺ICG amine|1686147-55-6
    快速上手:剧本杀dm预约平台小程序的制作流程
    [WooYun-2016-226888] SpringBoot框架SpEL漏洞复现与原理详细分析
    简介性能测试
  • 原文地址:https://blog.csdn.net/libin55/article/details/126499936