当前位置:首页 > 嵌入式 > 嵌入式软件
[导读]达芬奇数字媒体片上系统的架构和Linux启动过程

达芬奇(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所示。


表1 DMSoC存储器的映射地址。

[!--empirenews.page--]

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的电源休眠控制器。

[!--empirenews.page--]

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


表2 DMSoC的复位类型。

达芬奇DMSoC初始化流程

> 达芬奇DMSoC复位状态

DM644x 上电复位后,芯片的绝大部分模块都处于不工作状态。锁相环PLL处于旁路(Bypass)模式;DSP子系统的状态取决于DSP_BT引脚;UART1和 UART2也处于不工作状态,UART0的状态取决于BTSEL引脚(如果BTSEL=11,UART0工作);EMIFA处于工作状态,其数据总线宽度由EM_WIDTH决定,地址总线宽度由AEAW决定;芯片的大部分引脚都被配置为GPIO引脚。引脚复用通过寄存器PINMUX0和PINMUX1控制。

> 达芬奇DMSoC初始化顺序

(1)DMSoC复位。芯片的配置由PSC决定,取决于BTSEL[0-3]、EM_WIDTH、AEWA和DSP_BT的状态。

(2)ROM boot loader(如果被选)。NAND或者UART0的初始化。

(3)引导加载(Boot-loading)。以U-boot为例,①使能电源域:DDR2和DSP;②设置时钟频率(ARM、DSP和DDR2时钟的乘除系数);③设置引脚复用控制器;④设置ARM引导启动操作系统。

(4)操作系统启动。以Linux为例,①初始化ARM;②初始化硬件系统;③初始化Linux环境。

> U-boot初始化顺序

通常情况下,ARM Linux要求boot loader中有少许的初始化。目前TI的DVEVM使用的是U-boot-1.1.3。U-boot代码中首先运行的是u- boot/cpu/arm926ejs/start.S,芯片和一些DVEVM板的硬件配置主要在u- boot/board/davinci/platform.S和davinci.c中完成。其中u- boot/board/davinci/platform.S设置最基本的系统硬件环境,包括系统PLL及DDR2的初始化、PSC的配置及使能 UART0、AEMIF等硬件模块。有些工程师设计的达芬奇板可能用到了和DVEVM不同的Flash,那么就要根据用到的Flash参数修改u- boot/board/davinci/flash.c。另外,关于DM644x支持的NAND Flash ID,请参考TMS320DM644x DMSoC的相关文档。

以NOR Flash boot为例,DVEVM u-boot初始化下列的达芬奇DMSoC内容:

(1)关中断和MMU。

(2)使能DSP电源域(PTCMD),把DSP置为复位状态。

(3)初始化PLL,使能DDR2,软复位DDR2并且重新使能DDR2,使其脱离复位状态。

(4)初始化系统PLL。

(5)配置AEMIF引脚为NOR Flash接口。

(6)VTP校准。

[!--empirenews.page--]

完成以上步骤之后,U-boot准备引导ARM Linux。

(1)配置系统的内存(通过ATAG_ MEM块和mem=)NAND Flash和DDR2。

(2)通过TFTP加载等加载方式,加载内核到指定的存储地址。

(3)如果定义过,加载RAM Disk。

(4)初始化传递到内核的引导参数(EMAC地址,串口,控制台,视频格式等)

(5)获得ARM Linux机类型值(DVEVM为#901)。

(6)设置kernel tagged list。

(7)用初始值设置ARM的寄存器。

(8)调用内核。

> Linux 初始化步骤

(1)Linux内核需要从引导加载程序(U-boot)中得到以下参数。

* 已经初始化的memory系统。

* R0=0;R1为ARM Linux机类型值。

* R2指向ATAG结构体的内容:①物理memory区;②是否使用RAM DISK及其压缩版的地址;③视频驱动程序具体的初始化参数;④内核命令行;⑤其他参数(串口和版本号)。

更多关于Linux内核引导参数的信息可以参考Linux/Documentation/kernel-parameters.txt。如果要想传递给内核更多的参数,再u-boot中的bootargs中设置就可以了。

(2)对于压缩的内核(aka uImage),Linux 最初启动Linux/arch/kernel/head.s。

(3)start_kernel()运行。位于Linux/init/main.c。

(4)Linux的第一个进程init()运行。

总结

经过上面介绍,很多DSP工程师可能会对达芬奇DMSoC及Linux启动流程有一个感性的认识,双核架构的达芬奇DMSoC带给我们的是一加一大于二的性价比,要想了解更多的细节,请参考数据手册和应用文档。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

为了满足日益增长的数据处理需求,铁威马NAS推出了全新的性能巅峰2024年旗舰之作F4-424 Pro,并搭载了最新的操作系统--TOS 6。这款高效办公神器的问世,无疑将为企业和专业人士带来前所未有的便捷与效率。

关键字: 存储 Linux 服务器

双系统将是下述内容的主要介绍对象,通过这篇文章,小编希望大家可以对双系统的相关情况以及信息有所认识和了解,详细内容如下。

关键字: 双系统 Windows Linux

安装Linux操作系统并不复杂,下面是一个大致的步骤指南,以帮助您完成安装。1. 下载Linux发行版:首先,您需要从Linux发行版官方网站下载最新的ISO镜像文件。

关键字: Linux 操作系统 ISO镜像

计算机是由一堆硬件组成的,为了有限的控制这些硬件资源,于是就有了操作系统的产生,操作系统是软件子系统的一部分,是硬件基础上的第一层软件。

关键字: Linux 操作系统 计算机

Linux操作系统是一套免费使用和自由传播的类Unix操作系统,通常被称为GNU/Linux。它是由林纳斯·托瓦兹在1991年首次发布的,并基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。Lin...

关键字: Linux 操作系统

所谓进程间通信就是在不同进程之间传播或交换信息,它是一组编程接口,让程序员能够协调不同的进程,使之能在一个操作系统里同时运行,并相互传递、交换信息;还可以让一个程序能够在同一时间里处理许多用户的需求。

关键字: Linux 进程通信 编程接口

串口通信作为一种最传统的通信方式,在工业自动化、通讯、控制等领域得到广泛使用。

关键字: Linux 串口通信 通讯

2023年11月16日: MikroElektronika(MIKROE) ,作为一家通过提供基于成熟标准的创新式硬软件产品来大幅缩短开发时间的嵌入式解决方案公司,今天宣布推出一款基于单线设备的软硬件开源解决方案Cli...

关键字: 嵌入式 Linux 操作系统

Linux是一种免费使用和自由传播的类Unix操作系统,其内核由林纳斯·本纳第克特·托瓦兹于1991年10月5日首次发布。它主要受到Minix和Unix思想的启发,是一个基于POSIX的多用户、多任务、支持多线程和多CP...

关键字: Linux 操作系统

本文中,小编将对嵌入式予以介绍,如果你想对它的详细情况有所认识,或者想要增进对它的了解程度,不妨请看以下内容哦。

关键字: 嵌入式 Linux
关闭
关闭