0、简介
0.1 什么是创龙DM81x开发板?
1、创龙基于ti达芬奇系列TMS320DM8148浮点DSP C674x + ARM Cortex-A8高性能视频处理器; 2、独立视频协处理器,支持3路720P30或1路1080P60视频编解码; 3、支持2路1080P60 FHD + 1路720P HD或5路720P SD或10路480P SD或20路480i D1视频输入; 4、支持2路16/24bit RGB/YCbCr + 1路8bit Y/C视频输入; 5、支持1路HDMI/VOUT 1080P60 + 1路1080P60 + 1路SD Composite/S-Video 6、视频输出,支持HDMI 1.3输出; 7、GPU:SGX530 3D图形引擎,支持OpenGLES 8、1.1/2.0、OpenVG 1.0和OpenMax API; 9、外设接口丰富,集成千兆网、PCIe、GPMC、USB 2.0 OTG、UART、SPI、I2C、DCAN、SATA、McASP、McBSP等接口; 10、满足高低温和振动要求,适合各种恶劣的工作环境; 11、体积极小,大小仅86mm*60mm; 12、工业级精密B2B连接器,0.5mm间距,稳定,易插拔,防反插,所有大数据接口使用高速连接器,保证信号完整性。 0.2 典型应用场景1、HD视频会议 2、视频监网DVR 3、IP网络摄像头 4、媒体播放器 5、数字标牌 6、移动医疗成像 7、网络投影仪 8、家用音频/视频设备 1、前言
虚拟系统是指通过虚拟软件,在已有的物理计算机下,模拟出具有完整的硬件功能,而且完全独立的一个虚拟计算机系统。通过虚拟机软件,你可以在一台物理计算机上模拟出两台或多台虚拟的计算机。用户可以在同一台计算机上安装多个Linux发行版、多个Windows版本,达到同时、同步、高效率的工作效率。 在不破坏已有计算机系统的前提下,广州创龙推荐使用虚拟系统,本文以"VMware14.1.1+Ubuntu12.04.1"为例子搭建AM8148开发环境(搭建方法同时适用于其他VMware和Ubuntu版本)。 2、安装虚拟机VMware14.1.1英文版请浏览光盘资料“用户手册”目录下《安装虚拟机VMware14.1.1》文档。 3、图解在虚拟机中安装Ubuntu12.04.1操作系统请浏览光盘资料“用户手册”目录下《基于虚拟机安装Ubuntu12.04.1操作系统》文档。 4、 磁盘格式化、分区、自动挂载如果用户需要使用额外磁盘,请浏览光盘资料“用户手册”目录下《Ubuntu磁盘格式化、分区、自动挂接方法》文档,如果不需要此功能,可以跳过本步骤。 5、安装Samba共享工具如果用户需要使用Samba共享工具功能,请浏览光盘资料“用户手册”目录下《Samba共享工具安装》文档,如果不需要此功能,可以跳过本步骤。 6、建立交叉编译环境安装包放在光盘的"Tools/Linux/CodeSourcery.tar.gz",Linux交叉编译工具链可用于编译uboot、内核、应用程序等。这里使用CodeSourcery的交叉编译工具arm-none-linux-gnueabi,把交叉编译工具代码拷贝到Ubuntu系统任意目录:
图一
1)解压CodeSourcery.tar.gz,输入如下命令后可以在用户目录下看到CodeSourcery如图所示:
图2
图3
(2)打开"/etc/profile"配置文件,将交叉编译工具链的路径加入系统环境变量中,执行如下命令: Host# sudo gedit /etc/profile 在profile文件最后添加以下语句(注意交叉编译工具链路径): export PATH=$PATH:/home/tronlong/CodeSourcery/Sourcery_G++_Lite/bin: 如下图,点击Save或者按"Ctrl+S"保存后退出。如下图所示:
图4
(3)使能交叉编译工具链,输入以下命令: Host# source /etc/profile
图5
重启虚拟机后,输入如下命令可查看版本号: Host# arm-none-linux-gnueabi-gcc -v 可以看到"gcc version 4.3.3"的版本号,说明交叉编译工具链已经安装成功。
图6
如果按上面步骤操作后,查询不了编译交叉编译工具版本,可以尝试重启PC电脑再查询编译工具版本号。 7 搭建TL-MCFW-RDK开发环境7.1简介TL-MCFW-RDK开发包由广州创龙基于TI的开发包整理推出,是一个完备的可用于应用软件开发的RDK(Reference Development Kit)包。开发的应用用于视频采集、显示、编解码以及算法处理等。 开发包的主体是MCFW软件框架,它底层协调了VPSS M3、VIDEO M3、DSP以及ARM多个核心进行数据处理。RDK中包含MCFW的整套源码,开发者可以基于其接口进行开发,也可以深入到框架内部进行适当修改调整。 7.2开发包编译7.2.1解压开发包源码路径:光盘资料/Tools/Linux/tl-mcfw-rdk-v1.5.tar.gz 将tl-mcfw-rdk-v1.5.tar.gz拷贝到Ubuntu目录下,解压开发包: Host# mkdir tl-mcfw-rdk //创建文件夹 Host# tar zxvf tl-mcfw-rdk-v1.5.tar.gz-C /home/tronlong/tl-mcfw-rdk //注意开发包名字以实际为准 解压完成将看到一个新的tl-mcfw-rdk目录。该目录编译完成即可作为开发包使用,进行应用程序开发。 7.2.2编译开发包进入tl-mcfw-rdk/dvr_rdk目录,执行以下命令进行编译 Host# cd dvr_rdk/ Host# make dvr_rdk DVR_RDK_BOARD_TYPE=DM814X_BCH_DVR
图7
编译完成结果如下:
图8
编译大约耗时20 ~ 30分钟,依据不同计算机的性能有所不同。 需要注意一点,如果编译构建完成后更改tl-mcfw-rdk的绝对路径,比如说更改其位置或者其上层目录被重命名,需要把旧文件删除,重新按照文档解压编译构建,不能直接用旧文件从新编译。具体的编译控制可以阅读 tl-mcfw-rdk/dvr_rdk 目录下的Makefile、makerules了解。 7.3开发包目录结构说明7.3.1顶层结构以下是dvr_rdk各文件夹目录解释 ├── dvr_rdk │ ├──bin --构建生成的可执行文件,包括 DSP 固件等。不用理会,使用原本提供的文件系统里的那些就可以。 │ ├──build --编译过程生成的中间文件。 │ ├──docs -- MCFW框架的文档。 │ ├──lib --编译生成的静态库。 │ ├──Makefile --顶层编译规则。 │ ├──mcfw -- MCFW框架源码。 └──ti_tools --支持 MCFW 框架实现的底层库以及工具。 ├── bios ├──cgt_a8 -- Code Generator Tool ├──cgt_dsp -- Code Generator Tool ├──cgt_m3 -- Code Generator Tool ├──codecs --编解码库。 ├── edma3lld ├── framework_components ├── hdvpss ├── ipc ├── linux_devkit ├──linux_lsp -- uboot、Linux Kernel。 ├── rpe ├── xdais └── xdc 7.3.2MCFW框架结构MCFW目录下的各文件说明: ├──interfaces --框架的对外接口。使用MCFW框架开发应用程序使用该目录下提供的接口。 │ ├── common_def/ │ ├──link_api/ --框架中可用的LINK的定义。 │ ├── ti_audio.h │ ├── ti_media_common_def.h │ ├── ti_media_error_def.h │ ├── ti_media_std.h │ ├──ti_vcap.h --图像采集模块。 │ ├──ti_vdec.h --图像解码模块。 │ ├──ti_vdis.h --图像显示模块。 │ ├── ti_vdis_timings.h │ ├──ti_venc.h --图像编码模块。 │ ├── ti_vgrpx.h │ └── ti_vsys.h ├──src_bios6 -- M3 VPSS、M3 VIDEO、DSP固件源码。 │ ├── alg │ ├── cfg │ ├── eth_offload │ ├── links_c6xdsp │ ├── links_common │ ├── links_m3video │ ├── links_m3vpss │ ├──main_app --三个固件的main入口。 │ ├── Makefile │ ├── MAKEFILE.MK │ └── utils ├── src_common │ └── utils └──src_linux --框架ARM Cortex-A8端的实现源码。 ├── devices ├── links ├── MAKEFILE.MK ├──mcfw_api -- interface中各大模块的对应实现。其中usecases目录下有一些由多个LINK组成的完整channel的示例。 ├── osa ├── osa_kermod └── utils 关于MCFW的详细介绍见文档:安装包/docs/Trainings/DVR_RDK_McFW_Link_API_Training.pdf。 7.4开发包使用说明7.4.1应用程序代码编写7.4.1.1基于mcfw/interface的程序此类应用程序只使用interface中提供的接口,编译出来是一个Linux可执行程序。它通过接口内部的实现和M3 VPSS、M3 VIDEO以及DSP的固件通信进行工作。具体由各个LINK实现,可以不必深究。了解清楚interface中接口提供的功能即可。 7.4.1.2需更改DSP固件的应用程序此类应用程序在工程组织上需要包含dsp和host两部分。host部分和上述7.4.1.1中的一样。dsp部分需要提供新的main入口,添加自定义部分代码,再使用mcfw/src_bios6中的源码进行编译连接,生成新的固件来使用。 7.4.2应用程序编译章节7.4.1.1中的程序的编译和常规程序没有什么不同。配置编译器、编译选项,配置头文件搜索路径、库搜索路径,控制编译过程。具体可看示例程序中的makefile。 章节7.4.1.2中说明的程序的编译稍微复杂点。示例程序的大致结构: ├── dsp │ ├──app_link.c --添加的自定义DSP LINK。 │ ├──main_c6xdsp.c --新的DSP固件main入口。 │ ├──makefile --使用makefile.mk中的编译规则。 │ └──makefile.mk --控制结合当前目录中的源文件和mcfw/src_bios6中DSP相关的源文件进行编译生成固件。 ├── host │ ├── main.c │ ├── makefile ├──makefile --顶层 makefile,控制host/makefile、dsp/makefile。此 makefile 中需要指定tl-mcfw-rdk 的路径,NFS的路径,以及可能用到的第三方库的路径。 ├──Rules.make --环境配置,指向tl-mcfw-rdk开发包。 注意:该开发包中不包含NFS,以及live555等第三方库。程序中使用到,需用户另外提供。 8安装第三方库源码路径:光盘资料/Tools/Linux/third-party-lib.tar.gz 第三方库包含了例程开发中用到的第三库文件,必须安装才能正常编译。将压缩包third_party_library.tar.gz拷贝到Ubuntu目录下,建议跟RDK包同级目录下,进行解压: Host# tar zxvf third-party-lib.tar.gz
图9
|