ZephyrOS 嵌入式开发Black Pill V1.2之Debug调试器

news2025/6/8 15:12:55

版本和环境信息如下:

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.11

Copyright 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.11

Copyright 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, read
        http://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, read
        http://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 connections
    TargetName         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_swd

source [find target/stm32f4x.cfg]

reset_config srst_only

$_TARGETNAME configure -event gdb-attach {
	echo "Debugger attaching: halting execution"
	reset halt
	gdb_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, read
        http://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 connections
    TargetName         Type       Endian TapName            State
--  ------------------ ---------- ------ ------------------ ------------
 0* stm32f4x.cpu       hla_target little stm32f4x.cpu       halted

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 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, read
        http://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的窗口。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2404248.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

服务器磁盘空间被Docker容器日志占满处理方法

事发场景&#xff1a; 原本正常的服务停止运行了&#xff0c;查看时MQTT服务链接失败&#xff0c;查看对应的容器服务发现是EMQX镜像停止运行了&#xff0c;重启也是也报错无法正常运行&#xff0c;报错如下图&#xff1a; 报错日志中连续出现两个"no space left on devi…

c++学习-this指针

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

交易所系统攻坚:高并发撮合引擎与合规化金融架构设计

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

OpenCV计算机视觉实战(10)——形态学操作详解

OpenCV计算机视觉实战&#xff08;10&#xff09;——形态学操作详解 0. 前言1. 腐蚀与膨胀1.1 为什么要做腐蚀与膨胀1.2 OpenCV 实现 2. 开运算与闭运算2.1 开运算与闭运算原理2.2 OpenCV 实现 3. 形态学梯度与骨架提取3.1 形态学梯度3.2 骨架提取 小结系列链接 0. 前言 形态…

[论文阅读] 人工智能 | 利用负信号蒸馏:用REDI框架提升LLM推理能力

【论文速读】利用负信号蒸馏&#xff1a;用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 高可靠性工业控制器解决方案

在工业系统开发中&#xff0c;**“稳定”**往往比“先进”更重要。设备一旦部署&#xff0c;生命周期动辄 5~10 年&#xff0c;系统重启或异常恢复成本高昂。 这时候&#xff0c;一套“值得托付”的软硬件组合&#xff0c;就显得尤为关键。 ✅ NXP —— 提供稳定、长期供货的工…

垂起固定翼无人机应用及技术分析

一、主要应用行业 1. 能源基础设施巡检 电力巡检&#xff1a;适用于超高压输电线路通道的快速巡查&#xff0c;实时回传数据提升智能运检效率。 油田管道监测&#xff1a;利用长航时特性&#xff08;1.5-2小时&#xff09;对大范围管道进行隐患排查&#xff0c;减少人力巡…

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…

【Linux】LInux下第一个程序:进度条

前言&#xff1a; 在前面的文章中我们学习了LInux的基础指令 【Linux】初见&#xff0c;基础指令-CSDN博客【Linux】初见&#xff0c;基础指令&#xff08;续&#xff09;-CSDN博客 学习了vim编辑器【Linux】vim编辑器_linux vim insert-CSDN博客 学习了gcc/g【Linux】编译器gc…

RPA+AI:自动化办公机器人开发指南

RPAAI&#xff1a;自动化办公机器人开发指南 系统化学习人工智能网站&#xff08;收藏&#xff09;&#xff1a;https://www.captainbed.cn/flu 文章目录 RPAAI&#xff1a;自动化办公机器人开发指南摘要引言技术融合路径1. 传感器层&#xff1a;多模态数据接入2. 决策层&…

计算矩阵A和B的乘积

根据矩阵乘法规则&#xff0c;编程计算矩阵的乘积。函数fix_prod_ele()是基本方法编写&#xff0c;函数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 - 物理属性

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

每日Prompt:双重曝光

提示词 新中式&#xff0c;这幅图像将人体头像轮廓与山水中式建筑融为一体&#xff0c;双重曝光&#xff0c;体现了反思、内心平静以及人与自然相互联系的主题&#xff0c;靛蓝&#xff0c;水墨画&#xff0c;晕染&#xff0c;极简

【LLM】多智能体系统 Why Do Multi-Agent LLM Systems Fail?

note 构建一个成功的 MAS&#xff0c;不仅仅是提升底层 LLM 的智能那么简单&#xff0c;它更像是在构建一个组织。如果组织结构、沟通协议、权责分配、质量控制流程设计不当&#xff0c;即使每个成员&#xff08;智能体&#xff09;都很“聪明”&#xff0c;整个系统也可能像一…

CSS 定位:原理 + 场景 + 示例全解析

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

如何在没有 iTunes 的情况下备份 iPhone

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

如何把 Mac Finder 用得更顺手?——高效文件管理定制指南

系统梳理提升 Mac Finder 体验的实用设置与技巧&#xff0c;助你用更高效的方式管理文件。文末引出进阶选择 Path Finder。 阅读原文请转到&#xff1a;https://jimmysong.io/blog/customize-finder-for-efficiency/ 作为一个用 Mac 多年的用户&#xff0c;我始终觉得 Finder 虽…

手拉手处理RuoYi脚手架常见文问题

若依前后端分离版开发入门 基础环境&#xff1a;JDK1.8mysqlRedisMavenVue 取消登录验证码 后端 修改ruoyi-ui项目中的login.vue 在ruoyi-ui项目>src>views中找到login.vue文件 1、注释验证码展示及录入部分 2、 注释code必填校验&#xff0c;默认验证码开关为false …

使用柏林噪声生成随机地图

简单介绍柏林噪声 柏林噪声&#xff08;Perlin Noise&#xff09;是一种由 Ken Perlin 在1983年提出的梯度噪声&#xff08;Gradient Noise&#xff09;算法&#xff0c;用于生成自然、连续的随机值。它被广泛用于计算机图形学中模拟自然现象&#xff08;如地形、云层、火焰等…

C++课设:实现简易文件加密工具(凯撒密码、异或加密、Base64编码)

名人说&#xff1a;路漫漫其修远兮&#xff0c;吾将上下而求索。—— 屈原《离骚》 创作者&#xff1a;Code_流苏(CSDN)&#xff08;一个喜欢古诗词和编程的Coder&#x1f60a;&#xff09; 专栏介绍&#xff1a;《编程项目实战》 目录 一、初识文件加密&#xff1a;为什么需要…