以CC2650为例:
因为其内部存储结构的特性,如下图
![switch.jpg](/Public/lazyload/gray.png)
可见VIMS有四中工作模式。
GPRAM
![gpram.jpg](/Public/lazyload/gray.png)
CACHE
![cache.jpg](/Public/lazyload/gray.png)
off
![off.jpg](/Public/lazyload/gray.png)
split
![split.jpg](/Public/lazyload/gray.png)
可见只有OFF模式可以直接访问到FLASH。其它模式下的访问更多的是对CACHE的操作。
示例代码:
写操作
state = VIMSModeGet( );
VIMSModeSet( VIMS_BASE, VIMS_MODE_DISABLED );
FlashProgram(rf_tx_buff,0x1E000,sizeof(rf_tx_buff));
VIMSModeSet( VIMS_BASE, state );
读操作
memcpy(rf_rx_buff,(void*)0x1E000,sizeof(rf_tx_buff));
擦除操作
state = VIMSModeGet( );
VIMSModeSet( VIMS_BASE, VIMS_MODE_DISABLED );
FlashSectorErase(0x1E000);
VIMSModeSet( VIMS_BASE,state);