{企业通用培训}达芬奇讲义

上传人:精****库 文档编号:140438009 上传时间:2020-07-29 格式:PPTX 页数:121 大小:6.57MB
返回 下载 相关 举报
{企业通用培训}达芬奇讲义_第1页
第1页 / 共121页
{企业通用培训}达芬奇讲义_第2页
第2页 / 共121页
{企业通用培训}达芬奇讲义_第3页
第3页 / 共121页
{企业通用培训}达芬奇讲义_第4页
第4页 / 共121页
{企业通用培训}达芬奇讲义_第5页
第5页 / 共121页
点击查看更多>>
资源描述

《{企业通用培训}达芬奇讲义》由会员分享,可在线阅读,更多相关《{企业通用培训}达芬奇讲义(121页珍藏版)》请在金锄头文库上搜索。

1、目录,第1页,一、 概述,第2页,一、 概述,第3页,一、 达芬奇简介项目资源,第4页,芯片:DM6446 评估板:DVEVM 内核:MontaVista Linux 主机:Redhat Linux 仿真器:XDS510 USB 软件:CCS3.2 工具链:Codec Engine 1.02 C64x+:DSP内核,执行算法 ARM926EJS:ARM内核,主控整个系统 VPSS:由VPFE和VPBE组成 VICP:视频图象协处理器,一、 达芬奇简介项目资源,第5页,DM6446,一、 达芬奇简介项目资源,第6页,DM6446,一、 达芬奇简介项目资源,第7页,DSP Core,内核:C64x

2、升级到C64x+ 指令集:新增ADDSUB2,MAX2,MIN2, DDOTP4,CMPY,DPACK2等指令 片内RAM:L1和L2是各自独立的,而C64x内核中, L1是包含在L2中的 DMA:IDMA+EDMA,支持3D传输,QDMA成为 EDMA的一部分,PaRAM长度增加为8个字长,一、 达芬奇简介项目资源,第8页,ARM Core,内核:ARM926EJS 主存:32bit,DDR2400 EMIF:Nor Flash,NandFlash ATA:HDD,Compact Flash SDIO:MMC,SD USB:USB 2.0 Full Speed 480Mbps EMAC:10

3、/100Mbps Ethernet MACARM,一、 达芬奇简介项目资源,第9页,VPSS,VPSS:Video Process SubSystem VPFE:Video Process FrontEnd CCDC:用于视频和图象的采集,可以直接和CMOS 或者CCD传感器模组相连 H:直方图统计 3A:自动曝光,自动白平衡,自动聚焦 Preview:快视预览 Resizer:1/4x4x的缩放倍数,实现ZOOM,一、 达芬奇简介项目资源,第10页,VPSS,VPSS:Video Process SubSystem VPFE:Video Process FrontEnd CCDC:用于视频和

4、图象的采集,可以直接和CMOS 或者CCD传感器模组相连 H:直方图统计 3A:自动曝光,自动白平衡,自动聚焦 Preview:快视预览 Resizer:1/4x4x的缩放倍数,实现ZOOM VPBE:Video Process BackEnd OSD:用于制作菜单 DAC:4路DAC输出,支持CVBS格式和SVideo格式 数字视频输出:支持816bit YUV格式和24bit RGB格式,一、 达芬奇简介项目资源,第11页,评估板:DVEVM,评估板:DVEVM 附带摄像头,模拟屏,红外遥控器,评估板各种接口十分齐全 DVEVM上有三个可编程器件 做为软硬件协同开发的分界平台 快速评估软件

5、和算法的性能,一、 达芬奇简介项目资源,第12页,评估板:DVEVM,一、 达芬奇简介项目资源,第13页,内核:MontaVista Linux,MontaVistaLinux Pro 内核 文件系统 工具链 DVEVM包含三个组件的评估版 集成开发环境DevRocket(MontaVista DevRocket图形开发环境 ) DVSDK包含四个组件的企业版,一、 达芬奇简介项目资源,第14页,主机配置,TFTP Server NFS Server Minicom 安装的时候禁用防火墙和SELinux,一、 达芬奇简介项目资源,第15页,仿真器:XDS560 PCI,算法开发流程中的Emul

6、ator 算法的功能验证必须通过仿真器和目标板进行,一般的, Simulator验证通过的代码,Emulator大都正确 底层开发使用,调试硬件,烧写Flash,一、 达芬奇简介项目资源,第16页,软件:CCS3.2,老版本的CCS不支持C64x+的内核 老版本的CCS不支持更高版本的BIOS 我们推荐使用的CCS版本: Code Composer Studio Version 3.2.39.5 相关的组件有: DSP BIOS Code Generate Tools XDC ToolsCCS,一、 达芬奇简介项目资源,第17页,工具链:Codec Engine 1.02,Codec Engi

7、ne简称CE CE是什么? CE能干什么? CE由什么组成? CE怎么使用? 没有CE能不能开发算法?,一、 达芬奇简介项目资源,第18页,工具链:Codec Engine 1.02,CE是TI提供的一个软件架构 应用软件通过CE提供的接口调用算法 CE同时支持单核模式和双核模式 CE可以实现双核通信 CE由dsplink,cmem,fc,xdais四个组件和一组VISA的例程构成 没有CE,也可以实现双核系统的开发,一、 达芬奇简介项目资源,第19页,工具链:Codec Engine 1.02,一、 达芬奇简介项目资源,第20页,工具链:Codec Engine 1.02,一、 达芬奇简介项

8、目资源,第21页,工具链:Codec Engine 1.02,一、 达芬奇简介项目资源,第22页,工具链:Codec Engine 1.02,一、 达芬奇简介项目资源,第23页,工具链:Codec Engine 1.02,一、 达芬奇简介项目资源,第24页,工具链:Codec Engine 1.02,一、 达芬奇简介项目资源,第25页,工具链:Codec Engine 1.02,一、 达芬奇简介项目资源,第26页,工具链:Codec Engine 1.02,一、 达芬奇简介项目资源,第27页,工具链:Codec Engine 1.02,一、 达芬奇简介项目资源,第28页,工具链:Codec E

9、ngine 1.02,一、 达芬奇简介项目资源,第29页,工具链:Codec Engine 1.02,一、 达芬奇简介完整设计流程,第30页,获取算法C模型 获取测试序列 VC或GCC下编译算法C模型,并且根据测试序 列生成输 出标准序列 算法C模型的优化 移植到CCS下 算法DSP模型的优化,一、 达芬奇简介完整设计流程,第31页,获取算法C模型 获取测试序列 VC或GCC下编译算法C模型,并且根据测试序 列生成输 出标准序列 算法C模型的优化 移植到CCS下 算法DSP模型的优化 CCS下用Simulator进行仿真 CCS下用Emulator进行功能验证 Linux下用CE工具链进行算法

10、封装 Linux下用DVEVM进行算法功能验证 Linux下进行算法可重入的功能验证 Linux下制作算法演示Demo,一、 达芬奇简介完整工具链,第32页,DSP BIOS Code Generate Tools XDC Tools Framework Component Cmem DSPLink XDAIS Codec Engine,二、程序架构,第33页,三、应用程序设计,第34页,程序包含6个单独的POSIX线程,其中,video,display,capture,audio线程由main线程在其变为 control线程之前创建。 在程序执行起来之后,一共有5个单独的 线程在运行。,三、

11、应用程序设计-目录,第35页,三、应用程序设计优先级说明,第36页,三、应用程序设计优先级说明,第37页,除了main和control线程之外的线程都配置为优先的且优先策略是(SCHED_FIFO)。SCHED_FIFO(先进先出)策略按线程在执行前在列表上存在的时间对列表上的线程进行排序。处于列表首位的线程通常为在列表上存在时间最长的线程,而处于末尾的线程在列表上存在的时间最短。此策略允许一个线程一直运行,直到具有较高优先级的另一个线程已准备好运行,或者直到当前线程自动阻止。如果此线程被占据,它就继续处于其线程优先级列表的首位;如果此线程阻止,当它再次成为一个可运行的线程时,将被添加到此线程

12、所在的优先级列表的末尾。在本工程中, video,capture,display,audio线程分享最高优先级,而control线程具有最低优先级。,三、应用程序设计线程初始化清理同步说明,第38页,线程的初始化和清理同步在本程序中使POSIX条件量来完成。这个在main线程中初始化。在Rendezvous 模块中: typedef struct Rendezvous_Obj int count; pthread_mutex_t mutex; pthread_cond_t cond; Rendezvous_Obj;,用count来表示线程的总数,每初始化完一个线程的时候都使count减1表明本

13、线程初始化完毕且等待其他线程。为了避免冲突,使用互斥量来保护对count的操作。,三、应用程序设计线程初始化清理同步说明,第39页,static inline void Rendezvous_meet(Rendezvous_Handle hRv) pthread_mutex_lock( 当所有线程都初始化完毕后,所有线程同时解锁并开始执行各自的主循环。对于线程完成后的清理工作也类似。这种对缓存共享的方法就不会出现一个线程对缓存操作没有完成的情况下被其他线程访问。,三、应用程序设计Main线程,第40页,Main线程主要的任务是执行必要初始化工作,接收命令行参数并传递给其他线程。如图所示,一开始

14、要检测视频标准,这个是在板子上的拨码开关S3第10个开关,通过FBDev显示设备驱动的FBIO_GETSTD ioctl来得到。令行传递语法参数来设置线程环境。Codec Engine和它的TraceUtil模块初始化来跟踪。Pause模块用来处理过程中的暂停,Rendezvous模块用来同步线程的初始化和清理。最后,控制线程control thread)ctrlThrFxn()被调用,主要main线程变成control线程。,三、应用程序设计Control 线程,第41页,控制线程负责用户接口:红外、OSD显示菜单、OSD显示jpeg图片及jpeg压缩。控制线程也负责更新和显示OSD菜单。在

15、达芬奇平台上,OSD窗口(/dev/fb/0)在视频显示(/dev/fb/3)窗口的前端。而控制显示OSD窗口透明度的是使用属性窗口(/dev/fb/2)。在属性窗口中,每个像素的透明度由一个元组(4bit)和它的值(0-7)来控制。控制线程就可以通过函数setOsdTransparency()来设置OSD窗口的透明度。 Control线程的优先级最低,三、应用程序设计Video线程,第42页,该线程是算法的核心线程,完成检测目标的任务。Video线程接收来自采集线程的每一帧缓冲区,完成目标检测后把缓冲区交给display线程的显示设备(VPSS后端)来显示。,三、应用程序设计Video线程,

16、第43页,如图10所示,video 线程的初始化主要完成: 创建Codec Engine实例(Engine_open())。这个函数返回一个句 柄,算法实例化时使用这个句柄。 创建算法用vdieoEncodeAlgCreate()。该函数调用了CCS下编写的算法,在工具链(后边详细叙述)封装好目标识别算法后,vdieoEncodeAlgCreate()函数中创建算法实例。该实例由VIDENC_create()调用。hEncode = VIDENC_create(hEngine, encoderName, 其中的参数params包含了采集视频的一些参数。 算法使用的数据暂存区和显示使用的暂存区使用Memeory_contigAlloc()函数来申请。 Capture线程使用CAP_BUFFERS个暂存区来采集数据并暂存。先使用Memeory_contigAlloc()函数来申请内存,然后把它们发送给capture线程来采集FifoUtil_put()。 当vid

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 商业/管理/HR > 企业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号