TI中文支持网
TI专业的中文技术问题搜集分享网站

设备内存地址分配的问题

您好!

目前我门做boot需要把程序中的局部地址全部变为全局地址,目前遇见一些问题,麻烦Andy或者各位高人指导一下。

我目前的理解是这样的:

1. platform文件(因为我们用了bios)、cfg文件、cmd文件均可以进行地址分配。并且优先级从高到低,因为我们很多时候在cmd文件中写地址分配都无效,而如果cfg文件的地址分配核paltform文件的地址分配冲突的话,编译链接过程中也会报错;

2. 由于每个platform文件中必须制定代码段 程序段 栈的地址,由于都是全局地址,所以每个核都必须使用不同的platform文件,但是新建paltform文件十分繁琐,不知道我们使用的方法是否正确。

3.有些时候, 我们在cfg文件盒cmd文件中都指出这个heap申请在全局地址中,比如tcp3d的heap(我目前没有去深究为什么要申请这个heap)写了Program.sectMap["tcp3DrvHeapSection"]   =   Program.platform.dataMemory 或者 "CORE1_L2SRAM ",但是这个heap始终都在局部L2SRAM中申请,程序不会编译到paltform设定的全局地址中,有时候写了 Program.sectMap[".main_men"]   =   "CORE1_L2SRAM ";(TCP3d为什么有个这个段)链接也还会报错,请问这种问题如何解决?

谢谢!

Alan

chen xie:

防止沉贴,自顶一楼!

Andy Yin1:

一般cmd中包含两部分,一部分是Memory用于对memory进行段划分,一部分是section用于指定数据或代码段放到特定的memory划分段里。

platform中是对应CMD中的memory工作,而cfg中可以嵌入section的功能,同时在cmd中还可以附件一个附属cmd文件对memory进行细分,以及将自定义的section放到相应的段里。

platform中LL2可以使用局部地址0x00800000,其他的地址都是全局的逻辑地址,可以多核共享一个platform,之后可以在cfg或者cmd中指定每个core的堆栈存放位置。

TCP3D在bios中没有一个module,也没有对应的heap之类要求。

对应platform、memory等可以再稍微看看sysBios user guide中的相关章节。

赞(0)
未经允许不得转载:TI中文支持网 » 设备内存地址分配的问题
分享到: 更多 (0)