新闻详情

新闻详情

首页 / 资讯中心 / 详情

开源p-net协议栈实战:从零搭建PROFINET从站全流程

发布时间:2026/10/1 15:10:39来源:尧图网络
开源p-net协议栈实战:从零搭建PROFINET从站全流程
工业以太网这块PROFINET 从站的开发一直是很多嵌入式工程师想啃又不太敢下嘴的硬骨头。市面上大部分教程要么停留在概念层面讲得云里雾里要么直接甩给你一个商业协议栈的授权报价单让你知难而退。我当初接手第一个 PROFINET 从站项目时翻遍了能找到的中文资料真正能跑通的完整路径几乎没有。后来接触到p-net这个开源协议栈才算找到了一条从零搭建的可行路线。这篇文章就是把我从环境搭建到 GSDML 文件编写、再到联调排错的完整过程拆开来讲适合有一定 C 语言和嵌入式网络基础、想自己动手实现一个 PROFINET 从站的朋友参考。不管你是用 STM32 加以太网外设还是在 Linux 平台上跑软协议栈核心思路是相通的。1. 为什么选 p-net 而不是自己撸一个协议栈1.1 PROFINET 从站开发的真实门槛在哪里很多人一开始会觉得PROFINET 不就是工业以太网嘛跟普通 TCP/IP 通信能差多少实际动手之后才发现差距远比想象中大。PROFINET 的实时通信机制跟标准以太网协议栈有本质区别。它绕过了 TCP/IP 层直接在以太网数据链路层上传输过程数据用的是 EtherType 0x8892 这种专用帧格式。这意味着你不能简单地用 socket 编程那套思路来做得从网卡驱动层面就开始介入。具体来说PROFINET 从站需要处理几个核心机制。第一个是循环数据交换主站和从站之间以固定的周期通常 1ms 到 512ms互相发送 IO 数据这个周期必须严格保证抖动超过一定范围就会导致通信中断。第二个是非循环通信用于参数配置、诊断信息读取等场景这部分走的是标准 UDP/IP。第三个是设备发现与标识通过 DCP 协议实现主站对从站的识别和地址分配。第四个是状态机管理从站需要维护一个复杂的状态机来响应主站的各种请求。如果你从零开始写这些光是状态机的正确流转就够你调上几个月。而且 PROFINET 规范文档有上千页很多细节在实际测试之前根本意识不到。我见过有团队自己写协议栈功能测试都过了一到现场多设备组网就出问题查了半个月发现是 DCP 响应时序不满足规范要求。1.2 p-net 协议栈的能力边界与适用场景p-net 是 RT-Labs 开源的一个 PROFINET 设备端协议栈用 C 语言写的代码结构清晰移植性不错。它实现了 PROFINET 从站的核心功能包括循环数据交换、DCP 设备发现、报警处理、诊断上报等。对于大部分中小型设备开发来说这些功能已经够用了。但有几个边界需要提前说清楚。p-net 目前主要支持RT实时通信类别也就是 Class 1 的实时通信周期最小可以做到 1ms 左右具体取决于你的硬件平台和系统实时性。它不支持 IRT等时实时如果你的应用场景需要微秒级的同步精度比如多轴运动控制那 p-net 可能满足不了得考虑商业协议栈或者带专用硬件的方案。另外p-net 对GSDML 文件的支持是手写的方式它不提供图形化的配置工具。你需要自己根据设备的功能编写 GSDML 文件然后在主站侧的工程软件里导入。这对不熟悉 GSDML 语法的开发者来说是个不小的挑战但好处是你对设备的描述有完全的控制权。从平台适配角度看p-net 官方提供了 Linux 和 RTOS 的移植示例。Linux 平台上可以直接用 raw socket 来收发以太网帧开发调试最方便。RTOS 平台上需要你自己适配网卡驱动把收发帧的接口对接上。我个人的建议是先在 Linux 上把整个流程跑通理解清楚协议栈的工作机制再往目标硬件上移植。1.3 跟商业协议栈方案的对比取舍说到商业协议栈市面上主流的几家授权费从几万到几十万不等而且通常按产品数量收版税。对于出货量不大的设备来说这个成本压力不小。商业协议栈的优势在于经过大量现场验证稳定性和兼容性有保障技术支持也及时。p-net 作为开源方案最大的优势是零授权成本和代码可控。你可以深入每一行代码去排查问题也可以根据特殊需求做定制修改。但代价是你需要自己承担调试和验证的工作量遇到问题得自己啃规范或者去社区找答案。我的实际经验是如果你的团队有嵌入式网络开发的基础愿意投入时间做前期验证p-net 完全能支撑起一个稳定的从站产品。但如果项目周期很紧团队又没有相关经验那商业协议栈可能更稳妥。这个取舍没有标准答案取决于你的具体情况。2. 开发环境搭建与协议栈移植的关键决策2.1 Linux 验证环境的快速搭建先在 Linux 上跑通是最省事的路径。我用的是一台装了 Ubuntu 的工控机配了两个千兆网口一个用来跑 p-net 从站另一个用来接主站或者抓包工具。第一步是拉代码。p-net 的仓库结构比较清晰核心代码在src/pf_*文件里平台适配层在ports/目录下。Linux 的移植示例在sample_app/里可以直接拿来改。git clone https://github.com/rtlabs-com/p-net.git cd p-net mkdir build cd build cmake .. -DCMAKE_BUILD_TYPEDebug make编译过程中可能会遇到几个依赖问题。p-net 依赖libpcap来做原始以太网帧的收发需要提前装好sudo apt-get install libpcap-dev编译完成后sample_app目录下会生成一个可执行文件。运行之前需要确认你的网卡支持混杂模式并且你有 root 权限来操作原始套接字。sudo ./pn_dev -i eth1这里的eth1是你要用来跑 PROFINET 的那个网口。启动之后协议栈会初始化等待主站来建立连接。注意Linux 环境下跑 p-net 时建议把网卡的中断亲和性绑定到独立的 CPU 核心上减少调度延迟。可以用taskset或者irqbalance来调整。这个细节在官方文档里没提但对循环通信的稳定性影响很大。2.2 目标硬件平台的选型考量如果你最终要跑在嵌入式硬件上选型时有几个硬指标需要关注。以太网外设的 DMA 能力是首要考虑因素。PROFINET 的循环帧收发频率很高如果每收一帧都要 CPU 全程参与搬运数据那 CPU 负载会非常高影响实时性。带 DMA 的以太网外设可以让 CPU 只处理帧头和关键字段数据搬运交给 DMA 完成。中断延迟也很关键。从站需要在收到帧之后的很短时间内做出响应如果中断延迟太大主站那边就会报通信超时。一般来说中断延迟控制在 10 微秒以内比较理想。Cortex-M7 级别的 MCU 配合优化过的中断处理通常能做到这个水平。内存带宽容易被忽略。p-net 协议栈本身占用的 RAM 不算大大概几十 KB 的量级但如果你要处理大量的 IO 数据或者诊断信息缓冲区就需要开得比较大。另外以太网帧的收发缓冲区也需要考虑内存带宽是否够用。我实际用过的几个平台里STM32F4 系列加外部 PHY 的方案性价比不错适合对成本敏感的场景。STM32H7 或者 i.MX RT 系列性能更强适合 IO 数据量大或者周期要求高的应用。如果预算充足带专用 PROFINET 控制器的方案比如某些带 EtherCAT/PROFINET 硬核的芯片会更省心但那就不属于 p-net 的讨论范围了。2.3 移植层需要对接的接口清单p-net 的移植工作主要集中在几个接口上理解了这些接口的职责移植就不会迷路。帧收发接口是最核心的。p-net 需要你提供两个函数一个用来发送以太网帧一个用来注册接收回调。发送函数接收完整的以太网帧缓冲区你负责把它通过网卡发出去。接收回调则是网卡收到帧之后把帧数据传给 p-net 处理。/* 发送帧的接口示例 */ int pnal_eth_send(void *arg, const void *data, uint16_t length); /* 接收回调的注册 */ void pnal_eth_set_rx_callback(void (*callback)(void *arg, const uint8_t *data, uint16_t length));定时器接口用于协议栈内部的超时管理。p-net 需要一个能提供毫秒级时间戳的函数以及一个能设置周期性定时回调的机制。系统时间接口用于计算帧的收发时间戳对循环通信的同步很重要。如果你的硬件支持硬件时间戳尽量用上精度会好很多。存储接口用于保存设备的配置参数比如 IP 地址、设备名称等。p-net 提供了基于文件的默认实现嵌入式平台上通常需要改成基于 Flash 的实现。移植过程中最容易出问题的是字节序和对齐。PROFINET 协议里很多字段是网络字节序大端而大部分嵌入式平台是小端。p-net 内部做了转换但你在处理 IO 数据时要注意保持一致。另外以太网帧的缓冲区最好按 4 字节对齐有些网卡 DMA 对非对齐访问会出问题。3. GSDML 文件编写从站设备的身份证3.1 GSDML 文件的整体结构与必填字段GSDML 文件是 PROFINET 从站的描述文件主站侧的工程软件通过它来识别从站的能力和接口。这个文件用 XML 格式编写结构不算复杂但字段很多第一次写容易漏东西。一个最小的 GSDML 文件包含几个部分。DeviceIdentity部分描述设备的基本信息包括厂商 ID、设备 ID、设备名称等。DeviceAccessPointList定义设备的通信接口包括支持的通信类别、支持的协议等。ModuleList定义设备支持的模块和子模块每个模块对应一组 IO 数据。VirtualSubmoduleList定义子模块的具体数据结构。DeviceIdentity VendorID0x1234/VendorID DeviceID0x0001/DeviceID DeviceNameMyProfinetDevice/DeviceName /DeviceIdentity厂商 ID 需要向 PROFIBUS PROFINET International 申请但开发阶段可以先用一个临时值只要主站侧不冲突就行。设备 ID 由厂商自己分配同一个厂商下的不同产品用不同的 ID。3.2 模块与子模块的 IO 数据结构定义模块和子模块的定义是 GSDML 文件里最需要仔细处理的部分因为它直接决定了主站和从站之间交换的数据格式。每个模块可以包含多个子模块每个子模块定义一组输入和输出数据。输入数据是从站发给主站的输出数据是主站发给从站的。数据的类型和长度需要跟从站固件里的实现严格对应否则会出现数据错位。VirtualSubmoduleItem ID1 SubmoduleIdentNumber0x0001 IOData Input DataItem DataTypeUnsigned8 TextIdT_Input1/ /Input Output DataItem DataTypeUnsigned8 TextIdT_Output1/ /Output /IOData /VirtualSubmoduleItem上面这个例子定义了一个子模块包含 1 字节的输入和 1 字节的输出。实际项目中IO 数据可能是多个字节的组合比如 4 个字节的模拟量输入、2 个字节的数字量输出等。每个 DataItem 都要指定数据类型常见的有 Unsigned8、Unsigned16、Unsigned32、Float32 等。提示GSDML 文件里的模块顺序和子模块顺序会影响主站侧的组态界面显示但不影响实际的数据交换顺序。数据交换的顺序由子模块的 Slot 和 Subslot 编号决定这个在编写固件时要特别注意对应关系。3.3 用 GSDML 检查工具提前排雷手写 GSDML 文件很容易出语法错误或者字段遗漏如果直接导入主站工程软件报错信息往往很模糊排查起来费时费力。我的做法是先用检查工具过一遍。PROFIBUS PROFINET International 提供了一个 GSDML 检查工具可以验证文件的语法正确性和规范性。另外很多主站工程软件比如西门子的 TIA Portal在导入 GSDML 文件时也会做校验报错信息比通用工具更具体。常见的错误包括XML 标签不闭合、必填字段缺失、数据类型不匹配、ID 重复等。我踩过的一个坑是TextId 引用了一个不存在的文本条目导致导入时报错但提示信息只说“文件格式错误”查了半天才发现是文本表里少了一条。还有一个容易忽略的点是GSDML 的版本号。不同版本的主站工程软件对 GSDML 版本的支持不一样如果你的文件版本太新老版本的主站软件可能无法导入。建议根据目标客户常用的主站软件版本选择一个兼容性好的 GSDML 版本。4. 循环通信与非循环通信的固件实现4.1 循环 IO 数据的收发机制循环通信是 PROFINET 从站最核心的功能。主站按照配置的周期定时向从站发送输出数据帧从站收到后更新输出同时把输入数据打包成帧回传给主站。p-net 内部维护了一个 IO 数据缓冲区你只需要在初始化时告诉协议栈输入和输出数据的长度然后在主循环里定期调用数据更新函数。/* 设置 IO 数据长度 */ pnet_set_input_data_length(net, input_len); pnet_set_output_data_length(net, output_len); /* 在主循环中更新输入数据 */ uint8_t *input_data pnet_get_input_data_buffer(net); memcpy(input_data, my_input_values, input_len); /* 读取主站发来的输出数据 */ uint8_t *output_data pnet_get_output_data_buffer(net); memcpy(my_output_values, output_data, output_len);这里的关键是数据更新的时机。输入数据应该在主站发送输出帧之前就准备好这样从站收到输出帧后可以立即回传输入帧减少延迟。p-net 提供了回调机制你可以在收到输出帧的回调里更新输入数据这样时序最紧凑。实际调试时我建议先用一个简单的计数器来验证循环通信是否正常。输入数据每次加一然后在主站侧观察数值是否在递增。如果数值不变或者跳变说明数据更新或者帧收发有问题。4.2 报警与诊断信息的处理策略报警和诊断是 PROFINET 从站区别于普通 IO 设备的重要功能。当从站检测到异常情况时可以通过报警通道主动通知主站。主站也可以随时读取从站的诊断信息。p-net 提供了报警发送的接口你需要构造符合 PROFINET 报警格式的数据结构。报警分为诊断报警、过程报警、插拔报警等类型不同类型的报警有不同的触发条件和数据结构。/* 发送诊断报警的示例 */ pnet_alarm_spec_t alarm_spec; alarm_spec.alarm_type PNET_ALARM_TYPE_DIAGNOSTIC; alarm_spec.slot 1; alarm_spec.subslot 1; alarm_spec.channel 0; alarm_spec.channel_error_type PNET_CHANNEL_ERROR_TYPE_SHORT_CIRCUIT; pnet_send_alarm(net, alarm_spec);诊断信息的维护需要跟你的设备状态管理逻辑结合起来。比如当检测到某个通道短路时除了发送报警还要在诊断缓冲区里记录这个状态这样主站后续读取诊断信息时能拿到完整的状态。我踩过的一个坑是报警发送频率过高。设备刚上电时如果多个通道同时检测到异常可能会瞬间发出大量报警导致主站处理不过来甚至通信中断。后来我在报警发送逻辑里加了一个限流机制同一类型的报警在短时间内只发一次问题就解决了。4.3 状态机流转中容易卡住的环节p-net 内部维护了一个复杂的状态机从站需要按照 PROFINET 规范响应主站的各种请求。大部分情况下协议栈会自动处理状态流转但有几个环节需要你的应用层配合。连接建立阶段主站会发送 Connect 请求里面包含了 IO 数据的配置信息。p-net 会解析这个请求并回调你的应用层你需要在这个回调里验证配置是否跟 GSDML 文件描述的一致。如果不一致要返回错误码主站会终止连接。参数化阶段主站可能会发送参数数据来配置从站的行为。比如设置某个通道的测量范围、滤波参数等。你需要在回调里解析这些参数并应用到设备上。数据交换阶段如果从站检测到通信异常比如看门狗超时需要主动断开连接并通知主站。p-net 提供了相应的接口但触发条件需要你的应用层来判断。注意状态机流转的调试建议配合抓包工具一起做。Wireshark 有 PROFINET 的解析插件可以看到每一帧的详细内容。当状态机卡住时先看最后一帧是什么再对照规范文档分析从站的响应是否正确。5. 联调排错那些文档里不会写的坑5.1 主站连不上从站的排查链路主站连不上从站是最常见的问题可能的原因很多需要按链路逐层排查。物理层先确认网线、网口、指示灯是否正常。我遇到过网口指示灯亮但实际链路不通的情况后来发现是网线水晶头压接不良。换根网线就好了但排查花了半小时。链路层用抓包工具看从站有没有发出 LLDP 帧和 DCP 响应帧。PROFINET 设备上电后会周期性发送 LLDP 帧来宣告自己的存在主站扫描时会发送 DCP Identify 请求从站需要回复。如果抓不到这些帧说明协议栈没有正常启动或者网卡驱动有问题。网络层确认 IP 地址配置是否正确。PROFINET 支持 DCP 协议来分配 IP 地址但如果你的从站已经预设了 IP主站可能会因为地址冲突而连不上。建议开发阶段先用 DCP 方式让主站来分配地址。应用层如果前面都正常但主站还是报连接失败那可能是 GSDML 文件跟固件实现不匹配。检查模块和子模块的配置是否一致IO 数据长度是否对应。5.2 循环通信不稳定的根因分析循环通信不稳定表现为周期抖动大、偶尔丢帧、甚至通信中断。这个问题比连不上更棘手因为它往往是间歇性的。系统负载是首要排查方向。如果你的从站固件里还有其他任务在跑比如串口通信、ADC 采样等这些任务可能会抢占 CPU 导致协议栈处理不及时。可以用 GPIO 翻转加示波器来测量协议栈处理一帧的实际耗时如果超过周期的 50%就需要优化了。中断优先级配置不当也会导致问题。以太网接收中断的优先级应该设置得比较高确保帧能及时处理。但也不能设成最高否则可能影响系统其他关键中断的响应。内存访问冲突是一个隐蔽的坑。如果协议栈的缓冲区和其他任务共享内存又没有做好保护可能会出现数据被意外修改的情况。我遇到过一次循环通信偶尔丢帧的问题查了很久发现是 DMA 缓冲区跟协议栈缓冲区有重叠DMA 传输时覆盖了协议栈的数据。网卡配置也值得检查。有些网卡的流控、节能特性会影响实时性建议在驱动里把这些特性关掉。另外接收缓冲区的大小要足够太小的话突发流量会导致丢帧。5.3 用 Wireshark 抓包定位协议层问题Wireshark 是 PROFINET 调试的利器但要用好需要一些技巧。首先抓包的位置很关键。最好在从站的网口上做端口镜像这样能看到从站实际收发的所有帧。如果条件不允许也可以在主站侧抓包但看到的帧可能经过了交换机的处理跟从站实际收到的不完全一样。Wireshark 默认可能不解析 PROFINET 协议需要在首选项里启用。启用后可以看到每一帧的详细解析包括帧类型、源目地址、IO 数据内容等。分析循环通信时关注几个指标。帧间隔是否稳定如果间隔忽大忽小说明从站的处理有问题。帧内容是否正确输入输出数据是否符合预期。报警帧是否正常发送和确认。我常用的一个技巧是给 Wireshark 加一个显示过滤器只看 PROFINET 的循环帧pn_rt这样可以过滤掉其他协议的干扰专注于分析循环通信的质量。5.4 从站固件升级后的兼容性验证固件升级后从站的行为可能会发生变化需要重新验证兼容性。GSDML 文件是否需要更新是第一个要确认的。如果固件升级增加了新的模块或者修改了 IO 数据结构GSDML 文件必须同步更新否则主站侧的组态会不匹配。通信参数是否变化也需要检查。比如最小循环周期、支持的通信类别等如果这些参数变了主站可能需要重新配置。回归测试不能省。至少要把基本的连接建立、循环通信、报警诊断这几个核心功能跑一遍。有条件的话用自动化测试脚本来做效率更高。我个人的习惯是每次固件升级后先用一个简单的主站配置做快速验证确认基本功能正常再做完整的兼容性测试。这样可以尽早发现问题避免在复杂配置下排查困难。6. 从能跑到好用性能优化与产品化考量6.1 循环周期的极限压榨与稳定性平衡p-net 在 Linux 平台上配合优化过的网卡驱动循环周期可以做到 1ms 左右。但周期越短对系统实时性的要求越高稳定性风险也越大。CPU 隔离是一个有效的手段。把协议栈相关的线程绑定到独立的 CPU 核心上避免其他任务的干扰。在 Linux 上可以用isolcpus内核参数来隔离核心然后用taskset把线程绑上去。中断合并要谨慎使用。有些网卡支持中断合并来降低 CPU 负载但这会增加中断延迟对实时性不利。建议在 PROFINET 应用里关闭中断合并让每个帧都触发中断。零拷贝可以显著降低 CPU 负载。如果网卡驱动支持尽量让协议栈直接操作网卡的 DMA 缓冲区避免数据在内存里的多次拷贝。p-net 的移植层接口设计允许这种优化但需要你修改驱动适配代码。实际项目中我一般会把循环周期设置在 2ms 到 4ms 之间这个范围对大部分应用来说够用同时留出了足够的余量来应对系统抖动。如果客户要求 1ms 甚至更短那就需要仔细评估硬件平台和软件架构是否支撑得住。6.2 多设备组网时的资源分配当多个从站设备接入同一个主站时资源分配就变得重要了。设备名称和 IP 地址必须唯一。PROFINET 用设备名称来做设备标识主站根据名称来分配 IP 地址。如果两个从站的名称相同主站会报冲突通信无法建立。建议在 GSDML 文件里设置一个默认名称然后在产线用工具批量修改。网络带宽需要估算。每个从站的循环数据量乘以循环频率再加上非循环通信的开销就是总的带宽需求。百兆网络下如果从站数量多或者数据量大可能会带宽不足。千兆网络能缓解这个问题但交换机的性能也要跟上。主站的连接数限制也要考虑。不同型号的主站支持的从站数量不一样规划网络时要确认主站的能力上限。6.3 产线部署前的自检清单设备开发完成后在产线部署之前我通常会过一遍这个清单。设备名称和 IP 地址是否已按规划配置GSDML 文件是否已导入主站工程并组态正确循环通信周期是否满足应用需求报警和诊断功能是否验证通过断电重启后是否能自动恢复通信网口指示灯状态是否正常设备在满负载情况下的通信稳定性是否达标这个清单看起来简单但每一条都对应着实际项目中踩过的坑。比如断电重启后的自动恢复有些设备因为配置保存不当重启后名称丢了主站就找不到了。6.4 长期运行中的内存与句柄泄漏排查从站设备通常需要长时间不间断运行内存和句柄泄漏是隐形杀手。内存泄漏在 p-net 里相对少见因为协议栈本身的内存管理比较规范。但如果你在应用层动态分配内存来处理报警或者诊断数据就要注意及时释放。我建议在开发阶段就启用内存检测工具比如 Valgrind 或者平台自带的内存分析工具定期跑一下。句柄泄漏主要出现在文件操作或者网络连接上。如果你的从站需要记录日志到文件文件句柄用完要记得关闭。如果协议栈内部有创建定时器或者信号量的操作也要确认在连接断开时是否正确释放。监控机制可以帮助及早发现问题。可以在固件里加一个简单的监控任务定期检查剩余内存和句柄数量如果低于阈值就记录日志或者触发报警。这样即使出了问题也能拿到现场数据来分析。我在一个项目里遇到过从站运行一周后通信变慢的问题后来发现是诊断缓冲区没有及时清理积累了大量历史记录导致内存碎片化。加上定期清理机制后就正常了。这种问题在实验室短时间测试是发现不了的只有长时间运行才会暴露。
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

数码资讯广告软文少的网站 2026/10/1 15:46:29

数码资讯广告软文少的网站

想看数码资讯,有广告软文比较少的网站吗? 数码资讯里最难躲的就是软文:看起来像评测,实际是带货;看起来像新闻,实际是通稿。想找广告软文少的入口,判断标准其实很简单——看它有没有把来源标清楚…

阅读更多 →
什么是 GPU 算力租赁 黔前智算服务流程与适用场景说明 2026/10/1 15:46:29

什么是 GPU 算力租赁 黔前智算服务流程与适用场景说明

GPU 算力租赁,就是按任务和使用周期租用 GPU 资源,不必先购买整台服务器。黔前智算提供从需求确认、配置选择、提交需求到开通使用和技术支持的服务流程,适合大模型训练、AI 推理、图像视频生成、科研计算和开发测试等场景。很多团队第一次接…

阅读更多 →
DAG:沿时间与通道双相关建模的外生变量时序预测 2026/10/1 15:46:29

DAG:沿时间与通道双相关建模的外生变量时序预测

相关链接 论文arXiv地址:https://arxiv.org/abs/2509.14933 开源代码仓库:https://github.com/decisionintelligence/DAG 思路及改进讲解:https://space.bilibili.com/51422950?spm_id_from333.1007.0.0 摘要 时序预测在众多领域都至关…

阅读更多 →
广渠门内美容疗愈机构信息梳理,以北京天姿美韵美容有限公司为例 2026/10/1 15:46:29

广渠门内美容疗愈机构信息梳理,以北京天姿美韵美容有限公司为例

本地生活服务类美容机构对外可查的信息通常分在两处。名称、经营范围和经营场所这类硬信息在公开的公示渠道里,服务内容、流程和店内的具体做法则更多依靠门店自己说明。这篇把广渠门内美容疗愈机构中一家的信息整理成条目,方便对照查阅。机构的基本情况…

阅读更多 →
在 DSH 里免费使用deepseekV4.1 2026/10/1 15:46:28

在 DSH 里免费使用deepseekV4.1

最近各家 AI agent都在送免费模型,但额度分散在不同的客户端里,想用哪个就得打开哪家。刚好DSH出桌面端了,用 magpie 这个工具能把这些额度汇聚到本机的一个地址上,DSH 只要连上这个地址,就能调用其中的全部模型。 一、…

阅读更多 →
NETSOL STT-MRAM工业MRAM芯片S3A系列规格书 2026/10/1 15:46:09

NETSOL STT-MRAM工业MRAM芯片S3A系列规格书

1、接口与速率 ①支持Single/Dual/Quad SPI,兼容SPI Mode 0与Mode 3 ②传输模式支持1-1-1、1-1-2、1-2-2、1-1-4、1-4-4、2-2-2、4-4-4 ③时钟频率最高SDR 108MHz/DDR 54MHz(原MR25H10为40MHz) ④支持XIP(Execute-in-Place&#x…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉