There's a problem about the MPC5634M Flash erase blocks in my MPC5634M project. I have integrated the SSD flash driver which is :Standard Software Driver v1.0.3 (xPC56xx_C90LC) in my code ,and the program running process is:
(1)Firstly ,erase the block 2 (address ;0x00008000),then write 96 bytes from address 0x00008000 ,write success.
(2)secondly,erase the block 3 (address ;0x00010000),then write from address 0x00010000 ,write success.
(3)I want to erase the block 2 (address ;0x00008000),and write 96 bytes from address 0x00008000 again ,the erase result seems is ok ,but I feel this erase operation is fail.
This fail case is : the return value of the Erase function is C90FL_OK ,but actually the block 2 which I want to erase is not erased . that means the last value still in the block 2. the all value didn't change to 0xFF .
I use the API is C-array FlashErase_C, which in the path : Freescale\Standard Software Driver v1.0.3\xPC56xx_C90LC\Driver\cw\vle\c-array_driver ,and the call function like this :
and the debug register I can see the block is unlock correct :
after executed the erase operation ,the returnCode is C90FL_OK ,but in the flash block 2 ,the value didn't be erased.
so I have 4 question about this case :
1.whether the SSD C-array FlashErase_C which I used is right ? what's the difference in BookE and vle.
2.The parameter like shadowFlag, lowEnabledBlocks, midEnabledBlocks, highEnabledBlocks of the function ,is it correct ?
pFlashErase( &ssdConfig, shadowFlag, lowEnabledBlocks, midEnabledBlocks, highEnabledBlocks, (tpfNullCallback)NULL_CALLBACK );
3.What circumstances will appear this kind of failure?
4.what do you have some suggestion to me ?