首页> 中国专利> 可支持多个内部通道软件请求的直接存储器存取控制器

可支持多个内部通道软件请求的直接存储器存取控制器

摘要

本发明提供一种直接存储器存取(DMA)控制器,可支持一通道(内部通道)中多个处于等待的软件请求。该直接存储器存取控制器包含多个通道配置缓存器、通道请求仲裁器、尾部搜寻单元、通道预测单元、命令和请求项产生器与请求队列。这些通道配置寄存器可输出一组实际通道参数,该通道预测单元则产生一组预测通道参数,而命令和请求项产生器乃依据尾部搜寻单元的输出送出一请求至请求队列。如果在对直接存储器存取控制器的当前处于等待的请求执行尾部搜寻的过程中没有找到有效的处于等待的内部通道请求,则该命令和请求项产生器会使用实际通道参数值以产生下个命令和请求;否则,该命令和请求项产生器使用最新列入排程的内部通道软件请求的预测通道参数值,以产生下个命令和请求。

著录项

  • 公开/公告号CN1991810A

    专利类型发明专利

  • 公开/公告日2007-07-04

    原文格式PDF

  • 申请/专利权人 威盛电子股份有限公司;

    申请/专利号CN200610171740.7

  • 发明设计人 伊沃·图西克;

    申请日2006-12-19

  • 分类号G06F13/28(20060101);

  • 代理机构11105 北京市柳沈律师事务所;

  • 代理人黄小临;王志森

  • 地址 中国台湾台北县

  • 入库时间 2023-12-17 18:46:19

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2009-06-03

    授权

    授权

  • 2007-08-29

    实质审查的生效

    实质审查的生效

  • 2007-07-04

    公开

    公开

说明书

技术领域

本发明涉及数据传输,尤其涉及直接存储器存取(DMA)控制器,用于最佳化快速存储器对存储器的传输,以支持内部通道(同一直接存储器存取通道)中多个处于等待的软件请求(software request)。

背景技术

在数据存储器装置的运行中,最好的方式是由直接存储器存取来执行在处于分页模式的主存储器和作为数据存储装置的辅助存储器之间的数据传输存取,这种技术是通过直接存储器存取控制器来执行数据传输,且不需与数据处理器(processor)产生任何相互操作。虽然直接存储器存取是通过数据处理器来启动操作,但是数据在传输时并不需要经由数据处理器。直接存储器存取装置可与直接存储器存取控制器合并,因此可将数据从辅助存储器(例如磁盘驱动器)直接传输给主存储器。

直接存储器存取控制器是通过直接存储器存取请求(DMA request)来执行直接存储器存取传输的。直接存储器存取请求可以是软件请求或者是硬件请求。来自或发送至系统外围的直接存储器存取传输与系统外围所产生的直接存储器存取硬件请求相关,并传送至直接存储器存取控制器。而存储器对存储器(memory-to-memory)直接存储器存取传输则与软件请求相关。大量的直接存储器存取传输是先将数据分组拆解成小块并以突发传输(burst)的方式将数据送至系统数据总线,且每个数据分组或突发传输都与直接存储器存取的硬件或软件请求相关。

如图1所示,其是直接存储器存取控制器的结构图。所述直接存储器存取控制器100提供数个可配置在CPU总线上的直接存储器存取通道。在本实施例中的直接存储器存取控制器中,直接存储器存取通道可配置在通道配置寄存器112中,以在“本地存储器”(local memory)和连接系统总线的外部系统存储器之间传输数据。该直接存储器存取控制器100可包括数个模块,如总线接口单元110、直接存储器存取半队列(en-queue)引擎130、全队列(de-queue)引擎150、直接存储器存取队列管理器170和系统总线接口190以处理数据传输。

该直接存储器存取控制器100用于管理内部的数笔数据和控制信息队列。该直接存储器存取控制器的通道请求仲裁器134在当前的直接存储器存取传输请求之间进行仲裁,这些请求是与通道配置寄存器112中的所有当前的直接存储器存取通道相关,且每个请求涉及数据分组的传输,例如从本地存储器(local memory)至外部系统存储器(直接存储器存取写入,DMA Write),或由外部系统存储器至本地存储器(直接存储器存取读取,DMA Read)。对每个来自通道请求仲裁器134的特定(selected)直接存储器存取(写入或读出)请求,该半队列引擎130会将数据分组列入排程以供直接存储器存取传输之用。针对每个特定的请求,该半队列引擎130将一控制信息项(entry)写入到先进先出请求队列(reqQ)132,并写入一控制信息项到先进先出命令队列(cmdQ)174之中。此外,如果是直接存储器存取写入请求,则半队列引擎130会从本地存储器(未示出)读取数据并将数据置于写入数据队列(wdQ)172。命令队列(cmdQ)174中的一项可控制每个列入排程的数据分组如何送到系统总线上。从外部系统存储器接收至系统总线上的数据放置在读取数据队列(rdQ)176。与直接存储器存取写入和读取传输相关的系统总线传输许可/中止(OKAY/ABORTED)状态信息则置放于先进先出响应队列(respQ)178中,所述状态信息是来自系统总线上的响应信号,而响应信号相关于系统总线上的每笔数据传输,用以指示数据传输是否传输成功(许可)与否(中止)。请求队列132的所有项乃对应至直接存储器存取控制器的内部队列中已列入排程或尚在等待中的所有请求。请求队列132的每一项包含用以描述已列入排程的直接存储器存取的描述元;直接存储器存取控制器100依序执行请求队列132中所有的该类项。全队列引擎150将请求队列132表头的一项与响应队列(respQ)178的响应信号作配对。与直接存储器存取读取传输相关的数据自读取数据队列(rdQ)176传送到本地存储器。当所有与直接存储器存取请求相关的所有响应信号都已处理完毕后,请求队列132表头的该项会被弹出请求队列,同时更新相关的直接存储器存取通道配置参数,以反映数据已在系统总线上成功传送完毕。假设数据分组或该数据分组的部分无法成功传送,则禁止该直接存储器存取通道进行下一步的传输,同时更新其配置参数以反映该数据传输在系统总线上被中止。

一个直接存储器存取控制器通常可支持多个直接存储器存取通道(例如,8个通道),内部缓冲器的切割方式可存放至少一最大容量突发的写入数据于对外写入数据缓冲器(wdQ),而其对内读取数据缓冲器(rdQ)可存放至少一最大容量突发的读取数据。由于队列的动态特性,当一最大容量突发传输弹出响应队列与读取数据缓冲器的同时,另一最大容量突发传输可传送到系统总线,而第三个最大容量突发传输则被推入命令队列与写入数据队列。

对应于多个直接存储器存取通道的多个请求可同时于直接存储器存取控制器内处于等待。然而,与同一直接存储器存取通道相关的存储器对存储器传输若能越快执行越好。因此直接存储器存取控制器可管理内部队列中接连的多个处于等待的内部通道软件请求乃所期望者。

然而,支持多个处于等待的内部通道软件请求有许多的问题存在。当与同一直接存储器存取通道相关的其余内部通道请求已于直接存储器存取控制器处于等待的同时,此直接存储器存取控制器如何计算下个请求的来源与目的地址?再者,直接存储器存取控制器如何得知当前最新的处于等待的请求于何时会使通道到达终端计数(terminal count)?这些问题的原因在于通道参数基本上并未更新,直到处于等待的请求已完成,且直接存储器存取控制器确认相关的数据分组已于系统总线上传输成功。

因此,提供一个可有效支持多个处于等待的内部通道软件请求的直接存储器存取控制器,仍为待解决的课题。

发明内容

本发明提供一种直接存储器存取控制器以支持同一通道中多个处于等待的软件请求。

在本发明的一个实施例中,直接存储器存取控制器包括:通道配置寄存器(channel configuration register)、通道请求仲裁器(channel request arbiter)、尾部搜寻单元(tail search unit)、通道预测单元(channel prediction)、命令和请求项产生器(command/request entry generator)以及请求队列(request queue)。该通道配置寄存器输出一组实际通道参数,该通道预测单元产生一组预测通道参数,而命令和请求项产生器依据尾部搜寻器的输出发送一请求至请求队列。如果在尾部搜寻中没有找到有效且处于等待的内部通道请求,则该命令和请求项产生器使用实际通道参数值以产生下个命令或请求;否则,该命令和请求项产生器使用于尾部搜寻请求队列中处于等待的请求中找到预测通道参数值。

在本发明的另一实施例中,提供一种适用于直接存储器存取控制器的等待请求队列格式。该等待请求队列格式包括:预测终端计数字段(predictedterminal count field)、用于预测一特定通道是否在一后续的处于等待的请求成功完成后到达其终端计数,预测位计数字段,用于预测后续的处于等待的请求成功完成后剩余位的数目,以及两个预测存储器地址,用于预测下个传送的内部通道数据分组的来源以及目的存储器启始地址。该些预测值组成下个将传送的内部通道数据分组的实际通道参数值。

在本发明的又一实施例中,提供一种适用于直接存储器存取控制器传送多个处于等待的请求的方法。该方法包含下列步骤:提供一通道请求,执行一尾部搜寻,并依尾部搜寻的结果执行该请求。如果于尾部搜寻中没有找到处于等待的内部通道请求,则使用实际通道参数值来产生下一个命令和请求;否则,使用于尾部搜寻请求队列中处于等待的请求所找到的预测通道参数值。

附图说明

以下的附图是为了使本发明更易于了解。此附图与实施方式是为了说明本发明的实施例,并阐述本发明的原理。如下所示:

图1示出传统直接存储器存取控制器。

图2示出本发明的一个优选实施例的直接存储器存取控制器的结构图。

图3示出本发明的一个优选实施例的通道预测寄存器配置的方块图。

图4示出本发明的一个优选实施例的、包括错误响应信号的直接存储器存取通道参数更新过程。

图5示出本发明的一个优选实施例的、内部通道分组直接存储器存取服务过程的流程图。

图6示出本发明的一个优选实施例的直接存储器存取控制器的尾部搜寻单元的方块图。

图7示出本发明的一个优选实施例的直接存储器存取控制器的通道预测单元的方块图。

【主要元件符号说明】

212通道组态暂存器

214请求遮罩单元

216通道请求仲裁器

218尾部搜寻单元

220通道预测单元

222命令与请求项目产生器

224请求队列

226命令队列

302预测外部记忆体地址

304预测本地记忆体地址

306预测位元计数

308预测线路计数

310预测终端计数

312预留栏位

具体实施方式

本发明公开了一种可支持同一通道中多个处于等待的软件请求的直接存储器存取控制器。本发明的直接存储器存取控制器可根据尾部搜寻结果动态产生一组预测通道参数。在本发明的一个优选实施例中,当其余请求已置入队列中且后续的请求正在排程时,可计算预测参数值,并伴随一通道号码(channel number)放置于请求队列以做为项目的一部份,以有效解决先前的地址计算与终端计数问题。

参考图2,该图是本发明的一个优选实施例的直接存储器存取控制器的结构图。直接存储器存取控制器200包括:多组通道配置寄存器(channelconfiguration register)212、请求屏蔽(request mask,Req Mask)单元214、一个通道请求仲裁器(channel request arbiter)216、尾部搜寻单元(tail searchunit)218、通道预测单元(channel prediction unit)220、命令和请求项产生器(command/request entry generator)222、请求队列(request queue,reqQ)224以及命令队列(command queue,cmdQ)226。

请求屏蔽单元214不仅接收软件请求也接收与当前直接存储器存取通道相关的硬件请求,并且将上述的请求传送到通道请求仲裁器216。当通道请求仲裁器216指定某个新软件请求并将其列入服务清单时,命令和请求项产生器222首先执行所谓的尾部搜寻,以寻找在指定通道的内部请求队列(reqQ)224是否已有处于等待的请求。已列入服务清单且放进请求队列的直接存储器存取请求将由直接存储器存取控制器依序执行。在尾部搜寻期间,命令和请求项产生器222搜寻命令队列(reqQ)224中具有相同通道号码的有效项。在一个实施例中,该搜寻从请求队列224尾部至头部搜寻所有项,以寻找直接存储器存取中目前处于等待的最后一个内部通道软件请求。如果找到了该项,则随后即停止尾部搜寻,而尾部搜寻单元218会将该项的预测参数值传送给通道参数预测单元220;否则尾部搜寻单元218传送该指定通道的实际通道参数值给通道参数预测单元220。通道参数单元220使用从尾部搜寻接收的数值来预测与该软件请求相关的新通道参数。该命令和请求项产生器222将相关的项推进请求队列224并将描述元推进命令队列226以产生并半队列化新的请求。在一个实施例中,请求队列和命令队列都以先进先出为基础来处理。

参考图3,其是本发明的一个优选实施例的寄存器配置,其示出请求队列中包含通道预测字段的一个项。本范例通过将请求队列的每一项与一单一80位寄存器相结合,以实现可支持内部通道多个软件请求的功能。请求队列项寄存器300包含至少4个字段来表示预测通道参数,其分别为预测终端计数(predicted terminal count)、预测字节计数(predicted byte count),预测本地存储器地址(predicted local memory address)、以及预测外部存储器地址(extemal memory address)。第一个字段是一位的预测终端计数(PRED_TC)310,用以预测当相关的处于等待的请求完成时,该通道是否将到达终端计数。第二个字段是16位的预测位计数(PRED_BYTE_COUNT)306,用以预测当相关的处于等待的请求完成之后,剩余需发送到一特定的通道上的位数量。第三个字段是16位的预测本地存储器地址(PRED_LM_ADDR)304,用以预测相关的处于等待的请求完成之后,本地存储器内的下个地址为何。第四个字段是32位的预测外部存储器地址(PRED_EM_ADDR)302,用以预测当相关的处于等待的请求完成之后,外部存储器地址内的下个地址为何。此外,第五个字段是5位的预测线路计数(PRED_LN_COUNT)308,可视需要于直接存储器存取控制器为固定偏移(Offset)分散或集中直接存储器存取控制器时选择性使用。预测线路计数(PRED_LN_COUNT)308用以预测当相关的处于等待的请求完成之后,线路计数值为何。剩余的10位则为保留为预留字段312。关于固定偏移分散或聚集直接存储器存取控制器的详细数据可在申请人的另一申请“固定偏移分散或聚集直接存储器存取控制器”得知相关细节。请求项内还包含其它未显示在图中的信息,例如,用以表示一请求项为有效的有效位,以及结合一项与直接存储器存取控制器其中一通道的通道号码信息字段。

在操作中,当一新的软件请求被列入服务清单,且尾部搜寻单元218显示无其它请求处于等待中,命令和请求项产生器222会产生命令描述元传给命令队列(cmdQ)226,并依据通道配置寄存器212中的通道参数值执行通道参数预测。另一方面,当一个新的软件请求被列入服务清单,同时尾部搜寻单元218显示已有其它请求处于等待中,命令和请求项产生器222则产生命令描述元传给命令队列(cmdQ)226,并依据请求队列(reqQ)224中最新的预测通道参数值执行新通道参数预测。若预测终端计数310为1时,则该内部通道软件请求受请求屏蔽单元214屏蔽。

依据直接存储器存取控制器所能提供的功能,通道参数预测可增加其它信息类型的预测。其中的一个范例为预测线路计数参数,其为预测线路区段计数值,用以改善固定偏移分散或聚集直接存储器存取控制器的分散或聚集性能。该控制器的详细数据在申请人的另一申请案“固定补偿分散或聚集直接存储器存取控制器”,其中有更详细的描述。

直接存储器存取控制器可将直接存储器存取传输分解成较小的数据分组,并以突发传输的方式送至系统总线,在一个实施例中,该系统总线为先进高效能总线(AHB)。

举例而言,直接存储器存取控制器可以1位、2位或4位的单一、4节拍或8节拍的突发传输来传送与接收数据,其中4位的8节拍突发传输是在8个连续数据时钟周期中传输4位数据。在通道配置时,编程器可决定直接存储器存取传输计数,来源与目的地址以及数据应如何传送。举例而言,如果传输计数设定为1024字节,则应使用4位的8个节拍突发传输,直接存储器存取控制器会将传输分成32个突发传输(32×8×4=1024)。

当突发传输送出后,直接存储器存取控制器会连续不断地更新其通道配置寄存器。先进高效能总线(AHB)的一个重要特征为每个数据状态传输与来自接收终端的响应相关。一个典型实例为,直接存储器存取控制器随着OK响应而送出或接收突发传输数据。在其它实施例中,突发传输可能会等待、分裂或重试,意即突发传输将于稍后完成。无论如何,如果在其中一通道的直接存储器存取传输期间接收到错误信息响应,则直接存储器存取控制器将会禁止该直接存储器存取通道,更新该通道的传输大小以及来源与目的地址寄存器,使其可反应于错误信息响应发送之前已成功送出的数据数量,并设定通道错误标志。与错误信息响应相关的数据传输将因此中止。在图4的实施例中,第0数组是依据用户的设定值。第1列与第2列的数值对应于先进高效能总线上一突发传输成功后所更新的数值。第3列则反映至接收到错误信息响应为止所传送的位数目。接收到错误信息响应后,该通道可再一次藉由软件来执行服务。

当一直接存储器存取通道是用以自本地存储器传输数据至外部存储器配置时,该直接存储器存取读取对应于本地存储器的突发传输的数据分组,并将该数据分组置入写入请求队列(wrQ),而且命令和请求项产生器会产生一写入命令到命令队列(cmdQ)中以及一描述请求项到请求队列(reqQ)。当突发传输经由系统总线传输,与每个数据状态传输相关的响应会以相反方向通过响应队列(respQ)。响应分析器接着提供更新的通道信息给通道配置寄存器。命令项(command entry)、请求项(request entry)与响应分组(respose packet)都与每一写入数据分组(write-data packet)相关。

另一方面,当直接存储器存取通道用以自外部存储器传输数据至本地存储器,直接存储器存取将来自命令和请求项产生器的读取命令置放至命令队列(cmdQ)并将请求项置放至请求队列(reqQ)。当突发传输送至系统总线,读取数据被置入读取数据队列(rdQ),同时相关响应也被置入响应队列(respQ)。响应分析器接着提供更新的通道信息给通道配置寄存器。此外,命令项、请求响应与应答分组都与每一读取数据分组(read-data packet)相关。

本发明是关于直接存储器存取控制器的设计,该直接存储器存取控制器与可支持每笔数据传输相关的许可或中止响应信号的系统总线相连接,该直接存储器存取控制器通过支持多个处于等待的内部通道软件请求以最佳化快速存储器对存储器传输。

传输计数、来源与目的地址寄存器应在突发传输已通过系统总线,以及其相关的许可或中止响应已被确认之后再做更新较为恰当。甚者,若在直接存储器存取控制器中包含多个属于同一直接存储器存取通道的处于等待的请求,且其相关的数据传输在总线上被中止,传输计数、来源与目的地址寄存器在分组被列入服务清单时即迅速更新,则于上述情况发生时将难以计算正确的值。在一直接存储器存取数据总线传输中止后,其相关的直接存储器存取通道应被禁止,且该通道中的传输计数值、来源与目的地址寄存器应反映被终止的数据。

当一分组列入直接存储器存取传输清单,直到该分组到达目的地的时间点时,可能产生可观的时间延迟。同时事先可能已有多个处于等待的分组被列入清单了。因此在分组传送完毕且所有的响应都已经过确认后,再更新通道参数,还可提供追踪直接存储器存取传输行进的能力。实际通道参数的更新应以可反映已成功传送的数据的方式执行。

参考图5,其是在直接存储器存取控制器中,运用多个处于等待的软件请求的内部通道数据分组直接存储器存取传输过程的流程图。首先于步骤502设定直接存储器存取通道的初始配置,此步骤使用软件请求与8节拍突发传输的4位数据传输,以传送107位数据。直接存储器存取控制器在504、506与508等三个步骤中分别传送三个32位分组并于步骤512中传送11位的分组。这些分组在步骤504、506与508中依序处理。通道参数如传输计数、来源与目的地址与终端计数等,在每一次数据分组完成传输,且其相关的响应信号已经确认后受到更新,也即在步骤510、514、516与518结束时。当编号#1、#2与#3的分组被列入传输清单以备传输时,直接存储器存取控制器内已有其它内部通道分组处于等待中。因此,直接存储器存取控制器只有在处理分组#0时会使用通道的配置寄存器内的实际参数值,而在处理其它分组#1、#2与#3时这些参数值并非最新更新值。

因此,如果在直接存储器存取控制器内有多个处于等待的内部通道分组时,如何确定尚有其它的内部通道分组也可被列入排程清单;再者,若该内部通道分组可被列入排程清单,又要如何决定其大小、来源与目的地址,皆为需解决的课题。

其中一个解决问题的方法是,提供一组与每一通道相关的预测通道参数值,当直接存储器存取通道有一个已列入排程的分组等待传输,且其仍于直接存储器存取控制器内等待时,该组参数为有效值。当该组参数被视为有效值时,则于每次直接存储器存取通道排定一新的分组进入服务清单时,使用该组预测参数值。该组预测值是一请求成功完成后所得到的值。依据该组预测值,所有与下一内部通道的分组相关的参数,例如分组大小、来源与目的地址寄存器等,可于其它内部通道的分组仍在队列中等待时,即可计算得知。如果直接存储器存取控制器可支持的处于等待的分组总数的最大值,比直接存储器存取通道总数还多,则该组通道预测参数可与每个通道的配置寄存器共同被存储。然而,当受支持的通道数量要比处于等待的分组的最大总数量多时,则将此预测通道参数提供为请求队列(reqQ)中处于等待的请求的项的一部分,乃为较节省成本的作法。

该预测终端计数位310由图2中的请求屏蔽单元214所使用。请求屏蔽单元214监控所有与当前的直接存储器存取通道相关的硬件与软件请求,遮蔽部分有效请求,并将其它的有效请求送至通道请求仲裁器以作为当前的请求。当一直接存储器存取通道已有请求于直接存储器存取控制器内处于等待时,与此通道相关的硬件请求则永远被遮蔽。如果一个已启动的通道包含有效项于请求队列中,且预测终端计数位310被设为1,则此通道的软件请求亦被遮蔽。

通道请求仲裁器216监视来自请求屏蔽单元214的所有当前的请求,并选择下个欲服务的直接存储器存取通道号码。该通道号码供予尾部搜寻单元218与命令和请求项产生器222使用,并可用以多任务输出与所选定的通道相关的实际通道参数212。

参考图6,是图解本发明的一个优选实施例的尾部搜寻单元。在本实施例中,尾部搜寻单元800支持3-项深度先进先出请求队列(reqQ)。尾部搜寻优先译码器802的输入包含预测通道参数值,请求队列(reqQ)224中请求队列项的通道号码与有效位,其中reqQ[2].*表示来自reqQ的尾部项的参数,而reqQ[0].*表示来自reqQ的头部项的参数。尾部搜寻优先译码器802的输入还包含所选定通道的实际通道参数值,以ch_nr.*来表示,以及来自通道仲裁器216的所选定的通道号码arb_ch_nr。如果所选定的通道于请求队列的项中存在有优先译码器802所产生的最新预测的内部通道参数值,则尾部搜寻单元800根据此预测参数值产生数个输入参数(于图6中标示为p_X);反之,则依据所选定通道的实际参数值来产生。p_X输入参数,例如p_ln_count、p_byte_count、p_em_addr、p_lm_addr,供予前述的通道参数预测单元以及命令和请求项产生器使用。

参考图7,其图解本发明的一个优选实施例的通道参数预测单元900。在本实施例中,通道参数预测单元900所接收的输入包含p_ln_count、p_byte_count、p_em_addr与p_lm_addr等来自尾部搜寻单元的信号,与所选定的通道相关的某些实际通道参数以及packet_size等,其中packet_size是由图2的命令和请求项产生器222依据所选定的通道其突发传输长度与传输大小参数以及p_byte_count的值计算而得。通道参数预测单元900可产生与即将列入排程的新请求相关的一组新的预测通道参数。

本发明的直接存储器存取控制器可于监控系统总线上的每一数据传输相关的响应时,隐藏其过程所引起的数据分组处理延迟,而达到提升存储器对存储器传输效率的效果。

虽然本发明已公开数个优选实施例,但本发明也同时覆盖这些实施例的各种变化。在本发明的实施例是实现一种用于处于等待的请求队列的格式,但也可以利用其它相似的方法应用于其它寄存器配置以达到相似的结果。

综上所述,本领域技术人员应可推知,本发明的范围并不局限于实施例的公开与描述,且在不违背本说明书所公开原理与新颖特征之下,本发明的范围也涵盖利用本发明的精神所为的改进与变形。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号