This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

RM48L952: TI_FEE driver timing requirements

Part Number: RM48L952

I am using the TI_FEE driver in my project to emulate a simple EEPROM to store configuration settings. My system has critical timing functions that must occur in very specific time frames. I can manually time simple read and writes to the EEPROM and get an idea of how long each of these functions takes. My concern come in under a specific condition in the FEE driver. When the data writes fill an entire sector and roll over to the next, the original sector must be erased in preparation for the next roll over of data. A sample run of the FEE_FORMAT function takes 36.4mS on my system and cannot be called asynchronously (i.e. when called it takes fully system resources until completed). I assume the FEE driver must perform a similar function internally to erase the unused sector for the next set of data. My concern is how long will the FEE driver will tie up the system if it needs to erase a memory sector though an internal call of a write cycle.

1. Is there a table that provides maximum clock cycles for each FEE instruction?

2. Is there a maximum time the TI_Fee_MainFunction() will run when called?

3. Can the TI_Fee_MainFunction() be suspended (not called) from the main system indefinitely, or must it be serviced in a specific length of time?

Related, the FEE driver provides a Fapi_serviceWatchdogTimer() user function to handle updating the watchdog during a extended FEE cycle, but no timing details are provided on how often this is called. I do not see where this is called in the FEE driver so it is hard to tell which functions call it and how often. 

It seems I has seen a document with this information at one point in time, but now all I can find is the "TI FEE Driver User Guide" which does not provide this detail.

Thanks,

Allen

  • Hello Allen,

    I'll have to look into your questions since I don't have an immediate answers other than the write and erase operation timings are specified in the datasheet. As the the flash ages, the timings will extend and the application will need to be able to accommodate the worst case times.

    I can also state that we do not have any characterization data on the execution of the various command functions. This will have some dependencies on your compiler settings and what else is going on within your system. For the write function, the FEE algorithm will handle the sectors as needed and much of this should happen in the background, but I ill need to confirm the exact operation with a review of the code and the user guide. My guess is that operations needed during run time can be done asynchronously/in the background so they won't interfere with the application timing. I will check on this and get back to you.
  • Chuck,

    I have reviewed the data sheets as you suggested and continued with a bit of data collection on my own. The data sheet indicates for my conditions that Bank 7 should erase in typically 14mS, but up to a max of 100mS. Under extreme conditions, which my product may experience, it could take up to 8 seconds. My system is running at 200MHz. Based on that, the TI_Fee_MainFunction() typical returns in about 3.3uS if it is in idle state. When I fill an entire sector and wrap over to the next sector the same function returns in just over 4mS.

    This has become problematic for me. My main RTOS system runs with a cycle of 2.5mS and must be deterministic in its cycle time. Failure to complete a cycle in under that time frame faults the system. I cannot predict when the TI_Fee_MainFunction() will complete in 3.3uS vs the 4mS so I cannot even prepare for the extended FEE cycle by overriding RTOS fault settings for that cycle.

    I'm not sure what the FEE driver is doing in that 4mS. If there is a way to break that up into smaller chunks so I can limit the FEE cycle time to smaller intervals that would solve my problem, but I do not see anything in the FEE user guide that suggests how that could be done.

    Is there a way to specify the maximum time limit for the TI_Fee_MainFunction()?

    I'm kind of stuck between a 2.5mS rock and a 4mS hard place. Any suggestions would be appreciated.

    Thanks,
    Allen

  • Hi Allen
    I am auditing a few older forum posts that were potentially not resolved. Since it has been a while since this post was open and eventually locked, I wanted to check if you were able to resolve the issue or need further guidance?

    Regards
    Mukul