TI中文支持网
TI专业的中文技术问题搜集分享网站

TMS570LS3137: bootloard更新程序进行编程操作无法读内部flash

Part Number:TMS570LS3137

bootloard升级中编程时的问题 目前代码采用bank0存放IAP程序,bank1存放APP程序,通过外部存储器存放固件包。升级中出现以下两点问题:

(1)在IAP升级时进行擦除操作 调用uint32_t Fapi_BlockErase( uint32_t Bank, uint32_t ulAddr, uint32_t Size)此函数,不能执行读操作函数 status =  Flash_Erase_Check((uint32_t)ulAddr, Size),执行后单片机出现异常跑飞;

(2)在进行编程操作uint32_t Fapi_BlockProgram( uint32_t Bank, uint32_t Flash_Address, uint32_t Data_Address, uint32_t SizeInBytes)后,执行uint32_t Flash_Program_Check(uint32_t Program_Start_Address, uint32_t Source_Start_Address, uint32_t No_Of_Bytes)后,单片机跑飞。

IAP程序链接脚本配置如下:

MEMORY
{
VECTORS (X) : origin=0x00000000 length=0x00000020
FLASH_API (RX) : origin=0x00000020 length=0x000014E0
FLASH0 (RX) : origin=0x00001500 length=0x00180000-0x00001500
// FLASH1 (RX) : origin=0x00180000 length=0x00180000
STACKS (RW) : origin=0x08000000 length=0x00001500
RAM (RW) : origin=0x08001500 length=0x0003EB00

/* USER CODE BEGIN (2) */
/* USER CODE END */
}

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

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

SECTIONS
{
.intvecs : {} > VECTORS

flashAPI :
{
..\Debug\F021\source\Fapi_UserDefinedFunctions.obj (.text)
..\Debug\F021\source\bl_flash.obj (.text)
–library=..\F021\F021_API_CortexR4_BE.lib < FlashStateMachine.IssueFsmCommand.obj
FlashStateMachine.SetActiveBank.obj
FlashStateMachine.InitializeFlashBanks.obj
FlashStateMachine.EnableMainSectors.obj
FlashStateMachine.IssueFsmCommand.obj
FlashStateMachine.ScaleFclk.obj
Init.obj
Utilities.CalculateEcc.obj
Utilities.WaitDelay.obj
Utilities.CalculateFletcher.obj
Read.MarginByByte.obj
Read.Common.obj
Read.FlushPipeline.obj
Read.WdService.obj
Async.WithAddress.obj
Program.obj > (.text)
} load = FLASH_API, run = RAM, LOAD_START(api_load), RUN_START(api_run), SIZE(api_size)

.text : {} > FLASH0
.const : {} > FLASH0
.cinit : {} > FLASH0
.pinit : {} > FLASH0
.bss : {} > RAM
.data : {} > RAM
.sysmem : {} > RAM

/* USER CODE BEGIN (4) */
/* USER CODE END */
}

Cherry Zhou:

您好我们已收到您的问题并升级到英文论坛寻求帮助,如有答复将尽快回复您。谢谢!

,

Cherry Zhou:

您好,

从您的LInker CMD文件来看,您把固件编程到bank 0 (与 bootloader相同的bank)。

如果将固件编程到同一个bank,那么需要将闪存 API 和相关代码复制到 SRAM,并从 SRAM 执行这些代码。

请将.text 和.data 复制到 SRAM: 

flashAPI :{..\Debug\F021\source\Fapi_UserDefinedFunctions.obj (.text, .data)..\Debug\F021\source\bl_flash.obj (.text, .data)–library=..\F021\F021_API_CortexR4_BE.lib (.text, .data)} load = FLASH_API, run = RAM, LOAD_START(api_load), RUN_START(api_run), SIZE(api_size)

,

ks zhao:

你好,我不是编程到同一个bank内,我是通过bank0存放bootloader,ban1存放app。我现在在ban0中编程到ban1时发现不能读取ban1的数据。一读程序就跑飞,上面写的那个linker cmd是bootloader程序的。那如果我后续项目做成同一个bank内,那个linker cmd按你这样修改就可以了吗?

,

Cherry Zhou:

我们向工程师确认下哈。

赞(0)
未经允许不得转载:TI中文支持网 » TMS570LS3137: bootloard更新程序进行编程操作无法读内部flash
分享到: 更多 (0)