一种基于PCIe设备驱动升级固件的方法与流程

未命名 08-05 阅读:73 评论:0

一种基于pcie设备驱动升级固件的方法
技术领域
1.本发明涉及一种基于pcie设备驱动升级固件的方法,属于计算机技术领域。


背景技术:

2.通常pcie设备进行固件升级时,需要通过板卡上的jtag插针,通过专用的工具,将固件写入到eeprom或者flash存储介质中,依赖现场操作,升级效率低,升级过程耗时较长,也无法实现批量的固件升级,另外升级期间需要停掉业务,严重影响了用户的使用体验。


技术实现要素:

3.本发明目的是提供了一种基于pcie设备驱动升级固件的方法,不仅结构牢固不易分离,而且施工方便。
4.本发明为实现上述目的,通过以下技术方案实现:
5.一种基于pcie设备驱动升级固件的方法,其特征在于,包括以下步骤:
6.设备发起固件升级请求;
7.将请求作为普通任务放到驱动的cq命令队列;
8.当驱动接收到固件更新指令后,将指令写入指定的任务处理寄存器,并更新cq队列的tail指针;
9.pcie设备检测寄存器被写入后,与写入前的指针比较,获取新添加的固件更新任务;
10.通过直接存储器访问将固件更新任务搬运到pcie设备侧,pcie设备端执行固件升级动作;
11.固件升级完成后将状态写入到rq响应队列,并向驱动端上报中断;
12.驱动端接收到中断后,读取返回的响应包,并根据响应包判断固件升级状态是否成功,如果升级成功pcie设备端将固件数据写入到flash中,并执行软复位操作,完成整个固件更新过程,如果不成功则重新发起固件升级请求。
13.优选的,通过对接受到的固件程序进行crc校验判断固件升级状态是否成功,校验通过则升级成功,校验失败则升级失败。
14.优选的,所述固件升级方法具体如下:
15.设备驱动初始化,驱动程序将pcie设备的基址寄存器空间通过映射到host端的内存中;映射完成之后,驱动程序通过直接存储器访问与pcie设备进行数据交互传输;
16.通过地址转换单元进行地址转换,将固件升级程序写入到指定地址空间;
17.pcie设备接收并解析该地址空间的数据后,进行固件升级操作。
18.优选的,所述设备驱动初始化的过程中,将直接存储器访问的物理地址映射到虚拟地址空间,驱动向pcie设备传输固件升级数据时,将数据存放到虚拟地址空间,完成地址映射转换后,由控制器进行数据搬运传输。
19.本发明的优点在于:本发明提出的通过pcie驱动实现固件升级的方法,是基于
pcie驱动和设备之间实现的私有协议,完成的固件数据传输,该方法的实现,简化了pcie密码卡设备升级流程,相对于传统的通过jtag等插针的方式更新固件,大大提升了固件升级的效率。
附图说明
20.附图用来提供对本发明的进一步理解,并且构成说明书的一部分,与本发明的实施例一起用于解释本发明,并不构成对本发明的限制。
21.图1为本发明pcie设备驱动和设备之间的数据交互过程示意图。
22.图2为本发明地址转换示意图。
具体实施方式
23.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
24.如图1所示一种基于pcie设备驱动升级固件的方法,包括以下步骤:
25.设备发起固件升级请求;
26.将请求作为普通任务放到驱动的cq命令队列;
27.当驱动接收到固件更新指令后,将指令写入指定的任务处理寄存器,并更新cq队列的tail指针;
28.pcie设备检测寄存器被写入后,与写入前的指针比较,获取新添加的固件更新任务;
29.通过直接存储器访问将固件更新任务搬运到pcie设备侧,pcie设备端执行固件升级动作;
30.固件升级完成后将状态写入到rq响应队列,并向驱动端上报中断;
31.驱动端接收到中断后,读取返回的响应包,并根据响应包判断固件升级状态是否成功,如果升级成功pcie设备端将固件数据写入到flash中,并执行软复位操作,完成整个固件更新过程,如果不成功则重新发起固件升级请求。
32.通过对接受到的固件程序进行crc校验判断固件升级状态是否成功,校验通过则升级成功,校验失败则升级失败。
33.如图2所示,为了便于理解,设备驱动程序运行在主机(host端),pcie密码卡为设备端(device端),对于pcie密码卡设备,在驱动初始化的时候,驱动程序将pcie设备的bar空间通过映射到host端的内存中,映射完成之后,驱动程序就可以和pcie设备通过dma的方式进行数据的交互传输,由于升级固件需要将固件程序写入到特定的位置,因为需要通过atu进行地址转换,以便于将固件程序写入到特定的地址空间,固件接收并解析该地址空间的数据后,再进行固件更新操作。
34.最后应说明的是:以上所述仅为本发明的优选实施例而已,并不用于限制本发明,尽管参照前述实施例对本发明进行了详细的说明,对于本领域的技术人员来说,其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换。
凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。


技术特征:
1.一种基于pcie设备驱动升级固件的方法,其特征在于,包括以下步骤:设备发起固件升级请求;将请求作为普通任务放到驱动的cq命令队列;当驱动接收到固件更新指令后,将指令写入指定的任务处理寄存器,并更新cq队列的tail指针;pcie设备检测寄存器被写入后,与写入前的指针比较,获取新添加的固件更新任务;通过直接存储器访问将固件更新任务搬运到pcie设备侧,pcie设备端执行固件升级动作;固件升级完成后将状态写入到rq响应队列,并向驱动端上报中断;驱动端接收到中断后,读取返回的响应包,并根据响应包判断固件升级状态是否成功,如果升级成功pcie设备端将固件数据写入到flash中,并执行软复位操作,完成整个固件更新过程,如果不成功则重新发起固件升级请求。2.根据权利要求1所述的基于pcie设备驱动升级固件的方法,其特征在于,通过对接受到的固件程序进行crc校验判断固件升级状态是否成功,校验通过则升级成功,校验失败则升级失败。3.根据权利要求1所述的基于pcie设备驱动升级固件的方法,其特征在于,所述固件升级方法具体如下:设备驱动初始化,驱动程序将pcie设备的基址寄存器空间通过映射到host端的内存中;映射完成之后,驱动程序通过直接存储器访问与pcie设备进行数据交互传输;通过地址转换单元进行地址转换,将固件升级程序写入到指定地址空间;pcie设备接收并解析该地址空间的数据后,进行固件升级操作。4.根据权利要求3所述的基于pcie设备驱动升级固件的方法,其特征在于,所述设备驱动初始化的过程中,将直接存储器访问的物理地址映射到虚拟地址空间,驱动向pcie设备传输固件升级数据时,将数据存放到虚拟地址空间,完成地址映射转换后,由控制器进行数据搬运传输。

技术总结
本发明提供了一种基于PCIe设备驱动升级固件的方法。包括以下步骤:设备发起固件升级请求;将请求作为普通任务放到驱动的CQ命令队列;当驱动接收到固件更新指令后,将指令写入指定的任务处理寄存器,并更新CQ队列的tail指针;PCIe设备检测寄存器被写入后,与写入前的指针比较,获取新添加的固件更新任务;通过直接存储器访问将固件更新任务搬运到PCIe设备侧,PCIe设备端执行固件升级动作;固件升级完成后将状态写入到RQ响应队列,并向驱动端上报中断;驱动端接收到中断后,读取返回的响应包,并根据响应包判断固件升级状态是否成功,完成整个固件更新过程。本发明不仅结构牢固不易分离,而且施工方便。而且施工方便。而且施工方便。


技术研发人员:姜向阳 秦法林 张忠国 石念伟 王晓玉 范宣荣 尹相彦
受保护的技术使用者:山东华芯半导体有限公司
技术研发日:2023.04.28
技术公布日:2023/8/4
版权声明

本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

航空之家 https://www.aerohome.com.cn/

飞机超市 https://mall.aerohome.com.cn/

航空资讯 https://news.aerohome.com.cn/

分享:

扫一扫在手机阅读、分享本文

相关推荐