[发明专利]一种双向链表访问检错的方法及装置无效
申请号: | 201210018176.0 | 申请日: | 2012-01-19 |
公开(公告)号: | CN102546305A | 公开(公告)日: | 2012-07-04 |
发明(设计)人: | 张恒 | 申请(专利权)人: | 华为技术有限公司 |
主分类号: | H04L12/26 | 分类号: | H04L12/26 |
代理公司: | 暂无信息 | 代理人: | 暂无信息 |
地址: | 518129 广东省*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 双向 访问 检错 方法 装置 | ||
技术领域
本发明实施例涉及通信技术领域,尤其涉及一种双向链表访问检错的方法及装置。
背景技术
当前现场可编程门阵列(Field Programmable Gate Array,FPGA)被用来处理越来越复杂的业务,FPGA对链表操作和使用越来越频繁。图1是一种通常的双向链表结构示意图,如图1所示,该双向链表有n+1个节点,节点0是链表的首节点,节点n是链表的尾节点,每个链表节点具有三个属性:数据、前驱节点指针和后继节点指针,其中,数据就是链表节点管理的数据;前驱节点指针存放着在该链表上与该节点相邻的前驱节点的内存地址,对于节点0来说,该地址为空值,对于节点1来说其前驱节点指针指向节点0;后继节点指针存放着在该链表上与该节点相邻的后继节点的内存地址,对于节点n来说,该地址为空值,对于节点1来说其后继节点指针指向节点2。在用FPGA对链表进行管理时,由于链表操作复杂、使用频繁,容易出错,操作出现错误后很难马上发现,并且容易导致系统崩溃。在FPGA实现对链表的管理时,引起链表访问错误的原因主要有三种:1、存储链表的外部存储器出现比特位(bit)跳变导致链表内容错误,举例来说,如图1中,如果外部存储器存放节点0的后继节点指针对应的位置出现错误bit跳变,则该后继节点指针可能变为非法指针,当FPGA对该后继节点指针内容进行修改或访问时,将会导致系统崩溃;2、应用程序读写越界造成链表内容被改写,举例来说,如图1,当应用程序写越界将节点0的后继节点指针改写为非法指针,当FPGA对该后继节点指针内容进行修改或访问时,将会导致系统崩溃;3、FPGA外存控制器错误导致读写非预期的链表节点地址。FPGA在链表访问过程中会记录当前访问到的链表的节点的指针,并将该指针存储在FPGA的逻辑控制器中。在FPGA继续访问时,会从该指针继续访问链表,访问链表时会通过FPGA的外存控制器来操作外部存储器,外存控制器用来接收逻辑控制器对外部存储器的访问请求,并根据该访问请求对外部存储器进行相应访问,在这个访问过程中如果出现外存控制器错误,可能导致返回给FPGA错误的链表节点,如图1所示,当FPGA访问到链表节点1时,会将节点1的指针存储在FPGA的逻辑控制器中,当FPGA后续继续访问该链表时,利用该逻辑控制器中存储的前次链表访问的节点1的指针通过外存控制器访问外部存储器中的链表,如果外部控制器错误导致访问外部存储器的非节点1的其他节点,对这个其他节点内容进行修改或访问可能会导致系统崩溃。目前,通常会利用指针冗余备份的方法来实现实时检错,在存储链表指针时,FPGA会同时存储两份相同的链表,在对链表节点访问时,只有读出的两份链表节点的数据内容相同才认为链表访问正确,否则认为链表访问发生了异常,该方法对于防止存储链表的外部存储器出现bit跳变和应用程序读写越界造成链表内容被改引起的链表访问错误比较有效,但对于FPGA外存控制器错误导致读写非预期的链表节点地址引起的链表访问错误并不适用,因为只是比较两份链表节点的数据内容是否相同,并不能说明所访问的链表指针是否正确。
发明内容
本发明实施例提供了一种双向链表访问检错的方法及装置,在FPGA对链表管理过程中,解决在应用程序通过FPGA访问双向链表时,出现链表访问错误而无法及时、有效检测出来,导致系统崩溃的问题。
为达到上述目的,本发明实施例提供了一种双向链表访问检错的方法,所述方法包括:
在逻辑控制器中存放所述双向链表的当前指针和前次指针,所述当前指针用于标识本次要访问的所述双向链表节点,所述前次指针用于标识前次访问的所述双向链表节点,所述当前指针初始指向所述双向链表的首节点,所述方法包括:
根据所述当前指针获取所述双向链表的节点;
所述获取的双向链表的节点的前驱节点指针与所述前次指针不相等时,确定所述双向链表访问出错。
本发明实施例提供了一种双向链表访问检错的装置,所述装置包括:
初始化单元,用于在双向链表生成时,在逻辑控制器中存放所述双向链表的当前指针和前次指针,所述当前指针用于标识本次要访问的所述双向链表节点,所述前次指针用于标识前次访问的所述双向链表节点,所述当前指针初始指向所述双向链表的首节点;
获取单元,用于根据所述当前指针获取所述双向链表的节点;
确定单元,用于所述获取的双向链表的节点的前驱节点指针与所述前次指针不相等时,确定所述双向链表访问出错。
综上,本发明实施例提供了一种双向链表访问检错的方法及装置,在应用程序通过FPGA对链表进行访问时,能够对链表访问进行及时、有效的检错。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于华为技术有限公司,未经华为技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201210018176.0/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种电渣重熔倒渣桶
- 下一篇:座椅及床用加热通风模组装置