1.诊断概述

汽车诊断就是通过汽车总线(CAN LIN Eth)来进行诊断会话,大部分通过CAN总线通讯进行请求与响应。

1.诊断分层

DCM内部支持UDS服务和OBD服务(排放,动力)。
以统一诊断服务UDS为例,应用层(ISO 14229标准),会话层,传输层,网络层(ISO 15765 标准),数据链路层 (ISO 11898 标准)。
UDS 和 OBD 服务都属于诊断应用层服务,底层可以通过不同的总线通信实现。比如 UDS 服务支持 CAN 总线 Lin 总线 Eth 总线,OBD 常见的支持 CAN总线、K 线、FlexRay 总线。大家一定要区分诊断服务并不规定一定要通过什么总线实现。

2.AutoSar诊断功能

在这里插入图片描述
诊断服务属于 AutoSAR 服务层,诊断数据流通过 CAN 驱动CANIF 层 CANTP- PDUR -DCM 给到 DCM 模块,DCM 模块处理诊断数据,并执行对应的具体诊断服务。

  • **DCM:**Diagnostic Communication Manager,诊断通讯管理。实现具体的诊断协议,比如 UDS OBD。这里具体定义了各种不同的诊断服务,比如读取 ECU 故障码、写入 DID 数据等。
  • **DEM:**Diagnostic Event Manager,诊断事件管理,用来记录和存储诊断事件的,在诊断故障码写入的时候会加入防抖策略。DCM 和 DEM 直接交互,只要在 0x19 0x14 等与 DTC 相关服务的时候进行交互。
  • **FIM:**Function Inhibition Manager,功能禁止管理。当一些错误出现的时候,禁止一些功能,比如检测到电流过大的时候,关闭继电器。就是有些 SWC是需要使能条件的,这些条件取决于故障内容(源于 DEM),而 FIM 负责根据故障内容关闭一些 SWC 或执行一些 SWC。
  • **故障响应:**应用层传输数据到 DEM,DEM 判断出是哪个故障,之后发送给 FIM;FIM 立即做出判断,通过回调函数通知 SWC 或者轮询的方式禁止 SWC
  • 故障记录:应用层传输数据给 DEM,DEM 一边发送给 FIM,另一边发送给 NVM(管理非易失性存储的组件),NVM 会将 DTC 存储到 FLASH 中。

2.UDS服务

UDS服务由诊断请求和诊断响应组成。一般情况下是诊断仪发出诊断请求,ECU 根据诊断请求执行具体诊断服务,并将结果通过诊断应答发出给诊断仪。
响应分为肯定响应和否定响应。
在这里插入图片描述

2.1 UDS诊断请求与响应

UDS服务的诊断请求,由SID(服务ID必须)+ 子服务ID + 数据参数组成。

  • 带子服务的请求
    例如:10 01(请求切换到默认会话模式)
    例如:19 02 FF(请求读取以 0xFF 为 Mask 的故障信息

  • 带子服务的肯定响应
    请求:10 01(切换默认会话模式)
    响应:50 01 xx xx xx xx(成功切换默认会话模式)

  • 不带子服务的请求
    例如:22 F0 90(请求读取 DID 为 0xF090 的数据)
    例如:37(请求数据传输退出服务)

  • 不带子服务的肯定响应
    请求:22 F0 90(读取 DID 为 0xF090 的数据)
    响应:62 F0 90 11 11 11 11 11 11 11 11 11 11(返回 DID 为 0xF090 的数据为 11 11 11 11 11 11 11 11 11 11)

  • 否定响应
    请求:10 02(切换编程会话模式)
    负响应:7F 10 7E(切换编程会话服务执行失败 错误码 NRC 为 7E)

2.2 诊断的寻址方式

寻址方式有两种,物理寻址和功能寻址。

  • 物理寻址
    是诊断仪和单个 ECU 之间的诊断,也就是诊断请求报文发出去后,根据报文ID,CAN 网络中只会有对应的一个 ECU 进行诊断响应
  • 功能寻址
    是诊断仪和多个 ECU 之间的诊断,也就是诊断请求报文发出去后,CAN 网络中支持该功能寻址报文 ID 的 ECU,一般功能寻址报文 ID 为 0x7DF,这些 ECU 都会执行诊断服务,并且发出诊断响应。
    一个 ECU 内部一般会定义 3 条诊断报文:
  • 诊断请求接收报文(物理寻址 报文 ID 用户自定义 同一网络中的每个 ECU 不一样)
  • 诊断请求接收报文(功能寻址 一般为 0x7DF)
  • 诊断应答发送报文(同一网络的每个 ECU 的 ID 不一样)
    例:整车同一网络中有 ECU A, B, C, D 多个节点,假设他们的物理请求消息 ID 为 0x701, 0x702, 0x703, 0x704,响应消息地址分别为 0x70A,0x70B, 0x70C, 0x70D,所有 ECU 的功能寻址 ID 为 0x7DF。

物理寻址时:
0x701 0x10 0x01 (对 ECU A 进行诊断请求)
0x70A 0x50 0x01 xx xx xx xx (仅 ECU A 响应)
功能寻址时:
0x7DF 0x10 0x01 (对所有 ECU 进行诊断请求)
0x70A 0x50 0x01 xx xx xx xx (ECU A 响应)
0x70B 0x50 0x01 xx xx xx xx (ECU B 响应)
0x70C 0x50 0x01 xx xx xx xx (ECU C 响应)
0x70D 0x50 0x01 xx xx xx xx (ECU D 响应)

2.3 UDS常用诊断服务

2.3.1 诊断会话控制【0x10】

会话模式有默认会话模式(default session)和非默认会话模式(non-default session),非默认会话模式包含编程会话模式(ProgrammingSession)、拓展诊断会话模式(extendedDiagnosticSession)及其余会话模式。会话模式可以理解为诊断的功能模式,即在不同的会话模式下,能够支持不同的诊断功能,如在默认会话模式0x01下,一般情况下不允许支持写服务(WriteDataByIdentifier0x2E),也不允许支持请求下载服务(RequestDownload0x34),而在拓展诊断会话模式0x03下,就允许支持写服务(WriteDataByIdentifier0x2E),在编程会话模式0x02下,就可以支持(RequestDownload0x34)。

ECU 在刚上电或者复位之后处于默认会话模式(0x01);
默认会话模式下发送 10 03 可以切换至拓展会话模式(0x03);
拓展会话模式发送 10 02 可以切换至编程会话模式(0x02);
而在默认会话模式不可以直接跳转至编程会话模式,若在模式会话模式直接发送 10 02,此时 ECU 需要响应 NRC 为0x7E(subFunctionNotSupportedInActiveSession)的负响应,响应内容为 7F 10 7E。

如果 ECU 处于非默认会话模式下,客户端发送 10 01 进入默认会话模式,ECU收到该请求后,ECU 的安全访问状态切换到锁定状态,由
ReadDataByPeriodicIdentifer(0x2A)服务配置的周期调度被禁止,通过CommunicationControl(0x28)和 ControlDTCSetting(0x85)进行的设置均被复位,即 ECU 初始化所有在非默认模式下激活的事件,设置和控制等操作,但不包括已经写入到非易失性存储位置的操作。

  • 请求格式: 0x10 + 子服务(1byte)
    01 默认会话
    02 编程会话
    03 拓展会话
  • 肯定响应 0x50 子服务ID(1byte) + P2time (接收请求后的响应时间:2byte)+ p2time (接收到请求后P2time * 10 内返回响应会先返回78NRC:2byte)
  • 否定响应:0x7F + 0x10 + NRC(1byte)

2.3.2 ECU复位(0x10)

ECU 复位 ECUReset(0x11)是控制 ECU 端执行复位的服务。诊断仪发送 11 01 复位请求后,ECU 复位动作执行前,正响应需先发送给诊断仪,然后 ECU 执行复位操作,成功复位后,ECU 需进入默认会话模式。

  • 请求格式: 0x11 + 子服务(1byte)
  • 肯定响应 0x50 + 子服务ID(1byte)
  • 否定响应:0x7F + 0x11 + NRC(1byte)

2.3.3 安全访问(0x27)

安全访问 SecurityAccess(0x27),此服务是提供访问 ECU 内部数据或者出于安全因素需被限制的诊断服务的请求权限。常见的如读服务(0x22)读取非安全信息时能够直接读取,不需要利用 27 服务进行安全访问,而通过写服务(0x2E)写入数据时,则通常需要通过 27 服务进行安全访问才可以写,刷新程序也需要利用 27 服务通过相关的安全等级才能够对 ECU 进行程序下载,显然这些都是需要利用 27 服务进行权限管控,从而保障 ECU 的安全可靠。
安全访问序列如下图所示,一共 4 步组成,

  • 诊断仪先发送请求 seed 的报文(27 01)
  • ECU 响应 seed(67 01 xx xx xx xx)
  • 诊断仪根据返回的 seed 按照约定算法计算 key 值,并发送给 ECU 请求验证(27 02 xx xx xx xx)
  • ECU 收到请求之后,也按照约定的算法对该 key 进行校验,并给出响应,若计算一致,则为正响应(67 02),否则为负响应(7F 27 NRC)
    在这里插入图片描述
    ECU 若校验 key 一致,则 ECU 则切换安全状态至对应的解锁状态,此时在该解锁状态下能够支持的服务都应该可以工作。如果 ECU 已经处于解锁状态,此时诊断仪再次发送请求 seed 的报文,ECU 应该响应 seed 为 0 的正响应。
    seed 请求的子服务值为奇数,对应的 key 请求验证的子服务值为该奇数加 1,如 27 01 与 27 02 为一组安全等级,27 03 与 27 04 为一组安全等级,27 11 与27 12 为一组安全等级。不同的安全等级由客户定义功能区分。
  • seed请求格式: 0x27 + 01 03 05,07~7D
  • seed肯定响应 0x67 + 01 03 05,07~7D + 种子(4byte)
  • seed否定响应:0x7F + 0x27 + NRC(1byte)
  • key请求格式: 0x27 + 02 04 06,08~7E+ key(4byte)
  • key肯定响应 0x67 + 02 04 06,08~7E
  • key否定响应:0x7F + 0x27 + NRC(1byte)

2.3.4 通讯控制(0x28)

通讯控制服务用于开启或关闭 ECU 对某些报文的发送或接收,如应用报文和网络管理报文等。

  • 请求格式: 0x28 + 子服务ID(1byte:00:R/T 01:R 02:T 03 :关闭接收/发送) + communicationType(01 一般通讯报文;02 网络管理报文;03 :一般通讯和网络管理报文)
  • 肯定响应 [0x68] [SubFunction] [CommunicationType]
  • 否定响应:0x7F + 0x28 + NRC(1byte)

2.3.4 待机在线(0x3E)

该服务用于诊断仪端告知 ECU 诊断仪依然在线。该服务通常用于保持 ECU 处于非默认模式,由于 ECU 在 S3server 时间收不到诊断请求的话,ECU 将会退回默认会话模式(default session),所以诊断仪为了保持 ECU 处于非默认模式,需要周期性发送 TesterPresent 服务指令,周期时间需要小于 S3server。

  • 请求格式:[0x3E] [SubFunction(00/ 80:80不返回肯定响应)]
  • 肯定响应:[0x7E] [SubFunction 00]
  • 否定响应:[0x7F] [ 0x3E] [NRC]

2.3.5 诊断故障码设置控制(0x85)

诊断故障代码设置控制服务用于停止或重启 ECU 诊断故障代码的记录。
当通过该服务对故障码记录进行抑制操作后,若会话层时序参数超时从而 ECU进入默认会话,或 ECU 执行复位操作后,诊断故障代码应该恢复记录。
当接收到诊断仪发送的清除诊断信息(0x14)服务后,ECU 应重新开启诊断故障代码记录。

  • 请求格式:[0x85] [SubFunction(01 :ECU允许记录DTC;02 :ECU停止记录DTC)]
  • 肯定响应:[0xC5] [SubFunction]
  • 否定响应:[0x7F] [ 0x85] [NRC]

2.3.6 读 DID 数据 (0x22)

根据 DID(标识符)读取数据服务用于从 ECU 存储器中读取由 DID 所确定的数据记录值,其中 DID 为两个字节长度的数值。
ISO14229 中定义该服务的请求报文允许支持 1 个或者多个数据标识符,一般主机厂仅支持 1 个 DID 读取。下图报文格式也以 1 个 DID 作为讲解。

  • 请求格式:[0x22] [DID(MSB)] [DID (LSB)]
  • 肯定响应:[0x62] [DID(MSB)] [DID (LSB)] DATA(nbyte)
  • 否定响应:[0x7F] [ 0x22] [NRC]

2.3.7 写 DID 数据 (0x2E)

根据 DID 写入数据服务允许诊断仪将数据写入由 DID 指定的内部存储单元。ECU应在数据写入成功后发送该服务的肯定响应。

  • 请求格式:[0x2E] [DID(MSB)] [DID (LSB)] DATA(nbyte)
  • 肯定响应:[0x6E] [DID(MSB)] [DID (LSB)]
  • 否定响应:[0x7F] [ 0x2E] [NRC]

2.3.8 清除故障码(0x14)

正响应需在诊断信息清除请求后,ECU 处理完成后发出,即使 ECU 没有存储的DTC,也需发出正响应报文。清除 DTC 的同时,所有 DTC 相关存储信息都应被清除。

  • 请求格式:[0x14] 3byte:groupofDTC:FF FF FF 清除所有DTC,清除特定的 DTC 组(由 OEM 定义)
  • 肯定响应:[0x54]
  • 否定响应:[0x7F] [ 0x14] [NRC]

2.3.9 获取故障码信息(0x19)

  • 请求格式:[0x19] [sub:01/02 根据状态掩码报告诊断故障码数量/根据状态掩码报告诊断故障码] [DTC StatusMask]
  • 肯定响应:[0x59][01] [数量] ;[0x59] [02] [故障码信息4byte * n]
    -
  • 否定响应:[0x7F] [ 0x19] [NRC]
    其他子功能简述:04 :用于请求指定故障码(DTC)的快照信息;06:通过DTC报告扩展数据 0A:读取ECU支持的所有DTC列表及其状态 等等后续深入吧。

2.3.10 通过DID控制输入输出(0x2F)

该服务是用于通过 DID 来直接控制 ECU 对应的输入输出信号。

  • 请求格式:[0x2F] [ControlParameter] [IOControlID] [ControlOptionRecord (可选)] [ControlEnableMaskRecord (可选)]
    ControlParameter:控制参数,用于指定控制类型。
    常见值:
    0x01:重置输入输出控制(Reset to default)。
    0x02:冻结当前状态(Freeze current state)。
    0x03:短期调整(Short-term adjustment)。
    IOControlID:输入输出控制的标识符,用于指定要控制的 I/O 信号。
    ControlOptionRecord(可选):控制选项记录,包含具体的控制数据。
    ControlEnableMaskRecord(可选):控制使能掩码记录,用于指定哪些信号被控制。
  • 肯定响应:[0x6F] [IOControlID] [ControlStatusRecord (可选)]
  • 否定响应:[0x7F] [ 0x2F] [NRC]

2.3.11 例程控制(0x31)

  • 请求格式:0x31 子服务(1byte) RID(2byte)其他控制信息nbyte
    01 :启动程序
    02:停止程序
    03 : 请求程序执行结果
  • 肯定响应:0x71 子服务(1byte) RID(2byte)其他信息nbyte
  • 否定响应:[0x7F] [ 0x31] [NRC]

2.3.12 请求下载(0x34)

  • 请求格式:[0x34] [DataFormatIdentifier] [MemoryAddressLength] [MemoryAddress] [MemorySize]
    DataFormatIdentifier:数据格式标识符,指定压缩和加密格式。
    高 4 位:压缩方法(通常为 0x0 表示无压缩)。
    低 4 位:加密方法(通常为 0x0 表示无加密)。
    MemoryAddressLength:内存地址长度(字节数)。
    MemoryAddress:目标内存地址,用于指定下载数据的起始地址。
    MemorySize:下载数据的大小(字节数)。
  • 肯定响应:
    -
    在这里插入图片描述
  • 否定响应:[0x7F] [ 0x34] [NRC]

2.3.13 传输数据(0x36)

  • 请求格式:0x36 包序号(1byte) data(nbyte)
  • 肯定响应:0x76 包序号(1byte)
  • 否定响应:[0x7F] [ 0x36] [NRC]

2.3.14 传输数据(0x37)

  • 请求格式:0x37
  • 肯定响应:0x77
  • 否定响应:[0x7F] [ 0x37] [NRC]

2.4 否定响应码

在这里插入图片描述

3. AutoSarDCM模块

诊断通信管理模块 DCM(Diagnostic Communication Manager)是实现 AutoSAR BSW 诊断功能的重要模块。确保诊断数据流并管理诊断状态,比如管理诊断会话和安全状态以及诊断服务分配等。

  • DCM 模块会检查当前诊断服务请求是否支持
  • 确认诊断服务能否在当前会话等级以及安全等级执行
  • 支持 UDS 服务和 OBD 服务
  • DCM 提供了 OSI 层的 5-7 层,会话及应用层
    DCM 内部由三大子模块组成。
    在这里插入图片描述

3.1 DSL:Diagnostic Server Layer 诊断服务层

  1. 确保诊断请求和诊断应答的数据流
  • 接收 PDUR 的诊断请求,并把诊断请求发给 DSD 模块
  • 将 DSD 模块发送出来的诊断响应转发给 PDUR 模块
  1. 定时器管理
  • S3 定时器超时监控
  • P2 定时器超时监控
  1. 管理会话状态、安全等级以及身份认证状态

3.2 DSD:Diagnostic Server Dispatcher 诊断服务分发

  1. 检查诊断请求的合法性
  2. 正响应抑制
  3. 会话状态、安全等级校验
  4. 分发诊断消息给到 DSP 去执行具体的诊断服务

3.3 DSP:Diagnotic Server Processing 诊断服务执行

  1. 支持 UDS 服务,如 0x10、0x22、0x2E 等服务
  2. 支持 OBD 服务,如 0x01、0x02、0x03 等服务

3.4 DCM 与其他模块的交互

Dcm 模块作为诊断通信管理模块,和 Dem、NVM、BswM、ComM、PduR 模块都有交互。

1.Dcm 和 PduR 的交互

Dcm 通过内部的 DSL 子模块和 PduR 进行交互,实现诊断报文传输:
在这里插入图片描述

2.Dcm 和 DEM 的交互

DEM 向 DCM 提供检索故障码相关的信息,比如 0x14 服务 0x19 服务,具体如下图:
在这里插入图片描述

3.Dcm 和 ComM 的交互:

当通信状态变化时,ComM 请求启动或者禁用诊断通信功能
在这里插入图片描述
DCM 会话模式转变,请求 ComM 通信模式变化
在这里插入图片描述
注:对于 ComM 通信管理而言,会有多个 User 请求通信状态变化,比如 DCM、SWC、NM 等,当 DCM 请求关闭通信时,只是 DCM 的通信不使用了,不涉及其他User 的请求,只有当所有 User 都请求关闭通信时,ComM 才会真正关闭某一路通信。

3 DCM和SWC的交互

有一些具体服务是需要 SWC 实现的,比如诊断 IO 控制的 SWC,当 DCM 的 27 服务请求时,会去具体 SWC 执行控制操作,比如关闭 led 灯等

4.DCM 和 BswM 的交互

• 比如 0x28 服务,DCM 收到 28 服务通信控制时,会将通信模式改变转发给 BswM,BswM 根据模式变化执行对应的 Action,去开启或者关闭通信
• 比如 0x11 服务时,也会通知到 BswM,BswM 根据不同的复位类型执行不同的 Action

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

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

kafka-生产者-(day-4)

day-3 BufferPool 产生原因:ByteBuffer的创建和释放都是比较耗费资源的,为了实现内存的高效利用,产生了他。他会对特定大小的ByteBuffer进行管理 BufferPool的字段 free:是一个ArrayDeque队列,缓存指定大小的ByteBuffer对象Re…

java 验证ip是否可达

默认IP的设备已开放ping功能 代码 public class PingTest {public static void main(String[] args) throws Exception {String ip "192.168.21.101";boolean reachable InetAddress.getByName(ip).isReachable(3000);System.out.println(ip (reachable ? &quo…

LeetCode 2187.完成旅途的最少时间

题目: 给你一个数组 time ,其中 time[i] 表示第 i 辆公交车完成 一趟旅途 所需要花费的时间。 每辆公交车可以 连续 完成多趟旅途,也就是说,一辆公交车当前旅途完成后,可以 立马开始 下一趟旅途。每辆公交车 独立 运…

永磁同步电机无速度算法--基于正切函数锁相环的滑模观测器

最近在学习锁相环,后续会记录一下了解到的几种PLL。 一、原理介绍 传统锁相环控制框图如下所示 在电机正转时,传统锁相环可以实现很好的转速和转子位置估计,但是当电机反转,反电动势符号发生变化,系统估计转子位置最…

Vim-vimrc 快捷键映射

Vim-vimrc 快捷键映射 文章目录 Vim-vimrc 快捷键映射Leader 键快捷键映射:插入特定字符插入 --插入 ##插入 解释Leader键设置快速插入分隔线 Leader 键 我们还将 , 设置为 Leader 键,使得其他快捷键映射更加简洁。 let mapleader ","快捷键…

SylixOS armv7 任务切换

SylixOS 操作系统下,任务切换可以分为两种 中断退出时,执行的任务切换(_ScheduleInt)内核退出时,执行的任务切换(_Schedule) 下面分别讲讲这两种任务切换 1、中断退出时任务切换 关于 ARM 架…

Java 自定义异常:如何优雅地处理程序中的“业务病”?

🔥「炎码工坊」技术弹药已装填! 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 一、从一个真实场景开始:银行转账系统的困境 假设你正在开发一个银行转账系统,当用户尝试转账时可能出现以下问题: 转…

【JAVA】【Stream流】

1. filter操作 filter()方法用于根据给定的条件过滤列表中的元素&#xff0c;仅保留满足条件的项。 List<Integer> list Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8);List<Integer> res list.stream().filter(a -> a % 2 0).collect(Collectors.toList());for(I…

四、Redis实现限流

简介&#xff1a; 限流算法在分布式领域是一个经常被提起的话题&#xff0c;当系统的处理能力有限时&#xff0c;如何阻止计划外的请求继续对系统施压。 系统要限定用户的某个行为在指定的时间里只能允许发生 N 次&#xff0c;如何使用 Redis 的数据结构来实现这个限流的功能&a…

基于Geotools的两条道路相交并根据交点形成新路线实战-以OSM数据为例

目录 前言 一、需求场景及分解 1、需求场景 2、需求应用 二、需求实现 1、加载路网数据 2、获取道路信息 3、相交点求解 4、生成新道路 5、结果可视化 三、总结 前言 在当今数字化迅速发展的时代&#xff0c;地理空间数据的处理与分析已成为众多领域不可或缺的关键技…

goland有基础速通(需要其它编程语言基础)

tip: 无论是变量、方法还是struct的访问权限控制都是通过命名控制的&#xff0c;命名的首字母是大写就相当于java中的public&#xff0c;小写的话就是private&#xff0c;&#xff08;private只有本包可以访问&#xff09; 1 go的变量声明 普通变量 特点&#xff1a; 变量类…

量化面试绿皮书:19. 相关系数

文中内容仅限技术学习与代码实践参考&#xff0c;市场存在不确定性&#xff0c;技术分析需谨慎验证&#xff0c;不构成任何投资建议。 19. 相关系数 假设有三个随机变量x、y和z。 x与y之间的相关系数为0.8&#xff0c;x与z之间的相关系数也是0.8。 Q: 那么y与z之间的最大相关…

新生活的开启:从 Trae AI 离开后的三个月

很久没有写文章了&#xff0c;想借着入职新公司一个月的机会&#xff0c;和大家唠唠嗑。 离职 今年2月份我从字节离职了&#xff0c;结束了四年的经历&#xff0c;当时离开的核心原因是觉得加班时间太长了&#xff0c;平均每天都要工作15&#xff0c;16个小时&#xff0c;周末…

LLM部署之vllm vs deepspeed

部署大语言模型(如 Qwen/LLaMA 等)时,vLLM 与 DeepSpeed 是当前主流的两种高性能推理引擎。它们各自专注于不同方向,部署流程也有明显区别。 vLLM 提供极致吞吐、低延迟的推理服务,适用于在线部署;DeepSpeed 更侧重训练与推理混合优化,支持模型并行,适用于推理 + 微调/…

Git(二):基本操作

文章目录 Git(二)&#xff1a;基本操作添加文件修改文件版本回退撤销修改情况一&#xff1a;工作区的代码还没有 add情况⼆&#xff1a;已经 add 但没有 commit情况三&#xff1a;已经 add 并且也 commit 删除文件 Git(二)&#xff1a;基本操作 添加文件 首先我们先来学习一个…

nginx + ffmpeg 实现 rtsp视频实时播放和历史播放

nginx和ffmpeg 的安装请参考我的另一篇文章 Nginxrtmpffmpeg搭建视频转码服务_nginx-rtmp-module-master-CSDN博客 目录 1、整体方案设计如图 2、nginx下目录创建和配置文件创建 3、创建视频流生成脚本 4、修改nginx配置 5、管理界面 (video.html) 6、ffmpeg后台启动 …

全国产!瑞芯微 RK3576 ARM 八核 2.2GHz 工业核心板—硬件说明书

前 言 本文为创龙科技 SOM-TL3576 工业核心板硬件说明书,主要提供 SOM-TL3576 工业 核心板的产品功能特点、技术参数、引脚定义等内容,以及为用户提供相关电路设计指导。 为便于阅读,下表对文档出现的部分术语进行解释;对于广泛认同释义的术语,在此不做注释。 硬件参考…

web3 浏览器注入 (如 MetaMask)

以下是关于 浏览器注入方式(如 MetaMask) 的完整详解,包括原理、使用方法、安全注意事项及常见问题解决方案: 1. 核心原理 当用户安装 MetaMask 等以太坊钱包扩展时,钱包会向浏览器的 window 对象注入一个全局变量 window.ethereum,这个对象遵循 EIP-1193 标准,提供与区…

解密提示词工程师:AI 时代的新兴职业

大家好!在人工智能飞速发展的当下&#xff0c;有一个新兴职业正悄然崛起——提示词工程师。他们虽不如数据科学家般广为人知&#xff0c;却在 AI 应用领域发挥着独特且关键的作用。 何为提示词工程师&#xff1f; 提示词工程师专注于设计和优化与 AI 模型进行交互的提示词&…

linux 下 jenkins 构建 uniapp node-sass 报错

背景: jenkins 中构建 uniapp 应用 配置: 1. 将windows HbuilderX 插件目录下的 uniapp-cli 文件夹复制到 服务器 /var/jenkins_home/uniapp-cli 2. jenkins 构建步骤增加 执行 shell ,内容如下 echo ">> 构建中..."# 打包前端 export LANGen_US.UTF-8…