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/UCD3138128:如何将 cmd 文件配置为64k 闪存大小

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

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/948886/ccs-ucd3138128-how-to-configure-cmd-file-for-64k-flash-size

器件型号:UCD3138128

工具/软件:Code Composer Studio

您好、先生、

我 想使用 UCD3131128、它有4个闪存组。

我的代码 无法成功编译、因为我的代码大于32k、闪存大小(pflash)由 cmd 文件固定。

请帮我配置 cmd 文件吗?

内存
{
/*------------------ *
/* ROM 8K 0x20000 - 0x21FFF *
/*------------------ *
ROMVECS :org = 0x00020000,len = 0x00000020 //矢量表 *
ROM :org = 0x00020020,len = 0x00001D5E //系统 ROM *
正弦 :org = 0x00021D7E,len = 0x00000282 //*正弦表 *

/*------------------ *
/* P-Flash 128K 0x0-0x1FFFF //此设置仅为32K *
/*------------------ *
FLASHVECS (RX):org = 0x00000000,len = 0x00000020 /* pflash“re-vector" Table */
PFLASH (RX) :org = 0x00000020,len = 0x00007F34 // pflash 主程序 *
DeviceID (RX) :org = 0x00007F54,len = 0x00000020 //设备 ID 的固定位置*/
FIXTFA (RX) :org = 0x00007F74,len = 0x00000004 // TFA 的固定步长 *
FIXCONST (RX):org = 0x00007F78,len = 0x00000080 //固定位置常量*/
FLASHSUM (RX):org = 0x00007FF8,len = 0x00000008 //闪存校验和 *


/*------------------ *
/* D-Flash 2K 0x69800 - 0x69FFF *
/*------------------ *
DFLASH (Rx):org = 0x00069800,len = 0x00000800


/*------------------ *
/* RAM 8K 0x6A000 - 0x6BFFF *
/* *
/*将 RAM 划分为2个部分: *
/* 1.一般变量。 *
/* 2、各种运行模式的堆栈。 *
/* 注意!! 必须在 load.asm 中指定栈大小!!! *
/*------------------ *
RAM (RW):org = 0x0006A000、len = 0x00001E50
堆栈(RW):org = 0x0006BE50,len = 0x000001B0
}

SECTIONS
{
/*------------------ *
/* P-Flash 32K 0x0 - 0x7FFF *
/* *
/*这些段中的大部分未用于 ROM 构建。 *
/*------------------ *
向量 :{}> FLASHVECS /*中断"重向量" *
.FIQ :{}> 0x001C /*快速中断处理程序 *
.text :{}>(pflash align(16)) /*代码 *
.const :{}>(pflash align(16)) /*常量数据 *
.cinit :{}>(pflash align(16)) /*初始化表 *
FixedDeviceID:{}>(DEVICEID) /*设备 ID 的固定位置 *
FixedTfaStep :{}> FIXTFA /*固定位置 TFA 步长 *
FixedConstants :{}>FIXCONST /*固定位置常量 *
Flashi :{}> FLASHSUM /* pflash Integrity Word *

/*------------------ *
/* ROM (8kB 0x20000 - 0x21FFF *
/*------------------ *
.romvectors :{}>ROMVECS
正弦 :{}>正弦

/*------------------ *
/* D-Flash 2K 0x69800 - 0x69FFF *
/*------------------ *
dflash:{}>(DFLASHALIGN (32))

/*------------------ *
/* RAM 8K 0x6A000 - 0x6BFFF
/*请注意,还必须在 load.asm 中定义栈。 *
/*------------------ *
.bss :{}> RAM /*全局和静态变量 *
堆栈 :{ /*总计= 400 = 0x190 *
_StackUSER_=。 + 184;/*用户 *
_StackFIQ_=_StackUSER_+ 112;// FIQ *
_StackIRQ_=_StackFIQ_+ 84;/* IRQ *
_StackABORT_=_StackIRQ_+ 4; /*中止 *
_StackUND_=_StackABORT_+ 4; /* und *
_StackSUPER_=_StackUND_+ 12;//超级 */
} >堆栈/*软件系统堆栈*/
} 

谢谢。  

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

    更改.cmd 文件非常简单。  这定义了程序闪存的地址:

    /*------------------ *
    /* P-Flash 128K 0x0-0x1FFFF //此设置仅为32K */
    /*------------------ *
    FLASHVECS (RX):org = 0x00000000,len = 0x00000020 /* pflash“re-vector" Table */
    pflash (RX):org = 0x00000020,len = 0x00007F34 // pflash 主程序*/
    DeviceID (RX):org = 0x00007F54,len = 0x00000020 //设备 ID 的固定位置*/
    FIXTFA (RX):org = 0x00007F74,len = 0x00000004 // TFA 的固定步长*/
    FIXCONST (RX):org = 0x00007F78,len = 0x00000080 //固定位置常量*/
    FLASHSUM (RX):org = 0x00007FF8,len = 0x00000008 //闪存校验和*/

    您只需将 pflash 区域扩展至64K 即可。

    /*------------------ *
    /* P-Flash 128K 0x0-0x1FFFF //此设置仅为32K */
    /*------------------ *
    FLASHVECS (RX):org = 0x00000000,len = 0x00000020 /* pflash“re-vector" Table */
    pflash (RX):org = 0x00000020,len = 0x0000FF34 // pflash 主程序*/
    DeviceID (RX):org = 0x0000FF54,len = 0x00000020 //设备标识的固定位置*/
    FIXTFA (RX):org = 0x0000FF74,len = 0x00000004 // TFA 的固定步长*/
    FIXCONST (RX):org = 0x0000FF78,len = 0x00000080 //固定位置常量*/
    FLASHSUM (RX):org = 0x0000FFF8,len = 0x00000008 //闪存校验和*/

     

    此处提供了更新版本的 CCS ARM 汇编语言工具:

     它适用于较新版本、但我认为这些更改非常微不足道、如果您想了解更多详细信息、它可以解释.cmd 文件的格式以及汇编和链接过程。

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

    我还建议您查看零输出完整性字或清晰完整性字。   

    这是软件中断中的情况12。  在代码中的某个位置、它将选择要写入的地址、可能是7ff8或7ffc。  您需要将其更改为 fff8或 fffc

    128实际上使用8字节校验和。  某些 EVM 代码可能只清除4个字节、但这仍然足够。