简简单单学TI 多核DSP(3):多核DSP TMS320C6678的BOOT方式(一)

BOOT是什么?BOOT就是启动。做嵌入式设计的朋友知道,在应用设计时需要考虑到BOOT的设计,既方便程序下载,调试同时也要兼顾到系统正常运行。那么做DSP的设计是否也有这样的考虑呢?

  大家都知道,在DSP的调试之前,所有的可执行代码都是在PC机上,只有下载到DSP里面,DSP才能开始执行。当软件开发完成后,必须要脱离PC机,需要DSP完全独立工作。这个时候就必须要根据不同的需求,选择不同的BOOT模式,也就是选择不同的方式将可执行代码加载到DSP的高速存储器里面全速运行。可执行代码一般可选择放在FLASH中,或者其他的主机上,然后通过主机接口或者以太网接口下载到DSP 。

  对于单核DSP的BOOT,相对简单些。一般将可执行代码存放在ROM或者FLASH里面。 比如ROM BOOT模式,EDMA自动从CE1对应的存储器空间拷贝1KB的代码到DSP内部SRAM地址0x00000000,在EDMA工作期间,CPU停止工作,拷贝完成后,CPU开始运行。大家会问,如果代码大于1KB怎么办?其实这个问题非常简单。前面我们提到的,EDMA拷贝1KB的代码,那么大家是否想过,同样是利用这个拷贝1KB的代码的过程,是否可以完成大于1KB的代码的自启动呢?答案当然是肯定的。其实在其他的MCU嵌入式中早就使用了。就是利用这1KB的代码,将其设计为把FLASH中的代码全部拷贝到内部高速存储器,然后跳转到C语言环境初始化程序的入口处“_c_int00”,这样启动就完成了。那么我们把这1KB的代码叫做第二级启动加载程序。

  对于多核的C6678的DSP来说,就没这么简单咯,下面我来一一介绍。

  大家知道,在C6678的内部,固化了一段程序,也就是RBL程序。关于RBL的细节,感兴趣以及有基础的朋友,可以参考文献:
http://www.ti.com/lit/ug/sprugy5c/sprugy5c.pdf KEYSTONE架构的BOOTLOADER用户指南,在看懂这篇指南前,现需要熟悉C6678的数据手册。

  当DSP在上电复位后,RBL负责根据其配置将应用程序从慢速的外部存储器比如FLASH等或者是外接的主机或者网络等等地方搬到内部的高速存储器中运行。

  下图就是从C6678的数据手册(SPRS691E)中截取出来的,表示RBL在DSP的ROM中的位置,其起始地址是0x20B00000。

  DSP的BOOT过程,分为主机BOOT和存储器BOOT两种形式。顾名思义,主机BOOT,就是把DSP配置为从模式,DSP等待外部主机传送代码到其内部高速存储器执行。存储器BOOT模式呢,以DSP为主,DSP自动将外部存储器中存放的代码搬到其内部高速存储器并且运行。

  那么我们就看看,C6678的RBL为我们准备了多少种BOOT模式以及不同的BOOT模式所支持的外设情况。这一点非常重要,在做系统设计的时候,不能掉以轻心。因为一个小小的疏忽,可能导致你的系统设计满足不了客户的需求等等。

  以下的内容,是根据TI的多种资料由我个人进行整理,完整内容请参考官方文档。

  (1)EMIF16的BOOT模式:我们的用户代码存放在16BIT宽的外接存储器中,而且是异步加载。
  (2)SRIO的BOOT模式:这是前面说的主机BOOT模式。也就是说外面的主机通过串行高速接口加载用户的程序,这时候有两种选择。一是使用MESSAGING模式,二是使用Direct IO 接口模式。
  (3)以太网接口BOOT模式:这也是主机BOOT模式。外部主机通过以太网接口加载用户程序。这里有个问题需要注意:以太网通信是以数据包的形式进行,数据包加速器由核心参考时钟或者SerDes参考时钟驱动 。
  (4)PCIe的BOOT模式:这依然是主机BOOT模式。外部主机通过PCI 接口加载程序到内部高速存储器运行。
  (5)主I2C的BOOT模式:这是属于存储器BOOT模式。而且DSP的I2C是主,外部I2C的存储器是从。用户程序存放在外部从I2C的EEPROM中,DSP以BOOT表格式中数据块的形式加载。
  (6)从I2C的BOOT模式:这是属于主机BOOT模式。DSP的I2C是从,外部I2C主机发送用户程序到DSP的存储器。同上面的模式一样,数据格式需要满足DSP的BOOT表的格式。可能很多的朋友会问,这种BOOT模式在哪里会用到?在单片的I2CEEPROM对应于多片DSP的场合下,用这种BOOT模式,可以大大节省BOOT时间。在通信或者图像处理中常常用到。
  (7)SPI的BOOT模式:这是属于存储器BOOT模式。DSP通过SPI外接的FLASH读入用户程序,同样数据格式也必须满足DSP的BOOT表的格式。
  (8)HYPERLINK BOOT模式:这是被动的主机BOOT模式。主机负责配置存储器同时加载用户程序并且直接BOOT DSP。

  那么是如何触发这些不同的BOOT模式呢?也就是说,DSP如何识别该用哪一种模式BOOT呢?

  BOOT过程取决于两个因素:一个就是通过DSP的硬件引脚的高低电平配置决定,另外一个就是触发BOOT过程的复位机制。

简简单单学TI 多核DSP(1):TMS320C6678的架构

简简单单学TI 多核DSP(2):TMS320C6678的时钟配置


欢迎微博@EEWORLD

(0)

相关推荐

  • 浅谈STM32的启动过程

    分享这篇文章,谈一下STM32启动流程.如果读者朋友已经有过汇编相关基础,能够够好理解本文内容.汇编语言是比C语言更接近机器底层的编程语言,能让我们更好的理解和操纵硬件底层. STM32三种启动模式 ...

  • [原创] 简简单单学TI 多核DSP(4):多核DSP TMS320C6678的BOOT方式(二)

    前面主要是讲了C6678的总体的BOOT方式.这一讲,告诉大家C6678从上电复位后的BOOTLOADER的工作情况. C6678的BOOT过程由COREPAC0执行.前面文章说到,C6678的BOO ...

  • 简简单单学TI 多核DSP(2):TMS320C6678的时钟配置

    做MCU及其他DSP的设计时,可能大家觉得时钟的设计其实是很简单的.没错,比如现在很热门的ARM系列的MCU,设计时没人单独提出来过什么时钟设计.为什么在提到TMS320C6678的时候要特别的提出时 ...

  • 简简单单学TI 多核DSP(1):TMS320C6678的架构

    一. 这么学DSP比较有效 在开始C6678的架构讲解之前,我想拉出一点篇幅,给大家谈一下,根据我个人的理解,怎么样才能比较快的学好DSP. (1)学习DSP,首先要与学MCU区分开,毕竟这是两个完全 ...

  • 一文读懂DSP C66x多核开发

    前 言 嵌入式领域的处理器已向多核架构迅速发展,TI公司的KeyStone架构的TMS320C6678是目前市面上性能最高的多核DSP处理器. TMS320C6678集成8核C66x DSP处理器,每 ...

  • 27款菜肴推荐,青山简简单单学美味营养,大人孩子都喜欢吃

    水煮肥肠 做法:1.肥肠洗净,加姜葱入高压锅10分钟,捞出切短段. 2.把金针菇.土豆粉.青笋尖.芹菜和豆芽汆水,放在煲仔的. 3.往净锅里舀入自制的香辣底料先炒香,再倒入鲜汤烧开,放入肥肠稍煮,捞入 ...

  • 简简单单学易经007 | 加大自己能力或气场的一个方法

    2017-02-03 简简单单学易经007 加大自己能力或气场的一个方法 文|闲云老叟 上文说到训练鸡的方法,是用土来生金,这只是针对鸡这种属金的特性而言. 如果训练狗,狗属土,就要训练狗的火方面的特 ...

  • 简简单单学易经005 | 人生的大部分问题,离不开这两种力量

    2017-02-01 简简单单学易经005 人生的大部分问题,离不开这两种力量 文 | 闲云老叟 传统文化一个非常鲜明的特点,是已非常简单的方法来解决这个繁复的世界或是世界的繁复. 而西方的文化特点是 ...

  • 简简单单学易经(1)| 先记住八个卦

    简简单单学易经(1)| 先记住八个卦 原创 闲云老叟 三才大道文化研究中心 2017-01-25 简简单单学易经(1) 先记住这八个卦 文|闲云老叟 很多人和后学交流,大家都想学易经,老是觉得难,望而 ...

  • 简简单单学易经002: 爻的叫法

    2017-01-26 简简单单学易经002: 爻的叫法 文|闲云老叟 "爻"这个字比较少见. 这个爻字读yáo,很像两个叉,叉用图形表示就是×,叉就是表示两个东西交叉到了一起了,爻 ...