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.

[参考译文] TMS320C6657:第二次引导中的存储器配置。

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1131406/tms320c6657-the-memory-configuration-in-the-second-boot

器件型号:TMS320C6657

您好!

我在我的系统中完成了两个引导过程、首先引导 DDR init 程序、然后第二个引导我的实际应用程序。 在 DDR 初始化程序中,所有 cmd 段都是在 L2存储器中定义的,它们运行良好,没有问题。

然后在我的实际应用程序中、这些段在 L2或 DDR 中定义、我发现其中定义的几个段 会严重  影响程序工作结果。 当我定义任何段时、它们是.const/.cinit/.switch 段

在 DDR 中、我的应用程序无法正常工作。当我将三个部分全部放在 L2中时 、应用程序可以正常工作。  

我的问题是、为什么会发生这种情况?

我的最后一个命令如下所示

堆0x4000000 /* 64MB */
-stack 0x4000 // 16KB */

存储器

LOCAL_L2_SRAM:O = 0x00800000 l = 0x00100000 // 1MB 本地 L2 SRAM */
LOCAL_L1P_SRAM:O = 0x00E00000 l = 0x00008000 // 32kB 本地 L1P SRAM *
LOCAL_L1D_SRAM:O = 0x00F00000 l = 0x00008000 // 32kB 本地 L1D SRAM */

MSMSRAM:O = 0x0C000000 l = 0x00100000 // 1MB 多核共享内存*/
CORE0_L2_SRAM_STACK:O = 0x10800000 l = 0x00004000 // 1024KB CORE0 L2/SRAM *
CORE0_L2_SRAM:O = 0x10804000 l = 0x000FBFFC /* 1024KB CORE0 L2/SRAM,为魔术地址保留的最后四个字节*/

CORE0_L1P_SRAM:O = 0x10E00000 l = 0x00008000 // 32kB CORE0 L1P/SRAM */
CORE0_L1D_SRAM:O = 0x10F00000 l = 0x00008000 // 32kB L1D/SRAM */

EMIF16_CE0:O = 0x70000000 l = 0x04000000 // 64MB EMIF16 ce0数据存储器*
EMIF16_CE1:O = 0x74000000 l = 0x04000000 // 64MB EMIF16 CE1数据存储器*
EMIF16_CE2:O = 0x78000000 l = 0x04000000 // 64MB EMIF16 CE2数据存储器*
EMIF16_CE3:O = 0x7C000000 l = 0x04000000 // 64MB EMIF16 CE3数据存储器*

/*DDR3:O = 0x80000000 l = 0x40000000*//* 1GB DDR3 */
DDR3_General:O = 0x80000000 l = 0x3BEF6800 //* 1GB - 2KB*19 - 1MB DDR3 */
DDR3_COMM:O = 0xBBEF6800 l = 0x9800 // 2KB*19 = 38KB */
DDR3_SCF:O = 0xBBF00000 l = 0xFF000 //大小1M -4K *
DDR3_握手:O = 0xBBFFF000 l = 0x0400 //大小1K */
DDR3_ERR_INFO:O = 0xBBFFF400 l = 0x0C00 //大小3K *
DDR3_heap:O = 0xBC000000 l = 0x4000000 //大小64MB */

部分

.text > CORE0_L2_SRAM
.stack > CORE0_L2_SRAM_STACK
.bss > CORE0_L2_SRAM
.cio > CORE0_L2_SRAM
.const > CORE0_L2_SRAM
.data > CORE0_L2_SRAM
.switch > CORE0_L2_SRAM
.sysmem > DDR3_heap
.far > CORE0_L2_SRAM
.args > CORE0_L2_SRAM
.ppdinfo > CORE0_L2_SRAM
.ppdata > CORE0_L2_SRAM

.L2_int > DDR3_General
.vects>DDR3_General

/* COFF 段*/
.pinit > DDR3_General
.cinit > CORE0_L2_SRAM

/* EABI SECTIONS *
.binit > DDR3_General
init_array > DDR3_General
.neardata > CORE0_L2_SRAM
.fardata > CORE0_L2_SRAM
.rodata > CORE0_L2_SRAM
.c6xabi.exidx > CORE0_L2_SRAM
.c6xabi.extab > CORE0_L2_SRAM
.csl_vect > CORE0_L2_SRAM /* CSL vect 代码*

rtdata > CORE0_L2_SRAM
.rtcode > CORE0_L2_SRAM
.nrtdata > DDR3_General
.nrtcode > DDR3_General

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

    您好!

    我没有检查您的配置、不能说它们是可以的、也不是可以的。 不过、您是在 EVM 上还是在定制板上执行该操作? 如果是定制板、您之前是否尝试过任何内存测试?

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

    您好!

    我在电路板上执行该操作。我通过写入 和检查来测试我的整个 DDR 存储器、我在 DDR 中放置了一些测试代码、它们运行良好。 我确认内存正常。

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

    Frand、

    如果您有 C6657 EVM、请尝试执行相同的测试并检查行为。

    如果测试在 TI-EVM 中而不是在定制板中进行、 则可以轻松地解决差异和问题。

    --

    并尝试对您的定制 EVM 执行平台测试、其中包含内部和外部存储器测试。

    处理器 SDK 平台测试的 linker.cmd 将用作存储器部分的良好参考点。

    我在这里附加了平台测试的 linker.cmd。  

    /******************************************************************************
     * Copyright (c) 2010-2011 Texas Instruments Incorporated - http://www.ti.com
     * 
     *  Redistribution and use in source and binary forms, with or without 
     *  modification, are permitted provided that the following conditions 
     *  are met:
     *
     *    Redistributions of source code must retain the above copyright 
     *    notice, this list of conditions and the following disclaimer.
     *
     *    Redistributions in binary form must reproduce the above copyright
     *    notice, this list of conditions and the following disclaimer in the 
     *    documentation and/or other materials provided with the   
     *    distribution.
     *
     *    Neither the name of Texas Instruments Incorporated nor the names of
     *    its contributors may be used to endorse or promote products derived
     *    from this software without specific prior written permission.
     *
     *  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 
     *  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 
     *  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
     *  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 
     *  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 
     *  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 
     *  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
     *  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
     *  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 
     *  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 
     *  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
     * 
     *****************************************************************************/
    /*
     *  Linker command file
     *
     */
    
    -c
    -heap  0x41000
    -stack 0xa000
    
    /* Memory Map 1 - the default */
    MEMORY
    {
        L1PSRAM (RWX)  : org = 0x0E00000, len = 0x7FFF
        L1DSRAM (RWX)  : org = 0x0F00000, len = 0x7FFF 
    
        L2SRAM (RWX)   : org = 0x0800000, len = 0x080000
        MSMCSRAM (RWX) : org = 0xc000000, len = 0x100000
        DDR3 (RWX)     : org = 0x80000000,len = 0x20000000
    }
    
    SECTIONS
    {
        .csl_vect   >       MSMCSRAM
        .text       >       MSMCSRAM
        GROUP (NEAR_DP)
        {
        .neardata
        .rodata 
        .bss
        } load > MSMCSRAM
        .stack      >       MSMCSRAM
        .cinit      >       MSMCSRAM
        .cio        >       MSMCSRAM
        .const      >       MSMCSRAM
        .data       >       MSMCSRAM
        .switch     >       MSMCSRAM
        .sysmem     >       MSMCSRAM
        .far        >       MSMCSRAM
        .testMem    >       MSMCSRAM
        .fardata    >       MSMCSRAM
        platform_lib > 		MSMCSRAM
    }
    

    --

    首先、让我们采用工作中的"*。cmd:文件并在内存部分不断进行更改、"一对一"、这样就可以轻松地消除错误...

    --

    此致

    Shankari G