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/TMS320VC5416:如何在 tms320vc5416中初始化堆栈?

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/610047/ccs-tms320vc5416-how-to-initialized-stack-in-tms320vc5416

器件型号:TMS320VC5416

工具/软件:Code Composer Studio

我是 Code Composer 和5416的初学者。 现在、我尝试编写简单的代码、但该代码剂量不正确。  

我认为这种堆栈存在问题。

void SPI_delay (const unsigned int Del)
{
volatile unsigned int i=0;
for (i=0;<Del;i++)  {   asm(" nop");   asm(" nop");   asm(" nop");   asm(" nop");  } } void main() {   SPI_Delay(10); })











当我调用此函数时、Del 不是 eqvivalnt 10。

/ //*
VC5416.cmd */
/*版权所有(c) 2010 Texas Instruments Incorporated *
/*作者:Rafael de Souza */
* */
/*说明:此文件是示例链接器命令文件,可以是*/
/* 用于链接使用 C 编译器和*/
/*构建的程序 在 VC5416上运行生成的.out 文件。 */
* 将其用作指南。 您的需求 */
* 更改存储器布局以匹配您的特定 */
* 目标系统。 您可能需要更改分配*/
* 根据程序的大小来选择该方案。 */
* */
********* /


-stack_size 0x2000 //主堆栈大小*/

内存
{
第0页:
EXT1:O = 0x00000 l = 0x00080 //外部或保留(OVLY=1)*/
DARAM0:O = 0x00080 l = 0x01F80 // 8kW 外部或 DARAM (OVLY=1)*/
DARAM1:O = 0x02000 l = 0x01000 // 8kW 外部或 DARAM (OVLY=1)*/
DARAM2:O = 0x04000 l = 0x02000 // 8kW 外部或 DARAM (OVLY=1)*/
DARAM3:O = 0x06000 l = 0x02000 // 8kW 外部或 DARAM (OVLY=1)*/
ext2:O = 0x08000 l = 0x04000 //外部*/
ext3:O = 0x0C000 l = 0x03F80 //外部或 ROM (MP/MC=0)*
VECS:O = 0x0FF80 l = 0x00080 //中断向量*/
DARAM4:O = 0x18000 l = 0x02000 // 8kW 外部或 DARAM4 (OVLY=1)*/
DARAM5:O = 0x1A000 l = 0x02000 // 8kW 外部或 DARAM5 (OVLY=1)*/
DARAM6:O = 0x1C000 l = 0x02000 // 8kW 外部或 DARAM6 (OVLY=1)*/
DARAM7:O = 0x1E000 l = 0x02000 // 8kW 外部或 DARAM7 (OVLY=1)*/
SARAM0:O = 0x28000 l = 0x02000 //外部或 SARAM0 (MP/MC=0)*/
SARAM1:O = 0x2A000 l = 0x02000 //外部或 SARAM1 (MP/MC=0)*/
SARAM2:O = 0x2C000 l = 0x02000 //外部或 SARAM2 (MP/MC=0)*/
SARAM3:O = 0x2E000 l = 0x02000 //外部或 SARAM3 (MP/MC=0)*/
SARAM4:O = 0x38000 l = 0x02000 //外部或 SARAM4 (MP/MC=0)*/
SARAM5:O = 0x3A000 l = 0x02000 //外部或 SARAM5 (MP/MC=0)*/
SARAM6:O = 0x3C000 l = 0x02000 //外部或 SARAM6 (MP/MC=0)*
SARAM7:O = 0x3E000 l = 0x02000 //外部或 SARAM7 (MP/MC=0)*/

第1页:
MMR:O = 0x00000 l = 0x00060 //内存映射寄存器*/
SPRAM:O = 0x00060 l = 0x00020 // 32W 暂存 RAM *
DARAM0:O = 0x00080 l = 0x01F80 // 8kW DARAM0 *
DARAM1:O = 0x02000 l = 0x02000 // 8kW DARAM1 *
DARAM2:O = 0x04000 l = 0x02000 // 8kW DARAM2 *
DARAM3:O = 0x06000 l = 0x02000 // 8kW DARAM3 *
DARAM4:O = 0x08000 l = 0x02000 // 8kW 外部或 DARAM4 (DROM=1)*/
DARAM5:O = 0x0A000 l = 0x02000 // 8kW 外部或 DARAM5 (DROM=1)*/
DARAM6:O = 0x0C000 l = 0x02000 // 8kW 外部或 DARAM6 (DROM=1)*/
DARAM7:O = 0x0E000 l = 0x02000 // 8kW 外部或 DARAM7 (DROM=1)*/
}

部分
{
矢量 > DARAM1第0页
电位 > DARAM2第1页
.text > DARAM2第0页
.cinit > DARAM2第0页
.data > DARAM2第1页
.bss > DARAM2第1页
堆栈 > DARAM1第1页
.const > DARAM2第1页
sysmem > DARAM1第1页
.cio > DARAM1第1页
}

此系统没有任何外部存储器

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

    我已将此内容转发给 C55x 软件专家。 他们的反馈应发布在此处。

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

    Pavel、

    您看到的 DEL 有什么价值?

    这是否起作用?

    void waitLoop (int N)
    {
    
    
    int i、j、k;
    for (k=0;k<20*N;k++)
    {
    for (j=0;j<1000;j++)
    {
    for (i=0;i<1000;i++)
    {
    asm (" NOP;");
    asm (" NOP;");
    (" NOP;(
    " NOP ");
    }
    
    }
    }}}
    

    Lali

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

    我看到 DEL 的随机值。

    如果我在 debuger 中设置 del、函数运行良好、但当我退出函数时、程序会崩溃。 我认为 它与这里类似