Board logo

标题: 达芬奇数字媒体片上系统架构和Linux启动 [打印本页]

作者: yuyang911220    时间: 2016-12-22 15:04     标题: 达芬奇数字媒体片上系统架构和Linux启动

本帖最后由 yuyang911220 于 2016-12-29 15:24 编辑

达芬奇( DaVinci)数字媒体技术平台TMS320DM6446/3采用了ARM+DSP双核的架构,本文从芯片的硬件结构入手介绍达芬奇DMSoC硬件部分及Linux OS的启动过程。  达芬奇DMSoC硬件概述
  如图1所示,达芬奇数字媒体片上系统(DMSoC)提供:两个内核(ARM+DSP);视频处理子系统(VPSS);多种 Boot模式(NOR Flash/NAND Flash/UART0 Boot Mode);两个电源域;多个时钟树;多个引脚独立或复用的外设。

图1 DM6446功能结构框图

  ● ARM-DSP集成
  对于双核的达芬奇架构,大家最关心的就是两个核之间的资源分配、通信方式及如何高效地实现资源共享各尽其能。ARM独享(DSP不可用)的外设有:UART0/1/2,I2C,看门狗定时器,PWM0/1/2,ARM中断控制器,USB2.0,ATA/CF,SPI,GPIO,VPSS,EMAC/MDIO,EMIFA CONTROL,VLYNQ,MMC/SD。DSP独享(ARM不可用)的外设有:DSP中断控制器,VICP。ARM和DSP共享的外设有:EDMA,Timer0/1,Power & Sleep Controller,ASP和EMIFA Data。

图2 ARM-DSP集成结构

  如图2所示,可以很清楚地看到ARM可以访问DSP片内存储器(L2RAM和L1P/D);DSP可以访问ARM片内存储器;ARM和DSP共享DDR2和AEMIF。因此,通常情况下ARM只需传递需要处理的数据地址指针给DSP,而无须大块的数据搬移。ARM和DSP之间的通信可以通过相互中断实现。ARM可以中断DSP(通过4个通用中断和1个不可屏蔽中断);DSP可以通过2个通用中断来中断ARM。ARM控制DSP的电源、时钟、复位和引导。
  ● DMSoC存储器映射
  达芬奇DMSoC多个片上存储器和两个处理器及不同的子系统相关。为了简化软件开发,DMSoC中所有的存储器统一编址,如表1所示。

 ● DMSoC交换中心资源
  以上大家看到DMSoC有非常丰富的外设和视频处理硬件资源,而且ARM和DSP又共享DDR2等存储器资源,那么DMSoC又是如何确保ARM、DSP和VPSS同时访问外设或存储器资源时不会引起冲突呢?DMSoC中的交换中心资源(SCR:Switched Central Resource)会做出管理。如图3所示,把任何一个发起数据传输的源称为Master(每一个Master有一个专用的ID),这个Master要访问的目的地称为Slave,这样在Master和Slave之间就构成一条数据传输的通路。从图3中可以看到,在SCR中可以有很多并行的Master到Slave的数据通路。如果是不同的Master、相同的Slave,那么可以通过设置每一个Master的优先级来得到特殊应用系统的最佳性能。对于大多数的Master,可以通过寄存器MSTPRI0和MSTPRI1来设置它们的优先级。如果Master是C64x+、VPSS和EDMA,可以通过它们自己的相关寄存器控制它们自己的优先级,这样可以更加灵活、快速的实现高的视频数据吞吐带宽。详细信息可以参考DM6446的数据手册。

图3 DMSoC交换中心资源的结构框图

  电源域及复位
  达芬奇DMSoC有两个电源域,分别是Always On域和DSP域。Always On域由CVDD ARM核电源供电,给ARM、总线、SCR和除VICP之外的所有外设提供电源;DSP电源域由CVDDDSP DSP核电源供电,给DSP和VICP提供电源。
  双核架构的达芬奇DMSoC的功耗也非常有竞争力,这一方面取决于芯片本身的工艺,另一方面也取决于芯片内部时钟和电源的结构。如图4所示,达芬奇DMSoC有电源休眠控制器(Power & Sleep Controller)管理芯片电源的开关及复位。可以用软件控制DSP电源域,控制DSP及其模块时钟的开关和复位。PSC不支持ARM及其模块的断电控制、ARM的本地复位和ARM的时钟关断控制。同时PSC可以中断ARM和DSP,支持IcePick仿真(emulation)特性。

图4 DM6446的电源休眠控制器

  关于达芬奇DMSoC的复位类型、触发源及对应的复位对象请参考表2。






欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0