TI论坛
直播中

古贤睦

7年用户 198经验值
私信 关注
[问答]

请问在CMD文件中的section部分添加段是在PAGE 0中还是PAGE 1中定义段mysect?

1、将main中的数组变量放到RAML0段去:
     #pragma DATA_SECtiON(array,"mysect")
     _iq array[16][16];
     然后在CMD文件中的section部分添加以下段,请问是在PAGE 0中还是PAGE 1 中定义段mysect?
     mysect : > RAML0, PAGE = 0  /* Program Memory */  或PAGE 1  /* Data Memory */

2、
MEMORY
[
PAGE 0: /* Program Memory */
IQTABLES : origin = 0x3FE000, length = 0x000B50 /* IQ Math Tables in Boot ROM */
IQTABLES2 : origin = 0x3FEB50, length = 0x00008C /* IQ Math Tables in Boot ROM */
IQTABLES3 : origin = 0x3FEBDC, length = 0x0000AA /* IQ Math Tables in Boot ROM */
BOOTROM : origin = 0x3FF27C, length = 0x000D44 /* Boot ROM */
]
IQmath : > FLASHCD PAGE = 0    /* Math Code */

IQmathTables : > IQTABLES, PAGE = 0, TYPE = NOLOAD
/*  Uncomment the section below if calling the IQNexp() or IQexp() functions from the IQMath.lib library in order to utilize the relevant IQ Math table in Boot ROM (This saves space and Boot ROM is 1 wait-state). If this section is not uncommented, IQmathTables2 will be loaded into other memory (SARAM, Flash, etc.) and will take up space, but 0 wait-state is possible. */
IQmathTables2 : > IQTABLES2, PAGE = 0, TYPE = NOLOAD
[
IQmath.lib (IQmathTablesRam)
]
/* Uncomment the section below if calling the IQNasin() or IQasin() functions from the IQMath.lib library in order to utilize the
relevant IQ Math table in Boot ROM (This saves space and Boot ROM is 1 wait-state). If this section is not uncommented, IQmathTables2 will be loaded into other memory (SARAM, Flash, etc.) and will take up space, but 0 wait-state is possible. */

IQmathTables3 : > IQTABLES3, PAGE = 0, TYPE = NOLOAD
[
IQmath.lib (IQmathTablesRam)
]
IQmathTablesRam : LOAD = FLASHGH, PAGE = 1
                                     RUN = RAML1L2L3,PAGE = 1
                                    LOAD_START(_IQmathTablesRamLoadStart),
                                     LOAD_END(_IQmathTablesRamLoadEnd),
RUN_START(_IQmathTablesRamRunStart)
这几个段IQmath、IQmathTables、IQmathTables2、IQmathTables3、IQmathTablesRam有什么区别,分别是用来做什么的?
[ IQmath.lib (IQmathTablesRam) ]是什么功能?
IQmathTablesRamLoadStart、IQmathTablesRamLoadEnd要在main中哪里声明的?

回帖(3)

冯敬宇

2018-8-22 09:30:09
Haypin,
1.数据段放在page1.
2.IQmath、IQmathTables、IQmathTables2、IQmathTables3 对应不同的IQmath不同函数会用到的表格,IQmathTablesRam是定义了一个段,将某些IQmath函数放在RAM中跑。函数声明在main文件前面声明为外部变量。因为在main函数中会调用memcpy函数。
Eric
                                                                         - ERIC
举报

古贤睦

2018-8-22 09:35:27
引用: guigui_7044 发表于 2018-8-22 09:30
Haypin,
1.数据段放在page1.
2.IQmath、IQmathTables、IQmathTables2、IQmathTables3 对应不同的IQmath不同函数会用到的表格,IQmathTablesRam是定义了一个段,将某些IQmath函数放在RAM中跑。函数声明在main文件前面声明为外部变量。因为在main函数中会调用memcpy函数。

IQmathTablesRamLoadStart、IQmathTablesRamLoadEn是在哪个文件中声明的?
而RamfuncsLoadStart是在DSP2803x_GlobalPrototypes.h中声明的。好像是要自己在DSP2803x_GlobalPrototypes.h声明?
// External symbols created by the linker cmd file
// DSP28 examples will use these to relocate code from one LOAD location
// in Flash to a different RUN location in internal
// RAM
extern Uint16 RamfuncsLoadStart;
extern Uint16 RamfuncsLoadEnd;
extern Uint16 RamfuncsRunStart;
举报

冯敬宇

2018-8-22 09:48:22
引用: rxb88 发表于 2018-8-22 09:35
IQmathTablesRamLoadStart、IQmathTablesRamLoadEn是在哪个文件中声明的?
而RamfuncsLoadStart是在DSP2803x_GlobalPrototypes.h中声明的。好像是要自己在DSP2803x_GlobalPrototypes.h声明?
// External symbols created by the linker cmd file

Haypin,
只要在使用到这些变量的源文件之前,对这些变量进行声明就可以了,不管是使用include 头文件的方式,还是直接在main文件中进行声明,都可以。
Eric
                                                                         - ERIC
举报

更多回帖

发帖
×
20
完善资料,
赚取积分