一种CPLD固件的自动更新方法与流程

文档序号:32478961发布日期:2022-12-09 20:35阅读:293来源:国知局
一种CPLD固件的自动更新方法与流程
一种cpld固件的自动更新方法
技术领域
1.本发明涉及电数字数据处理技术领域,具体涉及一种cpld固件的自动更新方法。


背景技术:

2.cpld(complex programmable logic device)复杂可编程逻辑器件,是从pal和gal等逻辑器件的基础上发展起来的,相对而言规模大,结构复杂,属于大规模集成电路范围。cpld可让设备做出相应的调整以支持多种协议,并随着标准和协议的演变而改变功能。这为系统设计人员带来很大的方便,因为在标准尚未完全成熟之前他们就可以着手进行硬件设计,然后再修改代码以满足最终标准的要求。cpld的速度和延迟特性比纯软件方案更好,这使得很多能用软件实现的逻辑都尽可能多的使用cpld来处理,同时也意味着对于cpld固件的更新也会更加频繁。
3.目前cpld固件更新方法:
4.(1)通过治具本地更新cpld
5.通过直接将芯片放在烧录治具的插座里进行脱机烧录,操作简单,但反复插拔焊接cpld芯片,容易造成芯片损害。
6.(2)通过下载器在线更新cpld
7.通过下载电缆与标准usb pc端口连接,进行在线烧录,相比烧录治具要快捷,但需要电路板预留jtag针脚,且必须有下载器,步骤繁琐,工具复杂。
8.(3)系统本地在线更新cpld
9.通过jtag口对cpld执行更新操作,节省了治具,下载器等的费用,但该方法只能用于在现场一对一进行升级,效率不高。
10.(4)远程更新cpld
11.用户通过固件更新工具,远程对cpld下指令进行更新,解决了只能现场更新cpld的弊端,但是仍然需要人工干预依次对不同客户机系统下指令升级,效率还是比较低。
12.当大量的主机板的cpld功能更新后,现有技术可以实现用户自行远程的对cpld固件进行更新,但面对大量的主机板,效率仍然没有得到有效提升,只能一对一下指令;且面对各类型号主机板,不同的客户,对应的cpld固件十分繁杂,需要人工搜索确认待升级的cpld固件,容易造成误刷,甚至导致主机板损坏;又cpld功能更新后,用户往往没有第一时间得知,尽快的体验更新带来的新功能,如果主机板能够自动检测服务器目前cpld是否更新,且根据配置好的更新规则自行匹配对应的cpld固件,自动进行cpld更新操作,则可以实现无需人工干预,并行的大量更新主机板,提高效率,提升用户使用感。
13.因此,亟需一种cpld固件的自动更新方法。


技术实现要素:

14.本发明是为了解决cpld的更新效率问题,提供一种cpld固件的自动更新方法,通过在更新机制里新增对cpld版本的选取,自动更新程序可自行判断适配的cpld固件,更加
适用于不同的客户和主板,同时设置了对cpld固件内置安全标志的查验,避免误刷,而且还可让客户选择在服务器空闲时间段进行更新。本发明提高了大规模更新cpld固件时的效率,比使用烧录治具操作方便简洁,无需人员在服务器部署现场参与固件更新整个过程,有效减少客户的运营成本,可适用于大量客户机系统同时参与自动升级,适用面更广,及时自动更新也可使用户在第一时间体验新功能。
15.本发明提供一种cpld固件的自动更新方法,包括以下步骤:
16.s1、用户配置自动更新规则,自动更新规则包括是否开启自动更新功能,如果用户选择是,进入步骤s2,如果用户选择否,不进行自动更新;
17.s2、客户机系统上电后运行自动更新进程,自动更新进程包括:固件获取进程、固件解析进程和固件更新进程;
18.s3、固件获取进程开始运行,客户机系统向cpld远端服务器获取包含固件更新信息的release文件并对release文件进行解析,判断是否需要进行cpld固件更新,如果是,则进入步骤s4,如果否,则重新获取release文件;
19.s4、固件获取进程根据cpld远端服务器的ip地址从cpld远端服务器下载当前最新的新版本cpld固件并保存在客户机系统的可读写存储器存放cpld固件位置,固件获取进程完成;
20.s5、客户机系统检查新版本cpld固件的是否完整,如果是,进入步骤s6;如果否,则移除新版本cpld固件,返回步骤s4;
21.如果累计三次均为否,则将新版本cpld固件加入自动更新规则黑名单中,返回步骤s3;
22.s6、所述固件解析进程启动,所述固件解析进程解析所述新版本cpld固件并判断是否进行固件更新,如果是,进入步骤s7,如果否,则将新版本cpld固件的版本号加入自动更新规则黑名单中,并移除保存在可读写存储器中的新版本cpld固件,返回步骤s3;
23.s7、如果用户在自动更新规则中选择开启更新前通知用户功能,则客户机系统运行固件更新进程并告知用户已下载新版本cpld固件;判断客户是否选择自行更新,如果是,则将新版本cpld固件的版本号加入自动更新规则黑名单中,返回步骤s3;如果否,进入步骤s8;
24.s8、固件解析进程对新版本cpld固件进行解析,通过固件更新电路获取本地cpld芯片信息,并判断新版本cpld固件是否可用于进行本地cpld芯片的更新,如果是,则进入步骤s9,固件解析进程完成;如果否,则将新版本cpld固件的版本号加入自动更新规则黑名单中,并移除保存在可读写存储器中的新版本cpld固件,返回步骤s3;
25.s9、固件更新进程运行,固件更新进程判断客户机系统是否空闲,如果是,则将更新状态设置为开启,进入步骤s10,如果否,则将更新状态设置为等待,继续判断客户机系统是否空闲,直至述客户机系统空闲;
26.s10、固件更新进程将步骤s8解析后的固件数据通过固件更新电路写入本地cpld芯片,进行更新并返回固件更新响应信息,固件更新进程判断更新响应是否为成功,如果是,则继续更新,如果否,则重新执行固件更新电路写入并开始计数,并继续判断更新响应是否为成功;当成功更新响应信息累计三次为否,则将新版本cpld固件的版本号加入自动更新规则黑名单中;
27.如果用户在自动更新规则中选择更新消息发送时,通知用户cpld固件更新失败;
28.返回步骤s3;
29.s11、自动更新进程通过固件更新电路读取本地cpld芯片更新后的cpld固件版本,并确认是否为新版本cpld固件的版本;
30.如果用户在自动更新规则中选择更新消息发送时,通知用户当前版本cpld固件的自动更新完成;
31.返回步骤s3,继续进行自动更新。
32.本发明所述的一种cpld固件的自动更新方法,作为优选方式,步骤s5和步骤s6之间还包括步骤sⅰ:
33.sⅰ、固件解析进程启动,固件解析进程解析新版本cpld固件内置的安全标志并判断安全标志是否正确,如果是,则进入步骤s6;如果否,则将新版本cpld固件的版本号加入自动更新规则黑名单中,并移除保存在可读写存储器中的新版本cpld固件,更新消息发送功能发送信息提醒用户,返回步骤s3。
34.本发明所述的一种cpld固件的自动更新方法,作为优选方式,步骤s6中,安全标志有误时,则新版本cpld固件中混入未知固件。
35.本发明所述的一种cpld固件的自动更新方法,作为优选方式,步骤s1中,自动更新规则还包括cpld远端服务器的ip地址、更新时间、更新消息发送、主机型号、客户信息、黑名单列表。
36.本发明所述的一种cpld固件的自动更新方法,作为优选方式,更新消息发送包括更新前是否通知用户、新版本cpld固件的安全标志错误时是否通知用户和更新后是否通知用户。
37.本发明所述的一种cpld固件的自动更新方法,作为优选方式,步骤s3中,判断是否需要进行cpld固件更新的方法为:release文件解析成功后,固件获取进程查找release文件中是否包含客户机系统的主机型号或客户信息,新版本cpld固件是否不在自动更新规则黑名单中,如果全是,则需要进行cpld固件更新;如果一项为否,则不需要进行cpld固件更新。
38.本发明所述的一种cpld固件的自动更新方法,作为优选方式,步骤s6中,固件解析进程判断是否进行自动更新的方法为:如果新版本cpld固件的版本号比本地cpld芯片的固件版本号新,并且新版本cpld固件的时间戳比客户机系统上cpld芯片的时间戳新,则需要进行更新;如果任意一项为否,则不需要进行更新。
39.本发明所述的一种cpld固件的自动更新方法,作为优选方式,步骤s9中,固件更新电路包括但不限于spi、i2c和jtag。
40.本发明所述的一种cpld固件的自动更新方法,作为优选方式,步骤s9中,判断新版本cpld固件是否可用于进行本地cpld芯片的更新的方法为:将解析后的新版本cpld固件与本地cpld芯片信息进行比较后进行判断。
41.本发明所述的一种cpld固件的自动更新方法,作为优选方式,步骤s2中,所述客户机系统至少为两个,每个客户机系统同时进行步骤s3~s12。
42.本发明通过客户机系统上的固件获取进程,根据用户配置自动更新规则读取远端服务器最新的release文件并解析,确定固件是否与主机板匹配,如果匹配则获取远端服务
器的新版本cpld固件,保存在可读写存储器存放cpld固件位置并校验该cpld固件,解析固件内置的安全标志,无任何问题,则判断当前新版本cpld固件是否比客户机系统上cpld芯片自身的固件版本更新,如果是,通过客户机系统上cpld固件解析进程对cpld固件进行解析,询问客户机系统是否处于空闲状态若空闲,可通过客户机系统上的固件更新进程对cpld芯片进行更新,返回更新响应信息,最后确认更新后cpld固件版本,并将更新结果发送给用户。
43.本发明具有以下优点:
44.(1)本发明提高了大规模更新cpld固件时的效率,比使用烧录治具操作方便简洁,无需人员在服务器部署现场参与固件更新整个过程,有效减少客户的运营成本。
45.(2)本发明通过在更新机制里新增对cpld版本的选取,使自动更新程序可自行判断适配的cpld固件,更加适用于不同的客户和主板,使用户可以在第一时间体验新功能;并且设置了对cpld固件内置安全标志的查验,可有效防止服务器被攻击后,cpld固件被替换成未知的固件,避免误刷;同时还也可以让客户选择在服务器空闲时间段进行更新,更快更灵活,不影响客户运行在服务器上业务。
46.(3)本发明可适用于大量客户机系统同时自动升级,适用面更广。
附图说明
47.图1为一种cpld固件的自动更新方法流程图;
48.图2为一种cpld固件的自动更新方法框图。
具体实施方式
49.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。
50.实施例1
51.如图1~2所示,一种cpld固件的自动更新方法,包括以下步骤:
52.s1、用户配置自动更新规则,自动更新规则包括是否开启自动更新功能,如果用户选择是,进入步骤s2,如果用户选择否,不进行自动更新;
53.自动更新规则还包括cpld远端服务器的ip地址、更新时间、更新消息发送、主机型号、客户信息、黑名单列表,更新消息发送包括更新前是否通知用户、新版本cpld固件的安全标志错误时是否通知用户和更新后是否通知用户;
54.s2、客户机系统上电后运行自动更新进程,自动更新进程包括:固件获取进程、固件解析进程和固件更新进程;客户机系统至少为两个,每个客户机系统同时进行步骤s3~s12;
55.s3、固件获取进程开始运行,客户机系统向cpld远端服务器获取包含固件更新信息的release文件并对release文件进行解析,判断是否需要进行cpld固件更新,如果是,则进入步骤s4,如果否,则重新获取release文件;
56.判断是否需要进行cpld固件更新的方法为:release文件解析成功后,固件获取进程查找release文件中是否包含客户机系统的主机型号或客户信息,新版本cpld固件是否不在自动更新规则黑名单中,如果全是,则需要进行cpld固件更新;如果一项为否,则不需
要进行cpld固件更新;
57.s4、固件获取进程根据cpld远端服务器的ip地址从cpld远端服务器下载当前最新的新版本cpld固件并保存在客户机系统的可读写存储器存放cpld固件位置,固件获取进程完成;
58.s5、客户机系统检查新版本cpld固件的是否完整,如果是,进入步骤sⅰ;如果否,则移除新版本cpld固件,返回步骤s4;
59.如果累计三次均为否,则将新版本cpld固件加入自动更新规则黑名单中,返回步骤s3;
60.sⅰ、固件解析进程启动,固件解析进程解析新版本cpld固件内置的安全标志并判断安全标志是否正确,如果是,则进入步骤s6;如果否,则将新版本cpld固件的版本号加入自动更新规则黑名单中,并移除保存在可读写存储器中的新版本cpld固件,更新消息发送功能发送信息提醒用户,返回步骤s3;
61.安全标志有误时,则新版本cpld固件中混入未知固件;
62.s6、固件解析进程判断是否进行固件更新,如果是,进入步骤s7,如果否,则将新版本cpld固件的版本号加入自动更新规则黑名单中,并移除保存在可读写存储器中的新版本cpld固件,返回步骤s3;
63.固件解析进程判断是否进行自动更新的方法为:如果新版本cpld固件的版本号比本地cpld芯片的固件版本号新,并且新版本cpld固件的时间戳比客户机系统上cpld芯片的时间戳新,则需要进行更新;如果任意一项为否,则不需要进行更新;
64.s7、如果用户在自动更新规则中选择开启更新前通知用户功能,则客户机系统运行固件更新进程并告知用户已下载新版本cpld固件;判断客户是否选择自行更新,如果是,则将新版本cpld固件的版本号加入自动更新规则黑名单中,返回步骤s3;如果否,进入步骤s8;
65.s8、固件解析进程对新版本cpld固件进行解析,通过固件更新电路获取本地cpld芯片信息,并判断新版本cpld固件是否可用于进行本地cpld芯片的更新,如果是,则进入步骤s9,固件解析进程完成;如果否,则将新版本cpld固件的版本号加入自动更新规则黑名单中,并移除保存在可读写存储器中的新版本cpld固件,返回步骤s3;
66.固件更新电路包括但不限于spi、i2c和jtag;
67.判断新版本cpld固件是否可用于进行本地cpld芯片的更新的方法为:将解析后的新版本cpld固件与本地cpld芯片信息进行比较后进行判断;
68.s9、固件更新进程运行,固件更新进程判断客户机系统是否空闲,如果是,则将更新状态设置为开启,进入步骤s10,如果否,则将更新状态设置为等待,继续判断客户机系统是否空闲,直至客户机系统空闲;
69.s10、固件更新进程将步骤s8解析后的固件数据通过固件更新电路写入本地cpld芯片,进行更新并返回固件更新响应信息,固件更新进程判断更新响应是否为成功,如果是,则继续更新,如果否,则重新执行固件更新电路写入并开始计数,继续判断更新响应是否为成功;当成功更新响应信息累计三次为否,则将新版本cpld固件的版本号加入自动更新规则黑名单中;
70.如果用户在自动更新规则中选择更新消息发送时,通知用户cpld固件更新失败;
71.返回步骤s3;
72.s11、自动更新进程通过固件更新电路读取本地cpld芯片更新后的cpld固件版本,并确认是否为新版本cpld固件的版本;
73.如果用户在自动更新规则中选择更新消息发送时,通知用户当前版本的cpld固件的自动更新完成;
74.返回步骤s3,继续进行自动更新。
75.实施例2
76.如图1~2所示,一种cpld固件的自动更新方法,本发明由远端服务器

、客户机系统

两大部分组成,其中客户机系统

分为soc的自动更新进程

、固件更新电路(spi/i2c/jtag...)

,cpld芯片

,可读写存储器


77.本发明控制逻辑如下:
78.(1)用户配置自动更新规则,cpld远端服务器ip地址,更新时间,更新消息发送,主机型号,客户信息,黑名单列表,是否开启自动更新功能,更新前是否通知用户等;
79.(2)当用户配置自动更新规则中开启了自动更新功能,客户机系统

上电后,开始运行自动更新进程

。自动更新进程

可分为固件获取进程,固件解析进程和固件更新进程3个子进程;
80.(3)客户机系统

上的运行固件获取进程通过用户配置的自动更新规则向远端服务器

获取包含固件更新信息的release文件,对release文件进行解析,判断是否有主机型号,客户信息等匹配的cpld固件更新信息,如果release文件解析成功并且有可用但不在自动更新规则黑名单中的新版本cpld固件则执行步骤(4),否则执行步骤(3);
81.(4)客户机系统

的自动更新进程

启用固件获取进程从远端服务器下载当前最新的cpld固件,保存在可读写存储器

存放cpld固件位置,自动更新进程

结束固件获取进程并同时对该版本cpld固件完整性检查,如果校验无误则执行步骤(5),如果校验有误,移除当前的可读写存储器

存放cpld固件位置中的cpld固件,跳至步骤(4),重复3次仍失败后,则将该版cpld固件加入黑名单列表,然后跳至步骤(3);
82.(5)客户机系统

的自动更新进程

启用cpld固件解析进程解析新版本cpld固件,解析固件内置的安全标志,避免有未知或被篡改的固件混入,威胁主机安全,若安全标志无误,则继续执行步骤(6),若安全标志有误,则将该版固件加入黑名单列表,并移除保存在可读写存储器

存放cpld固件位置的cpld固件,且用户配置的自动更新规则中更新消息发送功能发送该信息提醒用户。
83.(6)固件解析进程根据cpld固件更新信息的固件版本号是否大于客户机系统

上cpld芯片自身的固件版本号来判断是否需要更新cpld固件;同时检查cpld固件生成时间戳,是否比现有cpld固件时间戳要更新,如果确定需要更新cpld固件则继续步骤(7),否则,将该版cpld固件加入黑名单列表,并移除保存在可读写存储器

存放cpld固件位置的cpld固件,跳至步骤(3);
84.(7)当用户配置的自动更新规则中开启更新前通知用户功能,客户机系统

上运行固件更新进程告知用户已下载最新的cpld固件,如果客户选择自行更新,则将该版cpld固件加入黑名单列表,然后执行步骤(3)。否则执行步骤(8);
85.(8)客户机系统

的cpld固件解析进程对可读写存储器

存放cpld固件位置中的
cpld固件进行解析;通过固件更新电路(spi/i2c/jtag...)

获取本地cpld芯片

信息,与解析后的cpld固件信息比较,确认该cpld固件可用于对该cpld芯片

进行更新,则继续步骤(9),如果比较失败,将该版cpld固件加入黑名单列表,并移除保存在可读写存储器

存放cpld固件位置的cpld固件,跳至步骤(3);
86.(9)客户机系统

的cpld固件更新进程判断目前客户机系统

是否是空闲状态,如果是则将更新状态设置为开启,继续步骤(10),否则将更新状态设置为等待,直到客户机系统

为空闲状态或者重启,继续步骤(10)。
87.(10)客户机系统

的cpld固件更新进程将解析后的固件数据通过固件更新电路(spi/i2c/jtag...)

写入cpld芯片

,进行更新,返回固件更新响应信息,固件更新进程判断响应信息为成功,则继续步骤(11),否则重复步骤(10)3次,如果仍然失败,将该版cpld固件加入黑名单列表,并移除保存在可读写存储器

存放cpld固件位置的cpld固件,然后按照用户配置的自动更新规则中更新消息发送功能通知用户更新cpld固件失败,跳至步骤(3);
88.(11)客户机系统

自动更新进程

通过固件更新电路(spi/i2c/jtag...)

读取cpld芯片

当前更新后cpld固件版本,确认cpld固件是否为当前所更新版本,并按照用户配置的自动更新规则中更新消息发送功能将cpld更新结果发送给用户,跳至步骤(3)。
89.以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,根据本发明的技术方案及其发明构思加以等同替换或改变,都应涵盖在本发明的保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1