大家好、
我的客户在 TMS570LS0714平台上使用 CAN_bootloader、需要澄清一些问题。
他们使用 Fapi_BlockProgram()来执行 应用程序代码更新, 代码如下所示。 然后、他们发现 Fapi_BlockProgram 一次最多只能写入16字节。 但写入16个字节后、代码跳转到中断矢量、 引导程序无法在闪存中写入更多字节。
当前解决方案: 禁用 中断、它们可以正常写入字节。 但首先,它们使用“ _disable_Interrupt_()”来禁用中断,它不起作用; 如果它们使用“vimDisableInterrupt ()”,它就能正常工作。
问题:
1.在进行闪存更新时是否需要禁用中断? 为什么?
2.“ _disable_Interrupt_()”和“vimDisableInterrupt ()”之间有何区别,为什么 “ _disable_Interrupt_()”无法成功禁用中断?
void App_CANFlashUpdate (void) { uint16 u16长度; uint32 u32TargetAddress; uint32 u32UpdateaFlag; uint8 u8FlashBootInfo[24]; uint8 u8Ret; if (1 = g_un_SysCANCommFlag.b1FlashUpdate) { G_un_SysCanCommFlag.b1FlashUpdate = 0; u32TargetAddress = FLASH_MODULEID_ADDR; G_u32ModuleIDBoot = 0x1234; G_u32BootSWVer = 0x5678; G_u32CANIDSend = 0x109; G_u32CANIDRcvd = 0x119; uint8 i = 0; u8FlashBootInfo[i++]= 0x00; u8FlashBootInfo[i++]= 0x00; u8FlashBootInfo[i++]=(g_u32ModuleIDBoot>>8)和0xFF; u8FlashBootInfo[i++]= g_u32ModuleIDBoot & 0xFF; u8FlashBootInfo[i++]= 0x00; u8FlashBootInfo[i++]= 0x00; u8FlashBootInfo[i++]=(g_u32BootSWVer>>8)和0xFF; u8FlashBootInfo[i++]= g_u32BootSWVer & 0xFF; u8FlashBootInfo[i++]= 0x00; u8FlashBootInfo[i++]= 0x00; u8FlashBootInfo[i++]=(g_u32CANIDSend>>8)和0xFF; u8FlashBootInfo[i++]= g_u32CANIDSend & 0xFF; u8FlashBootInfo[i++]= 0x00; u8FlashBootInfo[i++]= 0x00; u8FlashBootInfo[i++]=(g_u32CANIDRcvd>8)和0xFF; u8FlashBootInfo[i++]= g_u32CANIDRcvd & 0xFF; u8FlashBootInfo[i++]= 0x55; u8FlashBootInfo[i++]= 0xAA; u8FlashBootInfo[i++]= 0x55; u8FlashBootInfo[i++]= 0xAA; u8FlashBootInfo[i++]= 0x55; u8FlashBootInfo[i++]= 0xAA; u8FlashBootInfo[i++]= 0x55; u8FlashBootInfo[i++]= 0xAA; u32TargetAddress = 0x30000;//FLASH_MODULEID_ADDR; Fapi_BlockProgram (((UINT32) 0、u32TargetAddress、(UINT32)&u8FlashBootInfo[0]、24); } }
2. 当他们 使用 CAN_bootloader 更新应用程序十六进制文件时、他们发现无法成功执行应用程序。
当前解决方案: 修改 .cmd 文件中的向量序列和 FLASH_API 地址。
不可用的 cmd 配置:
可用的 cmd 配置:
问题:
1、为什么 flash_API 的地址需要 小于 矢量的地址?
2. 如果"存储器{}"中的地址分配必须连续? 或者、矢量和 FLASH_API 的地址是否可以分配给不同的扇区?
3、现在客户使用以下配置:CCS 输出应用程序的十六进制文件、对吗? 为什么指定的 ROM 宽度为"32"? 是否有介绍 如何配置选项的文档?
4.如何动态地从 CAN 总线获取接收日期的长度?
非常感谢。







