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.

[参考译文] TMS320F28069:配置链接器命令文件以在 TMS320F28069中从闪存运行 CLA。

Guru**** 2306520 points
Other Parts Discussed in Thread: TMS320F28069, C2000WARE
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/915449/tms320f28069-configuring-linker-command-file-to-run-cla-from-flash-in-tms320f28069

器件型号:TMS320F28069
主题中讨论的其他器件: C2000WARE

您好!  

我计划在 TMS320F28069中使用 CLA 进行控制环路计算。

因此、我参考了"CLA_SIN"示例和下面修改的链接器命令文件。

我已附加链接器文件。

请,任何人都可以建议我进行进一步更改或正确配置。

============================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================ 用于
从闪存运行的*//*特定于用户的链接器命令文件*/
/*==================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================== //
//*文件:F2806x_flash_DeadBandPWM.CMD
// */
/*说明:用户自定义段的链接器命令文件、专用于从
闪存运行*//*。*/
* */
/*目标:TMS320F2806x*/
* */
*版本:1.0*/
* */
//*--------------------------------------------------------------------------------------------------------------- */
/*版权所有德州仪器Copyright2010*/
//*--------------------------------------------------------------------------------------------------------------- */
/*修订历史记录: */
//*--------------------------------------------------------------------------------------------------------------- */
/*日期|说明 */
//*--------------------------------------------------------------------------------------------------------------- */
* 01/11/11|版本1.0*/
//*--------------------------------------------------------------------------------------------------------------- //


*定义 F2806x 的存储器块开始/长度
PAGE 0将用于组织程序段
PAGE 1将用于组织数据段

注意:
F2806x 上的存储器块是一致的(即相同的
物理存储器)。
不应该是相同的存储器区域
同时为 PAGE 0和 PAGE 1定义。
这样做将导致程序损坏
和/或数据。

L0存储器块被镜像-即
它可以在高内存或低内存中访问。
为简单起见、其中仅使用了一个实例
链接器文件。

可以是连续的 SARAM 存储器块或闪存扇区
组合在一起以创建更大的存储器块。
*/

MEMORY
{
PAGE 0:
/*程序存储器*/*
内存(RAM/FLASH/OTP)块可移动到 Page1进行数据分配*/

BOOT_RSVD:origin = 0x000000,length = 0x000050 //
程序:origin = 0x008000、length = 0x000C00
CLAPROGRAM:origin = 0x009000、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进行编程。 */
开始 :origin = 0x3F7FF6,length = 0x000002 /* FLASHA 的一部分。 用于"引导至闪存"引导加载程序模式。 CSM_PWL
:origin = 0x3F7FF8、length = 0x000008 /* FLASHA 的一部分。 FLASHA */

FPUTABLES 中的 CSM 密码位置: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/FLASH/OTP)块可移动到 PAGE0进行程序分配*/
*/*寄存器保持在页1 */

RAMM0上 :origin = 0x000050、length = 0x0003B0 /*片上 RAM 块 M0 */
RAMM1 :origin = 0x000400、length = 0x000400 /*片上 RAM 块 M1 */
DataRAM:origin = 0x008C00,length = 0x001400
CLA1_MSGRAMLOW:origin = 0x001480,length = 0x000080
CLA1_MSGRAMHIGH:origin = 0x001500,length = 0x000080
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 = 0x3F4000,length = 0x002000
}


SECTIONS
{//


分配程序区域:*/


.cinit:> FLASHA、 PAGE = 0.Pinit
:> FLASHA、 PAGE = 0.text
:> FLASHA | FLASHC | FLASHD、 PAGE = 0

codestart :>开始 PAGE = 0
ramfuncs :load = FLASHA,
运行=程序、
load_start (_RamfuncsLoadStart)、
load_end (_RamfuncsLoadEnd)、
run_start (_RamfuncsRunStart)、
PAGE = 0

csmpasswds :>CSM_PWL PAGE = 0
csm_rsvd :>csm_RSVD page = 0

Cla1Prog :load = FLASHE、
运行= CLAPROGRAM、
Load_start (_Cla1ProgLoadStart)、
load_size (_Cla1ProgLoadSize)、
run_start (_Cla1ProgRunStart)、
PAGE = 0

/*分配未初始化的数据段:*/
.stack :> RAMM0, PAGE = 1.ebss
:> DataRAM,page = 1
.esysmem :> DataRAM, PAGE = 1
Cla1ToCpuMsgRAM:> CLA1_MSGRAMLOW,PAGE = 1
CpuToCl1MsgRAM:> CLA1_MSGRAMIGH,PAGE = 1
Cla1DataRam0 :> RAML4, PAGE = 1
Cla1DataRam1 :> RAML4, PAGE = 1
Cla1DataRam2 :> RAML4, PAGE = 1
#ifdef CLA_C
.scratchpad :> RAML4, PAGE = 1.bss_cla
:> RAML4, PAGE = 1.CONST_CLA
:> RAML4, PAGE = 1
#endif

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

/*分配 IQ 数学区域:*/
IQmath :> FLASHA PAGE = 0 /*数学代码*/
IQmathTables :>IQTABLES page = 0,type = NoLoad /* ROM 中的数学表*/

/*如果调用 IQNexp()或 IQexp(),请取消注释以下部分
库中的函数、以便利用
引导 ROM 中的相关 IQ Math 表(这可以节省空间和引导 ROM
1个等待状态)。 如果此部分未注释、则为 IQmathTables2
将被加载到其他存储器(SARAM、闪存等)中并将采用
上行空间、但0等待状态是可能的。
//
/*
IQmathTables2:> IQTABLES2,page = 0,type = NoLoad
{

IQMath.lib (IQmathTablesRam)

}
//
//*如果调用 IQNasin ()或 IQasin (),请取消注释以下段
库中的函数、以便利用
引导 ROM 中的相关 IQ Math 表(这可以节省空间和引导 ROM
1个等待状态)。 如果此部分未注释、则为 IQmathTables2
将被加载到其他存储器(SARAM、闪存等)中并将采用
上行空间、但0等待状态是可能的。
//
/*
IQmathTables3:> IQTABLES3,page = 0,type = NoLoad
{

IQMath.lib (IQmathTablesRam)

}
*

复位 :>重置, PAGE = 0、TYPE = DSECT
向量 :>引导程序 PAGE = 0、TYPE = DSECT

}


SECTIONS
{
net_termins:> DataRAM,page = 1
}




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

    我对以下各项有疑问:

    "CLAPROGRAM"。

    "CLA1_MSGRAMLOW"

    "CLA1_MSGRAMHIGH"

    "Cla1DataRam0"

    "Cla1DataRam1"

    "Cla1DataRam1"

    因为例如,它是,

    BOOT_RSVD :origin = 0x000000,length = 0x000050 // M0的一部分,引导 ROM 将此用于栈*/
    RAMM1 :origin = 0x000400、length = 0x000400 //片上 RAM 块 M1 */
    
    CLA1_MSGRAMLOW:origin = 0x001480,length = 0x000080
    CLA1_MSGRAMIGH:origin = 0x001500,length = 0x000080
    
    CLARAM0 :origin = 0x008800,length = 0x000400 /*片上 RAM 块 L1 */
    CLARAM1 :origin = 0x008C00,length = 0x000400 /*片上 RAM 块 L2 */
    CLARAM2 :origin = 0x008000、length = 0x000800 /*片上 RAM 块 L0 */
    
    RAML4. :origin = 0x00A000、length = 0x002000 /*片上 RAM 块 L4 */
    USB_RAM :origin = 0x040000、length = 0x000800 /* USB RAM *
    / FLASHB :origin = 0x3F0000、length = 0x004000 /*片上闪存*/ 

    Cla1ToCpuMsgRAM:>CLA1_MSGRAMLOW,PAGE = 1
    CpuToCla1MsgRAM:>CLA1_MSGRAMIGH,PAGE = 1
    Cla1DataRam0 :> CLARAM0、 PAGE = 1
    Cla1DataRam1 :> CLARAM1、 PAGE = 1
    Cla1DataRam2 :> CLARAM2、 PAGE = 1. 

    我已对我在上述帖子中上传的最新链接器文件进行了更改。

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

    您好、Mihir、

    您能否将我指向您使用的原始链接器命令文件? 是否来自 C2000ware?

    此致、

    Veena

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

    您好!  

    我在下面附加了旧(原始链接器文件)、已修改和引用的链接器文件。

    随附原件和最新(已修改)副本。

    引用文件的链接 C:\ti\c2000\C2000Ware_2_00_00_02\libraries\math\CLAmath

    e2e.ti.com/.../original.txte2e.ti.com/.../Latest.txt

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

    您好!  

    我在下面附加了旧(原始链接器文件)、已修改和引用的链接器文件。

    随附原件和最新(已修改)副本。

    引用文件的链接 C:\ti\c2000\C2000Ware_2_00_00_02\libraries\math\CLAmath

    e2e.ti.com/.../1256.original.txte2e.ti.com/.../2045.Latest.txt

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

    您好、Mihir、

    对延迟答复表示歉意

    我相信 F28069器件上的 CLA 不会保存对 L4RAM 的访问。 L3 RAM 可被用作程序 RAM 只有 L0、L1、L2 RAM 可被用作 CLA 数据 RAM。 请参阅器件数据表上的主方框图。

    您为什么要切换到 L4?

    此致、

    Veena

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

    您好!

    根据电子邮件、我应该会收到"免费送货"优惠券。

    请向我提供、以便我可以使用它。

    谢谢你

    您的忠实客户

    Mihir Dave