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.

clarifications about writing of FEE blocks

Hi, 

1. Could you please describe what happens when:

  • an FEE block number that has never been written is read (error code returned, buffer untouched or filled with zeroes or ones)
  • an FEE block number that has been written multiple times (with different contents) is read (most recent content returned?)

2. What is the difference between (and intended use case of) TI_Fee_EraseImmediateBlock and TI_Fee_InvalidateBlock?

3. What is the recommended flow for writing FEE blocks (we need several blocks with different numbers/sizes, the most recent of each should be readable at any time) ?

a) only write

b) TI_Fee_EraseImmediateBlock then write

c) TI_Fee_InvalidateBlock then write

d) something other

4. What is the recommended value for "Number of unconfigured blocks to copy"? We expect to occasionally add new block numbers, but would like them to be kept even in the case of a downgrade to an earlier software version that does not support them yet, so that they are found again after an upgrade to a version that handles them.

5. What is the recommended min/typical/max period for calling TI_Fee_MainFunction? Should it only be called while operations are pending or always?

6. What is the recommended min/typical/max period for calling TI_FeeErrorCode (and possibly TI_FeeRecoverError)? Should/can these be called before/during/after other FEE operations or also when idle?

Thanks and Best Regards,

Daniel Marmier

  • I have forwarded your questions to our FEE expert. I can provide a few answers.
    Question 1: Reading a FEE block that was not written will return an error. Reading a FEE block that has been written many times will return the last value written.
    Question 2: I will leave the difference to the expert. Invalidating a block will mean that reading the block will return an error (just like if the block were never written.)
    Question 3: When updating data in a block it is not necessary to explicitly invalidate the old data. The FEE driver does that for you.

    I will leave the other questions to the expert.
  • Hi Daniel,

    My answers below:

    1. Answered by Bob
    2.TI_Fee_EraseImmediateBlock and TI_Fee_InvalidateBlock API's perform same job. You can use TI_Fee_InvalidateBlock for invalidating a block.
    3. Answered by Bob
    4. FEE does not limit/recommend a value for "Number of unconfigured blocks to copy". It depends on project requirement. Application has to make sure that the size of configured and unconfigured blocks do not exceed the size the of virtual sector. Also, if a large value is provided for "Number of unconfigured blocks to copy", RAM usage increases since FEE has to store the offset addresses and copy status of these blocks.
    5. We have seen customers calling TI_Fee_MainFunction every 2msec, every 1000msec. It's up to project. If it's called too fast, TI_Fee_MainFunction may take more iterations to complete the job. TI_Fee_MainFunction has to be called always, even when no jobs are pending.
    6.TI_FeeErrorCode may be called when FEE is in IDLE state. TI_FeeRecoverError may be called if TI_FeeErrorCode finds an error.