APP下载

XPON终端个性化参数存储优化

2018-05-14余华

丝路视野 2018年20期
关键词:单板调用分区

【摘要】本文以Marvell芯片芳兰为例,介绍了Marvell芯片方案SFU产品FXXX中,将保存个性化参数的flash分区以可读写方式挂载为jffs2文件系统,在其中使用一个文件来保存个性化参数,通过操作该文件来对个性化参数进行存取。

【关键词】个性化参数;存储

一、概述

XPON产品的个性化参数主要用来对产品做个性化配置,可以设置CPUMAC地址、PON注册用的sn,password等参数,这些参数在产品出厂时进行设置,以后直接使用,且一般不再修改,因此通常在flash中划分一个分区来保存。单板在出厂时通过setmac命令来设置个性化参数,个性化参数被写入上述文件中,由于linux文件系统具有缓存功能,写文件成功之后实际内容不一定会及时同步到flash中,因此需要手动同步操作。生产线上发现,设置完个性化参数,使用sync命令进行同步操作,返回成功后,硬件复位,系统起来后个性化参数全部丢失了,这就导致单板启动之后无法正常工作。本文介绍了一种个性化参数存储优化的方式,通过这种方法,可以保证当个性化参数设置完成返回成功时,个性化参数已经写入到flash中。

二、芯片优化参数

Marvell芯片方案SFU产品FXXX使用NANDflash,在对flash进行分区规划时,单独分配一个分区用来存放个性化参数。在版本启动之后,对个性化参数分区以可读写方式挂载为jffs2文件系统。第一次获取个性化参数时,会在个性化参数分区创建一个个性化参数文件。

个性化参数结构体如下:

typedefstructTAG_PARAM_

{

unsignedshortwParamId;/个性化参数id/

unsignedshortwParamLen;/个性化参数长度/

unsignedshortwBufSize;/个性化参数数据区的长度/

unsignedcharcParamData[0];/个性化参数数据区首地址/

}TAG_PARAM_T;

个性化参数内容紧跟在个性化参数结构体之后,以字符串形式存取,用结构体中的cParamData来引用。

目前需要设置的个性化参数不多,个性化参数空间定义为4K字节。对个性化参数的操作包括设置、删除、获取和格式化。对个性化参数文件的操作是通过系统调用open、read和write来实现。

在该产品产测过程中发现,部分单板设置完个性化参数并且使用sync命令同步成功后,立即对单板硬件复位,当单板重新启动之后,个性化参数全部丢失。通过走查代码,我们推断应该是个性化参数并没有真正写入flash导致的。个性化参数是存放在文件中,当调用write函数向文件中写入并返回成功时,并不表示内容已经写入flash了,因为linux文件系统具有缓存功能,write函数只是将内容放到缓存中,并不立即写入到flash,操作系统会在适当的时候(定时、缓存达到一定比例、“脏”数据达到一定比例等条件下)将缓存中的内容同步到flash中。如果在缓存内容同步到flash之前,对单板进行硬件复位,那么,个性化参数就可能丢失。

但是,产线在设置个性化参数之后,使用了sync命令进行手动同步,为什么还是出现这种情况呢?我们对sync命令的实现进行分析,发现sync函数只是将所有修改过的块缓冲区排入写队列,然后就返回,它并不等待实际写磁盘操作结束。

三、参数优化

为了解决这个问题,必须保证设置的个性化参数及时写入flash。这里有方案如下。

代码中使用fsync系统调用实现同步功能,代替命令行执行sync命令。fsync系统调用强制内核把文件描述符fd所指定文件的所有脏缓冲区写到flash中。当对个性化参数文件进行write操作之后,调用fsync对当前文件进行同步,可以保证内容肯定会被写入flash。这样可以保证当调用setmac命令返回成功时,个性化参数内容已经写入到flash中。

四、结语

使用方案修改之后,当使用setmac设置完个性化参数,立即硬复位单板,启动之后检查设置的个性化参数,没有出现参数丢失的现象,该方案可以保证设置的个性化参数立即保存到flash中。

参考文献

[1]于文畅.无源光网络节能等关键技术的研究[D].北京:北京邮电大学,2011.

[2]江国舟.10Gbps以太无源光网络关键技术与应用研究[D].武汉:华中科技大学,2009

[3]余景文.10GEPON和10GGPON标准及最新进展[J].电信网技术,2010(08).

作者簡介:余华(1963—),男,本科,武汉通信指挥学院,研究方向:通信技术、通信服务与业务规划、网络规划等。

猜你喜欢

单板调用分区
向2004版看齐 自己调整WinRE恢复分区
剑指2022
339米济南第一高安装玻璃幕墙
安装Windows 10时创建分区错误该怎么办
单板滑雪 让生活变简单
大型数据库分区表研究
利用RFC技术实现SAP系统接口通信
神探出手,巧破分区离奇失踪案
基于Microsoft Agent的Word声像化处理
C++语言中函数参数传递方式剖析