uint8_t PageMode;\r
uint32_t Address;\r
uint16_t Length;\r
- uint8_t ProgData[512];\r
+ uint8_t ProgData[256];\r
} WriteMemory_XPROG_Params;\r
\r
Endpoint_Read_Stream_LE(&WriteMemory_XPROG_Params, (sizeof(WriteMemory_XPROG_Params) -\r
\r
\r
uint8_t WriteCommand = NVM_CMD_NOOP;\r
- uint8_t WritePageCommand = NVM_CMD_NOOP;\r
+ uint8_t WriteBuffCommand = NVM_CMD_NOOP;\r
+ uint8_t EraseBuffCommand = NVM_CMD_NOOP;\r
bool PagedMemory = false;\r
\r
if (WriteMemory_XPROG_Params.MemoryType == XPRG_MEM_TYPE_APPL)\r
{\r
- PagedMemory = true;\r
+ WriteCommand = NVM_CMD_ERASEWRITEFLASH;\r
+ WriteBuffCommand = NVM_CMD_LOADFLASHPAGEBUFF;\r
+ EraseBuffCommand = NVM_CMD_ERASEFLASHPAGEBUFF;\r
+ PagedMemory = true;\r
}\r
else if (WriteMemory_XPROG_Params.MemoryType == XPRG_MEM_TYPE_BOOT)\r
{\r
- PagedMemory = true;\r
+ WriteCommand = NVM_CMD_ERASEWRITEFLASH;\r
+ WriteBuffCommand = NVM_CMD_LOADFLASHPAGEBUFF;\r
+ EraseBuffCommand = NVM_CMD_ERASEFLASHPAGEBUFF;\r
+ PagedMemory = true;\r
}\r
else if (WriteMemory_XPROG_Params.MemoryType == XPRG_MEM_TYPE_EEPROM)\r
{\r
- PagedMemory = true;\r
+ WriteCommand = NVM_CMD_ERASEWRITEEEPROMPAGE;\r
+ WriteBuffCommand = NVM_CMD_LOADEEPROMPAGEBUFF;\r
+ EraseBuffCommand = NVM_CMD_ERASEEEPROMPAGEBUFF;\r
+ PagedMemory = true;\r
}\r
else if (WriteMemory_XPROG_Params.MemoryType == XPRG_MEM_TYPE_USERSIG)\r
{\r
- PagedMemory = true;\r
+ WriteCommand = NVM_CMD_WRITEUSERSIG;\r
+ WriteBuffCommand = NVM_CMD_LOADFLASHPAGEBUFF;\r
+ EraseBuffCommand = NVM_CMD_ERASEFLASHPAGEBUFF;\r
+ PagedMemory = true;\r
}\r
else if (WriteMemory_XPROG_Params.MemoryType == XPRG_MEM_TYPE_FUSE)\r
{\r
\r
if (PagedMemory)\r
{\r
-\r
+ if (!(NVMTarget_WritePageMemory(WriteBuffCommand, EraseBuffCommand, WriteCommand, \r
+ WriteMemory_XPROG_Params.PageMode, WriteMemory_XPROG_Params.Address,\r
+ WriteMemory_XPROG_Params.ProgData, WriteMemory_XPROG_Params.Length)))\r
+ {\r
+ ReturnStatus = XPRG_ERR_TIMEOUT;\r
+ }\r
}\r
else\r
{\r