基于TMS320DM365的网络摄像机底层软件应用
在DSP部分,软件由最底层的DSP/BIOSTM内核,内核上层是Codec engine,用于和ARM端的Linux通信,最顶层是图像处理箅法。针对图像处理算法,DaVinci框架提供了数字信号处理算法接口标准(XDAIS)和针对流媒体的XDM。所有符合XDAIS和XDM标准的图像处理算法包都可以被用于DaVinci的DSP中。并且在XDAIS和XDM中也包括了一套流程完整的基础的图像处理算法,用户可以按照其标准进行修改,或者自行重新开发。再加上由第三方开发的符合XDM标准的软件包,地丰富了整个DSP图像处理软件部分的资源。
ARM部分的软件系统使用基于Linux的嵌入式软件系统,软件结构如图4所示。整个系统基于Linux的实时操作系统,在Linux上需要加入文件系统、图形用户接口和任务管理,最顶层是应用层面的软件,在应用软件中DaVinci系统只提供常用的API。
Linux实时操作系统中,应用程序、引导加载程序(Boot Loader)、驱动程序(Driver)和操作系统(Operating System)的内核镜像都是相互独立的,可以单独编译修改。只要符合各个部分特有的接口和程序存放位置,就能被整个系统识别并且调用。引导程序是UBL和u-boot,用于初始化硬件系统,引导Linux操作系统的加载,完成内核文件加载后,将控制权交给操作系统。操作系统的内核镜像uImage,是一个基础的操作系统平台,调用驱动程序和应用程序,实现多线程机制,完成了系统调用等工作。驱动程序和应用程序是事先存储在操作系统特定文件夹内的,被操作系统Linux按顺序调用,开发者可以根据自己的需要自行修改。Linux内的文件系统主要提供内核中所有文件的存储、检索和更新等功能,同样包括了驱动程序和应用程序的文件操作。一般不提供保护和加密等安全机制。文件系统通过调用和命令方式提供文件的各种操作,主要包括设置、修改对文件和目录的用户权限;提供针对目录的创建、修改和删除等功能;提供针对文件的创建、打开、读写、关闭和撤销等功能。
对于应用层面的开发而言,并不需要考虑DSP部分的图像处理实现算法,直接将DSP部分作为一个黑箱进行处理,通过图像服务接口,从ARM部分通过语句进行调用。图像服务的接口提供了用户调用DSP中的图像处理程序的接口,整个服务接口使用Codec中间框架系统。Linux端的程序通过Codec引擎访问DSP处理器中的Codec Server。整个Codec框架包括了多种API和SPI,从软件角度可以看做是一个介于应用程序和DSP中图像处理算法之间的接口,如图5所示。这样ARM端的应用程序开发者,可以不用去考虑DSP中复杂的音视频算法。
这种ARM和DSP分开的软件结构,使得整个Davinci框架下的系统的软件开发被分成了四个部分:图像算法开发、Codec Server集成开发、CodecEngine集成开发和应用程序开发。基础的图像算法可以通过TI提供的CCS开发工具,图像的编码算法被存储为.lib的库文件。而Codec Server的开发是调用一系列的.lib算法库,实现各种库文件的对ARM部分的接口。Ciodec Engine是开发调用Codec Server的Stuh和Skelet on,完善整个图像处理功能的调用,而面向厂商或是使用者的应用程序的开发,只需要针对不同应用情况编译基于Linux的应用程序,其中图像处理算法等内容,作为黑箱供这些使用者调用。
3 网络摄像机底层软件
3.1 Linux系统内核
Linux系统内核使用的linux-2.6.32,相较于之前的版本增添了虚拟化内存、改进了文件系统、支持低传输延迟时间模式、内存控制器支持softlimits、支持S+Core架构、支持Intel Moorestown及其新的固件接口、支持运行时电源管理、以及新的驱动。常用的LINUX操作系RADHAT Enterprise 6,ubuntu-10.04.debian 6.稳定版本,这些都是使用linux-2.6.32内核。Linux-2.632作为ARM部分所使用的基层操作系统,在TI上也有提供,不过所提供的是一个非常宽泛的、适用于多种DaVinci框架内核产品的一个完整内核,无论是功能还是驱动都非常完善,但是缺点是启动时间长、容量大,所以我们必须存原有的TI系统内核的基础上进行一定的修改。整个修改基于Linux操作系统运行。
第一步是系统内核的精简开始。整个精简过程主要是在内核文件中删除自己不需要使用东西,如平台信息、芯片信息和驱动等,并且在Kconfig和Makefile里面将删除信息屏蔽。首先完成在内核系统中平台信息和芯片信息的文件删减,然后通过Makefile文件重新修改编译方法,经过重新编译以后,内核的精简已经完成,在Linux环境中使用tar jcf或tar zcf压缩的Linux内核,整个内核的大小下降到了51M,相当于原来尺寸的二分之一。当然可以化简的还可以包括了include和driver里面的一些不需要使用的驱动,但是由于大小并不是很大,所以这里也就没有去除。
第二步开始内核系统的配置。因为之前已经修改了内核系统文件的内容,选项即使都已经按照默认的方式配置完毕,但是存细部还需要一定的修改,使用make linux_config进入内核配置界面。首先需要修改的是“General setup”内的晶振,将原本27000000所表示27MHz时钟参数,改为硬件使用的24MHz时钟。然后在“Device Drivers”中配置NAND flash的大小、分块信息;USB的驱动设置一般设定为主机用于,识别U盘等其他USB设备;在选择视频传输的方式的时候,需要选择以太网络的“10M or 100M Ethernet MAC support”传输方式:并且开启I2C和串口功能等。
第三步检测核对程序内核,确保底层功能程序与硬件设备的匹配。最重要的machdavinci\dm365.c,内部都是管脚定义包括了I/O口的
复用。sound\soc\codecs有tlv320aicxx.c等音频芯片驱动:soc\davinci里有PCM、I2S等驱动。完成所有检测核对之后,用make指令编辑linux内核,生产一个bin文件,烧录到DM365处理器中,即可运行系统内核。
3.2 启动程序
Bootloader是嵌入式系统启动之后加载的第一段程序,也就是俗称的启动程序,这段代码一般用于初始化处理芯片,映射内存空间,完成系统基本硬件设置,为之后的操作系统内核提供运行环境及。所以这段程序的长度和运行时间都非常短,但对于整个系统来说是非常重要的。文中使用u-boot作为Bootloader程序,作为一种通用程序,它支持多种体系结构的处理器。其功能涵盖了flash烧写、操作系统内核启动等功能。整个u-boot的软件流程如图6所示。
底层 软件应用 摄像机 网络 TMS320DM365 基于 相关文章:
- 基于TMS320DM365的网络摄像机底层软件应用(08-11)
- 监控摄像机电源集中供电方案在实际应用中的取舍(09-18)
- 小议安防:谈网络摄像机选购与技术跃进(02-23)
- 热电制冷摄像机配套电源的研究(12-16)
- 微处理器在开关电源中的应用(07-26)