52
基基 TI DM642 基基基 基基基基基 基基基 2006-11-04

基于 TI DM642 的视频 采集与显示

  • Upload
    elise

  • View
    164

  • Download
    0

Embed Size (px)

DESCRIPTION

基于 TI DM642 的视频 采集与显示. 张震国 2006-11-04. 主要内容. Video Formats DSP/BIOS EDMA Video Driver Registering the Video Driver Using the Video Driver. VIDEO. 一系列活动的视频 两种制式: PAL 和 NTSC 帧频、场频、行频 分辨率 - QCIF : 176×144 - CIF : 352×288 - 4CIF : 704×576 - D1 : 720×576. YUV 与 RGB. 两种颜色空间 - PowerPoint PPT Presentation

Citation preview

Page 1: 基于 TI DM642 的视频 采集与显示

基于 TI DM642 的视频采集与显示

张震国2006-11-04

Page 2: 基于 TI DM642 的视频 采集与显示

主要内容• Video Formats

• DSP/BIOS

• EDMA

• Video Driver

• Registering the Video Driver

• Using the Video Driver

Page 3: 基于 TI DM642 的视频 采集与显示

VIDEO

• 一系列活动的视频• 两种制式: PAL 和 NTSC• 帧频、场频、行频• 分辨率- QCIF : 176×144

- CIF : 352×288

- 4CIF : 704×576

- D1 : 720×576

Page 4: 基于 TI DM642 的视频 采集与显示

YUV 与 RGB

• 两种颜色空间• 通过转换公式,可以相互转换• 使用 YUV 的优点-与黑白图像兼容-占用带宽小-抗干扰能力强

Page 5: 基于 TI DM642 的视频 采集与显示

4:2:0&4:2:2& 4:4:4

Page 6: 基于 TI DM642 的视频 采集与显示

Bytes per Frame (4:2:2)

• QCIF: 176x144x2=50688

• CIF: 352x288x2=202752

• 4CIF: 704x576x2=811008

• D1:720x576x2=829440

Page 7: 基于 TI DM642 的视频 采集与显示

主要内容• Video Formats

• DSP/BIOS

• EDMA

• Video Driver

• Registering the Video Driver

• Using the Video Driver

Page 8: 基于 TI DM642 的视频 采集与显示

DSP/BIOS?

• 一个高度优化的可扩展的实时内核• 和 CCS 集成在一起• 需要最小的内存和 CPU 占用• 是 TI eXpressDSP 技术的一个重要组成部

分 另外两个: --xdais 算法标准 --TI 第三方软件支持

Page 9: 基于 TI DM642 的视频 采集与显示

DSP/BIOS 的特点• 模块化设计• 库被优化设计使用最少的指令周期• 目标板和主机之间的数据交换在 idle 线

程中进行• 对象可以被静态或动态创建• 多种的线程类型供选择• 提供多种线程间同步对象

Page 10: 基于 TI DM642 的视频 采集与显示

DSP/BIOS 组成• DSP/BIOS 配置工具-- Configuration

Tool

• DSP/BIOS 实时分析工具• DSP/BIOS API 接口• DSP/BIOS 内核

Page 11: 基于 TI DM642 的视频 采集与显示
Page 12: 基于 TI DM642 的视频 采集与显示

Configuration Tool 生成的文件• Program.cdb :配置文件,存储在 Configuration

Tool 中的设置。• Programcfg.s62 : Configuration Tool 产生的汇

编文件。• Programcfg.h62 :被 Programcfg.s62 包含。• Programcfg.cmd :根据 Configuration Tool 的设

置产生的 linker 文件。• Programcfg.h :包含在 Configuration Tool 中创

建对象的声明。• Programcfg_c.c :根据 CSL 设置产生的代码。

Page 13: 基于 TI DM642 的视频 采集与显示

DSP/BIOS 程序启动执行顺序• C 入口函数: c_int00

• 调用 BIOS_init 初始化 DSP/BIOS 的各个模块。全局属性中的用户初始化函数在该处被调用。

• 调用 main 函数。• 调用 BIOS_start 启动 DSP/BIOS 。• 进入 idle 循环。

Page 14: 基于 TI DM642 的视频 采集与显示

main 函数• 程序执行到 main 函数时, DSP/BIOS 的

各个模块还没有启动。所以一些函数不能在 main 里调用。

• main 只做一些初始化的工作。• 不是 DSP/BIOS 中线程的一种。

Page 15: 基于 TI DM642 的视频 采集与显示

线程类型• 硬件中断 (HWI) ,包括 CLK 函数• 软件中断 (SWI) ,包括 PRD 函数• 任务 (TSK)

• IDL(IDL)

Page 16: 基于 TI DM642 的视频 采集与显示

HWI

• 响应外部事件,拥有最高的优先级• 使用系统栈• 中断服务程序可以用 C 、汇编或者 C 和

汇编,不需要 interrupt 关键字• 当全部用 C 语言写时需要选择 Use

Dispatcher 属性• CLK 函数是硬件中断类型,由 Timer 中

断来触发

Page 17: 基于 TI DM642 的视频 采集与显示

SWI

• 比硬件中断的优先级低,比任务高• 每个 SWI 有一个 SWI_handle• 使用系统栈• 通过 API 接口函数来触发• 会被硬件中断和高优先级的 SWI 抢占,

但不能被阻塞• 用一个 32bit 的 mailbox 来控制 SWI 函数

的执行次数和时机

Page 18: 基于 TI DM642 的视频 采集与显示

TSK

• 通过 TSK 模块来管理• 每个 TSK 有一个 TSK_handle• 比 SWI 的优先级低,比 IDLE 的优先级高• 16 个优先级• 可以被阻塞• 每个任务拥有自己的运行时栈• 总是运行处于 ready 状态的高优先级的任务

Page 19: 基于 TI DM642 的视频 采集与显示

TSK 的四种状态TSK_REDAY

TSK_TERMINATED

TSK_RUNNING

TSK_BLOCKED

TSK_create() TSK_tick()SEM_post()

TSK_exit()

TSK_delete()

TSK_delete()

TSK_sleep()SEM_pend()

Page 20: 基于 TI DM642 的视频 采集与显示

The idle Loop

• DSP/BIOS 的 background thread

• 任何线程可以在任意点抢占 idle loop

• 只有在没有 HWI 、 SWI 、 TSK 可以运行的时候才执行

• 可以调用 IDL_run() 强制运行 idle loop 。每调用一次 IDL_run 运行一次 idle loop 。

Page 21: 基于 TI DM642 的视频 采集与显示

实验 1

• 位置:\src\07tsktest

Page 22: 基于 TI DM642 的视频 采集与显示

主要内容• Video Formats

• DSP/BIOS

• EDMA

• Video Driver

• Registering the Video Driver

• Using the Video Driver

Page 23: 基于 TI DM642 的视频 采集与显示

C64x 中的 EDMA

• 具有 64 个通道• 具有四个优先级队列• 时钟频率是 CPU 时钟频率的 1/2

• 传输可以链接• 支持二维传输• 仅有一个 Int8 中断,通过 TCC 来区分中

断事件

Page 24: 基于 TI DM642 的视频 采集与显示

EDMA Controller Block

Page 25: 基于 TI DM642 的视频 采集与显示

触发 EDMA 传输的方式• CPU-initiated EDMA

• Event-initiated EDMA

Page 26: 基于 TI DM642 的视频 采集与显示

EDMA 的使用• TMS320C6000 DSP Enhanced Direct

Memory Access(EDMA) Controller Reference Guide.pdf

Page 27: 基于 TI DM642 的视频 采集与显示

实验 2 EDMA 的使用• 位置:\src\edma

Page 28: 基于 TI DM642 的视频 采集与显示

主要内容• Video Formats

• DSP/BIOS

• EDMA

• Video Driver

• Registering the Video Driver

• Using the Video Driver

Page 29: 基于 TI DM642 的视频 采集与显示

TMS320DM642 Block Diagram

SDRAM

64-bit wide @ 133MHz

10/100 Ethernet

MAC

C64xTM DSP Core

L2 C

ache/M

emo

ry 256 KB

ytes

En

han

ced D

MA

Co

ntro

ller

Videoport-0

Videoport-1

Videoport-2

McASP

EMIF

66MHzPCI

TMS320DM642 DSP

L1D Cache

L1P Cache

Page 30: 基于 TI DM642 的视频 采集与显示

DM642 Core

• 750/600/500MHz C64x DSP core -64 general-purpose registers of 32-bit world length -Eight highly independent functional units -SIMD instructions tailored for video and imaging applications

• Two-level cache architecture -16Kbyte L1P & L1D cache -256Kbyte L2 cache/SRAM

• 64-channel EDMA controller -Five transfer request queues with programmable priority and

depth -Transfer linking and chaining -2-D transfer

Page 31: 基于 TI DM642 的视频 采集与显示

DM642 Key Peripherals

• Three configurable video ports• One 10/100 Mb/s Ethernet MAC• One multi-channel buffered audio serial port (McASP)• One inter-integrated circuit(I2C) Bus module• One 66MHz peripheral component interface (PCI)• One 64 bit glueless external memory interface (EMIF)• Two multi-channel buffered serial ports (McBSPs)• Three 32-bit general-purpose timers• One user-configurable 16-bit or 32-bit host-port

interface(HPI16/HPI32)

Page 32: 基于 TI DM642 的视频 采集与显示

Driver Basics

• Separate drivers for capture & display• Only support frame based operation• Uses EDMA to move data between video

port FIFO and DSP memory• EDMA link is enabled to automate the

transfer no CPU intervention• EDMA transfer completion interrupts are

used to synchronize with the application

Page 33: 基于 TI DM642 的视频 采集与显示

Video Port Modes

• Video Capture

- Dual-channel capable

- 8/10bit ITU - R BT.656 mode

- 16/20bit Y/C mode

- 8/16/20bit raw mode

- scaling & chroma re-sampling( 硬件上可实现 )• Video Display

- same as capture

Page 34: 基于 TI DM642 的视频 采集与显示

DM642 Video Port

Page 35: 基于 TI DM642 的视频 采集与显示

Use EDMA Linking for Automated Transfer (Capture)???

Y

VP FIFO SRC Y

EDMA Channels

DST Y

SRC Y DST Y

EDMA Reload Channels

Frame1

Frame2

Page 36: 基于 TI DM642 的视频 采集与显示

Driver Architecture

• Adopted a two-level device driver model• Top level – Class Driver , 2 layers

- FVID Wrapper

- GIO Class Driver• Bottom level – Mini-driver, 2 layers

- IOM interface: Generic EDMA data mover

- EDC interface: External Device Control Module

Page 37: 基于 TI DM642 的视频 采集与显示

Driver Block Diagram

Application/Framework

GIO Class Driver

Video Port/EDMA Video Codecs

Encoder/Decoder Specific Part of Mini-Driver

Chip Support Library (CSL)

Class

Driver

Mini-

Driver

Device

Driver

FVID Class Driver Wrapper

Generic Video Port – EDMA Data Mover

Page 38: 基于 TI DM642 的视频 采集与显示

Class Driver Architecture

• GIO -Generic class driver API -Can be used for wide range of I/O devices -Can be extended to support specific I/Os types such

as video and file system -Provides basic seriallization and synchronization

capabilities of multi-threaded I/O requests -Handles device instance management• FVID -An extension of GIO -Tailored for frame video applications

Page 39: 基于 TI DM642 的视频 采集与显示

GIO Classs Driver API

• GIO_control: Calls the underneath mini-driver control function.

• GIO_create: Create an instance of a device driver.

• GIO_delete: Delete the instance of the device driver previously created.

• GIO_submit: Submit an I/O request.• Basic GIO APIS do not provide adequate

support for continuous video capture & display operations

Page 40: 基于 TI DM642 的视频 采集与显示

FVID Wrapper API

• Macros that directly mapped to GIO APIs• Three new I/O request commands are defined -FVID_ALLOC

-FVID_FREE -FVID_EXCHANGE• FVID_control: directly mapped to GIO_control• FVID_create: directly mapped to GIO_create• FVID_delete: directly mapped to GIO_delete• FVID_alloc: returns a frame buffer from the driver to the

application• FVID_free: returns an application owned buffer back to the

driver• FVID_exchange: a combination of FVID_alloc and FVID_free

Page 41: 基于 TI DM642 的视频 采集与显示

Mini-Driver Architecture

• The generic EDMA data mover -DSP specific, but independent of external devices

used. -Responsible for all peripheral, EDMA configuration

and data movement inside the DSP.• The External Device Control (EDC) module -Responsible for configuring the external device to ensure

correct data flow between the external device and the DSP’s video port.

• Ensures easy portability by maximizing code reuse

Page 42: 基于 TI DM642 的视频 采集与显示

Mini-Driver Top Layer

• Implements the IOM interface, which should implement the following functions:

-mdBindDev. Bind device to mini-driver -mdControlChan. Perform channel control commands. -mdCreateChan. Create a device channel -mdDeleteChan. Delete a channel. -mdSubmitChan. Submit a packet to a channel for

processing. -mdUnBindDev. Unbind device from mini-driver• These functions are referenced in an

interface table of type IOM_Fxns

Page 43: 基于 TI DM642 的视频 采集与显示

Mini-Driver Interfaces

• Top layer implements the IOM interface: -mdBindDev. -mdControlChan. -mdCreateChan. -mdDeleteChan. -mdSubmitChan. -mdUnBindDev.• Bottom layer implements the EDC interface: -edcControl. -edcOpen. -edcClose.• These functions are referenced in interface tables of type

IOM_Fxns and EDC_Fxns respectively

Page 44: 基于 TI DM642 的视频 采集与显示

用到的结构• VPORTCAP_Params

• VPORTDIS_Params

• VPORT_PortParams

• TVP5150_ConfParams

• SAA7105_ConfParams

• FVID_Frame

• IOM_Packet

Page 45: 基于 TI DM642 的视频 采集与显示

IOM Packets

向 mini-driver 提交请求的标准数据结构。typedef struct IOM_Packet { /* frame object */ QUE_Elem link; /* queue link */ Ptr addr; /* buffer address */ Uns size; /* buffer size */ Arg misc; /* miscellaneous item */ Arg arg; /* user argument */

/* these fields are used by IOM ... */ Uns cmd; /* command for mini-driver */ Int status; /* status of command */} IOM_Packet;

Page 46: 基于 TI DM642 的视频 采集与显示

用到的函数• FVID_create

• FVID_control

• FVID_alloc

• FVID_exchange

Page 47: 基于 TI DM642 的视频 采集与显示

Video Port Reg

• TMS320C64x DSP Video Port & VCXO Interpolated Control (VIC) Port Reference Guide (Rev. A).pdf

Page 48: 基于 TI DM642 的视频 采集与显示

主要内容• Video Formats

• DSP/BIOS

• EDMA

• Video Driver

• Registering the Video Driver

• Using the Video Driver

Page 49: 基于 TI DM642 的视频 采集与显示

注册 mini-driver

注册 mini-driver 需要在 Configuration Tool 中静态完成 ,遵循以下步骤:

a)在 User-Defined Devices 上点击右键,从弹出菜单上选择 Insert UDEV 。

b)重命名刚才插入的对象,名字要唯一。c)设置刚刚插入对象的属性

Page 50: 基于 TI DM642 的视频 采集与显示
Page 51: 基于 TI DM642 的视频 采集与显示

主要内容• Video Formats

• DSP/BIOS

• EDMA

• Video Driver

• Registering the Video Driver

• Using the Video Driver

Page 52: 基于 TI DM642 的视频 采集与显示

实验 3 :视频采集与显示• 位置: \src\Imagelab_vdp\lab_flash\

VP_loopback_P