基于Hi2011的DVB-C机顶盒设计与实现 - [3]

Video.com.cn(视频网) 2008-06-03 14:50 来源: 电子产品世界

    数据库管理主要是为管理和访问各数据库里的数据,数据库管理分为频点数据库管理、节目数据库管理和系统数据库管理三个方面。频点数据库管理主要是完成对频点数据的管理,包括频点信息单元和数据块头、链表两个方面。节目数据库管理主要管理节目信息单元和数据块头、链表,由于节目数据库的数据量十分庞大,因此,在定义节目数据库的结构时,不能将节目信息置于一个结构中,以免超出编译器的64KB的界线。

    3.5搜台模块

    搜台十分重要,不仅要找出频道列表,还要解析出一定程度的各频道的相关信息。搜台算法分为手动搜台和自动搜台算法。因为自动搜台是通过手动搜台对频率的for循环来实现的,所以研究手动搜台。在搜台之前,首先搜索各种节目信息表,因此搜索各种表时的顺序十分重要,这将影响到搜索节目的时间和效率。在搜台时,有以下几种搜索表:PAT:提供PMT的pid,所以要先于PMT的搜索;PMT:提供每个节目(service_id)的包括音视频pid等信息;SDT:提供节目的属性信息,包括节目名字、节目运行状态等属性,在PAT之后搜索;NIT:提供网络的信息,包括网络标识号和网络名称,保存在频点数据库中;NIT还提供此网络下其他频点的参数信息,根据这个可以增加频点数据库。

    采用搜索算法思想为:首先调用驱动层封装好的相应API,设定Tuner频点、符号率等参数,根据数据更新的方式决定是否要清除ProgramList和TransponderList,然后搜索解析PAT表,PAT表解析完后对Program逐个解析PMT表和SDT表,所有的Program都完成后,解析NIT表获得网络信息,更新TransponderList,最后成功返回。

    3.6系统主函数实现

    μC/OS-II操作系统是使用标准C语言编写的,因此,整个系统软件中,又且仅有一个main()函数。在本系统中,也只有一个main()函数。在实现main()时,必须考虑系统的效率。在本系统设计中,采用了Task1来开启其他任务的方式,来减少主函数的代码,提高主函数的运行效率。其代码如下:

    main()

    {…

    OSInit();//操作系统初始化

    sys_init();//系统初始化

    System_mail_Set=OSMboxCreate(0);//系统消息初始化

    sysflag=OSFlagCreate(0x81,&err_main);//系统标志初始化

    OSTaskCreate(task1,(void*)&Task1_Stk[TASK1_STK_SIZE-1],TASK1_PRIO);//任务调度开始

    OSStart();//操作系统开始

    …}

    4.系统调试

    本系统的调试按照嵌入式系统基本原理和DVB-C的基本特点,将调试分为主板调试、系统软硬件调试和系统软硬件验证等。

    硬件方面,主要是验证硬件电路与设计电路的一致性和电路的各个输入/输出口的电流、电压特性,另外就是测试硬件的抗干扰能力和稳定可靠性。在调试时,采用外加干扰源的方式,测试控制器的抗干扰能力。

    软件方面,主要是验证软件的正确性。将软件下载到DVB-C的Flash中,并连接有线电视信号到DVB-C,再连接到模拟电视机上,然后观看通过遥控器测试验证软件的正确性。

    本文创新点:

    本文提出了DVB-C机顶盒软件层次结构和软件模块层次结构,这些结构有效地提高了系统软件开发效率。通过基于Hi2011的DVB-C数字电视机顶盒研发项目的应用设计,研究实践表明,本文从系统的软件层次和结构、搜台算法和数据库构建的实现等方面给出了较优的解决方案。

    本项目应用后已累计有21万元的经济效益。

评论】 【社区】 【 】 【关闭此页

发表评论

发表者:
内容: