您好!
我使用的是 SDKv4.10。 通过调用 Board_initHook(),板级初始化 SPI 外部闪存被置于关断模式。 我想知道调用 SPIFFSNVS_CONFIG ()是否会唤醒 SPI 外部闪存。
/*
* ======== SPIFFSNVS_config ========
*/
s32_t SPIFFSNVS_config(SPIFFSNVS_Data *spiffsnvsData,
u32_t nvsIndex, spiffs *fs, spiffs_config *fsConfig,
u32_t logicalBlockSize, u32_t logicalPageSize)
{
NVS_Attrs nvsAttrs;
NVS_init();
/* Open the NVS region to be used for the file system */
spiffsnvsData->nvsHandle = NVS_open(nvsIndex, NULL);
if (spiffsnvsData->nvsHandle == NULL) {
return (SPIFFSNVS_STATUS_INV_NVS_IDX);
}
NVS_getAttrs(spiffsnvsData->nvsHandle, &nvsAttrs);
/*
* Logical block size must be an integer multiple of the erase sector size;
* fail if an invalid logical block size is attempted.
*/
if ((logicalBlockSize == 0) ||
(logicalBlockSize < nvsAttrs.sectorSize) ||
(logicalBlockSize % nvsAttrs.sectorSize)) {
NVS_close(spiffsnvsData->nvsHandle);
return (SPIFFSNVS_STATUS_INV_BLOCK_SIZE);
}
/*
* Logical block size must be an integer multiple of the logical page size
*/
if ((logicalPageSize == 0) ||
(logicalBlockSize < logicalPageSize) ||
(logicalBlockSize % logicalPageSize)) {
NVS_close(spiffsnvsData->nvsHandle);
return (SPIFFSNVS_STATUS_INV_PAGE_SIZE);
}
#if CC13XX_CC26XX_WRITE_LIMIT
/*
* For CC13XX and CC26XX ensure there are no more than 32 logical pages in
* a logical block. Allowing more than 32 pages per block would allow
* situations where the 83 write limit could be violated on the index page.
*/
if (logicalBlockSize / logicalPageSize > 32) {
NVS_close(spiffsnvsData->nvsHandle);
return (SPIFFSNVS_STATUS_INV_PAGE_SIZE);
}
#endif
spiffsnvsData->lock.mutex = MutexP_create(NULL);
if (spiffsnvsData->lock.mutex == NULL) {
NVS_close(spiffsnvsData->nvsHandle);
return (SPIFFSNVS_STATUS_ERROR);
}
spiffsnvsData->lock.count = 0;
/* Initialize SPIFFS configuration structure using the following: */
fsConfig->phys_size = nvsAttrs.regionSize;
fsConfig->phys_addr = 0; /* Beginning of NVS region */
fsConfig->phys_erase_block = nvsAttrs.sectorSize;
fsConfig->log_block_size = logicalBlockSize;
fsConfig->log_page_size = logicalPageSize;
/* Set hardware abstraction functions to communicate with FLASH memory */
fsConfig->hal_erase_f = &spiffs_hal_erase;
fsConfig->hal_read_f = &spiffs_hal_read;
fsConfig->hal_write_f = &spiffs_hal_write;
/*
* Store SPIFFSNVS object in the file system object; it is required by hardware
* abstraction and lock/unlock functions.
*/
fs->user_data = spiffsnvsData;
return (SPIFFSNVS_STATUS_SUCCESS);
}
-kel