This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] CCS / TMS320F28069:[创建".esysmem 和 quot;缺省大小为0x400]

Guru**** 2524550 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/861869/ccs-tms320f28069-creating-esysmem-section-with-default-size-of-0x400

器件型号:TMS320F28069

工具/软件:Code Composer Studio

这是我的[F28069_CLA_C_lnk.cmd]。  

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
_Cla1Prog_Start =_Cla1funcsRunStart;

--undef_sym=__cla_scratchpad_end
--undef_sym=__cla_scratchpad_start

存储器

第0页:/*程序内存*/
/*内存(RAM/FLASH/OTP)块可移动到第1页进行数据分配*/
RAML0:origin = 0x008000、length = 0x000800 //片上 RAM 块 L0 */
RAML3:origin = 0x009000,length = 0x001000 //片上 RAM 块 L3 */
RAML6L8:origin = 0x00E000、length = 0x001000 //片上 RAM 块 L3 *
OTP:origin = 0x3D7800,length = 0x000400 //片上 OTP */

FLASHH:origin = 0x3D8000,length = 0x004000 //片上闪存*/
FLASHG:origin = 0x3DC000、length = 0x004000 //片上闪存*/
FLASHF:origin = 0x3E0000,length = 0x004000 //片上闪存*/
FLASHE:origin = 0x3E4000、length = 0x004000 //片上闪存*/
FLASHD:origin = 0x3E8000、length = 0x004000 //片上闪存*/
FLASHC:origin = 0x3EC000,length = 0x004000 //片上闪存*/
FLASHA:origin = 0x3F4000,length = 0x003F80 //片上闪存*/
csm_RSVD:origin = 0x3F7F80,length = 0x000076 // FLASHA 的一部分。 当 CSM 正在使用时、使用所有0x0000进行编程。 *
begin:origin = 0x3F7FF6,length = 0x000002/* FLASHA 的一部分。 用于"引导至闪存"引导加载程序模式。 *
CSM_PWL_P0:origin = 0x3F7FF8,length = 0x000008 // FLASHA 的一部分。 FLASHA 中的 CSM 密码位置*/

FPUTABLES:origin = 0x3FD860,length = 0x0006A0 //引导 ROM 中的 FPU 表*/
IQTABLES:origin = 0x3FDF00,length = 0x000B50 //引导 ROM 中的 IQMath 表*
IQTABLES2:origin = 0x3FEA50,length = 0x00008C //引导 ROM 中的 IQMath 表*
IQTABLES3:origin = 0x3FEADC,length = 0x0000AA /*引导 ROM 中的 IQMath 表*/

ROM:origin = 0x3FF3B0,length = 0x000C10 //引导 ROM */
复位:origin = 0x3FFFC0,length = 0x000002 //引导 ROM 的部分*/
向量:origin = 0x3FFFC2,length = 0x00003E //引导 ROM 的部分*/

第1页:/*数据存储器*/
/*内存(RAM/FLASK/OTP)块可被移动至 PAGE0以进行程序分配*/
/*寄存器保留在第1页中*/

BOOT_RSVD:origin = 0x000000,length = 0x000050 // M0的一部分,引导 ROM 将此用于栈*/
RAMM0:origin = 0x000050、length = 0x0003B0 //片上 RAM 块 M0 *
RAMM1:origin = 0x000480,length = 0x000380 //片上 RAM 块 M1 */
CLARAM0:origin = 0x008800,length = 0x000400 //片上 RAM 块 L1 */
CLARAM1:origin = 0x008C00,length = 0x000400 //片上 RAM 块 L2 */
RAML4:origin = 0x00A000、length = 0x002000 //片上 RAM 块 L4 */
RAML5:origin = 0x00C000、length = 0x002000 //片上 RAM 块 L5 */
/*RAML6:origin = 0x00E000,length = 0x002000 *//*片上 RAM 块 L6 */
/*RAML7:origin = 0x010000,length = 0x002000 */*片上 RAM 块 L7 */
/*RAML8:origin = 0x012000,length = 0x002000 *//*片上 RAM 块 L8 */
FLASHB:origin = 0x3F0000,length = 0x004000 //片上闪存*/

CLA1_MSGRAMLOW:origin = 0x001480,length = 0x000080
CLA1_MSGRAMHIGH:origin = 0x001500,length = 0x000080

部分

/*分配计划领域:*/
.cinit:> FLASHA,page = 0
.pinit:> FLASHA,page = 0
.text >> FLASHA | FLASHC PAGE = 0
.cio:>RAML5,page = 1.
codestart:> begin,page = 0
ramfuncs:load = FLASHD,
运行= RAML0 | RAML6L8、
load_start (_RamfuncsLoadStart)、
load_end (_RamfuncsLoadEnd)、
run_start (_RamfuncsRunStart)、
load_size (_RamfuncsLoadSize)、
PAGE = 0

csmpasswds:>csm_PWL_P0,page = 0
csm_rsvd:>csm_RSVD,page = 0

/*分配未初始化的数据段:*/
.stack:>RAMM0,page = 1.
.ebss:> RAML4,PAGE = 1
.esysmem:>RAML5,page = 1.

/*将初始化段放入闪存中*/
/*要使 SDFlash 对这些内容进行编程、必须将它们分配到第0页*/
econst:> FLASHA,PAGE = 0
.switch:> FLASHA,PAGE = 0

/*分配 IQ 数学区域:*/
IQMath:> FLASHA,page = 0 /*数学代码*/
IQmathTables :>IQTABLES,PAGE = 0,TYPE = NOLOAD

Cla1Prog:load = FLASHD,
运行= RAML3、
load_start (_Cla1funcsLoadStart)、
load_end (_Cla1funcsLoadEnd)、
run_start (_Cla1funcsRunStart)、
load_size (_Cla1funcsLoadSize)、
PAGE = 0

Cla1ToCpuMsgRAM:> CLA1_MSGRAMLOW,page = 1.
CpuToCla1MsgRAM:>CLA1_MSGRAMHIGH,PAGE = 1.
Cla1DataRam0:> CLARAM0,PAGE = 1
Cla1DataRam1:> CLARAM1,PAGE = 1

CLA1mathTables:load = FLASHB,
运行= CLARAM1、
Load_start (_Cla1mathTablesLoadStart)、
Load_End (_Cla1mathTablesLoadEnd)、
run_start (_Cla1mathTablesRunStart)、
load_size (_Cla1mathTablesLoadSize)、
PAGE = 1.

CLAscratch:
{*。obj (CLAscratch)
。 += CLA_ScratchPad_size;
*。obj (CLAscratch_end)}> CLARAM1、
PAGE = 1.

/*分配 FPU 数学区域:*/
FPUmathTables:> FPUTABLES,PAGE = 0,TYPE = NOLOAD

DMARAML5:>RAML5,PAGE = 1

.reset:> reset,page = 0,type = DSECT
VECTORS:> VECTORS,PAGE = 0,TYPE = DSECT

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

我观察到、如果 Data struct 定义了构造函数、则会引发编译器警告:

警告#10210-D:创建默认大小为0x400的".esysmem"段;使用-heap 选项更改默认大小"。


对我来说没有意义、编译器似乎推断了需要的堆。

此致。