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.
您好!
上一个主题的摘录:
"似乎还有其他错误、例如程序异步扇区和 DCSM 区域1或2闪存扇区12-15被证明不安全。 FAPI 不会将任何数据写入64位对齐的闪存扇区。 即使已确认为32位空白选中且 CCS 调试内存浏览器 显示(0xFFFF.FFFF)、也是如此。 对闪存起始地址(0x009C000)进行编程的第一个扇区地址(10字节)、也为空白检查的0x1000 (4096) 32位 长度。"
FAPI 似乎还有其他问题需要通过 x49c FSM 非安全 DCSM 区域访问来解决。 即使尝试对长度仅为10字节的扇区进行编程、仅更改第一个字节、也会产生如下所示的数据总线错误。 对于单步 F5/F6 CCS 调试、指针缓冲区长度被设定为低电平(10)、以防止奇数数据总线错误。 此问题可能是由于通过 ECC 程序命令将 FPU 浮点(float32_t 或 float)数据写入 pu16DataBuffer、尽管调试会在命令中执行几个 F5步骤。
为什么数据缓冲区长度错误(20字节)会导致 FAPI 错误、在执行几个调试 F5步骤后、从不向 FSM 扇区写入任何内容? FSM 似乎没有被命令写入扇区数据 、这也许是最合理的原因? 闪存存储器高速缓存在为 ECC 写入而固有闪存组0/1之前被禁用、如下代码 snip 所示。 尽管似乎没有必要为不安全的存储器区域1或2声明 FAPI 信标、但这两个信标区域都不能通过 FSM 支持 ECC 命令的扇区程序。
/* FAPI requires FLSEM Bank1/2 zone 1/2 secured writes. * Allow Zone1/2 writes in Flash Wrapper FSM registers */ DCSM_claimZoneSemaphore(DCSM_FLSEM_ZONE1); // SCIprintf(">> DCSM Claim Flash Semaphore: Zone1 \n\n"); /* disable the flash cache */ Flash_disableCache(FLASH0CTRL_BASE); // // Call Flash Initialization to setup flash waitstates. This function must // reside in RAM. Flash_initModule(FLASH0CTRL_BASE, FLASH0ECC_BASE, DEVICE_FLASH_WAITSTATES); Flash_enableECC(FLASH0ECC_BASE); /* enable the flash cache */ Flash_enableCache(FLASH0CTRL_BASE); /* Delay 200ns */ SysCtl_delay(20); /* Initialize FSM FAPI flash parameter block driver. */ FlashPBInit(FLASH_PB_START, FLASH_PB_END, FLASH_PB_SIZE);
FAPI 必须能够保存来自 FPU 的(float32_t 或 float)数据、或者对于为电动汽车或工业电机驱动行业节省电机控制参数浮点数据而言、它是一个无用的 API。 电机控制 SDK 4.01通用电机控制 SDK 专为使用 FPU float32_t 参数而设计。 FAPI 程序命令输入数据缓冲器(uint16_t)是基元、需要从2017年最新更新 版本1.56.01.00演变。 我之所以需要 FAPI 来远程更新单个特定电机参数、而不是整个固件。 TI 与旧版 Motorware MCU 不同、除了 FAPI 之外、没有其他方法可以写入32位浮点 ECC 参数数据。