一种数据链路传输过程的浮点数据保护方法

文档序号:9274436阅读:498来源:国知局
一种数据链路传输过程的浮点数据保护方法
【技术领域】
[0001] 本发明涉及一种多字节数据传输过程中浮点数据保护方法,属于数据传输技术领 域。
【背景技术】
[0002] 嵌入式系统在数据传输过程中,特别是进行多字节传输,然后重新拼接成浮点数 据时,容易产生不合理的浮点数,比如飞行控制系统中GPS传输协议,MU传输协议中便通 过串口传输了大量的浮点数据。当进行浮点运算时,若参与运算的浮点数为不合理数,则会 导致计算结果无意义,甚至触发浮点异常中断使计算机死机重启。为了保证嵌入式计算机 运行的安全性和可靠性,可在读取数据前进行不合理浮点数的滤除,因此多字节通信过程 中增加嵌入式计算机的浮点数据保护能力便显得格外重要。

【发明内容】

[0003] 发明目的:为了克服现有技术中存在的不足,本发明提供一种数据链路传输过程 的浮点数据保护方法,解决不合理浮点数导致嵌入式计算机产生异常情况,确保嵌入式系 统的正常运行和通信链路工作的稳定性。
[0004] 技术方案:为实现上述目的,本发明采用的技术方案为:一种数据链路传输过程 的浮点数据保护方法,其基于浮点数数据结构实现浮点数保护,具体包括以下步骤:
[0005] 步骤1,根据IEEE浮点数算术标准将传输过程中的浮点数据抽象出单精度浮点数 和双精度浮点数的表示形式;
[0006] 步骤2,将步骤1抽象出的单精度浮点数和双精度浮点数的表示形式利用位域操 作构建出描述浮点数的数据结构,同时将浮点数的符号位,指数位,尾数位剥离出来;
[0007] 步骤3,对步骤2中构建的数据结构进行异常数排除,得到非异常数;
[0008] 步骤4,对步骤3得到的非异常数中剥离出来的符号位,指数位,尾数位进行数值 判断;对于判断为不合理浮点数进行数据过滤,对于判断为合理浮点数进行数据更新,实现 数据链路传输过程的浮点数据的保护,并在此过程中利用返回值将浮点数据出错情况反馈 给用户。
[0009] 优选的:所述步骤3中异常数为"指数为0,而尾数非0"的浮点数。
[0010] 优选的:所述步骤4中的不合理浮点数为"指数为最大值"的浮点数。
[0011] 有益效果:本发明提供的一种数据链路传输过程的浮点数据保护方法,相比现有 技术,具有以下有益效果:
[0012] 本发明将传输过程中的浮点数据抽象出单精度浮点数和双精度浮点数的表示形 式,然后对其进行位域构建其数据结构,根据位域数据结构的特性,排除其异常数和不合理 数,得到非异常数和合理数,即得到正确的浮点数,因此其能够彻底解决多字节数据链路传 输过程中,由于浮点数据出错而导致的计算机死机或结果错误的问题,使得嵌入式系统具 有更高的安全性和可靠性。
【附图说明】
[0013] 图1是单精度浮点数结构示意图。
[0014] 图2是双精度浮点数结构示意图。
[0015] 图3是浮点数据分类图。
[0016] 图4是浮点数据保护方案流程图。
【具体实施方式】
[0017] 下面结合附图对本发明作更进一步的说明。
[0018] 一种数据链路传输过程的浮点数据保护方法,其基于浮点数数据结构实现浮点数 保护,根据IEEE浮点数算术标准(IEEEStandardforFloating-PointArithmetic)抽象 出单精度浮点数和双精度浮点数的表示形式,分别如附图1,附图2所示。利用位域操作构 建出描述浮点数的数据结构,将浮点数的符号位,指数位,尾数位剥离出来。再对符号位,指 数位,尾数位进行数值判断,根据附图3中分类标准,对不同类型的浮点数做相应处理,即 仅当判断结果为合理浮点数时才对数据进行更新,否则一律将该次数据过滤,避免计算结 果无意义或计算机死机情况产生,最终实现保护功能。整个方案流程如附图4所示。具体 包括以下步骤:
[0019] 步骤1,根据IEEE浮点数算术标准将传输过程中的浮点数据抽象出单精度浮点数 和双精度浮点数的表示形式;
[0020] 步骤2,将步骤1抽象出的单精度浮点数和双精度浮点数的表示形式利用位域操 作构建出描述浮点数的数据结构,同时将浮点数的符号位,指数位,尾数位剥离出来;
[0021] 步骤3,对步骤2中构建的数据结构进行异常数排除,得到非异常数;
[0022] 所述步骤3中异常数为"指数为0,而尾数非0"的浮点数。
[0023] 步骤4,对步骤3得到的非异常数中剥离出来的符号位,指数位,尾数位进行数值 判断;对于判断为不合理浮点数进行数据过滤,对于判断为合理浮点数进行数据更新,实现 数据链路传输过程的浮点数据的保护。
[0024] 所述步骤4中的不合理浮点数为"指数为最大值"的浮点数。
[0025] 为了更好的理解本发明,下面详细介绍本发明的实现原理。
[0026] 该浮点保护方法具有通用性,针对不同嵌入式CPU,该方法的实现过程完全一致, 仅在使用过程中,根据CPU大小端模式的不同,其使用方法略有不同。本实施例的浮点保护 方法基于标准C语言实现,最后的实现形式为功能独立的C语言函数,可移植性强,其步骤 包括定义浮点数数据结构,获取浮点数各组成部分,排除异常数,排除非数数,合理数数据 更新。
[0027] 1、定义浮点数数据结构
[0028] 根据IEEE浮点数算术标准,浮点数由三部分组成:符号位,指数为,尾数位。如表 1所示。其中,对于单精度浮点数,如图1所示,符号位占lbit数据,指数位占8bit数据,尾 数位占23bit,并且由高到低依次排列;对于双精度浮点数,如图2所示,符号位占lbit数 据,指数位占libit数据,尾数位占52bit。根据此结构,利用位域操作,将浮点数的各部分 依次取出。
[0029] 表1浮点数各部分组成情况
[0030]
[0031] 2、排除异常数
[0032] 如表2所示归纳浮点数分类依据;
[0033] 表2浮
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1