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

STM32系统架构介绍

STM32系统架构

  • 1. CM3/4系统架构
  • 2. CM3/4系统架构-----存储器组织结构
    • 2.1 寄存器地址映射(特殊的存储器)
    • 2.2 寄存器地址计算
    • 2.3 寄存器的封装
  • 3. CM3/4系统架构-----时钟系统

STM32 和 ARM 以及 ARM7是什么关系?

  • ARM 是一个做芯片标准的公司,它负责的是芯片内核的架构设计;
  • ARM7STM32ST等芯片公司生产的某一种类型的芯片。
  • ST 是一个不做标准的芯片公司,根据 ARM 公司提供的芯片内核标准设计自己的芯片。所以,任何一个做 Cortex-M3 芯片,他们的内核结构都是一样的,不同的是他们的存储器容量,片上外设,IO 以及其他模块的区别。不同公司设计的 Cortex-M3 芯片他们的端口数量,串口数量,控制方法这些都是有区别的,这些资源他们可以根据自己的需求理念来设计。

1. CM3/4系统架构

在这里插入图片描述

注意:CM3和CM4系统架构有差异,上面为CM3系统架构,下列为CM4系统架构。
在这里插入图片描述
主系统由 32 位多层 AHB 总线矩阵构成,可实现以下部分的互连:

八条主控总线七条被控总线
内核I总线(不适用于CM3)内部 Flash ICode 总线
内核D总线内部 Flash DCode 总线
内核S总线主要内部 SRAM1 (112 KB)
DMA1存储器总线辅助内部 SRAM2 (16 KB)
DMA2 存储器总线描述辅助内部 SRAM3 (64 KB)
DMA2 外设总线(不适用于CM3)AHB1 外设(包括 AHB-APB 总线桥和 APB 外设)
以太网 DMA 总线AHB2 外设(不适用于CM3)
USB OTG HS DMA 总线(不适用于CM3)FSMC(不适用于CM3)

  借助总线矩阵,可以实现主控总线到被控总线的访问,这样即使在多个高速外设同时运行期间,系统也可以实现并发访问和高效运行。64 KB CCM(内核耦合存储器)数据 RAM 不属于总线矩阵,只能通过 CPU 对其进行访问。

总线接口描述
S0:
I 总线
此总线用于将CM3/4内核的指令总线连接到总线矩阵。内核通过此总线获取指令。 此总线访问的对象是包含代码的存储器(内部 Flash/SRAM 或通过 FSMC 的外部存储器)
S1:
D 总线
此总线用于将CM3/4数据总线和 64 KB CCM 数据 RAM 连接到总线矩阵。内核通过此总线进行立即数加载和调试访问。此总线访问的对象是包含代码或数据的存储器(内部Flash 或通过 FSMC 的外部存储器)。
S2:
S 总线
此总线用于将CM3/4内核的系统总线连接到总线矩阵。此总线用于访问位于外设 或 SRAM 中的数据。也可通过此总线获取指令(效率低于 ICode)。此总线访问的对象是 112 KB、64 KB 和 16 KB 的内部 SRAM、包括 APB 外设在内的 AHB1 外设、AHB2 外设以及通过 FSMC 的外部存储器。
S3/4:
DMA 存储器总线
此总线用于将 DMA 存储器总线主接口连接到总线矩阵。DMA 通过此总线来执行存储器数据的传入和传出。此总线访问的对象是数据存储器:内部 SRAM(112 KB、64 KB、16 KB)以及通过 FSMC 的外部存储器。
S5:
DMA 外设总线
此总线用于将 DMA 外设主总线接口连接到总线矩阵。DMA 通过此总线访问 AHB 外设或执行存储器间的数据传输。此总线访问的对象是 AHB 和 APB 外设以及数据存储器:内部 SRAM 以及通过 FSMC 的外部存储器。
S6:
以太网 DMA 总线
此总线用于将以太网 DMA 主接口连接到总线矩阵。以太网 DMA 通过此总线向存储器存取数据。此总线访问的对象是数据存储器:内部 SRAM(112 KB、64 KB 和 16 KB)以及通过 FSMC 的外部存储器。
S7:
USB OTG HS DMA 总线
此总线用于将 USB OTG HS DMA 主接口连接到总线矩阵。USB OTG DMA 通过此总线向存储器加载/存储数据。此总线访问的对象是数据存储器:内部 SRAM(112 KB、64 KB 和 16 KB)以及通过 FSMC 的外部存储器。
总线矩阵总线矩阵用于主控总线之间的访问仲裁管理。仲裁采用循环调度算法。
AHB/APB 总线桥 (APB)借助两个 AHB/APB 总线桥 APB1 和 APB2,可在 AHB 总线与两个 APB 总线之间实现完全同步的连接,从而灵活选择外设频率。


在这里插入图片描述

  STM32 芯片是已经封装好的成品,主要由内核和片上外设组成。若与电脑类比,内核与外设就如同电脑上的 CPU 与主板、内存、显卡、硬盘的关系。STM32F103 采用的是 Cortex-M3 内核,内核即 CPU,由 ARM 公司设计。ARM 公司并不生产芯片,而是出售其芯片技术授权。芯片生产厂商 (SOC) 如 ST、TI、Freescale,负责在内核之外设计部件并生产整个芯片,这些内核之外的部件被称为核外外设或片上外设。如 GPIO、USART(串口)、I2C、SPI 等都叫做片上外设。
  Cortex-M处理器基于一种加载-存储架构,数据需要从存储器中加载和处理后,使用多个单独的指令写回存储器。例如:要增加SRAM中存储的数据值,处理器需要使用一条指令从SRAM中读出数据,并且将数据放到处理器的寄存器中,然后使用第二条指令增加寄存器中的数据值,最后使用第三条指令将数据值写回寄存器。


  内核即CPU内部的各种译码和执行电路。指令对中断控制器(NVIC)、系统计时器(SysTick)、三阶流水线(取指、解码、执行)、浮点单元(FPU)和指令跟踪接口(ITM)等的操作,其实都是对其寄存器的操作,它们都是由内部寄存器构成的。对这些寄存器的了解参考( cortex-m3与cortex-m4中的寄存器)。

内核的主要组成部分:

  1. 内核Core‌:处理器最核心的部分,负责几乎所有的运算和控制程序运行过程,包括中断响应服务。内核由多个部分构成,包括中断控制器(NVIC)系统计时器(SysTick)、三阶流水线(取指、解码、执行)、浮点单元(FPU)指令跟踪接口(ITM)‌
  2. 调试系统‌:主要用于固件的调试和监视系统的运行状态。它支持JTAG或2针串行线调试(SWD),支持多处理器和实时跟踪‌。
  3. 寄存器组‌:‌
    通用寄存器组‌:包括堆栈指针、连接寄存器、程序计数器等‌。
    程序状态寄存器(xPSR):用于存储程序的状态信息。‌
    中断屏蔽寄存器组‌:用于控制中断的屏蔽。
    控制寄存器(CONTROL):用于控制处理器的各种功能。
  4. 存储器保护单元MPU:是内核中的一个模块,用于控制和管理存储器的访问权限。它并不是ARM内核的一部分,而是处理器内部的一个独立模块‌。
  5. 内存管理单元MMU:将虚地址转换成物理地址。


指令的执行过程与寄存器的关系:

  1. 指令获取与执行‌:ARM处理器在执行指令时,首先从内存中获取指令,并将其存储在寄存器中。处理器通过寄存器读取指令并执行相应的操作。例如,当处理器执行一条ARM指令时,程序计数器(PC)的值会增加4个字节;而执行一条Thumb指令时,PC的值会增加2个字节‌
  2. ‌寄存器的作用‌:ARM处理器有37个寄存器,包括31个通用寄存器和6个状态寄存器。通用寄存器用于存储数据和地址,而状态寄存器用于标识CPU的工作状态和程序的运行状态。寄存器在指令执行过程中起着关键作用,它们存储指令、数据和地址,帮助处理器高效地执行任务‌
  3. 工作模式与寄存器‌:ARM处理器支持7种运行模式,包括用户模式、快速中断模式、外部中断模式、管理模式、数据访问终止模式、系统模式和未定义指令中止模式。不同的运行模式下,寄存器的使用权限和功能有所不同。例如,用户模式下,程序不能直接访问所有系统资源,而特权模式下则可以‌。
  4. ‌异常处理与寄存器‌:在异常发生时,处理器会切换到相应的异常处理模式,并保存当前的执行状态。异常处理过程中,寄存器的使用也非常重要。例如,当发生异常时,系统会将下一条指令存入链接寄存器(LR),并将当前程序状态字(CPSR)保存到备份程序状态字(SPSR),然后跳转到异常处理函数。处理完成后,系统会恢复之前的执行状态‌。

  
详细的介绍参考下列文档:

  • 《Cortex-M3权威指南(中文)》
  • 《CM3技术参考手册》
  • 《STM32中文参考手册_V10》
  • 《Cortex M3与M4权威指南》
  • 《STM32F3与F4系列Cortex M4内核编程手册》
  • 《STM32F4xx参考手册_V4(中文版)》

2. CM3/4系统架构-----存储器组织结构

程序存储器、数据存储器、寄存器和 I/O 端口排列在同一个顺序的 4 GB 地址空间内。
 STM32是一个32位单片机,可以很方便的访问4GB以内的存储空间(2^32 = 4GB),Cortex M3/M4内核将STM32芯片架构中的所有结构,包括:FLASHSRAM外设相关寄存器等全部组织在同一个4GB的线性地址空间内,我们可以通过C语言来访问这些地址空间,从而操作相关外设(读/写)。数据字节以小端格式(小端模式)存放在存储器中,数据的高字节保存在内存的高地址中,而数据的低字节保存在内存的低地址中。
存储器本身是没有地址信息的,我们对存储器分配地址的过程就叫存储器映射。这个分配一般由芯片厂商做好了,芯片厂商将所有的存储器及外设资源都映射在一个4GB的地址空间上(8个块),从而可以通过访问对应的地址,访问具体的外设。存储器空间包括程序代码、数据、外设以及处理器内部的调试支持部件。
 4GB空间分成8个块,每个块512MB,其中有很多保留区域,这是因为一般的芯片制造厂家是不可能把4GB空间用完的,同时,为了方便后续型号升级,会将一些空间预留。
存储器组织结构如图所示:
在这里插入图片描述


【详情见 <CM3/CM4存储器映射>】

  MPU为监控总线传输的可编程设备,需要通过软件(一般是嵌入式OS)配置。若MPU存在,应用程序可以将存储器空间分为多个部分,并为每个部分定义访问权限。当违反访问规则时,错误异常就会产生,错误异常处理则会分析问题,而且如果可能,将错误加以修复。一般情况下,OS会设置MPU以保护OS内核和其他特权任务使用的数据,防止恶意用户程序的破坏。而且OS也可以选择将不同用户任务使用的存储器隔离开来。这些处理有助于检测系统错误,并且提高了系统在处理错误情况时的健壮性。MPU也可以将系统配置为只读,防止意外擦除SRAM中的数据或覆盖指令代码。MPU默认禁止,若应用不需要存储器保护特性,就无须将其初始化。
  NVIC处理异常,可以处理多个中断请求IRQ和一个不可屏蔽中断NMI请求,IRQ一般由片上外设或外部中断输入通过I/O端口产生,NMI可用于看门狗定时器或掉电检测。处理器内部有SysTick定时器,它可以产生周期性的定时中断请求,可用于嵌入式OS计时或没有OS的应用中的简单定时控制。


注意:对CM3/4的操作其实就是对存储器映射中的寄存器的操作,通过对寄存器的操作来操作内存或其他外设等。

2.1 寄存器地址映射(特殊的存储器)

  给存储器分配地址的过程叫存储器映射,寄存器是一类特殊的存储器,它的每个位都有特定的功能,可以实现对外设/功能的控制,给寄存器的地址命名的过程就叫寄存器映射。
  举个简单的例子,大家家里面的纸张就好比通用存储器,用来记录数据是没问题的,但是不会有具体的动作,只能做记录,而你家里面的电灯开关,就好比寄存器了,假设你家有8个灯,就有8个开关(相当于一个8位寄存器),这些开关也可以记录状态,同时还能让电灯点亮/关闭,是会产生具体动作的。为了方便区分和使用,我们会给每个开关命名,比如厨房开关、大厅开关、卧室开关等,给开关命名的过程,就是寄存器映射。
  我们以GPIO的ODR寄存器为例,其参考手册的描述如图所示:
在这里插入图片描述
寄存器名字:每个寄存器都有一个对应的名字,以简单表达其作用,并方便记忆,这里GPIOx_ODR表示寄存器英文名,x可以从A~G,说明有7个这样的寄存器)。
寄存器偏移量及复位值:地址偏移量表示相对该外设基地址的偏移,GPIOB 的外设基地址是:0x4002 0400。那么GPIOB_ODR寄存器的地址就是:0x4002 0414。复位值表示该寄存器在系统复位后的默认值,可以用于分析外设的默认状态。
寄存器位表:描述寄存器每一个位的作用(共32bit),这里表示ODR寄存器的第15位(bit),位名字为 ODR15,rw表示该寄存器可读写(r,可读取;w,可写入)。
位功能描述:描述寄存器每个位的功能,这里表示位015,对应ODR0ODR15,每个位控制一个IO口的输出状态。


由 < 3.2 库开发和寄存器的关系 > 学习可知:

#define GPIOB_ODR *(unsigned int *)(0x40020414)
GPIOB_ODR = 0XFFFF;

stm32f407xx.h 里面使用结构体方式对 STM32F407 的寄存器做了详细映射。


注意:CM3/4的内部寄存器和外设寄存器的映射和操作封装文件位于标准外设库/HAL库中,详情见< 3.5 库开发和寄存器的关系>

2.2 寄存器地址计算

某个寄存器地址,由三个参数决定:

  1. 总线基地址(BUS_BASE_ADDR)
  2. 外设基于总线基地址的偏移量(PERIPH_OFFSET)
  3. 寄存器相对外设基地址的偏移量(REG_OFFSET)

寄存器地址 = BUS_BASE_ADDR + PERIPH_OFFSET + REG_OFFSET


总线基地址(BUS_BASE_ADDR)
在这里插入图片描述
外设基于总线基地址的偏移量(PERIPH_OFFSET)
在这里插入图片描述
在这里插入图片描述
寄存器相对外设基地址的偏移量(REG_OFFSET)
在这里插入图片描述

2.3 寄存器的封装

【详情见 < 3.6 C语言对寄存器的封装>】

3. CM3/4系统架构-----时钟系统

【详情见 <CM3/CM4时钟系统>】

相关文章:

STM32系统架构介绍

STM32系统架构 1. CM3/4系统架构2. CM3/4系统架构-----存储器组织结构2.1 寄存器地址映射&#xff08;特殊的存储器&#xff09;2.2 寄存器地址计算2.3 寄存器的封装 3. CM3/4系统架构-----时钟系统 STM32 和 ARM 以及 ARM7是什么关系? ARM 是一个做芯片标准的公司&#xff0c…...

智能GUI Agent是什么,有什么应用领域

智能GUI Agent是什么 研究背景与目的:GUI长期主导人机交互,LLM特别是多模态模型的出现,为GUI自动化带来变革,催生了基于LLM的GUI智能体。这些智能体可理解自然语言指令,处理复杂GUI元素并执行操作,改变了用户与软件交互方式。论文旨在梳理该领域发展脉络,剖析关键要素,…...

Python3操作MongoDB批量upsert

个人博客地址&#xff1a;Python3操作MongoDB批量upsert | 一张假钞的真实世界 代码如下&#xff1a; mongoClient MongoClient(mongodb://172.16.72.213:27017/) opsDb mongoClient.ops azScheduled opsDb.azScheduledFlowbulkOpers [] for flow in scheduledFlows.valu…...

3dgs 2025 学习笔记

CVPR 2024 3D方向总汇包含&#xff08;3DGS、三维重建、深度补全、深度估计、全景定位、表面重建和特征匹配等&#xff09;_cvpr2024-structure-awaresparse-viewx-ray3dreconstr-CSDN博客 https://github.com/apple/ml-hugs 3DGS COLMAP-Free 3D Gaussian Splatting ⭐code &…...

大模型笔记:pytorch实现MOE

0 导入库 import torch import torch.nn as nn import torch.nn.functional as F 1 专家模型 #一个简单的专家模型&#xff0c;可以是任何神经网络架构 class Expert(nn.Module):def __init__(self, input_size, output_size):super(Expert, self).__init__()self.fc nn.L…...

C#/.NET/.NET Core技术前沿周刊 | 第 25 期(2025年2.1-2.9)

前言 C#/.NET/.NET Core技术前沿周刊&#xff0c;你的每周技术指南针&#xff01;记录、追踪C#/.NET/.NET Core领域、生态的每周最新、最实用、最有价值的技术文章、社区动态、优质项目和学习资源等。让你时刻站在技术前沿&#xff0c;助力技术成长与视野拓宽。 欢迎投稿、推荐…...

package.json 文件配置

创建 Node.js 的配置文件 package.json npm init -y package.json 文件配置说明 配置说明示例name指定项目的名称&#xff0c;必须是小写字母&#xff0c;可以包含字母、数字、连字符&#xff08;-&#xff09;或下划线&#xff08;_&#xff09;&#xff0c;不能有特殊字符…...

相机模数转换

模拟图像是什么&#xff1f; 模拟图像是指连续变化的图像&#xff0c;它通常来源于现实世界的物理场景&#xff0c;并通过光学系统&#xff08;如相机镜头&#xff09;投射到感光介质上。模拟图像是连续的&#xff0c;这意味着它在空间和颜色值上都有无穷的细节。例如&#xf…...

mysql大数据量分页查询

一、什么是‌MySQL大数据量分页查&#xff1f; MySQL大数据量分页查‌是指在使用MySQL数据库时&#xff0c;将大量数据分成多个较小的部分进行显示&#xff0c;以提高查询效率和用户体验。分页查询通常用于网页或应用程序中&#xff0c;以便用户能够逐步浏览结果集。 二、为什…...

组织结构改革:激活企业活力的 “源头活水”

难以适应市场变化、内部沟通与协作不畅、决策效率低下、运营成本增加、人才流失严重、员工士气下降、战略目标难以实现……企业如何根据市场环境变化和自身发展需求&#xff0c;灵活调整组织框架&#xff0c;赋能企业的持续健康发展&#xff1f; 某国有投资建设集团旗下的二级…...

金融风控项目-1

文章目录 一. 案例背景介绍二. 代码实现1. 加载数据2. 数据处理3. 查询 三. 业务解读 一. 案例背景介绍 通过对业务数据分析了解信贷业务状况 数据集说明 从开源数据改造而来&#xff0c;基本反映真实业务数据销售&#xff0c;客服可以忽略账单周期&#xff0c;放款日期账单金…...

Java常用设计模式面试题总结(内容详细,简单易懂)

设计模式的分类 创建型模式&#xff1a;通过隐藏对象创建的细节&#xff0c;避免直接使用 new 关键字实例化对象&#xff0c;从而使程序在判断和创建对象时更具灵活性。常见的模式包括&#xff1a; 工厂模式抽象工厂模式单例模式建造者模式原型模式 结构型模式&#xff1a;通…...

【Elasticsearch】文本分析Text analysis概述

文本分析概述 文本分析使 Elasticsearch 能够执行全文搜索&#xff0c;搜索结果会返回所有相关的结果&#xff0c;而不仅仅是完全匹配的结果。 如果你搜索“Quick fox jumps”&#xff0c;你可能希望找到包含“A quick brown fox jumps over the lazy dog”的文档&#xff0c…...

ATF系统安全从入门到精通

CSDN学院课程连接&#xff1a;https://edu.csdn.net/course/detail/39573...

C# 上位机--变量

C# 上位机--变量 在 C# 上位机开发领域&#xff0c;变量是构建程序逻辑的基础元素之一。它就像是一个容器&#xff0c;用于存储各种类型的数据&#xff0c;从简单的数值到复杂的对象。正确理解和使用变量&#xff0c;对于开发出高效、稳定且易于维护的上位机程序至关重要。本文…...

π 的奥秘:如何用有理数逼近无理数?

本文将围绕有理数、无理数、连续统以及它们之间的深刻联系展开讨论&#xff0c;并结合具体的数学理论如康托尔区间套定理、戴德金分割、柯西施瓦茨不等式等&#xff0c;进行简要探讨 由于本文并未深入探讨&#xff0c;可能存在部分不严谨的地方&#xff0c;也欢迎各位进行纠正…...

LeetCode --- 436周赛

题目列表 3446. 按对角线进行矩阵排序 3447. 将元素分配给有约束条件的组 3448. 统计可以被最后一个数位整除的子字符串数目 3449. 最大化游戏分数的最小值 一、按对角线进行矩阵排序 直接模拟&#xff0c;遍历每一个斜对角线&#xff0c;获取斜对角线上的数字&#xff0c;排…...

绘制中国平安股价的交互式 K 线图

在本文中,探索如何使用 Python 的强大库进行股市数据分析与可视化。我们将以中国平安(股票代码:sh601318)为例,展示如何获取其股票数据,并绘制一张交互式 K 线图。 K 线图是股市分析中不可或缺的工具,它能够直观地显示股票的波动情况,包括开盘价、收盘价、最高价和最低…...

【ISO 14229-1:2023 UDS诊断全量测试用例清单系列:第二节】

ISO 14229-1:2023 UDS诊断服务测试用例全解析&#xff08;ECU复位0x11服务&#xff09; 作者&#xff1a;车端域控测试工程师 更新日期&#xff1a;2025-02-12 关键词&#xff1a;UDS诊断协议、ECU复位服务、0x11服务、ISO 14229-1:2023 二、ECU复位服务&#xff08;0x11服务&…...

Unity URP的2D光照简介

官网工程&#xff0c;包括2d光照&#xff0c;动画&#xff0c;动效介绍&#xff1a; https://unity.com/cn/blog/games/happy-harvest-demo-latest-2d-techniques https://docs.unity3d.com/6000.0/Documentation/Manual/urp/Lights-2D-intro.html 人物脸部光照细节和脚上的阴影…...

自学人工智能大模型,满足7B模型的训练和微调以及推理,预算3万,如何选购电脑

如果你的预算是 3万元人民币&#xff0c;希望训练和微调 7B 参数规模的人工智能大模型&#xff08;如 LLaMA、Mistral 等&#xff09;&#xff0c;你需要一台高性能的深度学习工作站。在这个预算范围内&#xff0c;以下是推荐的配置&#xff1a; 1. 关键硬件配置 (1) GPU (显卡…...

shell脚本自动安装MySQL8

环境&#xff1a;centos7版本&#xff1a;8.0.28安装包&#xff1a;mysql-8.0.28-linux-glibc2.12-x86_64.tar.xz 二进制包要求&#xff1a;安装包和shell脚本在同一目录下执行方式&#xff1a;sudo ./install_mysql8.sh #!/bin/bash# 定义MySQL安装目录和压缩包名称MYSQL_DIR…...

使用亚马逊针对 PyTorch 和 MinIO 的 S3 连接器进行模型检查点处理

2023 年 11 月&#xff0c;Amazon 宣布推出适用于 PyTorch 的 S3 连接器。适用于 PyTorch 的 Amazon S3 连接器提供了专为 S3 对象存储构建的 PyTorch 数据集基元&#xff08;数据集和数据加载器&#xff09;的实现。它支持用于随机数据访问模式的地图样式数据集和用于流式处理…...

DeepAR:一种用于时间序列预测的深度学习模型

介绍 DeepAR是一种基于递归神经网络&#xff08;RNN&#xff09;的时间序列预测模型&#xff0c;由亚马逊在2017年提出。它特别适用于处理多变量时间序列数据&#xff0c;并能够生成概率预测。DeepAR通过联合训练多个相关时间序列来提高预测性能&#xff0c;从而在实际应用中表…...

【无标题】《On Java中文版基础卷+进阶卷》书评

Java语言作为最热门的编程语言之一&#xff0c;关于Java语言的书更是数不胜数&#xff0c;而我选择这本《On Java中文版基础卷进阶卷》作为我学习Java语言的工具书。这本书的作者是《Java编程思想》的Bruce Eckel&#xff0c;《Java编程思想》在之前可谓是鼎鼎有名&#xff0c;…...

【鸿蒙开发】第二十九章 Stage模型-应用上下文Context、进程、线程

目录 1 Stage模型基本概念 1.1 开发流程 3 应用上下文Context的典型使用场景 3.1 获取应用文件路径 3.2 获取和修改加密分区 3.3 获取本应用中其他Module的Context 3.4 订阅进程内UIAbility生命周期变化 4 进程 4.1 概述 5 线程 5.1 线程类型 5.2 使用EventHub进行线…...

AI-Engine-Direct-Helper 快速上手及环境配置

AI-Engine-Direct-Helper 是一个强大的工具&#xff0c;旨在简化和加速在 Qualcomm 平台上开发 AI 应用的过程。通过提供统一的 API、跨平台支持和高效的执行性能&#xff0c;它为开发者提供了一个灵活且高效的开发环境。如果您正在使用 Qualcomm 平台进行 AI 开发&#xff0c;…...

网络安全产品架构图 网络安全相关产品

一、信息安全产品分类 背景 美国将网络和信息安全产品分了9类&#xff1a;鉴别、访问控制、入侵检测、防火墙、公钥基础设施、恶意程序代码防护、漏洞扫描、取证、介质清理或擦除。中国公安部将网络和信息安全产品分了7类&#xff1a;操作系统安全、数据库安全、网络安全、病毒…...

日常知识点之面试后反思裸写string类

1&#xff1a;实现一个字符串类。 简单汇总 最简单的方案&#xff0c;使用一个字符串指针&#xff0c;以及实际字符串长度即可。 参考stl的实现&#xff0c;为了提升string的性能&#xff0c;实际上单纯的字符串指针和实际长度是不够了&#xff0c;如上&#xff0c;有优化方案…...

Linux(socket网络编程)TCP连接

Linux&#xff08;socket网络编程&#xff09;TCP连接 基础文件目录函数系统进程控制函数fork()exec系列函数void abort(void)void assert(int expression)void exit(int status)void _exit(int status)int atexit(void (*func)(void))int on_exit(void (*function)(int,void*)…...

深入 JVM 虚拟机:字符串常量池演变与 intern() 方法工作原理解析

🚀 作者主页: 有来技术 🔥 开源项目: youlai-mall ︱vue3-element-admin︱youlai-boot︱vue-uniapp-template 🌺 仓库主页: GitCode︱ Gitee ︱ Github 💖 欢迎点赞 👍 收藏 ⭐评论 📝 如有错误敬请纠正! 前言 在 Java 开发中,字符串常量池(String Constant…...

从零开始学习人工智能

从零开始学习人工智能可以按照以下步骤进行&#xff1a; 一、了解人工智能的基本概念 学习内容&#xff1a;了解人工智能的定义、发展历程、主要研究方向&#xff08;如机器学习、深度学习、自然语言处理、计算机视觉等&#xff09;、常见应用&#xff08;如语音识别、图像识别…...

解锁电商数据宝藏:淘宝商品详情API实战指南

在电商蓬勃发展的今天&#xff0c;数据已成为驱动业务增长的核心引擎。对于商家、开发者以及数据分析师而言&#xff0c;获取精准、实时的商品数据至关重要。而淘宝&#xff0c;作为国内最大的电商平台&#xff0c;其海量商品数据更是蕴含着巨大的价值。 本文将带你深入探索淘…...

Gui-Guider1.8.1 数字时钟控件找不到定义,无法编译

我们在Gui-Guider中使用的一些控件&#xff0c;生成后会发现在LVGL源码中找不到该控件的定义&#xff0c;这时因为Gui-Guider中的一些控件是其自己编写的而不是LVGL提供的&#xff0c;那么我们该如何应用呢&#xff1f;这里拿Digital Clock数字时钟控件举例&#xff1a; 这里我…...

多模态模型详解

多模态模型是什么 多模态模型是一种能够处理和理解多种数据类型&#xff08;如文本、图像、音频、视频等&#xff09;的机器学习模型&#xff0c;通过融合不同模态的信息来提升任务的性能。其核心在于利用不同模态之间的互补性&#xff0c;增强模型的鲁棒性和准确性。 如何融合…...

Unity3D实现显示模型线框(shader)

系列文章目录 unity工具 文章目录 系列文章目录👉前言👉一、效果展示👉二、第一种方式👉二、第二种方式👉壁纸分享👉总结👉前言 在 Unity 中显示物体线框主要基于图形渲染管线和特定的渲染模式。 要显示物体的线框,通常有两种常见的方法:一种是利用内置的渲染…...

【实测】用全志A733平板搭建一个端侧Deepseek算力平台

随着DeepSeek 的蒸馏技术的横空出世&#xff0c;端侧 SoC 芯片上运行大模型成为可能。那么端侧芯片跑大模型的效果如何呢&#xff1f;本文将在全志 A733 芯片平台上部署一个 DeepSeek-R1:1.5B 模型&#xff0c;并进行实测效果展示。 端侧平台环境 设备&#xff1a;全志A733平板…...

新数据结构(7)——Object

Object类是所有类的父类&#xff0c;在 Java 中&#xff0c;每个类都直接或间接地继承自Object类&#xff0c;也就是说所有类都是object类的子类可以使用Object里的方法。 equals()和hashCode()是Java中Object类所包含的两个关键方法&#xff0c;下面将介绍两个方法。 和equa…...

数据结构-栈和队列的应用

目录 前言一、栈的应用&#xff08;迷宫问题&#xff09;1.1 问题描述1.2 算法选择1.3 算法精化1.4 算法实现1.5 问题结果 二、队列的应用&#xff08;农夫过河问题&#xff09;2.1 问题描述2.2 算法选择2.3 算法精化2.4 算法实现2.5 问题结果 总结 前言 本篇文章使用两个例子…...

【JavaScript】异步编程汇总

异步编程解决方案&#xff1a; 回调函数PromiseGeneratorawait / async 回调函数 回调函数是早期处理异步编程的主要方式&#xff0c;虽然它本身存在很多的缺陷&#xff0c;比如那个时候对于复杂的异步处理常常会出现回调地狱。 但是因为 JavaScript 中当时并没有很好的API来帮…...

【AI系列】从零开始学习大模型GPT (2)- Build a Large Language Model (From Scratch)

前序文章 【AI系列】从零开始学习大模型GPT (1)- Build a Large Language Model (From Scratch) Build a Large Language Model 背景第1章:理解大型语言模型第2章:处理文本数据第3章:编码Attention机制什么是Attention机制?Attention机制的基本原理数学表示应用总结为什么要…...

动态规划——路径问题②

文章目录 931. 下降路径最小和算法原理代码实现 64. 最小路径和算法原理代码实现 174. 地下城游戏算法原理代码实现 931. 下降路径最小和 题目链接&#xff1a;931. 下降路径最小和 算法原理 状态表示&#xff1a; 经验题目要求&#xff1a;dp[i][j]表示到达[i,j]位置时&…...

【每日关注】科技圈重要动态

时代新动态 2025 年 2 月 12 日科技圈重要动态总结全球 AI 治理新进展巴黎 AI 宣言签署&#xff0c;美英缺席 科技巨头合作与竞争苹果联姻阿里开发中国版AI功能DeepSeek生态持续扩展OpenAI拒绝马斯克收购&#xff0c;矛盾公开化 汽车行业动态小米汽车销量跃居新势力第二比亚迪智…...

Postgresql的三种备份方式_postgresql备份

这种方式可以在数据库正在使用的时候进行完整一致的备份&#xff0c;并不阻塞其它用户对数据库的访问。它会产生一个脚本文件&#xff0c;里面包含备份开始时&#xff0c;已创建的各种数据库对象的SQL语句和每个表中的数据。可以使用数据库提供的工具pg_dumpall和pg_dump来进行…...

Linux 配置 MySQL 定时自动备份到另一台服务器

Linux 配置 MySQL 定时自动备份到另一台服务器这里写自定义目录标题 前言1、配置服务器通信1.1&#xff1a;配置过程 2、编写自动备份sh脚本文件3&#xff1a;设置定时自动执行 前言 此方案可使一台服务器上的 MySQL 中的所有数据库每天 0 点自动转储为 .sql 文件&#xff0c;…...

CCF-GESP 等级考试 2024年6月认证C++二级真题解析

2024年6月真题 一、单选题&#xff08;每题2分&#xff0c;共30分&#xff09; 正确答案&#xff1a;C 考察知识点&#xff1a;计算机基础与编程环境 解析&#xff1a;CCF 组织的 GESP 认证考试第 1 级可选择的认证语言有 Scratch、Python、C &#xff0c;共 3 种。答案为C。 …...

vm虚拟机的一些操作命令

PowerShell命令 // 获取虚拟机列表&#xff1a; get-vm // 创建虚拟机&#xff1a; new-vm -Name "BrioDev75" -MemoryStartupBytes 16GB -Path "D:\Hyper-V" // 删除虚拟机&#xff1a; remove-vm -Name "BrioDev75" -Force (-Force参数是…...

sql难点

一、 假设你有一个查询&#xff0c;需要根据 id 是否为 null 来动态生成 SQL 条件&#xff1a; xml复制 <select id"getResources" resultType"Resource">SELECT * FROM resources<where><if test"id ! null">and id <!…...

【多模态大模型】系列1:Transformer Encoder——ViLT、ALBEF、VLMO

目录 1 ViLT2 ALBEF3 VLMO 1 ViLT ViLT: Vision-and-Language Transformer Without Convolution or Region Supervision 图文多模态任务&#xff0c;关键是提取视觉特征和文本特征&#xff0c;然后对齐。在之前的多模态研究工作中&#xff0c;视觉侧通常需要一个目标检测器来…...

2.4 测试数据与初始化

测试数据与初始化 在 Spring Test 中&#xff0c;合理管理测试数据的初始化和清理是保证测试可靠性的关键。本章将介绍多种数据准备方式&#xff0c;涵盖 SQL 脚本执行、编程式初始化 和 动态数据生成&#xff0c;并提供最佳实践示例。 1. 使用 Sql 执行 SQL 脚本 作用 在测…...