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

搭建 Makefile+OpenOCD+CMSIS-DAP+Vscode arm-none-eabi-gcc 工程模板

STM32F407-GCC-Template

Arm-none-eabi-gcc + Makefile+OpenOCD+CMSIS-DAP+Vscode工程模板

一、本次环境搭建所用的软硬件

1)Windows or Linux (本文以Windows为主)

2)JLink、Daplink、Wch-Link烧录器

3)GNU Arm Embedded Toolchain交叉编译器

4)Mingw-w64 GCC for Windows 64

5)Debug 调试工具 openocd

6)Visual Studio Code

二、软件安装配置

  1. GNU Arm Embedded Toolchain交叉编译器

    进入arm开发者官网,往下滑动选择下载解压可用的ZIP压缩包文件

    下载链接: Downloads | GNU Arm Embedded Toolchain Downloads – Arm Developer

    在这里插入图片描述

    将下载好的压缩包文件解压在gcc-arm-none-eabi”文件夹中,并记住文件内“bin”文件的路径,后续需添加到系统环境变量Path中。

    在这里插入图片描述
    添加完环境变量后,进行测试,检测是否安装好。

在这里插入图片描述
在这里插入图片描述

  1. 安装Mingw-w64 GCC

    点击链接进入到SourceForge官网,往下翻可以找到很多版本的下载链接,选择红色框内型号即可,不同前后缀的具体差异请参考:

    MinGW gcc下载链接及sjlj、dwarf、seh异同以及gcc安装_AMDDMA的博客-CSDN博客_seh和sjlj

    下载链接:

    MinGW-w64 - for 32 and 64 bit Windows - Browse Files at SourceForge.net

    在这里插入图片描述

    同样,将下载好的文件解压到“gcc-arm-none-eabi”文件夹下,记住目录下的“bin”文件路径
    在这里插入图片描述
    进入“bin”文件内找到“mingw32-make”应用程序文件,复制一份并重命名为“make”。这么做有利于在命令行执行make指令,而不是输入mingw32-make。
    在这里插入图片描述

​ 添加完环境变量后,进行测试,检测是否安装好。
在这里插入图片描述
在这里插入图片描述

3. 安装调试软件Download pre-built OpenOCD for Windows

默认安装Vscode,安装过程比较简单,参考其他文章。有了以上三个软件的支持,已经可以在VScode中编译并生成bin文件和hex文件了,但众所周知,程序员最大的工作是Debug,那就免不了需要一款调试软件了。

Debug常用的硬件有STLink、JLink,WCH-Link,DapLink.

Download pre-built OpenOCD for Windows下载链接:OpenOCD for Windows

在这里插入图片描述

同样将下载好的压缩包解压至“OpenOCD-20231002-0.12.0”,记住文件内“bin”文件的路径。
在这里插入图片描述
添加完环境变量后,进行测试,检测是否安装好。
在这里插入图片描述在这里插入图片描述

综上所述,基本的软件环境已经配置好。

三、STM32-GCC-Template工程配置

  1. 工程结构

    STM32-GCC-Template 使用的标准固件库开发,当然你可以使用HAL开发(这个不重要,有库就行了)

    在这里插入图片描述

   - ApplicationApplication/incApplication/src- BspLibrariesBspLibraries/incBspLibraries/src- FwlibLibrariesFwlibLibraries/CMSIS/IncludeFwlibLibraries/incFwlibLibraries/src- KernelKernel/incKernel/src- SystemLibrariesSystemLibraries/incSystemLibraries/src- Build//编译过程输出文件- toolstools/startup_stm32f407xx.stools/STM32F407ZGTx_FLASH.ld- MakefileMakefile脚本文件,重点,构建全流程脚本//OpenOCD 调试下载配置文件cmsis-dap.cfg  stm32f4x.cfg
  1. Makefile文件编写(重点)
   Author = dele####################################### target 构建目标###################################### TARGET = stm32f407-gcc-template  ####################################### building variables####################################### debug build?DEBUG = 1# optimizationOPT = -Og######################################## paths######################################## source path# firmware library pathPERIFLIB_PATH = # Build pathBUILD_DIR = Build####################################### source #   ####################################### 修改1 C源文件添加 参加文件工程,按照下面格式添加所有的c文件# C sourcesC_SOURCES =  \Kernel/src/stm32f4xx_it.c \Kernel/src/system_stm32f4xx.c \FwlibLibraries/src/misc.c \FwlibLibraries/src/stm32f4xx_adc.c \FwlibLibraries/src/stm32f4xx_can.c \FwlibLibraries/src/stm32f4xx_crc.c \FwlibLibraries/src/stm32f4xx_cryp_aes.c \FwlibLibraries/src/stm32f4xx_cryp.c \FwlibLibraries/src/stm32f4xx_cryp_des.c \FwlibLibraries/src/stm32f4xx_cryp_tdes.c \FwlibLibraries/src/stm32f4xx_dac.c \FwlibLibraries/src/stm32f4xx_dbgmcu.c \FwlibLibraries/src/stm32f4xx_dcmi.c \FwlibLibraries/src/stm32f4xx_dma2d.c \FwlibLibraries/src/stm32f4xx_dma.c \FwlibLibraries/src/stm32f4xx_exti.c \FwlibLibraries/src/stm32f4xx_flash.c \FwlibLibraries/src/stm32f4xx_flash_ramfunc.c \FwlibLibraries/src/stm32f4xx_gpio.c \FwlibLibraries/src/stm32f4xx_hash.c\FwlibLibraries/src/stm32f4xx_hash_md5.c \FwlibLibraries/src/stm32f4xx_hash_sha1.c \FwlibLibraries/src/stm32f4xx_i2c.c \FwlibLibraries/src/stm32f4xx_iwdg.c \FwlibLibraries/src/stm32f4xx_ltdc.c \FwlibLibraries/src/stm32f4xx_pwr.c \FwlibLibraries/src/stm32f4xx_rcc.c \FwlibLibraries/src/stm32f4xx_rng.c \FwlibLibraries/src/stm32f4xx_rtc.c \FwlibLibraries/src/stm32f4xx_sai.c \FwlibLibraries/src/stm32f4xx_sdio.c \FwlibLibraries/src/stm32f4xx_spi.c \FwlibLibraries/src/stm32f4xx_syscfg.c \FwlibLibraries/src/stm32f4xx_tim.c \FwlibLibraries/src/stm32f4xx_usart.c \FwlibLibraries/src/stm32f4xx_wwdg.c  \BspLibraries/src/key.c \BspLibraries/src/led.c \SystemLibraries/src/delay.c \SystemLibraries/src/usart.c \SystemLibraries/src/sys.c \SystemLibraries/src/timer.c \Application/src/main.c \# ASM sources# 修改2 汇编启动源文件添加 ASM_SOURCES =  \tools/startup_stm32f407xx.s######################################## binaries######################################## 修改3 gcc-arm-none-eabi工具链地址PREFIX = arm-none-eabi-GCC_PATH = /SoftwareApplication/gcc-arm-none-eabi/binifdef GCC_PATHCC = $(GCC_PATH)/$(PREFIX)gccAS = $(GCC_PATH)/$(PREFIX)gcc -x assembler-with-cppCP = $(GCC_PATH)/$(PREFIX)objcopySZ = $(GCC_PATH)/$(PREFIX)sizeelseCC = $(PREFIX)gccAS = $(PREFIX)gcc -x assembler-with-cppCP = $(PREFIX)objcopySZ = $(PREFIX)sizeendifHEX = $(CP) -O ihexBIN = $(CP) -O binary -S######################################## CFLAGS######################################## cpu 架构CPU = -mcpu=cortex-m4# fpuFPU = -mfpu=fpv4-sp-d16# float-abiFLOAT-ABI = -mfloat-abi=hard# mcuMCU = $(CPU) -mthumb $(FPU) $(FLOAT-ABI)# macros for gcc# AS definesAS_DEFS = # C defines# 修改4 全局宏定义 -DXXX C_DEFS =  \-DSTM32F40_41xxx \-DUSE_STDPERIPH_DRIVER\# AS includesAS_INCLUDES = # C includes# 修改5 H源文件添加 参加文件工程,按照下面格式添加所有的文件夹C_INCLUDES =\-I Kernel/inc        	 \-I FwlibLibraries/inc    \-I FwlibLibraries/CMSIS/Include \-I BspLibraries/inc      \-I SystemLibraries/inc   \-I Application/inc		 \# compile gcc flagsASFLAGS = $(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-2endif# Generate dependency informationCFLAGS += -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)"######################################## LDFLAGS######################################## link script# 修改6 link script 链接脚本文件添加  链接脚本如何获取看参考stm32cubemx官方工程LDSCRIPT = \tools/STM32F407ZGTx_FLASH.ld# librariesLIBS = -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 allall: $(BUILD_DIR)/$(TARGET).elf $(BUILD_DIR)/$(TARGET).hex $(BUILD_DIR)/$(TARGET).bin######################################## build the application######################################## list of objectsOBJECTS = $(addprefix $(BUILD_DIR)/,$(notdir $(C_SOURCES:.c=.o)))vpath %.c $(sort $(dir $(C_SOURCES)))# list of ASM program objectsOBJECTS += $(addprefix $(BUILD_DIR)/,$(notdir $(ASM_SOURCES:.s=.o)))vpath %.s $(sort $(dir $(ASM_SOURCES)))$(BUILD_DIR)/%.o: %.c Makefile | $(BUILD_DIR) @echo "[CC]    $<"@$(CC) -c $(CFLAGS) -Wa,-a,-ad,-alms=$(BUILD_DIR)/$(notdir $(<:.c=.lst)) $< -o $@$(BUILD_DIR)/%.o: %.s Makefile | $(BUILD_DIR)@echo "[AS]    $<"@$(AS) -c $(CFLAGS) $< -o $@$(BUILD_DIR)/$(TARGET).elf: $(OBJECTS) Makefile@echo "[HEX]   $< -> $@"@$(CC) $(OBJECTS) $(LDFLAGS) -o $@@$(SZ) $@$(BUILD_DIR)/%.hex: $(BUILD_DIR)/%.elf | $(BUILD_DIR)@echo "[HEX]   $< -> $@"@$(HEX) $< $@$(BUILD_DIR)/%.bin: $(BUILD_DIR)/%.elf | $(BUILD_DIR)@echo "[BIN]   $< -> $@"@$(BIN) $< $@	$(BUILD_DIR):@mkdir $@		######################################## clean up####################################### # make clean  清除编译中间文件# Windows环境不支持 rm 因此写成 -del # Linux环境 clean:-del /q  $(BUILD_DIR)# Openocd 调试下载工具 # 修改7  cmsis-dap.cfg -f stm32f4x.cfg# 配置文件 修改成为自己使用的工具和芯片文件 如 stlink.cfg jlink.cfg stm32f1xx.cfgflash:openocd -f cmsis-dap.cfg -f stm32f4x.cfg -c init -c halt -c "program $(BUILD_DIR)/$(TARGET).bin 0x8000000" -c reset -c shutdown######################################## dependencies#######################################-include $(wildcard $(BUILD_DIR)/*.d)# *** EOF ***

四、STM32-工程测试

  1. make 构建工程

    在这里插入图片描述

    在这里插入图片描述

  2. make flash

    在这里插入图片描述

    接上串口线,打开串口软件,查看终端输出情况(如果是从MDK-Keil工程移植过来,printf应该是不支持的,因此终端没有输出,需要修改相关代码,后面写修改文件)(图片中的情况是修改之后的效果)

 ![在这里插入图片描述](https://img-blog.csdnimg.cn/1cf3ac67fade4aa49f3648b98d0759ab.png#pic_center)
  1. make clean

    清除工程,修改main.c代码,重新构建代码

    在这里插入图片描述
    在这里插入图片描述在这里插入图片描述

  2. 注意修改的部分(仅我的工程,不代表全部)

    (1)usart.c printf重定向问题

    //重定向c库函数printf到串口,重定向后可使用printf函数
    // int fputc(int ch, FILE *f)
    // {
    //     /* 发送一个字节数据到串口 */
    //     USART_SendData(DEBUG_USART, (uint8_t) ch);//     /* 等待发送完毕 */
    //     while (USART_GetFlagStatus(DEBUG_USART, USART_FLAG_TXE) == RESET);//     return (ch);
    // }
    int _write (int fd, char *pBuffer, int size)
    {for (int i = 0; i < size; i++){while((USART1->SR&0X40)==0);//等待上一次串口数据发送完成USART1->DR = (uint8_t) pBuffer[i];       //写DR,串口1将发送数据}return size;
    }
    

    (2)sys.c 汇编代码 (注意,由于工程来源于正点原子的工程修改,可能与其他工程模板不一样,非不要)

    //THUMB指令不支持汇编内联
    //采用如下方法实现执行汇编指令WFI  
    __asm void WFI_SET(void)
    {WFI;		  
    }
    //关闭所有中断(但是不包括fault和NMI中断)
    __asm void INTX_DISABLE(void)
    {CPSID   IBX      LR	  
    }
    //开启所有中断
    __asm void INTX_ENABLE(void)
    {CPSIE   IBX      LR  
    }
    //设置栈顶地址
    //addr:栈顶地址
    __asm void MSR_MSP(u32 addr) 
    {MSR MSP, r0 			//set Main Stack valueBX r14
    }
    

    修改后

    //THUMB指令不支持汇编内联
    //采用如下方法实现执行汇编指令WFI  
    void WFI_SET(void)
    {__ASM volatile("WFI");		  
    }
    //关闭所有中断(但是不包括fault和NMI中断)
    void INTX_DISABLE(void)
    {__ASM volatile("CPSID   I");__ASM volatile("BX      LR");}
    //开启所有中断
    void INTX_ENABLE(void)
    {__ASM volatile("CPSIE   I");__ASM volatile("BX      LR");
    }
    //设置栈顶地址
    //addr:栈顶地址
    void MSR_MSP(u32 addr)
    {__ASM volatile("MSR MSP, r0"); __ASM volatile("BX r14");
    }

五、测试效果

​ 使用Vscode进行工程修改编辑,编译,下载代码(可以使用Cortex-Debug进行调试)
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

相关文章:

搭建 Makefile+OpenOCD+CMSIS-DAP+Vscode arm-none-eabi-gcc 工程模板

STM32F407-GCC-Template Arm-none-eabi-gcc MakefileOpenOCDCMSIS-DAPVscode工程模板 一、本次环境搭建所用的软硬件 1&#xff09;Windows or Linux (本文以Windows为主) 2&#xff09;JLink、Daplink、Wch-Link烧录器 3&#xff09;GNU Arm Embedded Toolchain交叉编译…...

Unity场景ab包加载压缩(LZ4,LZMA)格式的测试

情况 最近场景越来越大&#xff0c;大概800M的场景加载时间可能长达40秒左右&#xff0c;所以需要测试看看发生了什么。 测试环境 测试环境Win10&#xff0c;21thI5-12600KF&#xff0c;32GRam &#xff0c; Nvidia GF RTX2060 32G Scene1大小&#xff1a;741M 加载代码 首…...

私有化部署大模型:5个.Net开源项目

从零构建.Net前后端分离项目 今天一起盘点下&#xff0c;10月份推荐的5个.Net开源项目&#xff08;点击标题查看详情&#xff09;。 1、BootstrapBlazor企业级组件库&#xff1a;前端开发的革新之路 BootstrapBlazor是一个用于构建现代Web应用程序的开源框架&#xff0c;它基…...

安卓系统手机便签app使用哪一款?

在现代快节奏的生活中&#xff0c;我们经常会遇到各种繁忙的事务和容易遗忘的备忘事项。为避免大家遗忘重要的事情&#xff0c;大家可以在常用的手机上安装记录备忘事项的工具&#xff0c;为了帮助安卓用户高效地记录和管理这些信息&#xff0c;今天我将向大家推荐一款功能强大…...

SpringCloud-Gateway无法使用Feign服务(2021.X版本)

Spring Cloud Gateway 2021.x版本&#xff0c;无法使用Feign调用其他服务接口。 问题原因&#xff1a; 在官网的 issue 里面找到了相关的问题。 How to call another micro-service on GatewayFilterFactory ? Issue #1090 spring-cloud/spring-cloud-gateway GitHubHel…...

基于SSM的建筑装修图纸管理平台

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;采用JSP技术开发 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#x…...

Apache Doris (五十二): Doris Join类型 - Broadcast Join

🏡 个人主页:IT贫道_大数据OLAP体系技术栈,Apache Doris,Clickhouse 技术-CSDN博客 🚩 私聊博主:加入大数据技术讨论群聊,获取更多大数据资料。 🔔 博主个人B栈地址:豹哥教你大数据的个人空间-豹哥教你大数据个人主页-哔哩哔哩视频 目录 1. Broadcast Join原理...

Docker从入门到上天系列第四篇:docker平台入门图解与平台架构图解

大神推荐:作者有幸结识技术大神孙哥为好友获益匪浅,现在把孙哥作为朋友分享给大家。 孙哥链接:孙哥个人主页 作者简介:一个颜值99分,只比孙哥差一点的程序员。 本专栏简介:话不多说,让我们一起干翻Docker 本文章简介:话不多说,让我们讲清楚Docker的平台入门图解和平台…...

安全防御——四、防火墙理论知识

安全防御 一、防火墙1、防火墙是如何诞生的2、防火墙如何分类2.1 软件型防火墙2.1.1 个人防火墙2.1.2 网关型防火墙 3、硬件型防火墙4、防火墙的技术类型5、代理服务器什么是代理 6、防火墙的接口模式7、防火墙抵御的攻击7.1 DDoS攻击7.2 单包攻击7.3 用户行为不受控7.4 威胁安…...

如何给PPT幻灯片解除密码保护以防止编辑

如果您忘记了ppt幻灯片的密码或无法编辑它&#xff0c;不要担心&#xff0c;提供了一种安全、简单易操作的方法来找回密码或解除限制。具体步骤如下&#xff1a;第一步百度搜索密码帝官网&#xff0c;第二步在用户中心上传需要解密的文件即可。 无论您是使用手机还是电脑&#…...

在linux安装单机版hadoop-3.3.6

一、下载hadoop https://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/core/hadoop-3.3.6/ 二、配置环境变量 1、配置java环境变量 2、配置hadoop环境变量 export HADOOP_HOME/usr/local/bigdata/hadoop-3.3.6 export HBASE_HOME/usr/local/bigdata/hbase-2.5.6 export JA…...

Hadoop相关

hdfs getconf -confKey dfs.namenode.http-address 查看Hadoop工作端口的信息 hdfs getconf -confKey dfs.datanode.http.address 查看HDFS的NameNode组件的HTTP端口。...

ArcGIS 气象风场等示例 数据制作、服务发布及前端加载

1. 原始数据为多维数据 以nc数据为例。 首先在pro中需要以多维数据的方式去添加多维数据&#xff0c;这里的数据包含uv方向&#xff1a; 加载进pro的效果&#xff1a; 这里注意 数据属性需要为矢量uv&#xff1a; 如果要发布为服务&#xff0c;需要导出存储为tif格式&…...

【Axure高保真原型】树切换动态面板案例

今天和大家分享树切换动态面板的原型模板&#xff0c;点击树的箭头可以打开或者收起子节点&#xff0c;点击最后一级人物节点&#xff0c;可以切换右侧面板的状态到对应的页面&#xff0c;左侧的树是通过中继器制作的&#xff0c;使用简单&#xff0c;只需要按要求填写中继器表…...

安装pr提示VCRUNTIME140.dll丢失的修复方法,3个有效的方法

在学习和工作中&#xff0c;我们经常需要使用到PR和PS。然而&#xff0c;在安装这些软件时&#xff0c;有时会遇到一些错误提示&#xff0c;其中之一就是“VCRUNTIME140.dll丢失”&#xff0c;无法运行启动软件程序。那么&#xff0c;如何解决VCRUNTIME140.dll丢失的问题呢&…...

Linux进程控制(2)

Linux进程控制(2) &#x1f4df;作者主页&#xff1a;慢热的陕西人 &#x1f334;专栏链接&#xff1a;Linux &#x1f4e3;欢迎各位大佬&#x1f44d;点赞&#x1f525;关注&#x1f693;收藏&#xff0c;&#x1f349;留言 本博客主要内容讲解了进程等待收尾内容和进程的程序…...

Android Glide transform旋转rotate圆图CircleCrop,Kotlin

Android Glide transform旋转rotate圆图CircleCrop&#xff0c;Kotlin import android.graphics.Bitmap import android.os.Bundle import android.util.Log import android.widget.ImageView import androidx.appcompat.app.AppCompatActivity import com.bumptech.glide.load…...

如何让群晖Audio Station公开共享的本地音频公网可访问?

文章目录 1. 本教程使用环境&#xff1a;2. 制作音频分享链接3. 制作永久固定音频分享链接&#xff1a; 之前文章我详细介绍了如何在公网环境下使用pc和移动端访问群晖Audio Station&#xff1a; 公网访问群晖audiostation听歌 - cpolar 极点云 群晖套件不仅能读写本地文件&a…...

生态环境领域基于R语言piecewiseSEM结构方程模型

结构方程模型&#xff08;Sructural Equation Modeling&#xff0c;SEM&#xff09;可分析系统内变量间的相互关系&#xff0c;并通过图形化方式清晰展示系统中多变量因果关系网&#xff0c;具有强大的数据分析功能和广泛的适用性&#xff0c;是近年来生态、进化、环境、地学、…...

spring boot+netty 搭建MQTT broken

一、项目结构 二、安装依赖 <!-- netty包 --><dependency><groupId>io.netty</groupId><artifactId>netty-all</artifactId><version>4.1.75.Final</version></dependency><!-- 常用JSON工具包 --><…...

Lombok 的 @Data 注解失效,未生成 getter/setter 方法引发的HTTP 406 错误

HTTP 状态码 406 (Not Acceptable) 和 500 (Internal Server Error) 是两类完全不同的错误&#xff0c;它们的含义、原因和解决方法都有显著区别。以下是详细对比&#xff1a; 1. HTTP 406 (Not Acceptable) 含义&#xff1a; 客户端请求的内容类型与服务器支持的内容类型不匹…...

大话软工笔记—需求分析概述

需求分析&#xff0c;就是要对需求调研收集到的资料信息逐个地进行拆分、研究&#xff0c;从大量的不确定“需求”中确定出哪些需求最终要转换为确定的“功能需求”。 需求分析的作用非常重要&#xff0c;后续设计的依据主要来自于需求分析的成果&#xff0c;包括: 项目的目的…...

中南大学无人机智能体的全面评估!BEDI:用于评估无人机上具身智能体的综合性基准测试

作者&#xff1a;Mingning Guo, Mengwei Wu, Jiarun He, Shaoxian Li, Haifeng Li, Chao Tao单位&#xff1a;中南大学地球科学与信息物理学院论文标题&#xff1a;BEDI: A Comprehensive Benchmark for Evaluating Embodied Agents on UAVs论文链接&#xff1a;https://arxiv.…...

23-Oracle 23 ai 区块链表(Blockchain Table)

小伙伴有没有在金融强合规的领域中遇见&#xff0c;必须要保持数据不可变&#xff0c;管理员都无法修改和留痕的要求。比如医疗的电子病历中&#xff0c;影像检查检验结果不可篡改行的&#xff0c;药品追溯过程中数据只可插入无法删除的特性需求&#xff1b;登录日志、修改日志…...

Day131 | 灵神 | 回溯算法 | 子集型 子集

Day131 | 灵神 | 回溯算法 | 子集型 子集 78.子集 78. 子集 - 力扣&#xff08;LeetCode&#xff09; 思路&#xff1a; 笔者写过很多次这道题了&#xff0c;不想写题解了&#xff0c;大家看灵神讲解吧 回溯算法套路①子集型回溯【基础算法精讲 14】_哔哩哔哩_bilibili 完…...

UDP(Echoserver)

网络命令 Ping 命令 检测网络是否连通 使用方法: ping -c 次数 网址ping -c 3 www.baidu.comnetstat 命令 netstat 是一个用来查看网络状态的重要工具. 语法&#xff1a;netstat [选项] 功能&#xff1a;查看网络状态 常用选项&#xff1a; n 拒绝显示别名&#…...

Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility

Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility 1. 实验室环境1.1 实验室环境1.2 小测试 2. The Endor System2.1 部署应用2.2 检查现有策略 3. Cilium 策略实体3.1 创建 allow-all 网络策略3.2 在 Hubble CLI 中验证网络策略源3.3 …...

从零实现STL哈希容器:unordered_map/unordered_set封装详解

本篇文章是对C学习的STL哈希容器自主实现部分的学习分享 希望也能为你带来些帮助~ 那咱们废话不多说&#xff0c;直接开始吧&#xff01; 一、源码结构分析 1. SGISTL30实现剖析 // hash_set核心结构 template <class Value, class HashFcn, ...> class hash_set {ty…...

【服务器压力测试】本地PC电脑作为服务器运行时出现卡顿和资源紧张(Windows/Linux)

要让本地PC电脑作为服务器运行时出现卡顿和资源紧张的情况&#xff0c;可以通过以下几种方式模拟或触发&#xff1a; 1. 增加CPU负载 运行大量计算密集型任务&#xff0c;例如&#xff1a; 使用多线程循环执行复杂计算&#xff08;如数学运算、加密解密等&#xff09;。运行图…...

SAP学习笔记 - 开发26 - 前端Fiori开发 OData V2 和 V4 的差异 (Deepseek整理)

上一章用到了V2 的概念&#xff0c;其实 Fiori当中还有 V4&#xff0c;咱们这一章来总结一下 V2 和 V4。 SAP学习笔记 - 开发25 - 前端Fiori开发 Remote OData Service(使用远端Odata服务)&#xff0c;代理中间件&#xff08;ui5-middleware-simpleproxy&#xff09;-CSDN博客…...