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.

[参考译文] TMS570LS3137:TMS570 fapi SRAM 问题

Guru**** 2524460 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1128803/tms570ls3137-tms570-fapi-sram-problem

器件型号:TMS570LS3137

您好:

我编写了一个与以太网一起工作的引导加载程序库、当我从组1扇区0启动主应用程序时、引导加载程序工作正常、但当我从组0扇区5启动应用程序时、引导加载程序结束时、它会卡在"while (FAPI_GET_FSM_STATUS!= Fapi_Status_Success)"。 但 fapi 初始化操作已成功完成。

引导加载程序大小:142KB

要在 SRAM 中运行 fapi、我按如下方式配置链接器。

/* Copyright (C) 2013-2019 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.
 */

/*                                                                            */
/*----------------------------------------------------------------------------*/
/* USER CODE BEGIN (0) */
/* USER CODE END */


/*----------------------------------------------------------------------------*/
/* Linker Settings                                                            */
--retain="*(.intvecs)"

/* USER CODE BEGIN (1) */
/* USER CODE END */

/*----------------------------------------------------------------------------*/
/* Memory Map                                                                 */

MEMORY
{

    VECTORS    (X)   : origin=0x00000000 length=0x00000020		vfill=0xFFFFFFFF
    FLASH0     (RX)  : origin=0x00000020 length=0x180000-0x20	vfill=0xFFFFFFFF
    FLASH1     (RX)  : origin=0x00180000 length=0x00180000		vfill=0xFFFFFFFF
    SRAM       (RW)  : origin=0x08002000 length=0x0002D000
    STACK      (RW)  : origin=0x08000000 length=0x00002000

/* USER CODE BEGIN (2) */
#if 1
    ECC_VEC  (R) : origin=(0xf0400000 + (start(VECTORS) >> 3))
                   length=(size(VECTORS) >> 3)
                   ECC={algorithm=algoL2R5F021, input_range=VECTORS}

    ECC_FLA0 (R) : origin=(0xf0400000 + (start(FLASH0)  >> 3))
                   length=(size(FLASH0)  >> 3)
                   ECC={algorithm=algoL2R5F021, input_range=FLASH0 }

    ECC_FLA1 (R) : origin=(0xf0400000 + (start(FLASH1)  >> 3))
                   length=(size(FLASH1)  >> 3)
                   ECC={algorithm=algoL2R5F021, input_range=FLASH1 }


#endif
/* USER CODE END */

}

/* USER CODE BEGIN (3) */
ECC
{
    algoL2R5F021 : address_mask = 0xfffffff8 /* Address Bits 31:3 */
                   hamming_mask = R4         /* Use R4/R5 build in Mask */
                   parity_mask  = 0x0c       /* Set which ECC bits are Even and Odd parity */
                   mirroring    = F021       /* RM57Lx and TMS570LCx are build in F021 */
}
/* USER CODE END */


/*----------------------------------------------------------------------------*/
/* Section Configuration                                                      */

SECTIONS
{


/* USER CODE BEGIN (4) */
	.intvecs 	: 	{} > VECTORS

    flashAPI:
    {
     .\.\libraries\f021_flash_api_02.01.01\source\Fapi_UserDefinedFunctions.obj (.text)
     .\.\libraries\flash\Src\flash.obj (.text)
     --library= "D:\Projects\ANAKS\embedded-library\F023_FLASH_API\f021_flash_api_02.01.01\F021_API_CortexR4_BE.lib"  (.text)
    } palign=8 load = FLASH0 | FLASH1, run = SRAM, LOAD_START(fapi_load_start), RUN_START(fapi_run_start), SIZE(fapi_load_size)


	.text  		: 	{} > FLASH0 | FLASH1 /*Initialized executable code and constants*/
   	.const 		: 	{} load = FLASH0 | FLASH1, run = SRAM, LOAD_START(fapi_const_load_start), RUN_START(fapi_const_run_start), SIZE(fapi_const_load_size)

   	.cinit 		: 	{} > FLASH0 | FLASH1 /*Initialized global and static variables*/
   	.pinit 		: 	{} > FLASH0 | FLASH1
   	.data  		:	{} > SRAM
   	.bss   		: 	{} > SRAM   /*Uninitialized Global and static variables */
   	.sysmem		:	{} > SRAM
/* USER CODE END */
}

/* USER CODE BEGIN (5) */
/* USER CODE END */


/*----------------------------------------------------------------------------*/
/* Misc                                                                       */

/* USER CODE BEGIN (6) */
/* USER CODE END */
/*----------------------------------------------------------------------------*/

引导加载程序应用程序内存分配:

哪里会出错? 可以帮帮我吗?

此致、很好...