ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Zephyr 在 Ai-Thinker M61-32S(BL618)开发板上的支持详解:硬件资源、Hello World 实践与超频配置

Zephyr 在 Ai-Thinker M61-32S(BL618)开发板上的支持详解:硬件资源、Hello World 实践与超频配置 Zephyr 在 Ai-Thinker M61-32SBL618开发板上的支持详解硬件资源、Hello World 实践与超频配置【免费下载链接】zephyrPrimary Git Repository for the Zephyr Project. Zephyr is a new generation, scalable, optimized, secure RTOS for multiple hardware architectures.项目地址: https://gitcode.com/GitHub_Trending/ze/zephyrZephyr 在 boards/aithinker 目录下为深圳思特威Ai-Thinker的 Ai-M61-32S 开发板提供了完整的板级支持核心是 Bouffalo LabBL618RISC-V SoC支持 Wi-Fi 802.11ax 与 BLE。本文基于官方板级文档 boards/aithinker/ai_m61_32s_kit/doc/index.rst 展开结合仓库中的设备树、Kconfig、CMake 构建脚本系统讲解该板支持的硬件特性、DEFAULT/ALL 两个硬件版本的差异、串口调试与烧录方式以及官方的安全/极限两档超频演示配置帮助你在该板上完成 Zephyr 应用的首次构建、烧录、调试并理解超频背后的时钟与电压调整原理。1. 板子概述BL618 RISC-V SoC 与无线能力Ai-M61-32S 是 Ai-Thinker 推出的 Wi-Fi 6 BLE5.3 模块核心处理器为 Bouffalo Lab 的 BL618 芯片支持 Wi-Fi 802.11b/g/n/ax 协议、BLE 协议以及 Thread 协议。BL618 系统包含一颗低功耗 32 位 RISC-V CPU带浮点单元、DSP 单元、cache 和片上存储最高主频 320MHz。板级元数据由 boards/aithinker/ai_m61_32s_kit/ai_m61_32s_kit.yaml 声明板级标识符ai_m61_32s_kit类型mcu架构riscv系统 RAM 约480 KBram: 480工具链为zephyr厂商字段为bflbBouffalo Lab板级代码归属boards/aithinker目录twister 测试中会忽略bluetooth标签testing.ignore_tags: bluetooth。该板官方声明支持supported列表以下硬件特性这也是.. zephyr:board-supported-hw::指令在文档中自动生成特性表格的数据来源特性说明gpioGPIO 控制器gpio0/gpio1均已使能pinctrl引脚复用控制uart串口UART0 作为默认控制台dmaDMA 引擎i2cI2C 外设spiSPI 外设flashSPI Flash 存储netif:wifiWi-Fi 网络接口pwmPWM 定时器从源码结构看设备树通过 boards/aithinker/ai_m61_32s_kit/ai_m61_32s.dtsi 复用 SoC 层定义bflb/bl618.dtsi与bflb/bl61x_em_32kb_wifi.dtsichosen节点将系统组件绑定到具体外设zephyr,console与zephyr,shell-uart→uart0zephyr,entropy→sec_eng_trng安全引擎真随机数发生器zephyr,bt-hci→bt_hci_bflbBouffalo 的 BT HCI 控制器zephyr,flash→flash0zephyr,flash-controller→sf_bank1zephyr,code-partition→slot0_partitionzephyr,sram→all_ram。另外wifi0和bt_hci_bflb均设为status okaywatchdog 通过watchdog0 wdt0别名暴露。2. 板级目标、硬件版本revision与 SoC 变体该板存在两个硬件版本通过 Zephyr 的boardrevision机制区分。boards/aithinker/ai_m61_32s_kit/board.yml 定义了版本revisionDEFAULT默认与ALLSoCbl618m05q2i并带有两个时钟变体variantsafe_overclock与unsafe_overclock。两个版本的区别在于 Flash 芯片形态Kconfig.ai_m61_32s_kit 揭示了这一对应关系config BOARD_AI_M61_32S_KIT select SOC_BL618M05Q2I if BOARD_REVISION_DEFAULT select SOC_BL618M65Q2I if BOARD_REVISION_ALL即DEFAULT版本映射到SOC_BL618M05Q2IALL版本映射到SOC_BL618M65Q2I。ALL版本的 SoC 内部集成了 XMC Flash die而非外部 SOIC Flash 封装boards/aithinker/ai_m61_32s_kit/ai_m61_32s_kit_ALL.overlay 会相应替换 Flash 的兼容字符串并启用 RX 时钟反转flash0 { /* ALL revision is BL618M65, which has an internal XMC Flash die * instead of an external SOIC Flash. */ compatible bflb,sf-flash, soc-nv-flash, xmc,xm25qw64; rx-clock-invert; };因此使用 ALL 硬件版本时必须显式指定ai_m61_32s_kitALL作为板级目标板级文档中也有此提示否则默认按bl618m05q2i外部 GD25Q64E Flash处理。revision 的解析逻辑位于 boards/aithinker/ai_m61_32s_kit/revision.cmake非法的BOARD_REVISION会直接触发FATAL_ERROR。Kconfig 还为一组常用子系统设置了默认值保证该板开箱即有可用的控制台输出config CONSOLE ; default y config SERIAL ; default y config UART_CONSOLE ; default y config MEMC ; default y3. 系统时钟与两档超频演示配置默认配置下boards/aithinker/ai_m61_32s_kit/ai_m61_32s.dtsi 将 CPU 配置为最大规格速度320MHzclock-frequency DT_FREQ_M(320)Flash 时钟分频为 1。板级文档提供了 BL618 超频的演示配置仓库中对应两个独立的设备树文件3.1 safe_overclock480MHz 核心时钟boards/aithinker/ai_m61_32s_kit/ai_m61_32s_kit_bl618m05q2i_safe_overclock.dts 的内容clk_aupll { /* Increased PLL top output frequency to 480 MHz */ top-frequency BL61X_TOP_FREQ_OC1; }; clk_bclk { /* 80MHz BCLK */ divider 6; };通过 AUPLL 顶层频率宏BL61X_TOP_FREQ_OC1将 PLL 输出提升到 480MHz并将 bclk 分频器设为 6DTS 注释标注为 80MHz BCLK板级文档中的表述为 120MHz BCLK两处数值口径略有出入实际效果以设备树宏定义和分频器为准。官方文档给出该档配置下 Coremark 得分可达1600左右。3.2 unsafe_overclock640MHz 核心时钟需提压boards/aithinker/ai_m61_32s_kit/ai_m61_32s_kit_bl618m05q2i_unsafe_overclock.dts 在时钟之外还调整了 SoC 供电clk_aupll { /* Increased PLL top output frequency to 640MHz */ top-frequency BL61X_TOP_FREQ_OC2; }; reg_soc { /* SoC LDO at 1.25v to handle 640MHz FCLK*/ regulator-init-microvolt 1250000; }; clk_bclk { /* 120MHz BCLK */ divider 5; };关键点有三BL61X_TOP_FREQ_OC2将 PLL 顶频提升到 640MHzreg_soc的 LDO 初始电压被抬到1.25V以支撑 640MHz FCLK 下的动态功耗与信号完整性——这是unsafe命名的由来属于超出规格的高压超频bclk 分频器设为 5。由于两个硬件版本的 Flash 工作在 Dual Out 模式下ALL与非ALL版本需要在 640MHz FCLK 下使用不同的 Flash 时钟设置DTS 中注释明确说明所以仓库另配了ai_m61_32s_kit_bl618m05q2i_unsafe_overclock_ALL.overlay针对 ALL 版本微调。板级文档描述该档配置对应 120MHz 或 106MHz BCLKCoremark 得分可达2100左右。对应板级目标名为ai_m61_32s_kit/bl618m05q2i/safe_overclockai_m61_32s_kit/bl618m05q2i/unsafe_overclock重要限制超频状态下DMA 及依赖 DMA 的驱动不能正常工作这是板级文档明确给出的警告超频时不要依赖 DMA 传输路径。4. 串口、烧录与调试4.1 串口ai_m61_32s_kit使用UART0作为默认串口其通过 USB 转串口芯片连接 PC该端口同时用于程序烧录和控制台输出。设备树中 UART0 配置为 115200 波特率并绑定双套引脚复用默认与睡眠状态见 ai_m61_32s.dtsiuart0 { status okay; current-speed 115200; pinctrl-0 uart0_default; pinctrl-1 uart0_sleep; pinctrl-names default, sleep; };终端参数按板级文档设置为波特率 115200、8 数据位、无校验、1 停止位8N1。4.2 烧录与调试器boards/aithinker/ai_m61_32s_kit/board.cmake 定义了该板的烧录与调试链路board_runner_args(openocd --cmd-pre-init source [find target/bl616.cfg]) board_runner_args(openocd --file-typeelf --no-load) board_runner_args(openocd --gdb-init set print asm-demangle on) board_runner_args(openocd --gdb-init mem 0x90000000 0x90020000 ro) board_runner_args(openocd --gdb-init mem 0xA0000000 0xA8000000 ro) include(${ZEPHYR_BASE}/boards/common/openocd.board.cmake) board_runner_args(bflb_mcu_tool --chipname bl616) include(${ZEPHYR_BASE}/boards/common/bflb_mcu_tool.board.cmake) board_set_flasher(bflb_mcu_tool)由此可知调试走 OpenOCD复用bl616.cfg目标配置以 ELF 直连方式加载--file-typeelf --no-load并为 GDB 标记了 SRAM0x90000000 起与 Flash0xA0000000 起两个只读内存区段方便断点与内存查看板目录下的 boards/aithinker/ai_m61_32s_kit/support/openocd.cfg 是配套的 OpenOCD 板级配置烧录则指定为bflb_mcu_toolboard_set_flasher(bflb_mcu_tool)即以 Bouffalo 官方的 MCU 烧录工具、--chipname bl616方式写入west flash会走这条链路。5. 上手实践构建并运行 hello_world按板级文档的完整流程操作构建 Zephyr 内核与hello_world示例应用对应 zephyr-app-commands 指令展开$ west build -b ai_m61_32s_kit samples/hello_world $ west flash用任意串口终端监听输出。Linux 下端口一般为/dev/ttyUSB0$ screen /dev/ttyUSB0 115200串口参数Speed 115200 / Data 8 bits / Parity None / Stop bits 1。按下并松开板上的RST按钮复位预期看到*** Booting Zephyr OS build v4.3.0 *** Hello World! ai_m61_32s_kit/bl618m05q2i输出中的ai_m61_32s_kit/bl618m05q2i即板名/SoC组合说明 DEFAULT 版本BL618M05Q2I被正确识别。Flash 布局也已在设备树中完整定义ai_m61_32s.dtsi外部 64Mbit8MBGD25Q64E Flash 挂载在sf_bank1基址 0xA0000000划分为boot_header0x0 起 8KB只读、image-00x2000 起约 2MB只读即zephyr,code-partition指向的 slot0和storage0x200000 起 6MB三个分区。6. 板载资源LED、按键与外设开发板Kit层的设备树为 boards/aithinker/ai_m61_32s_kit/ai_m61_32s_kit_common.dtsi提供如下板载资源6.1 GPIO 控制的五路 LED别名/节点颜色GPIO 引脚别名led_0蓝gpio0pin 15led0led_1绿gpio0pin 14-led_2红gpio0pin 12-led_3白gpio0pin 29-led_4暖白gpio0pin 27-6.2 PWM 驱动的 LEDpwmleds节点定义了一组 PWM LED默认status disabled需要时由应用 overlay 使能全部挂在pwm0上蓝通道 3、绿通道 2、红通道 0、白通道 1、暖白通道 3与蓝色复用极性均为PWM_POLARITY_NORMAL。蓝色 PWM LED 带有别名pwm-led0。6.3 按键与其他外设按键sw0gpio0pin 2映射为INPUT_KEY_0可直接配合 Zephyr input 子系统使用i2c0使能标准速率I2C_BITRATE_STANDARD绑定默认引脚复用spi0使能绑定默认引脚复用引脚定义分别来自 ai_m61_32s-pinctrl.dtsi 与 ai_m61_32s_kit-pinctrl.dtsi。此外boards/aithinker/ai_m61_32s_kit/pre_dt_board.cmake 在 DTC 编译时追加了-Wno-unique_unit_address_if_enabled抑制设备树唯一单元地址警告属于构建细节一般无需改动。7. 小结与适用前提板级目标ai_m61_32s_kitDEFAULT 版本BL618M05Q2I 外部 GD25Q64Eai_m61_32s_kitALLBL618M65Q2I 内部 XMC Flash必须带ALL。默认 320MHz/bl618m05q2i/safe_overclock480MHzOC1与/bl618m05q2i/unsafe_overclock640MHzOC2 1.25V SoC LDO两档超频演示可用但超频时 DMA 与 DMA 驱动不可用。串口 UART0 115200 8N1 同时承担控制台与烧录调试用 OpenOCDbl616 目标烧录用bflb_mcu_tool --chipname bl616。适用前提基于当前仓库Zephyr 4.3.0 构建输出的板级支持硬件为 Ai-Thinker M61-32S 套件板若自行修改 Flash 分区或引脚复用请以 ai_m61_32s.dtsi 与 ai_m61_32s_kit_common.dtsi 为基准做 overlay。【免费下载链接】zephyrPrimary Git Repository for the Zephyr Project. Zephyr is a new generation, scalable, optimized, secure RTOS for multiple hardware architectures.项目地址: https://gitcode.com/GitHub_Trending/ze/zephyr创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表