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

STM32F4X SDIO(四) SDIO控制器

STM32F4X SDIO(四) SDIO控制器

  • STM32F4X SDIO控制器
    • SDIO控制器框图
      • SDIO控制器时钟
      • 适配器寄存器
      • FIFO
      • 控制单元
      • 命令路径
      • 数据路径
    • SDIO寄存器
      • SDIO控制相关寄存器
        • SDIO电源控制寄存器 (SDIO_POWER)
        • SDIO时钟控制寄存器 (SDIO_CLKCR)
          • SDIO_CK相位
      • SDIO命令响应相关寄存器
        • SDIO参数寄存器 (SDIO_ARG)
        • SDIO命令寄存器 (SDIO_CMD)
        • SDIO命令响应寄存器 (SDIO_RESPCMD)
        • SDIO响应1/2/3/4寄存器 (SDIO_RESPx)
      • SDIO数据相关寄存器
        • SDIO数据定时器寄存器(SDIO_DTIMER)
        • SDIO数据长度寄存器(SDIO_DLEN)
        • SDIO数据控制寄存器(SDIO_DCTRL)
        • SDIO 数据计数器寄存器 (SDIO_DCOUNT)
      • SDIO状态相关寄存器
        • SDIO 状态寄存器 (SDIO_STA)
        • SDIO 中断清零寄存器 (SDIO_ICR)
        • SDIO 屏蔽寄存器 (SDIO_MASK)
      • SDIO FIFO相关寄存器
        • SDIO FIFO 计数器寄存器 (SDIO_FIFOCNT)
        • SDIO 数据 FIFO 寄存器 (SDIO_FIFO)

STM32F4X内部有一个SDIO控制器,开发者可以使用这个控制器跟SD卡进行通信,下面就来简单了解一下STM32F4X的SDIO控制器的使用。

STM32F4X SDIO控制器

SDIO控制器框图

下图为STM32F4X的SDIO控制器框图,框图可以分为以下5部分,适配器寄存器FIFO控制单元命令路径数据路径
在这里插入图片描述

SDIO控制器时钟

STM32F4X的所有外设都需要时钟才能够工作,SDIO控制器也不例外。SDIO控制工作时需要两个时钟,一个是SDIOCLK时钟APB2时钟
SDIOCLK:SDIO控制器输出到SD卡的时钟,该时钟可以通过配置分频系数决定其频率,最大为48MHZ。
APB2时钟:APB2时钟是SDIO控制器的工作时钟。

SDIO控制器的寄存器和FIFO模块使用的APB2时钟、控制单元、命令路径和数据路径使用的是SDIOCLK时钟

适配器寄存器

适配器寄存器模块包含了STM32F4X SDIO控制器的所有寄存器,所有基于SDIO控制器的操作都需要读写寄存器来完成,STM32F4X的SDIO寄存器一共有16个。
在这里插入图片描述

FIFO

STM32F4X的SDIO控制器内部带了FIFO单元,当用户使能了FIFO之后,控制器往SD卡发送数据或者从SD卡接收的数据都可以暂时存到FIFO里面。

控制单元

STM32F4X SDIO控制器的控制单元包含了SD卡电源管理和SD卡的时钟管理功能。

命令路径

STM32F4X SDIO控制器的命令路径主要是给SD卡发送命令并且接收来自SD卡的响应。

数据路径

STM32F4X SDIO控制器的命令路径主要是给SD卡发送数据并且接收来自SD卡的数据。如果使用了8位数据宽度的模式,则SDIO_D[7:0]8根信号线都会使用。如果使用了4位数据宽度的模式,则SDIO_D[3:0]4根信号线都会使用。如果使用了1位数据宽度的模式,则只有SDIO_D01根信号线都会使用。

SDIO寄存器

想要使用STM32F4X的SDIO控制器就要学会配置SDIO的寄存器,下面就来简单了解一下STM32F4X的SDIO寄存器。

SDIO控制相关寄存器

SDIO电源控制寄存器 (SDIO_POWER)

该寄存器的作用是控制SDIO_CK的时钟,通过修改该寄存器使能或者关闭SDIO_CK时钟。
在这里插入图片描述

比特位数值描述
bit[1:0] PWRCTRL00:掉电:停止为卡提供时钟。
01:保留
10:保留,上电
11:通电:为卡提供时钟。
电源控制位
SDIO时钟控制寄存器 (SDIO_CLKCR)

该寄存器主要是控制SDIO_CK时钟的使能,时钟分频系数的确定,数据线位宽的选择等

在这里插入图片描述

比特位数值描述
bit[14] HWFC_EN0:禁止硬件流控制
1:使能硬件流控制
硬件流控制使能
bit[13] NEGEDGE0:在主时钟 SDIOCLK 的上升沿产生 SDIO_CK
1:在主时钟 SDIOCLK 的下降沿产生 SDIO_CK
SDIO_CK 移相选择位
bit[12:11] WIDBUS00:默认总线模式:使用 SDIO_D0
01:4 位宽总线模式:使用 SDIO_D[3:0]
10:8 位宽总线模式:使用 SDIO_D[7:0]
宽总线模式使能位
bit[10] BYPASS0:禁止旁路:在驱动 SDIO_CK 输出信号前,根据 CLKDIV 值对 SDIOCLK 进行分频。
1:使能旁路:SDIOCLK 直接驱动 SDIO_CK 输出信号。
时钟分频器旁路使能位
bit[9] PWRSAV0:始终使能 SDIO_CK 时钟
1:仅在总线激活时使能 SDIO_CK
节能模式配置位
bit[8] CLKEN 0:始终使能 SDIO_CK 时钟
1:仅在总线激活时使能 SDIO_CK
时钟使能位
bit[7:0] CLKDIV 该字段定义输入时钟 (SDIOCLK) 与输出时钟 (SDIO_CK) 之间的分频系数: SDIO_CK 频率 = SDIOCLK / [CLKDIV + 2] 时钟分频系数
SDIO_CK相位

在时钟控制寄存器的bit13中有一个叫时钟相位的概念,所谓的时钟相位意思就是其采样的时间,有两种相位选择,分别是SDIOCLK的上升沿SDIOCLK的下降沿

  • SDIOCLK的上升沿产生SDIO_CK

在这里插入图片描述

  • SDIOCLK的下降沿产生SDIO_CK
    在这里插入图片描述

SDIO命令响应相关寄存器

SDIO参数寄存器 (SDIO_ARG)

该寄存器的作用是将命令的参数发送到SD卡
在这里插入图片描述

比特位数值描述
bit[31:0] CMDARG32位命令参数 作为命令消息的一部分发送给卡的命令参数。如果命令包含参数,则在将命令写入到命令寄存器之前,必须将参数加载到此寄存器中。
SDIO命令寄存器 (SDIO_CMD)

该寄存器主要包含SD卡的命令索引,设置响应类型等。
在这里插入图片描述

比特位数值描述
bit[14] ATACMD0/1 如果 ATACMD 置 1,则 CPSM 将传输 CMD61。
bit[13] nIEN0:使能 CE-ATA 设备中的中断
1:不使能 CE-ATA 设备中的中断
如果该位为 0,则使能 CE-ATA 设备中的中断
bit[12] ENCMDcompl0:如果此位置 1,则使能命令完成信号
0:不如果此位置 1,则使能命令完成信号
如果此位置 1,则使能命令完成信号
bit[11] SDIOSuspend0:发送的命令不是挂起命令
1:发送的命令为挂起命令。
如果此位置 1,则要发送的命令为挂起命令(仅用于 SDIO 卡)
bit[10] CPSMEN0:不使能 CPSM
1:使能 CPSM
命令路径状态机 (CPSM) 使能位
bit[9] WAITPEND 0:CPSM 将不等到数据传输结束后才开始发送命令
1:CPSM 将等到数据传输结束后才开始发送命令
如果此位置 1,则 CPSM 将等到数据传输结束后才开始发送命令
bit[8] WAITINT 0:CPSM 允许命令超时并等待中断请求
1:CPSM 禁止命令超时并等待中断请求
如果此位置 1,则 CPSM 禁止命令超时并等待中断请求
bit[7:6] WAITRESP 00:无响应,但 CMDSENT 标志除外
01:短响应,但 CMDREND 或 CCRCFAIL 标志除外
10:无响应,但 CMDSENT 标志除外
11:长响应,但 CMDREND 或 CCRCFAIL 标志除外
这些位用于配置 CPSM 是否等待响应,如果等待,将等待哪种类型的响应
bit[5:0] CMDINDEX 命令编号 命令索引作为命令消息的一部分发送给卡

该寄存器主要需要关注的有以下几个

  • bit[5:0]:SD卡命令索引,命令索引在前一章里面有讲过https://blog.csdn.net/hwx1546/article/details/134091068,主要就是往bit[5:0]写入需要发送的命令编号。
  • bit[7:6]:响应类型,SD卡有些命令返回的短响应,有些是长响应,也有些是无响应。
SDIO命令响应寄存器 (SDIO_RESPCMD)

有些SD卡响应数据中会包含命令号,而这个命令号可以通过SDIO的命令响应寄存器获取。
在这里插入图片描述

比特位数值描述
bit[5:0] RESPCMD6位命令响应索引 只读位域。包含接收到的最后一个命令响应的命令索引

在这里插入图片描述

SDIO响应1/2/3/4寄存器 (SDIO_RESPx)

该寄存器中包含了SD卡的响应数据,其中短响应用到了SDIO_RESP1寄存器,而长响应用到了SDIO_RESP1/2/3/4寄存器
在这里插入图片描述

寄存器短响应长响应
SDIO_RESP1卡状态[31:0] 卡状态 [127:96]
SDIO_RESP2X 卡状态 [95:64]
SDIO_RESP3X 卡状态 [63:32]
SDIO_RESP4X 卡状态 [31:1]

SDIO数据相关寄存器

SDIO数据定时器寄存器(SDIO_DTIMER)

该寄存器设置的SDIO数据超时周期,其周期是SD卡总线时钟周期*寄存器值
在这里插入图片描述

比特位数值描述
bit[31:0] DATATIME超时值 以卡总线时钟周期表示的数据超时周期。
SDIO数据长度寄存器(SDIO_DLEN)

该寄存器设置的是SD卡读写过程中的需要传输的数据长度。
在这里插入图片描述

比特位数值描述
bit[24:0] DATALENGTH数据字节个数 要传输的数据字节数量。

注意:对于块数据传输,数据长度寄存器中的值必须是块大小的倍数。对于SDIO多字节传输,数据长度寄存器中的值必须在1到512之间。

SDIO数据控制寄存器(SDIO_DCTRL)

在这里插入图片描述

比特位数值描述
bit[11] SDIOEN0/1 如果将该位置 1,则 DPSM 执行特定于 SD I/O 卡的操作。
bit[10] RWMOD0:通过停止 SDIO_D2 进行读取等待控制
1:使用 SDIO_CK 进行读取等待控制
读取等待模式
bit[9] RWSTOP0:如果将 RWSTART 位置 1,则读取等待正在进行中
1:如果将 RWSTART 位置 1,则使能读取等待停止
读取等待停止
bit[8] RWSTART0:读取等待未开始
1:读取等待开始。
如果将该位置 1,则读取等待操作开始
bit[7:4] DBLOCKSIZE 0000:(十进制数 0)块长度 = 2的0次方= 1 字节
0001:(十进制数 1) 块长度 = 2的1次方 = 2 字节
0010:(十进制数 2) 块长度 = 2的2次方 = 4 字节
0011:(十进制数 3) 块长度 = 2的3次方 = 8 字节
0100:(十进制数 4) 块长度 = 2的4次方 = 16 字节
0101:(十进制数 5) 块长度 = 2的5次方 = 32 字节
0110:(十进制数 6) 块长度 = 2的6次方 = 64 字节
0111:(十进制数 7) 块长度 = 2的7次方 = 128 字节
1000:(十进制数 8) 块长度 = 2的8次方 = 256 字节
1001:(十进制数 9) 块长度 = 2的9次方 = 512 字节
1010:(十进制数 10 块长度 = 2的10次方 = 1024 字节
1011:(十进制数 11) 块长度 = 2的11次方 = 2048 字节
1100:(十进制数 12) 块长度 = 2的12次方 = 4096 字节
1101:(十进制数 13) 块长度 = 2的13次方 = 8192 字节
1110:(十进制数 14) 块长度 = 2的14次方 = 16384 字节
1111:(十进制数 15) 保留
定义在选择了块数据传输模式时数据块的长度
bit[3] DMAEN 0:禁止 DMA
1:使能 DMA
DMA 使能位
bit[2] DTMODE 0:块数据传输
1:流或 SDIO 多字节数据传输
数据传输模式选择
bit[1] DTDIR 0:从控制器到卡
1:从卡到控制器
数据传输方向选择
bit[0] DTEN 如果 1 写入到 DTEN 位,则数据传输开始。根据方向位 DTDIR,如果在传输开始时立即将 RW 置 1开始,则 DPSM 变为 Wait_S 状态、Wait_R 状态或读取等待状态。在数据传输结束 后不需要将使能位清零,但必须更新 SDIO_DCTRL 以使能新的数据传输 数据传输使能位

该寄存器主要需要关注的有以下几个

  • bit[1] 数据传输方向:数据传输方向有两个,当我们往SD卡写数据时,方向是SDIO控制器到SD卡。当从SD卡读数据时,方向是从SD卡到SDIO控制器
  • bit[2] 数据传输模式:对于SDHC容量的SD卡来说数据传输模式是块数据传输。对于标准SD卡来说数据传输模式则是流或多字节传输
  • bit[7:4] 数据块大小:对于SDHC容量的SD卡,数据块大小通常是512字节数据块大小要是数据长度寄存器的整数倍
SDIO 数据计数器寄存器 (SDIO_DCOUNT)

该寄存器返回的是传输剩余的数据量,只读。
在这里插入图片描述

比特位数值描述
bit[24:0] DATACOUNT数据计数值 读取该位时,将返回要传输的剩余数据字节数量。写入没有任何效果。

SDIO状态相关寄存器

SDIO 状态寄存器 (SDIO_STA)

该寄存器是一个只读寄存器,保存了SDIO工作过程中的各种状态。该寄存器中的位被置1则代表该位代表的状态发送,如果为0则代表该位的状态没有发生。
在这里插入图片描述

比特位描述
bit[23] CEATAEND针对 CMD61 收到了 CE-ATA 命令完成信号
bit[22] SDIOIT收到了 SDIO 中断 (SDIO interrupt received)
bit[21] RXDAVL接收 FIFO 中有数据可用 (Data available in receive FIFO)
bit[20] TXDAVL传输 FIFO 中有数据可用 (Data available in transmit FIFO)
bit[19] RXFIFOE接收 FIFO 为空 (Receive FIFO empty)
bit[18] TXFIFOE发送 FIFO 为空 (Transmit FIFO empty)
bit[17] RXFIFOE接收 FIFO 已满 (Receive FIFO full)
bit[16] TXFIFOF传输 FIFO 已满 (Transmit FIFO full)
bit[15] RXFIFOHF接收 FIFO 半满
bit[14] TXFIFOHE传输 FIFO 半空
bit[13] RXACT数据接收正在进行中 (Data receive in progress)
bit[12] TXACT数据传输正在进行中 (Data transmit in progress)
bit[11] CMDACT命令传输正在进行中 (Command transfer in progress)
bit[10] DBCKEND已发送/ 接收数据块(CRC 校验通过)
bit[9] STBITERR在宽总线模式下,并非在所有数据信号上都检测到了起始位
bit[8] DATAEND数据结束(数据计数器 SDIDCOUNT 为零)
bit[7] CMDSENT命令已发送(不需要响应)(Command sent (no response required))
bit[6] CMDREND已接收命令响应(CRC 校验通过)
bit[5] RXOVERR收到了 FIFO 上溢错误 (Received FIFO overrun error)
bit[4] TXUNDERR传输 FIFO 下溢错误 (Transmit FIFO underrun error)
bit[3] DTIMEOUT数据超时 (Data timeout)
bit[2] CTIMEOUT命令响应超时 (Command response timeout)
bit[1] DCRCFAIL已发送/ 接收数据块(CRC 校验失败)
bit[0] CCRCFAIL已接收命令响应(CRC 校验失败)
SDIO 中断清零寄存器 (SDIO_ICR)

当用户往该寄存器的某些位写1时,会将SDIO_STA的对应位清0

比特位数值描述
bit[23] CEATAENDC0:未将 CEATAEND 清零
1:已将 CEATAEND 清零
CEATAEND 标志清零位
bit[22] SDIOITC0:未将 SDIOITC清零
1:已将 SDIOITC清零
SDIOIT 标志清零位
bit[10] DBCKENDC0:未将 DBCKENDC清零
1:已将 DBCKENDC清零
DBCKENDC标志清零位
bit[9] STBITERRC0:未将 STBITERRC清零
1:已将 STBITERRC清零
STBITERRC标志清零位
bit[8] DATAENDC0:未将 DATAENDC清零
1:已将 DATAENDC清零
DATAENDC标志清零位
bit[7] CMDSENTC0:未将 CMDSENTC清零
1:已将 CMDSENTC清零
CMDSENTC标志清零位
bit[6] CMDRENDC0:未将 CMDRENDC清零
1:已将 CMDRENDC清零
CMDRENDC标志清零位
bit[5] RXOVERRC0:未将 RXOVERRC清零
1:已将 RXOVERRC清零
RXOVERRC标志清零位
bit[4] TXUNDERRC0:未将 TXUNDERRC清零
1:已将 TXUNDERRC清零
TXUNDERRC标志清零位
bit[3] DTIMEOUTC0:未将 DTIMEOUTC清零
1:已将 DTIMEOUTC清零
DTIMEOUTC标志清零位
bit[2] CTIMEOUTC0:未将 CTIMEOUTC清零
1:已将 CTIMEOUTC清零
CTIMEOUTC标志清零位
bit[1] DCRCFAILC0:未将 DCRCFAILC清零
1:已将 DCRCFAILC清零
DCRCFAILC标志清零位
bit[0] CCRCFAILC0:未将 CCRCFAILC清零
1:已将 CCRCFAILC清零
CCRCFAILC标志清零位
SDIO 屏蔽寄存器 (SDIO_MASK)

当用户往该寄存器的某些位写1时,该标志位就会产生一个中断。

在这里插入图片描述

比特位数值描述
bit[23] CEATAENDIE0:禁止接收到 CE-ATA 命令完成信号时中断
1:使能接收到 CE-ATA 命令完成信号时中断
接收到 CE-ATA 命令完成信号时中断使能
bit[22] SDIOITIE0:禁止接收到 SDIO 模式中断时中断
1:使能接收到 SDIO 模式中断时中断
接收到 SDIO 模式中断时中断使能
bit[21] RXDAVLIE0:禁止 Rx FIFO 中有数据时中断
1:使能 Rx FIFO 中有数据时中断
Rx FIFO 中数据可用时中断使能
bit[20] TXDAVLIE0:禁止 Tx FIFO 中数据可用时中断
1:使能 Tx FIFO 中数据可用时中断
Tx FIFO 中数据可用时中断使能
bit[19] RXFIFOEIE0:禁止 Rx FIFO 为空时中断
1:使能 Rx FIFO 为空时中断
Rx FIFO 为空时中断使能
bit[18] TXFIFOEIE0:禁止 Tx FIFO 为空时中断
1:使能 Tx FIFO 为空时中断
Tx FIFO 为空时中断使能
bit[17] RXFIFOFIE0:禁止 Rx FIFO 变满时中断
1:使能 Rx FIFO 变满时中断
Rx FIFO 变满时中断使能
bit[16] TXFIFOFIE0:禁止 Tx FIFO 变满时中断
1:使能 Tx FIFO 变满时中断
Tx FIFO 变满时中断使能
bit[15] RXFIFOHFIE0:禁止 Rx FIFO 半满时中断
1:使能 Rx FIFO 半满时中断
Rx FIFO 半满时中断使能
bit[14] TXFIFOHEIE0:禁止 Tx FIFO 半空时中断
1:使能 Tx FIFO 半空时中断
Tx FIFO 半空时中断使能
bit[13] RXACTIE0:禁止数据接收操作中断
1:使能数据接收操作中断
数据接收操作中断使能
bit[12] TXACTIE0:禁止数据传输操作中断
1:使能数据传输操作中断
数据传输操作中断使能
bit[11] CMDACTIE0:禁止命令操作中断
1:使能命令操作中断
命令操作中断使能
bit[10] DBCKENDIE0:禁止数据块结束中断
1:使能数据块结束中断
数据块结束中断使能
bit[9] STBITERRIE0:禁止起始位错误中断
1:使能起始位错误中断
起始位错误中断使能
bit[8] DATAENDIE0:禁止数据结束中断
1:使能数据结束中断
数据结束中断使能
bit[7] CMDSENTIE0:禁止命令发送中断
1:使能命令发送中断
命令发送中断使能
bit[6] CMDRENDIE0:禁止命令响应接收中断
1:使能命令响应接收中断
命令响应接收中断使能
bit[5] RXOVERRIE0:禁止 Rx FIFO 上溢错误中断
1:使能 Rx FIFO 上溢错误中断
Rx FIFO 上溢错误中断使能
bit[4] TXUNDERRIE0:禁止 Tx FIFO 下溢错误中断
1:使能 Tx FIFO 下溢错误中断
Tx FIFO 下溢错误中断使能
bit[3] DTIMEOUTIE0:禁止数据超时中断
1:使能数据超时中断
数据超时中断使能
bit[2] CTIMEOUTIE0:禁止命令超时中断
1:使能命令超时中断
命令超时中断使能
bit[1] DCRCFAILIE0:禁止数据 CRC 失败中断
1:使能数据 CRC 失败中断
数据 CRC 失败中断使能
bit[0] CCRCFAILIE0:禁止命令 CRC 失败中断
1:使能命令 CRC 失败中断
命令 CRC 失败中断使能

SDIO FIFO相关寄存器

SDIO FIFO 计数器寄存器 (SDIO_FIFOCNT)

该寄存器包含了FIFO写入或读取的剩余字节数
在这里插入图片描述

比特位数值描述
bit[24:0] FIFOCOUNTFIFO剩余的字节数 要在 FIFO 中写入或读取的剩余字数
SDIO 数据 FIFO 寄存器 (SDIO_FIFO)

该寄存器用来发生个接收SD卡数据
在这里插入图片描述

比特位数值描述
bit[31:0] FIFODataFIFO数据 接收和传输 FIFO 数据

相关文章:

STM32F4X SDIO(四) SDIO控制器

STM32F4X SDIO(四) SDIO控制器 STM32F4X SDIO控制器SDIO控制器框图SDIO控制器时钟适配器寄存器FIFO控制单元命令路径数据路径 SDIO寄存器SDIO控制相关寄存器SDIO电源控制寄存器 (SDIO_POWER)SDIO时钟控制寄存器 (SDIO_CLKCR)SDIO_CK相位 SDIO命令响应相关…...

【flink】Task 故障恢复详解以及各重启策略适用场景说明

文章目录 一. 重启策略种类(Restart Strategies)1. Fixed Delay Restart Strategy2. Failure Rate Restart Strategy3. Fallback Restart Strategy4. No Restart Strategy 二. 故障恢复策略(Failover Strategies)1. (全…...

一个计算机高手的成长3

这是转在茶余的帖子。文中绝大部分技术术语我不懂,所以无资格评论他的技术价值。但文章强烈的逻辑说服力,和通篇流露的进取精神,使我觉得这是篇有价值的帖子,至少值得一读。 就像我开始从MIS转到通信一样,我看过大量通…...

2023应届生能力考试含解析(Java后端开发)——(1)

1.以下代码的循环次数是 ( ) public class Test {public static void main(String[] args) {int i 7;do {System.out.println(--i);--i;} while (i ! 0);System.out.println(i);} } A 0 B 1 C 7 D 无限次 这段代码会导致无限循环的原因是在 do-while 循环中&#…...

Ansible中的任务执行控制

循环 简单循环 {{item}} 迭代变量名称 loop: - value1 - value2 - ... //赋值列表{{item}} //迭代变量名称循环散列或字典列表 - name: create filehosts: host1tasks:- name: file moudleservice:name: "{{ item.name }}"state: "{{…...

利用maven的dependency插件分析工程的依赖

dependency:analyze https://maven.apache.org/plugins/maven-dependency-plugin/analyze-mojo.html 分析项目的依赖,确定哪些:用了并且声明了、用了但没有声明、没有使用但声明了。 dependency:analyze可以单独使用,所以它总是会执行test-…...

【广州华锐互动】VR野外求生技能学习,让你感受真实的冒险之旅!

随着科技的迅速发展,虚拟现实(VR)技术为人们提供了一个全新的、身临其境的探险体验。通过将用户带入一个仿真的、沉浸式的虚拟环境,VR互动体验让人们在安全的氛围中感受到野外探险的乐趣。本文将从视觉呈现、沉浸式体验、交互性和应用范围四个方面&#…...

k8s、调度约束

Kubernetes 是通过 List-Watch **** 的机制进行每个组件的协作,保持数据同步的,每个组件之间的设计实现了解耦 用户是通过 kubectl 根据配置文件,向 APIServer 发送命令,在 Node 节点上面建立 Pod 和 Container。 APIS…...

Redis的介绍,以及Redis的安装(本机windows版,虚拟机Linux版)和Redis常用命令的介绍

目录 一. Redis简介 二. Redis的安装 2.1 Linux版安装 2.2 windows版安装 三. Redis的常用命令 一. Redis简介 Redis是一个开源(BSD许可),内存存储的数据结构服务器,可用作数据库,高速缓存和消息队列代理。 它…...

电子器件 MOS管的参数、选型与使用技巧

一、电路符号 MOS管分为 G(栅极)、S(源极)、D(漏极) 三极,在图中 S 极有两条线,D 极只有一条线。 1.1 NMOS 和 PMOS 下图中,左侧是 PMOS,右侧是 NMOS。箭头…...

EtherCAT主站SOEM -- 2 -- SOEM之ethercatbase.h/c文件解析

EtherCAT主站SOEM -- 2 -- SOEM之ethercatbase.h/c文件解析 一 ethercatbase.h/c文件功能预览:二 ethercatbase.h/c 文件的主要函数的作用:2.1 ecx_writedatagramdata:2.2 ecx_setupdatagram:2.3 ecx_adddatagram:2.4 …...

Spring集成高性能队列Disruptor

Disruptor简介 Disruptor(中文翻译为“破坏者”或“颠覆者”)是一种高性能、低延迟的并发编程框架,最初由LMAX Exchange开发。它的主要目标是解决在金融交易系统等需要高吞吐量和低延迟的应用中的并发问题。 Disruptor特点 无锁并发&#x…...

C++——类和对象(中)完结

赋值运算符重载 运算符重载 C 为了增强代码的可读性引入了运算符重载 , 运算符重载是具有特殊函数名的函数 ,也具有其 返回值类型,函数名字以及参数列表,其返回值类型与参数列表与普通的函数类似。 函数名字为:关键…...

Sqoop的安装和使用

目录 一.安装 二.导入 1.全量导入 一.MySQL导入HDFS 二.MySQL导入Hive 2.增量导入 一.过滤导入hdfs/hive 二.导出 一.安装 1.下载地址:sqoop下载地址 2.解压 tar -zxvf ./sqoop-1.4.7.bin__hadoop-2.6.0.tar.gz -C ../module/ 3.改名和配置归属权限 #改名…...

java毕业设计基于springboot+vue的村委会管理系统

项目介绍 采用JAVA语言,结合SpringBoot框架与Vue框架以及MYSQL数据库设计并实现的。本村委会管理系统主要包括个人中心、村民管理、村委会管理、村民信息管理、土地变更管理、农业补贴管理、党员信息管理等多个模块。它帮助村委会管理实现了信息化、网络化&#xf…...

【C++】多态 ⑪ ( 纯虚函数和抽象类 | 纯虚函数语法 | 抽象类和实现 | 代码示例 )

文章目录 一、纯虚函数和抽象类1、纯虚函数2、纯虚函数语法3、抽象类和实现 二、完整代码示例 一、纯虚函数和抽象类 1、纯虚函数 纯虚函数 : 在 C 语言中 , " 纯虚函数 " 是 特殊类型的 虚函数 , " 纯虚函数 " 在 父类 中 声明 , 但是没有实现 ; 抽象类 …...

node 第十四天 基于express的第三方中间件multer node后端处理用户上传文件

Multer 是一个 node.js 中间件,用于处理multipart/form-data 类型的表单数据,它主要用于上传文件。它是写在 busboy 之上的所以非常高效。前面我们已经知道了怎样利用express提供的静态资源处理中间件express.static()处理用户请求静态资源文件(图片, js…...

KnowledgeGPT:利用检索和存储访问知识库上增强大型语言模型10.30

利用检索和存储访问知识库上增强大型语言模型 摘要引言2 相关研究3方法3.1 任务定义3.2 知识检索3.2.1 代码实现3.2.2 实体链接3.2.3 获取实体信息3.2.4 查找实体或值3.2.5 查找关系 3.3 知识存储 4 实验4.1 实验设置4.2 流行知识库上的查询4.3 基于知识的问题回答 摘要 大型语…...

Angular material Chips Autocomplete

Chips Autocomplete 官网的例子我没法正常使用,无法实现搜索 我的select是个通用组件,现在贴代码: component.ts import {Component,ElementRef,forwardRef,Input,OnChanges,OnDestroy,OnInit,SimpleChanges,ViewChild, } from angular/co…...

『亚马逊云科技产品测评』活动征文|搭建基础运维环境

授权声明:本篇文章授权活动官方亚马逊云科技文章转发、改写权,包括不限于在 Developer Centre, 知乎,自媒体平台,第三方开发者媒体等亚马逊云科技官方渠道 目录 1、什么是容器化部署 2、连接到控制台 3、安装docker 3.1 更新…...

生成xcframework

打包 XCFramework 的方法 XCFramework 是苹果推出的一种多平台二进制分发格式,可以包含多个架构和平台的代码。打包 XCFramework 通常用于分发库或框架。 使用 Xcode 命令行工具打包 通过 xcodebuild 命令可以打包 XCFramework。确保项目已经配置好需要支持的平台…...

大数据零基础学习day1之环境准备和大数据初步理解

学习大数据会使用到多台Linux服务器。 一、环境准备 1、VMware 基于VMware构建Linux虚拟机 是大数据从业者或者IT从业者的必备技能之一也是成本低廉的方案 所以VMware虚拟机方案是必须要学习的。 (1)设置网关 打开VMware虚拟机,点击编辑…...

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

系统设计 --- MongoDB亿级数据查询优化策略

系统设计 --- MongoDB亿级数据查询分表策略 背景Solution --- 分表 背景 使用audit log实现Audi Trail功能 Audit Trail范围: 六个月数据量: 每秒5-7条audi log,共计7千万 – 1亿条数据需要实现全文检索按照时间倒序因为license问题,不能使用ELK只能使用…...

Cinnamon修改面板小工具图标

Cinnamon开始菜单-CSDN博客 设置模块都是做好的,比GNOME简单得多! 在 applet.js 里增加 const Settings imports.ui.settings;this.settings new Settings.AppletSettings(this, HTYMenusonichy, instance_id); this.settings.bind(menu-icon, menu…...

听写流程自动化实践,轻量级教育辅助

随着智能教育工具的发展,越来越多的传统学习方式正在被数字化、自动化所优化。听写作为语文、英语等学科中重要的基础训练形式,也迎来了更高效的解决方案。 这是一款轻量但功能强大的听写辅助工具。它是基于本地词库与可选在线语音引擎构建,…...

VM虚拟机网络配置(ubuntu24桥接模式):配置静态IP

编辑-虚拟网络编辑器-更改设置 选择桥接模式,然后找到相应的网卡(可以查看自己本机的网络连接) windows连接的网络点击查看属性 编辑虚拟机设置更改网络配置,选择刚才配置的桥接模式 静态ip设置: 我用的ubuntu24桌…...

【VLNs篇】07:NavRL—在动态环境中学习安全飞行

项目内容论文标题NavRL: 在动态环境中学习安全飞行 (NavRL: Learning Safe Flight in Dynamic Environments)核心问题解决无人机在包含静态和动态障碍物的复杂环境中进行安全、高效自主导航的挑战,克服传统方法和现有强化学习方法的局限性。核心算法基于近端策略优化…...

使用Spring AI和MCP协议构建图片搜索服务

目录 使用Spring AI和MCP协议构建图片搜索服务 引言 技术栈概览 项目架构设计 架构图 服务端开发 1. 创建Spring Boot项目 2. 实现图片搜索工具 3. 配置传输模式 Stdio模式(本地调用) SSE模式(远程调用) 4. 注册工具提…...

Web后端基础(基础知识)

BS架构:Browser/Server,浏览器/服务器架构模式。客户端只需要浏览器,应用程序的逻辑和数据都存储在服务端。 优点:维护方便缺点:体验一般 CS架构:Client/Server,客户端/服务器架构模式。需要单独…...