Mipi SoundWire Spec 详解4.2~4.3

news2024/9/20 12:35:38

目录

4.2 低层特性

4.2.1 物理接口

4.2.1.1 信号拓扑

4.2.1.2 多数据通道

4.2.1.3 高性能PHY

4.2.2 数据编码

4.2.3 物理信号值和逻辑信号值的术语

4.2.4 对开发和测试低级功能的支持

4.3 控制特性

4.3.1 比特流与帧结构

4.3.1.1 控制字与带宽权衡

4.3.2 同步

4.3.3 时钟停止

4.3.4 命令

4.3.5 在控制字中对开发和测试的支持

4.3.6 寄存器

4.3.7 中断

4.3.8 批量寄存器访问


4.2 低层特性

4.2.1 物理接口

更多详细信息及相关规范性规格包含在第5节中。

每个SoundWire接口包含两个逻辑信号:

  • 时钟 —— 一个公共时钟信号,由主设备分配到所有其他接口。
  • 数据 —— 一个共享数据信号,可以由任何接口驱动,并在没有其他接口驱动时由主设备中的总线保持器维持。一些SoundWire系统拥有多个数据通道。

物理接口使用传统的单端电压电平信号。

4.2.1.1 信号拓扑

图7展示了一个SoundWire系统的示例,说明了主设备、四个从设备和一个可选监控器之间的信号驱动连接细节。

注意:监控器用虚线轮廓表示,因为这一功能通常是外部测试设备的一部分,因此在最终产品中不存在。

                   

                                                       图7 soundwire 信号拓扑

解释

  • 物理接口:SoundWire接口由两个逻辑信号组成:时钟和数据。时钟信号是由主设备提供的,用于同步整个系统;数据信号则是共享的,可以由任意接口驱动,如果没有接口驱动数据信号,则由主设备中的总线保持器维持信号的稳定状态。
  • 多数据通道:某些SoundWire系统支持多个数据通道,这增加了数据传输的带宽。
  • 信号拓扑:图7展示了主设备、四个从设备和一个可选监控器之间的信号连接细节。监控器在这里用虚线表示,意味着它通常是外部测试设备的一部分,而不是最终产品的组成部分。
  • 单端电压电平信号:物理接口使用传统的单端电压电平信号,这意味着信号的传输是通过一个信号线相对于地线的电压变化来表示的。
4.2.1.2 多数据通道

实现可选的多通道特性的设备最多可以有八个数据通道,其中Data[0]替换正常的Data信号(参见5.2.1节的要求5和8)。

4.2.1.3 高性能PHY

实现可选的高性能PHY特性的设备有一个PHY,该PHY可以在基本PHY性能(如第5节所规定的)和至少一种更高性能模式之间切换。

本规范定义了选择高性能PHY模式的切换机制,但没有规定定义该模式下性能的任何定时参数。

解释

  • 多数据通道:实现多通道特性的设备可以支持最多八个数据通道,其中Data[0]通道替代了标准的Data信号。这意味着除了主数据通道Data[0]外,设备还可以支持额外的七个数据通道(Data[1]至Data[7])以增加数据吞吐量。
  • 高性能PHY:实现高性能PHY特性的设备可以在基本PHY性能和至少一种更高性能模式之间切换。这种切换机制使得设备可以根据实际需求调整PHY的工作模式,以获得更好的性能或更低的功耗。然而,规范没有定义高性能模式下的具体定时参数,这意味着这些参数可能由具体的实现来确定。

4.2.2 数据编码

更多详细信息及相关规范性规格包含在第5.1.7节、5.2.4节、8.1.5节和8.2.4节中。

数据编码采用修改过的NRZI(Non-Return to Zero Inverted,非归零反转)方式,其中不变的物理值(即编码的逻辑0)不是主动驱动的,而是由主设备中的总线保持器维持的。这有助于检测未驱动的比特符号周期,既可用于识别错误,也可用于处理未完全填充的系统。

数据信号采用DDR(Double Data Rate,双倍数据速率)方式,将所需的时钟信号频率减半,从而有助于降低整个系统的功耗。

时钟信号的频率不由规范固定,而是根据其部署的系统要求(主要是数据带宽)来选择。频率通常在一个操作周期内是不变的,并且有足够的低抖动以达到音频转换的质量水平——这些属性有助于将其用于生成连接音频设备中的采样时钟。主设备通常会协调任何时钟频率的变化,以确保音频流不会被打断——要么在系统空闲时改变它,要么与相应的其他控制参数的变化同时进行,从而使采样率保持恒定。

解释

  • 数据编码:SoundWire使用一种修改过的NRZI编码方式,其中逻辑0不是通过主动驱动来表示,而是通过主设备中的总线保持器来维持。这种编码方式有助于检测未驱动的比特符号周期,这对于识别错误和处理未完全填充的系统很有用。
  • 双倍数据速率(DDR):数据信号采用DDR方式,这意味着每个时钟周期可以传输两个数据位,从而将所需的时钟信号频率减半,有助于降低功耗。
  • 时钟频率:时钟信号的频率不是固定的,而是根据系统要求(特别是数据带宽)来选择。在正常操作期间,时钟频率通常是恒定的,并且具有足够的低抖动,使其可用于生成音频设备中的采样时钟。
  • 主设备的协调作用:主设备负责协调任何时钟频率的变化,以确保音频流的连续性。通常情况下,主设备会在系统空闲时改变时钟频率,或者与相应的其他控制参数的变化同时进行,以保证采样率保持不变。

4.2.3 物理信号值和逻辑信号值的术语

本规范使用"低"(或"L")和"高"(或"H")来表示物理信号的值,以及"逻辑0"(或"0")和"逻辑1"(或"1")来表示逻辑信号和寄存器位的值。

比特符号周期,对应于时钟信号的一半个周期,被称为BitSlots。

4.2.4 对开发和测试低级功能的支持

更多详细信息及相关规范性规格包含在第8.1.7节和8.2.6节中。

主设备有几种测试模式,在这些模式下可以禁用PHY(物理层)的部分功能。这些测试模式有助于对主设备本身的测试,也便于对由主设备和从设备组成的组装系统的测试。

解释

  • 物理信号值和逻辑信号值:物理信号的值使用“低”(L)和“高”(H)表示,而逻辑信号和寄存器位的值使用“逻辑0”(0)和“逻辑1”(1)表示。物理信号值是指实际电路中电压或电流的状态,而逻辑信号值则是在更高抽象级别上的表示。
  • BitSlots:BitSlots是指与时钟信号的一个半个周期相对应的比特符号周期。由于采用了DDR(双倍数据速率),所以在每个时钟周期内可以传输两个比特位,因此BitSlots表示的是一个时钟周期内的两个数据传输时段之一。
  • 测试模式:主设备支持多种测试模式,这些模式允许禁用物理层的一些功能,以便于对主设备本身进行测试,也可以帮助在主设备和从设备组成的系统中进行更全面的测试。

4.3 控制特性

本节总结了SoundWire中与音频负载传输不直接相关的特性。

4.3.1 比特流与帧结构

更多详细信息及相关规范性规格包含在第6节中。

连续BitSlots的值形成一个比特流,该比特流交织了以下所有内容:

  • 来自主设备的控制位,例如用于同步。
  • 来自主设备或监控器的命令位,以及来自从设备或主设备的相应命令结果和响应位。
  • 来自从设备的状态位
  • 负载数据,它可以是主设备到从设备、从设备到主设备或从设备到从设备之间的数据。

在比特流上施加了一个逻辑结构,将其视为一系列行(Rows),每一行包含一系列列位置(Column positions),这些行和列组成的集合被称为帧(Frame)。该比特槽数组的形状,即宽度(列的数量)和高度(行的数量),可以在一组针对音频数据场景的值范围内变化。

解释

  • 比特流:比特流是一个连续的数据流,其中包含了来自主设备的控制位、命令位、从设备的状态位以及负载数据。
  • 帧结构:比特流被组织成帧结构,每个帧由一系列行和列构成。每一行称为一个“Row”,每一行中的数据单元称为“Column”。帧中的行数和列数可以根据音频数据的场景进行调整。
  • 控制位和命令位:控制位用于同步目的,而命令位用于主设备或监控器向从设备发送命令,以及从设备向主设备或监控器返回命令结果和响应。
  • 状态位:状态位来自于从设备,用于报告从设备的状态信息。
  • 负载数据:负载数据可以是主设备到从设备、从设备到主设备或从设备到从设备之间的数据传输。

4.3.1.1 控制字与带宽权衡

控制、命令和状态信息占据帧内一个固定的48个BitSlots模式,这被称为控制字。帧内的所有其他BitSlots都可以用于负载数据。通过改变帧的形状,即改变控制字在帧中所占的比例,可以将总带宽中分配给控制而不是负载数据的比例从50%(为了更快的系统初始化)调整到大约1%(为了更高的负载效率)。

解释

  • 控制字:控制字是帧内一个固定的48个BitSlots,用于传输控制信息、命令和状态信息。
  • 帧形状:通过调整帧的形状,即帧的高度和宽度,可以改变控制字在整个帧中所占的比例。
  • 带宽分配:通过调整帧形状,可以改变分配给控制信息与负载数据的带宽比例。例如,为了更快的系统初始化,可以将控制信息的带宽比例设置为50%,而在需要更高负载效率时,可以将该比例减少到大约1%。

4.3.2 同步

更多详细信息及相关规范性规格包含在第7节中。

主设备在比特流中生成特殊的patterns ,以帮助从设备(和监控器)获取并保持与帧边界的同步。这些同步位存在于每一个帧中,其中一部分具有静态值,另一部分则在一个15帧周期内具有动态模式。

同步模式是在同一个数据信号上进行的,该信号也被负载数据使用,但设计成能够极大地降低对随机负载数据流中瞬间出现的虚假同步模式进行错误锁定的概率。

一旦从设备获取了同步,它通常会在供电期间保持同步状态。然而,在遇到比特错误的系统中,从设备有可能失去同步。SoundWire包括了允许从设备在失去同步时自行脱离总线的机制,并在重新获取同步时安全且不干扰地重新连接到总线。

解释

  • 同步模式:主设备在比特流中生成特定的patterns ,这些patterns 有助于从设备获取和保持与帧边界的同步。这些patterns 包括静态值和动态模式,后者在一个15帧周期内变化。
  • 同步位:同步位存在于每个帧中,它们与负载数据在同一数据信号上传输。
  • 错误锁定概率:同步模式的设计降低了从设备错误锁定到随机负载数据流中短暂出现的虚假同步模式的可能性。
  • 保持同步:一旦从设备获取了同步,它通常会在供电期间保持同步状态。
  • 失去同步:在遇到比特错误的情况下,从设备可能会失去同步。
  • 脱离和重新连接:SoundWire包括了允许从设备在失去同步时自行脱离总线的机制,并在重新获取同步时安全且不干扰地重新连接到总线。

4.3.3 时钟停止

更详细的信息及相关规范性规格包含在第8.1.4节和第8.2.3节中。

SoundWire提供了暂时停止时钟的架构支持,这有助于低功耗系统的设计。这包括设计在时钟重启时控制操作以及可选的音频负载操作能够无缝重启的系统。

停止时钟可以完全由主设备控制,例如,通过定期启动/停止来节省电力。但是,时钟停止机制也支持重启时钟的触发信号来自从设备,这种机制可能在一些应用场景中被利用,比如音频插孔检测。这种在带内的机制有助于在某些低功耗系统设计中无需额外的GPIO引脚就能实现信号传输。

解释

  • 时钟停止:SoundWire支持暂时停止时钟的功能,这对于设计低功耗系统非常有用。
  • 主控管理:停止和启动时钟的操作可以完全由主设备控制,例如,为了节能而定期进行启动/停止。
  • 从设备触发:除了主设备控制外,时钟停止机制还支持从设备触发时钟重启,例如在检测到音频插孔插入时。
  • 低功耗设计:这种机制有助于在不需要额外GPIO引脚的情况下实现信号传输,这对于低功耗设计尤为重要。
  • 无缝重启:当时钟重启时,控制操作和可选的音频负载操作可以无缝重启,确保系统功能的连续性。

4.3.4 命令

更多详细信息及相关规范性规格包含在第9节中。

帧中的控制字的一部分用于命令,这些命令通常由主设备生成。定义了三种类型的命令:读取(Read)、写入(Write)和Ping。每个帧都包含一个命令。当不执行读取或写入操作时,主设备默认生成Ping命令。

读取和写入命令用于访问每个从设备内部地址空间中的控制和状态寄存器。每次访问都会从或向寄存器传输一个8位的值。

Ping命令收集所有从设备的状态信息。这些状态信息用于检测从设备在获取同步后新加入总线的情况,同时也用于通知主设备从设备中存在的某些条件。这些警报被称为中断,因为它们类似于基于CPU的系统中的中断,并且通常用于触发主设备控制软件执行异常处理序列,或者告知某些常规功能动作已完成。

注意:将这些中断信号传递给主设备接口的延迟由SoundWire协议限定,但总的中断延迟还包括主设备接口之外的系统设计,这部分不在本规范的范围内。

Ping命令还提供了一种途径,用于实现一些辅助控制功能,例如在不同流之间同步负载采样事件,或者实现总线仲裁以方便使用监控器。

解释

  • 命令:命令是通过帧中的控制字传输的,主要用于控制和状态寄存器的读取和写入操作。
  • 读取和写入命令:这些命令用于访问从设备中的寄存器,每次访问传输一个8位的值。
  • Ping命令:Ping命令用于收集从设备的状态信息,这些信息用于检测新加入总线的从设备,并用于通知主设备从设备中的某些条件。这些条件可以触发中断,类似于基于CPU的系统中的中断。
  • 中断:中断用于触发主设备控制软件执行异常处理序列,或者告知某些常规功能动作已完成。
  • 辅助控制功能:Ping命令还可以用于实现一些辅助控制功能,例如在不同流之间同步负载采样事件,或者实现总线仲裁以方便使用监控器。

4.3.5 在控制字中对开发和测试的支持

更多详细信息及相关规范性规格包含在第9.1.2节和9.2.2节中。

Ping命令提供的一个辅助功能是命令所有者仲裁。

这种机制便于监控器(Monitor)暂时获得控制字中命令功能的所有权,以便它可以利用已有的读取命令机制来查询系统内从设备的状态。

如果主设备实现了可选的主设备寄存器功能,那么来自监控器的读取命令也可以访问主设备,从而获得系统状态的更完整视图,有助于调试工作。

解释

  • 命令所有者仲裁:这是一种机制,允许监控器暂时接管命令功能的所有权,以便能够读取从设备的状态信息。
  • 监控器:监控器是一种特殊设备或软件,可以使用读取命令来检查系统中从设备的状态。
  • 主设备寄存器:这是主设备的一个可选功能,允许监控器不仅读取从设备的状态,还能访问主设备的寄存器,以获得整个系统的更全面状态信息。
  • 调试:通过监控器访问主设备寄存器和从设备的状态信息,可以更有效地进行系统调试。

4.3.6 寄存器

更多详细信息及相关规范性规格包含在第10节中。

每个SoundWire接口包含一组地址映射的8位存储位置,称为寄存器。这些寄存器包含影响SoundWire接口行为的控制信息,以及反映SoundWire接口状态和其他设备部件状态的状态信息。

寄存器使用一种熟悉的硬件抽象来描述,但本规范并未规定特定的实现技术。

每个设备的地址空间为4GB,其中一部分由本规范定义,一部分保留用于未来版本,还有一部分分配给SoundWire设备设计师用于实现定义的用途,例如控制设备中的音频功能。地址空间的前64KB在所有实现中都是可访问的,剩余部分仅在实现了各种可选功能的实现中可用。

寄存器与概念上的控制端口关联,用于控制整个接口的操作,或者与数据端口关联,用于控制该端口的负载传输操作。

一些寄存器在两个寄存器组中都有副本,这便于在运行系统中无缝更改操作。主设备在从设备的当前离线寄存器组中进行所需的更新,然后将该寄存器组上线,以同时切换所有更新的值。当多个从设备需要更新时,使用广播机制来同步整个系统在特定的时钟转换时切换到新的操作。

如果主设备实现了可选的主设备寄存器功能,那么这些寄存器以与从设备相同的方式地址映射,这便于在系统开发和调试过程中由监控器进行读取和写入访问。

解释

  • 寄存器:寄存器是一组地址映射的8位存储位置,用于存储控制和状态信息。
  • 地址空间:每个设备的地址空间为4GB,其中一部分由规范定义,一部分保留用于未来版本,还有一部分分配给实现定义的用途。
  • 控制端口和数据端口:寄存器与控制端口或数据端口关联,用于控制整个接口或特定端口的操作。
  • 寄存器组:一些寄存器有两个副本,分别位于两个寄存器组中,这便于在运行系统中无缝更改操作。
  • 主设备寄存器:如果主设备实现了可选的主设备寄存器功能,那么这些寄存器以与从设备相同的方式地址映射,这便于监控器在系统开发和调试过程中进行读取和写入访问。

4.3.7 中断

更多详细信息及相关规范性规格包含在第11节中。

SoundWire包括了一种通信机制,用于将一系列状态条件从从设备传递给主设备。这些状态条件可能与主设备正在执行的操作异步发生,因此,类比于软件处理器,这种机制被称为中断。

从设备使用帧中的共享Ping请求位来通知主设备需要收集更新的中断状态,具体的从设备通过Ping命令中的从设备状态来标识。特定主设备设计的具体细节会影响收集中断从设备身份的延迟,但这一延迟被限制在最多32帧以内,从而为从设备的中断延迟提供了一个上限。随后,通过一个或多个帧的读取命令来更准确地确定中断的来源。

解释

  • 中断:中断是一种机制,允许从设备向主设备传递状态条件,这些条件可能与主设备正在执行的操作异步发生。
  • Ping请求位:从设备使用帧中的Ping请求位来通知主设备需要收集更新的中断状态。
  • 从设备标识:具体的从设备通过Ping命令中的从设备状态来标识。
  • 中断延迟:特定主设备设计的具体细节会影响收集中断从设备身份的延迟,但这一延迟被限制在最多32帧以内,从而为从设备的中断延迟提供了一个上限。
  • 读取命令:通过一个或多个帧的读取命令来更准确地确定中断的来源。

4.3.8 批量寄存器访问

更多详细信息及相关规范性规格包含在第13.1.3节和第13.2节中。

SoundWire包括了一个可选机制,用于传输比强制性的命令机制更高的寄存器操作带宽。批量寄存器访问(Bulk Register Access,BRA)协议是一种特定格式的数据传输,它发生在可选的、特殊的编号为0的数据端口上。BRA协议传输来自BRA发起者(通常是主设备)的读取和写入操作,这些操作可以针对一个或多个BRA目标(通常是从设备)。

解释

  • 批量寄存器访问:这是一种可选的机制,用于提高寄存器操作的带宽,相比传统的命令机制更加高效。
  • BRA协议:BRA协议定义了一种特定的数据传输格式,用于批量寄存器读取和写入操作。
  • BRA发起者:通常是主设备,发起批量寄存器读取和写入操作。
  • BRA目标:通常是从设备,接收并处理来自BRA发起者的批量寄存器读取和写入操作。

   

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

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

相关文章

今日早报 每日精选15条新闻简报 每天一分钟 知晓天下事 8月8日,星期四

每天一分钟,知晓天下事! 2024年8月8日 星期四 农历七月初五 1、 财政部预拨4.65亿元资金支持辽宁、吉林等7省(市)开展应急抢险救灾工作。 2、 2024年“三区”人才支持计划发布:全国将选派15952名教师赴“三区”。 3…

什么是三维坐标系?

在研究向量和高级微积分主题时,了解 3D 坐标系非常重要。过去,我们一直在处理平面和矩形坐标。这一次,我们将研究三维坐标系的组成部分和约定。 3D 坐标系使我们能够表示包含三个相互垂直轴的空间中的一个量。通过 3D 坐标系统,我…

计算机网络——网络层(多协议标签交换MPLS、软件定义网络SDN)

多协议标签交换MPLS 多协议标签交换MPLS(multiProtocal Label Switching):“多协议”表示在MPLS的上层可以采用多种协议。 MPLS利用面向连接技术,使每个分组携带一个叫作标签的小整数(这叫作打上标签)。当分…

Linux下终极下载管理器:uGet and aria2

你是否曾在火狐浏览器中点击过下载链接,然后连接中断,不得不从头开始重新下载文件? 这就是 uGet 下载管理器的用武之地。 1)uGet 是一款开源的轻量级下载管理器,适用于 Linux、BSD、Android 和 Windows。有了 uGet&a…

Github 2024-08-08 开源项目日报Top10

根据Github Trendings的统计,今日(2024-08-08统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量TypeScript项目5JavaScript项目3Python项目2C#项目1C++项目1Go项目1免费编程学习平台:freeCodeCamp.org 创建周期:3302 天开发语言:TypeScri…

Linux-入门-02

上节我们讲了如何安装虚拟机,本节课讲一些linux的常用命令,首先我们需要做一些配置,我们的centos的镜像是最小版安装,里面什么也没有,所以我们的linux是不能进行联网的,接下来我们就来一步一步联网 1、配置网络 首先我们需要先使用命令查看ip地址,linux中一切皆文件,只能使用命…

opencascade TopoDS_TShape源码学习

opencascade TopoDS_TShape 前言 TShape 是描述二维或三维空间中一组点的拓扑结构。 拓扑形状是由其他形状组成的结构。这是一个延迟类,用于支持拓扑对象。 TShape 由其可选的域(几何)和组件(带有位置和方向的其他 TShape&#…

德国EKKIF高定五金——不断探索全球新材料、新技术和新生活方式

Ekkif Concept品牌理念 “New life” We have always advocated the new concept and lifestyle of "New life". Our design team adheres to the concept of innovation and originality, constantly exploring new materials, technologies, and lifestyles a…

详细分析Linux中的ss命令基本知识(附Demo)

目录 1. 基本知识2. 基本命令2.1 查套接字2.2 查端口 1. 基本知识 ss 用于在 Linux 系统中显示网络套接字统计信息的命令 是 netstat 命令的现代替代品,提供了更快、更详细的输出是 iproute2 套件的一部分,支持许多高级网络功能 基本的功能如下&#…

html+css 实现hover选择按钮

前言:哈喽,大家好,今天给大家分享htmlcss 绚丽效果!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏关注哦 💕 目…

WEB应用(十四)---文件上传

什么是文件上传漏洞 文件上传是Web应用的常见功能,允许用户上传图片、视频及其他文件类型文件。如果用户上传的是木马文件,则服务器就会收到攻击。 对于这个漏洞的练习有一个专门的靶场,即upload-labs,这个的安装可以在windows中使…

使用TLA+形式化验证Go并发程序

Writing is natures way of letting you know how sloppy your thinking is - Guindon 在2024年6月份举办的GopherCon Europe Berlin 2024[1]上,一个叫Raghav Roy的印度程序员(听口音判断的)分享了Using Formal Reasoning to Build Concurrent Go Systems[2]&#x…

JavaScript基础 - 基础

目录 A. 简介 B. 基础用法 一. 使用 二. 输出 C. 语法 D. HTML DOM A. 简介 JavaScript 是一种高级的、解释型的编程语言,主要用于网页开发,以下是它的简介: 一、历史与发展 诞生 JavaScript 于 1995 年由 Netscape 公司的 Brendan …

DataX PostgreSQL 读写支持Geometry类型

这里写目录标题 简要说明依赖代码 简要说明 通过简单修改源码中关于相关的reader、writer和DBUtil工具类,实现表到表之间的Geometry字段类型数据的输送,目前修改仅测试过在postgresql的postgis插件下的Geometry类型可行。 依赖 1.通过gitclone 或者 到…

在Nestjs使用mysql和typeorm

1. 创建项目 nest new nest-mysql-test 2. 添加config 安装 nestjs/config 包 pnpm i --save nestjs/config 添加 .env 文件 DATABASE_HOSTlocalhost DATABASE_PORT3306 DATABASE_USERNAMEroot DATABASE_PASSWORD123456 DATABASE_DBdbtest 创建 config/database.config.…

Gstreamer实现udp帧数据的转发(一)

前言 最近有个项目,要求实现信息分发,大概意思是经过了各种交换机和电台,经过两个信息分发软件实现udp数据的转发,可能包括文本、指令、音视频等数据。 例如:设备1 《---》 设备2(信息分发软件1&#xff09…

兼容性测试详解

目录 前言1. 兼容性测试的定义和重要性1.1 兼容性测试的定义1.2 兼容性测试的重要性 2. 兼容性测试的类型2.1 跨浏览器测试2.1.1 跨浏览器测试的挑战2.1.2 跨浏览器测试的方法 2.2 跨平台测试2.2.1 跨平台测试的挑战2.2.2 跨平台测试的方法 3. 兼容性测试的步骤和策略3.1 测试计…

前端错误日志上报解决方案

前言 项目上线之后,用户如果出现错误(代码报错、资源加载失败以及其他情况),基本上没有办法复现,如果用户出了问题但是不反馈或直接不用了,对开发者或公司来说都是损失。 由于我这个项目比较小&#xff0c…

AI绘画工具介绍:以新奇角度分析与探索AI绘画艺术与技术的交汇点

目录 前言 一、AI绘画工具的前沿技术 1.1 深度学习的进化 1.2 GANs的创新应用 1.3 风格迁移的多样化 1.4 交互式AI绘画的智能化 二、艺术与技术的交汇点 2.1 艺术创作的普及化 2.2 艺术风格的创新 2.3 艺术与科技的深度融合 三、新颖的思考角度 3.1 AI作为艺术创作…

nginx平滑重启和php-fpm平滑重启

https://www.jianshu.com/p/c7809490979ahttp://xn--nginxphp-fpm-dc3k7692b4eb248gffzdlr6cx05cfuhyucca 1.在php-fpm.conf的配置中增加配置,让php-fpm重启前如果存在已经在处理的请求,先处理完再重启: 2.重启命令执行前,先…