ZephyrOS 嵌入式开发Black Pill V1.2之Debug调试器
版本和环境信息如下:
PC平台: Windows 11 专业版
Zephyr开发环境:v4.1.0 Windows 下搭建 Zephyr 开发环境
WeAct BlackPill V1.2开发板: WeAct STM32F411CEU6 BlackPill 核心板
Debug调试器:
ST-LINK V2: ST-LINK V2 STM8/STM32仿真器
J-LINK 克隆调试器:JLINK V9.5 ARM仿真器
BlackMagicProbe(BMP) 开源调试器:WeAct STM32F103CBT6 BluePill 核心板
调试器安装软件:
dfu-util工具:dfu-util-0.11-binaries
ST-LINK V2:
ST官网stsw-link007下载 ST-LINK V2固件更新工具
stlink tools-1.8.0
J-LINK V9.5克隆调试器:
JLink_Windows_V758_x86_64.exe V7.58以上版本均有防clone盗版功能。
OpenOCD: xpack-openocd-0.12.0-6-win32-x64.zip
ARM GDB: xpack-arm-none-eabi-gcc-14.2.1-1.1-win32-x64.zip
参考文档:
Black Pill V1.2 — Zephyr Project Documentation
1. 背景
WeAct Black Pill V1.2开发板是一款基于STM32F401CC芯片的超低成本精简型开发板(详见STM32F401CC官网[5])。该板采用STM32F401x系列的48引脚版本(参见STM32F401x参考手册[6]),WeAct的GitHub页面[2]。
2. 硬件信息
基于STM32F401CC芯片的Black Pill V3.0+开发板提供以下硬件组件:
STM32F401CCU6 in UFQFPN48 package
ARM® 32-bit Cortex® -M4 CPU with FPU
84 MHz max CPU frequency
VDD from 1.7 V to 3.6 V
256 KB Flash
64 KB SRAM
GPIO with external interrupt capability
1x12-bit, 2.4 MSPS ADC with 16 channels
DMA Controller
Up to 11 Timers (six 16-bit, two 32-bit, two watchdog timers and a SysTick timer)
USART/UART (3)
I2C (3)
SPI/I2S (5)
SDIO
USB 2.0 full-speed device/host/OTG controller with on-chip PHY
CRC calculation unit
96-bit unique ID
RTC
3. 管脚分布信息:
4. Zephyr默认外设映射
UART_1 TX/RX : PA9/PA10
I2C1 SCL/SDA : PB8/PB9
SPI1 CS/SCK/MISO/MOSI : PA4/PA5/PA6/PA7 (Routed to footprint for external flash)
PWM_4_CH1 : PB6
PWM_4_CH2 : PB7
ADC_1 : PA1
USER_PB : PA0
USER_LED : PC13
5. 烧录与调试
BlackPill_F401CC开发板支持以下运行器(runners)及对应的west命令:
flash | debug | debugserver | rtt | attach | |
blackmagicprobe | ✅ | ✅ | ✅ | ||
dfu-util | ✅ (default) | ||||
jlink | ✅ | ✅ | ✅ | ✅ | ✅ |
openocd | ✅ | ✅ (default) | ✅ | ✅ | ✅ |
5.1 DFU-Util工具
Zephyr对应BlackPill_F401CC项目默认使用dfu-util烧录。
连接USB-C数据线后,开发板将自动上电。强制进入DFU模式的操作方法:保持BOOT0开关按压状态,同时短按NRST开关后立即释放。
设备管理器里能看到"STM32 BOOTLOADER",说明F401进入到DFU下载模式。
解压dfu-util-0.11-binaries至zephyr-sdk目录下:
解压好后设置系统环境变量
将dfu-util的win64执行程序路径添加在系统变量里。
设置好后打开cmd终端
# 检查dfu-util工具是否安装成功(.venv) D:\workspace\zephyrproject\zephyr-project\zephyr>dfu-util --list
dfu-util 0.11Copyright 2005-2009 Weston Schmidt, Harald Welte and OpenMoko Inc.
Copyright 2010-2021 Tormod Volden and Stefan Schmidt
This program is Free Software and has ABSOLUTELY NO WARRANTY
Please report bugs to http://sourceforge.net/p/dfu-util/tickets/Found DFU: [0483:df11] ver=2200, devnum=9, cfg=1, intf=0, path="1-8.3", alt=3, name="@Device Feature/0xFFFF0000/01*004 e", serial="337033863133"
Found DFU: [0483:df11] ver=2200, devnum=9, cfg=1, intf=0, path="1-8.3", alt=2, name="@OTP Memory /0x1FFF7800/01*512 e,01*016 e", serial="337033863133"
Found DFU: [0483:df11] ver=2200, devnum=9, cfg=1, intf=0, path="1-8.3", alt=1, name="@Option Bytes /0x1FFFC000/01*016 e", serial="337033863133"
Found DFU: [0483:df11] ver=2200, devnum=9, cfg=1, intf=0, path="1-8.3", alt=0, name="@Internal Flash /0x08000000/04*016Kg,01*064Kg,03*128Kg", serial="337033863133"
使用west flash烧录
(.venv) D:\workspace\zephyrproject\zephyr-project\zephyr>west flash
-- west flash: rebuilding
ninja: no work to do.
-- west flash: using runner dfu-util
dfu-util 0.11Copyright 2005-2009 Weston Schmidt, Harald Welte and OpenMoko Inc.
Copyright 2010-2021 Tormod Volden and Stefan Schmidt
This program is Free Software and has ABSOLUTELY NO WARRANTY
Please report bugs to http://sourceforge.net/p/dfu-util/tickets/Warning: Invalid DFU suffix signature
A valid DFU suffix will be required in a future dfu-util release
Opening DFU capable USB device...
Device ID 0483:df11
Device DFU version 011a
Claiming USB DFU Interface...
Setting Alternate Interface #0 ...
Determining device status...
DFU state(10) = dfuERROR, status(10) = Device's firmware is corrupt. It cannot return to run-time (non-DFU) operations
Clearing status
Determining device status...
DFU state(2) = dfuIDLE, status(0) = No error condition is present
DFU mode device DFU version 011a
Device returned transfer size 2048
DfuSe interface name: "Internal Flash "
Downloading element to address = 0x08000000, size = 15992
Erase [=========================] 100% 15992 bytes
Erase done.
Download [=========================] 100% 15992 bytes
Download done.
File downloaded successfully
Submitting leave request...
Transitioning to dfuMANIFEST state(.venv) D:\workspace\zephyrproject\zephyr-project\zephyr>
5.2 ST-LINK V2 + OpenOCD + GDB工具
首先淘宝购买ST-LINK V2 STM8/STM32仿真器固件比较旧,zephyr使用stlink检测固件会报错,需要先更新ST-LINK为最新版本。
去ST官网下载 stsw-link007
ST-Link 与 STM32F401CC 接线
ST-Link 引脚 | STM32F401CC 引脚 | 备注 |
SWDIO | PA13 | 必须连接 |
SWCLK | PA14 | 必须连接 |
GND | GND | 必须连接 |
RST | R | 必须连接 |
下载 openocd-0.12.0-6至zephyr-sdk
解压好后设置系统环境变量
将openocd的bin执行程序路径添加在系统变量里。
下载arm-none-eabi-gcc-14.2.1至zephyr-sdk
将arm-none-eabi-gdb.exe的bin执行程序路径添加在系统变量里。
创建一个stm32f4.cfg的Tcl文件
# 选择 ST-Link 调试器
source [find interface/stlink.cfg]# 选择 SWD 协议
transport select dapdirect_swd# 目标芯片配置
source [find target/stm32f4x.cfg]reset_config srst_only
设置好后打开cmd终端, 验证openocd是否运行正常。
(.venv) D:\workspace\zephyrproject\zephyr-project>openocd -f stm32f4.cfg
xPack Open On-Chip Debugger 0.12.0+dev-01850-geb6f2745b-dirty (2025-02-07-10:08)
Licensed under GNU GPL v2
For bug reports, readhttp://openocd.org/doc/doxygen/bugs.html
srst_only separate srst_nogate srst_open_drain connect_deassert_srst
Info : Listening on port 6666 for tcl connections
Info : Listening on port 4444 for telnet connections
Info : STLINK V2J46S7 (API v2) VID:PID 0483:3748
Info : Target voltage: 3.232653
Info : Unable to match requested speed 2000 kHz, using 1800 kHz
Info : Unable to match requested speed 2000 kHz, using 1800 kHz
Info : clock speed 1800 kHz
Info : stlink_dap_op_connect(connect)
Info : SWD DPIDR 0x2ba01477
Error: Failed to read memory at 0xe000ed04
Error: [stm32f4x.cpu] Examination failed
Warn : target stm32f4x.cpu examination failed
Info : [stm32f4x.cpu] starting gdb server on 3333
Info : Listening on port 3333 for gdb connections
OpenOCD刷写命令
# 完全擦除
openocd.exe -f stm32f4.cfg -c "init; reset halt; stm32f4x mass_erase 0; exit"
# 烧写ELF文件
openocd -f stm32f4.cfg -c "program zephyr.elf verify reset exit"
#烧写Binary文件
openocd -f stm32f4.cfg -c "program zephyr.bin verify reset exit 0x08000000"
Zephyr使用OpenOCD方式烧录
(.venv) D:\workspace\zephyrproject\zephyr-project\zephyr>west flash --runner openocd
-- west flash: rebuilding
ninja: no work to do.
-- west flash: using runner openocd
-- runners.openocd: Flashing file: D:/workspace/zephyrproject/zephyr-project/zephyr/build/zephyr/zephyr.hex
xPack Open On-Chip Debugger 0.12.0+dev-01850-geb6f2745b-dirty (2025-02-07-10:08)
Licensed under GNU GPL v2
For bug reports, readhttp://openocd.org/doc/doxygen/bugs.html
Info : STLINK V2J46S7 (API v2) VID:PID 0483:3748
Info : Target voltage: 3.212066
Info : Unable to match requested speed 2000 kHz, using 1800 kHz
Info : Unable to match requested speed 2000 kHz, using 1800 kHz
Info : clock speed 1800 kHz
Info : stlink_dap_op_connect(connect)
Info : SWD DPIDR 0x2ba01477
Info : [stm32f4x.cpu] Cortex-M4 r0p1 processor detected
Info : [stm32f4x.cpu] target has 6 breakpoints, 4 watchpoints
Info : [stm32f4x.cpu] Examination succeed
Info : [stm32f4x.cpu] starting gdb server on 3333
Info : Listening on port 3333 for gdb connectionsTargetName Type Endian TapName State
-- ------------------ ---------- ------ ------------------ ------------0* stm32f4x.cpu cortex_m little stm32f4x.cpu unknown
Info : Unable to match requested speed 2000 kHz, using 1800 kHz
Info : Unable to match requested speed 2000 kHz, using 1800 kHz
[stm32f4x.cpu] halted due to breakpoint, current mode: Thread
xPSR: 0x61000000 pc: 0x2000002e msp: 0x20000c00
Info : Unable to match requested speed 8000 kHz, using 4000 kHz
Info : Unable to match requested speed 8000 kHz, using 4000 kHz
Info : device id = 0x10016433
Info : flash size = 384 KiB
auto erase enabled
wrote 16384 bytes from file D:/workspace/zephyrproject/zephyr-project/zephyr/build/zephyr/zephyr.hex in 0.592510s (27.004 KiB/s)
Info : Unable to match requested speed 2000 kHz, using 1800 kHz
Info : Unable to match requested speed 2000 kHz, using 1800 kHz
[stm32f4x.cpu] halted due to breakpoint, current mode: Thread
xPSR: 0x61000000 pc: 0x20000044 msp: 0x20000c00
shutdown command invoked
注意 OpenOCD 0.12.0版本
.\zephyr-project\zephyr\boards\weact\blackpill_f401cc\support\openocd.cfg
source [find interface/stlink.cfg]# OpenOCD V0.11.0
# transport select hla_swd
# OpenOCD V0.12.0
transport select dapdirect_swdsource [find target/stm32f4x.cfg]reset_config srst_only$_TARGETNAME configure -event gdb-attach {echo "Debugger attaching: halting execution"reset haltgdb_breakpoint_override hard
}$_TARGETNAME configure -event gdb-detach {echo "Debugger detaching: resuming execution"resume
}
Zephyr项目west flash --runner openocd命令,指定使用openocd的方式。
注意执行命令后,同时短按NRST开关后立即释放。
(.venv) D:\workspace\zephyrproject\zephyr-project\zephyr>west flash --runner openocd
-- west flash: rebuilding
ninja: no work to do.
-- west flash: using runner openocd
-- runners.openocd: Flashing file: D:/workspace/zephyrproject/zephyr-project/zephyr/build/zephyr/zephyr.hex
Open On-Chip Debugger 0.11.0 (2021-11-18) [https://github.com/sysprogs/openocd]
Licensed under GNU GPL v2
libusb1 09e75e98b4d9ea7909e8837b7a3f00dda4589dc3
For bug reports, readhttp://openocd.org/doc/doxygen/bugs.html
Info : The selected transport took over low-level target control. The results might differ compared to plain JTAG/SWD
Info : clock speed 2000 kHz
Info : STLINK V2J46S7 (API v2) VID:PID 0483:3748
Info : Target voltage: 3.221593
Info : stm32f4x.cpu: Cortex-M4 r0p1 processor detected
Info : stm32f4x.cpu: target has 6 breakpoints, 4 watchpoints
Info : starting gdb server for stm32f4x.cpu on 3333
Info : Listening on port 3333 for gdb connectionsTargetName Type Endian TapName State
-- ------------------ ---------- ------ ------------------ ------------0* stm32f4x.cpu hla_target little stm32f4x.cpu haltedInfo : Unable to match requested speed 2000 kHz, using 1800 kHz
Info : Unable to match requested speed 2000 kHz, using 1800 kHz
target halted due to debug-request, current mode: Thread
xPSR: 0x01000000 pc: 0x08000868 msp: 0x20001180
Info : Unable to match requested speed 8000 kHz, using 4000 kHz
Info : Unable to match requested speed 8000 kHz, using 4000 kHz
Info : device id = 0x10006431
Info : flash size = 512 kbytes
auto erase enabled
wrote 16384 bytes from file D:/workspace/zephyrproject/zephyr-project/zephyr/build/zephyr/zephyr.hex in 0.618922s (25.851 KiB/s)Info : Unable to match requested speed 2000 kHz, using 1800 kHz
Info : Unable to match requested speed 2000 kHz, using 1800 kHz
target halted due to breakpoint, current mode: Thread
xPSR: 0x61000000 pc: 0x20000044 msp: 0x20001180
shutdown command invoked
注意出现错误,按住Rest按键再执行
(.venv) D:\workspace\zephyrproject\zephyr-sdk>openocd -f stm32f4.cfg
xPack Open On-Chip Debugger 0.12.0+dev-01850-geb6f2745b-dirty (2025-02-07-10:08)
Licensed under GNU GPL v2
For bug reports, readhttp://openocd.org/doc/doxygen/bugs.html
0x4000
Info : Listening on port 6666 for tcl connections
Info : Listening on port 4444 for telnet connections
Info : STLINK V2J46S7 (API v2) VID:PID 0483:3748
Info : Target voltage: 3.205770
Info : Unable to match requested speed 1000 kHz, using 950 kHz
Info : Unable to match requested speed 1000 kHz, using 950 kHz
Info : clock speed 950 kHz
Info : stlink_dap_op_connect(connect)
Info : SWD DPIDR 0x2ba01477
Error: Failed to read memory at 0xe000ed04
Error: [stm32f4x.cpu] Examination failed
Warn : target stm32f4x.cpu examination failed
Info : [stm32f4x.cpu] starting gdb server on 3333
Info : Listening on port 3333 for gdb connections
shutdown command invoked
5.3 J-LINK工具
J-LINK 克隆调试器只能使用JLink_Windows_V758_x86_64版本,这个版本之后的版本都有JLink Clone检测功能。对于企业来说会带来一些不必要的麻烦,企业还是使用正版J-LINK硬件。
下载安装JLink_Windows_V758_x86_64,同样需要设置系统环境变量。
设置好后打开cmd终端, 验证JLink是否运行正常。
(.venv) D:\workspace\zephyrproject\zephyr-project\zephyr>west flash --runner jlink
-- west flash: rebuilding
ninja: no work to do.
-- west flash: using runner jlink
-- runners.jlink: reset after flashing requested
-- runners.jlink: JLink version: 7.58
-- runners.jlink: Flashing file: D:\workspace\zephyrproject\zephyr-project\zephyr\build\zephyr\zephyr.hex
验证JLink debug调试功能
west debug --runner jlink
west attach --runner jlink(.venv) D:\workspace\zephyrproject\zephyr-project\zephyr>west debug --runner jlink
-- west debug: rebuilding
ninja: no work to do.
-- west debug: using runner jlink
-- runners.jlink: reset after flashing requested
-- runners.jlink: JLink version: 7.58
-- runners.jlink: J-Link GDB server running on port 2331; no thread info available
GNU gdb (Zephyr SDK 0.17.1) 12.1
Copyright (C) 2022 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Type "show copying" and "show warranty" for details.
This GDB was configured as "--host=x86_64-host_w64-mingw32 --target=arm-zephyr-eabi".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<https://github.com/zephyrproject-rtos/sdk-ng/issues>.
Find the GDB manual and other documentation resources online at:<http://www.gnu.org/software/gdb/documentation/>.For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from D:\workspace\zephyrproject\zephyr-project\zephyr\build\zephyr\zephyr.elf...
Remote debugging using :2331
__enable_irq () at D:/workspace/zephyrproject/zephyr-project/modules/hal/cmsis/CMSIS/Core/Include/cmsis_gcc.h:951
951 __ASM volatile ("cpsie i" : : : "memory");
Resetting target
Loading section rom_start, size 0x194 lma 0x8000000
Loading section text, size 0x3444 lma 0x8000194
Loading section .ARM.exidx, size 0x8 lma 0x80035d8
Loading section initlevel, size 0x80 lma 0x80035e0
Loading section device_area, size 0x180 lma 0x8003660
Loading section sw_isr_table, size 0x2a8 lma 0x80037e0
Loading section gpio_driver_api_area, size 0x24 lma 0x8003a88
Loading section reset_driver_api_area, size 0x10 lma 0x8003aac
Loading section clock_control_driver_api_area, size 0x1c lma 0x8003abc
Loading section uart_driver_api_area, size 0x4c lma 0x8003ad8
--Type <RET> for more, q to quit, c to continue without paging--
Loading section rodata, size 0x2ec lma 0x8003b24
Loading section datas, size 0x4c lma 0x8003e10
Loading section device_states, size 0x18 lma 0x8003e5c
Loading section .last_section, size 0x4 lma 0x8003e74
Start address 0x08000868, load size 15992
Transfer rate: 3 KB/sec, 1142 bytes/write.
Resetting target
(gdb)(.venv) D:\workspace\zephyrproject\zephyr-project\zephyr>west attach --runner jlink
-- west attach: rebuilding
ninja: no work to do.
-- west attach: using runner jlink
-- runners.jlink: reset after flashing requested
-- runners.jlink: JLink version: 7.58
-- runners.jlink: J-Link GDB server running on port 2331; no thread info available
GNU gdb (Zephyr SDK 0.17.1) 12.1
Copyright (C) 2022 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Type "show copying" and "show warranty" for details.
This GDB was configured as "--host=x86_64-host_w64-mingw32 --target=arm-zephyr-eabi".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<https://github.com/zephyrproject-rtos/sdk-ng/issues>.
Find the GDB manual and other documentation resources online at:<http://www.gnu.org/software/gdb/documentation/>.For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from D:\workspace\zephyrproject\zephyr-project\zephyr\build\zephyr\zephyr.elf...
Remote debugging using :2331
z_arm_reset () at D:/workspace/zephyrproject/zephyr-project/zephyr/arch/arm/core/cortex_m\reset.S:121
121 ldr r0, =z_main_stack + CONFIG_MAIN_STACK_SIZE
(gdb)
还会弹出JLinkGDBServer的窗口。
相关文章:

ZephyrOS 嵌入式开发Black Pill V1.2之Debug调试器
版本和环境信息如下: PC平台: Windows 11 专业版 Zephyr开发环境:v4.1.0 Windows 下搭建 Zephyr 开发环境 WeAct BlackPill V1.2开发板: WeAct STM32F411CEU6 BlackPill 核心板 Debug调试器: ST-LINK V2: ST-LINK V2 S…...
# 主流大语言模型安全性测试(二):英文越狱提示词下的表现与分析
主流大语言模型安全性测试(二):英文越狱提示词下的表现与分析 在上一篇文章中,我们对多个主流大语言模型(LLM)进行了中文诱导性提示词的越狱测试,评估其是否能够在面对非法、有害或危险内容请求…...
SAP 在 AI 与数据统一平台上的战略转向
在 2025 年 SAP Sapphire 大会上,SAP 展示了其最新的产品战略和技术整合方向,与以往不同的是,今年的讨论更加务实、聚焦客户实际需求。SAP 强调,ERP 的转型不再是“一刀切”或破坏性的,而是可以根据客户现状࿰…...

服务器磁盘空间被Docker容器日志占满处理方法
事发场景: 原本正常的服务停止运行了,查看时MQTT服务链接失败,查看对应的容器服务发现是EMQX镜像停止运行了,重启也是也报错无法正常运行,报错如下图: 报错日志中连续出现两个"no space left on devi…...

c++学习-this指针
1.基本概念 非静态成员函数都会默认传递this指针(静态成员函数属于类本身,不属于某个实例对象),方便访问对象对类成员变量和 成员函数。 2.基本使用 编译器实际处理类成员函数,this是第一个隐藏的参数,类…...

交易所系统攻坚:高并发撮合引擎与合规化金融架构设计
交易所系统攻坚:高并发撮合引擎与合规化金融架构设计 ——2025年数字资产交易平台的性能与合规双轮驱动 一、高并发撮合引擎:从微秒级延迟到百万TPS 核心架构设计 订单簿优化:数据结构创新:基于红黑树与链表混合存储,…...

OpenCV计算机视觉实战(10)——形态学操作详解
OpenCV计算机视觉实战(10)——形态学操作详解 0. 前言1. 腐蚀与膨胀1.1 为什么要做腐蚀与膨胀1.2 OpenCV 实现 2. 开运算与闭运算2.1 开运算与闭运算原理2.2 OpenCV 实现 3. 形态学梯度与骨架提取3.1 形态学梯度3.2 骨架提取 小结系列链接 0. 前言 形态…...
libiec61850 mms协议异步模式
之前项目中使用到libiec61850库,都是服务端开发。这次新的需求要接收服务端的遥测数据,这就涉及到客户端开发了。 客户端开发没搞过啊,挑战不少,但是人不就是通过战胜困难才成长的嘛。通过查看libiec61850的客户端API发现…...

[论文阅读] 人工智能 | 利用负信号蒸馏:用REDI框架提升LLM推理能力
【论文速读】利用负信号蒸馏:用REDI框架提升LLM推理能力 论文信息 arXiv:2505.24850 cs.LG cs.AI cs.CL Harnessing Negative Signals: Reinforcement Distillation from Teacher Data for LLM Reasoning Authors: Shuyao Xu, Cheng Peng, Jiangxuan Long, Weidi…...

基于 NXP + FPGA+Debian 高可靠性工业控制器解决方案
在工业系统开发中,**“稳定”**往往比“先进”更重要。设备一旦部署,生命周期动辄 5~10 年,系统重启或异常恢复成本高昂。 这时候,一套“值得托付”的软硬件组合,就显得尤为关键。 ✅ NXP —— 提供稳定、长期供货的工…...
CSS 选择器全解析:分组选择器/嵌套选择器,从基础到高级
一、CSS 选择器基础:从单个元素到多个元素 CSS 选择器是用来定位 HTML 元素的工具,就像 “元素的地址”。最基础的选择器有: 元素选择器(按标签名定位) css p { color: red; } /* 所有<p>标签 */ div { b…...
uniapp 对接腾讯云IM群公告功能
UniApp 实战:腾讯云IM群公告功能 一、前言 在即时通讯场景中,群公告是信息同步的重要渠道。本文将基于uniapp框架,结合腾讯云IM SDK,详细讲解如何实现群公告的发布、修改、历史记录查询等核心功能。 群公告的数据结构设计权限校…...

垂起固定翼无人机应用及技术分析
一、主要应用行业 1. 能源基础设施巡检 电力巡检:适用于超高压输电线路通道的快速巡查,实时回传数据提升智能运检效率。 油田管道监测:利用长航时特性(1.5-2小时)对大范围管道进行隐患排查,减少人力巡…...
Python Robot Framework【自动化测试框架】简介
销量过万TEEIS德国护膝夏天用薄款 优惠券冠生园 百花蜂蜜428g 挤压瓶纯蜂蜜巨奇严选 鞋子除臭剂360ml 多芬身体磨砂膏280g健70%-75%酒精消毒棉片湿巾1418cm 80片/袋3袋大包清洁食品用消毒 优惠券AIMORNY52朵红玫瑰永生香皂花同城配送非鲜花七夕情人节生日礼物送女友 热卖妙洁棉…...

vite配置@别名,以及如何让IDE智能提示路经
1.配置路径(vite.config.js) // vite.config.js import { defineConfig } from "vite"; import vue from "vitejs/plugin-vue"; import path from "path";// https://vite.dev/config/ export default defineConfig({server: {port: 8080,},plu…...
c#bitconverter操作,不同变量类型转byte数组
缘起:串口数据传输的基础是byte数组,write(buff,0,num)或者writeline(string),如果是字符串传输就是string变量就可以了,但是在modbus这类hex传递时,就要遇到转换了,拼凑byte数组时需要各种变量的值传递,解…...

【Linux】LInux下第一个程序:进度条
前言: 在前面的文章中我们学习了LInux的基础指令 【Linux】初见,基础指令-CSDN博客【Linux】初见,基础指令(续)-CSDN博客 学习了vim编辑器【Linux】vim编辑器_linux vim insert-CSDN博客 学习了gcc/g【Linux】编译器gc…...

RPA+AI:自动化办公机器人开发指南
RPAAI:自动化办公机器人开发指南 系统化学习人工智能网站(收藏):https://www.captainbed.cn/flu 文章目录 RPAAI:自动化办公机器人开发指南摘要引言技术融合路径1. 传感器层:多模态数据接入2. 决策层&…...
daz3d + PBRSkin (MDL)+ SSS
好的,我们来解释一下 Daz3D 中的 PBRSkin (MDL) Shader。 简单来说,PBRSkin (MDL) 是 Daz Studio 中一种基于物理渲染(PBR)技术、专门用于创建高度逼真人物皮肤效果的着色器(Shader)。 它利用 NVIDIA 的材…...
计算矩阵A和B的乘积
根据矩阵乘法规则,编程计算矩阵的乘积。函数fix_prod_ele()是基本方法编写,函数fix_prod_opt()是优化方法编写。 程序代码 #define N 3 #define M 4 typedef int fix_matrix1[N][M]; typedef int fix_matrix2[M][N]; int fix_prod_ele(f…...

Houdini POP入门学习05 - 物理属性
接下来随着教程学习碰撞部分,当粒子较为复杂或者下载了一些粒子模板进行修改时,会遇到一些较奇怪问题,如粒子穿透等,这些问题实际上可以通过调节参数解决。 hip资源文件:https://download.csdn.net/download/grayrail…...

每日Prompt:双重曝光
提示词 新中式,这幅图像将人体头像轮廓与山水中式建筑融为一体,双重曝光,体现了反思、内心平静以及人与自然相互联系的主题,靛蓝,水墨画,晕染,极简...
sendDefaultImpl call timeout(rocketmq)
rocketmq 连接异常 senddefaultimpl call timeout-腾讯云开发者社区-腾讯云 第一种情况: 修改broker 的配置如下,注意brokerIP1 这个配置必须有,不然 rocketmq-console 显示依然是内网地址 caused by: org.apache.rocketmq.remoting.excep…...

【LLM】多智能体系统 Why Do Multi-Agent LLM Systems Fail?
note 构建一个成功的 MAS,不仅仅是提升底层 LLM 的智能那么简单,它更像是在构建一个组织。如果组织结构、沟通协议、权责分配、质量控制流程设计不当,即使每个成员(智能体)都很“聪明”,整个系统也可能像一…...

CSS 定位:原理 + 场景 + 示例全解析
一. 什么是CSS定位? CSS中的position属性用于设置元素的定位方式,它决定了元素在页面中的"定位行为" 为什么需要定位? 常规布局(如 display: block)适用于主结构 定位适用于浮动按钮,弹出层,粘性标题等场景帮助我们精确控制元素在页面中的位置 二. 定位类型全…...

如何在没有 iTunes 的情况下备份 iPhone
我可以在没有 iTunes 的情况下将 iPhone 备份到电脑吗?虽然 iTunes 曾经是备份 iPhone 的主要方法,但它并不是 iOS 用户唯一的备份选项。您可以选择多种方便的替代方案来备份 iPhone,无需使用 iTunes。您可以在这里获得更灵活、更人性化的备份…...

如何把 Mac Finder 用得更顺手?——高效文件管理定制指南
系统梳理提升 Mac Finder 体验的实用设置与技巧,助你用更高效的方式管理文件。文末引出进阶选择 Path Finder。 阅读原文请转到:https://jimmysong.io/blog/customize-finder-for-efficiency/ 作为一个用 Mac 多年的用户,我始终觉得 Finder 虽…...
赋能大型语言模型与外部世界交互——函数调用的崛起
大型语言模型 (LLM) 近年来在自然语言处理领域取得了革命性的进展,展现出强大的文本理解、生成和对话能力。然而,这些模型在与外部实时数据源和动态系统交互方面存在固有的局限性 1。它们主要依赖于训练阶段学习到的静态知识,难以直接访问和利…...
04 Deep learning神经网络编程基础 梯度下降 --吴恩达
梯度下降在深度学习的应用 梯度下降是优化神经网络参数的核心算法,通过迭代调整参数最小化损失函数。 核心公式 参数更新规则: θ t + 1 = θ t − η ∇ J ( θ...

手拉手处理RuoYi脚手架常见文问题
若依前后端分离版开发入门 基础环境:JDK1.8mysqlRedisMavenVue 取消登录验证码 后端 修改ruoyi-ui项目中的login.vue 在ruoyi-ui项目>src>views中找到login.vue文件 1、注释验证码展示及录入部分 2、 注释code必填校验,默认验证码开关为false …...