CC1310的Flash要4个字节为单位写入吗?
下面是官方的API源码:
//*****************************************************************************
//
//! Programs unprotected main bank flash sectors
//
//*****************************************************************************
uint32_t
FlashProgram(uint8_t *pui8DataBuffer, uint32_t ui32Address, uint32_t ui32Count)
{
uint32_t ui32ErrorReturn;
FlashPrgPointer_t FuncPointer;
//
// Check the arguments.
//
ASSERT((ui32Address + ui32Count) <= (FLASHMEM_BASE + FlashSizeGet()));
//
// Call ROM function
//
FuncPointer = (uint32_t (*)(uint8_t *, uint32_t, uint32_t)) (ROM_API_FLASH_TABLE[6]);
ui32ErrorReturn = FuncPointer( pui8DataBuffer, ui32Address, ui32Count);
//
// Enable standby in flash bank since ROM function migth have disabled it
//
HWREGBITW(FLASH_BASE + FLASH_O_CFG, FLASH_CFG_DIS_STANDBY_BITN ) = 0;
//
// Return status of operation.
//
return(ui32ErrorReturn);
}
论坛里有些人说是要以4个字节对齐写入,但是看上面那段程序,应该是以一个字节写进去的,这有矛盾吗?
还有用这种方法操作Flash和用NVS有什么不一样?
da qin zheng sheng:
按照一个字节写。
Viki Shi:
NVS操作需要4字节的倍数
@param buffer A buffer conntaining data to write to
* the NVS block. If buffer is NULL, the block
* will be erased. A non-NULL buffer must be
* aligned on a 4-byte boundary.
FreePom:
回复 Viki Shi:
如果调用Flash。c的呢
ruimao cong:
回复 Viki Shi:
我试过 三个字节写入NVS,为什么也是可以的呢?如果不以4字节的倍数写入,会有什么问题呢?
Susan Yang:
通过NVS_write()函数来写的话,函数的第2个参数为起始地址,并且必须4字节对齐。
若是flash的话可以按单字节写入