《嵌入式软件运行时故障的在线自检与切片恢复方法及装置.pdf》由会员分享,可在线阅读,更多相关《嵌入式软件运行时故障的在线自检与切片恢复方法及装置.pdf(13页珍藏版)》请在专利查询网上搜索。
1、(10)申请公布号 CN 104298599 A (43)申请公布日 2015.01.21 CN 104298599 A (21)申请号 201410562454.8 (22)申请日 2014.10.21 G06F 11/36(2006.01) G06F 11/10(2006.01) (71)申请人 卡斯柯信号有限公司 地址 200070 上海市闸北区天目中路 428 号 凯旋门大厦 27 层 C/D 室 (72)发明人 徐军 孙军峰 周庭梁 周宇恒 汪明新 张磊 (74)专利代理机构 上海科盛知识产权代理有限 公司 31225 代理人 赵志远 (54) 发明名称 嵌入式软件运行时故障的在线自。
2、检与切片恢 复方法及装置 (57) 摘要 本发明涉及一种嵌入式软件运行时故障的 在线自检与切片恢复方法及装置, 该方法采用离 线与在线相结合的代码运行时故障检测机制, 同 时提供在线恢复代码段数据, 所述的恢复方法具 体包括以下步骤 : 1) 代码段数据离线校验处理阶 段 ; 2) 代码段实时检测与在线恢复阶段 ; 所述的 装置包括远程工作站 PC 机和嵌入式设备, 该嵌入 式设备包括主处理模块、 电源模块和 CPLD 逻辑模 块。 与现有技术相比, 本发明具有解决了应用程序 代码段数据出现异常的问题, 并且保证了应用程 序的可靠性和安全性。 (51)Int.Cl. 权利要求书 3 页 说明书。
3、 7 页 附图 2 页 (19)中华人民共和国国家知识产权局 (12)发明专利申请 权利要求书3页 说明书7页 附图2页 (10)申请公布号 CN 104298599 A CN 104298599 A 1/3 页 2 1. 一种嵌入式软件运行时故障的在线自检与切片恢复方法, 其特征在于, 该方法采用 离线与在线相结合的代码运行时故障检测机制, 同时提供在线恢复代码段数据, 所述的恢 复方法具体包括以下步骤 : 1) 代码段数据离线校验处理阶段 ; 2) 代码段实时检测与在线恢复阶段。 2. 根据权利要求 1 所述的一种嵌入式软件运行时故障的在线自检与切片恢复方法, 其 特征在于, 所述的步骤 。
4、1) 代码段数据离线校验处理阶段具体为 : a1) 在应用程序的代码编码完成后, 放入工作站 PC 机上进行交叉编译, 生成可在嵌入 式设备上运行的 ELF 格式的可执行文件 HPM.out ; a2)通过ELF文件离线解析工具OffLineParseElfTool来获取文件HPM.out的解析ELF 信息头数据, 从中计算段头数据总表的偏移与大小 ; a3)OffLineParseElfTool 在头数据总表中解析代码段信息头数据, 计算代码段在 ELF 文件中的偏移与大小, 然后从对应位置获取代码段数据 ; a4)OffLineParseElfTool 根据代码段数据和 10 组冗余码, 。
5、生成 10 组离线校验数据 ; a5) 利用 VHDL 语言编写校验算法逻辑, 并生成相应文件, 将相应文件和离线生成的校 验数据码数据烧写到 CPLD 中 ; a6)通过ftp工具将可执行应用程序文件HPM.out进行远程下载, 或在线烧写到嵌入式 设备的板载 Flash 中。 3. 根据权利要求 2 所述的一种嵌入式软件运行时故障的在线自检与切片恢复方法, 其 特征在于, 在线烧写前, 备份较老版本的应用程序文件为 HPM.old, 如果烧写失败, 从 HPM. old 文件恢复, 使用老版本应用程序。 4. 根据权利要求 2 所述的一种嵌入式软件运行时故障的在线自检与切片恢复方法, 其 。
6、特征在于, 所述的步骤 2) 代码段实时检测与在线恢复阶段具体为 : b1) 嵌入式设备上电后, 初始化硬件设备, 并对 CPLD 模块进行初始化, 如果初始化成功 继续步骤 b2), 否则执行步骤 b11) ; b2) 嵌入式设备的操作系统开始初始化, 挂载 Flash 文件系统, 并且创建系统初始化任 务 InitTask, 如果初始化成功继续步骤 b3), 否则执行步骤 b11) ; b3) 初始化任务 InitTask 从 Flash 文件系统的加载可执行文件 HPM.out, 加载到指 定的内存区域 ; InitTask 创建恢复任务 RecoverTask、 主处理任务 MainT。
7、ask 和网络任务 NetTask, 并挂起恢复任务 RecoverTask ; InitTask 获取对应代码段在内存区域中地址和大 小, 然后并从中解析出代码段数据, 并通过 CPLD 根据冗余码来生成校验码, 与离线生成的 校验码比较, 如果校验通过继续步骤 b4), 否则执行步骤 b11) ; b4)MainTask 对嵌入式设备的系统数据进行逻辑处理, 并执行步骤 b5) ; b5) 判断定时中断是否触发, 如果触发执行步骤 b6), 否则返回执行步骤 b4) ; b6) 定时中断处理函数通过锁住操作系统操作来禁止任务调度和响应中断, 然后通过 CPLD 根据冗余码来生成校验码, 并。
8、与离线生成的校验码比较, 如果校验通过继续步骤 b7), 否则执行步骤 b8) ; b7) 解锁操作系统操作来恢复任务调度和响应中断, 并返回执行步骤 b4) ; b8) 获取主处理任务 MainTask 运行参数与系统状态变量切片值, 并将这些变量切片值 权 利 要 求 书 CN 104298599 A 2 2/3 页 3 保存到系统内存的高内存的教育数据区, 同时对该教育数据进行 CRC 处理, 并保存 CRC 值, 供教育恢复时, 校验数据使用, 继续步骤 b9) ; b9) 调用在线恢复代码段功能模块, 来恢复应用程序的代码段数据, 判断如果恢复成 功, 执行步骤 b10), 否则执行。
9、步骤 b11) ; b10) 从教育数据区恢复主处理任务 MainTask 运行参数与系统状态变量并返回执行步 骤 b4) ; b11)控制板卡前面板上LED闪烁, 来进行告警, 并持续闪烁3分钟后, 嵌入式设备重启。 5. 根据权利要求 4 所述的一种嵌入式软件运行时故障的在线自检与切片恢复方法, 其 特征在于, 所述的步骤 b5) 中的定时中断的周期为 500ms。 6. 根据权利要求 4 所述的一种嵌入式软件运行时故障的在线自检与切片恢复方法, 其 特征在于, 所述的在线恢复代码段功能模块具体工作流程如下 : c1) 解锁操作系统, 激活创建恢复任务 RecoverTask, Recov。
10、erTask 开始运行, 并关闭 CPLD 中定时器, 继续步骤 c2) ; c2) 恢复任务 RecoverTask 删除 MainTask 和 NetTask, 并且清除 MainTask 和 NetTask 的控制块信息, 删除 HPM.out 模块加载信息, 继续步骤 c3) ; c3) 恢复任务 RecoverTask 从 Flash 文件系统的加载可执行文件 HPM.out, 从中解析出 代码段数据, 并通过 CPLD 根据冗余码来生成校验码, 与离线生成的校验码比较, 如果校验 通过继续步骤 c6), 否则执行步骤 c4) ; c4) 恢复任务 RecoverTask 通过 FT。
11、P 协议从远程工作站 PC 机下载可执行文件 HPM. out, 从中解析出代码段数据, 并通过 CPLD 根据冗余码来生成校验码, 与离线生成的校验码 比较, 继续步骤 c5) ; c5) 判断校验码是否一致, 如果校验码一致继续步骤 c6), 否则设置 g_RECOVER 为 1, 并 执行步骤 c8) ; c6) 恢复任务 RecoverTask 加载可执行文件 HPM.out, 加载到指定的内存区域 ; 然后创 建主处理任务 MainTask 和网络任务 NetTask, 并挂起恢复任务 RecoverTask ; c7) 判断是否加载成功, 如果成功, 设置 g_RECOVER 为 。
12、0, 否则, 设置 g_RECOVER 为 1, 然 后执行步骤 c8) ; c8) 打开 CPLD 中的定时器, 并返回。 7.一种实施权利要求1至6中任一的嵌入式软件运行时故障的在线自检与切片恢复方 法的装置, 其特征在于, 包括远程工作站 PC 机和嵌入式设备, 该嵌入式设备包括主处理模 块、 电源模块和 CPLD 逻辑模块, 所述的主处理模块包括微处理器以及分别与微处理器连接 的内存模块、 Flash 模块、 网络模块和看门狗模块, 所述的 CPLD 逻辑模块包括分别与微处理 器连接的 HSD 模块、 LED 指示模块、 定时器模块, 所述的网络模块与远程工作站 PC 机连接 ; 所述。
13、的主处理模块通过网络模块从外部设备接收网络数据包, 然后由微处理器负责对 接收的数据进行逻辑处理, 所述的 CPLD 模块从主处理模块接收数据, 并根据预先设计的冗 余码生成在线校验码, 所述的 HSD 模块负责生成在线校验码, 并比较在线校验码和离线校 验码的一致性。 8. 根据权利要求 7 所述的一种嵌入式软件运行时故障的在线自检与切片恢复方法的 装置, 其特征在于, 所述的远程工作站 PC 机依次通过网络连接线、 路由设备、 以太网与嵌入 权 利 要 求 书 CN 104298599 A 3 3/3 页 4 式设备连接。 9. 根据权利要求 7 所述的一种嵌入式软件运行时故障的在线自检与。
14、切片恢复方法的 装置, 其特征在于, 所述的电源模块将输入的 220V 电压转换成 24V 的电压, 给主处理模块、 CPLD 模块供电。 权 利 要 求 书 CN 104298599 A 4 1/7 页 5 嵌入式软件运行时故障的在线自检与切片恢复方法及装置 技术领域 0001 本发明涉及一种提高软件代码段可靠性的技术, 尤其是涉及一种嵌入式软件运行 时故障的在线自检与切片恢复方法及装置。 背景技术 0002 应用在轨道交通行业中的安全计算机, 从外部设备接收数据, 并进行逻辑运算处 理, 在实际应用中主要设计安全应用软件来实现逻辑运算的功能, 安全应用软件在运行过 程中执行的指令, 被存储。
15、在安全计算机系统内存的代码段中, 安全计算机系统所处的工作 环境具有高温、 震动剧烈、 辐射强等特点, 可能出现各种软硬件故障, 导致存储在代码段中 的数据发生异常, 从而使任何运行在内存中的逻辑运算结果出错, 最终影响整个系统的安 全性和可靠性。 0003 为了保证安全计算机代码段的正确性和可靠性, 需要实时的对代码段进行检测, 同时, 如果发现代码段错误, 应该采取一些措施来时安全计算机不会产生错误的输出。 目前 已有一些提高应用软件代码段可靠性的方法, 但这些方法有以下不足 : 0004 1、 对应用程序本身进行校验, 不能动态在线的对代码段进行检测 ; 0005 2、 难以实时地发现因。
16、内存系统性故障引起代码段异常 ; 0006 3、 在发现代码段故障后, 对系统应用软件功能进行恢复时, 往往中断业务的时间 比较长, 其中恢复业务消耗时间长达秒级甚至分钟级 ; 0007 4、 通过系统自身软件对代码段副本进行一致性比较, 来进行代码段检测, 运算量 大, 占用系统资源, 实时性不好 ; 0008 5、 自身软件文件损坏后, 在现场对嵌入式板卡的设备进行恢复, 需要采用专用设 备对板卡的 Flash 进行烧写, 操作繁琐, 耗时长达秒级甚至分钟级。 发明内容 0009 本发明的目的就是为了克服上述现有技术存在的缺陷而提供一种嵌入式软件运 行时故障的在线自检与切片恢复方法, 解决。
17、了应用程序代码段数据出现异常的问题, 并且 保证了应用程序的可靠性和安全性。 0010 本发明的目的可以通过以下技术方案来实现 : 0011 一种嵌入式软件运行时故障的在线自检与切片恢复方法, 其特征在于, 该方法采 用离线与在线相结合的代码运行时故障检测机制, 同时提供在线恢复代码段数据, 所述的 恢复方法具体包括以下步骤 : 0012 1) 代码段数据离线校验处理阶段 ; 0013 2) 代码段实时检测与在线恢复阶段。 0014 所述的步骤 1) 代码段数据离线校验处理阶段具体为 : 0015 a1) 在应用程序的代码编码完成后, 放入工作站 PC 机上进行交叉编译, 生成可在 嵌入式设备。
18、上运行的 ELF 格式的可执行文件 HPM.out ; 说 明 书 CN 104298599 A 5 2/7 页 6 0016 a2) 通过 ELF 文件离线解析工具 OffLineParseElfTool 来获取文件 HPM.out 的解 析 ELF 信息头数据, 从中计算段头数据总表的偏移与大小 ; 0017 a3)OffLineParseElfTool 在头数据总表中解析代码段信息头数据, 计算代码段在 ELF 文件中的偏移与大小, 然后从对应位置获取代码段数据 ; 0018 a4)OffLineParseElfTool 根据代码段数据和 10 组冗余码, 生成 10 组离线校验数 据 。
19、; 0019 a5) 利用 VHDL 语言编写校验算法逻辑, 并生成相应文件, 将相应文件和离线生成 的校验数据码数据烧写到 CPLD 中 ; 0020 a6)通过ftp工具将可执行应用程序文件HPM.out进行远程下载, 或在线烧写到嵌 入式设备的板载 Flash 中。 0021 在线烧写前, 备份较老版本的应用程序文件为 HPM.old, 如果烧写失败, 从 HPM. old 文件恢复, 使用老版本应用程序。 0022 所述的步骤 2) 代码段实时检测与在线恢复阶段具体为 : 0023 b1) 嵌入式设备上电后, 初始化硬件设备, 并对 CPLD 模块进行初始化, 如果初始化 成功继续步骤。
20、 b2), 否则执行步骤 b11) ; 0024 b2) 嵌入式设备的操作系统开始初始化, 挂载 Flash 文件系统, 并且创建系统初始 化任务 InitTask, 如果初始化成功继续步骤 b3), 否则执行步骤 b11) ; 0025 b3) 初始化任务 InitTask 从 Flash 文件系统的加载可执行文件 HPM.out, 加载到 指定的内存区域 ; InitTask 创建恢复任务 RecoverTask、 主处理任务 MainTask 和网络任务 NetTask, 并挂起恢复任务 RecoverTask ; InitTask 获取对应代码段在内存区域中地址和大 小, 然后并从中解。
21、析出代码段数据, 并通过 CPLD 根据冗余码来生成校验码, 与离线生成的 校验码比较, 如果校验通过继续步骤 b4), 否则执行步骤 b11) ; 0026 b4)MainTask 对嵌入式设备的系统数据进行逻辑处理, 并执行步骤 b5) ; 0027 b5) 判断定时中断是否触发, 如果触发执行步骤 b6), 否则返回执行步骤 b4) ; 0028 b6) 定时中断处理函数通过锁住操作系统操作来禁止任务调度和响应中断, 然后 通过 CPLD 根据冗余码来生成校验码, 并与离线生成的校验码比较, 如果校验通过继续步骤 b7), 否则执行步骤 b8) ; 0029 b7) 解锁操作系统操作来恢。
22、复任务调度和响应中断, 并返回执行步骤 b4) ; 0030 b8) 获取主处理任务 MainTask 运行参数与系统状态变量切片值, 并将这些变量切 片值保存到系统内存的高内存的教育数据区, 同时对该教育数据进行 CRC( 循环冗余校验 码 ) 处理, 并保存 CRC 值, 供教育恢复时, 校验数据使用, 继续步骤 b9) ; 0031 b9) 调用在线恢复代码段功能模块, 来恢复应用程序的代码段数据, 判断如果恢复 成功, 执行步骤 b10), 否则执行步骤 b11) ; 0032 b10) 从教育数据区恢复主处理任务 MainTask 运行参数与系统状态变量并返回执 行步骤 b4) ; 。
23、0033 b11) 控制板卡前面板上 LED 闪烁, 来进行告警, 并持续闪烁 3 分钟后, 嵌入式设备 重启。 0034 所述的步骤 b5) 中的定时中断的周期为 500ms。 0035 6. 根据权利要求 4 所述的一种嵌入式软件运行时故障的在线自检与切片恢复方 说 明 书 CN 104298599 A 6 3/7 页 7 法, 其特征在于, 所述的在线恢复代码段功能模块具体工作流程如下 : 0036 c1) 解锁操作系统, 激活创建恢复任务 RecoverTask, RecoverTask 开始运行, 并关 闭 CPLD 中定时器, 继续步骤 c2) ; 0037 c2) 恢复任务 Re。
24、coverTask 删除 MainTask 和 NetTask, 并且清除 MainTask 和 NetTask 的控制块信息, 删除 HPM.out 模块加载信息, 继续步骤 c3) ; 0038 c3) 恢复任务 RecoverTask 从 Flash 文件系统的加载可执行文件 HPM.out, 从中解 析出代码段数据, 并通过 CPLD 根据冗余码来生成校验码, 与离线生成的校验码比较, 如果 校验通过继续步骤 c6), 否则执行步骤 c4) ; 0039 c4)恢复任务RecoverTask通过FTP协议从远程工作站PC机下载可执行文件HPM. out, 从中解析出代码段数据, 并通过。
25、 CPLD 根据冗余码来生成校验码, 与离线生成的校验码 比较, 继续步骤 c5) ; 0040 c5) 判断校验码是否一致, 如果校验码一致继续步骤 c6), 否则设置 g_RECOVER 为 1, 并执行步骤 c8) ; 0041 c6) 恢复任务 RecoverTask 加载可执行文件 HPM.out, 加载到指定的内存区域 ; 然 后创建主处理任务 MainTask 和网络任务 NetTask, 并挂起恢复任务 RecoverTask ; 0042 c7) 判断是否加载成功, 如果成功, 设置 g_RECOVER 为 0, 否则, 设置 g_RECOVER 为 1, 然后执行步骤 c8。
26、) ; 0043 c8) 打开 CPLD 中的定时器, 并返回。 0044 一种嵌入式软件运行时故障的在线自检与切片恢复方法的装置, 其特征在于, 包 括远程工作站PC机和嵌入式设备, 该嵌入式设备包括主处理模块、 电源模块和CPLD逻辑模 块, 所述的主处理模块包括微处理器以及分别与微处理器连接的内存模块、 Flash 模块、 网 络模块和看门狗模块, 所述的 CPLD 逻辑模块包括分别与微处理器连接的 HSD(High Speed Detection) 模块、 LED 指示模块、 定时器模块, 所述的网络模块与远程工作站 PC 机连接 ; 0045 所述的主处理模块通过网络模块从外部设备接。
27、收网络数据包, 然后由微处理器负 责对接收的数据进行逻辑处理, 所述的 CPLD 模块从主处理模块接收数据, 并根据预先设计 的冗余码生成在线校验码, 所述的 HSD 模块负责生成在线校验码, 并比较在线校验码和离 线校验码的一致性。 0046 所述的远程工作站 PC 机依次通过网络连接线、 路由设备、 以太网与嵌入式设备连 接。 0047 所述的电源模块将输入的 220V 电压转换成 24V 的电压, 给主处理模块、 CPLD 模块 供电。 0048 与现有技术相比, 本发明具有以下优点 : 0049 1、 采用硬件逻辑进行代码段检测, 检测速度高、 不占用微处理器资源 ; 0050 2、 。
28、采用多组冗余码数据, 通过离线工具生成校验码, 与在线生成校验码一致性比 较, 提高了检测结果的可靠性 ; 0051 3、 以 500ms 为周期进行代码段在线检测, 检测周期短, 提高了系统的可靠性 ; 0052 4、 采用代码段切片在线恢复技术, 不需要重启设备, 能最低限度的降低对业务的 影响 ; 0053 5、 采用切片参数再教育技术, 保持代码恢复前与代码恢复后, 系统处理数据的一 说 明 书 CN 104298599 A 7 4/7 页 8 致性, 可以方便快捷重新开始处理业务, 耗时为 100 秒, 提高了设备的可用性。 0054 6、 通过在 Flash 文件系统中加载可执行文。
29、件和网络下载可执行文件相结合, 加强 了检测与恢复流程的稳定性和可靠性。 0055 7、 通过远程下载应用程序文件, 方便快捷, 中断业务时间为 3 分钟, 提高了系统的 可用性。 附图说明 0056 图 1 为离线处理的流程图 ; 0057 图 2 为代码段在线检测的流程图 ; 0058 图 3 为代码段在线恢复的流程图 ; 0059 图 4 为本发明的装置结构示意图。 具体实施方式 0060 下面结合附图和具体实施例对本发明进行详细说明。 0061 图 1、 图 2、 图 3 所示为本发明的具体流程。结合图 1、 图 2、 图 3 和图 4 对以下各步 骤进行详细描述 : 0062 如图 。
30、1 所示, 一种嵌入式软件运行时故障的在线自检与切片恢复方法的代码段数 据离线校验处理阶段, 该阶段包括以下步骤 : 0063 1) 在应用程序的代码编码完成后, 在工作站 PC 机上进行交叉编译, 生成可以在嵌 入式设备上运行的 ELF 格式的可执行文件 HPM.out ; 0064 2)通过ELF文件离线解析工具OffLineParseElfTool来获取文件HPM.out的解析 ELF 信息头数据, 从中计算段头数据总表的偏移与大小 ; 0065 3)OffLineParseElfTool 在头数据总表中解析代码段信息头数据, 计算代码段在 ELF 文件中的偏移与大小, 然后从对应位置获。
31、取代码段数据 ; 0066 4)OffLineParseElfTool 根据代码段数据和 10 组冗余码, 生成 10 组离线校验数 据 ; 0067 5) 利用 VHDL 语言编写校验算法逻辑, 并生成相应文件, 将相应文件和离线生成的 校验数据码数据烧写到 CPLD 中。 0068 6)通过ftp工具将可执行应用程序文件HPM.out, 远程下载, 并在线烧写到嵌入式 设备的板载Flash中。 在烧写前, 备份较老版本的应用程序文件为HPM.old, 如果烧写失败, 从 HPM.old 文件恢复, 使用老版本应用程序。 0069 如图 2 所示, 一种嵌入式的代码运行时在线自检与恢复方法的。
32、代码段实时检测与 在线恢复阶段, 该阶段包括以下步骤 : 0070 101) 嵌入式设备上电后, 开始初始化 CPU、 RAM、 Flash、 网络芯片等硬件, 并对 CPLD 模块进行初始化, 如果初始化成功继续步骤 102), 否则执行步骤 111) ; 0071 102) 嵌入式设备的操作系统开始初始化, 挂载 Flash 文件系统, 并且创建系统初 始化任务 InitTask, 如果初始化成功继续步骤 103), 否则执行步骤 111) ; 0072 103) 初始化任务 InitTask 从 Flash 文件系统的加载可执行文件 HPM.out, 加载到 指定的内存区域 : Init。
33、Task 创建恢复任务 RecoverTask、 主处理任务 MainTask 和网络任务 说 明 书 CN 104298599 A 8 5/7 页 9 NetTask, 并挂起恢复任务 RecoverTask ; InitTask 获取对应代码段在内存区域中地址和大 小, 然后并从中解析出代码段数据, 并通过 CPLD 根据冗余码来生成校验码, 与离线生成的 校验码比较, 如果校验通过继续步骤 104), 否则执行步骤 111) ; 0073 104)MainTask 对嵌入式设备的系统数据进行逻辑处理, 并执行步骤 105) ; 0074 105) 判断周期为 500ms 的定时中断是否触。
34、发, 如果触发执行步骤 106), 否则返回 执行步骤 104) ; 0075 106) 定时中断处理函数通过锁住操作系统操作来禁止任务调度和响应中断, 然后 通过 CPLD 根据冗余码来生成校验码, 并与离线生成的校验码比较, 如果校验通过继续步骤 107), 否则执行步骤 108) ; 0076 107) 解锁操作系统操作来恢复任务调度和响应中断, 并返回执行步骤 104) ; 0077 108) 获取主处理任务 MainTask 运行参数与系统状态变量值, 并将这些变量值保 存到系统内存的高内存的教育数据区, 继续步骤 109) ; 0078 109) 调用在线恢复代码段功能模块, 来恢。
35、复应用程序的代码段数据, 判断如果恢 复成功, 执行步骤 110), 否则执行步骤 111) ; 0079 110) 从教育数据区恢复主处理任务 MainTask 运行参数与系统状态变量并返回执 行步骤 4) ; 0080 111) 控制板卡前面板上 LED 闪烁, 来进行告警, 并持续闪烁 3 分钟后, 嵌入式设备 重启。 0081 如图 3 所示, 一种嵌入式软件运行时故障的在线自检与切片恢复方法的代码段实 时检测与在线恢复阶段, 包含在线恢复代码段功能模块执行子阶段, 该子阶段包括以下步 骤 : 0082 201) 解锁操作系统, 激活创建恢复任务 RecoverTask, Recove。
36、rTask 开始运行, 并 关闭 CPLD 中定时器, 继续步骤 202) ; 0083 202) 恢复任务 RecoverTask 删除 MainTask 和 NetTask, 并且清除 MainTask 和 NetTask 的控制块信息, 删除 HPM.out 模块加载信息。继续步骤 203) ; 0084 203) 恢复任务 RecoverTask 从 Flash 文件系统的加载可执行文件 HPM.out, 从中 解析出代码段数据, 并通过 CPLD 根据冗余码来生成校验码, 与离线生成的校验码比较, 如 果校验通过继续步骤 206), 否则执行步骤 204) ; 0085 204) 恢。
37、复任务 RecoverTask 通过 FTP 协议从工作站 PC 机下载可执行文件 HPM. out, 从中解析出代码段数据, 并通过 CPLD 根据冗余码来生成校验码, 与离线生成的校验码 比较 ; 0086 205) 判断校验码是否一致, 如果校验码一致继续步骤 206), 否则设置 g_RECOVER 为 1, 并执行步骤 208) ; 0087 206) 恢复任务 RecoverTask 加载可执行文件 HPMout, 加载到指定的内存区域 ; 然 后创建主处理任务 MainTask 和网络任务 NetTask, 并挂起恢复任务 RecoverTask ; 0088 207) 判断是否。
38、加载成功, 如果成功, 设置 g_RECOVER 为 0, 否则, 设置 g_RECOVER 为 1, 然后执行步骤 208) ; 0089 208) 打开 CPLD 中的定时器, 并返回。 0090 (2) 如图 4 所示, 一种嵌入式软件运行时故障的在线自检与切片恢复装置, 该装置 说 明 书 CN 104298599 A 9 6/7 页 10 包括远程工作站 PC 机 f 和嵌入式设备。所述远程工作站 PC 机为工业计算机。所述的嵌入 式设备主要由主处理模块 a、 CPLD 逻辑模块 b 和电源模块 c 组成, 所述的主处理模块 a 由微 处理器a1、 内存模块a3、 Flash模块a5。
39、、 网络模块a2、 看门狗模块a4组成, 所述CPLD逻辑模 块 b 主要由 HSD(High Speed Detection) 模块 bl、 LED 指示模块 b2、 定时器模块 b3 组成, 所述的电源模块 c 给主处理模块 a、 CPLD 模块 b 供电, 微处理器 al 通过本地系统总线与主 处理模块 a 其他子模块 (a2, a3, a4, a5) 以及 CPLD 模块 b 连接, 远程工作站 PC 机 f 通过网 络连接线 e、 路由设备 d、 以太网 g 与嵌入式设备连接。 0091 主处理模块 a 通过网络模块 a2 从外部设备接收网络数据包, 然后由微处理器 a1 负责对接收。
40、的数据进行逻辑处理。 网络模块a2采用1000M速率的网络芯片, 微处理器a1的 型号为 ARM(Cortex-R)。内存模块 a3 为嵌入式设备运行提供内存空间。Flash 模块 a5 主 要用于 Flash 文件系统, 存储可执行文件以及其他配置文件。看门狗模块 a4 主要负责系统 监控功能, 防止程序进入异常死循环状态。 0092 CPLD模块b从主处理模块a接收数据, 并根据预先设计的冗余码生成在线校验码。 HSD 模块 b1 负责生成在线校验码, 并比较在线校验码和离线校验码的一致性。LED 指示模 块 b2 为多色 LED 灯, 通过闪烁不同的颜色表示不同的告警内容。定时器模块 b。
41、3 主要负责 产生定时器中断信号, 中断信号的周期为 500ms。 0093 电源模块 c 将输入的 220V 电压转换成 24V 的电压, 给主处理模块 a、 CPLD 模块 b 供电。 0094 主处理模块 a 上运行的操作系统为嵌入式 vxWorks 操作系统, HPM.out 软件采用 标准 C 语言进行软件开发。 0095 CPLD 模块 b 中的逻辑功能通过 VHDL 硬件逻辑语言开发。 0096 远程工作站 PC 机 f 上运行的操作系统为 Microsoft Windows XP Professional。 网络连接线 e 为带屏蔽层的双绞线, 路由设备 d 为思科路由器设备。。
42、 0097 离线解析工具 OffLineParseElfTool 采用 C+ 语言开发, 软件开发环境为微软公 司的 Visual Studio 2010。 0098 可执行文件 HPM.out 主要包含主处理任务和网络任务的逻辑代码, HPM.out 的软 件结构如下 : 0099 1) 网络通信任务模块 0100 通过网络协议接收输入数据和发送输出数据, 数据包括状态信息和控制命令。 0101 2) 主处理任务模块 0102 对输入的数据进行逻辑处理, 并输出。 0103 在应用程序编译完成后, 会生成 ELF 格式的可执行文件 HPM.out, 利用离线解析工 具OffLineParse。
43、ElfTool从中提取出代码段数据, 利用校验码生成算法结合设计好的10组 冗余码, 来生成10组离线校验码, 并将生成的10组相异的校验码, 存储到对应的文件中。 10 组冗余码如表 1 所示 : 表 1 0104 编号 冗余码 10x1E0F2F03 说 明 书 CN 104298599 A 10 7/7 页 11 20x08D62F01 30x4F0F2F07 40xA3B2F07 50x1E0F2F8C 60xB5332FA1 70x1E0F2F3E 80x8DDB2FE9 90xF0072F3C 100x5DA42F25 。 说 明 书 CN 104298599 A 11 1/2 页 12 图 1 图 2 说 明 书 附 图 CN 104298599 A 12 2/2 页 13 图 3 图 4 说 明 书 附 图 CN 104298599 A 13 。