DSP芯片的存储资源管理.ppt

上传人:本田雅阁 文档编号:2891658 上传时间:2019-06-02 格式:PPT 页数:21 大小:179.52KB
返回 下载 相关 举报
DSP芯片的存储资源管理.ppt_第1页
第1页 / 共21页
DSP芯片的存储资源管理.ppt_第2页
第2页 / 共21页
DSP芯片的存储资源管理.ppt_第3页
第3页 / 共21页
DSP芯片的存储资源管理.ppt_第4页
第4页 / 共21页
DSP芯片的存储资源管理.ppt_第5页
第5页 / 共21页
点击查看更多>>
资源描述

《DSP芯片的存储资源管理.ppt》由会员分享,可在线阅读,更多相关《DSP芯片的存储资源管理.ppt(21页珍藏版)》请在三一文库上搜索。

1、,DSP芯片一般采用哈佛结构,这种结构将程序区、数据区和I/O区分开,每个存储区独立编址。为了提高运算速度,DSP芯片内部提供了一定数量的存储器,用于存放程序和数据。,存储器,存储器主要用于存储程序、数据、变量等 片内存储器,片外存储器。 片内存储器主要有ROM、RAM和flash等类型。不同类型的DSP芯片提供的片内存储器的类型和数量不同。,ROM,通用的DSP芯片中的ROM一般都包括引导装载(Bootloader)程序和中断矢量表。TMS320C54系列还有若干常用的数据表格,如正弦函数表、语音PCM编码用的/律扩展数据表,有些芯片内部有较大空间的ROM,ROM空间的一部分还可以映射到数据

2、空间和程序空间,可用于用户程序掩膜,此时的ROM称为定制ROM。用户可将测试通过的最终程序和数据以目标文件的格式提交给芯片生产公司,有公司将其转化为相应的代码并编程写入ROM,一旦写入ROM,则不能更改。,RAM,DSP芯片中RAM有SARAM和DARAM两种。 SARAM称为单访问RAM,即每个SARAM在1个机器周期内只能被访问1次,也就是说,每个机器周期只能进行1次读或写操作。 DARAM称为双访问存储器,每个DARAM在1个机器周期内能被访问两次,因此在同一个周期内,CPU和外设(如BSP和HPI)可以对DARAM进行读和写操作。RAM可以作为数据区或程序区使用,有些RAM空间还可以同

3、时映射到程序和数据空间。,Flash,有些DSP芯片提供有较大空间的Flash存储器(如TMS320F280x/F281x、TMS320LF240x),便于用户直接将程序和固定数据写入到Flash中运行。片内Flash存储器被映射到程序存储器。一般带有Flash的DSP芯片都提供加密功能,加密后,外部不能读出Flash中的内容。 外部扩展存储器 片内没有Flash的DSP芯片,一般都提供外部扩展总线,便于用户扩展外部存储空间。外部扩展存储器常用于存放用户程序。,Flash,用户程序一般在加电开机后有DSP芯片内部ROM中的Bootloader将存放在外部存储器中的用户程序引导加载到片内RAM高

4、速运行。如果片内RAM空间不够大,也可扩展外部RAM。如果仅用于存放用户程序,由于还要Bootloader引导加载,因此存储器宽度是8位或16位;而如果用户程序需要在外部存储器中运行,则扩展存储器的数据宽度需与指令宽度相同(如定点芯片的16位、浮点芯片的32位)。 即使外部存储器的速度足够快,也比不上程序在片内的运行速度。因此,系统设计是应尽可能选择片内RAM较大的DSP芯片,并将程序全部放在片内运行。,DSP芯片中的代码存储结构,通用目标文件格式(CommonObject File Format)是一种流行的二进制可执行文件格式,二进制可执行文件包括库文件(lib),目标文件(obj)最终可

5、执行文件(out)。,现今PC机上 的Windows95和NT4.0以后的操作系统的二进制文件格式(PE)就是在COFF格式基础上的进一步扩充。 DSP芯片的程序代码一般采用模块化结构存储。模块化结构的特点是结构清晰,便于程序代码的管理、分配与移植。 为了实现这种结构,TI公司的编译器和链接器所创建的目标文件采用一种称为COFF(Common Object File Format)的目标文件格式。,DSP芯片中的代码存储结构,采用COFF格式,有利于模块化编程,并且为管理程序代码和系统存储空间提供灵活的方法。 基于COFF格式编写汇编程序或C程序时,不必为程序代码或变量指定目标地址,为程序编写

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

7、化的变量保留空间,汇编器和链接器允许编程者建立和链接自定义的块,这些与.text .data .bss相似。 所有的块分为两类:已初始化和未初始化的。 已初始化块 包括程序代码和数据 .text 汇编指令代码 .data 常数数据(比如对变量的初始化数据) .sect 用户自定义的已初始化段 .asect 类似.sect,多了绝对地址定位功能,一般不用,未初始化块是为未初始化的数据在存储器映像中保留空间,.bss和用.usect汇编命令创建的块属于这一类。汇编器提供了若干将各种代码和数据段与相应的块联系的命令,汇编器是在汇编过程中建立这些块的。,汇编器对块的处理功能主要是确定汇编语言程序的各部

8、分属于哪个特定的块。汇编器用.text、.data、.sect、.asect、.bss、.usect命令完成对块的定位。其中,.text、.data、.sect和.asect命令建立已初始化的块,.bss和.usect命令则用来建立未初始化的块。 如果程序中没有用任何命令对块进行操作,则汇编器将把所有的程序块或数据块统一汇编到.text块中。,汇编器对已初始化块的处理 已初始化块包括已初始化的数据和程序代码。这部分块的内容存储在目标文件中。当程序下载时被下载到存储器中。每个已初始化块可以独立地进行重定位,并且可以引用其他块中定义的变量。链接器可以自动解决块与块之间变量引用的问题。 下面4个命令

9、将代码或数据存放在一个块中,其命令格式如下: .text,.data .sect “块名” .asect “块名”,地址 在这些命令中,.text和.data命令建立的块名称就是.text和.data,而后二个命令建立的块是自定义的块。其中.asect建立的块具有绝对地址,一般不要使用。当汇编器遇到上述命令时,立即停止汇编当前块,且开始将随后的代码或数据汇编到当前命令所对应的块中。,汇编器对未初始化块的处理,未初始化块在存储器中为没有初始化的数据保留空间,它们通常被分配到RAM中。程序在运行时利用这些空间创建和存储变量。 汇编器用.bss和.usect命令建立未初始化块。其中,.bss命令在.

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

11、法类似于.bss块;.sect和.asect建立包括代码和数据的块,用法类似于.text块和.data块。.sect命令建立的块是可重定位的,.asect命令建立的块是具有绝对地址的块,是不能重定位的。它们的命令格式如下: 变量.usect“块名”,块大小 .sect “块名” .asect “块名”,地址,块的链接,链接器对块的处理主要包括下面2个方面。首先,链接器将COFF目标文件中的块建立为程序块或数据块并以这些块作为输入块,链接器再把这些输入块组合起来以建立可执行的COFF输出模块。然后,链接器为输出块选择存储器地址。链接器提供Memory和Sections 2个命令来完成上述工作。其

12、中,Memory命令定义目标系统的存储器分配,程序员可以通过指定存储器起始地址和长度来定义每一块存储器。Sections命令定义如何组合输入块以及在存储器何处存放输出块。若不用这二条命令,链接器就会采用默认的分配方法;若采用这二条命令,则需要在链接器命令文件(扩展名为.cmd)中确定。,程序的重定位,汇编器对目标文件中的每个块汇编时都假定其起始地址为0, 所以每一块中的重定位符号都是相对于0地址而言的。当然, 所有的块在存储器中并不都是以0地址起始, 因此链接器用以下方法对每一个块进行重定位。首先,链接器把块分配到存储器中, 从而使各个块都有自己的起始地址; 然后调整符号值使之对应于新的块地址; 最后通过调整重定位后符号的参考值来反映调整后的符号值。 链接器利用重定位项来调整符号的参考值。汇编器在每次可重定位符号被参考时会建立一个重定位项, 链接器则在符号被重定位后利用这个重定位项来修正参考值。,用户编写的C源程序经过C编译器的处理后,转化为具有相同功能的汇编语言代码。之后再作为独立的汇编源程序经过汇编处理产生COFF目标文件,其中包含上述的各类程序块或数据块。接下来,链接器以这些块作为输入将其组合起来,并参照具体的CMD文件,最终生成可执行的COFF文件。此外在链接过程中系统将自动访问目标文件库和运行库,以简化链接过程,缩短链接过程所需的时间。,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1