模块管理刀锋片系统及其程序代码的更新方法

文档序号:6563087阅读:212来源:国知局
专利名称:模块管理刀锋片系统及其程序代码的更新方法
技术领域
本发明涉及一种模块管理刀锋片系统,特别是涉及一种可同时更新两片 模块管理刀锋片的模块管理刀锋片系统。
背景技术
刀锋型服务器(Blade Server)中具有模块管理刀锋片(Modular Management Blade, MMB),用以对刀锋型服务器的机壳(Chassis)中的电压、 温度或风扇转速进行监控。在刀锋型服务器中设置两片模块管理刀锋片来形 成模块管理刀锋片系统,以在模块管理刀锋片坏损时直接经由另一片模块管 理刀锋片来执行其功能的技术已存在。
在更新模块管理刀锋片系统的程序代码时,多经由网络来进行程序代码 进行更新。而传统模块管理刀锋片系统中的两片模块管理刀锋片多具有不同 的网络协议(Intemet Protocol, IP)位置及不同介质存取控制(Media Access Control, MAC)地址,以避免在程序代码更新过程中产生分组碰撞的情形。 然而,传统模块管理刀锋片系统具有下列的问题。
由于两片模块管理刀锋片具有不同的IP地址及MAC地址,如此,使用 者需耗费两倍的模块管理刀锋片的程序更新时间来分别对两片模块管理刀 锋片的程序代码进行程序代码更新。这样一来,传统模块刀锋片系统具有程
序代码更新操作程序较繁瑣且较为费时的缺点。

发明内容
有鉴于此,本发明的目的是提供一种模块管理刀锋片系统及程序代码的 更新方法,本发明的模块管理刀锋片系统可有效地改善传统模块管理刀锋片 系统程序更新操作的程序较繁瑣且较为费时的缺点,而具有程序更新操作的 程序较为精简且较为省时的优点。
根据本发明的目的,提出一种模块管理刀锋片系统,用以监控刀锋型服 务器(BladeServer)机壳内部的电压、温度及风扇转速。模块管理刀锋片系统
包括第一模块管理刀锋片及第二模块管理刀锋片。第一模块管理刀锋片包括 第一存储单元,用以储存第一程序代码。第二模块管理刀锋片经由第一通讯 连接与第一模块管理刀锋片耦接,而第二模块管理刀锋片包括通讯连接控制 单元及第二存储单元。通讯连接控制单元用以经由第二通讯连接接收更新程 序代码分组。第二存储单元用以储存第二程序代码。其中,当通讯连接控制 单元接收到更新程序代码分组时,第二模块管理刀锋片根据更新程序代码分
组来对第二程序代码进行更新;而第二模块管理刀锋片还经由第 一通讯连接 输出更新程序代码分组至第一模块管理刀锋片,来对第一程序代码进行更 新。
根据本发明的另一目的,提出一种程序代码的更新方法,用以根据更新 程序代码分组来对第一模块管理刀锋片的第一程序代码及第二模块管理刀 锋片的第二程序代码分别进行更新,此更新方法包括下列的步骤。首先,判
断是否进行第一及第二程序代码的更新操作,若是,执行下一步骤。接着, 判断第一模块管理刀锋片是否接收到更新程序代码分组,若是,执行下一步
骤。然后,判断标志讯号的讯号电平是否等于正常电平,以判断第二模块管 理刀锋片是否操作正常,若是,执行下一步骤。接着,输出更新程序代码分 组到第二模块管理刀锋片,并根据更新程序代码分组来更新第二程序代码。 然后,判断是否接收到响应讯号以判断第二程序代码是否更新成功,若是, 执行下一步骤。之后,根据更新程序代码分组来更新第一程序代码。
为使本发明的上述目的、特征、和优点能更明显易懂,下文特举一较佳 实施例,并结合附图详细说明。


图1示出了依照本发明较佳实施例的模块管理刀锋片系统的方块图。 图2示出了本发明较佳实施例的模块管理刀锋片系统10中模块管理刀
锋片系统110端程序代码的更新方法的流程图。
图3示出了本发明较佳实施例的模块管理刀锋片系统10中模块管理刀
锋片系统120端程序代码的更新方法的流程图。
附图符号说明
10:模块管理刀锋片系统
110、120:模块管理刀锋片
112、122:通讯连接控制单元
114、118、124、 128:存储单元
116、126:处理器
130、140:通讯连接
更新程序代码分组SL:失败讯号 SC:更新完毕讯号 20:服务器
202~210、 302~310:操作步骤
具体实施例方式
本发明的模块管理刀锋片系统及其程序代码的更新方法经由通讯连接 来连接模块管理刀锋片中的两片模块管理刀锋片。当欲更新此两片模块管理 刀锋片的程序代码时,本发明的模块管理刀锋片系统经由两片模块管理刀锋 片其中之一来接收更新程序代码分组,并将其经由通讯连接输出至两片模块 管理刀锋片其中的另 一个,使两片模块管理刀锋片均可根据更新程序代码分 组来更新程序代码。
请参照图1,其示出了依照本发明较佳实施例的模块管理刀锋片系统的 方块图。模块管理刀锋片系统10应用于刀锋型服务器(Blade Server)中,用 以对其机壳(Chassis)内部电压、温度或风扇转速等数据进行监控。模块管理 刀锋片系统10包括模块管理刀锋片110及120,而模块管理刀锋片110及 120经由通讯连接130相连接。
模块管理刀锋片120包括存储单元124,其用以储存模块管理刀锋片120 的第一程序代码。模块管理刀锋片110包括通讯连接控制单元112及存储单 元114,存储单元114用以储存模块管理刀锋片110的第二程序代码。而通 讯连接控制单元112例如经由通讯连接140来与服务器20连接,以接收服 务器20产生的更新程序代码分组UC。
模块管理刀锋片110用以根据通讯连接控制单元112接收的更新程序代 码分组UC来更新其的第二程序代码,并经由通讯连接130输出更新程序代 码分组UC至模块管理刀锋片120。模块管理刀锋片120经由通讯连接130
接收更新程序代码分组uc,并据以更新其的第一程序代码。如此,本实施 例的模块管理刀锋片系统10可根据更新程序代码分组uc来分别更新模块 管理刀锋片110的第二程序代码及模块管理刀锋片120的第一程序代码。
模块管理刀锋片IIO还包括处理器116及存储单元118,处理器116经 由存储单元118与存储单元114相连接。在本实施例中,处理器116例如用 以控制模块管理刀锋片IIO的程序代码更新操作。处理器116还用以接收通 讯连接控制单元112输出的更新程序代码分组UC,并将其储存于存储单元 118中。接着,处理器116根据储存于存储单元118中的更新程序代码分组 UC来更新模块管理刀锋片IIO的第二程序代码。在本实施例中,存储单元 118例如为动态随机存取存储器(DRAM)。
处理器116还用以于更新模块管理刀锋片IIO的第二程序代码的搡作失 败,如无法经由通讯连接140接收到服务器20输出的更新程序代码分组UC 或存储单元114发生坏损导致模块管理刀锋片110的第二程序代码更新失败 时经由刀锋型服务器中的使用者接口装置,如显示器或喇叭产生讯息来通知 使用者模块管理刀锋片系统10的程序代码更新发生异常。
处理器116还用以根据标志讯号来判断模块管理刀锋片120是否操作正 常。处理器116于判断模块管理刀锋片120操作正常时,经由通讯连接130 输出更新程序代码分组UC至模块管理刀锋片120,以驱动模块管理刀锋片 120根据更新程序代码分组UC来对存储单元124中的第一程序代码进行更 新。其中,标志讯号的讯号电平预设为正常电平,而处理器116根据此时的 标志讯号来判断模块管理刀锋片120操作正常。
处理器116还例如根据是否经由通讯连接130接收到模块管理刀锋片 120输出的失败讯号SL来修正标志讯号的讯号电平。当处理器116没有接 收到失败讯号SL时,标志讯号的讯号电平为正常电平;当处理器116接收 到失败讯号SL时,处理器116将调整标志讯号的讯号电平为异常电平,如 此,处理器116可根据此时的标志序号来判断模块管理刀锋片120操作异常。
处理器116还用以于模块管理刀锋片IIO的程序代码更新完毕,并经由 通讯连接130接收模块管理刀锋片120输出的更新完毕讯号SC时,经由刀 锋型服务器中的使用者接口来产生讯息通知使用者模块管理刀锋片系统10
的程序代码更新操作执行完毕。
模块管理刀锋片120还包括处理器126及存储单元128。处理器126用 以经由通讯连接130接收更新程序代码分组UC,处理器126并将更新程序 代码分组UC并将其储存于存储单元128,并根据存储单元128中的更新程 序代码分组UC来更新存储单元124中的第一程序代码。其中,存储单元128 例如为动态随机存取存储器。
处理器126还用以于更新存储单元124中的第一程序代码的操作失败,
损而导致模块管理刀锋片120的第一程序代码更新失败时产生失败讯号SL, 并将其经由通讯连接130输出至模块管理刀锋片IIO,使模块管理刀锋片110 可检测到模块管理刀锋片120搡作异常。
处理器126还用以于模块管理刀锋片120的第一程序代码更新完毕时, 产生更新完毕讯号SC,并经由通讯连接130将其输出至模块管理刀锋片110, 以通知模块管理刀^e奪片120的程序代码更新完毕。
请参照图2,其示出了本发明较佳实施例的模块管理刀锋片系统10中模 块管理刀锋片系统IIO端程序代码的更新方法的流程图。首先,如步骤202, 处理器116判断通讯连接控制单元112是否接收到更新程序代码分组UC中 的起始分组,若是,执行步骤204。其中,当通讯控制单元112接收到起始 分组时,处理器116开始进行第一程序代码的更新操作。接着,如步骤204, 处理器116判断通讯连接单元112是否接收到更新程序代码分组UC,若是, 执行步骤206。
然后,如步骤206,处理器116判断标志讯号的讯号电平是否为正常电 平,若是,执行步骤208。其中,当标志讯号的讯号电平为正常电平时,处 理器116判断模块管理刀锋片120操作正常。而处理器116用以储存更新程 序代码分组UC于存储单元118中。
接着,如步骤208,处理器116经由通讯连接130输出更新程序代码分 組UC到模块管理刀锋片120,使其根据根据更新程序代码分组UC来更新 其的第二程序代码。处理器116判断是否接收到模块管理刀锋片120输出的 失败讯号SL,若否,执行步骤210。其中,当处理器116位接收到失败讯号 SL时,表示模块管理刀锋片120操作正常,且其的第一程序代码更新成功。 之后,如步骤210,处理器116根据存储单元118中的更新程序代码分组UC 来更新模块管理刀锋片IIO的第二程序代码。
在本实施例的步骤204中还包括,当通讯连接控制单元112没有接收到
更新程序代码分组UC时,处理器116判断是否已连续地执行N次步骤204, 若否,处理器116重复执行步骤204, N为自然数;若是,处理器116经由 使用者接口装置产生讯息来通知操作者模块管理刀锋片IIO的程序代码更新 操作发生异常,之后执行步骤202。
在本实施例的步骤206中还包括,当处理器116检测到标志讯号的讯号 电平为异常电平时,表示模块管理刀锋片120操作异常。此时本实施例的程 序代码更新方法跳过步骤208而直接执行步骤210。在本实施例的步骤208 中还包括,当处理器116接收到模块管理刀锋片120输出的失败讯号SL时, 处理器116修正标志讯号的电平为异常电平,接着执行步骤210。
在本实施例的步骤210,模块管理刀锋片110根据更新程序代码分组UC 来更新其的第二程序代码之后还包括,处理器116判断第二程序代码是否更 新失败,若是,处理器116经由使用者接口装置产生讯息来通知使用者模块 管理刀锋片系统10的程序代码更新操作发生异常,接着执行步骤202。
而当处理器116判断模块管理刀锋片IIO的第二程序代码更新成功时, 处理器116判断更新程序代码分组UC是否为其的终止分组;若否,表示模 块管理刀锋片110的第二程序代码尚未完毕,而需经由通讯连接控制单元112 接收下一个更新程序分组UC。此时执行步骤204,以接收下一个更新程序 代码分组UC。而当处理器116判断更新程序代码分组UC为终止分组,表 示模块管理刀锋片IIO的第二程序代码更新完毕,接着执行步骤202。
处理器116还判断是否接收到模块管理刀锋片120输出的更新完毕讯号 SC,若是,表示模块管理刀锋片120的第一程序代码亦更新完毕,此时处理 器126亦经由使用者接口装置产生讯息来通知使用者模块管理刀锋片系统 10的程序代码更新操作执行完毕。
请参照图3,其示出了本发明较佳实施例的模块管理刀锋片系统10中模 块管理刀锋片系统120端程序代码的更新方法的流程图。首先,如步骤302, 判断处理器126是否经由通讯连接130接收到起始分组,若是,执行步骤304。 如步骤304,判断处理器126是否接收到更新程序代码分组UC,若是,储 存更新程序代码分組UC于存储单元128并执行步骤306。然后,如步骤306, 处理器126根据存储单元128中的更新程序代码分组UC来更新模块管理刀 锋片120的第二程序代码。
接着,如步骤308,处理器126判断模块管理刀锋片120的第二程序代
码是否更新成功,若是,执行步骤310。之后,如步骤310,处理器126判 断模块管理刀锋片120的第二程序代码是否更新完毕,若否,执行步骤304, 以接收下一个更新程序代码分组。
在本实施例的步骤304中还包括,当处理器126没有接收到更新程序代 码分组UC时,处理器126判断是否已连续地执行M次步骤304,若否,其 重复执行步骤304, M为自然数;若是,处理器126产生并输出失败讯号SL 至模块管理刀锋片110,接着执行步骤302。在本实施例的步骤308中还包 括,当处理器126判断模块管理刀锋片120的第二程序代码更新失败时,处 理器126产生并输出失败讯号SL至模块管理刀锋片IIO,接着执行步骤302。
在本实施例的步骤310中还包括,当处理器126判断模块管理刀锋片120 的第二程序代码更新完毕时,处理器126产生更新完毕讯号SC,并经由通 讯连接130将其输出至模块管理刀锋片110。接着执行步骤302。
本实施例的模块管理刀锋片系统IO正常工作时,例如仅由模块管理刀 锋片IIO来执行模块管理刀锋片系统IO的操作,模块管理刀锋片120例如 为重复设置(Redundant)的模块管理刀锋片。模块管理刀锋片110及120例如 为实质上相等的模块管理刀锋片,而模块管理刀锋片120亦具有通讯连接控 制单元122,其在本实施例的操作中为非致能。而当模块管理刀锋片110发 生外损时,通讯连接控制单元122将为致能,且模块管理刀锋片120将自动 地取代模块管理刀锋片IIO并执行其操作。这样一来,可使使用者在模块管 理刀锋片IIO坏损时仍可经由模块管理刀锋片120来进行监控刀锋型服务器 的操作。
在本实施例中,存储单元114及124均为非易失性性(Non-Volatile)存储 器,其均例如为闪存(Flash)。而通讯连接130例如为串行端口(RS-232),而 模块管理刀锋片110及120例如通过点对点通讯协议(Point to Point Protocol, PPP)来进行串行端口上的数据传输。而通讯连接140例如为网络,通讯连接 控制单元112例如为网络接口控制器(Network Interface Controller)。
在本实施例中,虽仅以模块管理刀锋片120经由通讯连接130来传输失 败讯号SL至模块管理刀锋片110,使其根据失败讯号SL来判断模块管理刀 锋片120的操作是否正常操作为例作说明,但是,模块管理刀锋片120还可 经由其它通讯连接输出其它状态讯号至模块管理刀锋片110,如经由通用输 入输出(General Purpose Input and Output, GPIO)连接端口来*命出心浪&讯号
(Heart Beat)至模块管理刀锋片110,以作为模块管理刀锋片120操作是否正 常的状态讯号。
本实施例的模块管理刀锋片系统经由通讯连接来连接模块管理刀锋片 中的两片模块管理刀锋片,并经由两片模块管理刀锋片其中之一 来接收更新 程序代码分组。本实施例的模块管理刀锋片系统经由通讯连接将更新程序代 码分组输出至两片模块管理刀锋片其中的另一个,使两片模块管理刀锋片均 可根据此更新程序代码分组来更新程序代码。如此,本实施例的模块管理刀 锋片系统可有效地改善传统模块管理刀锋片系统的程序代码更新操作较为 繁瑣及较为费时的缺点,而具有可经由自动化系统来减少更新操作步骤及可 同时对两片模块管理刀锋片进行程序代码更新的优点,进而可达到降低人为 更新操作错误发生及较为省时的优点。
综上所述,虽然本发明已以一较佳实施例披露如上,然其并非用以限定 本发明。本领域的技术人员在不脱离本发明的精神和范围的前提下可作各种 的更动与润饰。因此,本发明的保护范围以本发明的权利要求为准。
权利要求
1.一种模块管理刀锋片系统,用以监控一刀锋型服务器机壳内部的电压、温度及风扇转速,该模块管理刀锋片系统包括一第一模块管理刀锋片,包括一第一存储单元,用以储存一第一程序代码;以及一第二模块管理刀锋片,经由一第一通讯连接与该第一模块管理刀锋片耦接,该第二模块管理刀锋片包括一第一通讯连接控制单元,用以经由一第二通讯连接接收一更新程序代码分组;一第二存储单元,用以储存一第二程序代码;以及其中,该第二模块管理刀锋片用以根据该第一通讯连接控制单元接收到的该更新程序代码分组来更新该第二程序代码,并经由该第一通讯连接输出该更新程序代码分组至该第一模块管理刀锋片;其中,该第一模块管理刀锋片根据经由该第一通讯连接输出的该更新程序代码分组来更新该第一程序代码。
2. 如权利要求1所述的模块管理刀锋片系统,其中该第一模块管理刀锋 片还包括一第一处理器,用以通过该第一通讯连接接收该第二模块管理刀锋片输 出的该更新程序代码分组,并输出;以及一第三存储单元,分别与该第一处理器及该第一存储单元耦接;其中,该第一处理器更储存该更新程序代码分组于该第三存储单元,并 根据该第三存储单元中的该更新程序代码分组来更新该第一存储单元中的 该第一程序代码。
3. 如权利要求1所述的模块管理刀锋片系统,其中该第二模块管理刀锋 片还包括一第二处理器,用以经由该第一通讯连接控制单元接收该更新程序代码 分组,并通过该第一通讯连接输出该更新程序代码分组至该第一模块管理刀 锋片;及一第四存储单元,分别与该第二处理器及该第二存储单元耦接;其中,该第二处理器更储存该更新程序代码分组于该第四存储单元,并 根据该第四存储单元中的该更新程序代码分组来更新该第二存储单元中的 该第二程序代码。
4. 如权利要求1所述的模块管理刀锋片系统,其中该第一处理器于该第 一程序代码更新失败时经由该第一通讯连接输出一失败讯号至该第二模块 管理刀锋片,以表示该第一模块管理刀锋片操作异常;其中,该第二处理器根据是否接收到该失败讯号来判断该第一模块管理刀锋片是否操作异常;其中,该第二处理器于接收到该失败讯号时,调整一标志讯号的电平为一异常电平。
5. 如权利要求4所述的模块管理刀锋片系统,其中,该第二处理器于检 测到该第 一模块管理刀锋片操作正常时经由该第 一通讯连接输出该更新程 序代码分组至该第一模块管理刀锋片。
6. 如权利要求1所述的模块管理刀锋片系统,其中该第一模块管理刀锋 片还包括一第二通讯连接控制单元,该第二通讯连接控制单元为非致能。
7. 如权利要求1所述的模块管理刀锋片系统,其中该第一通讯连接为一 串行端口;其中,该串行端口经由点对点通讯协议来传输该更新程序代码分组。
8. 如权利要求7所述的模块管理刀锋片系统,其中该第一及该第二通讯 连接控制单元为一网络接口控制器,该第二通讯连接为一网络。
9. 一种程序代码的更新方法,以根据一更新程序代码分组来对一第一模 块管理刀锋片的一第一程序代码及一第二模块管理刀锋片的一第二程序代 码分别进行更新,该更新方法包括(a) 判断是否更新该第一程序代码,若是,执行步骤(b);(b) 判断该第一模块管理刀锋片是否接收到一更新程序代码分组,若是, 执行步骤(c);(c) 判断该第二模块管理刀锋片是否操作正常,若是,执行步骤(d);(d) 输出该更新程序代码分组到该第二模块管理刀锋片,使该第二模块 管理刀锋片根据该更新程序代码分组来更新该第二程序代码,并判断是否接 收到一失败讯号以判断该第二程序代码是否更新失败,若否,执行步骤(e); 以及(e) 根据该更新程序代码分组来更新该第一程序代码。
10. 如权利要求9所述的更新方法,其中该步骤(a)判断是否接收到一起 始分组来判断是否更新该第 一程序代码,当接收到该起始分组时执行步骤 (b)。
11. 如权利要求9所述的更新方法,其中该步骤(b)判断该第一模块管理 刀锋片是否接收到该更新程序代码分组,若否,执行步骤(b,);(b,)判断是否已连续地执行N次步骤(b),若否,重复执行步骤(b), N 为自然凄t。
12. 如权利要求11所迷的更新方法,其中步骤(b,)判断是否已经重复执 4亍N次步骤(b),若是,执行步骤(b");(b")产生一更新错误讯号,接着执行步骤(a)。
13. 如权利要求9所述的更新方法,其中步骤(c)根据一标志讯号来判断 该第二模块管理刀锋片是否正常运作。
14. 如权利要求9所述的更新方法,其中步骤(c)判断该第二模块管理刀 锋片是否正常运作,若否,执行步骤(e)。
15. 如权利要求9所述的更新方法,其中步骤(d)判断是否接收到该失败 讯号以判断该第二程序代码是否更新失败,若是,执行步骤(d,)(d,)修正该标志讯号的电平为一异常电平,以表示该第二模块管理刀锋 片操作异常,并执行步骤(e)。
16. 如权利要求9所述的更新方法,其中步骤(e)之后还包括(f) 判断该第一程序代码是否更新失败,若是,执行步骤(f,); (f,)产生该更新错误讯号,并执行步骤(a)。
17. 如权利要求16所述的更新方法,其中步骤(f)判断该第一程序代码是 否更新失败,若否,执行步骤(g);(g) 判断该第一程序代码是否更新完毕,若是,执行步骤(a)。
18. 如权利要求17所述的更新方法,其中步骤(g)判断该第一程序代码 是否更新完毕,若否,执行步骤(b),以接收下一个更新程序代码分组。
19. 如权利要求9所述的更新方法,其中步骤(d)中还包括(dl)判断该第二模块管理刀锋片是否接收到该起始分組,若是,执行步 骤(d2);(d2)判断该第二模块管理刀锋片是否接收到该更新程序代码分组,若 是,执行步骤(d3);(d3)根据该更新程序代码分组更新该第二程序代码;(d4)判断该第二程序代码是否更新失败,若否,执行步骤(d5);以及(d5)判断该第二程序代码是否更新完毕,若否,执行步骤(d2)。
20. 如权利要求19所述的更新方法,其中步骤(d2)判断该第二模块管理 刀锋片是否接收到该更新程序代码分组,若否,执行步骤(d2,);(d2,)判断是否已连续地执行M次步骤(d2),若否,重复执行步骤(d2), M为自然数。
21. 如权利要求20所述的更新方法,其中步骤(d2,)判断是否已经重复执 行N次步骤(d2),若是,执行步骤(d2");(d2")产生并输出该失败讯号至该第一模块管理刀锋片,接着执行步骤(dl)。
22. 如权利要求19所述的更新方法,其中步骤(d4)判断该第二程序代码 是否更新失败,若是,执行步骤(d2")。
23. 如权利要求19所述的更新方法,其中步骤(d5)判断该第二程序代码 是否更新完毕,若是,产生一更新完毕讯号,并执行步骤(dl)。
全文摘要
一种模块管理刀锋片(Modular Manage-ment Blade,MMB)系统,用以监控刀锋型服务器(Blade Server)机壳内部的电压、温度及风扇转速。模块管理刀锋片系统包括第一模块管理刀锋片及第二模块管理刀锋片。第一模块管理刀锋片包括第一存储单元,用以储存第一程序代码。第二模块管理刀锋片经由第一通讯连接与第一模块管理刀锋片耦接,第二模块管理刀锋片包括通讯连接控制单元及第二存储单元,其分别用以经由第二通讯连接接收更新程序代码分组及储存第二程序代码。当通讯连接控制单元接收到更新程序代码分组时,第一及第二模块管理刀锋片根据更新程序代码分组来分别对第一及第二程序代码进行更新。
文档编号G06F9/445GK101192162SQ20061014943
公开日2008年6月4日 申请日期2006年11月20日 优先权日2006年11月20日
发明者董彦屏, 陈谕正 申请人:广达电脑股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1