专利名称:Cpld固件更新方法
技术领域:
本发明涉及一种CPLD固件更新方法,更详而言之,涉及一种利用BMC执行CPLD固件更新操作的方法。
背景技术:
由于电子以及计算机科技发展迅速,电子产品的更新周期也不断缩短,为了对该电子产品的硬件进行升级,就需要更新复杂可编程逻辑器件(Complex Programmable Logic Device ;CPLD)固件,现有CPLD固件更新的操作通常是通过在本地计算机上外接一刻录器,以将CPLD固件更新数据通过通用串行总线(Universal Serial Bus ;USB)转边界扫描界面(联合测试行为组织“Joint TestAction Group”;JTAG)的方式,将其刻录至CPLD 中,此种更新操作方式存在一些弊端,其一为此更新操作方式必需安装CPLD刻录软件,且需配备相应的CPLD刻录器才能执行,这些均需要专业的硬件工程师的协助才能实行,对于一般计算机使用者而言很难自行独立完成。其二为此更新操作方式必需在本地端进行,并无法通过网络来实现,操作较为呆板不便。
发明内容
为解决上述现有技术的缺点,本发明的目的在于提供一种CPLD固件更新方法,用于通过基板管理控制器(Baseboard ManagementController ;BMC)以本地或远程的方式更新服务器端中的CPLD固件。本发明的另一目的在于提供一种CPLD固件更新方法,使更新端不需安装CPLD刻录软件,更不需配备相应的CPLD刻录器。为达上述目的及其他目的,本发明提供一种CPLD固件更新方法,用于通过网络系统更新远程服务器端中的CPLD的CPLD固件,其中,该CPLD具有JTAG接口,且该远程服务器中还包括具有GPIO接口的基板管理控制器(BMC),该方法包括以下步骤,首先,令该远程服务器中的BMC通过通用输入输出(general-purpose 1/0 ;GPI0)接口与该CPLD的JTAG 接口相连接,且令本地计算机通过网络系统连接至该远程服务器的BMC的网卡(Network Interface Card ;NIC)接口;接着,于该本地计算机端提供使用者界面(User Interface ; UI),从而供输入待执行更新的远程服务器的验证信息,以及输入预先储存于该本地计算机中的CPLD固件更新数据的储存位置;然后,验证该输入的待执行更新的远程服务器的验证信息是否正确,若验证通过则依据该输入的CPLD固件更新数据的储存位置,提取预先储存于该本地计算机中该CPLD固件更新数据并通过该网络系统将其传送至该远程服务器端; 以及最后令该远程服务器端中的BMC利用所接收到的该CPLD固件更新数据,针对与其连接的CPLD执行CPLD固件的更新步骤。于本发明的一实施例中,该输入的待执行更新的远程服务器的验证信息至少包括待更新的远程服务器对应的帐号以及密码信息。于本发明的另一实施例中,该CPLD固件更新方法还包含令该本地计算机端将该
3CPLD固件更新数据分割成多个网络数据封包的形式,通过该网络系统将所述网络数据封包传送至该远程服务器端的BMC中;以及令该远程服务器的BMC分析所接收的各网络数据封包的封包标头信息,以判断该CPLD固件更新数据的接收进度的步骤。其中,该远程服务器的BMC依据所接收的各网络数据封包的封包标头信息,判断该CPLD固件更新数据的接收进度处于准备接收阶段、正在接收阶段或者接收完成阶段;该远程服务器的BMC将所接收到的网络数据封包暂存至GPIO驱动单元(GPI0 Driver)的数据缓存区。此外,本发明还提供一种用于更新本地服务器中的CPLD的CPLD固件的更新方法, 其中,该CPLD具有JTAG接口,且该服务器中还包括具有GPIO接口的基板管理控制器,该方法包括以下步骤令该服务器中的该基板管理控制器通过该GPIO接口与该CPLD的该JTAG 接口相连接;于该服务器端提供使用者界面,从而供输入预先储存于该服务器中的CPLD固件更新数据的储存位置;依据该输入的储存位置信息,提取储存于该服务器中的该CPLD固件更新数据;以及令该服务器端中的该基板管理控制器依据所提取到的该CPLD固件更新数据,针对与其连接的CPLD执行CPLD固件的更新步骤。综上所述,本发明的CPLD固件更新方法通过将BMC的GPIO接口与CPLD的JTAG 接口相连,以利用BMC取代现有刻录器来针对服务器中的CPLD进行固件更新操作。再者, 还通过利用该BMC所具有的网络通讯功能,将本地计算机通过网络系统连接至远程服务器端的BMC的NIC接口,以使该本地计算机与该远程服务器端的BMC建立通信连接,从而提供使用者可通过网络系统而将储存于本地计算机端的CPLD固件更新数据传送至该远程服务器端,使得CPLD固件的更新操作无须局限于本地端也可执行,且使用者只需在本地计算机端所提供的UI界面中进行操作,即能完成更新任务,使得计算机使用者无须具备专业的硬件知识背景也能自行完成,大大降低了操作难度。
21
UI界面30GPI09, GPI010GPI012, GPI014SlO S13
网络系统
卩卩骤 ιι ιι 步
弓弓SlOO S151步骤S200 S245 步骤TCK,TDI,TDO,TMS 引脚
具体实施例方式以下通过特定的具体实施例说明本发明的技术内容,本领域技术人员可由本说明书所揭示的内容轻易地了解本发明的其他优点与功效。本发明亦可通过其他不同的具体实例加以施行或应用,本说明书中的各细节也可基于不同观点与应用,在不背离本发明的精神下进行各种修饰与变更。本发明的CPLD固件更新方法可以本地或远程两种方式来执行,图IA所显示的是以本地方式执行CPLD固件更新的处理流程,如图所示,首先执行步骤S10,将服务器中的 CPLD通过JTAG接口与BMC的GPIO接口相连接,其中,该BMC与CPLD 二者间的具体连接方式将于下述图2Β予以详细说明,接着执行步骤Sl 1。在步骤Sll中,通过在该待执行CPLD固件更新的服务器中提供一 UI界面,从而供使用者输入储存于该服务器中的CPLD固件更新数据的储存位置,接着执行步骤S12。在步骤S12中,依据前述所输入的储存位置信息,令服务器的BMC自相应的储存位置提取出该CPLD固件更新数据,并进行步骤S13。在步骤S13中,令服务器的BMC依据所提取出的CPLD固件更新数据,针对与之相连的CPLD执行相应的固件更新操作。于本发明的另一实施例中,还可利用BMC本身所具有的网络通讯功能,来实现以远程方式更新CPLD固件的目的,如图IB所示,其即为用于显示本发明以远程方式实现CPLD 固件更新操作的处理流程图。另请参阅图2Α及2Β,其中,图2Α为执行图IB所示的CPLD固件更新方法的基本系统架构方块图,图2Β则为图2Α所示的CPLD与BMC两者的线路连接图, 以下将结合图2Α以及2Β来详细说明本发明图IB所示的CPLD固件更新处理步骤。如图IB所示,首先执行步骤S100,令本地计算机20通过网络系统30连接至远程服务器 10 的基板管理控制器(Baseboard ManagementController ;BMC) 11 的网卡(Network Interface Card ;NIC)接口 111,并将远程服务器10中的BMCll通过其本身所具有的通用输入输出(general-purpose I/O ;GPI0)接口 113 连接至 CPLD12 的 JTAG 接口 121 上,从而使BMCll与CPLD12之间建立连接通讯,以供后续通过BMCll直接控制执行CPLD12的固件更新作业。于本实施例中,如图2B所示,通过将CPLD上的四根JTAG引脚120分别连接在BMC 的4根GPIO引脚110上,以达成利用BMC来直接更新CPLD固件的目的,其中,CPLD上的引脚TCK为测试时钟输入;CPLD上的引脚TDI为测试数据输入,即数据是通过该引脚TDI输入JTAG接口 ;引脚TDO为测试数据输出,即数据是通过该引脚TDI从JTAG接口输出;引脚TMS为测试模式选择,其用于设置JTAG接口处于某种特定的测试模式,由此可知,本发明的远程服务器10中的BMCll的4根GPIO引脚110的输入输出状态分别为引脚GPI09,引脚 GPI010以及引脚GPI014为输出状态,而引脚GPI012则为输入状态,接着执行步骤S110。在步骤SllO中,在本地计算机20端提供一使用者界面UI,用于提供使用者于该 UI界面中输入待执行更新的远端服务器的验证信息(例如待执行更新的远程服务器所对应的帐号及密码信息),以及输入预先储存于本地计算机20中的CPLD固件更新数据所对应的储存位置信息,接着执行步骤S120。在步骤S120中,判断前述所输入的验证信息(即待执行更新的远程服务器10所对应的帐号及密码信息)是否正确,若正确则执行步骤S130,若否则结束本发明的CPLD固件更新方法的处理步骤。在步骤S130中,在验证使用者所输入的远程服务器10的验证信息正确后,则令本地计算机20与远程服务器10的BMCll之间建立连接通信,且令本地计算机20依据前述所输入的CPLD固件更新数据所对应的储存位置信息,提取相应的CPLD固件更新数据并传送至远程服务器10的BMCll中,接着执行步骤S140。在步骤S140中,令远程服务器10判断由本地计算机20所传送的CPLD固件更新数据是否接收完成,若是则执行步骤S150,若尚未完成CPLD固件更新数据的接收,则进至步骤S151,即持续接收CPLD固件更新数据,并返回前述步骤S140,以便在接收CPLD固件更新数据后进行后续的CPLD固件更新操作。在步骤S150中,当远程服务器10的BMCll判断CPLD固件更新数据已完成接收, 则依据所接收到的CPLD固件更新数据通过于设置于BMCll中的CPLD更新单元112以对 CPLD12执行固件更新操作,从而完成整个CPLD固件的远程更新操作。接着如图3,其用以说明图IB所示步骤S140至S151的一具体实施例的详细处理步骤。如图所示,在步骤S200中,令远程服务器10的BMCll通过网络系统30接收本地计算机20所传送的CPLD固件更新数据,于本实施例中,本地计算机20通过将CPLD固件更新数据分割成多个网络数据封包的形式,通过网络系统30将所述网络数据封包传送至远程服务器10端的BMCll中,接着执行步骤S210。在步骤S210中,令远程服务器10端的BMCll针对所接收到的数据封包的封包标头(header)进行分析,即读取各数据封包的第一字节信息,并依此来判断该CPLD固件更新数据的接收进度。具体而言,若所读取到的第一字节为0x00,即表示发出CPLD固件的更新请求,则执行步骤S220 ;若所读取到的第一字节为OxfO,即表示当前处于CPLD固件更新数据的接收状态中,换言之,CPLD固件更新数据接收尚未完成,则执行步骤S230 ;若所读取到的第一字节为Oxff,即表示该CPLD固件更新数据已接收完成,则执行步骤S240。在步骤S220中,令BMCll启动CPLD固件更新模式,接着执行步骤S221。在步骤S221中,令BMCll将从地址的值设置为0x000000,并执行步骤S231。在步骤S230中,依据所读取到的第一字节而判断出当前处于CPLD固件更新数据的接收过程中时,设置从地址(slave address)=从地址+1,接着执行步骤S231。在步骤S231中,令BMCll将该从地址信息暂存至GPIO驱动单元的数据缓存区(简称GPIO driver BUF),于本实施例中,该从地址信息是用于针对步骤S200中所接收到的有关CPLD固件更新数据相关的数据封包提供一暂存地址,接着执行步骤S233。
在步骤S233中,令BMCll依据前述GPIO驱动单元的数据缓存区中所储存的从地址信息,该将所接收有关CPLD固件更新数据相关的数据封包暂存至GPIO驱动单元的数据缓存区中相对应的暂存地址中,接着返回执行步骤S200。在步骤S240中,依据所读取到的第一字节而判断出CPLD固件更新数据已接收完成时,设置从地址=从地址+1,接着执行步骤S241。在步骤S241中,令BMCl 1将该从地址信息暂存至GPIO驱动单元的数据缓存区,于本实施例中,该从地址信息是用于针对步骤S200中所接收到的有关CPLD固件更新数据相关的数据封包提供一暂存地址,接着执行步骤S243。在步骤S243中,令BMCll依据前述GPIO驱动单元的数据缓存区中所储存的从地址信息,该将所接收有关CPLD固件更新数据相关的数据封包也暂存至GPIO驱动单元的数据缓存区中相对应的暂存地址中,接着执行步骤S245。在步骤S245中,依据GPIO驱动单元的数据缓存区内所储存的CPLD固件更新数据对CPLD执行相应的更新操作。具体而言,本发明通过令CPLD更新单元112自该GPIO驱动单元的数据缓存区内提取各数据封包,并对所述数据封包执行解包处理,以将其恢复成完整的CPLD固件更新数据,并利用该CPLD固件更新数据针对CPLD执行相应的固件更新操作。综上所述,本发明的CPLD固件更新方法通过该远程服务器中的CPLD通过JTAG接口与BMC的GPIO接口相连接,以利用BMC取代现有刻录器来执行CPLD固件更新操作,还可进一步通过使本地计算机通过该网络系统连接至该远程服务器的BMC的NIC接口,以供使用者通过本地计算机将CPLD固件更新数据传送至该远程服务器的BMC中,并直接通过该BMC来针对CPLD的固件程序进行更新操作,相比于现有技术,本发明所提供的方法能以远程方式来更新CPLD固件,而无须局限于本地端,更可使CPLD固件的更新操作更为简单方便,操作者无须具备专业的硬件知识即能自行完成。上述所述仅为本发明的CPLD固件更新方法的较佳实施例,非用以限定本发明的实质技术内容的范围。本发明的CPLD固件更新方法其实质技术内容广义地定义于权利要求书中,任何他人所完成的技术实体或方法,若与权利要求书所定义者完全相同,或为等效的变更,均将被视为涵盖此专利范围之中。
权利要求
1.一种CPLD固件更新方法,用于利用本地计算机通过网络系统更新远程服务器端中的CPLD的CPLD固件,其中,该CPLD具有JTAG接口,且该远程服务器中还包括具有GPIO接口及NIC接口的基板管理控制器,该方法包括以下步骤令该远程服务器中的该基板管理控制器通过该GPIO接口与该CPLD的该JTAG接口相连接,且令该本地计算机通过该网络系统连接至该远程服务器的该基板管理控制器的该 NIC 接口 ;于该本地计算机端提供使用者界面,以供输入待执行更新的远程服务器的验证信息, 以及输入预先储存于该本地计算机中的CPLD固件更新数据的储存位置;验证该输入的待执行更新的远程服务器的验证信息是否正确,若验证通过则依据该输入的CPLD固件更新数据的储存位置,提取预先储存于该本地计算机中该CPLD固件更新数据并通过该网络系统将其传送至该远程服务器端;以及令该远程服务器端中的该基板管理控制器依据所接收到的该CPLD固件更新数据,针对与其连接的CPLD执行CPLD固件的更新步骤。
2.根据权利要求1所述的CPLD固件更新方法,其中,该输入的待执行更新的远程服务器的验证信息至少包括待更新的远程服务器对应的帐号以及密码信息。
3.根据权利要求1所述的CPLD固件更新方法,该方法还包括令该本地计算机端将该CPLD固件更新数据以分割成多个网络数据封包的形式,通过该网络系统将所述网络数据封包传送至该远程服务器端的基板管理控制器中;以及令该远程服务器的该基板管理控制器分析所接收的各网络数据封包的封包标头信息, 以判断该CPLD固件更新数据的接收进度。
4.根据权利要求3所述的CPLD固件更新方法,其中,该远程服务器的该基板管理控制器依据所接收的各网络数据封包的封包标头信息,判断出该CPLD固件更新数据的接收进度为处于准备接收阶段、正在接收阶段以及接收完成阶段的其中之一。
5.根据权利要求3所述的CPLD固件更新方法,其中,该基板管理控制器具有GPIO驱动单元,该远程服务器的该基板管理控制器将所接收到的网络数据封包暂存至该GPIO驱动单元的数据缓存区。
6.一种CPLD固件更新方法,用于更新本地服务器中的CPLD的CPLD固件,其中,该CPLD 具有JTAG接口,且该服务器中还包括具有GPIO接口的基板管理控制器,该方法包括以下步骤令该服务器中的该基板管理控制器通过该GPIO接口与该CPLD的该JTAG接口相连接;于该服务器端提供使用者界面,从而供输入预先储存于该服务器中的CPLD固件更新数据的储存位置;依据该输入的储存位置信息,提取储存于该服务器中的该CPLD固件更新数据;以及令该服务器端中的该基板管理控制器依据所提取到的该CPLD固件更新数据,针对与其连接的CPLD执行CPLD固件的更新步骤。n
全文摘要
一种CPLD固件更新方法,用于更新服务器端中的CPLD固件,其主要将服务器中的CPLD通过JTAG接口与BMC的GPIO接口相连接,以直接通过BMC控制执行CPLD的固件更新操作。此外,更可进一步使本地计算机通过网络系统连接至远程服务器的BMC的NIC接口,以远程更新服务器端的CPLD固件,使用者可通过于该本地计算机端所提供的UI界面输入待执行更新的远程服务器的相关验证信息以及储存于该本地计算机中的CPLD固件更新数据的储存位置,据以将储存于该本地计算机端的CPLD固件更新数据通过该网络系统传送至该相对应的远程服务器的BMC中,并由该BMC依据所接收到的CPLD固件更新数据,对与其相连接的CPLD执行固件更新操作,以使CPLD固件的更新操作更为简单易行。
文档编号H04L29/08GK102279756SQ201010204878
公开日2011年12月14日 申请日期2010年6月11日 优先权日2010年6月11日
发明者刘军义, 范文纲 申请人:英业达股份有限公司