多核DSP的BootLoader程序的实现

发布者:Blissful5最新更新时间:2008-11-27 来源: 电子技术应用关键字:DSP  多核  BootLoader  上电 手机看文章 扫描二维码
随时随地手机看文章

  DSP芯片的BootLoader程序用于实现用户程序上电自举,它有多种工作方式。上电自举就是将用户存放在片外的非易失性、慢速的存储器中的程序装载到片内易失的、高速的存储空间中,以保证用户程序在DSP核内的高速运行。

  多核DSP是指由多个独立的DSP子核集成的DSP芯片,且所有DSP子核共享一套片外总线。由于每个DSP子核内部都有其自身独立的掩模BootLoader程序,当DSP芯片上电或复位时,所有DSP子核都将自行启动自身独立的BootLoader程序,实现用户程序的上电自举。所以,多核DSP的BootLoader程序的实现方法与单核DSP的BootLoader程序的实现方法有较大的差异。为此,本文立足于实践,以双核DSP—TMS320VC5421的16位并行EPROM的BootLoader程序的工作方式为例,详细阐述了多核DSP的BootLoader程序的实现方法。

  1 BootLoader程序简介

  1.1 BootLoader程序的四种工作方式

  一般的DSP都采用常见的BootLoader程序工作方式来实现用户程序的上电自举:

  ·处理器通信口(主端口)HPI方式——通过DSP芯片与PC机或DSP芯片与其它DSP芯片之间的主机通信端口实现上电自举;

  ·8位或16位并行EPROM方式——通过DSP内核的DMA通道实现上电自举;

  ·8位或16位并行I/O方式——通过DSP芯片的片外并行I/O接口实现上电自举;

  ·8位或16位串行口方式——通过DSP芯片的串行端口实现上电自举。

  在以上四种工作方式中,最常用的是16位并行EPROM方式。即在DSP芯片上电或复位时,通过DMA通道将存储在核外EPROM中的程序以16位形式存储到核内的程序空间中。

  1.2 16位并行EPROM方式的Boot表

  各种方式的BootLoader程序都有其固定格式的Boot表,用来实现用户程序的上电自举。16位并行EPROM方式的Boot表如表1所示。表中的第1表项存放BootLoader程序工作方式控制字,用于DSP芯片上电或复位时确认该Boot表是否为16位并行EPROM工作方式的Boot表。该表项内容为10AAH,表示DSP内核认为该Boot表是16位并行EPROM工作方式的BootLoader程序的Boot表;否则DSP内核认为该Boot表不是16位并行EPROM的方式的Boot表;第2表项存放DSP特殊寄存器SWWSR在上电或复位时被赋予的初始化数值;第3表项存放DSP特殊寄存器BSCR在上电或复位时被赋予的初始化数值;第4表项存放用户程序将要被存放在DSP核内程序空间的页地址;第5表项存放用户程序将要被存放到DSP核内程序空间的页内偏移地址;从第6表项开始依次存放用户程序第m段代码的长度N。用户程序第m段代码将要被存放到DSP核内程序空间的页地址,用户程序第m段代码将要被存放到DSP核内程序空间的页内偏移地址,用户程序第m段代码的第1个字,第2个字,……,第N个字;Boot表的最后表项存放Boot表结束字0000H,表示Boot表到此结束。因此DSP内核要实现BootLoader程序,在上电复位后首先要申请到片外数据、地址总线的控制权,然后再根据Boot表完成用户程序上电自举过程。[page]

多核DSP的BootLoader程序的实现

  1.3 16位并行EPROM工作方式Boot表的生成

  所有BootLoader程序所需的Boot表的数据结构都是通过执行包含-v548参数的链接命令和Hex500转换命令的程序形成的。在链接过程中确定用户程序和数据的存放地址,在Hex500转换过程中定义BootLoader程序的工作方式和用户程序执行的入口地址等。

  为了生成16位并行EPROM方式的Boot表,首先,在链接程序时必须设置-v548选项;然后使用TI公司DSP开发工具自带的HEX500.EXE文件,根据用户的COFF格式的代码生成Boot表中的相应内容。

  HEX500.EXE可执行文件一般使用以下几种参数:

  (1) *.out : 用户的COFF格式的程序;

  (2) -e  : 确定用户程序的入口点;

  (3) -a  : 以ASCII形式,根据用户的*.out文件输出对应的HEX文件;

  (4) -boot: 实现用户程序的装载;

  (5) -bootorg : 确定生成哪种形式的Boot表;

  (6) -memwidth: 确定引导方式的位数;

  (7) -O *.hex : 输出的HEX文件的名称。

  例如:

  hex500 ti.out /*根据ti.out文件生成Boot表*/

  -e 0x4000   /*用户程序的入口点为0x4000*/

  -a       /*以ASCII形式输出HEX文件*/

  -boot     /*装载用户的程序ti.out*/

  -bootorg PARALLEL

  /*生成并行EPROM方式的Boot表*/

  -memwidth 16  /*生成16位的Boot表*/

  -o ti.hex   /*生成的HEX文件名为ti.hex*/

  执行完该HEX500.EXE命令后,系统会创建一个文件名为ti.hex的ASCII文件,然后用户根据ti.hex文件内容对EPROM进行编程就能产生上述的16位并行EPROM工作方式的Boot表。[page]

  2 多核DSP的BootLoader程序的实现

  目前TI公司已经不再局限于生产单核DSP。为了提高用户程序运行的效率,TI公司又推出了2核、4核等多核DSP。在实现多核DSP上电自举时,每一个子核都需要申请片外总线的控制权。对于单核DSP而言,只有一个DSP内核,对应一个BootLoader程序,DSP核可以永远拥有片外总线的控制权。但对于多核DSP而言,由于只有一套片外总线,所以片外总线的控制权不允许也不可能永远被其中的某一个DSP子核所拥有。因此,多核DSP需要片外总线仲裁机制,以避免片外总线冲突。

  下面以双核DSP—TMS320VC5421的16位并行EPROM方式的BootLoader程序实现过程为例,详细阐述多核DSP的BootLoader程序的实现。

  2.1 TMS320VC5421结构简介

  TMS320VC5421 16位定点双核DSP,它集中了早期TMS320C54X系列DSP的优点,并提供了许多新的功能。其内部结构与TMS320C54X系列的其它款式DSP有很大的不同,其简单结构框图如图1所示。

多核DSP的BootLoader程序的实现

  由于每个DSP子核的工作频率是100MHz,所以它的工作速率可达到200MIPS,且它的每一个DSP子核都具备单核DSP(如TMS320VC5402)的所有特性。

  2.2 TMS320VC5421的16位并行EPROM工作方式的BootLoader程序的选择

  TMS320VC5421的两个DSP子核在DSP芯片上电或复位时,能否启动各自的BootLoader程序以完成上电自举功能,是由每个子核自身的XIO和GPIO0/ROMEN两个管脚决定的。在DSP芯片上电或复位时,每个DSP子核自动检测自身的XIO和GPIO0/ROMEN两个管脚,如果对应的XIO和GPIO0/ROMEN两个管脚都为高电平,则启动自身的BootLoader程序完成用户程序的上电自举。[page]

  每个DSP子核启动BootLoader程序后,采用哪一种BootLoader程序的工作方式是由各自的GPIO1管脚的状态和各自以DMA方式从核外数据空间0000H地址单元读入的数据决定的:检测GPIO1管脚,如果GPIO1管脚为高电平,则采用串行口EEPROM的BootLoader工作方式,否则采用并行EPROM的BootLoader工作方式。若DSP子核的DMA通道读入核外数据空间0000H单元中的数据为10AAH,则采用16位并行EPROM的BootLoader工作方式;若读入的数据为xx08H或xxAAH,则采用8位并行EPROM的BootLoader工作方式。否则将重新判断GPIO1管脚的电平,进入死循环。

  2.3 TMS320VC5421的BootLoader程序片外总线冲突的解决

  DSP核的BootLoader程序总是在DSP核上电或复位时启动,且一启动BootLoader程序,对应的DSP核就要申请核外的总线控制权。因此为了避免多核DSP的各个DSP子核启动BootLoader程序时引起的片外总线冲突,可通过控制每个DSP子核的复位过程,使每个DSP子核在不同的时间内启动自身的BootLoader程序来解决片外总线冲突的问题。

  为了实现两个DSP子核复位过程的分离,应采用如图2所示的DSP子核复位过程控制方法。

多核DSP的BootLoader程序的实现

  由于TMS320VC5421中A核拥有倍频的锁相环电路,所以首先复位A核,启动A核的BootLoader程序,实现A核的用户程序上电自举。然后再由A核的用户程序控制B核的复位过程,启动B核的BootLoader程序,实现B核的用户程序上电自举。

  在A核的BootLoader程序执行完后,A核就会执行自身的用户程序代码。A核的用户程序代码释放片外总线的控制权,并且控制B核的复位管脚,促使B核启动自身的BootLoader程序。如果此时A核中的用户代码又申请片外总线控制权或正在使用片外总线,就会造成片外总线冲突。解决此冲突的办法有如下两个:[page]

  ·粗略估计B核的BootLoader程序执行时间,在A核的有效程序代码前加一个延迟程序。

  ·在A核的有效程序代码前加入一个死循环程序,当B核BootLoader程序执行完后,B核通知A核,A核就跳出这个死循环程序,开始执行自己的有效代码。

  2.4 TMS320VC5421的16位并行EPROM工作方式的BootLoader程序的编程实现

  首先设计一个简单的电路图,如图3所示。在DSP的A_XF和B_XF两个管脚分别连接一个发光二极管,A核以2Hz的频率点亮发光二极管,B核以10Hz的频率点亮发光二极管。将128K的FLASH(SST39VF400A)分成两页,每页为64K。FLASH的页的选择由TMS320VC5421的A_BDXO管脚控制。当A_BDX0为低电平,即FLASH的A16地址线为低电平时,选中FLASH的第一页,由FLASH的A0~A15地址线选择页内地址,用于存放A核的16位并行EPROM工作方式的Boot表。当A_BDX0为高电平,即FLASH的A16地址线为高电平时,选中FLASH的第二页,由FLASH的A0~A15地址线选择页内地址,用于存放B核的16位并行EPROM工作方式的Boot表。

  CPU_A和CPU_B的程序流程图分别如图4和图5所示。

多核DSP的BootLoader程序的实现

多核DSP的BootLoader程序的实现

  (1)片外总线冲突的解决

  估算B核执行BootLoader程序所需的时间后,在A核的用户有效程序之前,加一段延迟程序。

  延迟的时间计算如下:

  TMS320VC5421DSP的DMA通道从片外数据空间读取一个字到片内数据空间,需要7个指令周期时间。

  统计用户程序大小,将对应Boot表中的所有段的大小相加:N1+N2+...=N。

  延迟的时间为N×7=7N个指令周期。

  由上面所述的方法可知,只需在开始执行A核的有效程序之前加一段延迟7N个指令周期的代码即可。

  (2)生成Boot表

  对CPU_A来说,以A核程序流程图建立一个项目Ati.msk。产生Ati.out文件后,进入该目录的DOS环境,键入:

  hex500 Ati.out-a-e 0x4000h-boot-bootorg PARALLEL-memwidth 16-romwidth 16-o Ati.hex

  生成A核的16位并行EPROM工作方式的Boot表。

  对CPU_B来说,同样以B核程序流程图建立一个项目Bti.msk。产生Bti.out文件后,进入该目录的DOS环境,键入:

  hex500 Bti.out-a -e 0x4000h-boot-bootorg PARALLEL-memwidth 16-romwidth 16-o Bti.hex

  生成B核的16位并行EPROM工作方式的Boot表。

  在实现双核DSP的上电自举后,A核和B核的用户程序将会被存放在核内程序空间的不同页面上。如从DMA的角度观看:A核的用户程序将被存放在A核的程序空间的第0页上;B核的用户程序将被存放在B核的程序空间的第2页上。因此A核的Boot表不需要修改,而B核的Boot表中的所有存放页地址的表项中的内容要更改为2。

  (3)FLASH编程实现

  根据FLASH芯片的控制时序,编写一个简单的DSP程序,用于将A核的Boot表写入FLASH的低64K,将B核的Boot表写入FLASH的高64K。

  3 上电试验结果

  将电路上电后,A核控制的发光二极管开始闪烁,B核控制的发光二极管也开始闪烁,且A核发光二极管闪烁频率要低于B核发光二极管闪烁频率。由此现象可得出:A核与B核的BootLoader实现成功,未产生片外总线冲突;A核以2Hz的频率点亮发光二极管,B核以10Hz的频率点亮发光二极管。

关键字:DSP  多核  BootLoader  上电 引用地址:多核DSP的BootLoader程序的实现

上一篇:基于TMS320VC5509实现MP3解码
下一篇:基于DSP的数据处理模块的设计

推荐阅读最新更新时间:2024-05-02 20:43

一种基于NiosⅡ的可重构DSP系统设计
  为了解决传统 DSP 所面临的速度低、硬件结构不可重构、开发升级周期长和不可移植等问题,本文应用Altera公司推出的 NiosII 嵌入式软核处理器,提出了一种具有常规 DSP 的 NiosII 系统功能SOPC解决方案。由于可编程的 NiosII 核含有许多可配置的接口模块,用户可根据设计要求,利用QuartusII和 SOPC Builder对NiosII及其外围系统进行构建。用户还可通过Matlab和 DSP Builder,或直接用VHDL等硬件描述语言,为NiosII嵌入式处理器设计各类硬件模块,并以指令的形式加入到NiosII的指令系统中,使其成为NiosII系统的一个接口设备,与整个
[嵌入式]
DSP市场急刹车 TI从多方面寻求创新与突破
日前,调研公司iSuppli发布的一项预测中指出,今年全球的DSP销售收入将会首次出现负增长,即2007年全球DSP的销售收入增长为-0.6%,而就在2006年全球DSP的增长还是12.3%,在各类半导体器件中属于增长率较高的领域。为什么会出现如此大的倒退呢?iSuppli副总裁Dale Ford对《国际电子商情》记者解释:“我们预测2007年DSP销售收入出现下降的主要原因有两个:一个是由于在手机市场,TI的收入下降、ADI的退出导致以DSP架构为主的基带芯片收入降低,而以ASIC/ASSP逻辑IC架构形式的基带芯片收入上升,比如联发科、高通和英飞凌的基带均属于这一类;第二个是DSP的平均价格不断下降,所以也导致收入下降。当然,从
[焦点新闻]
基于PXA255的嵌入式Linux应用平台的构建
1 引言 嵌入式Linux(Embedded Linux)是指对Linux经过小型化裁剪后,能够固化在容量仅有几十万字节的存储器芯片或单片机中,应用于特定嵌入式场合的专用Linux操作系统。嵌入式Linux是由很多体积小且性能高的微内核系统组成,在内核代码完全开放的前提下,不同领域和不同层次的用户可以根据自己的应用需要很容易地对内核进行改造,在低成本的前提下,设计和开发出真正满足自己需要的嵌入式系统。 随着电子市场的发展壮大,高性能低功耗的多媒体手提设备和无线设备越来越受到市场的欢迎,Intel XScale PXA255处理器正是针对这一情况推出的。它采用Intel XScale微结构体系框架,采用ARMV5TE的7级超流水
[单片机]
ADI ADAU1701DSP数字音频处理方案
ADIADAU1701DSP数字音频处理方案 ADAU1701是一款完整的单芯片音频系统,包含28/56 bit音频DSP、ADC、DAC以及类似微控制器的控制接口。信号处理包括平衡、混音、低音增强、多波段动态处理、延迟补偿以及立体声图像扩展等,可以对现实世界的扬声器、放大器与收听环境的限制进行补偿,对感受到的音频质量进行动态改进。 ADAU1701的信号处理可以同高端立体声设备中的信号处理相媲美。大多数处理是由完全的56 bit双精度模式完成的,因此带来非常优良的低电平信号性能。ADAU1701是完全可编程数字信号处理器。易于使用的SigmaStudio软件允许用户利用双二阶滤波器、动态处理器、电平控制以及GPIO接口控
[嵌入式]
ADI ADAU1701<font color='red'>DSP</font>数字音频处理方案
ADI推出双核Sharc+处理器,剑指高性能工业
处理器领域三大趋势 ADI公司DSP亚太区业务经理陆磊总结了处理器发展的四大趋势, 首先随着数据量的 增加,实时算法的复杂度增加以及对浮点算法的需要,数字信号处理功能越来越普遍,包括 DSP内核或者硬件加速处理器等都成了处理器必备因素。第二大趋势则是低功耗需求越来越 明显,因为在如今的应用环境下,系统对散热性要求非常高。第三大趋势则是对于软件的要 求提高,随着IP保护,网络传输安全性等要求的提高,产品迭代速度加快,客户对于代码管 理的需求越来越多。第四大趋势则是用户对于ARM的需求越来越多,一方面是在接口上ARM处 理器支持得更全,另外则是可以更方便的支持操作系统。 客户的算法需要更多的字长和更大的计算范围,这
[嵌入式]
一种基于DSP处理器的车载导航系统设计方案
  数字信号微处理器 DSP 具有高速运行与数据处理的功能,以其高性能和低功耗的优势为实时导航系统的数学计算提供了有效的硬件平台。在现代武器装备中,设计了基于DSP芯片的车载导航系统,其在民用和军事领域均发挥着重要作用,系统具有高可靠性、安全性等特点。   1 车载导航系统工作原理   车载导航系统的主要功能是定时采集陀螺正交编码信号、加速度计的输入和里程计输入信号,并对采集的数据进行必要的处理,以实现导航解算。同时将采集数据通过 RS422 总线和 CAN 总线发送至地面监测设备;并通过 RS422 总线接收相关的命令及参数。该系统结构如图1所示。      2 系统硬件设计   2.1 处理器及存储器设计   车载导航系
[嵌入式]
一种基于<font color='red'>DSP</font>处理器的车载导航系统设计方案
TMS320C6x DSP的FLASH引导方法研究与实现
摘要:介绍了TMS320C6x DSP的几种FLASH引导方法,比较了引导过程中基于软件流水的数据搬移方法和QDMA方式的数据搬移方法,并介绍了如何利用在系统编程(ISP)对上电引导程序进行FLASH编程。通过对实际的TMS32C6711 DSP电路调试实验,证明了以上方法简单易行。 关键词:FLASH存储器 上电引导 COFF文件格式 DSP FLASH存储器是在EPROM和EEPROM的基础上发展起来的一种非易失性存储器,在掉电情况下仍能保证数据不丢失,并能够在不离开电路板或据设备的情况下实施擦除和再编程操作。由于其具有结构简单、维护便利、存取速度快、对环境适应能力强、抗振性能好等优点十分适合于嵌入式系统的设计和开发,
[嵌入式]
基于DSP技术的EAS系统设计
    摘要: 基于数字信号处理芯片设计的EAS系统的工作原理、组成以及实现实时监控应解决的技术难点。提出了运用数字信号处理的算法识别标签的软件实现方法。给出了系统的硬件原理图和软件流程图。     关键词: EAS系统 DSP 离散付里叶变换 相关函数 现代商业经营模式逐渐由传统的基于框台的模式转变为开放的销售模式。这种新型的销售模式给消费者带来了便利,使之在更回自和宽松的购物环境下购物,但同时也增加了商品失窃的可靠性。商品电子防窃(Electronic Article Surveillance,简称EAS)系统能有效地抑制商场失窃现象,因而被广泛地使用。 1 EAS系统的结构 EAS系统由门
[应用]
小广播
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved