FPGA高端项目:FPGA基于GS2971+GS2972架构的SDI视频收发+OSD动态字符叠加,提供1套工程源码和技术支持
目录
- 1、前言
- 免责声明
- 2、相关方案推荐
- 本博已有的 SDI 编解码方案
- 本方案的SDI接收+发送
- 本方案的SDI接收+图像缩放应用
- 本方案的SDI接收+纯verilog图像缩放+纯verilog多路视频拼接应用
- 本方案的SDI接收+HLS图像缩放+HLS多路视频拼接应用
- 本方案的SDI接收+HLS多路视频融合叠加应用
- 本方案的SDI接收+GTX 8b/10b编解码SFP光口传输
- FPGA的SDI视频编解码项目培训
- 3、详细设计方案
- 设计原理框图
- SDI 相机
- GS2971+GS2972架构
- BT1120转RGB
- OSD动态字符叠加
- VDMA图像缓存
- RGB转BT1120
- SDI转HDMI盒子
- 工程源码架构
- 4、工程源码19详解-->SDI收发+OSD动态字符叠加
- 5、工程移植说明
- vivado版本不一致处理
- FPGA型号不一致处理
- 其他注意事项
- 6、上板调试验证
- 准备工作
- OSD动态字符叠加输出视频演示
- 7、福利:工程代码的获取
FPGA高端项目:FPGA基于GS2971+GS2972架构的SDI视频收发+OSD动态字符叠加,提供1套工程源码和技术支持
1、前言
目前FPGA实现SDI视频编解码有两种方案:一是使用专用编解码芯片,比如典型的接收器GS2971,发送器GS2972,优点是简单,比如GS2971接收器直接将SDI解码为并行的YCrCb422,GS2972发送器直接将并行的YCrCb422编码为SDI视频,缺点是成本较高,可以百度一下GS2971和GS2972的价格;另一种方案是使用FPGA逻辑资源部实现SDI编解码,利用Xilinx系列FPGA的GTP/GTX资源实现解串,利用Xilinx系列FPGA的SMPTE SDI资源实现SDI编解码,优点是合理利用了FPGA资源,GTP/GTX资源不用白不用,缺点是操作难度大一些,对FPGA开发者的技术水平要求较高。有意思的是,这两种方案在本博这里都有对应的解决方案,包括硬件的FPGA开发板、工程源码等等。
本设计基于Xilinx的Zynq7100-xc7z100ffg900-2中端FPGA开发板使用GS2971实现SDI视频接收转HDMI输出,输入源为一个HD-SDI相机,也可以使用SD-SDI或者3G-SDI相机,因为本设计是三种SDI视频自适应的;同轴的SDI视频通过同轴线连接到GS2971转接板,GS2971解码芯片将同轴的串行的SDI视频解码为并行的BT1120格式视频,至此,SDI视频解码操作已经完成,可以进行常规的图像处理操作了;本设计的目的是做HLS动态字符叠加后再经过GS2972后输出,需要进行BT1120视频转RGB+OSD动态字符叠加+图像缓存+RGB转BT1120视频操作操作;本设计使用BT1120转RGB模块实现视频格式转换;动态字符叠加采用HLS方案,支持任意字符内容、任意位置显示、任意字符颜色大小等特点,通过SDK软件配置并实时控制;图像缓存使用Xilinx官方的VDMA架构实现图像3帧缓存,缓存介质为板载的DDR3,该架构是Xilinx官方力推的架构,输入接口为AXI4-Stream;图像从DDR3读出后,进入纯verilog代码实现RGB转BT1120视频模块实现视频格式转换;最后BT1120视频经过GS2972编码芯片被编码为同轴的串行的SDI视频输出,并经过SDI转HDMI盒子输出到显示器;本博客提供1套工程源码,具体如下,请点击图片放大查看:
现对上述1套工程源码做如下解释,方便读者理解:
工程源码19:
输入视频为HD-SDI相机,输入分辨率为1920x1080@30Hz,经过GS2971解码+BT1120转RGB+OSD动态字符叠加+VDMA图像缓存+GS2972编码后,以3G-SDI接口方式输出,输出分辨率为1920x1080@60Hz;此工程的VDMA图像缓存架构将视频缓存到PS端DDR3,即可用于纯FPGA项目,比如可用于Xilinx的Artix7、Kintex7、Virtex7等FPGA,配合MicroBlaze;也可用于Zynq系列FPGA项目,比如可用于Xilinx的Zynq7000系列、Zynq7000、Zynq UltraScale等FPGA;
本文详细描述了Xilinx的Zynq7100-xc7z100ffg900-2中端FPGA开发板使用GS2971+GS2972架构的SDI视频收发+OSD动态字符叠加,工程代码编译通过后上板调试验证,可直接项目移植,适用于在校学生做毕业设计、研究生项目开发,也适用于在职工程师做项目开发,可应用于医疗、军工等行业的数字成像和图像传输领域;
提供完整的、跑通的工程源码和技术支持;
工程源码和技术支持的获取方式放在了文章末尾,请耐心看到最后;
免责声明
本工程及其源码即有自己写的一部分,也有网络公开渠道获取的一部分(包括CSDN、Xilinx官网、Altera官网等等),若大佬们觉得有所冒犯,请私信批评教育;基于此,本工程及其源码仅限于读者或粉丝个人学习和研究,禁止用于商业用途,若由于读者或粉丝自身原因用于商业用途所导致的法律问题,与本博客及博主无关,请谨慎使用。。。
2、相关方案推荐
本博已有的 SDI 编解码方案
我的博客主页开设有SDI视频专栏,里面全是FPGA编解码SDI的工程源码及博客介绍;既有基于GS2971/GS2972的SDI编解码,也有基于GTP/GTX资源的SDI编解码;既有HD-SDI、3G-SDI,也有6G-SDI、12G-SDI等;专栏地址链接:点击直接前往
本方案的SDI接收+发送
本方案采用GS2971接收SDI视频,然后进行图像缓存操作(图像缓存方案包括FDMA方案和VDMA方案,缓存介质包括PL端DDR3、PS端DDR3),最后用GS2971发送SDI视频,最终以3G-SDI输出;提供3套工程源码,3套工程源码详情请参考“1、前言”中的截图,上述所有工程源码均已上板调试通过,详细设计说明等待本博更新对用的博客。。。
本方案的SDI接收+图像缩放应用
本方案采用GS2971接收SDI视频,然后进行图像缩放操作(图像缩放方案包括纯verilog图像缩放方案和HLS图像缩放方案),再进行图像缓存操作(图像缓存方案包括FDMA方案和VDMA方案,缓存介质包括PL端DDR3、PS端DDR3),最后用GS2971发送SDI视频,最终以3G-SDI输出;提供3套工程源码,3套工程源码详情请参考“1、前言”中的截图,上述所有工程源码均已上板调试通过,详细设计说明等待本博更新对用的博客。。。
本方案的SDI接收+纯verilog图像缩放+纯verilog多路视频拼接应用
本方案采用GS2971接收SDI视频,然后进行图像缩放操作(图像缩放方案为纯verilog图像缩放),再进行多路视频拼接(包括2路、4路、8路、16路视频拼接,拼接方案为纯verilogFDMA方案,视频拼接和图像缓存为一个整体,缓存介质包括PL端DDR3、PS端DDR3),最后用GS2972编码器发送SDI视频,最终以3G-SDI输出;提供8套工程源码,8套工程源码详情请参考“1、前言”中的截图,上述所有工程源码均已上板调试通过,详细设计说明等待本博更新对用的博客。。。
本方案的SDI接收+HLS图像缩放+HLS多路视频拼接应用
本方案采用GS2971接收SDI视频,然后进行图像缩放操作(图像缩放方案为HLS图像缩放),再进行多路视频拼接(拼接方案为Xilinx官方的Video Mixer方案,包括2路、4路、8路、16路视频拼接),再进行图像缓存操作(图像缓存方案为VDMA方案,缓存介质包括PS端DDR3),最后用GS2972编码器发送SDI视频,最终以3G-SDI输出;提供4套工程源码,4套工程源码详情请参考“1、前言”中的截图,上述所有工程源码均已上板调试通过,详细设计说明等待本博更新对用的博客。。。
本方案的SDI接收+HLS多路视频融合叠加应用
本方案采用GS2971接收SDI视频,然后进行多路视频融合叠加(方案为HLS多路视频融合叠加),再进行图像缓存操作(图像缓存方案为VDMA方案,缓存介质包括PS端DDR3),最后用GS2972编码器发送SDI视频,最终以3G-SDI输出;提供1套工程源码,工程源码详情请参考“1、前言”中的截图,上述所有工程源码均已上板调试通过,详细设计说明等待本博更新对用的博客。。。
本方案的SDI接收+GTX 8b/10b编解码SFP光口传输
本方案采用GS2971接收SDI视频,然后进行8b/10b编解码作(8b/10b编解码方案为GTX高速接口方案,线速率为5G),再通过板载的SFP光口实现数据回环,再进行图像缓存操作(图像缓存方案为FDMA方案,缓存介质包括PL端DDR3、PS端DDR3),最后用GS2972编码器发送SDI视频,最终以3G-SDI输出;提供2套工程源码,2套工程源码详情请参考“1、前言”中的截图,详细设计方案请参考我专门的博客,上述所有工程源码均已上板调试通过,详细设计说明等待本博更新对用的博客。。。
FPGA的SDI视频编解码项目培训
基于目前市面上FPGA的SDI视频编解码项目培训较少的特点,本博专门开设了FPGA的SDI视频编解码高级项目培训班,专门培训SDI视频的编解码,具体培训计划细节如下:
1、我发你上述全套工程源码和对应的工程设计文档网盘链接,你保存下载,作为培训的核心资料;
2、你根据自己的实际情况安装好对应的开发环境,然后对着设计文档进行浅层次的学习;
3、遇到不懂的随时问我,包括代码、职业规划、就业咨询、人生规划、战略规划等等;
4、每周末进行一次腾讯会议,我会检查你的学习情况和面对面沟通交流;
5、你可以移植代码到你自己的FPGA开发板上跑,如果你没有板子,你根据你自己的需求修改代码后,编译工程,把bit发我,我帮你下载到我的板子上验证;或者你可以买我的开发板;
3、详细设计方案
设计原理框图
工程源码19的设计原理框图如下,该设计采用OSD动态字符叠加+VDMA图像缓存方案:
SDI 相机
我用到的是SDI相机为HD-SDI相机,输出分辨率为1920x1080@30Hz,本工程对SDI相机的选择要求范围很宽,可以是SD-SDI、HD-SDI、3G-SDI,因为很设计对这三种SDI视频是自动识别并自适应的;如果你的手里没有SDI相机,也可以去某宝买HDMI转SDI盒子,一百多块钱就可以搞定,使用笔记本电脑模拟视频源,用HDMI线连接HDMI转SDI盒子,输出SDI视频做事视频源,可以模拟SDI相机;
GS2971+GS2972架构
本设计采用GS2971解码芯片接收SDI+GS2972芯片编码发送SDI,GS2971和GS2972不需要软件配置,硬件电阻上下拉即可完成配置,本设计配置为输出/输入BT1120格式视频,当然,你在设计电路时也可以配置为输出CEA861格式视频;GS2971+GS2972硬件架构如下,提供PDF格式原理图:
BT1120转RGB
BT1120转RGB模块的作用是将SMPTE SD/HD/3G SDI IP核解码输出的BT1120视频转换为RGB888视频,它由BT1120转CEA861模块、YUV422转YUV444模块、YUV444转RGB888三个模块组成,该方案参考了Xilinx官方的设计;BT1120转RGB模块代码架构如下:
OSD动态字符叠加
OSD动态字符叠加设计框图如下如所示:
OSD动态字符叠加由视频流和字符流叠加而成,视频流来源于输入视频,经VDMA缓存DDR3后输入到动态字符叠加模块;字符流由SDK软件产生,来源是国标汉字字库,可通过软件控制字符内容产生、字符大小、字符颜色、字符显示位置等信息,并通过c语言系统函数写入DDR3,然后随视频流叠在显示;设计加采用HLS方案C++代码实现,并综合成RTL后封装为IP,可在vivado中调用该IP,关于这个方案详情,请参考我之前的博客,博客链接如下:
点击直接前往
该IP在vivado中的综合资源占用情况如下:
OSD动态字符叠加需要在SDK中运行驱动和用户程序才能正常工作,我在工程中给出了C语言程序,具体参考工程源码;
VDMA图像缓存
图像缓存使用Xilinx官方的VDMA架构实现图像3帧缓存,缓存介质为板载的PS端DDR3;VDMA图像缓存架构由Video In to AXI4-Stream、VDMA、Zynq软核、Video Timing Controller、AXI4-Stream To Video Out构成;详情请参考后面的“工程源码架构小节”,VDMAIP核UI配置界面如下:
VDMA加需要在SDK中运行驱动和用户程序才能正常工作,我在工程中给出了C语言程序,具体参考工程源码;
RGB转BT1120
在SDI输出方式下需要使用该模块;RGB转BT1200模块的作用是将用户侧的RGB视频转换为BT1200视频输出给SMPTE SD/HD/3G SDI IP核;RGB转BT1120模块由RGB888转YUV444模块、YUV444转YUV422模块、SDI视频编码模块、数据嵌入模块组成,该方案参考了Xilinx官方的设计;BT1120转RGB模块代码架构如下:
SDI转HDMI盒子
在SDI输出方式下需要使用到SDI转HDMI盒子,因为我手里的显示器没有SDI接口,只有HDMI接口,为了显示SDI视频,只能这么做,当然,如果你的显示器有SDI接口,则可直接连接显示,我的SDI转HDMI盒子在某宝购买,不到100块;我用的截图如下:
工程源码架构
工程Block Design和源码架构如下,Block Design设计为图像缓存架构的部分,缓存PS端DDR3:
工程源码PL端时钟由Zynq软核提供,所以需要运行运行SDK以启动Zynq,此外,OSD动态字符叠加、VDMA等IP核都需要运行软件驱动才能正常工作,SDK软件代码架构如下:
SDK代码中,设置了两个字符显示位置,用户可根据自己的需求任意修改;
在屏幕坐标(0,0)位置显示黑色字符“台湾一定要解放”;
在屏幕坐标(660,240)位置显示红色字符“台湾一定要解放”;
具体输出效果请参考后面第6章节的“HLS动态字符叠加输出视频演示”;
4、工程源码19详解–>SDI收发+OSD动态字符叠加
开发板FPGA型号:Xilinx–Zynq7100–xc7z100ffg900-2;
开发环境:Vivado2019.1;
输入:HD-SDI相机,分辨率1920x1080@30Hz;
输出:3G-SDI,分辨率1920x1080@60Hz;
SDI接收方案:GS2971解码芯片;
SDI发送方案:GS2972编码芯片;
动态字符叠加方案:自研HLS方案;
图像缓存方案:VDMA方案;
图像缓存路径:PS端DDR3;
工程作用:此工程目的是让读者掌握FPGA实现SDI+OSD动态字符叠加的设计能力,以便能够移植和设计自己的项目;
工程Block Design和工程代码架构请参考第3章节“工程源码架构“小节内容;
工程的资源消耗和功耗如下:
5、工程移植说明
vivado版本不一致处理
1:如果你的vivado版本与本工程vivado版本一致,则直接打开工程;
2:如果你的vivado版本低于本工程vivado版本,则需要打开工程后,点击文件–>另存为;但此方法并不保险,最保险的方法是将你的vivado版本升级到本工程vivado的版本或者更高版本;
3:如果你的vivado版本高于本工程vivado版本,解决如下:
打开工程后会发现IP都被锁住了,如下:
此时需要升级IP,操作如下:
FPGA型号不一致处理
如果你的FPGA型号与我的不一致,则需要更改FPGA型号,操作如下:
更改FPGA型号后还需要升级IP,升级IP的方法前面已经讲述了;
其他注意事项
1:由于每个板子的DDR不一定完全一样,所以MIG IP需要根据你自己的原理图进行配置,甚至可以直接删掉我这里原工程的MIG并重新添加IP,重新配置;
2:根据你自己的原理图修改引脚约束,在xdc文件中修改即可;
3:纯FPGA移植到Zynq需要在工程中添加zynq软核;
6、上板调试验证
准备工作
需要准备的器材如下:
FPGA开发板;
SDI摄像头;
SDI转HDMI盒子;
HDMI显示器;
我的开发板了连接如下:
图中居左者为GS2971接收芯片,对应的金色同轴线连接SDI相机;居右者为GS2972发送芯片,对应的黑色同轴线连接SDI转HDMI盒子;SDI转HDMI盒子再连接显示器;
OSD动态字符叠加输出视频演示
FPGA基于GS2971的SDI接收+HLS动态字符叠加+GS2972的SDI发送输出效果如下:
GS2971的SDI接收+HLS动态字符叠加
7、福利:工程代码的获取
福利:工程代码的获取
代码太大,无法邮箱发送,以某度网盘链接方式发送,
资料获取方式:私,或者文章末尾的V名片。
网盘资料如下:
相关文章:

FPGA高端项目:FPGA基于GS2971+GS2972架构的SDI视频收发+OSD动态字符叠加,提供1套工程源码和技术支持
目录 1、前言免责声明 2、相关方案推荐本博已有的 SDI 编解码方案本方案的SDI接收发送本方案的SDI接收图像缩放应用本方案的SDI接收纯verilog图像缩放纯verilog多路视频拼接应用本方案的SDI接收HLS图像缩放HLS多路视频拼接应用本方案的SDI接收HLS多路视频融合叠加应用本方案的S…...

面向对象编程第二式:继承 (Java篇)
本篇会加入个人的所谓‘鱼式疯言’ ❤️❤️❤️鱼式疯言:❤️❤️❤️此疯言非彼疯言 而是理解过并总结出来通俗易懂的大白话, 小编会尽可能的在每个概念后插入鱼式疯言,帮助大家理解的. 🤭🤭🤭可能说的不是那么严谨.但小编初心是能让更多人…...

2024最新小狐狸AI 免授权源码
后台安装步骤: 1、在宝塔新建个站点,php版本使用7.2 、 7.3 或 7.4,把压缩包上传到站点根目录,运行目录设置为/public 2、导入数据库文件,数据库文件是 /db.sql 3、修改数据库连接配置,配置文件是/.env 4、…...
5.69 BCC工具之runqlen.py解读
一,工具简介 runqlen工具用于分析和报告运行队列(run queue)的长度,并以直方图的形式展示。它通过在所有CPU上以99赫兹的频率对运行队列长度进行采样来工作。 在操作系统中,运行队列是指内核用来管理待执行(runnable)进程的队列。当一个进程准备好执行,但由于某些原因…...
什么软件可以改变ip地址
什么软件可以修改ip地址,想必很多朋友都在寻找类似的软件,也想知道其中的答案,也能提高自己工作的效率。 经过小编在互联网摸爬滚打这些年,测试认证和整理后,发现一款名叫深度IP转换器的软件,这个确确实实能…...

C语言-strncmp strncat strncpy长度受限制的字符串函数
strncmp strncat strncpy长度受限制的字符串函数 首先 我们需要知道 这几个的语法格式差不多 这里传递的size_t的长度是传递的字节长度 不是个数 也就这里int*是四个字节 char*是一个字节 如果是整数进行交换 。此时也就需要20个字节,这样可以交换五个整数 这里差…...

ROS Kinetic通信编程:话题、服务、动作编程
文章目录 一、话题编程二、服务编程三、动作编程 接上篇,继续学习ROS通信编程基础 一、话题编程 步骤: 创建发布者 初始化ROS节点向ROS Master注册节点信息,包括发布的话题名和话题中的消息类型按照一定频率循环发布消息 创建订阅者 初始化…...

还原wps纯粹的编辑功能
1.关闭稻壳模板: 1.1. 启动wps(注意不要乱击稻壳模板,点了就找不到右键菜单了) 1.2. 在稻壳模板选项卡右击:选不再默认展示 2.关闭托盘中wps云盘图标:右击云盘图标/同步与设置: 2.1.关闭云文档同步 2.2.窗口选桌面应用…...
【烹饪】清炒菠菜的学习笔记
1 焯水:15s左右即可 Kimi教授 菠菜含有草酸,与含钙丰富的食物共煮时可能会形成草酸钙,影响钙的吸收,因此在烹饪时通常建议先用开水烫一下菠菜以减少草酸含量。 2 可选调料:鸡精...
AcWing 4964.子矩阵
首先就是运用了暴力的思路,能够过个70%的数据,剩下的直接时间超时了,没办法优化了。 讲一下暴力的思路: 其实就是模拟而已,也就是看作想要找的矩阵为一个小窗口,然后不断移动的事而已。 #include<ios…...

代码随想录算法训练营第day20|530.二叉搜索树的最小绝对差 、 501.二叉搜索树中的众数 、236. 二叉树的最近公共祖先
530.二叉搜索树的最小绝对差 力扣题目链接 (opens new window) 给你一棵所有节点为非负值的二叉搜索树,请你计算树中任意两节点的差的绝对值的最小值。 示例: 提示:树中至少有 2 个节点。 二叉搜索树是一颗有序的树,可以通过中…...
Hystrix的原理及应用:构建微服务容错体系的利器(二)
本系列文章简介: 本系列文章旨在深入剖析Hystrix的原理及应用,帮助大家理解其如何在微服务容错体系中发挥关键作用。我们将从Hystrix的核心原理出发,探讨其隔离、熔断、降级等机制的实现原理;接着,我们将结合实际应用场…...
【nuget】如何移动 nuget 缓存文件夹
如何移动 nuget 缓存文件夹 一、了解NuGet包的默认存放路径二、为什么需要修改NuGet包的默认存放路径?使用下面的命令查看本地包位置三、更改下载的NuGet包存储位置四、修改VS离线包引用地址五、验证修改的新路径是否成功默认情况下,NuGet下载的包存放在系统盘(C盘中),这样一…...

H266开源视频编码器VVENC现状
VVenC 是由 Fraunhofer HHI 研究团队开发的,主要是视频编码系统组。HHI 是欧洲最大的研究组织 Fraunhofer 协会的成员,该协会是德国的一个大型非营利性组织。源代码在: https://github.com/fraunhoferhhi/vvenc VVenC几乎与H.266视频标准同时…...
unity webgl怎么获取当前页面网址
在Unity WebGL中,你可以使用Javascript和C#的互操作性来获取当前页面的网址。以下是如何实现的步骤和示例代码: 首先,你需要创建一个Javascript脚本来获取当前页面的网址。(简单方法为:创建xxx.txt,修改文件…...

深度学习神经网络训练环境配置以及演示
🎬个人简介:一个全栈工程师的升级之路! 📋个人专栏:高性能(HPC)开发基础教程 🎀CSDN主页 发狂的小花 🌄人生秘诀:学习的本质就是极致重复! 目录 1 NVIDIA Dr…...

[嵌入式AI从0开始到入土]16_ffmpeg_ascend编译安装及性能测试
[嵌入式AI从0开始到入土]嵌入式AI系列教程 注:等我摸完鱼再把链接补上 可以关注我的B站号工具人呵呵的个人空间,后期会考虑出视频教程,务必催更,以防我变身鸽王。 第1期 昇腾Altas 200 DK上手 第2期 下载昇腾案例并运行 第3期 官…...

HTML5:七天学会基础动画网页11
CSS3动画 CSS3过渡的基本用法: CSS3过渡是元素从一种样式逐渐改变为另一种样式的效果。 过渡属性-transition 值与说明 transition-property 必需,指定CSS属性的name,transition效果即哪个属性发生过渡。 transition-duration 必需,t…...

考虑开发容器的 6 个理由
虽然在容器环境内进行开发的行为可以追溯到 2010 年代中期,但开发容器本身在过去一年中已经开始流行。微软在 2022 年推出了开发容器规范,推动了这一概念的发展,而 Docker 在去年夏天也紧随其后,推出了开发环境功能的测试版。 开…...

Python基础入门 --- 1-2.字面量
文章目录 Python基础入门第一章:1.1 第一个python程序 第二章 :2.1 字面量2.2 常用的值类型2.3 字符串2.3.1 三种定义方式2.3.2 引号嵌套2.3.3 字符串拼接2.3.4 字符串格式化2.3.5 格式化的精度控制数字精度控制: 2.3.6 字符串格式化方式22.3…...
golang循环变量捕获问题
在 Go 语言中,当在循环中启动协程(goroutine)时,如果在协程闭包中直接引用循环变量,可能会遇到一个常见的陷阱 - 循环变量捕获问题。让我详细解释一下: 问题背景 看这个代码片段: fo…...

Redis相关知识总结(缓存雪崩,缓存穿透,缓存击穿,Redis实现分布式锁,如何保持数据库和缓存一致)
文章目录 1.什么是Redis?2.为什么要使用redis作为mysql的缓存?3.什么是缓存雪崩、缓存穿透、缓存击穿?3.1缓存雪崩3.1.1 大量缓存同时过期3.1.2 Redis宕机 3.2 缓存击穿3.3 缓存穿透3.4 总结 4. 数据库和缓存如何保持一致性5. Redis实现分布式…...
STM32+rt-thread判断是否联网
一、根据NETDEV_FLAG_INTERNET_UP位判断 static bool is_conncected(void) {struct netdev *dev RT_NULL;dev netdev_get_first_by_flags(NETDEV_FLAG_INTERNET_UP);if (dev RT_NULL){printf("wait netdev internet up...");return false;}else{printf("loc…...

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

【机器视觉】单目测距——运动结构恢复
ps:图是随便找的,为了凑个封面 前言 在前面对光流法进行进一步改进,希望将2D光流推广至3D场景流时,发现2D转3D过程中存在尺度歧义问题,需要补全摄像头拍摄图像中缺失的深度信息,否则解空间不收敛…...
全面解析各类VPN技术:GRE、IPsec、L2TP、SSL与MPLS VPN对比
目录 引言 VPN技术概述 GRE VPN 3.1 GRE封装结构 3.2 GRE的应用场景 GRE over IPsec 4.1 GRE over IPsec封装结构 4.2 为什么使用GRE over IPsec? IPsec VPN 5.1 IPsec传输模式(Transport Mode) 5.2 IPsec隧道模式(Tunne…...
Xen Server服务器释放磁盘空间
disk.sh #!/bin/bashcd /run/sr-mount/e54f0646-ae11-0457-b64f-eba4673b824c # 全部虚拟机物理磁盘文件存储 a$(ls -l | awk {print $NF} | cut -d. -f1) # 使用中的虚拟机物理磁盘文件 b$(xe vm-disk-list --multiple | grep uuid | awk {print $NF})printf "%s\n"…...

给网站添加live2d看板娘
给网站添加live2d看板娘 参考文献: stevenjoezhang/live2d-widget: 把萌萌哒的看板娘抱回家 (ノ≧∇≦)ノ | Live2D widget for web platformEikanya/Live2d-model: Live2d model collectionzenghongtu/live2d-model-assets 前言 网站环境如下,文章也主…...

mac:大模型系列测试
0 MAC 前几天经过学生优惠以及国补17K入手了mac studio,然后这两天亲自测试其模型行运用能力如何,是否支持微调、推理速度等能力。下面进入正文。 1 mac 与 unsloth 按照下面的进行安装以及测试,是可以跑通文章里面的代码。训练速度也是很快的。 注意…...

【Post-process】【VBA】ETABS VBA FrameObj.GetNameList and write to EXCEL
ETABS API实战:导出框架元素数据到Excel 在结构工程师的日常工作中,经常需要从ETABS模型中提取框架元素信息进行后续分析。手动复制粘贴不仅耗时,还容易出错。今天我们来用简单的VBA代码实现自动化导出。 🎯 我们要实现什么? 一键点击,就能将ETABS中所有框架元素的基…...