I am developing flash driver for TMS470MF6607 controller using CCS V4.2.3.
I am following below sequence for erase operation.
I placed flash driver code in RAM area and above sequence is working fine. Time taken for erasing are below.
Time taken for erase operation (Seconds)
Length is overlapping two sectors
If length increased, this time will be increased. For entire erase of flash its around 12 seconds.
But according to my customer requirement, I have to excute some part code (which is placed in flash memory) for every particulat period (after 20msec of erase start and later for every 4.5seconds) to indicate erase is in progress. And control should come back to RAM area from where it is jumped to flash. When I try to excute it, erase operation is stopped and there is no flash driver code in RAM to access.
Can provide the information to access the flash code whie erase opeartion is in progress. Is it possible to excute using any mode? Please provide it as early as possible.
Thanks in Advance.......
When a Flash Bank is performing a program or erase operation, it becomes inaccessible for reads which includes code execution until the operation has completed. It is possible to perform an erase or program operation from one bank and still read or execute code from the other bank on this device. The verify and read margin functions however, should be performed only from RAM as executing code from Flash while those operations are in progress will cause a system error.
If you are trying to erase the entire bank, using the bank erase operation will be more efficient than erasing each sector individually.
Safety MCU Software Team
If my reply answers your question please click on the green button "Verify Answer"
Thank you very much for reply.
Anyway I placed all my excecutable code in RAM only, so I am able to perform other tasks during erase opeartion.
But I found one more issue while using flash libraries. When I called Flash_Compact_B() function, its taking around 28m. Why are you holding this much time without giving controller to user.
Please clarify this.
That is due to the fact that the Flash_Compact_B() function is synchronous and will not return until the compaction has completed.
The asynchronous compaction function is Flash_Start_Compact_B() which will return once compaction has started and then you will need to poll Flash_Status_U16() occasionally to see when the compaction operation has completed.
Thanks for reply.
I tried with Flash_Start_Compact_B() function and polled using Flash_Status_U16(). Then also control from Flash_Start_Compact_B() is returned after 28ms of function call.
Please clarify it and provide me alternate solution.
There is some device overhead that is required and as such there is no workaround available.
All content and materials on this site are provided "as is". TI and its respective suppliers and providers of content make no representations about the suitability of these materials for any purpose and disclaim all warranties and conditions with regard to these materials, including but not limited to all implied warranties and conditions of merchantability, fitness for a particular purpose, title and non-infringement of any third party intellectual property right. TI and its respective suppliers and providers of content make no representations about the suitability of these materials for any purpose and disclaim all warranties and conditions with respect to these materials. No license, either express or implied, by estoppel or otherwise, is granted by TI. Use of the information on this site may require a license from a third party, or a license from TI.
TI is a global semiconductor design and manufacturing company. Innovate with 100,000+ analog ICs andembedded processors, along with software, tools and the industry’s largest sales/support staff.