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.

RM48L952ZWT/Halcogen: EEP

Other Parts Discussed in Thread: HALCOGEN

I am setting up EEPROM support through Halcogen.

1. What does EEP mean and what do I do with EEP?

2. What does Data Sets mean for each block? Is that the number of structures that I plan to contain in each block or what?

3. Did I understand the setting of size properly? I have 12 items of various sizes that I which to store in EEPROM, 2 different structures. I placed the size of each item as shown.

Here is my basic FEE configuration.

1. What does "No. Of EEPS" mean?

2. What does "Data Select Bits" mean? The tooltip says, "Maximum number of data sets configured per block = 2 ^ Data Select Bits"", which does not help my understanding any.

3. What does "No. of Unconfigured blocks to copy" mean?

4. Ditto of "Number of 8 byte writes"

5. Do I need to conern myself with the other fields: e.g. Polling Mode, Flash Error Correction Handle", etc.

6. How does FEE Constant Parameters affect me and what are they and do I need to change them?

Here are my advanced settings:

Summary:

I need to write 12 C data structures of various sizes shown above to EEPROM.

S1: Do I need to make any changes to what I already have?

S2: What functions do I read each C data structure? Would that be?

TI_Fee_Read(uint16 BlockNumber,uint16 BlockOffset,uint8* DataBufferPtr,uint16 Length)

If so, would the block number just be my C data structure index zero based from 0 to 11?

What in this case would block offset be? I assume 0, as I just have a structure that I read in its entirety. The pouter would be where I go to, and the size would be the actual size to read or sizeof (myStructure1).

S3: Why do I not have to specify the size to write for TI_Fee_WriteSync(uint16 BlockNumber,uint8* DataBufferPtr) and the asynchronous version, but I do in the read?

  • Hi Sarah,
    I have forwarded your post to our FEE expert.

    In the meantime do you have a chance to try the FEE example in HalCogen? You can find the example in HalCoGen->Help->Help Topics->Examples->example_TI_Fee_Write_Read.c? Try this example to first get a feel for it. For your own application I think you should be able to leave all the HalCoGen FEE settings at their default states.
  • Hi Sarah,

    Most of answers for your questions are already documented in the FEE user guide. Please have a look into it. It will be available at C:\ti\Hercules\HALCoGen\v04.xx.xx\Docs\TI FEE User Guide.pdf.

    My answers below:

    1. EEP is a short name for EEPROM. FEE(Flash EEPROM Emulation) driver emulates EEPROM on the data bank available on onchip flash.

    2. Data Set concept comes from Autosar. In Autosar, the layer above FEE is NVRAM Manager. NVRAM manager defines three types of blocks, Native, Redundant and DataSet blocks.
    A Native block is one which has single Non Volatile Block.
    A Redundant block is one which has two Non Volatile Blocks.
    A Data Set Block is the one in which the NVRAM Manager will decide the number of copies of the same block to be present in Non Volatile Block.
    If customer is using FEE in Autosar context, then the usage of data set makes sense. Else, customer can avoid using this feature(or write similar application as NVRAM Manager to use this feature).

    3. Yes, your understanding of BlockSize is correct. Your 12 items are called as 12 FEE blocks of different sizes. You should configured Data Select Bits to zero.

    1. Bank 7 on RM48xx has 4 sectors. Out of these, 2 sectors can be used for bootloader application and the other two for normal application. In this case, "No. Of EEPS" will be configured as 2. Also, during configuration of blocks, you need to configure which block goes in to which EEP.

    2. Already explained.

    3. "No. of Unconfigured blocks to copy" parameter is used when a project starts with, let’s say 10 blocks and during
    development they reduce the blocks to 8. However, if they still want the remaining blocks to be present inside Flash(assume project has already written 10 blocks into Flash), they will have to configure this parameter to more than 2.

    4."Number of 8 byte writes" parameter will define the number of bytes written per iteration of TI_Fee_MainFunction call. For Asynchronous write API, writes are done in TI_Fee_MainFunction. If Number of 8 byte writes is configured to 1, FEE main function will write 8 bytes, if configured to 2, FEE main function will write 16 bytes and so on. This parameter will also be used during copying of the blocks from one sector to another.

    5 and 6. Do not change the default settings of HALCoGen.

    S1. You can configure 4 sectors(Number of Virtual Sectors) instead of two. This will utilize all sectors of the bank.

    S2. You should use TI_Fee_Read API for reading your data structure. Block number will be from 1-12 and not 0-11. You can find this information in ti_fee_cfg.c file.

    S3. During write, size information is taken from the configuration. During read, we provide an option for customer to read only a certain number of bytes. It is up to application to read complete data or some part of data.