DSP芯片的存储资源管理课件_第1页
DSP芯片的存储资源管理课件_第2页
DSP芯片的存储资源管理课件_第3页
DSP芯片的存储资源管理课件_第4页
DSP芯片的存储资源管理课件_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

DSP芯片一般采用哈佛结构,这种结构将程序区、数据区和I/O区分开,每个存储区独立编址。为了提高运算速度,DSP芯片内部提供了一定数量的存储器,用于存放程序和数据。存储器存储器主要用于存储程序、数据、变量等片内存储器,片外存储器。片内存储器主要有ROM、RAM和flash等类型。不同类型的DSP芯片提供的片内存储器的类型和数量不同。ROM通用的DSP芯片中的ROM一般都包括引导装载(Bootloader)程序和中断矢量表。TMS320C54系列还有若干常用的数据表格,如正弦函数表、语音PCM编码用的μ/律扩展数据表RAMDSP芯片中RAM有SARAM和DARAM两种。SARAM称为单访问RAM,即每个SARAM在1个机器周期内只能被访问1次,也就是说,每个机器周期只能进行1次读或写操作。DARAM称为双访问存储器,每个DARAM在1个机器周期内能被访问两次,因此在同一个周期内,CPU和外设(如BSP和HPI)可以对DARAM进行读和写操作。RAM可以作为数据区或程序区使用,有些RAM空间还可以同时映射到程序和数据空间。Flash有些DSP芯片提供有较大空间的Flash存储器(如TMS320F280x/F281x、TMS320LF240x),便于用户直接将程序和固定数据写入到Flash中运行。片内Flash存储器被映射到程序存储器。一般带有Flash的DSP芯片都提供加密功能,加密后,外部不能读出Flash中的内容。外部扩展存储器片内没有Flash的DSP芯片,一般都提供外部扩展总线,便于用户扩展外部存储空间。外部扩展存储器常用于存放用户程序。Flash用户程序一般在加电开机后有DSP芯片内部ROM中的Bootloader将存放在外部存储器中的用户程序引导加载到片内RAM高速运行。如果片内RAM空间不够大,也可扩展外部RAM。如果仅用于存放用户程序,由于还要Bootloader引导加载,因此存储器宽度是8位或16位;而如果用户程序需要在外部存储器中运行,则扩展存储器的数据宽度需与指令宽度相同(如定点芯片的16位、浮点芯片的32位)。即使外部存储器的速度足够快,也比不上程序在片内的运行速度。因此,系统设计是应尽可能选择片内RAM较大的DSP芯片,并将程序全部放在片内运行。DSP芯片中的代码存储结构采用COFF格式,有利于模块化编程,并且为管理程序代码和系统存储空间提供灵活的方法。基于COFF格式编写汇编程序或C程序时,不必为程序代码或变量指定目标地址,为程序编写、程序移植、程序升级提供了极大的方便。COFF文件格式的核心是使程序员在编写DSP程序时基于代码块和数据块的概念,而不是一条条指令或一个个数据。

COFF文件格式将代码块和数据块称为section,一个块(section)就是最终在存储器映象中占据连续空间的一段代码或数据。编译器/汇编器和链接器都提供了有关的命令来创建块和对块进行处理,编译器/汇编器创建的块得名称有些是已经定义好的,程序员也可自己定义块名。目标文件中的每一个块都是相互独立的,一般地,COFF目标文件应该包括三个默认的块:.text块通常包括可执行代码.data块通常包括已经初始化的变量;.bss块通常为未初始化的变量保留空间

未初始化块是为未初始化的数据在存储器映像中保留空间,.bss和用.usect汇编命令创建的块属于这一类。汇编器提供了若干将各种代码和数据段与相应的块联系的命令,汇编器是在汇编过程中建立这些块的。外部EPROM外部EPROM已初始化的程序存储器.text.data.bss目标文件片内RAM未初始化的数据存储器汇编器对块的处理功能主要是确定汇编语言程序的各部分属于哪个特定的块。汇编器用.text、.data、.sect、.asect、.bss、.usect命令完成对块的定位。其中,.text、.data、.sect和.asect命令建立已初始化的块,.bss和.usect命令则用来建立未初始化的块。如果程序中没有用任何命令对块进行操作,则汇编器将把所有的程序块或数据块统一汇编到.text块中。汇编器对已初始化块的处理已初始化块包括已初始化的数据和程序代码。这部分块的内容存储在目标文件中。当程序下载时被下载到存储器中。每个已初始化块可以独立地进行重定位,并且可以引用其他块中定义的变量。链接器可以自动解决块与块之间变量引用的问题。下面4个命令将代码或数据存放在一个块中,其命令格式如下:.text汇编器对未初始化块的处理未初始化块在存储器中为没有初始化的数据保留空间,它们通常被分配到RAM中。程序在运行时利用这些空间创建和存储变量。汇编器用.bss和.usect命令建立未初始化块。其中,.bss命令在.bss块中保留空间,.usect命令在自定义的块中保留空间。它们的命令格式如下:.bss

变量,块大小变量.usect“块名”,块大小汇编器遇到.bss和.usect命令时并不结束当前块,只是暂时离开当前块而去创建一个新块。所以,.bss和.usect命令可以出现在一个已初始化块中的任何地方,而不影响已初始化块的内容。汇编器对自定义块的处理自定义块是程序员自己建立的块,它与默认的.text、.data和.bss块的使用方法相同,而与默认块是分开汇编的。程序员可以用.usect、.sect和.asect命令建立自定义的块。其中,.usect建立的块用来在RAM中为变量保留空间,其用法类似于.bss块;.sect和.asect建立包括代码和数据的块,用法类似于.text块和.data块。.sect命令建立的块是可重定位的,.asect命令建立的块是具有绝对地址的块,是不能重定位的。它们的命令格式如下:变量.usect“块名”,块大小.sect“块名”.asect“块名”,地址块的链接

链接器对块的处理主要包括下面2个方面。首先,链接器将COFF目标文件中的块建立为程序块或数据块并以这些块作为输入块,链接器再把这些输入块组合起来以建立可执行的COFF输出模块。然后,链接器为输出块选择存储器地址。链接器提供Memory和Sections2个命令来完成上述工作。其中,Memory命令定义目标系统的存储器分配,程序员可以通过指定存储器起始地址和长度来定义每一块存储器。Sections命令定义如何组合输入块以及在存储器何处存放输出块。若不用这二条命令,链接器就会采用默认的分配方法;若采用这二条命令,则需要在链接器命令文件(扩展名为.cmd)中确定。用户编写的C源程序经过C编译器的处理后,转化为具有相同功

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论