tag 标签: ldf

相关博文
  • 热度 17
    2012-5-3 10:19
    2291 次阅读|
    0 个评论
          LDF是ADI DSP处理器开发中的一个至关重要的技术点,也是困扰初学者的一个难点,我们为此做了一个LDF的专题,从简单易懂处入手,旨在稍微加快初学者对其的理解! http://player.youku.com/player.php/sid/XMzI0OTcwMDMy/v.swf 优酷链接:http://v.youku.com/v_show/id_XMzI0OTcwMDMy.html 清晰版下载地址:http://115.com/file/dn8vtfbq      如需提取码,则是: dn8vtfbq 开发板链接:http://item.taobao.com/item.htm?spm=1103Qmdt.3-3dfNy.h-1Akvusid=9026190872 LDF专题先发布了,视频采集模块会延后,我们要再对该模块的内容进行一下调整。手把手视频即将进入高级应用代码讲解的部分。我们在讲完了Blackfin处理器的外设、各个模块驱动之后,以高级应用代码的讲解,把多个模块的驱动结合起来,以应用开发的方式展现给大家,我想这个节奏应该比较符合学习的常规过程吧   3.10 BF53x_LDF 3.101 模块功能介绍 ADSP上的LDF(Linker Description Files)连接器描述文件是处理器用来进行资源分配的文件,通过对LDF文件的修改,可以分配自己需要的空间片断。通常情况下,不需要对LDF文件进行修改,通过简单指令即可使用LDF文件分配的空间,本章介绍一下如何通过LDF文件指定代码使用内存。 3.102 LDF文件的生成 用Visual DSP++ 5.0  软件,连接好板卡,打开要添加LDF文件的工程,在工程名上按鼠标右键,选择“工程选项”。   在弹出窗口中选择“add Startup Code/LDF”   选择“Add an LDF and startup code”后,在左边窗口会出现关于LDF的选项操作。   如图,把使用外部SDRAM选项勾上,选择与板卡SDRAM容量匹配的选项,ADSP-EDU-BF533板卡的SDRAM容量为32MB。选好后点“确定”。   在弹出的选择框上选择“是”   在工程里会自动添加LDF及其相关文件     3.103 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:   将sdram0_bank0 初始化时保持原数据:   在正常使用时,原则上不建议大家来修改LDF的代码,以免因为LDF文件问题,为开发后期来带麻烦。 3.104 如何使用LDF文件定义的空间 要在代码中使用LDF文件定义的空间,可以通过“section(“  ***  ”)”指令来定义,“***”代表空间片断标识符,即用图形界面打开,在左边窗口中看到的空间片断名称。 如定义一个数组“buffer ”,将其放到“sdram0_bank1”的空间地址中,可以定义如下:   在VDSP软件上,打开memory查看窗口     在窗口中输入定义的数组名称,按“回车”键,找到内存中该数组定义的位置。   从上图中可以看到,buffer这个数组被定义在了0x800000 这个地址区域,通过下图可以看出,这个地址位于sdram0_bank1的起始地址。     除了将一个数组定义在指定的空间片断,还可以指定一个函数,定义在指定的片断,其定义方法是在函数前面加入定义使用空间的指令。 通过memory查看器,可以看到在默认情况下,“Set_PLL” 函数是定义在地址0xffa00a1c地址,该代码断位于“L1_CODE”地址。   现指定“Set_PLL”函数将其放入“sdram0_bank2”空间   在Visual DSP++ 5.0 up 8软件上,如果定义的数组过大,超过了L1的空间,即使不使用“section”指令指定放置在SDRAM空间,系统也会自动将该数组放置在SDRAM空间中,但前提是必须使用该工程生成LDF文件。对于早期的VDSP软件版本,则没有该功能,必须指定数组放置的空间。 如果该工程没有自动生成LDF文件,也可以拷贝其他的LDF文件到该工程文件夹下,然后添加到该工程中,同样可以通过“section”指令指定使用。 3.105 代码实现功能 代码实现了通过工程生成LDF文件,通过“section”指令定义一个数组和一个函数的空间,通过memory查看器查看该数组和函数定义的空间地址。运行代码,代码会将变量i生成的数据写入buffer数组内。 3.106 测试结果        可以看到通“section”指令指定的数组和函数位于内存中位置的变化。