Linux系统在嵌入式DVR中的应用
扫描二维码
随时随地手机看文章
以强稳定性的优势,嵌入式DVR越来越被安防行业与广大客户所接受。嵌入式DVR的稳定性优势不光来自于硬件的低故障率,很大因素取决于嵌入式DVR中所采用的操作系统及应用软件的高稳定性,它所选用的软件平台起着至关重要的作用。
从国内嵌入式DVR的领军人物海康威视公司在嵌入式DVR的开发历程上,可清晰地看出Linux系统在嵌入式DVR中的地位日益凸显出来。海康威视公司第一代嵌入式DVR的研发初期,在确定以Samsung S3C2510加Ti的DM642作为其硬件平台的时候,采用了Linux与VxWorks同时开发,相互参照、评估,最终主要由于基于对WindRiver 的VxWorks商用软件的信赖,选用了VxWorks作为其操作系统及软件开发平台;在第二代嵌入式DVR技术选型时,定下了以Ti的Davinci平台作为硬件平台,由于Linux提供了对该平台的实现,而VxWorks不能提供该硬件平台的支持,海康威视公司选择性地将软件平台转向了Linux系统;而在第三代嵌入式DVR的预言期间,就明确、肯定地将Linux定为海康威视公司下一代嵌入式DVR的系统平台。不难看出,Linux凭着其自身的特点,各方面的优势逐步成为了嵌入式DVR软件平台的主角。
当今非手机类的嵌入式产品中,主流的操作系统有VxWorks,各种版本的Linux、uCOS-II、uC/OS,Qnx等等。其中最著名的VxWorks是美国Wind River公司推出的一种嵌入式强实时操作系统,自20世纪80年代问世以来,以其高性能、高可靠性、高实时性等特点成为实时操作系统中最具特色的系统。尤其以成功应用于美国军方、国防部、航空航天项目如火星探测车和爱国者导弹等高科技产品而声名鹊起。自1996年登陆中国,短短几年就已成为国防、工业自动化、网络通信、航空航天、医疗仪器、状态监控以及消费电子产品等嵌入式实时领域的首选操作系统。
VxWorks 作为商用软件,以其实时性、可靠稳定性著称于世,也因此被广泛用在第一代的嵌入式DVR系统中。但正是它所具有的这些特性也必定限制了其发展,因为是商用软件,所以有专业的、全职的技术人员进行维护,虽然WindRiver是一家非常成功的嵌入式软件公司,也同时可以拥有相当庞大的研发队伍,但针对现代IT迅猛发展所带来的众多的硬件平台、海量的软件、协议而言,那是相当有限的,所以造成VxWorks系统现在所能支持的硬件平台有限,只能支持一些主流厂家的典型平台,完全不能和日新月异的硬件平台所同步,也违背了IT产业著名的摩尔定理。为了保证其可靠性,兼顾实时性的特点,WindRiver在集成软件模块时非常谨慎,发展也就必然缓慢,造成不能对众多的软件协议实现及时地支持。
而且针对DVR系统,主要实现视音频的编码录制任务,对于VxWorks推崇的实时特性并不能得到有效利用,在DVR系统中,每秒25帧、50场及20毫秒视频编码的实际处理任务都是由DSP或ASIC芯片等专用芯片完成,而CPU上运行的操作系统所负责的仅仅是应用级的程序调度,VxWorks所能达到的微时限(Deadline)特性对于DVR所需的应用任务来说简直是牛刀杀鸡。而uCOS-II、uC/OS,Qnx等操作系统由于其本身产生的目的、设计的特性、维护运营的模式都更适合于纯的工业控制领域。
Linux自诞生那天开始,就以开源自由的特性吸引了全世界成千上万优秀的技术人员投入到Linux软件的开发中来,使Linux系统得以高速发展,也使得Linux可以支持市场上绝大多数的硬件平台和各式各样的软件协议,保持着高度一致的同步性。在Linux的应用初期,Linux的自由开放特性也使得不少商家对其产生很多的误解,认为Linux就是不需要投入的!“开源意味着自由,但并不是成本上的免费,尽管有时候的确免费。”位于加利福尼亚州San Mateo的开源软件开发公司Untangle 的CTO Dirk Morris所说的话给了Linux应用一个很好的参见。开源软件具有灵活性、可靠性、安全以及易于采用等诸多特点,但免费不能算特点,至少不是主要特点。由于开源软件参与的人员来自于世界各地,不同行业,不同领域,不同目的,开发质量也良莠不齐,获得的技术支持很有限,使得开源产品通常都不是一个完整的产品,也一定程度上造成使用Linux会遇到很多困难。因此我们一定不要把开源简单地看成免费软件,而应该把它视为自由软件,自由软件意味着用户可以自由地运行、拷贝、分发、研究和修改软件。开源的本质是为程序员提供自由地查看和修改代码的能力,让程序员可以学习和借鉴别的程序员的设计思路,然后进一步扩展和完善该产品,正是这个流程让Linux功能越来越强大,性能越来越稳定。
随着Linux的日益成熟,使用者对其有了进一步深入的了解,它所拥有的自由、开源本性,使得Linux具有广泛的硬件支持特性、不断自我修复的完善性、强大的软件协议特别是网络的支持功能,也必定决定了其将用作各式各样的嵌入式系统中,嵌入式DVR当然也不会例外。而且白热化的DVR市场,使得成本因素、稳定因素、灵活因素越来越被各DVR用户所看重,因此Linux也就自然成为了现代嵌入式DVR中的主角。为了提升嵌入式DVR的竞争力,现在嵌入式DVR产品的比拼已不局限于图像编码的压缩率、清晰度等基本的视频特性上,更关注于嵌入式DVR作为一个系统所能提供的服务,因此而带来了各式各样且非常新颖的需求,这种需求也只有具有灵活特性和广大资源的Linux平台才能完成,对于某个功能,比如客户想要在DVR上加上SIP网关的功能,对于VxWorks这样的封闭系统是很难实现的,而对于Linux来讲,只要在主流的PC平台上实现了,那对于嵌入式DVR平台来讲,仅仅是一个交叉编译的修正实现。若要对某个新颖硬件的支持,比如某款新的CPU推出,或某个WiFi功能的支持,各厂家、协议组织都会推出相应的Linux的示例程序,得到相应的源代码,我们要做的大多数仅仅是个平移实现的工作。
从应用模式上分,适合于嵌入式系统的Linux主要有三类,支持不含MMU单元CPU平台的uClinux,通用内核加上相应硬件平台补丁的Linux(如Montavista,WindRiver提供的Linux),注重于强实时性的RT-Linux。因DVR自身对实时性要求不高,所以RT-Linux类的linux不太适用于我们的行业,更多地依据所选择的硬件平台特性而选择前两种Linux,如在海康威视公司第一代DVR系统中就采用了uClinux,第二、第三代DVR就采用了通用的Linux系统。
在嵌入式DVR中实现Linux系统主要分为几个部分:引导装载程序、Linux内核、Linux的根文件系统及相应的应用程序。
引导装载程序通常是在任何硬件上执行的第一段代码,就像普通PC机上所运行的BIOS程序,时下嵌入式系统中比较流行的引导装载程序有u-boot、vivi等,做的工作、实现的功能大致相仿,主要实现初始化 CPU、内存、Flash、串行端口、网口等基本的外设,设置参数区域并构造参数结构和标记,从Flash加载内核程序并最终跳转到内核的开始。
Linux内核版本的更新速度非常快,但Linux的内核版本发行同Linux对嵌入式处理器支持程度的发展是不同步的,因此,需要对特定的处理器体系结构选择合适的内核,并且根据其硬件功能部件加上相应的补丁。为配合现在的嵌入DVR所应用的硬件平台,如ARM9 或PowerPC,以及相应的硬件外设,如无线网卡、USB2.0、SD卡等等流行的外设应用,建议选用较新的2.6版本的Linux内核。然后针对不同的硬件模块、应用模块,对内核进行裁减、编译、打包。
因嵌入式DVR中所应用的存储空间(Flash芯片的容量)一般都较小,在构建整个系统的根文件系统时,必须考虑节省空间,且结合DVR本身应用的相对单一性,一般都使用busybox、uClibc这样的精简模块构成DVR系统的软件环境。
在嵌入式DVR系统中最主要的应用软件当然是对压缩的视音频数据的采集、存储、分发,特别是一些网络协议的实现等相应的特性功能。在应有系统里还有很重要的一块就是DVR的GUI系统,嵌入式DVR与PC-DVR相比较弱的一环也在于界面的相对不友好性,所以提供一个较好的GUI系统对于能否实现一款易用、有竞争力的DVR产品起着关键的作用。国内飞漫公司提供的MiniGUI就是个很不错的选择,基于MiniGUI平台,可以提供方便开发、易于集成的良好的用户界面。
可以预见,在今后的嵌入式DVR产品中,Linux系统必将占据绝对的领导地位。由于Linux系统的广泛应用,也必将使嵌入式DVR的开发、销售模式得到变革性的更新,嵌入式DVR的应用会上升到一个全新的高度。