发布时间:2010-11-14 阅读量:2775 来源: 发布人:
中心议题
* 提出了一种IPTV数字电视机顶盒的升级方案
* 给出了具体设计和实现
解决方案
* 将Flash从逻辑上划分为引导区、升级分区、工作分区和备份分区
* 直接对Flash的地址范围进行烧写
1 IPTV数字电视机顶盒概述
IPTV机顶盒的软件系统是一种基于嵌入式操作系统的嵌入式软件系统。在实际使用中,为了解决软件中存在的问题,提高机顶盒运行性能,进一步扩展机顶盒的功能,需要对机顶盒的软件系统及时进行更新。由于终端产品数量巨大,分布分散,所以一般采用远程自动升级的方法。
目前用于机顶盒的在线升级方案中,Flash大多采取主、备分区的方式,当机顶盒断电造成工作于主分区的系统崩溃时,从备份分区直接进入升级系统,恢复主系统。这样做虽然节省了Flash空间,在一定程度上解决了机顶盒升级时断电造成系统崩溃的问题,但是仍然存在不足。如果在对Flash进行多次擦写后备份分区出现坏块导致不可用时,只要断电,整个系统就会崩溃,并且无法自我修复,用户便无法正常体验IPTV业务。笔者针对这点不足进行了改进,设计了一套具备自愈机制的升级方案,通过改良Flash空间分配和Linux系统引导加载程序,使用户在断电时不能自我修复的情况下仍能够正常体验IPTV业务。并且,对实现后的升级方案进行了有针对性的测试,验证了该升级方案的可靠性和稳定性。
2基于嵌入式Linux的IPTV数字电视机顶盒系统
该机顶盒以美国德州仪器(TI)公司提供的ARM嵌入式系统作为硬件平台,包括一个以ARM为内核的处理器、存储器、外部接口与设备以及一个DSP。其中,Flash存储器是一种可在线多次擦除的非易失性存储器,承载嵌入式系统中的主要数据和程序。
基于嵌入式Linux的机顶盒软件系统由以下部分构成:引导加载程序(boot load program)、Linux内核和文件系统。首先,系统加电复位后,处理器将执行存放在复位地址处的引导加载程序。通过它可以初始化硬件设备、建立或检测内存空间的映射图,为运行操作系统提供基本的运行环境,并将所选的操作系统内核装载到RAM中合适的位置上。接着,运行内核启动参数,装载必须的驱动。实际上,Linux内核仅包含了基本的硬件驱动,在系统安装过程中会检测系统硬件信息,根据安装信息和系统硬件信息将一部分设备驱动写入initrd中。这样在以后启动系统时,一部分设备驱动就放在initrd中来加载。当初始化开始后,执行系统初始化脚本,对系统进行基本的配置,挂载根文件系统及其他文件系统,并最终运行操作系统。
3 IPTV数字电视机顶盒系统软件升级方案设计
机顶盒加电或复位后,首先根据版本信息判断机顶盒系统是否需要升级,如需升级,应能对系统内核和文件系统进行自动更新。然后,将需要更新的文件系统生成映像文件后烧写到Flash中。当机顶盒出现断电、系统崩溃等异常情况不能正常升级时,需要解决机顶盒自我修复问题,对机顶盒进行紧急升级。当紧急升级不成功时,为了保证用户仍能够正常使用所有业务,需要将机顶盒还原到升级之前正常使用的工作状态,使用户仍能够体验IPTV业务。
为了保证机顶盒在软件升级时自动恢复,保证用户正常使用,该升级方案将Flash从逻辑上划分为引导区、升级分区、工作分区和备份分区。将系统引导信息存入引导区,将只具有升级功能的系统存放到升级分区,将包含升级功能和正常业务功能的系统存入工作分区,将升级成功后工作分区中的系统备份放入备份分区。在该机顶盒的Flash中,系统的空间安排方式如图1所示。
将Flash空间划分为不同功能的分区,每个区的大小应该是Flash擦除块大小的整数倍。各分区可以单独地操作,每个分区有唯一标识的相关信息,包括相对Flash基地址的偏移量和分区大小。因此,可以直接对Flash的地址范围进行烧写。在Flash中存放内核时,在内核内容的前面加一段标识有效性的值,加载内核时就能够判断出从指定地址读取的内核是否有效,如果无效,则在升级标志中使用内核无效标识。
系统加电或复位后,所有CPU都会从某个地址开始执行,这是由处理器设计决定的。ARM处理器在复位时从地址0x00000000取第1条指令。嵌入式系统的开发板都要把板上的ROM或Flash映射到这个地址。因此,必须把引导加载程序存储在相应的Flash位置,系统加电后,CPU将首先执行这一步骤。初始化存储器系统是引导加载程序代码中的一个重要部分,许多操作系统在开始运行之前,希望了解存储器的组织情况。存储器系统初始化是通过软件设定Flash和RAM存储器的地址范围以及数据总线宽度。初始化存储器系统部分代码如下:
机顶盒终端启动时,首先将引导区信息载入内存,并根据标志有效性的值判断升级分区、工作分区和备份分区中的系统是否正常。使用中通常包括以下情况:
1)当判断出工作分区中的系统正常时,使用该系统从升级服务器下载升级文件,更新工作分区中的内核和文件系统。接着,更新升级分区中的系统,成功后擦写标志位将其值置为有效。然后,将升级成功的系统备份到备份分区中,成功后擦写标志位将其值置为有效,完成升级。重启后,从工作分区进入系统。
2)当判断出工作分区中的系统被破坏,而升级分区和备份分区中的系统正常时,可以使用升级分区中的系统进行紧急升级,从升级服务器下载正常运行的系统镜像,更新工作分区中的内核和文件系统,成功后擦写标志位将其值置为有效。机顶盒自动重启,使用工作分区中的系统从升级服务器下载升级软件,更新工作分区中的内核和文件系统,并且更新升级分区中的系统,成功后擦写标志位将其置为有效。然后,将升级成功的系统备份到备份分区中,成功后擦写标志位将其置为有效,完成升级。如果用户不想升级,可以直接从备份分区运行系统,体验IPTV业务。这样做有效地解决了机顶盒断电时的自我修复问题,同时,在自我修复不成功时,还能够回退到上一次正常使用的状态,不需要维护人员干预。
3)当判断出工作分区和升级分区中的系统都被破坏时,可以从备份分区运行系统,将系统恢复到被破坏之前的使用状态,保证用户的正常使用。若要升级,可以使用该系统从升级服务器下载正常运行的系统镜像来更新工作分区中的内核和文件系统,擦写标志位。接着,更新升级分区中的系统,成功后擦写标志位将其值置为有效。然后,将工作分区中正常状态下的系统重新备份到备份分区中,完成升级。
从以上3种情况可以看出,Flash中3个分区的系统构成了一套完整的自愈机制,保证了在各种情况下,机顶盒都能够完成自动升级,并且保证了用户总能够正常体验IPTV业务,因此该系统具有高可靠性和自我修复能力。
4 IPTV数字电视机顶盒系统的测试及分析
本方案采用交叉编译调试的方式,即编译调试环境建立在宿主机(即1台PC机)上,开发时使用宿主机上的交叉编译工具链(包括编译、汇编及连接工具)来生成目标板上运行的二进制代码,然后把可执行文件下载到目标机上运行。本方案中,以装有RedHat Linux操作系统的主机作为宿主机,该宿主机上安装了交叉编译工具链unicore-linux-gcc,当编译成功后,通过串口板和USB线下载到机顶盒开发板上运行,通过视频线将视频信号接入电视机进行用户体验测试,通过宿主机上串口通信程序来监视机顶盒串口输出信息并可以输入一些控制命令测试系统启动信息。调试环境如图2所示。
本测试方案的主要目的是进行针对性的测试,重点测试机顶盒断电后的自我恢复机制。通过对机顶盒正常升级时断电,恢复供电后,查看系统能否正常开启,能否重新升级。重新升级后,检查机顶盒配置页面中参数是否改变。若不能继续升级,则检查能否继续体验业务。然后进行多次断电、复位,检测本升级方案的稳定性和可靠性。图3为部分引导加载程序启动信息。
测试结果表明,本升级方案很好地解决了机顶盒自我修复问题,并实现了安全稳定的在线升级。不足之处在于,机顶盒只能在复位时启动升级程序来检测升级,不能够实时检测并且在不影响用户使用的情况下后台安装升级文件。
5小结
笔者在现有的机顶盒在线升级方案基础上,重新设计了基于嵌入式Linux机顶盒的升级方案,对其可靠性和稳定性方面进行了改进。实际测试表明,本升级方案对解决用户体验问题非常安全和有效。下一步的工作是改进机顶盒的开机升级机制,加强其对实时性的支持,使用户在体验业务的同时进行自动升级。
本期EIT探讨了从工业4.0到工业5.0的转变,以及即将实现的技术进步
CWGCE2025西部芯博会总规模将达到60000㎡,同期举办光电展+工业展+智能展+军工展等相类展会,将有更多集成电路行业新装备、新产品、新材料、新技术、新工艺、新趋势及新应用集中亮相
CWGCE2025西部芯博会总规模将达到60000㎡,同期举办光电展+工业展+智能展+军工展等相类展会,将有更多集成电路行业新装备、新产品、新材料、新技术、新工艺、新趋势及新应用集中亮相
CWGCE2025西部芯博会总规模将达到60000㎡,同期举办光电展+工业展+智能展+军工展等相类展会,将有更多集成电路行业新装备、新产品、新材料、新技术、新工艺、新趋势及新应用集中亮相
作为我国中西部地区历史最悠久的光电领域全产业链综合性年度盛会,规模和档次逐年增加和提高,CCWPE2025又新增了多个行业组织联办单位,同时将进一步扩容和丰富论坛内容。