微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > DSP编程技巧之答疑解惑

DSP编程技巧之答疑解惑

时间:10-15 来源:互联网 点击:

00, length = 0x008000 /* on-chip FLASH */

FLASHE : origin = 0x318000, length = 0x008000 /* on-chip FLASH */

...

}

合并之后的Flash区间为:

MEMORY

{

//

// Sectors E and F merged into one in the MEMORY description

//

...

FLASH : origin = 0x310000, length = 0x010000 /* on-chip FLASH F FLASH E */

...

}

方法二:反其道行之,把段分配到多个Flash模块中,与问答36的方法二是一致的,例如:

SECTIONS

{

.text: { *(.text) } >> FLASHE| FLASHH

}

4、 在cmd文件中,可以把相邻的SARAM模块组合为一个整体的区间吗?

答案是可以的,方法与Flash组合的方法一样。

虽然这样做是完全没有问题的,但需要牢记SARAM模块都是单个机器周期内只能访问一次的,所以为了优化程序的性能,最好把代码给分区到不同的物理SARAM模块中,这样可以减少大量读/写操作中的资源冲突。

5、对于DSP/BIOS的工程,如何了解链接的信息?

DSP/BIOS 的配置工具生成一个cmd文件,规定如何连接所有 DSP/BIOS 生成的程序段,并且默认链接至所有 C/C++ 语言编译程序生成的程序段。 当从 RAM 运行程序时,可能只需要这一个cmd文件就够了。但在当从Flash中执行时,很有可能需要生成且连接一个或多个自定义的程序段。

此外,任何配置片载Flash控制寄存器(例如,Flash等待状态)的代码不能从Flash执行。我们也许需要从 RAM(而非Flash)中运行特定时间关键函数来大幅提升性能。 必须创建一个自定义cmd来处理这些我们定义的程序段。可以参考Running an Application from Internal Flash Memory on the TMS320F28xx DSP这个文档,其示例代码在http://www.ti.com/general/docs/l ... 58fileType=zip。

需要注意的是,这些文档和程序与新版本的CCS中所包含SYS/BIOS并不是完全兼容的。此外,如果我们想使用第三方的操作系统,例如VxWorks、us/OS、INTEGRITY等,则要根据这些RTOS的特点进行内存的分配与管理。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top