ADI Blackfin DSP处理器-BF533的开发详解13:LDF内存分配的详解(含源代码)
创始人
2024-03-29 06:08:01

硬件准备

ADSP-EDU-BF533:BF533开发板
AD-HP530ICE:ADI DSP仿真器

软件准备

Visual DSP++软件

硬件链接

在这里插入图片描述

功能介绍

ADSP上的LDF(Linker Description Files)连接器描述文件是处理器用来进行资源分配的文件,通过对LDF文件的修改,可以分配自己需要的空间片断。通常情况下,不需要对LDF文件进行修改,通过简单指令即可使用LDF文件分配的空间,本章介绍一下如何通过LDF文件指定代码使用内存。

LDF 文件的生成

用 Visual DSP++ 软件,连接好板卡,打开要添加 LDF 文件的工程,在工程名上按鼠标右键,选择“工程选项”。

在这里插入图片描述

在弹出窗口中选择“add Startup Code/LDF”

在这里插入图片描述

选择“Add an LDF and startup code”后,在左边窗口会出现关于 LDF 的选项操作。

在这里插入图片描述

如图,把使用外部 SDRAM 选项勾上,选择与板卡 SDRAM 容量匹配的选项,ADSP-EDU-BF533 板卡的 SDRAM容量为 32MB。选好后点“确定”。

在这里插入图片描述

在弹出的选择框上选择“是”

在这里插入图片描述

在工程里会自动添加 LDF 及其相关文件

在这里插入图片描述

LDF 文件说明

使用图形打开,在 LDF 文件上进行双击鼠标左键,或者按右键在弹出菜单中按下图选择,会弹出 LDF 文件的图形界面。

在这里插入图片描述

图形界面分左右两个窗口,左边为 LDF 文件分配的空间片断的标识符。右边为 DSP 整个空间的分配地址和使用情况。从左边的标识符中可以看到 SDRAM 区域分为 sdram0,sdram0_bank1, sdram0_bank2, sdram0_bank3 等区域,如果要使用 SDRAM 的空间,就可以通过这些描述符来定义。

在这里插入图片描述

可以点击右上角放大按钮,将内存分布放大,观察当前内存使用情况。

在这里插入图片描述

使用代码打开

在 LDF 文件上按右键在弹出菜单中按下图选择,会以代码方式打开文件。

在这里插入图片描述

在代码中,可以找到如下图代码,该代码是指定 DSP 所使用空间的大小分配表,可以根据需要修改其空间分配的大小。

在这里插入图片描述

搜索“MEM_SDRAM0_BANK1”,可以找到如下代码,该代码中调用了很多库函数,来定义空间功能,最后对该空间片断做了标识符映射,其标识符为“sdram0_bank1”,通过调用该标识符,可以使用该空间。如果自己定义一个
空间片断,可以在上面的空间地址中定义一个空间片断的地址区域,注意不要使空间重复,然后复制下面的代码,建立一个自定义空间的功能描述,修改为自己定义的描述符即可。

在这里插入图片描述

在 LDF 文件定义空间时,常在空间片断描述符后面看到“ZERO_INIT”标志,该标志表示在编译代码时,将该段空间清为 0,也可以不对该空间操作,其标识符写作“NO_INIT” 将 sdram0_bank0 初始化时数据清为 0:

在这里插入图片描述

在正常使用时,原则上不建议大家来修改 LDF 的代码,以免因为 LDF 文件问题,为开发后期来带麻烦。

如何使用 LDF 文件定义的空间

要在代码中使用 LDF 文件定义的空间,可以通过“section(“ *** ”)”指令来定义,“***”代表空间片断标识符,即用图形界面打开,在左边窗口中看到的空间片断名称。

如定义一个数组“buffer[10000]”,将其放到“sdram0_bank1”的空间地址中,可以定义如下:

在这里插入图片描述

在 VDSP 软件上,打开 memory 查看窗口

在这里插入图片描述

在窗口中输入定义的数组名称,按“回车”键,找到内存中该数组定义的位置。

在这里插入图片描述

从上图中可以看到,buffer 这个数组被定义在了 0x800000 这个地址区域,通过下图可以看出,这个地址位于sdram0_bank1 的起始地址。

在这里插入图片描述

除了将一个数组定义在指定的空间片断,还可以指定一个函数,定义在指定的片断,其定义方法是在函数前面加入定义使用空间的指令。

通过 memory 查看器,可以看到在默认情况下,“Set_PLL” 函数是定义在地址 0xffa00a1c 地址,该代码断位于“L1_CODE”地址。

在这里插入图片描述

现指定“Set_PLL”函数将其放入“sdram0_bank2”空间

在这里插入图片描述

在 Visual DSP++ 软件上,如果定义的数组过大,超过了 L1 的空间,即使不使用“section”指令指定放置在SDRAM 空间,系统也会自动将该数组放置在 SDRAM 空间中,但前提是必须使用该工程生成 LDF 文件。

对于早期的 VDSP 软件版本,则没有该功能,必须指定数组放置的空间。如果该工程没有自动生成 LDF 文件,也可以拷贝其他的 LDF 文件到该工程文件夹下,然后添加到该工程中,同样可以通过“section”指令指定使用。

代码实现功能

代码实现了通过工程生成 LDF 文件,通过“section”指令定义一个数组和一个函数的空间,通过 memory 查看器查看该数组和函数定义的空间地址。运行代码,代码会将变量 i 生成的数据写入 buffer 数组内。

可以看到通“section”指令指定的数组和函数位于内存中位置的变化。

完整代码

#include

section(“sdram0_bank1”) unsigned char buffer[100000];

section(“sdram0_bank2”)
void Set_PLL(unsigned int pmsel,unsigned int pssel)
{
unsigned int new_PLL_CTL;
*pPLL_DIV = pssel;
asm(“ssync;”);
new_PLL_CTL = (pmsel & 0x3f) << 9;
*pSIC_IWR |= 0xffffffff;
if (new_PLL_CTL != *pPLL_CTL)
{
*pPLL_CTL = new_PLL_CTL;
asm(“ssync;”);
asm(“idle;”);
}
}

void Init_EBIU(void)
{
*pEBIU_AMBCTL0 = 0x7bb07bb0;
*pEBIU_AMBCTL1 = 0xffc07bb0;
*pEBIU_AMGCTL = 0x000f;
}

void Init_SDRAM(void)
{
*pEBIU_SDRRC = 0x00000817;
*pEBIU_SDBCTL = 0x00000013;
*pEBIU_SDGCTL = 0x0091998d;
ssync();
}

void main(void)
{
unsigned int i;

Set_PLL(16,4);
Init_EBIU();	
Init_SDRAM();
for(i=0;i<1000;i++)buffer[i] = i;return 0;  	

}

上一篇:uni-app DAY08

下一篇:5702开发板用户手册

相关内容

热门资讯

埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
demo什么意思 demo版本... 618快到了,各位的小金库大概也在准备开闸放水了吧。没有小金库的,也该向老婆撒娇卖萌服个软了,一切只...
埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
demo什么意思 demo版本... 618快到了,各位的小金库大概也在准备开闸放水了吧。没有小金库的,也该向老婆撒娇卖萌服个软了,一切只...