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.

Some questions about the FEE on the TMS570LS1227.

Other Parts Discussed in Thread: TMS570LS1227

Hi,

I just started learning to use the EEPROM on the TMS570LS1227 with the FEE, and here are some questions:

1. It seems that the single Virtual Sector size is the max space for user to restore the  data, no matter how many sectors there are, right?

2. What's the advantage of using more sectors? extend the flash life and get a faster write/read speed?

3. Respectively for what scenario, the TI_Fee_WriteSync( ) / TI_Fee_WriteAsync( ) is suggested?

I am looking forward your reply, thanks so much!

  • Hello,

    I have forwarded you questions to one of our FEE driver experts. They should get back with you shortly.
  • Hi,

    My answers below:

    1)Yes, the virtual sector size is the max space for user to store data. TMS570LS1227 has 4 sectors, each with 16KB size. Application can use them as four virtual sectors, each of 16K, or two virtual sectors each of 32K. 

    2) Configuration of sectors will not extend flash life or change read/write speed. FEE bank has 1000K program/erase cycles. If application configures 4*16K sectors, assuming sector swap happens on every power cycle, it would be approximately 4000K power cycles before FEE bank exhausts it's life. If application configures 2*32K sectors, it would still be approximately 4000K power cycles before FEE bank exhausts it's life.(Assuming same configuration, in second case, sector swap happens every alternate power cycle since the sector size is bigger.)

    3)TI_Fee_WriteAsync( ) is suggested to be used during normal application run. TI_Fee_WriteSync( ) is suggested to be used during shutdown phase of the controller, where every thing has to happen synchronously.

  • Hi Vishwanath ,
    Thanks very much for the rapid reply.
    And I may not clearly describe my question 2 :),,,I mean:
    When I configure two Virtual Sectors, if there is insufficient space in the current VS to update the data, It switches over to the next VS and copies all the valid data from the other Data Blocks int the current VS to the new one. After coping all the valid data, the current VS is erased and the new one is marked as Active VS.
    My question is :
    If 【three/four】VS are set, what's the work flow? Is that like: "when there is insufficient space in the 【two/three】VS to update the data, it switches over to the 【last】VS and copies all the valid data from the other Data Blocks int the prior VS to the last one.After coping all the valid data, the prior 【two/three】VS are erase together and the last VS is marked as Active VS."?

    Or, there will be always only two VS used for the data to update although three or four VS are set?
  • Hi,

    Minimum number of VS needed for FEE operation are two. Maximum will depend on the device.

    For 1227 device, there are 4 physical sectors. Assume, you have configured 4 physical sectors are 4 VS.

    In this case, VS1 is first marked as Active. VS2, VS3 and VS4 are marked as Empty. Once VS1 is full, latest copies of data are moved to VS2. Now VS1 is marked as Ready for Erase, VS2 as Active, VS3 and VS4 states are not modified.

    Once VS2 is full, latest copies of data are moved to VS3. Now VS2 is marked as Ready for Erase, VS3 as Active, VS1 and VS4 are not modified.

    Once VS3 is full, latest copies of data are moved to VS4. Now VS3 is marked as Ready for Erase, VS4 as Active, VS1 and VS2 are not modified. Erasing of sectors VS1, VS2 and VS3 will now happen in background. Once Erase is completed, VS1, VS2 and VS3 are marked as Empty.  Now if VS4 is full, data is moved to VS1 and VS4 is marked as Ready for Erase. Above cycle repeats.

  • Hi Vishwanath,

    Thanks so much, and now I am very clear about the work flow :)
  • I want to know more about the difference between TI_Fee_WriteAsync( ) & TI_Fee_WriteSync( ), I could not get detail information about it, could you deliver more? When should use TI_Fee_WriteAsync( ), and when should use TI_Fee_WriteSync( )?

    ----------------------------------------------------------------------------------------------------------------------------------------------------------------

    This is the only information I got from the post:

    3)TI_Fee_WriteAsync( ) is suggested to be used during normal application run. TI_Fee_WriteSync( ) is suggested to be used during shutdown phase of the controller, where every thing has to happen synchronously.

    ---------------------------------------------------------------------------------------------------------------------------------------------------------------

  • Vivian,

    My understanding is the Async function will start the operation and perform it in steps each time the FEE manager is called allowing other functions to happen in between. The synchronous write will happen all at once inside the call to the FEE manager task. i.e., in sync more, it starts and finishes it all at once which takes the device offline to handle any other events in the system until the write is complete.

    Vishmanath, please correct if my understand is incorrect.
  • What operations count against the 1000K program/erase cycles? Is it only when the chip switches virtual sectors? If I have the four sectors configured into two virtual sectors, have 18K worth of data stored, and write four bytes to the FEE, does that count against the program/erase cycle life?

    Is there documentation that gives more information on FEE life?

  • Hello Nathan,

    First, to be clear, program memory (non Bank 7 flash), has a limit of 1000 w/e cycles and data flash (bank 7) has a limit of 100k w/e cycles. Simply didn't want to add any confusion based on your initial statement of 1000k cycles.

    The events that count towards the program/erase cycles is each program/erase of a bit. Since each bit is part of the a larger byte, word, or long word, it would be based on the write/erase count for the parameter contained in that space. Since we use a link list approach in our FEE where we do not erase a specific location and only mark it bad and point to the updated location until the sector is full. Once full we erase the sector after copying only the valid data to the new location (i.e., compress to remove invalid data) and marking the new location as valid. So, in short, if we consider each sector erase as the only time values are erased and then eventually programmed, the count would only be impacted on a sector erase.

    Also, please know that it is often difficult to manage when you jump into a thread that has already been answered. I would encourage you to post new questions to new threads so that we can properly address and manage your support needs.
  • Thank you for the correction, explanation, and advice. I will post in new threads in the future.
  • Nathan,

    Hopefully it was helpful.

    In regard to the suggestion on posting, it is only to insure it comes to the top of our priority list and that you get the best support and response possible. Often when posts are made to older posts that have already closed/been answered, they are either given lower priority or missed altogether which none of us want to happen. Every question is important to us!