嵌入式Linux驱动移植:基于MAX31865与PT100的高精度温度采集方案

news2026/5/22 21:02:45
1. 项目概述与核心思路最近在做一个工业边缘计算网关的项目需要高精度地监测几个关键节点的温度精度要求至少达到±0.5℃。市面上常见的DS18B20这类数字温度传感器在精度和抗干扰能力上有点力不从心。于是我把目光投向了铂电阻温度检测器RTD尤其是PT100它在工业领域以稳定性和高精度著称。不过PT100输出的是电阻信号需要配合专门的信号调理和模数转换电路自己搭电路不仅麻烦精度还容易受布线、噪声影响。这时候MAX31865这颗芯片进入了我的视线。它本质上是一个为RTD量身定做的“信号调理ADC”二合一解决方案通过SPI接口直接输出数字量极大简化了设计。手头正好有飞凌嵌入式的OK3562J-C开发板其丰富的接口和稳定的Linux系统非常适合做原型验证。板子上预留的SPI2接口引脚正好可以用来挂载MAX31865。今天我就把从硬件连接到驱动移植、再到应用层数据读取的完整过程以及其中踩过的坑和总结的经验详细分享一下。无论你是刚接触嵌入式Linux驱动的新手还是正在寻找高精度温度采集方案的工程师相信这篇内容都能给你提供一条清晰的路径。整个流程的核心思路非常“Linux”描述设备 - 提供驱动 - 访问设备。具体来说就是在设备树Device Tree中描述SPI总线上的MAX31865设备节点然后为这个节点编写或移植对应的内核驱动最后在用户空间通过标准的接口如IIO子系统读取温度数据。这个过程是嵌入式Linux开发中挂载外设的通用方法理解透彻了以后接其他SPI、I2C设备都能举一反三。2. 硬件选型、连接与原理剖析2.1 为什么选择MAX31865与PT100在深入接线和驱动之前我们有必要搞清楚为什么是这对组合。PT100是一种铂热电阻在0℃时阻值为100Ω其阻值随温度变化近似线性实际有标准分度表如IEC 60751在-200℃~850℃范围内具有极佳的稳定性和重复性。但它的信号非常微弱温度变化1℃阻值变化仅约0.39Ω。要精确测量这个微小变化必须消除导线电阻、噪声和ADC误差的影响。MAX31865完美地解决了这些问题集成高精度ADC内部集成了15位Δ-Σ ADC分辨率高能将RTD电阻与一个高精度基准电阻的比值直接转换为数字值测量结果与基准电阻的绝对精度相关降低了对外部元件精度的依赖。内置信号调理与故障检测芯片内部集成了RTD所需的激励电流源并提供了可配置的滤波器。最关键的是它具有开路、短路检测功能这对于工业现场可靠性至关重要能立刻知道传感器是断了还是碰在一起了。灵活的接线配置支持2线、3线、4线制RTD连接。2线最简单但误差最大包含导线电阻4线最精确通过开尔文接法消除导线电阻影响3线则是一种性价比很高的折中方案在导线电阻一致的前提下可以通过测量技术补偿掉其影响。SPI数字接口直接输出数字量抗干扰能力强与主控MCU或MPU的连接非常简单无需额外的模拟信号布线。对于OK3562J-C这类嵌入式Linux平台SPI外设驱动成熟利用MAX31865可以将复杂的模拟测量问题转化为标准的数字接口通信问题大大降低了开发难度。2.2 OK3562J-C开发板SPI2接口引脚确认飞凌OK3562J-C开发板的接口资源非常清晰。我们需要使用的SPI2接口位于板载的P8排针上。在动手焊接之前务必对照原理图或用户手册再次确认引脚定义。通常如下SPI2_CLK_M0 SPI时钟线。SPI2_CSN0_M0 SPI片选0Chip Select低电平有效。这是我们连接MAX31865片选CS引脚的位置。SPI2_MOSI_M0 主设备输出从设备输入Master Out Slave In。对应MAX31865的SDI串行数据输入引脚。SPI2_MISO_M0 主设备输入从设备输出Master In Slave Out。对应MAX31865的SDO串行数据输出引脚。注意不同版本的核心板或底板引脚命名可能有细微差异例如可能是SPI2_CS0_M0。以你手中开发板的官方资料为准这是避免硬件连接错误的第一步。2.3 MAX31865模块的3线制焊接与连接我手头的是一个常见的MAX31865模块通常带一个RTD插座。模块上一般会有跳线帽或焊盘来选择2/3/4线制。1. 焊接配置为3线制模块上通常有标记为2W、3W、4W的焊盘。我们需要用焊锡短接3W对应的两个焊盘。这个操作决定了芯片内部多路复用器的连接方式使其进入3线补偿测量模式。焊接时务必小心避免焊锡粘连到相邻焊盘造成短路。完成后最好用万用表通断档检查一下确认只有目标焊盘被短接。2. 连接PT100传感器PT100有三根线通常颜色编码为两根红线或红/黑一根白线。在3线制中PT100的一端假设是红线A接模块的RTD。PT100的另一端白线接模块的RTD-。PT100的第三根线红线B接模块的FORCE2或类似标识也可能是REFIN-旁边的引脚具体看模块丝印。 这种接法使得MAX31865能测量FORCE2和RTD之间的导线电阻并在计算中予以补偿。3. 连接开发板使用杜邦线将MAX31865模块与OK3562J-C的P8排针连接VCC- 开发板3.3V切勿接5VMAX31865是3.3V器件GND- 开发板GNDSDI-SPI2_MOSI_M0SDO-SPI2_MISO_M0CS-SPI2_CSN0_M0SCK-SPI2_CLK_M0实操心得杜邦线连接容易松动在测试阶段可能导致间歇性通信失败。如果条件允许建议焊接一个简单的转接板或者使用夹子固定的排线。另外电源去耦很重要尽量在模块的VCC和GND之间靠近芯片的位置并联一个0.1μF和10μF的电容可以有效抑制电源噪声提高ADC采样稳定性。3. Linux内核驱动移植详解硬件连接妥当后下一步就是让Linux系统认识这个新设备。这个过程分为三个核心步骤修改设备树、编写/移植驱动、编译并加载驱动模块。3.1 设备树Device Tree配置设备树是Linux内核用于描述硬件拓扑结构的一种数据格式。我们要在SPI2控制器节点下添加一个子节点来描述MAX31865。首先找到你的内核源码中OK3562J-C对应的设备树文件.dts或.dtsi路径通常在arch/arm64/boot/dts/rockchip/下文件名可能包含ok3562j-c字样。我们需要在SPI2的节点通常是spi2内添加内容。以下是一个示例配置片段spi2 { status okay; max318650 { compatible maxim,max31865; reg 0; // 片选编号对应CSN0 spi-max-frequency 5000000; // SPI时钟频率5MHz spi-cpol; // 时钟极性根据MAX31865手册设定 spi-cpha; // 时钟相位根据MAX31865手册设定 maxim,rtd-type pt100; // 指定RTD类型 maxim,wires 3; // 关键指定为3线制 maxim,filter 50; // 滤波器频率设置50Hz/60Hz抑制 maxim,ref-resistor-ohms 400; // 基准电阻阻值单位欧姆 }; };关键参数解析compatible 驱动匹配的关键字。这里需要和驱动代码中的.compatible字段一致。reg 片选号。0表示使用SPI2_CSN0这个片选线。spi-max-frequency MAX31865最高支持10MHz SPI时钟保守起见设为5MHz通信更稳定。spi-cpol和spi-cpha 这两个参数定义了SPI的时钟模式CPOL和CPHA。必须严格按照MAX31865数据手册的时序图来设置。通常MAX31865在CPOL1 CPHA1的模式下工作即模式3。如果设置错误通信将完全失败。maxim,wires 3这是实现3线制补偿的核心配置。驱动会根据这个值在初始化时配置芯片内部寄存器的相应位启用3线测量模式。maxim,ref-resistor-ohms 这是模块上使用的精密基准电阻阻值通常为400Ω或430Ω。这个值必须与实际焊接在模块上的电阻阻值严格一致否则所有温度计算都是错误的。务必用万用表测量确认注意事项修改设备树后需要重新编译设备树二进制文件.dtb并更新到开发板。飞凌的SDK通常提供了./build.sh脚本可以选择只编译设备树。更新后务必重启开发板。3.2 驱动代码移植与编译MAX31865的驱动在内核主线中可能没有截至我知识截止日期但网上有很多成熟的第三方驱动或者可以参考其他类似芯片如MAX31855的驱动进行修改。一个完整的驱动需要实现SPI设备驱动的框架spi_driver。通过IIOIndustrial I/O子系统暴露温度数据。IIO是Linux内核为ADC、DAC、陀螺仪等传感器设计的标准框架使用它可以让应用层通过统一的接口如sysfs访问数据非常方便。实现MAX31865的寄存器读写、配置初始化特别是根据设备树参数设置线制、滤波器等、温度转换计算和故障状态读取。驱动编译步骤假设你已经有一个名为max31865.c的驱动源文件。在内核源码目录下创建一个新目录drivers/iio/temperature/如果不存在则创建这是一个逻辑上合理的位置将max31865.c和对应的Kconfig、Makefile放入。修改drivers/iio/temperature/Kconfig添加对MAX31865的配置选项。修改drivers/iio/temperature/Makefile添加obj-$(CONFIG_MAX31865) max31865.o。更简单的方法适用于快速测试如原文所述在drivers/下创建max31865文件夹放入.c文件和只包含obj-m max31865.o的Makefile。然后修改顶层drivers/Makefile添加一行obj-y max31865/。这种方式直接将驱动编译为模块.ko文件无需修改内核配置灵活性高。编译命令在飞凌提供的构建环境中执行./build.sh kernel或者进入内核源码目录使用交叉编译工具链make ARCHarm64 CROSS_COMPILEaarch64-linux-gnu- modules编译成功后在drivers/max31865/目录下会生成max31865.ko文件。3.3 驱动加载与初步测试将编译好的max31865.ko文件拷贝到开发板文件系统中如通过U盘、scp、NFS等。 在开发板的终端中执行insmod max31865.ko使用dmesg命令查看内核日志应该能看到类似“max31865 spi2.0: probed”或“Registered MAX31865”的成功信息。此时如果驱动和IIO子系统对接正确你会看到IIO设备出现ls /sys/bus/iio/devices/通常会看到一个iio:deviceXX为数字如0,1,2。进入该目录查看是否有in_temp_raw、in_temp_scale、name等文件。name文件的内容应该是max31865。基础测试使用一个精密电阻如100.0Ω的金属膜电阻模拟PT100在0℃时的状态替换PT100接入传感器模块。cat /sys/bus/iio/devices/iio:deviceX/in_temp_raw这个命令会读取ADC的原始计数值。根据MAX31865的数据手册公式和你的基准电阻值可以反算出测量的电阻值。对于100Ω的“模拟PT100”计算出的电阻值应该非常接近100Ω。如果读数偏差巨大请检查SPI模式CPOL/CPHA是否正确。基准电阻值在设备树中配置是否正确。硬件连接特别是电源和地是否稳定。4. 从原始值到实际温度的转换与应用开发驱动成功加载并能读到原始值只是第一步。我们需要将原始的ADC读数转换为有意义的温度值。4.1 温度转换原理与计算MAX31865的输出是一个与(R_RTD / R_REF)比值相关的15位数字最高位是故障标志位。转换过程如下读取原始值从驱动获取的in_temp_raw是一个整数值比如1655。计算RTD电阻公式为R_RTD (ADC_Code * R_REF) / 32768。其中ADC_Code是原始值需要检查驱动是否已经做了位处理通常就是in_temp_raw的值R_REF是基准电阻如400.0Ω32768是2的15次方15位ADC满量程值的一半因为芯片采用比例测量。电阻转温度得到R_RTD后需要根据PT100的分度表IEC 60751标准将其转换为温度。在0℃附近可以近似使用线性公式T (R_RTD - 100) / 0.385。但为了高精度必须使用查表法或调用精确的公式进行计算尤其是在温度范围较宽时。PT100的电阻-温度关系是一个复杂的多项式。实操示例假设in_temp_raw 1655R_REF 400.0Ω。R_RTD (1655 * 400.0) / 32768 ≈ 20.21Ω使用近似公式T ≈ (20.21 - 100) / 0.385 ≈ -207.2℃这个结果-207℃显然不对因为我们用22Ω电阻模拟时原文提到对应温度约-190℃。这里的差异可能源于驱动读取的in_temp_raw可能已经经过了某种转换或偏移。最重要的原因这个22Ω的电阻是用来测试和校准的它远小于PT100的正常范围100Ω左右。MAX31865和驱动可能针对PT100的阻值范围进行了优化在极低阻值下线性度和精度会下降。因此用接近100Ω的精密电阻做测试更有意义。4.2 编写用户空间应用程序对于最终应用我们不会每次都去手动catsysfs文件。我们需要编写一个守护进程或应用程序来周期性地读取温度、处理数据、判断故障。一个简单的C语言示例程序框架如下#include stdio.h #include stdlib.h #include fcntl.h #include unistd.h #define IIO_DEVICE_PATH /sys/bus/iio/devices/iio:device2 #define RAW_FILE IIO_DEVICE_PATH /in_temp_raw #define SCALE_FILE IIO_DEVICE_PATH /in_temp_scale float read_temperature_celsius() { int fd_raw, fd_scale; char buf[32]; long raw; float scale, resistance, temperature; // 1. 读取原始值和比例因子如果驱动提供了scale fd_raw open(RAW_FILE, O_RDONLY); if (fd_raw 0) { perror(Open raw failed); return -273.15; } read(fd_raw, buf, sizeof(buf)); sscanf(buf, %ld, raw); close(fd_raw); // 很多驱动不提供scale需要自己计算 // 假设我们已知 R_REF 400.0 const float R_REF 400.0; const float ADC_FULL_SCALE 32768.0; // 2. 计算电阻 resistance (raw * R_REF) / ADC_FULL_SCALE; // 3. 电阻转温度 (使用简化线性公式生产环境应用查表法) // PT100在0℃附近灵敏度约0.385Ω/℃ temperature (resistance - 100.0) / 0.385; return temperature; } int main() { while(1) { float temp read_temperature_celsius(); if (temp -200) { // 简单的故障判断 printf(Sensor Fault or Unplugged!\n); } else { printf(Current Temperature: %.2f °C\n, temp); } sleep(1); // 每秒采样一次 } return 0; }这个程序需要交叉编译后放到开发板上运行。在实际项目中你还需要添加更精确的温度换算函数例如实现IEC 60751的Callendar-Van Dusen方程。处理MAX31865的故障标志位通过读取驱动暴露的另一个sysfs节点如in_temp_fault。添加数据滤波算法如滑动平均、中值滤波来平滑数据。将数据通过网络、串口等方式上报到服务器或上位机。4.3 性能优化与稳定性提升建议采样率与滤波MAX31865的滤波器设置maxim,filter可以抑制50Hz/60Hz工频干扰。在电气噪声大的工业环境务必启用。但这会降低转换速度。需要根据实际应用的响应速度要求权衡。软件滤波即使硬件滤波了在软件层再做一次滑动平均滤波能有效抑制随机噪声让读数更稳定。定期自检与校准应用程序可以定期检查故障标志。虽然PT100和MAX31865很稳定但考虑长期漂移有条件的话可以设计定期校准流程例如在已知温度点进行读数校正。热管理MAX31865自身也会发热。如果环境温度变化大芯片自身的温漂会影响基准电压的精度。对于超高精度要求0.1℃需要考虑芯片的自身温度补偿或者选择更高级别的器件。5. 常见问题排查与调试心得在调试过程中你几乎一定会遇到下面这些问题。我把我的排查经验总结下来希望能帮你快速定位。问题现象可能原因排查步骤与解决方案insmod驱动失败1. 内核版本不匹配驱动符号未找到2. 设备树中compatible不匹配3. 驱动代码编译错误1. 使用dmesg | tail查看具体错误信息。2. 确认驱动是用当前运行内核的源码和配置编译的。3. 检查设备树节点compatible属性与驱动中的of_device_id表是否完全一致。加载驱动后/sys/bus/iio/devices/下无新设备1. 驱动探测probe函数失败2. SPI通信失败导致设备未识别3. IIO子系统注册失败1. 在驱动代码的probe函数开头加printk打印看是否执行。2.重点检查SPI通信用示波器或逻辑分析仪抓取SPI的CLK、MOSI、CS线波形看是否有数据发出。确认CPOL/CPHA模式。3. 检查IIO设备注册的返回值。能发现IIO设备但in_temp_raw值始终为0或固定值1. SPI通信成功但配置错误2. MAX31865未正确初始化寄存器未写入3. 传感器故障或未连接1. 用逻辑分析仪抓取SPI全程通信看驱动是否按照数据手册的时序向配置寄存器0x00写入了正确的值特别是启用3线制、设置滤波器等。2. 检查设备树中的maxim,wires等参数是否被正确解析并写入芯片。3. 测量MAX31865的VCC电压是否为稳定的3.3V。用万用表测量RTD引脚间电阻确认传感器连接良好。in_temp_raw值跳动剧烈1. 电源噪声2. SPI时钟频率过高3. 未启用硬件滤波4. 导线引入噪声1. 在MAX31865的电源引脚就近增加滤波电容0.1μF和10μF并联。2. 降低设备树中的spi-max-frequency比如降到1MHz试试。3. 确保设备树中maxim,filter设置为50或60。4. 使用屏蔽双绞线连接PT100并将屏蔽层单点接地。温度计算值严重偏离预期1. 基准电阻ref-resistor-ohms值设置错误2. 温度换算公式错误3. PT100传感器型号或接线错误如误用了PT10001.用万用表精确测量模块上的基准电阻阻值并更新到设备树中。这是最常见的错误2. 使用标准PT100分度表进行查表计算验证你的换算公式。3. 确认你使用的是PT1000℃100Ω而不是PT10000℃1000Ω。检查3根线是否接错。驱动读取到故障标志1. RTD开路或短路2. 参考电阻开路或短路3. 过压保护触发1. 检查PT100传感器及连接线。2. 检查模块上的基准电阻是否焊接良好。3. 检查是否有高压串入传感器线路。驱动应能通过某个sysfs节点报告具体的故障类型如open_circuit,short_to_vcc等根据此信息排查硬件。调试心得的精华“三板斧”调试法遇到问题首先dmesg看内核日志其次用逻辑分析仪抓SPI时序这是硬件调试最强大的工具最后核对数据手册的寄存器定义和时序图。九成的问题都能通过这三步定位。从已知点开始不要一上来就用PT100测温度。先用一个精确的、稳定的100Ω电阻代替PT100在室温下测试。此时计算出的温度应该接近室温。这能有效隔离传感器自身误差和电路/驱动误差。善用sysfsIIO驱动除了in_temp_raw可能还会提供in_temp_offset、in_temp_scale甚至in_temp_fault。仔细查看驱动暴露了哪些属性它们可能直接提供了校准后的数据或状态信息。整个移植过程最花时间的往往不是写代码而是调试硬件连接和通信。耐心地、系统地按照上述步骤排查你一定能成功让OK3562J-C精准地读取到PT100的温度。这套方法不仅适用于MAX31865其内核驱动移植的思路、SPI调试的方法、IIO框架的应用对于在嵌入式Linux平台上接入其他各种传感器都具有很高的参考价值。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2635744.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringBoot-17-MyBatis动态SQL标签之常用标签

文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…

wordpress后台更新后 前端没变化的解决方法

使用siteground主机的wordpress网站,会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后,网站没有变化的情况。 不熟悉siteground主机的新手,遇到这个问题,就很抓狂,明明是哪都没操作错误&#x…

网络编程(Modbus进阶)

思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…

UE5 学习系列(二)用户操作界面及介绍

这篇博客是 UE5 学习系列博客的第二篇,在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下: 【Note】:如果你已经完成安装等操作,可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作,重…

IDEA运行Tomcat出现乱码问题解决汇总

最近正值期末周,有很多同学在写期末Java web作业时,运行tomcat出现乱码问题,经过多次解决与研究,我做了如下整理: 原因: IDEA本身编码与tomcat的编码与Windows编码不同导致,Windows 系统控制台…

利用最小二乘法找圆心和半径

#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式

一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明&#xff1a;假设每台服务器已…

XML Group端口详解

在XML数据映射过程中&#xff0c;经常需要对数据进行分组聚合操作。例如&#xff0c;当处理包含多个物料明细的XML文件时&#xff0c;可能需要将相同物料号的明细归为一组&#xff0c;或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码&#xff0c;增加了开…

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造&#xff0c;完美适配AGV和无人叉车。同时&#xff0c;集成以太网与语音合成技术&#xff0c;为各类高级系统&#xff08;如MES、调度系统、库位管理、立库等&#xff09;提供高效便捷的语音交互体验。 L…

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)

题目&#xff1a;3442. 奇偶频次间的最大差值 I 思路 &#xff1a;哈希&#xff0c;时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况&#xff0c;哈希表这里用数组即可实现。 C版本&#xff1a; class Solution { public:int maxDifference(string s) {int a[26]…

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型

摘要 拍照搜题系统采用“三层管道&#xff08;多模态 OCR → 语义检索 → 答案渲染&#xff09;、两级检索&#xff08;倒排 BM25 向量 HNSW&#xff09;并以大语言模型兜底”的整体框架&#xff1a; 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后&#xff0c;分别用…

【Axure高保真原型】引导弹窗

今天和大家中分享引导弹窗的原型模板&#xff0c;载入页面后&#xff0c;会显示引导弹窗&#xff0c;适用于引导用户使用页面&#xff0c;点击完成后&#xff0c;会显示下一个引导弹窗&#xff0c;直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…

接口测试中缓存处理策略

在接口测试中&#xff0c;缓存处理策略是一个关键环节&#xff0c;直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性&#xff0c;避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明&#xff1a; 一、缓存处理的核…

龙虎榜——20250610

上证指数放量收阴线&#xff0c;个股多数下跌&#xff0c;盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型&#xff0c;指数短线有调整的需求&#xff0c;大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的&#xff1a;御银股份、雄帝科技 驱动…

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析

1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具&#xff0c;该工具基于TUN接口实现其功能&#xff0c;利用反向TCP/TLS连接建立一条隐蔽的通信信道&#xff0c;支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式&#xff0c;适应复杂网…

铭豹扩展坞 USB转网口 突然无法识别解决方法

当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…

未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?

编辑&#xff1a;陈萍萍的公主一点人工一点智能 未来机器人的大脑&#xff1a;如何用神经网络模拟器实现更智能的决策&#xff1f;RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战&#xff0c;在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…

Linux应用开发之网络套接字编程(实例篇)

服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …

华为云AI开发平台ModelArts

华为云ModelArts&#xff1a;重塑AI开发流程的“智能引擎”与“创新加速器”&#xff01; 在人工智能浪潮席卷全球的2025年&#xff0c;企业拥抱AI的意愿空前高涨&#xff0c;但技术门槛高、流程复杂、资源投入巨大的现实&#xff0c;却让许多创新构想止步于实验室。数据科学家…

深度学习在微纳光子学中的应用

深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向&#xff1a; 逆向设计 通过神经网络快速预测微纳结构的光学响应&#xff0c;替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…