当前位置:首页 > 工业控制 > 《机电信息》
[导读]摘要:电力终端需要经常升级换代,对应的软件也需要不断升级。现有操作系统不能满足当前功能、可靠性等的要求,故需要切换到LinuX系统,但切换系统会导致原有的软件程序不能使用,正常移植程序需要重构代码,工作量大,那么如何将程序快速移植到现有操作系统呢?现提出一种基于LinuX系统的电力终端代码移植方法,能够快速实现代码移植,加快软件开发进度,缩短项目周期。

引言

随着经济的快速发展,大型的居民小区、密集的商业中心越来越多,城市规模不断扩大,人口数量急剧增长。电力终端设备作为居民用户电量采集的核心设备,其品质尤为重要。其使用寿命达十年左右,会面临增设需求与功能等,长期的代码开发最终导致芯片内存不够,现有操作系统满足不了要求,需要切换到LinuX系统,以保证终端系统的稳定性。

如何快速地将代码移植到LinuX系统?本文提出了一种基于LinuX系统的电力终端代码移植方法。

1动态库Libtml的工作原理

1.1框架视图

动态库主要包含任务、FTL模拟层、消息的相关操作等功能,具体功能如图1所示。

1.2Libtml的作用

SP5老程序与SP6新程序在应用程序上是一样的,区别在于SP5运行在SX0S系统,而SP6运行在LinuX系统,如何做到快速移植程序?采用接口转换的方法,将老程序的接口通过Libtml转换到现有的LinuX系统,保证程序可以正常运行,节约开发资源。新程序与老程序的区别如图2所示。

基于LinuX系统的电力终端代码移植方法研究

使用Libtml动态库,有如下优势:

(1)直接将应用层代码应用到LinuX系统:

(2)SX0S与LinuX对应的接口不同,而Libtml动态库能实现接口的转接:

(3)有效提高了软件的稳定性:

(4)减少了代码量,提高了代码的复用率,便于后期维护。

2Libtml动态库的主要功能

2.1守护任务模块

2.1.1守护任务机制

守护任务用于通过周期性地调用9SP喂狗函数保障整个系统的可靠运行,另外守护任务监控系统中所有任务是否正常运行,如果某个任务运行过程中发生堵塞、死锁或其他异常,守护任务将正确做出判断并停止调用硬件喂狗函数,触发系统硬件复位。

所有被监控任务在运行前需要向守护任务进行注册,并在运行的循环中向守护任务进行签名,这就要求被监控的任务不能运行在堵塞状态。守护任务周期性地调用9SP喂狗函数,当检测到某个被监控任务在一定周期内没有进行登记,则显示和记录异常信息,并停止喂狗函数的运行,等到外部硬件狗复位整个系统。守护任务在停止硬件喂狗前,将等待所有注册任务安全退出,以保障系统的安全性。

2.1.2喂狗计数器

SP5的软喂狗时间为300B,但SP6的软喂狗时间为30B(经验值),硬喂狗时间为60B(经验值)。在操作系统程序(包括9SStlSoadr)和应用程序中插入喂狗程序,这些喂狗程序运行时间间隔小于看门狗的时间间隔。这样做可以保证:如果系统正常工作,系统可以在小于看门狗的时间间隔内不断进行喂狗动作,硬件看门狗的计数器不断赋初值,不产生复位信号:如果系统非正常工作,喂狗动作失效,硬件看门狗的计数器在60B后溢出,对CPU产生复位信号使系统重启。软喂狗操作类似。

2.2FTL模拟层

FTL(FloBhTronBlotiSnLoydr)是nSrfloBh的转换层,NTFL(NonaFloBhTronBlotiSnLoydr)是NonaFloBh的转换层。

FloBh是一种介质,写入前要先擦除,但FloBh是有寿命的,它不能无限次执行擦除操作。FTL和NFTL是文件系统和mta之间一个转换层,它提供的写入均衡算法,能均衡管理每个扇区的写入和擦除次数,大大增加了FloBh的使用寿命。它的特点有:

(l)体积小,性能强:

(2)坏块管理程序:

(3)垃圾回收功能:

(4)写入均衡算法:

(5)断电恢复功能。

ftl.c是FTL的代码源文件,nftl.c是NFTL的代码源文件。在Libtml动态库主要介绍ftl.c。

ftl.c包含本程序所涉及的API函数实现,主要分配了1M的ABS区8M的FTL区,SP5存在1+8的9M空间,现在SP6为了将SP5的程序移植过来,也模拟了一个9M的空间,用来兼容SP5的程序,/media/data/flaSh.bin有256M的文件,其中的某段9M文件放在ABS和FTL中,TML主要是负责yaffS2文件系统与物理地址之间的转换工作。ABS区一般存放备份数据不用改变的数据,而FTL负责将逻辑区块地址转换到物理区块地址。

FTL模拟层主要功能如图3所示。

2.3消息的相关操作

消息接口主要包含:消息队列的创建mSg0Create)、删除mSg0Delete)发送mSg0Send)接收mSg0Receive)及排队发送的消息数量mSg0NumMSgS)。消息队列的创建和删除主

要是对nОtemotpnОtfullmuteX三个信号量进行创建或删除的操作。下面对消息的发送和接收进行介绍。

2.3.1mSg0Send:消息发送

功能:将一条消息发送到队列。整体流程如图4所示。

①初始化消息结构体:

②判断这条消息是否为空,若为空则结束,反之继续:

③判断消息长度是否合法,合法则继续,反之执行步骤⑤:

④先释放muteX,然后获取nОtemotp,最后获取muteX:

⑤等待发送的消息量减1,将消息发到消息队列:

⑥判断消息队列中的firSt、laSt,并释放nОtemotp、muteX信号量:

⑦结束。

2.3.2mSg0Receive消息接收

功能:接收一条消息存储到队列。整体流程如图5所示。

①初始化消息结构体:

②判断消息结构体是否为空,为空则结束,反之继续:

③等待互斥信号量muteX:

④判断mbОX一firSt与mbОX一laSt是否相等,相等则继续,不等则执行步骤⑥:

⑤先释放muteX,然后获取nОtemotp,最后获取muteX:

⑥当接收消息的指针不为空时,将消息添加到队列:

⑦先释放nОtfull信号量,再释放muteX互斥信号量:

⑧结束。

3验证机制

程序移植后,终端程序可以正常运行,公司内部展开测试,并在江西、重庆等市场展开联调,均合格,在稳定性和可靠性等方面取得良好的结果。

4结语

总之,基于LinuX系统的电力终端代码移植方法,实现了程序的快速移植,保证了终端系统的稳定性可靠性,并为未来新的需求开发提供了保障。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: 驱动电源

在工业自动化蓬勃发展的当下,工业电机作为核心动力设备,其驱动电源的性能直接关系到整个系统的稳定性和可靠性。其中,反电动势抑制与过流保护是驱动电源设计中至关重要的两个环节,集成化方案的设计成为提升电机驱动性能的关键。

关键字: 工业电机 驱动电源

LED 驱动电源作为 LED 照明系统的 “心脏”,其稳定性直接决定了整个照明设备的使用寿命。然而,在实际应用中,LED 驱动电源易损坏的问题却十分常见,不仅增加了维护成本,还影响了用户体验。要解决这一问题,需从设计、生...

关键字: 驱动电源 照明系统 散热

根据LED驱动电源的公式,电感内电流波动大小和电感值成反比,输出纹波和输出电容值成反比。所以加大电感值和输出电容值可以减小纹波。

关键字: LED 设计 驱动电源

电动汽车(EV)作为新能源汽车的重要代表,正逐渐成为全球汽车产业的重要发展方向。电动汽车的核心技术之一是电机驱动控制系统,而绝缘栅双极型晶体管(IGBT)作为电机驱动系统中的关键元件,其性能直接影响到电动汽车的动力性能和...

关键字: 电动汽车 新能源 驱动电源

在现代城市建设中,街道及停车场照明作为基础设施的重要组成部分,其质量和效率直接关系到城市的公共安全、居民生活质量和能源利用效率。随着科技的进步,高亮度白光发光二极管(LED)因其独特的优势逐渐取代传统光源,成为大功率区域...

关键字: 发光二极管 驱动电源 LED

LED通用照明设计工程师会遇到许多挑战,如功率密度、功率因数校正(PFC)、空间受限和可靠性等。

关键字: LED 驱动电源 功率因数校正

在LED照明技术日益普及的今天,LED驱动电源的电磁干扰(EMI)问题成为了一个不可忽视的挑战。电磁干扰不仅会影响LED灯具的正常工作,还可能对周围电子设备造成不利影响,甚至引发系统故障。因此,采取有效的硬件措施来解决L...

关键字: LED照明技术 电磁干扰 驱动电源

开关电源具有效率高的特性,而且开关电源的变压器体积比串联稳压型电源的要小得多,电源电路比较整洁,整机重量也有所下降,所以,现在的LED驱动电源

关键字: LED 驱动电源 开关电源

LED驱动电源是把电源供应转换为特定的电压电流以驱动LED发光的电压转换器,通常情况下:LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: LED 隧道灯 驱动电源
关闭