当前位置: 首页 > news >正文

Make + OpenOCD 完成STM32构建+烧录

目录

前言

准备工作

开始操作

后记


前言

       前两篇通过VSCode+STM32CubeMx跑通了用EIDE构建+烧录。为今天的工作打下了非常棒的基础!今天来尝试手动构建+烧录。

准备工作

  • 安装Make,我这次用的是Win10,所以需要安装一个新朋友 msys2 ,用这个装Make
pacman -Syu
pacman -S make
  • 准备好makefile文件,为啥用STM32CubeMx,一是生成基础代码,二就是能自动生成这个文件啦,就改了个BUILD_DIR,其他一点都没动,很奇怪它自动生成的并没有把所有的文件引入(参看<真.从“零”搞 VSCode+STM32CubeMx+C <1>构建>,需要手动例外几个文件)
##########################################################################################################################
# File automatically-generated by tool: [projectgenerator] version: [4.6.0-B36] date: [Thu Apr 24 16:21:06 CST 2025]
########################################################################################################################### ------------------------------------------------
# Generic Makefile (based on gcc)
#
# ChangeLog :
#	2017-02-10 - Several enhancements + project update mode
#   2015-07-22 - first version
# ------------------------------------------------######################################
# target
######################################
TARGET = HelloStm32######################################
# building variables
######################################
# debug build?
DEBUG = 1
# optimization
OPT = -Og#######################################
# paths
#######################################
# Build path
BUILD_DIR = build_mk######################################
# source
######################################
# C sources
C_SOURCES =  \
Core/Src/main.c \
Core/Src/stm32f1xx_it.c \
Core/Src/stm32f1xx_hal_msp.c \
Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.c \
Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.c \
Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.c \
Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.c \
Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.c \
Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.c \
Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.c \
Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.c \
Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.c \
Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.c \
Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.c \
Core/Src/system_stm32f1xx.c  # ASM sources
ASM_SOURCES =  \
startup_stm32f103xb.s# ASM sources
ASMM_SOURCES = #######################################
# binaries
#######################################
PREFIX = arm-none-eabi-
# The gcc compiler bin path can be either defined in make command via GCC_PATH variable (> make GCC_PATH=xxx)
# either it can be added to the PATH environment variable.
ifdef GCC_PATH
CC = $(GCC_PATH)/$(PREFIX)gcc
AS = $(GCC_PATH)/$(PREFIX)gcc -x assembler-with-cpp
CP = $(GCC_PATH)/$(PREFIX)objcopy
SZ = $(GCC_PATH)/$(PREFIX)size
else
CC = $(PREFIX)gcc
AS = $(PREFIX)gcc -x assembler-with-cpp
CP = $(PREFIX)objcopy
SZ = $(PREFIX)size
endif
HEX = $(CP) -O ihex
BIN = $(CP) -O binary -S#######################################
# CFLAGS
#######################################
# cpu
CPU = -mcpu=cortex-m3# fpu
# NONE for Cortex-M0/M0+/M3# float-abi# mcu
MCU = $(CPU) -mthumb $(FPU) $(FLOAT-ABI)# macros for gcc
# AS defines
AS_DEFS = # C defines
C_DEFS =  \
-DUSE_HAL_DRIVER \
-DSTM32F103xB# AS includes
AS_INCLUDES = # C includes
C_INCLUDES =  \
-ICore/Inc \
-IDrivers/STM32F1xx_HAL_Driver/Inc/Legacy \
-IDrivers/STM32F1xx_HAL_Driver/Inc \
-IDrivers/CMSIS/Device/ST/STM32F1xx/Include \
-IDrivers/CMSIS/Include# compile gcc flags
ASFLAGS = $(MCU) $(AS_DEFS) $(AS_INCLUDES) $(OPT) -Wall -fdata-sections -ffunction-sectionsCFLAGS += $(MCU) $(C_DEFS) $(C_INCLUDES) $(OPT) -Wall -fdata-sections -ffunction-sectionsifeq ($(DEBUG), 1)
CFLAGS += -g -gdwarf-2
endif# Generate dependency information
CFLAGS += -MMD -MP -MF"$(@:%.o=%.d)"#######################################
# LDFLAGS
#######################################
# link script
LDSCRIPT = STM32F103XX_FLASH.ld# libraries
LIBS = -lc -lm -lnosys 
LIBDIR = 
LDFLAGS = $(MCU) -specs=nano.specs -T$(LDSCRIPT) $(LIBDIR) $(LIBS) -Wl,-Map=$(BUILD_DIR)/$(TARGET).map,--cref -Wl,--gc-sections# default action: build all
all: $(BUILD_DIR)/$(TARGET).elf $(BUILD_DIR)/$(TARGET).hex $(BUILD_DIR)/$(TARGET).bin#######################################
# build the application
#######################################
# list of objects
OBJECTS = $(addprefix $(BUILD_DIR)/,$(notdir $(C_SOURCES:.c=.o)))
vpath %.c $(sort $(dir $(C_SOURCES)))
# list of ASM program objects
OBJECTS += $(addprefix $(BUILD_DIR)/,$(notdir $(ASM_SOURCES:.s=.o)))
vpath %.s $(sort $(dir $(ASM_SOURCES)))
OBJECTS += $(addprefix $(BUILD_DIR)/,$(notdir $(ASMM_SOURCES:.S=.o)))
vpath %.S $(sort $(dir $(ASMM_SOURCES)))$(BUILD_DIR)/%.o: %.c Makefile | $(BUILD_DIR) $(CC) -c $(CFLAGS) -Wa,-a,-ad,-alms=$(BUILD_DIR)/$(notdir $(<:.c=.lst)) $< -o $@$(BUILD_DIR)/%.o: %.s Makefile | $(BUILD_DIR)$(AS) -c $(CFLAGS) $< -o $@
$(BUILD_DIR)/%.o: %.S Makefile | $(BUILD_DIR)$(AS) -c $(CFLAGS) $< -o $@$(BUILD_DIR)/$(TARGET).elf: $(OBJECTS) Makefile$(CC) $(OBJECTS) $(LDFLAGS) -o $@$(SZ) $@$(BUILD_DIR)/%.hex: $(BUILD_DIR)/%.elf | $(BUILD_DIR)$(HEX) $< $@$(BUILD_DIR)/%.bin: $(BUILD_DIR)/%.elf | $(BUILD_DIR)$(BIN) $< $@	$(BUILD_DIR):mkdir $@		#######################################
# clean up
#######################################
clean:-rm -fR $(BUILD_DIR)#######################################
# dependencies
#######################################
-include $(wildcard $(BUILD_DIR)/*.d)# *** EOF ***

开始今天的菜系

  • 进入到项目根目录,直接make,可以看到最后生成了HelloStm32.bin
PS D:\A_WorkPlaces\C\NewProject1> makearm-none-eabi-gcc -c -mcpu=cortex-m3 -mthumb   -DUSE_HAL_DRIVER -DSTM32F103xB -ICore/Inc -IDrivers/STM32F1xx_HAL_Driver/Inc/Legacy -IDrivers/STM32F1xx_HAL_Driver/Inc -IDrivers/CMSIS/Device/ST/STM32F1xx/Include -IDrivers/CMSIS/Include -Og -Wall -fdata-sections -ffunction-sections -g -gdwarf-2 -MMD -MP -MF"build_mk/main.d" -Wa,-a,-ad,-alms=build_mk/main.lst Core/Src/main.c -o build_mk/main.o
arm-none-eabi-gcc -c -mcpu=cortex-m3 -mthumb   -DUSE_HAL_DRIVER -DSTM32F103xB -ICore/Inc -IDrivers/STM32F1xx_HAL_Driver/Inc/Legacy -IDrivers/STM32F1xx_HAL_Driver/Inc -IDrivers/CMSIS/Device/ST/STM32F1xx/Include -IDrivers/CMSIS/Include -Og -Wall -fdata-sections -ffunction-sections -g -gdwarf-2 -MMD -MP -MF"build_mk/stm32f1xx_it.d" -Wa,-a,-ad,-alms=build_mk/stm32f1xx_it.lst Core/Src/stm32f1xx_it.c -o build_mk/stm32f1xx_it.o
arm-none-eabi-gcc -c -mcpu=cortex-m3 -mthumb   -DUSE_HAL_DRIVER -DSTM32F103xB -ICore/Inc -IDrivers/STM32F1xx_HAL_Driver/Inc/Legacy -IDrivers/STM32F1xx_HAL_Driver/Inc -IDrivers/CMSIS/Device/ST/STM32F1xx/Include -IDrivers/CMSIS/Include -Og -Wall -fdata-sections -ffunction-sections -g -gdwarf-2 -MMD -MP -MF"build_mk/stm32f1xx_hal_msp.d" -Wa,-a,-ad,-alms=build_mk/stm32f1xx_hal_msp.lst Core/Src/stm32f1xx_hal_msp.c -o build_mk/stm32f1xx_hal_msp.o
arm-none-eabi-gcc -c -mcpu=cortex-m3 -mthumb   -DUSE_HAL_DRIVER -DSTM32F103xB -ICore/Inc -IDrivers/STM32F1xx_HAL_Driver/Inc/Legacy -IDrivers/STM32F1xx_HAL_Driver/Inc -IDrivers/CMSIS/Device/ST/STM32F1xx/Include -IDrivers/CMSIS/Include -Og -Wall -fdata-sections -ffunction-sections -g -gdwarf-2 -MMD -MP -MF"build_mk/stm32f1xx_hal_gpio_ex.d" -Wa,-a,-ad,-alms=build_mk/stm32f1xx_hal_gpio_ex.lst Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.c -o build_mk/stm32f1xx_hal_gpio_ex.o
arm-none-eabi-gcc -c -mcpu=cortex-m3 -mthumb   -DUSE_HAL_DRIVER -DSTM32F103xB -ICore/Inc -IDrivers/STM32F1xx_HAL_Driver/Inc/Legacy -IDrivers/STM32F1xx_HAL_Driver/Inc -IDrivers/CMSIS/Device/ST/STM32F1xx/Include -IDrivers/CMSIS/Include -Og -Wall -fdata-sections -ffunction-sections -g -gdwarf-2 -MMD -MP -MF"build_mk/stm32f1xx_hal.d" -Wa,-a,-ad,-alms=build_mk/stm32f1xx_hal.lst Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.c -o build_mk/stm32f1xx_hal.o
arm-none-eabi-gcc -c -mcpu=cortex-m3 -mthumb   -DUSE_HAL_DRIVER -DSTM32F103xB -ICore/Inc -IDrivers/STM32F1xx_HAL_Driver/Inc/Legacy -IDrivers/STM32F1xx_HAL_Driver/Inc -IDrivers/CMSIS/Device/ST/STM32F1xx/Include -IDrivers/CMSIS/Include -Og -Wall -fdata-sections -ffunction-sections -g -gdwarf-2 -MMD -MP -MF"build_mk/stm32f1xx_hal_rcc.d" -Wa,-a,-ad,-alms=build_mk/stm32f1xx_hal_rcc.lst Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.c -o build_mk/stm32f1xx_hal_rcc.o
arm-none-eabi-gcc -c -mcpu=cortex-m3 -mthumb   -DUSE_HAL_DRIVER -DSTM32F103xB -ICore/Inc -IDrivers/STM32F1xx_HAL_Driver/Inc/Legacy -IDrivers/STM32F1xx_HAL_Driver/Inc -IDrivers/CMSIS/Device/ST/STM32F1xx/Include -IDrivers/CMSIS/Include -Og -Wall -fdata-sections -ffunction-sections -g -gdwarf-2 -MMD -MP -MF"build_mk/stm32f1xx_hal_rcc_ex.d" -Wa,-a,-ad,-alms=build_mk/stm32f1xx_hal_rcc_ex.lst Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.c -o build_mk/stm32f1xx_hal_rcc_ex.o
arm-none-eabi-gcc -c -mcpu=cortex-m3 -mthumb   -DUSE_HAL_DRIVER -DSTM32F103xB -ICore/Inc -IDrivers/STM32F1xx_HAL_Driver/Inc/Legacy -IDrivers/STM32F1xx_HAL_Driver/Inc -IDrivers/CMSIS/Device/ST/STM32F1xx/Include -IDrivers/CMSIS/Include -Og -Wall -fdata-sections -ffunction-sections -g -gdwarf-2 -MMD -MP -MF"build_mk/stm32f1xx_hal_gpio.d" -Wa,-a,-ad,-alms=build_mk/stm32f1xx_hal_gpio.lst Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.c -o build_mk/stm32f1xx_hal_gpio.o
arm-none-eabi-gcc -c -mcpu=cortex-m3 -mthumb   -DUSE_HAL_DRIVER -DSTM32F103xB -ICore/Inc -IDrivers/STM32F1xx_HAL_Driver/Inc/Legacy -IDrivers/STM32F1xx_HAL_Driver/Inc -IDrivers/CMSIS/Device/ST/STM32F1xx/Include -IDrivers/CMSIS/Include -Og -Wall -fdata-sections -ffunction-sections -g -gdwarf-2 -MMD -MP -MF"build_mk/stm32f1xx_hal_dma.d" -Wa,-a,-ad,-alms=build_mk/stm32f1xx_hal_dma.lst Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.c -o build_mk/stm32f1xx_hal_dma.o
arm-none-eabi-gcc -c -mcpu=cortex-m3 -mthumb   -DUSE_HAL_DRIVER -DSTM32F103xB -ICore/Inc -IDrivers/STM32F1xx_HAL_Driver/Inc/Legacy -IDrivers/STM32F1xx_HAL_Driver/Inc -IDrivers/CMSIS/Device/ST/STM32F1xx/Include -IDrivers/CMSIS/Include -Og -Wall -fdata-sections -ffunction-sections -g -gdwarf-2 -MMD -MP -MF"build_mk/stm32f1xx_hal_cortex.d" -Wa,-a,-ad,-alms=build_mk/stm32f1xx_hal_cortex.lst Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.c -o build_mk/stm32f1xx_hal_cortex.o
arm-none-eabi-gcc -c -mcpu=cortex-m3 -mthumb   -DUSE_HAL_DRIVER -DSTM32F103xB -ICore/Inc -IDrivers/STM32F1xx_HAL_Driver/Inc/Legacy -IDrivers/STM32F1xx_HAL_Driver/Inc -IDrivers/CMSIS/Device/ST/STM32F1xx/Include -IDrivers/CMSIS/Include -Og -Wall -fdata-sections -ffunction-sections -g -gdwarf-2 -MMD -MP -MF"build_mk/stm32f1xx_hal_pwr.d" -Wa,-a,-ad,-alms=build_mk/stm32f1xx_hal_pwr.lst Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.c -o build_mk/stm32f1xx_hal_pwr.o
arm-none-eabi-gcc -c -mcpu=cortex-m3 -mthumb   -DUSE_HAL_DRIVER -DSTM32F103xB -ICore/Inc -IDrivers/STM32F1xx_HAL_Driver/Inc/Legacy -IDrivers/STM32F1xx_HAL_Driver/Inc -IDrivers/CMSIS/Device/ST/STM32F1xx/Include -IDrivers/CMSIS/Include -Og -Wall -fdata-sections -ffunction-sections -g -gdwarf-2 -MMD -MP -MF"build_mk/stm32f1xx_hal_flash.d" -Wa,-a,-ad,-alms=build_mk/stm32f1xx_hal_flash.lst Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.c -o build_mk/stm32f1xx_hal_flash.o
arm-none-eabi-gcc -c -mcpu=cortex-m3 -mthumb   -DUSE_HAL_DRIVER -DSTM32F103xB -ICore/Inc -IDrivers/STM32F1xx_HAL_Driver/Inc/Legacy -IDrivers/STM32F1xx_HAL_Driver/Inc -IDrivers/CMSIS/Device/ST/STM32F1xx/Include -IDrivers/CMSIS/Include -Og -Wall -fdata-sections -ffunction-sections -g -gdwarf-2 -MMD -MP -MF"build_mk/stm32f1xx_hal_flash_ex.d" -Wa,-a,-ad,-alms=build_mk/stm32f1xx_hal_flash_ex.lst Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.c -o build_mk/stm32f1xx_hal_flash_ex.o
arm-none-eabi-gcc -c -mcpu=cortex-m3 -mthumb   -DUSE_HAL_DRIVER -DSTM32F103xB -ICore/Inc -IDrivers/STM32F1xx_HAL_Driver/Inc/Legacy -IDrivers/STM32F1xx_HAL_Driver/Inc -IDrivers/CMSIS/Device/ST/STM32F1xx/IL_Driver/Src/stm32f1xx_hal_exti.c -o build_mk/stm32f1xx_hal_exti.o
arm-none-eabi-gcc -c -mcpu=cortex-m3 -mthumb   -DUSE_HAL_DRIVER -DSTM32F103xB -ICore/Inc -IDrivers/STM32F1xx_HAL_Driver/Inc/Legacy -IDrivers/STM32F1xx_HAL_Driver/Inc -IDrivers/CMSIS/Device/ST/STM32F1xx/Include -IDrivers/CMSIS/Include -Og -Wall -fdata-sections -ffunction-sections -g -gdwarf-2 -MMD -MP -MF"build_mk/system_stm32f1xx.d" -Wa,-a,-ad,-alms=build_mk/system_stm32f1xx.lst Core/Src/system_stm32f1xx.c -o build_mk/system_stm32f1xx.o
arm-none-eabi-gcc -x assembler-with-cpp -c -mcpu=cortex-m3 -mthumb   -DUSE_HAL_DRIVER -DSTM32F103xB -ICore/Inc -IDrivers/STM32F1xx_HAL_Driver/Inc/Legacy -IDrivers/STM32F1xx_HAL_Driver/Inc -IDrivers/CMSIS/Device/ST/STM32F1xx/Include -IDrivers/CMSIS/Include -Og -Wall -fdata-sections -ffunction-sections -g -gdwarf-2 -MMD -MP -MF"build_mk/startup_stm32f103xb.d" startup_stm32f103xb.s -o build_mk/startup_stm32f103xb.o
arm-none-eabi-gcc build_mk/main.o build_mk/stm32f1xx_it.o build_mk/stm32f1xx_hal_msp.o build_mk/stm32f1xx_hal_gpio_ex.o build_mk/stm32f1xx_hal.o build_mk/stm32f1xx_hal_rcc.o build_mk/stm32f1xx_hal_rcc_ex.o build_mk/stm32f1xx_hal_gpio.o build_mk/stm32f1xx_hal_dma.o build_mk/stm32f1xx_hal_cortex.o build_mk/stm32f1xx_hal_pwr.o build_mk/stm32f1xx_hal_flash.o build_mk/stm32f1xx_hal_flash_ex.o build_mk/stm32f1xx_hal_exti.o build_mk/system_stm32f1xx.o build_mk/startup_stm32f103xb.o  -mcpu=cortex-m3 -mthumb   -specs=nano.specs -TSTM32F103XX_FLASH.ld  -lc -lm -lnosys  -Wl,-Map=build_mk/HelloStm32.map,--cref -Wl,--gc-sections -o build_mk/HelloStm32.elftext    data     bss     dec     hex filename3400      20    1572    4992    1380 build_mk/HelloStm32.elf
arm-none-eabi-objcopy -O ihex build_mk/HelloStm32.elf build_mk/HelloStm32.hex
arm-none-eabi-objcopy -O binary -S build_mk/HelloStm32.elf build_mk/HelloStm32.bin
  • 继续执行烧录命令,这里有个小插曲,需要指定下Flash基地址 0x08000000
PS D:\A_WorkPlaces\C\NewProject1> openocd -s . -f interface/cmsis-dap.cfg -f target/stm32f1x.cfg   -c "program build_mk/HelloStm32.bin 0x08000000 verify reset exit"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 : auto-selecting first available session transport "swd". To override use 'transport select <transport>'.
Info : CMSIS-DAP: SWD supported
Info : CMSIS-DAP: SWO-UART supported
Info : CMSIS-DAP: Atomic commands supported
Info : CMSIS-DAP: FW Version = 0253
Info : CMSIS-DAP: Serial# = 07000001005200534b0000084e593433a5a5a5a597969908
Info : CMSIS-DAP: Interface Initialised (SWD)
Info : SWCLK/TCK = 1 SWDIO/TMS = 1 TDI = 0 TDO = 0 nTRST = 0 nRESET = 1
Info : CMSIS-DAP: Interface ready
Info : clock speed 1000 kHz
Info : SWD DPIDR 0x1ba01477
Info : [stm32f1x.cpu] Cortex-M3 r1p1 processor detected
Info : [stm32f1x.cpu] target has 6 breakpoints, 4 watchpoints
Info : [stm32f1x.cpu] Examination succeed
Info : [stm32f1x.cpu] starting gdb server on 3333
Info : Listening on port 3333 for gdb connections
[stm32f1x.cpu] halted due to breakpoint, current mode: Thread
xPSR: 0x01000000 pc: 0x08000c68 msp: 0x20005000
** Programming Started **
Info : SWD DPIDR 0x1ba01477
Info : [stm32f1x.cpu] Cortex-M3 r1p1 processor detected
Info : [stm32f1x.cpu] target has 6 breakpoints, 4 watchpoints
Info : [stm32f1x.cpu] Examination succeed
Info : [stm32f1x.cpu] starting gdb server on 3333
Info : SWD DPIDR 0x1ba01477
Info : [stm32f1x.cpu] Cortex-M3 r1p1 processor detected
Info : SWD DPIDR 0x1ba01477
Info : [stm32f1x.cpu] Cortex-M3 r1p1 processor detected
Info : [stm32f1x.cpu] target has 6 breakpoints, 4 watchpoints
Info : [stm32f1x.cpu] Examination succeed
Info : [stm32f1x.cpu] starting gdb server on 3333
Info : Listening on port 3333 for gdb connections
[stm32f1x.cpu] halted due to breakpoint, current mode: Thread
xPSR: 0x01000000 pc: 0x08000c68 msp: 0x20005000
** Programming Started **
Info : device id = 0x20036410
Info : flash size = 64 KiB
Warn : Adding extra erase range, 0x08000d2c .. 0x08000fff
** Programming Finished **
** Verify Started **
** Verified OK **
** Resetting Target **
shutdown command invoked

后记

      今天比较顺利,接下来就要用到实战中啦。还可以继续把之前的openMV、Lvgl的坑尝试填一下,另外就是尝试把其他几个型号的STM32的板子,都打成可运行Micropython的固件包。不过makefile还是有必要再搞懂一些,还有CMAKE。

相关文章:

Make + OpenOCD 完成STM32构建+烧录

目录 前言 准备工作 开始操作 后记 前言 前两篇通过VSCodeSTM32CubeMx跑通了用EIDE构建烧录。为今天的工作打下了非常棒的基础&#xff01;今天来尝试手动构建烧录。 准备工作 安装Make&#xff0c;我这次用的是Win10&#xff0c;所以需要安装一个新朋友 msys2 &#xff0…...

Linux:进程间通信->命名管道

1. 命名管道 概念 是一种进程间通信(IPC)机制&#xff0c;能允许没有关联的两个进程进行数据交换。 由于匿名管道只能在有亲缘关系的父子进程间通信所以具有局限性&#xff0c;所以就要通过命名管道来对两个没有关系的进程进行通信。 命名管道是通过路径和文件名来使两个进…...

CS001-50-depth

目录 深度图 如何写入深度图 长什么样子 copy depth pass z反转 如何读取深度图&还原世界坐标 深度图 深度图&#xff0c;是记录离物体离摄像机最近的图。 如何写入深度图 深度图&#xff0c;在urp中&#xff0c;如果相机开启了需要深度图的话&#xff0c;会自动在…...

开源AI视频FramePack发布:6GB显卡本地运行

您现在可以在自己的笔记本电脑上免费生成完整的离线AI视频。 只有GPU和纯粹的创造力。 这到底是什么? 一个名为FramePack的新型离线AI视频生成器几天前在GitHub上发布 — 几乎没人在谈论它。这很奇怪,因为这个工具真的很厉害。 它允许您从静态图像和提示词在自己的机器上…...

P3309 [SDOI2014] 向量集 Solution

Description 有一个向量列表&#xff0c;初始为空&#xff0c;有 n n n 个操作分两种&#xff1a; add ⁡ ( x , y ) \operatorname{add}(x,y) add(x,y)&#xff1a;将向量 ( x , y ) (x,y) (x,y) 添加到列表末尾. query ⁡ ( x 0 , y 0 , l , r ) \operatorname{query}(x_0…...

深入探究 MySQL 架构:从查询到硬件

了解数据库的底层工作原理对于开发人员和系统架构师来说至关重要。在本指南中,我们将探索 MySQL 查询的奇妙旅程,从它离开应用程序的那一刻起,直到到达物理存储层——每个步骤都配有真实的示例。 旅程开始:应用层 当您的应用程序执行 SQL 查询时,它会启动一系列复杂的事件…...

matlab实现稀疏低秩去噪

稀疏低秩去噪的matlab代码&#xff0c;包括OMP算法与KSVD算法 IGARSS2013/cal_ssim.m , 6372 IGARSS2013/Compute_NLM_Matrix.m , 2004 IGARSS2013/FeatureSIM.m , 18790 IGARSS2013/KSVD_Matlab_ToolBox2/demo1.m , 1907 IGARSS2013/KSVD_Matlab_ToolBox2/demo2.m , 3679 IGA…...

泽润新能IPO隐忧:募资缩水2亿元,毛利率两连降,内控存瑕疵?

撰稿|行星 来源|贝多财经 又一家光伏企业&#xff0c;即将登陆资本市场。 近日&#xff0c;江苏泽润新能科技股份有限公司&#xff08;SZ: 301636&#xff0c;下称“泽润新能”&#xff09;对外发布了首次公开发行股票并在创业板上市的招股意向书&#xff0c;并于4月25日启动…...

20250426在ubuntu20.04.2系统上打包NanoPi NEO开发板的FriendlyCore系统刷机eMMC的固件

20250426在ubuntu20.04.2系统上打包NanoPi NEO开发板的FriendlyCore系统刷机eMMC的固件 2025/4/26 21:30 缘起&#xff1a;使用NanoPi NEO开发板&#xff0c;编译FriendlyCore系统&#xff0c;打包eMMC固件的时候报错。 1、在ubuntu14.04下git clone异常该如何处理呢&#xff…...

商用车与农用车电气/电子架构 --- 赋能智能车队管理与远程信息处理

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 钝感力的“钝”,不是木讷、迟钝,而是直面困境的韧劲和耐力,是面对外界噪音的通透淡然。 生活中有两种人,一种人格外在意别人的眼光;另一种人无论…...

Medical Image Nnalysis发表对抗多实例学习框架,基于病理切片进行生存分析

小罗碎碎念 在医学AI领域&#xff0c;全切片图像&#xff08;WSI&#xff09;的生存分析对疾病预后评估至关重要。 现有基于WSI的生存分析方法存在局限性&#xff0c;经典生存分析规则使模型只能给出事件发生时间的点估计&#xff0c;缺乏预测稳健性和可解释性&#xff1b;且全…...

Ubuntu20.04部署Dify(Docker方式)

Ubuntu20.04部署Dify&#xff08;Docker方式&#xff09; Ubuntu20.04 DifyInstall DockerInstall Docker ComposeRun DifyRunning Ollama 由于写这篇博客的时候电脑还没装输入法&#xff0c;所以先用半吊子英文顶着了…关于最后运行ollama的部分可以无视&#xff0c;因为我修改…...

常见的六种大语言模型微调框架

六大主流微调框架详细解析 框架简介优势劣势Hugging Face PEFT专注于「参数高效微调」&#xff08;LoRA、Prefix、Prompt-tuning等&#xff09;的小型库&#xff0c;直接挂在Transformers上用。简单稳定&#xff0c;兼容性好&#xff0c;文档丰富&#xff0c;适配各种小模型到中…...

高精度3D圆弧拟合 (C++)

本文的目的是实现高精度的3D圆弧拟合&#xff0c;若对精度要求不高&#xff0c;可使用PCL的圆拟合接口&#xff0c;参见 PCL拟合空间3D圆周 fit3DCircle-CSDN博客 ---------------------------------------------------------------------------------------------------------…...

WPF定义扩展属性和依赖属性

WPF扩展属性与依赖属性详解 一、依赖属性(Dependency Property)详解 1. 什么是依赖属性? 依赖属性是WPF框架的核心特性之一,它允许属性值依赖于: 父元素的属性值(继承)样式和模板动画数据绑定资源查找2. 依赖属性的特点 ​​属性值继承​​:子元素可以继承父元素的属性…...

微信小程序 - 根据经纬度打开导航

一、获取到指定的经纬度后 二、设置打开导航 onReady() {this.mapCtx wx.createMapContext(myMap)},openMap() {this.mapCtx.openMapApp({latitude: this.data.latitude,longitude: this.data.longitude,destination: this.data.destination,success: (res) > {console.log…...

WPF实现类似Microsoft Visual Studio2022界面效果及动态生成界面技术

WPF实现类似VS2022界面效果及动态生成界面技术 一、实现类似VS2022界面效果 1. 主窗口布局与主题 <!-- MainWindow.xaml --> <Window x:Class"VsStyleApp.MainWindow"xmlns"http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x…...

驱动开发(1)|鲁班猫rk356x内核编译,及helloworld驱动程序编译

前言 在进行驱动开发或内核定制时&#xff0c;编译内核源码是一个不可或缺的步骤。内核源码不仅为驱动模块的编译提供了必要的构建环境&#xff0c;还确保了驱动与操作系统内核之间的紧密兼容性。随着内核版本的不断更新&#xff0c;内核内部的数据结构、API接口或系统调用可能…...

深入剖析 Vue 组件:从基础到实践

引言 在前端开发领域&#xff0c;Vue.js 以其简洁易用和高效灵活的特点深受开发者喜爱。而 Vue 组件作为 Vue.js 的核心概念之一&#xff0c;是构建大型应用的基石。无论是简单的按钮、表单&#xff0c;还是复杂的页面布局、功能模块&#xff0c;都可以封装成组件&#xff0c;…...

C++武功秘籍 | 入门知识点

目录 0. 前言 1. C的第一个程序 2. 域 2.1 分类 2.2 作用 2.3 命名空间 2.3.1 定义 2.3.2 namespace概念 2.3.3 使用 3. 输入和输出 3.1 3.2 cin 3.3 cout 3.4 endl 4. 缺省参数 4.1 定义 4.2 分类 4.3 特点 5. 函数重载 5.1 定义 5.2 类型分类 5.2.1.参数类型不同 5.2.2. 参数…...

[官方IP] Shift RAM

Xilinx Shift RAM IP (PG122) 详细介绍 概述 Xilinx Shift RAM IP 是 AMD Xilinx 提供的一个 LogiCORE™ IP 核&#xff0c;用于在 FPGA 中实现高效的移位寄存器&#xff08;Shift Register&#xff09;。该 IP 核利用 FPGA 的分布式 RAM&#xff08;Distributed RAM&#xf…...

Trae国际版+BrowserTools MCP yyds!!!

这是为您的博客优化的版本&#xff0c;结构更清晰、痛点更突出&#xff0c;并增加了技术细节和用户价值&#xff1a; &#x1f4e2;《告别手动抓狂&#xff01;Trae国际版BrowserTools MCP 实现前端错误调试自动化》&#x1f680; 作为前端开发者&#xff0c;你是否经历过这些…...

Kdenlive 中的变形、畸变、透视相关功能

Kdenlive 中的变形、畸变、透视相关功能 flyfish Kdenlive 是一款开源、跨平台的非线性视频编辑软件&#xff0c;支持 Windows、macOS 和 Linux 系统. 滚动 通常指让画面内容&#xff08;如字幕、图像&#xff09;沿特定方向&#xff08;垂直或水平&#xff09;滚动显示。 用于…...

蓝桥杯 8. 移动距离

移动距离 原题目链接 题目描述 X 星球居民小区的楼房全是一样的&#xff0c;并且按矩阵样式排列。楼房的编号为 1, 2, 3, ⋯⋯。 当排满一行时&#xff0c;从下一行相邻的楼往反方向排号。 例如&#xff0c;当小区排号宽度为 6 时&#xff0c;排列如下&#xff1a; 1 2 …...

2025.04.26-美团春招笔试题-第三题

📌 点击直达笔试专栏 👉《大厂笔试突围》 💻 春秋招笔试突围在线OJ 👉 笔试突围OJ 03. 树上路径权值递增 问题描述 LYA正在开发一款基于树的图形渲染引擎,她需要实现一种特殊的路径增强效果。在这个效果中,她需要沿着树上的简单路径为节点赋予递增的权值增益。 …...

c++_csp-j算法 (5)

动态规划 介绍 动态规划(Dynamic Programming)是一种常用的解决优化问题的算法设计技术,常用于解决具有重叠子问题和最优子结构性质的问题。动态规划算法通过将问题划分为子问题,解决子问题并将子问题的解保存起来,最终构建出原问题的解。在本节中,我们将详细介绍动态规…...

力扣2444. 统计定界子数组的数目:Java三种解法详解

力扣2444. 统计定界子数组的数目&#xff1a;Java三种解法详解 题目描述 给定整数数组 nums 和两个整数 minK 和 maxK&#xff0c;统计满足以下条件的子数组数目&#xff1a; 子数组的最小值等于 minK&#xff1b;子数组的最大值等于 maxK。 示例&#xff1a; 输入&#xf…...

安全生产知识竞赛宣传口号160句

1. 安全生产是责任&#xff0c;每个人都有责任 2. 安全生产是保障&#xff0c;让我们远离危险 3. 安全生产是团结&#xff0c;共同守护每一天 4. 注重安全&#xff0c;守护明天 5. 安全生产无小事&#xff0c;关乎千家万户 6. 安全第一&#xff0c;人人有责 7. 安全生产无差别&…...

【Hive入门】Hive动态分区与静态分区:使用场景与性能对比完全指南

目录 1 Hive分区技术概述 2 静态分区详解 2.1 静态分区工作原理 2.2 使用场景 2.3 示例 3 动态分区深度解析 3.1 动态分区执行流程 3.2 使用场景 3.3 示例 4 使用场景对比 4.1 场景选择 5 性能对比与优化 5.1 插入性能 5.2 查询性能 5.3 小文件问题 6 最佳实践 6.1 混合分区策略…...

6.1腾讯技术岗2025面试趋势前瞻:大模型、云原生与安全隐私新动向

2025年腾讯技术岗面试趋势前瞻&#xff1a;大模型、云原生与安全隐私新动向 随着AI技术与云计算的深度融合&#xff0c;腾讯校招技术岗面试正呈现出三大核心趋势&#xff1a;AI大模型应用深化、云原生技术迭代加速、安全隐私技术刚需化。本文结合腾讯2025年最新技术布局&#…...

探秘卷积神经网络:深度学习的图像识别利器

在深度学习领域&#xff0c;卷积神经网络&#xff08;Convolutional Neural Networks&#xff0c;CNN&#xff09;是图像识别任务的关键技术。它的起源可以追溯到 20 世纪 80 - 90 年代&#xff0c;但受限于当时的软硬件条件&#xff0c;其发展一度停滞。随着深度学习理论的不断…...

x修改ssh版本号9.9可以躲过漏洞扫描器扫描

1. 查看当前系统的ssh版本号 ssh -V sshd -V 2. 查看ssh和sshd的位置 which ssh which sshd3. 查看ssh版本号有关的字符串 strings /usr/bin/ssh | grep OpenSSH strings /usr/sbin/sshd | grep OpenSSH4. 备份 cp /usr/bin/ssh /usr/bin/ssh.bak cp /usr/sbin/s…...

django之账号管理功能

账号管理功能 目录 1.账号管理页面 2.新增账号 3.修改账号 4.账号重置密码 5.删除账号功能 6.所有代码展示集合 7.运行结果 这一片文章, 我们需要新增账号管理功能, 今天我们写到的代码, 基本上都是用到以前所过的知识, 不过也有需要注意的细节。 一、账号管理界面 …...

Java24 抗量子加密:后量子时代的安全基石

一、量子计算威胁与 Java 的应对 随着量子计算机的快速发展&#xff0c;传统加密算法面临前所未有的挑战。Shor 算法可在多项式时间内破解 RSA、ECC 等公钥加密体系&#xff0c;而 Grover 算法能将对称加密的暴力破解效率提升至平方根级别。据 NIST 预测&#xff0c;具备实用价…...

ssm乡村合作社商贸网站设计与实现(源码+lw+部署文档+讲解),源码可白嫖!

摘要 当今社会进入了科技进步、经济社会快速发展的新时代。国际信息和学术交流也不断加强&#xff0c;计算机技术对经济社会发展和人民生活改善的影响也日益突出&#xff0c;人类的生存和思考方式也产生了变化。传统乡村合作社商贸管理采取了人工的管理方法&#xff0c;但这种…...

多线程(1)——认识线程

目录 概念线程是什么为什么要有线程进程和线程的区别Java的线程 和 操作系统线程 的关系 创建线程方法1&#xff1a;继承Thread 类run和start方法 方法2&#xff1a;实现Runnable 接口方法1和方法2的区别 方法3&#xff1a;通过匿名内部类继承Thread方法4&#xff1a;通过匿名内…...

CSS3布局方式介绍

CSS3布局方式介绍 CSS3布局&#xff08;Layout&#xff09;系统是现代网页设计中用于构建页面结构和控制元素排列的一组强大工具。CSS3提供了多种布局方式&#xff0c;每种方式都有其适用场景&#xff0c;其中最常用的是Flexbox和CSS Grid。 先看传统上几种布局方式&#xff…...

4.换行和续写

一.FileOutputStream写出数据的两个小问题&#xff1a; 问题一&#xff1a;换行 假设在本地文件中要输出数据aweihaoshuai 666&#xff0c;在输出这个数据时要换行写出&#xff0c;如下图&#xff1a; 问题二&#xff1a;续写 假设在一个文本文件中已经存在数据aweihaoshuai…...

【数据结构与算法】从完全二叉树到堆再到优先队列

完全二叉树 CBT 设二叉树的深度为 h , 若非最底层的其他各层的节点数都达到最大个数 , 最底层 h 的所有节点都连续集中在左侧的二叉树叫做 完全二叉树 . 特点 对任意节点 , 其右分支下的叶子节点的最底层为 L , 则其左分支下的叶子节点的最低层一定是 L 或 L 1 .完全二叉树…...

冯·诺依曼与哈佛架构CPU的时序对比

以下是哈佛架构与冯诺依曼架构的时序对比及具体芯片实现案例的详细解析: 一、时序波形对比 1. 冯诺依曼架构时序 典型操作流程(读取指令后读取数据) 时钟周期 | 操作步骤 ---------------------------------------- T1 | 地址总线发送指令地址 T2 | 存储器通过…...

【漫话机器学习系列】225.张量(Tensors)

深度学习中的张量&#xff08;Tensor&#xff09;到底是什么&#xff1f;一文彻底讲清楚&#xff01; 在机器学习和深度学习领域&#xff0c;无论是使用 TensorFlow、PyTorch 还是其他框架&#xff0c;我们都会频繁遇到一个术语&#xff1a;张量&#xff08;Tensor&#xff09…...

前端开发中列表无限加载功能的实现与优化

在如今的 Web 应用开发中&#xff0c;为了给用户提供更加流畅、高效的体验&#xff0c;许多应用都会采用列表无限加载的技术&#xff0c;比如常见的社交媒体动态列表、电商商品列表等。 下面&#xff0c;我将结合实际项目&#xff0c;详细介绍列表无限加载功能的实现过程。 一…...

搜广推校招面经八十二

一、L1 和 L2 正则化的区别&#xff1f;对数据分布有什么要求&#xff0c;它们都能防止过拟合吗&#xff1f; 1.1. L1 与 L2 正则化的区别 特性L1 正则化&#xff08;Lasso&#xff09;L2 正则化&#xff08;Ridge&#xff09;正则项λ * ∑|wᵢ| λ ∗ ∑ ( w i 2 ) λ * ∑…...

机器学习——朴素贝叶斯法运用

一、朴素贝叶斯法 1.1 基本概念 朴素贝叶斯法是一种基于贝叶斯定理的简单概率分类方法&#xff0c;它假设特征之间相互独立。它适用于分类问题&#xff0c;尤其是在文本分类中表现良好。其核心思想是通过考虑各个特征的概率来预测分类&#xff08;即对于给出的待分类样本&am…...

内存池管理项目——面试题总结

一.项目描述 项⽬概述&#xff1a;本项⽬通过实现⾸次拟合法和伙伴系统算法&#xff0c;完成对内存池的管理&#xff0c;旨在为程序提供⾼效、合理的内存分配与回收机制&#xff0c;优化内存使⽤效 率。 主要内容及技术&#xff1a; ⾸次拟合法实现&#xff1a;定义WORD结构体…...

基于Python+Neo4j实现新冠信息挖掘系统

软件说明书 一、引言 便携本使用说明的目的是充分叙述本软件所能实现的功能及运行环境&#xff0c;以便使用者了解本软件的使用范围和使用方法&#xff0c;并为软件的维护和更新提供必要的信息。 二、软件概述 2.1软件简介 新型冠状病毒肺炎肆虐全球&#xff0c;给人们的健…...

深入浅出理解并应用自然语言处理(NLP)中的 Transformer 模型

1 引言 随着信息技术的飞速发展&#xff0c;自然语言处理&#xff08;Natural Language Processing, NLP&#xff09;作为人工智能领域的一个重要分支&#xff0c;已经取得了长足的进步。从早期基于规则的方法到如今的深度学习技术&#xff0c;NLP 正在以前所未有的速度改变着我…...

AEB法规升级后的市场预测与分析:技术迭代、政策驱动与产业变革

文章目录 一、政策驱动&#xff1a;全球法规升级倒逼市场扩容二、技术迭代&#xff1a;从“基础防护”到“场景全覆盖”三、市场格局&#xff1a;竞争加剧与生态重构四、挑战与未来展望五、投资建议结语 近年来&#xff0c;全球汽车安全法规的加速升级正深刻重塑AEB&#xff08…...

《代码之美:静态分析工具与 CI 集成详解》

《代码之美:静态分析工具与 CI 集成详解》 引言 在现代软件开发的快节奏环境中,代码质量和效率始终是开发者关注的核心。无论您是初学者,还是经验丰富的资深开发者,一个强大的工具链都能让您如虎添翼。而 Python 的静态代码分析工具,如 pylint、flake8 和 mypy,正是提升…...

Adobe Photoshop(PS)2022 版安装与下载教程

Adobe Photoshop下载安装和使用教程 Adobe Photoshop&#xff0c;简称“PS”&#xff0c;是由Adobe Systems开发和发行的图像处理软件。Photoshop主要处理以像素所构成的数字图像。使用其众多的编修与绘图工具&#xff0c;可以有效地进行图片编辑和创造工作&#xff0c…...